From 6da1b5b6b12707d4adebb2fc1bc27e2a218d7a06 Mon Sep 17 00:00:00 2001 From: wangliwen Date: Wed, 24 Aug 2022 16:22:02 +0800 Subject: [PATCH 01/15] npe fix --- .../controller/AbilityCenterControllerV3.java | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/renren-admin/src/main/java/io/renren/common/controller/AbilityCenterControllerV3.java b/renren-admin/src/main/java/io/renren/common/controller/AbilityCenterControllerV3.java index 6d909c59..1c403257 100644 --- a/renren-admin/src/main/java/io/renren/common/controller/AbilityCenterControllerV3.java +++ b/renren-admin/src/main/java/io/renren/common/controller/AbilityCenterControllerV3.java @@ -239,9 +239,14 @@ public class AbilityCenterControllerV3 { return; } List dtoList = temp.get(deptId); + dtoList = dtoList.stream().map(index -> { + index.setResourceOwnerDept(sysDeptDTO); + return index; + }).collect(Collectors.toList()); + List finalDtoList = dtoList; CompletableFuture.runAsync(() -> { - String[] sqls = dtoList.stream().map(index -> String.format("UPDATE t_ability_application SET resource_owner_dept = '%s' WHERE id = %s", JSON.toJSONString(sysDeptDTO), index.getId())).collect(Collectors.toList()).toArray(new String[dtoList.size()]); + String[] sqls = finalDtoList.stream().map(index -> String.format("UPDATE t_ability_application SET resource_owner_dept = '%s' WHERE id = %s", JSON.toJSONString(sysDeptDTO), index.getId())).collect(Collectors.toList()).toArray(new String[finalDtoList.size()]); jdbcTemplate.batchUpdate(sqls); // 批量更新资源所属部门信息 logger.info("批量更新申请的资源的部门信息完成"); }, executor); @@ -292,9 +297,10 @@ public class AbilityCenterControllerV3 { Boolean finalCityApply = cityApply; Boolean finalCityApplyCity = cityApplyCity; Boolean finalCrossRegion = crossRegion; + List finalDtoList1 = dtoList; variables.putAll(new HashMap() { // 流程内携带属性值 { - put("tAbilityApplicationDTOList", dtoList); // 归属该部门的申请 + put("tAbilityApplicationDTOList", finalDtoList1); // 归属该部门的申请 put("key", processStartDTO.getBusinessKey()); // 归属该部门申请的表单id put("deptId", deptId); // 归属部门 put("_id", applyFlag); //申请id @@ -306,6 +312,7 @@ public class AbilityCenterControllerV3 { put("city_apply", finalCityApply); // 是否为市级部门发起申请 put("cross_region", finalCrossRegion); // 是否跨区 put("city_apply_city", finalCityApplyCity); // 是否为市区申请市区 + put("resource_dept", sysDeptDTO); // 同一审核单内部门信息 } }); @@ -313,10 +320,11 @@ public class AbilityCenterControllerV3 { ProcessInstanceDTO dto = actRunningService.startOfBusinessKey(processStartDTO); // 仿照请求接口 /processForm/tabilityapplication/updateInstanceId + List finalDtoList2 = dtoList; CompletableFuture.runAsync(() -> { if (dto.getBusinessKey() != null) { - String[] sqls = dtoList.stream().map(i -> String.format("UPDATE t_ability_application SET instance_id = %s WHERE id = %s", dto.getProcessInstanceId(), i.getId())) - .collect(Collectors.toList()).toArray(new String[dtoList.size()]); + String[] sqls = finalDtoList2.stream().map(i -> String.format("UPDATE t_ability_application SET instance_id = %s WHERE id = %s", dto.getProcessInstanceId(), i.getId())) + .collect(Collectors.toList()).toArray(new String[finalDtoList2.size()]); jdbcTemplate.batchUpdate(sqls); } }, executor); From 738208ba2e8cae5ad8d63cda0b8981b0c71f4033 Mon Sep 17 00:00:00 2001 From: wangliwen Date: Wed, 24 Aug 2022 17:13:10 +0800 Subject: [PATCH 02/15] =?UTF-8?q?applyState=20=E5=AD=97=E6=AE=B5=E8=BF=94?= =?UTF-8?q?=E5=9B=9E=E5=80=BC=E4=B8=8D=E4=B8=80=E8=87=B4=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98fix?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/mapper/resource/ResourceDao.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/renren-admin/src/main/resources/mapper/resource/ResourceDao.xml b/renren-admin/src/main/resources/mapper/resource/ResourceDao.xml index 0c8024e7..2a65dd18 100644 --- a/renren-admin/src/main/resources/mapper/resource/ResourceDao.xml +++ b/renren-admin/src/main/resources/mapper/resource/ResourceDao.xml @@ -116,7 +116,7 @@ sd.type AS "deptType", sd.sort AS "deptSort", sr.sort AS "regionSort", - IFNULL(taa2.approve_status, '未申请') AS "applyState", + IF( IFNULL(taa2.approve_status, 0) < 1, '未申请', '已申请' ) AS "applyState", IFNULL(trs.score, 0 ) AS "score", IFNULL(taa.applyCount, 0 ) AS "applyCount", IFNULL(trc.collectCount, 0) AS "collectCount", @@ -412,7 +412,7 @@ sd.sort AS "deptSort", sr.sort AS "regionSort", IFNULL(trc2.isCollect, 'false') AS "isCollect", - IFNULL(taa2.approve_status, '未申请') AS "applyState", + IF( IFNULL(taa2.approve_status, 0) < 1, '未申请', '已申请' ) AS "applyState", IF ( IFNULL( trcar.car, 0 ) > 0, TRUE, FALSE ) AS "isInShoppingCart", IF( IFNULL(taa3.approve_status, 0) < 1, '未通过', '通过' ) AS "approveStatus" FROM From e1d1d964ab4d32434a9e56e18d9bfb6ec1384371 Mon Sep 17 00:00:00 2001 From: lizhicheng Date: Wed, 24 Aug 2022 18:10:21 +0800 Subject: [PATCH 03/15] =?UTF-8?q?=E5=8C=BA=E3=80=81=E5=B8=82=E7=9B=91?= =?UTF-8?q?=E5=90=AC=E5=99=A8:=E4=BF=AE=E6=94=B9=E8=A1=A8=E5=8D=95?= =?UTF-8?q?=E5=AD=97=E6=AE=B5=E8=8E=B7=E5=8F=96=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../listener/v3/ApplyDistrictListener.java | 63 ++++++++++--------- .../processForm/listener/v3/CityListener.java | 60 +++++++++--------- .../listener/v3/OwnerDistrictListener.java | 61 +++++++++--------- 3 files changed, 97 insertions(+), 87 deletions(-) diff --git a/renren-admin/src/main/java/io/renren/modules/processForm/listener/v3/ApplyDistrictListener.java b/renren-admin/src/main/java/io/renren/modules/processForm/listener/v3/ApplyDistrictListener.java index 97830221..9e3343c2 100644 --- a/renren-admin/src/main/java/io/renren/modules/processForm/listener/v3/ApplyDistrictListener.java +++ b/renren-admin/src/main/java/io/renren/modules/processForm/listener/v3/ApplyDistrictListener.java @@ -1,12 +1,8 @@ package io.renren.modules.processForm.listener.v3; +import com.alibaba.fastjson.JSON; import com.google.common.collect.ImmutableMap; -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; -import com.google.gson.JsonDeserializer; -import com.google.gson.JsonElement; import io.renren.common.annotation.ActivitiNoticeOperation; -import io.renren.modules.processForm.dto.TAbilityApplicationDTO; import io.renren.modules.sys.dao.SysUserDao; import io.renren.modules.sys.dto.SysDeptDTO; import io.renren.modules.sys.dto.SysRoleDTO; @@ -75,34 +71,41 @@ public class ApplyDistrictListener implements TaskListener, ExecutionListener, A private void create(DelegateTask delegateTask) { String assignee; Map kv = delegateTask.getVariables(); - GsonBuilder builder = new GsonBuilder(); - builder.registerTypeAdapter(Date.class, (JsonDeserializer) (json, typeOfT, context) -> new Date(json.getAsJsonPrimitive().getAsLong())); + if(kv.containsKey("userId")){ + Long applyUserId = Long.valueOf(kv.get("userId").toString()); + SysDeptDTO deptDTO = sysDeptService.get(sysUserService.get(applyUserId).getDeptId()); - Gson gson = builder.create(); - JsonElement jsonElement = gson.toJsonTree(kv); - TAbilityApplicationDTO abilityApplicationDTO = gson.fromJson(jsonElement, TAbilityApplicationDTO.class); + String userId = null; + if (deptDTO.getDistrict() != null) { + SysRegionEntity regionEntity = sysRegionService.getByLevel(deptDTO.getDistrict(), RegionLevelEnum.THREE); + logger.error("regionEntityId:" + regionEntity.getId()); + SysRoleDTO roleDTO = sysRoleService.getByName(roleName); + logger.error("roleDTOId:" + roleDTO.getId()); - SysDeptDTO deptDTO = sysDeptService.get(sysUserService.get(Long.parseLong(abilityApplicationDTO.getUserId())).getDeptId()); - - SysRegionEntity regionEntity = sysRegionService.getByLevel(deptDTO.getDistrict(), RegionLevelEnum.THREE); - logger.error("regionEntityId:" + regionEntity.getId()); - SysRoleDTO roleDTO = sysRoleService.getByName(roleName); - logger.error("roleDTOId:" + roleDTO.getId()); - - List userList = sysUserDao.getList(ImmutableMap.of("role_id", roleDTO.getId())); - Optional userEntityOptional = userList.stream() - .filter(user -> Objects.equals(regionEntity.getId(), sysRegionService.getByLevel(sysDeptService.get(user.getDeptId()).getDistrict(), RegionLevelEnum.THREE).getId())).findFirst(); - - if (userEntityOptional.isPresent()) { - logger.error("审批人id:" + userEntityOptional.get().getId()); - taskService.setAssignee(delegateTask.getId(), userEntityOptional.get().getId().toString()); - assignee = userEntityOptional.get().getId().toString(); - } else { - logger.error("未查到 {} 对应 " + roleName, deptDTO.getName()); - taskService.setAssignee(delegateTask.getId(), defaultAssigneeRoleId); - assignee = defaultAssigneeRoleId; + List userList = sysUserDao.getList(ImmutableMap.of("role_id", roleDTO.getId())); + Optional userEntityOptional = userList.stream() + .filter(user -> Objects.equals(regionEntity.getId(), sysRegionService.getByLevel(sysDeptService.get(user.getDeptId()).getDistrict(), RegionLevelEnum.THREE).getId())).findFirst(); + if (userEntityOptional.isPresent()) { + userId = userEntityOptional.get().getId().toString(); + } + } + if (userId != null) { + logger.error("审批人id:" + userId); + taskService.setAssignee(delegateTask.getId(), userId); + assignee = userId; + } else { + logger.error("未查到 {} 对应 " + roleName, deptDTO.getName()); + taskService.setAssignee(delegateTask.getId(), defaultAssigneeRoleId); + assignee = defaultAssigneeRoleId; + } + logger.error("分配的用户id为:{}", assignee); + }else{ + try { + logger.error("流程参数异常" + JSON.toJSONString(kv)); + } catch (Exception exception) { + logger.error("流程参数异常", exception); + } } - logger.error("分配的用户id为:{}", assignee); } @Override diff --git a/renren-admin/src/main/java/io/renren/modules/processForm/listener/v3/CityListener.java b/renren-admin/src/main/java/io/renren/modules/processForm/listener/v3/CityListener.java index 185ec3c1..8d993161 100644 --- a/renren-admin/src/main/java/io/renren/modules/processForm/listener/v3/CityListener.java +++ b/renren-admin/src/main/java/io/renren/modules/processForm/listener/v3/CityListener.java @@ -1,12 +1,8 @@ package io.renren.modules.processForm.listener.v3; +import com.alibaba.fastjson.JSON; import com.google.common.collect.ImmutableMap; -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; -import com.google.gson.JsonDeserializer; -import com.google.gson.JsonElement; import io.renren.common.annotation.ActivitiNoticeOperation; -import io.renren.modules.processForm.dto.TAbilityApplicationDTO; import io.renren.modules.sys.dao.SysUserDao; import io.renren.modules.sys.dto.SysDeptDTO; import io.renren.modules.sys.dto.SysRoleDTO; @@ -75,34 +71,42 @@ public class CityListener implements TaskListener, ExecutionListener, ActivitiEv private void create(DelegateTask delegateTask) { String assignee; Map kv = delegateTask.getVariables(); - GsonBuilder builder = new GsonBuilder(); - builder.registerTypeAdapter(Date.class, (JsonDeserializer) (json, typeOfT, context) -> new Date(json.getAsJsonPrimitive().getAsLong())); - Gson gson = builder.create(); - JsonElement jsonElement = gson.toJsonTree(kv); - TAbilityApplicationDTO abilityApplicationDTO = gson.fromJson(jsonElement, TAbilityApplicationDTO.class); + if (kv.containsKey("userId")) { + Long applyUserId = Long.valueOf(kv.get("userId").toString()); + SysDeptDTO deptDTO = sysDeptService.get(sysUserService.get(applyUserId).getDeptId()); - SysDeptDTO deptDTO = sysDeptService.get(sysUserService.get(Long.parseLong(abilityApplicationDTO.getUserId())).getDeptId()); + String userId = null; + if (deptDTO.getDistrict() != null) { + SysRegionEntity regionEntity = sysRegionService.getByLevel(deptDTO.getDistrict(), RegionLevelEnum.TWO); + logger.error("regionEntityId:" + regionEntity.getId()); + SysRoleDTO roleDTO = sysRoleService.getByName(roleName); + logger.error("roleDTOId:" + roleDTO.getId()); - SysRegionEntity regionEntity = sysRegionService.getByLevel(deptDTO.getDistrict(), RegionLevelEnum.TWO); - logger.error("regionEntityId:" + regionEntity.getId()); - SysRoleDTO roleDTO = sysRoleService.getByName(roleName); - logger.error("roleDTOId:" + roleDTO.getId()); - - List userList = sysUserDao.getList(ImmutableMap.of("role_id", roleDTO.getId())); - Optional userEntityOptional = userList.stream() - .filter(user -> Objects.equals(regionEntity.getId(), sysRegionService.getByLevel(sysDeptService.get(user.getDeptId()).getDistrict(), RegionLevelEnum.TWO).getId())).findFirst(); - - if (userEntityOptional.isPresent()) { - logger.error("审批人id:" + userEntityOptional.get().getId()); - taskService.setAssignee(delegateTask.getId(), userEntityOptional.get().getId().toString()); - assignee = userEntityOptional.get().getId().toString(); + List userList = sysUserDao.getList(ImmutableMap.of("role_id", roleDTO.getId())); + Optional userEntityOptional = userList.stream() + .filter(user -> Objects.equals(regionEntity.getId(), sysRegionService.getByLevel(sysDeptService.get(user.getDeptId()).getDistrict(), RegionLevelEnum.TWO).getId())).findFirst(); + if (userEntityOptional.isPresent()) { + userId = userEntityOptional.get().getId().toString(); + } + } + if (userId != null) { + logger.error("审批人id:" + userId); + taskService.setAssignee(delegateTask.getId(), userId); + assignee = userId; + } else { + logger.error("未查到 {} 对应 " + roleName, deptDTO.getName()); + taskService.setAssignee(delegateTask.getId(), defaultAssigneeRoleId); + assignee = defaultAssigneeRoleId; + } + logger.error("分配的用户id为:{}", assignee); } else { - logger.error("未查到 {} 对应 " + roleName, deptDTO.getName()); - taskService.setAssignee(delegateTask.getId(), defaultAssigneeRoleId); - assignee = defaultAssigneeRoleId; + try { + logger.error("流程参数异常" + JSON.toJSONString(kv)); + } catch (Exception exception) { + logger.error("流程参数异常", exception); + } } - logger.error("分配的用户id为:{}", assignee); } @Override diff --git a/renren-admin/src/main/java/io/renren/modules/processForm/listener/v3/OwnerDistrictListener.java b/renren-admin/src/main/java/io/renren/modules/processForm/listener/v3/OwnerDistrictListener.java index 01bb3a8c..f3d2f24f 100644 --- a/renren-admin/src/main/java/io/renren/modules/processForm/listener/v3/OwnerDistrictListener.java +++ b/renren-admin/src/main/java/io/renren/modules/processForm/listener/v3/OwnerDistrictListener.java @@ -1,12 +1,8 @@ package io.renren.modules.processForm.listener.v3; +import com.alibaba.fastjson.JSON; import com.google.common.collect.ImmutableMap; -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; -import com.google.gson.JsonDeserializer; -import com.google.gson.JsonElement; import io.renren.common.annotation.ActivitiNoticeOperation; -import io.renren.modules.processForm.dto.TAbilityApplicationDTO; import io.renren.modules.sys.dao.SysUserDao; import io.renren.modules.sys.dto.SysDeptDTO; import io.renren.modules.sys.dto.SysRoleDTO; @@ -72,34 +68,41 @@ public class OwnerDistrictListener implements TaskListener, ExecutionListener, A private void create(DelegateTask delegateTask) { String assignee; Map kv = delegateTask.getVariables(); - GsonBuilder builder = new GsonBuilder(); - builder.registerTypeAdapter(Date.class, (JsonDeserializer) (json, typeOfT, context) -> new Date(json.getAsJsonPrimitive().getAsLong())); - Gson gson = builder.create(); - JsonElement jsonElement = gson.toJsonTree(kv); - TAbilityApplicationDTO abilityApplicationDTO = gson.fromJson(jsonElement, TAbilityApplicationDTO.class); + if (kv.containsKey("deptId")) { // 存在部门id + Long deptId = Long.valueOf(kv.get("deptId").toString()); + SysDeptDTO deptDTO = sysDeptService.get(deptId); - SysDeptDTO deptDTO = abilityApplicationDTO.getResourceOwnerDept(); - - SysRegionEntity regionEntity = sysRegionService.getByLevel(deptDTO.getDistrict(), RegionLevelEnum.THREE); - logger.error("regionEntityId:" + regionEntity.getId()); - SysRoleDTO roleDTO = sysRoleService.getByName(roleName); - logger.error("roleDTOId:" + roleDTO.getId()); - - List userList = sysUserDao.getList(ImmutableMap.of("role_id", roleDTO.getId())); - Optional userEntityOptional = userList.stream() - .filter(user -> Objects.equals(regionEntity.getId(), sysRegionService.getByLevel(sysDeptService.get(user.getDeptId()).getDistrict(), RegionLevelEnum.THREE).getId())).findFirst(); - - if (userEntityOptional.isPresent()) { - logger.error("审批人id:" + userEntityOptional.get().getId()); - taskService.setAssignee(delegateTask.getId(), userEntityOptional.get().getId().toString()); - assignee = userEntityOptional.get().getId().toString(); + String userId = null; + if (deptDTO.getDistrict() != null) { + SysRegionEntity regionEntity = sysRegionService.getByLevel(deptDTO.getDistrict(), RegionLevelEnum.THREE); + logger.error("regionEntityId:" + regionEntity.getId()); + SysRoleDTO roleDTO = sysRoleService.getByName(roleName); + logger.error("roleDTOId:" + roleDTO.getId()); + List userList = sysUserDao.getList(ImmutableMap.of("role_id", roleDTO.getId())); + Optional userEntityOptional = userList.stream() + .filter(user -> Objects.equals(regionEntity.getId(), sysRegionService.getByLevel(sysDeptService.get(user.getDeptId()).getDistrict(), RegionLevelEnum.THREE).getId())).findFirst(); + if (userEntityOptional.isPresent()) { + userId = userEntityOptional.get().getId().toString(); + } + } + if (userId != null) { + logger.error("审批人id:" + userId); + taskService.setAssignee(delegateTask.getId(), userId); + assignee = userId; + } else { + logger.error("未查到 {} 对应 " + roleName, deptDTO.getName()); + taskService.setAssignee(delegateTask.getId(), defaultAssigneeRoleId); + assignee = defaultAssigneeRoleId; + } + logger.error("分配的用户id为:{}", assignee); } else { - logger.error("未查到 {} 对应 " + roleName, deptDTO.getName()); - taskService.setAssignee(delegateTask.getId(), defaultAssigneeRoleId); - assignee = defaultAssigneeRoleId; + try { + logger.error("流程参数异常" + JSON.toJSONString(kv)); + } catch (Exception exception) { + logger.error("流程参数异常", exception); + } } - logger.error("分配的用户id为:{}", assignee); } @Override From 515ad62bd6269a3af142a109aca4336f05e1a865 Mon Sep 17 00:00:00 2001 From: wangliwen Date: Wed, 24 Aug 2022 18:53:52 +0800 Subject: [PATCH 04/15] =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E5=BC=80=E5=90=AFgzip?= =?UTF-8?q?=E5=8E=8B=E7=BC=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- renren-admin/src/main/resources/application.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/renren-admin/src/main/resources/application.yml b/renren-admin/src/main/resources/application.yml index e8afa02e..11f3d504 100644 --- a/renren-admin/src/main/resources/application.yml +++ b/renren-admin/src/main/resources/application.yml @@ -37,7 +37,9 @@ server: session: cookie: http-only: true - + compression: + enabled: true + mime-types: application/json spring: # 环境 dev|test|prod|show profiles: From 12393ec5ccdc01c4ae0d54812ae150bed7ccda79 Mon Sep 17 00:00:00 2001 From: wangliwen Date: Thu, 25 Aug 2022 09:00:21 +0800 Subject: [PATCH 05/15] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E8=83=BD=E5=8A=9B?= =?UTF-8?q?=E7=94=B3=E8=AF=B7=E6=A8=A1=E5=9E=8Bv3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../processForm/listener/v3/ApplyDistrictListener.java | 4 ++-- renren-admin/src/main/resources/db/V5.4__update_model.sql | 5 +++++ 2 files changed, 7 insertions(+), 2 deletions(-) create mode 100644 renren-admin/src/main/resources/db/V5.4__update_model.sql diff --git a/renren-admin/src/main/java/io/renren/modules/processForm/listener/v3/ApplyDistrictListener.java b/renren-admin/src/main/java/io/renren/modules/processForm/listener/v3/ApplyDistrictListener.java index 9e3343c2..2f83b64b 100644 --- a/renren-admin/src/main/java/io/renren/modules/processForm/listener/v3/ApplyDistrictListener.java +++ b/renren-admin/src/main/java/io/renren/modules/processForm/listener/v3/ApplyDistrictListener.java @@ -71,7 +71,7 @@ public class ApplyDistrictListener implements TaskListener, ExecutionListener, A private void create(DelegateTask delegateTask) { String assignee; Map kv = delegateTask.getVariables(); - if(kv.containsKey("userId")){ + if (kv.containsKey("userId")) { Long applyUserId = Long.valueOf(kv.get("userId").toString()); SysDeptDTO deptDTO = sysDeptService.get(sysUserService.get(applyUserId).getDeptId()); @@ -99,7 +99,7 @@ public class ApplyDistrictListener implements TaskListener, ExecutionListener, A assignee = defaultAssigneeRoleId; } logger.error("分配的用户id为:{}", assignee); - }else{ + } else { try { logger.error("流程参数异常" + JSON.toJSONString(kv)); } catch (Exception exception) { diff --git a/renren-admin/src/main/resources/db/V5.4__update_model.sql b/renren-admin/src/main/resources/db/V5.4__update_model.sql new file mode 100644 index 00000000..eee12f5b --- /dev/null +++ b/renren-admin/src/main/resources/db/V5.4__update_model.sql @@ -0,0 +1,5 @@ +SET FOREIGN_KEY_CHECKS = 0; +REPLACE INTO `act_ge_bytearray` (`ID_`, `REV_`, `NAME_`, `DEPLOYMENT_ID_`, `BYTES_`, `GENERATED_`) VALUES ('192502', 26, 'source', NULL, 0x7B227265736F757263654964223A22313932353031222C2270726F70657274696573223A7B2270726F636573735F6964223A226162696C69747970726F636573735F7633222C226E616D65223A22E883BDE58A9BE794B3E8AFB7222C22646F63756D656E746174696F6E223A22222C2270726F636573735F617574686F72223A22222C2270726F636573735F76657273696F6E223A22222C2270726F636573735F6E616D657370616365223A22687474703A2F2F7777772E61637469766974692E6F72672F70726F63657373646566222C22657865637574696F6E6C697374656E657273223A22222C226576656E746C697374656E657273223A22222C227369676E616C646566696E6974696F6E73223A22222C226D657373616765646566696E6974696F6E73223A22227D2C227374656E63696C223A7B226964223A2242504D4E4469616772616D227D2C226368696C64536861706573223A5B7B227265736F757263654964223A227369642D39464432424341432D303531312D343938422D413936452D414242453236313845464238222C2270726F70657274696573223A7B226F766572726964656964223A22222C226E616D65223A22222C22646F63756D656E746174696F6E223A22222C22657865637574696F6E6C697374656E657273223A22222C22696E69746961746F72223A22222C22666F726D6B6579646566696E6974696F6E223A22222C22666F726D70726F70657274696573223A22227D2C227374656E63696C223A7B226964223A2253746172744E6F6E654576656E74227D2C226368696C64536861706573223A5B5D2C226F7574676F696E67223A5B7B227265736F757263654964223A227369642D31333634324638432D463641422D344541302D413042302D434632383339354233343732227D5D2C22626F756E6473223A7B226C6F7765725269676874223A7B2278223A34352C2279223A3238357D2C2275707065724C656674223A7B2278223A31352C2279223A3235357D7D2C22646F636B657273223A5B5D7D2C7B227265736F757263654964223A227369642D31443533383233412D424234372D343946322D393443332D414245434135343244424445222C2270726F70657274696573223A7B226F766572726964656964223A22222C226E616D65223A22222C22646F63756D656E746174696F6E223A22222C22657865637574696F6E6C697374656E657273223A7B22657865637574696F6E4C697374656E657273223A5B7B226576656E74223A22656E64222C22696D706C656D656E746174696F6E223A22247B636F7272656374696F6E4C697374656E657256337D222C22636C6173734E616D65223A22222C2265787072657373696F6E223A22222C2264656C656761746545787072657373696F6E223A22247B636F7272656374696F6E4C697374656E657256337D227D5D7D7D2C227374656E63696C223A7B226964223A22456E644E6F6E654576656E74227D2C226368696C64536861706573223A5B5D2C226F7574676F696E67223A5B5D2C22626F756E6473223A7B226C6F7765725269676874223A7B2278223A313033392C2279223A3637337D2C2275707065724C656674223A7B2278223A313031312C2279223A3634357D7D2C22646F636B657273223A5B5D7D2C7B227265736F757263654964223A227369642D37454642423345332D374133432D344346332D414543412D423531443644334646364233222C2270726F70657274696573223A7B226F766572726964656964223A22222C226E616D65223A22E794B3E8AFB7E4BABAE5BD95E585A5E794B3E8AFB7E8A1A8E58D95222C22646F63756D656E746174696F6E223A22222C226173796E6368726F6E6F7573646566696E6974696F6E223A2266616C7365222C226578636C7573697665646566696E6974696F6E223A2266616C7365222C22657865637574696F6E6C697374656E657273223A22222C226D756C7469696E7374616E63655F74797065223A224E6F6E65222C226D756C7469696E7374616E63655F63617264696E616C697479223A22222C226D756C7469696E7374616E63655F636F6C6C656374696F6E223A22222C226D756C7469696E7374616E63655F7661726961626C65223A22222C226D756C7469696E7374616E63655F636F6E646974696F6E223A22222C226973666F72636F6D70656E736174696F6E223A2266616C7365222C22757365727461736B61737369676E6D656E74223A22222C22666F726D6B6579646566696E6974696F6E223A22222C2264756564617465646566696E6974696F6E223A22222C227072696F72697479646566696E6974696F6E223A22222C22666F726D70726F70657274696573223A22222C227461736B6C697374656E657273223A7B227461736B4C697374656E657273223A5B7B226576656E74223A22637265617465222C22696D706C656D656E746174696F6E223A22247B696E69746961746F7244617461456E7472794C697374656E65727D222C22636C6173734E616D65223A22222C2265787072657373696F6E223A22222C2264656C656761746545787072657373696F6E223A22247B696E69746961746F7244617461456E7472794C697374656E65727D227D2C7B226576656E74223A2261737369676E6D656E74222C22696D706C656D656E746174696F6E223A22247B696E69746961746F7244617461456E7472794C697374656E65727D222C22636C6173734E616D65223A22222C2265787072657373696F6E223A22222C2264656C656761746545787072657373696F6E223A22247B696E69746961746F7244617461456E7472794C697374656E65727D227D5D7D7D2C227374656E63696C223A7B226964223A22557365725461736B227D2C226368696C64536861706573223A5B5D2C226F7574676F696E67223A5B7B227265736F757263654964223A227369642D42364443463833432D414543452D344638392D414331432D433943363344373830433031227D5D2C22626F756E6473223A7B226C6F7765725269676874223A7B2278223A3236352C2279223A3331307D2C2275707065724C656674223A7B2278223A3136352C2279223A3233307D7D2C22646F636B657273223A5B5D7D2C7B227265736F757263654964223A227369642D30463130423333362D364341422D343643302D423830452D414639413443413736434442222C2270726F70657274696573223A7B226F766572726964656964223A22222C226E616D65223A22E794B3E8AFB7E58F91E8B5B7E4BABAE58CBAE5B882E7AEA1E79086E59198E5AEA1E6A0B8222C22646F63756D656E746174696F6E223A22222C226173796E6368726F6E6F7573646566696E6974696F6E223A2266616C7365222C226578636C7573697665646566696E6974696F6E223A2266616C7365222C22657865637574696F6E6C697374656E657273223A22222C226D756C7469696E7374616E63655F74797065223A224E6F6E65222C226D756C7469696E7374616E63655F63617264696E616C697479223A22222C226D756C7469696E7374616E63655F636F6C6C656374696F6E223A22222C226D756C7469696E7374616E63655F7661726961626C65223A22222C226D756C7469696E7374616E63655F636F6E646974696F6E223A22222C226973666F72636F6D70656E736174696F6E223A2266616C7365222C22757365727461736B61737369676E6D656E74223A22222C22666F726D6B6579646566696E6974696F6E223A22222C2264756564617465646566696E6974696F6E223A22222C227072696F72697479646566696E6974696F6E223A22222C22666F726D70726F70657274696573223A22222C227461736B6C697374656E657273223A7B227461736B4C697374656E657273223A5B7B226576656E74223A22637265617465222C22696D706C656D656E746174696F6E223A22247B6170706C7944697374726963744C697374656E65727D222C22636C6173734E616D65223A22222C2265787072657373696F6E223A22222C2264656C656761746545787072657373696F6E223A22247B6170706C7944697374726963744C697374656E65727D227D5D7D7D2C227374656E63696C223A7B226964223A22557365725461736B227D2C226368696C64536861706573223A5B5D2C226F7574676F696E67223A5B7B227265736F757263654964223A227369642D44454537353038412D333246372D344334302D393634392D353845353342324144394238227D5D2C22626F756E6473223A7B226C6F7765725269676874223A7B2278223A3635352C2279223A3138357D2C2275707065724C656674223A7B2278223A3535352C2279223A3130357D7D2C22646F636B657273223A5B5D7D2C7B227265736F757263654964223A227369642D32453235383536412D333146332D343245382D384343432D393531333646313442314533222C2270726F70657274696573223A7B226F766572726964656964223A22222C226E616D65223A22E5B882E7BAA7E58CBAE5B882E7AEA1E79086E59198E5AEA1E689B9222C22646F63756D656E746174696F6E223A22222C226173796E6368726F6E6F7573646566696E6974696F6E223A2266616C7365222C226578636C7573697665646566696E6974696F6E223A2266616C7365222C22657865637574696F6E6C697374656E657273223A22222C226D756C7469696E7374616E63655F74797065223A224E6F6E65222C226D756C7469696E7374616E63655F63617264696E616C697479223A22222C226D756C7469696E7374616E63655F636F6C6C656374696F6E223A22222C226D756C7469696E7374616E63655F7661726961626C65223A22222C226D756C7469696E7374616E63655F636F6E646974696F6E223A22222C226973666F72636F6D70656E736174696F6E223A2266616C7365222C22757365727461736B61737369676E6D656E74223A22222C22666F726D6B6579646566696E6974696F6E223A22222C2264756564617465646566696E6974696F6E223A22222C227072696F72697479646566696E6974696F6E223A22222C22666F726D70726F70657274696573223A22222C227461736B6C697374656E657273223A7B227461736B4C697374656E657273223A5B7B226576656E74223A22637265617465222C22696D706C656D656E746174696F6E223A22247B636974794C697374656E65727D222C22636C6173734E616D65223A22222C2265787072657373696F6E223A22222C2264656C656761746545787072657373696F6E223A22247B636974794C697374656E65727D227D5D7D7D2C227374656E63696C223A7B226964223A22557365725461736B227D2C226368696C64536861706573223A5B5D2C226F7574676F696E67223A5B7B227265736F757263654964223A227369642D37363541343537362D353634332D343746322D413931452D373237423542453345374638227D5D2C22626F756E6473223A7B226C6F7765725269676874223A7B2278223A3637302C2279223A3432357D2C2275707065724C656674223A7B2278223A3537302C2279223A3334357D7D2C22646F636B657273223A5B5D7D2C7B227265736F757263654964223A227369642D42343433354545332D344342362D343337312D393745432D434538424138344345464539222C2270726F70657274696573223A7B226F766572726964656964223A22222C226E616D65223A22E8B584E6BA90E68980E5B19EE983A8E997A8E7AEA1E79086E59198E5AEA1E689B9222C22646F63756D656E746174696F6E223A22222C226173796E6368726F6E6F7573646566696E6974696F6E223A2266616C7365222C226578636C7573697665646566696E6974696F6E223A2266616C7365222C22657865637574696F6E6C697374656E657273223A22222C226D756C7469696E7374616E63655F74797065223A224E6F6E65222C226D756C7469696E7374616E63655F63617264696E616C697479223A22222C226D756C7469696E7374616E63655F636F6C6C656374696F6E223A22222C226D756C7469696E7374616E63655F7661726961626C65223A22222C226D756C7469696E7374616E63655F636F6E646974696F6E223A22222C226973666F72636F6D70656E736174696F6E223A2266616C7365222C22757365727461736B61737369676E6D656E74223A22222C22666F726D6B6579646566696E6974696F6E223A22222C2264756564617465646566696E6974696F6E223A22222C227072696F72697479646566696E6974696F6E223A22222C22666F726D70726F70657274696573223A22222C227461736B6C697374656E657273223A7B227461736B4C697374656E657273223A5B7B226576656E74223A22637265617465222C22696D706C656D656E746174696F6E223A22247B636F7272656374696F6E4C697374656E657256337D222C22636C6173734E616D65223A22222C2265787072657373696F6E223A22222C2264656C656761746545787072657373696F6E223A22247B636F7272656374696F6E4C697374656E657256337D227D5D7D7D2C227374656E63696C223A7B226964223A22557365725461736B227D2C226368696C64536861706573223A5B5D2C226F7574676F696E67223A5B7B227265736F757263654964223A227369642D42344635444645352D394135422D343744412D423631312D323945353034364644384438227D5D2C22626F756E6473223A7B226C6F7765725269676874223A7B2278223A313037352C2279223A3536377D2C2275707065724C656674223A7B2278223A3937352C2279223A3438377D7D2C22646F636B657273223A5B5D7D2C7B227265736F757263654964223A227369642D31333634324638432D463641422D344541302D413042302D434632383339354233343732222C2270726F70657274696573223A7B226F766572726964656964223A22222C226E616D65223A22222C22646F63756D656E746174696F6E223A22222C22636F6E646974696F6E73657175656E6365666C6F77223A22222C22657865637574696F6E6C697374656E657273223A22222C2264656661756C74666C6F77223A2266616C7365227D2C227374656E63696C223A7B226964223A2253657175656E6365466C6F77227D2C226368696C64536861706573223A5B5D2C226F7574676F696E67223A5B7B227265736F757263654964223A227369642D37454642423345332D374133432D344346332D414543412D423531443644334646364233227D5D2C22626F756E6473223A7B226C6F7765725269676874223A7B2278223A3136342E3835393337352C2279223A3237307D2C2275707065724C656674223A7B2278223A34352E3435333132352C2279223A3237307D7D2C22646F636B657273223A5B7B2278223A31352C2279223A31357D2C7B2278223A35302C2279223A34307D5D2C22746172676574223A7B227265736F757263654964223A227369642D37454642423345332D374133432D344346332D414543412D423531443644334646364233227D7D2C7B227265736F757263654964223A227369642D34333330343830462D433835422D344245412D423937372D424442344336353634353544222C2270726F70657274696573223A7B226F766572726964656964223A22222C226E616D65223A22222C22646F63756D656E746174696F6E223A22E588A4E696ADE58F91E8B5B7E4BABAE58CBAE5B882E7BAA7E588AB222C2273657175656E6365666C6F776F72646572223A22227D2C227374656E63696C223A7B226964223A224578636C757369766547617465776179227D2C226368696C64536861706573223A5B5D2C226F7574676F696E67223A5B7B227265736F757263654964223A227369642D33393546304239342D413843422D343635312D413239332D303945444134373145413242227D2C7B227265736F757263654964223A227369642D36343532433845432D313936302D344146372D413131422D443045323239313233374432227D5D2C22626F756E6473223A7B226C6F7765725269676874223A7B2278223A3436302C2279223A3239307D2C2275707065724C656674223A7B2278223A3432302C2279223A3235307D7D2C22646F636B657273223A5B5D7D2C7B227265736F757263654964223A227369642D44453039344644452D463936312D343639422D393233312D334446383537413534313839222C2270726F70657274696573223A7B226F766572726964656964223A22222C226E616D65223A22222C22646F63756D656E746174696F6E223A22222C2273657175656E6365666C6F776F72646572223A22227D2C227374656E63696C223A7B226964223A224578636C757369766547617465776179227D2C226368696C64536861706573223A5B5D2C226F7574676F696E67223A5B7B227265736F757263654964223A227369642D45444239373638362D364633372D343735432D423731462D344646353532464644343833227D2C7B227265736F757263654964223A227369642D34433846303534432D463138302D343136302D424133442D434334454330323542353836227D5D2C22626F756E6473223A7B226C6F7765725269676874223A7B2278223A3832302C2279223A3239307D2C2275707065724C656674223A7B2278223A3738302C2279223A3235307D7D2C22646F636B657273223A5B5D7D2C7B227265736F757263654964223A227369642D44454537353038412D333246372D344334302D393634392D353845353342324144394238222C2270726F70657274696573223A7B226F766572726964656964223A22222C226E616D65223A22222C22646F63756D656E746174696F6E223A22222C22636F6E646974696F6E73657175656E6365666C6F77223A22222C22657865637574696F6E6C697374656E657273223A22222C2264656661756C74666C6F77223A2266616C7365227D2C227374656E63696C223A7B226964223A2253657175656E6365466C6F77227D2C226368696C64536861706573223A5B5D2C226F7574676F696E67223A5B7B227265736F757263654964223A227369642D44453039344644452D463936312D343639422D393233312D334446383537413534313839227D5D2C22626F756E6473223A7B226C6F7765725269676874223A7B2278223A3738372E373332333339363131303336312C2279223A3236322E31333631313531333532373935377D2C2275707065724C656674223A7B2278223A3635352E333533353937383838393633392C2279223A3137372E32373739343733363437323034337D7D2C22646F636B657273223A5B7B2278223A35302C2279223A34307D2C7B2278223A32302C2279223A32307D5D2C22746172676574223A7B227265736F757263654964223A227369642D44453039344644452D463936312D343639422D393233312D334446383537413534313839227D7D2C7B227265736F757263654964223A227369642D43424442453941442D334138342D344434382D383035372D383432314541424636324242222C2270726F70657274696573223A7B226F766572726964656964223A22222C226E616D65223A22E8B584E6BA90E68980E5B19EE58CBAE5B882E7AEA1E79086E59198E5AEA1E6A0B8222C22646F63756D656E746174696F6E223A22222C226173796E6368726F6E6F7573646566696E6974696F6E223A2266616C7365222C226578636C7573697665646566696E6974696F6E223A2266616C7365222C22657865637574696F6E6C697374656E657273223A22222C226D756C7469696E7374616E63655F74797065223A224E6F6E65222C226D756C7469696E7374616E63655F63617264696E616C697479223A22222C226D756C7469696E7374616E63655F636F6C6C656374696F6E223A22222C226D756C7469696E7374616E63655F7661726961626C65223A22222C226D756C7469696E7374616E63655F636F6E646974696F6E223A22222C226973666F72636F6D70656E736174696F6E223A2266616C7365222C22757365727461736B61737369676E6D656E74223A22222C22666F726D6B6579646566696E6974696F6E223A22222C2264756564617465646566696E6974696F6E223A22222C227072696F72697479646566696E6974696F6E223A22222C22666F726D70726F70657274696573223A22222C227461736B6C697374656E657273223A7B227461736B4C697374656E657273223A5B7B226576656E74223A22637265617465222C22696D706C656D656E746174696F6E223A22247B6F776E657244697374726963744C697374656E65727D222C22636C6173734E616D65223A22222C2265787072657373696F6E223A22222C2264656C656761746545787072657373696F6E223A22247B6F776E657244697374726963744C697374656E65727D227D5D7D7D2C227374656E63696C223A7B226964223A22557365725461736B227D2C226368696C64536861706573223A5B5D2C226F7574676F696E67223A5B7B227265736F757263654964223A227369642D37413946333636382D334536372D344539462D393043442D454235443932433343463544227D5D2C22626F756E6473223A7B226C6F7765725269676874223A7B2278223A3637302C2279223A3536377D2C2275707065724C656674223A7B2278223A3537302C2279223A3438377D7D2C22646F636B657273223A5B5D7D2C7B227265736F757263654964223A227369642D37413946333636382D334536372D344539462D393043442D454235443932433343463544222C2270726F70657274696573223A7B226F766572726964656964223A22222C226E616D65223A22222C22646F63756D656E746174696F6E223A22222C22636F6E646974696F6E73657175656E6365666C6F77223A22222C22657865637574696F6E6C697374656E657273223A22222C2264656661756C74666C6F77223A2266616C7365227D2C227374656E63696C223A7B226964223A2253657175656E6365466C6F77227D2C226368696C64536861706573223A5B5D2C226F7574676F696E67223A5B7B227265736F757263654964223A227369642D42343433354545332D344342362D343337312D393745432D434538424138344345464539227D5D2C22626F756E6473223A7B226C6F7765725269676874223A7B2278223A3937342E39353730333132352C2279223A3532377D2C2275707065724C656674223A7B2278223A3637302E30343239363837352C2279223A3532377D7D2C22646F636B657273223A5B7B2278223A35302C2279223A34307D2C7B2278223A35302C2279223A34307D5D2C22746172676574223A7B227265736F757263654964223A227369642D42343433354545332D344342362D343337312D393745432D434538424138344345464539227D7D2C7B227265736F757263654964223A227369642D42344635444645352D394135422D343744412D423631312D323945353034364644384438222C2270726F70657274696573223A7B226F766572726964656964223A22222C226E616D65223A22222C22646F63756D656E746174696F6E223A22222C22636F6E646974696F6E73657175656E6365666C6F77223A22222C22657865637574696F6E6C697374656E657273223A22222C2264656661756C74666C6F77223A2266616C7365227D2C227374656E63696C223A7B226964223A2253657175656E6365466C6F77227D2C226368696C64536861706573223A5B5D2C226F7574676F696E67223A5B7B227265736F757263654964223A227369642D31443533383233412D424234372D343946322D393443332D414245434135343244424445227D5D2C22626F756E6473223A7B226C6F7765725269676874223A7B2278223A313032352C2279223A3634342E35393337357D2C2275707065724C656674223A7B2278223A313032352C2279223A3536372E313837357D7D2C22646F636B657273223A5B7B2278223A35302C2279223A34307D2C7B2278223A31342C2279223A31347D5D2C22746172676574223A7B227265736F757263654964223A227369642D31443533383233412D424234372D343946322D393443332D414245434135343244424445227D7D2C7B227265736F757263654964223A227369642D34433846303534432D463138302D343136302D424133442D434334454330323542353836222C2270726F70657274696573223A7B226F766572726964656964223A22222C226E616D65223A22E8B7A8E58CBAE794B3E8AFB7EFBC88E68896E58CBAE794B3E8AFB7E5B882EFBC89222C22646F63756D656E746174696F6E223A22222C22636F6E646974696F6E73657175656E6365666C6F77223A22247B63726F73735F726567696F6E20203D3D20747275657D222C22657865637574696F6E6C697374656E657273223A22222C2264656661756C74666C6F77223A2266616C7365227D2C227374656E63696C223A7B226964223A2253657175656E6365466C6F77227D2C226368696C64536861706573223A5B5D2C226F7574676F696E67223A5B7B227265736F757263654964223A227369642D32453235383536412D333146332D343245382D384343432D393531333646313442314533227D5D2C22626F756E6473223A7B226C6F7765725269676874223A7B2278223A3738372E363639323430373134343831352C2279223A3335332E31353537343231363230323536367D2C2275707065724C656674223A7B2278223A3637302E313939383939393130353138352C2279223A3237382E36333931373937313239373433347D7D2C22646F636B657273223A5B7B2278223A32302E352C2279223A32302E357D2C7B2278223A35302C2279223A34307D5D2C22746172676574223A7B227265736F757263654964223A227369642D32453235383536412D333146332D343245382D384343432D393531333646313442314533227D7D2C7B227265736F757263654964223A227369642D33393546304239342D413843422D343635312D413239332D303945444134373145413242222C2270726F70657274696573223A7B226F766572726964656964223A22222C226E616D65223A22E58CBAE7BAA7E983A8E997A8E794B3E8AFB7E8B584E6BA90222C22646F63756D656E746174696F6E223A22222C22636F6E646974696F6E73657175656E6365666C6F77223A22247B636974795F6170706C79203D3D2066616C73657D222C22657865637574696F6E6C697374656E657273223A22222C2264656661756C74666C6F77223A2266616C7365227D2C227374656E63696C223A7B226964223A2253657175656E6365466C6F77227D2C226368696C64536861706573223A5B5D2C226F7574676F696E67223A5B7B227265736F757263654964223A227369642D30463130423333362D364341422D343643302D423830452D414639413443413736434442227D5D2C22626F756E6473223A7B226C6F7765725269676874223A7B2278223A3535342E373236343431313239363037352C2279223A3236312E35353934363238373534373535367D2C2275707065724C656674223A7B2278223A3435322E32313838373133373033393235352C2279223A3138332E33353435393936323435323434347D7D2C22646F636B657273223A5B7B2278223A32302E352C2279223A32302E357D2C7B2278223A35302C2279223A34307D5D2C22746172676574223A7B227265736F757263654964223A227369642D30463130423333362D364341422D343643302D423830452D414639413443413736434442227D7D2C7B227265736F757263654964223A227369642D32354233463233312D364434302D343032462D384238342D413245423237353245343242222C2270726F70657274696573223A7B226F766572726964656964223A22222C226E616D65223A22222C22646F63756D656E746174696F6E223A22222C2273657175656E6365666C6F776F72646572223A22227D2C227374656E63696C223A7B226964223A224578636C757369766547617465776179227D2C226368696C64536861706573223A5B5D2C226F7574676F696E67223A5B7B227265736F757263654964223A227369642D46303536304343352D413738302D343635312D394135332D383939413936443832394638227D2C7B227265736F757263654964223A227369642D44423536424639322D313041322D343336352D413244432D434533423036364338323337227D5D2C22626F756E6473223A7B226C6F7765725269676874223A7B2278223A3832302C2279223A3434357D2C2275707065724C656674223A7B2278223A3738302C2279223A3430357D7D2C22646F636B657273223A5B5D7D2C7B227265736F757263654964223A227369642D37363541343537362D353634332D343746322D413931452D373237423542453345374638222C2270726F70657274696573223A7B226F766572726964656964223A22222C226E616D65223A22222C22646F63756D656E746174696F6E223A22222C22636F6E646974696F6E73657175656E6365666C6F77223A22222C22657865637574696F6E6C697374656E657273223A22222C2264656661756C74666C6F77223A2266616C7365222C2273686F776469616D6F6E646D61726B6572223A66616C73657D2C227374656E63696C223A7B226964223A2253657175656E6365466C6F77227D2C226368696C64536861706573223A5B5D2C226F7574676F696E67223A5B7B227265736F757263654964223A227369642D32354233463233312D364434302D343032462D384238342D413245423237353245343242227D5D2C22626F756E6473223A7B226C6F7765725269676874223A7B2278223A3738332E333037343633333030363936392C2279223A3432312E363432333934383132363231377D2C2275707065724C656674223A7B2278223A3637302E333331323038353734333033312C2279223A3339362E323933313532303632333738337D7D2C22646F636B657273223A5B7B2278223A35302C2279223A34307D2C7B2278223A32302E352C2279223A32302E357D5D2C22746172676574223A7B227265736F757263654964223A227369642D32354233463233312D364434302D343032462D384238342D413245423237353245343242227D7D2C7B227265736F757263654964223A227369642D45444239373638362D364633372D343735432D423731462D344646353532464644343833222C2270726F70657274696573223A7B226F766572726964656964223A22222C226E616D65223A22E99D9EE8B7A8E58CBAE794B3E8AFB7222C22646F63756D656E746174696F6E223A22222C22636F6E646974696F6E73657175656E6365666C6F77223A22247B63726F73735F726567696F6E20203D3D2066616C73657D222C22657865637574696F6E6C697374656E657273223A22222C2264656661756C74666C6F77223A2266616C7365227D2C227374656E63696C223A7B226964223A2253657175656E6365466C6F77227D2C226368696C64536861706573223A5B5D2C226F7574676F696E67223A5B7B227265736F757263654964223A227369642D42343433354545332D344342362D343337312D393745432D434538424138344345464539227D5D2C22626F756E6473223A7B226C6F7765725269676874223A7B2278223A313032352C2279223A3438362E3932333832383132357D2C2275707065724C656674223A7B2278223A3832302E37393239363837352C2279223A3237302E357D7D2C22646F636B657273223A5B7B2278223A32302E352C2279223A32302E357D2C7B2278223A313032352C2279223A3237302E357D2C7B2278223A35302C2279223A34307D5D2C22746172676574223A7B227265736F757263654964223A227369642D42343433354545332D344342362D343337312D393745432D434538424138344345464539227D7D2C7B227265736F757263654964223A227369642D36343532433845432D313936302D344146372D413131422D443045323239313233374432222C2270726F70657274696573223A7B226F766572726964656964223A22222C226E616D65223A22E5B882E7BAA7E983A8E997A8E794B3E8AFB7E8B584E6BA90222C22646F63756D656E746174696F6E223A22222C22636F6E646974696F6E73657175656E6365666C6F77223A22247B636974795F6170706C79203D3D20747275657D222C22657865637574696F6E6C697374656E657273223A22222C2264656661756C74666C6F77223A2266616C7365227D2C227374656E63696C223A7B226964223A2253657175656E6365466C6F77227D2C226368696C64536861706573223A5B5D2C226F7574676F696E67223A5B7B227265736F757263654964223A227369642D32453235383536412D333146332D343245382D384343432D393531333646313442314533227D5D2C22626F756E6473223A7B226C6F7765725269676874223A7B2278223A3536392E33373337313630373634342C2279223A3335322E373036333533373038393236397D2C2275707065724C656674223A7B2278223A3435322E35363138333037393835363030342C2279223A3237382E313934303336393136303733317D7D2C22646F636B657273223A5B7B2278223A32302E352C2279223A32302E357D2C7B2278223A35302C2279223A34307D5D2C22746172676574223A7B227265736F757263654964223A227369642D32453235383536412D333146332D343245382D384343432D393531333646313442314533227D7D2C7B227265736F757263654964223A227369642D44423536424639322D313041322D343336352D413244432D434533423036364338323337222C2270726F70657274696573223A7B226F766572726964656964223A22222C226E616D65223A22E5B882E7BAA7E794B3E8AFB7E5B882E7BAA7E8B584E6BA90222C22646F63756D656E746174696F6E223A22E5B882E58CBAE4BABAE59198E794B3E8AFB7E5B882E58CBAE8B584E6BA90222C22636F6E646974696F6E73657175656E6365666C6F77223A22247B636974795F6170706C795F63697479203D3D2020747275657D222C22657865637574696F6E6C697374656E657273223A22222C2264656661756C74666C6F77223A2266616C7365227D2C227374656E63696C223A7B226964223A2253657175656E6365466C6F77227D2C226368696C64536861706573223A5B5D2C226F7574676F696E67223A5B7B227265736F757263654964223A227369642D42343433354545332D344342362D343337312D393745432D434538424138344345464539227D5D2C22626F756E6473223A7B226C6F7765725269676874223A7B2278223A3937342E393739343236333733333133312C2279223A3530342E33383439303736393231363630357D2C2275707065724C656674223A7B2278223A3831342E353635343935353031363836392C2279223A3433312E38353932333239333238333339357D7D2C22646F636B657273223A5B7B2278223A32302E352C2279223A32302E357D2C7B2278223A35302C2279223A34307D5D2C22746172676574223A7B227265736F757263654964223A227369642D42343433354545332D344342362D343337312D393745432D434538424138344345464539227D7D2C7B227265736F757263654964223A227369642D46303536304343352D413738302D343635312D394135332D383939413936443832394638222C2270726F70657274696573223A7B226F766572726964656964223A22222C226E616D65223A22E794B3E8AFB7E58CBAE7BAA7E8B584E6BA90222C22646F63756D656E746174696F6E223A22222C22636F6E646974696F6E73657175656E6365666C6F77223A22247B636974795F6170706C795F63697479203D3D202066616C73657D222C22657865637574696F6E6C697374656E657273223A22222C2264656661756C74666C6F77223A2266616C7365227D2C227374656E63696C223A7B226964223A2253657175656E6365466C6F77227D2C226368696C64536861706573223A5B5D2C226F7574676F696E67223A5B7B227265736F757263654964223A227369642D43424442453941442D334138342D344434382D383035372D383432314541424636324242227D5D2C22626F756E6473223A7B226C6F7765725269676874223A7B2278223A3738362E393336393533373337383130372C2279223A3439382E373535393437313530333437387D2C2275707065724C656674223A7B2278223A3637302E323237313038373632313839332C2279223A3433332E313236383635333439363532327D7D2C22646F636B657273223A5B7B2278223A32302E352C2279223A32302E357D2C7B2278223A35302C2279223A34307D5D2C22746172676574223A7B227265736F757263654964223A227369642D43424442453941442D334138342D344434382D383035372D383432314541424636324242227D7D2C7B227265736F757263654964223A227369642D42364443463833432D414543452D344638392D414331432D433943363344373830433031222C2270726F70657274696573223A7B226F766572726964656964223A22222C226E616D65223A22222C22646F63756D656E746174696F6E223A22222C22636F6E646974696F6E73657175656E6365666C6F77223A22222C22657865637574696F6E6C697374656E657273223A22222C2264656661756C74666C6F77223A2266616C7365227D2C227374656E63696C223A7B226964223A2253657175656E6365466C6F77227D2C226368696C64536861706573223A5B5D2C226F7574676F696E67223A5B7B227265736F757263654964223A227369642D34333330343830462D433835422D344245412D423937372D424442344336353634353544227D5D2C22626F756E6473223A7B226C6F7765725269676874223A7B2278223A3431392E363634303632352C2279223A3237307D2C2275707065724C656674223A7B2278223A3236352E32313837352C2279223A3237307D7D2C22646F636B657273223A5B7B2278223A35302C2279223A34307D2C7B2278223A32302C2279223A32307D5D2C22746172676574223A7B227265736F757263654964223A227369642D34333330343830462D433835422D344245412D423937372D424442344336353634353544227D7D5D2C22626F756E6473223A7B226C6F7765725269676874223A7B2278223A313230302C2279223A313035307D2C2275707065724C656674223A7B2278223A302C2279223A307D7D2C227374656E63696C736574223A7B2275726C223A227374656E63696C736574732F62706D6E322E302F62706D6E322E302E6A736F6E222C226E616D657370616365223A22687474703A2F2F62336D6E2E6F72672F7374656E63696C7365742F62706D6E322E3023227D2C227373657874656E73696F6E73223A5B5D7D, NULL); +REPLACE INTO `act_ge_bytearray` (`ID_`, `REV_`, `NAME_`, `DEPLOYMENT_ID_`, `BYTES_`, `GENERATED_`) VALUES ('192503', 16, 'source-extra', NULL, 0x89504E470D0A1A0A0000000D4948445200000465000002D30806000000BFA9BF0C000000206348524D00007A26000080840000FA00000080E8000075300000EA6000003A98000017709CBA513C0000000467414D410000B18E7CFB5193000000017352474200AECE1CE900000006624B474400FF00FF00FFA0BDA793000000097048597300000EC400000EC401952B0E1B000020004944415478DAECDD097C5355F6C0F19B74A380806C220AEE42690B8A828AE0C2A288E24A69534550745C707454C675FE8ADB88EB8C8E3BE2C2D236D40D51064514114154D6A605641764931D4A4B4B92FF39EF259D50DAD2424BD3F2FB7E3EE793E4E565E97DC9EB7B27F79E6B0C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A8551C34010000A869FC7E7FD48A152BEED9B56BD78DB9B9B9A7151414C448705C7388A2A2A2F64646466E8B8E8EFE5EDAF6D9EEDDBBCFA6550000A83A1CBC0000801A65CD9A35776CD8B0E1855DBB76D56BD1A28569DCB8B1A953A78E898E8EA6710E51414181C9CFCF375BB66C31EBD6ADDB1B1111F1AB2CBBA1478F1ECB681D00002A1F491900005023F8FD7EE7AA55ABDC2B57AEECD7AA552BD3B2654BE3743A69982AE2F3F9CCDAB56B8DB4F96E69FB7E3D7AF4F82FAD020040E5E248060000D4089A9091E8171F1F6F8E3FFE781232557D9028EDABED9C98985857AE674E9932E5325A050080CA15411300008070A74396962F5FFE774DC83468D060BFFBF376AC31EBB23F361B167D6E36AFFCDEE46E5D61A2EB353351310D68BC43141313631A366C18BD61C386CB070E1CF8D1A851A3B6D22A0000540E7E62020000614D8BFA6A0D191DB2545242267FE73AB37AF648B37BCB32E3F3165AA1D77599DE8743A7ED2EEDEF956DF122AD010040E52129030000C29ACEB2949B9B5B4F6BC89464CBCA695622A6385DA6F7A172B46AD5AA89D3E9EC3A69D2A40EB40600009583A40C0000086BBB76ED1AD8BC79F3526BC8E46D5F5DEA63CBBA0F153C6894F66FDAB4E946B9BC8ED60000A092FEBFD2040000209CE5E6E69EA2D35E97C6E72B3CA8FB5071CD9B37AFEF70387AD1120000548E489A00000084B38282823AB1B1B1344418A85BB76E638E1F0100A83CFC5305000061ADB0B0D011151555C61A8E83BC0F15151D1D5D5F2EC8900100504918BE040000C29ADFEF370E47E9C995E8D8A30FEA3E545C603B44D0120000540E92320000A0466B7C4257E38C88DE6F794454AC6972E28534100000085B24650000408D7654F37853AFE9E9FB2DAFDBF81453BF595B1A080000842D92320000A066F3FB8DB760F77E8BAD65721F000040B822290300006AAC82DD9BCDEFB3DF35BBB72EDFEF3E5DA6F7E93A000000E188A40C0000A879FC7EB3F5F71966E5ACD7CCEE6DAB4A5D4DEFD375745D7ACD00008070C394D80000A046D19E2FEB733E29331913CAE72D341B7E9B68766ECC362DDA5D6BA2EB36A11101004058A0A70C0000A8510ED43BA634C15E33000000E182A40C0000A851B4E74B753C160000A0B2317C090000D4286D7B3E4D230000805A819E32000000000000D580A40C000000000040352029030000000000500D48CA00000000000054039232000000000000D580A40C000000000040352029030000000000500D48CA000000000000540392320000A0D699366D9AF9E8A38F4ABDFFF7DF7F37BB76EDDA6FF9430F3D64F6EEDD5BE26376ECD8615D6665659977DF7DD7BAFECD37DF98AD5BB796FA3A99999966CE9C39157EFF6FBCF18659B97265A9F76FDBB6ADCCC72F5CB8D06CD8B0A1C4FB7C3E9F79EBADB74C6161211F140000AA194919000050EBECDCB9D3ECDEBDBBE8764141C13EF73769D2C4F4EBD7CFBAFECB2FBF58491C8DD9B3679B1933669849932699FBEEBBCF4A60045D77DD7566CB962D66E9D2A5263A3ADA5AD6B16347D3BF7F7F2B515392B56BD79A989818F3E79F7F5A499DC58B175B3173E64C3365CA9452DFFF881123CC1F7FFC51EAFDE3C78F37CF3DF79CF9FAEBAF4B8C5F7FFDD5E4E4E4947CF0E7749AC8C8482B6114DA3EFA180000707845D2040000A036484D4D3583060DB2AE2F58B0C0EAC1A2090AF5AF7FFDCB8C1C39D2B46CD9D2BA5DAF5EBDA2A4CC89279E68DDD66445B366CD4CE7CE9DCD77DF7D671E7FFC71E37038AC7534E9929898681A376E6C962C59627AF6EC692DD7DBAFBDF69AD5EB66D1A245A66DDBB6D6724DF4684F155D373636D66CDCB8D1DC79E79DD67A4D9B36B5923BAB57AF363D7AF428F16FD1DE3ABA4E69A2A2A2ACF773FEF9E75BEF3DD4B061C3CCDD77DF6DBD37A53D623401A3B7F56F54DA36BA3CD83EEBD7AF37CB972F37717171FB3D1F0000A83A2465000040ADA0898C4B2EB9A4E8B6261A82B7478D1A55949009D21E2EAA7EFDFA56CF134D5A688F16ED31A3748850C3860DADEB93274F361D3A74B09218DF7EFBAD898F8F2F4A68A83D7BF698B973E79AFBEFBFDF4A6A74EAD4C95ABE62C50A2B71A2C90E4D880413259B366D2AB5278CDFEF37111111071CA2A43469A443916EBCF14653B76E5DF3E9A79F5ABD7DEAD4A953B48E26703461959B9B5B9470D1B669D1A24551FBE8DFAD0929000070789194010000B54268CF18ADE3A23D4D82B743EBABE8B01EEDC1A2C37F3EFEF863F3FDF7DF17254B3479A23429327CF870F37FFFF77F563247873205E9D0A2CB2FBFBCE8B6F638D18450DFBE7DADDB9AFC98306182F59CDAFB44873A8D1B37CEB46BD7CEAC5BB7CEBAD42150A5D184C971C71D67AD7B209A8871B95CE6C1071FB4DEE3ABAFBE6A25667479717ABFBE477D3F1E8FC71A5AA53409F4CC33CF58ED10EC190400000E0F92320000A05668DEBC79993D65823429A2A1437A8E3DF658939292623EFCF043EBFA15575C61ADA3BD5E9E7FFE7973D45147EDF31ACB962DB32EB5D06FEBD6ADADEB5AEC57D7D3048ED2DE287DFAF4B1EAB6686F174DD83CF1C413562D194D84E87BD22152A51514D69A36E79E7BAE953CD1F58BF7F0294E7BF33CF6D863567D1B1DA6D5A851A312D7D3E4CB45175D64F50C2ADE5366F4E8D124640000A80614FA050000B54259B3098516EC2D8916DDD5E149C1D0DE34C51332CAED765B3334696243EBCA74EFDEDD646767EFD39346FDFCF3CFE6C9279FB4AE6BF2E3BFFFFDEF3E49184D9C94367C49933C9AD4D19A37AFBCF24AB9FE762D4C7CCF3DF75889A460E2A838922E0000841F7ACA0000805A418BE996367C69F3E6CD5652447BAF84D259873401E3F57AADDE23A1CB8BD35E2F3AECE991471E31AD5AB5B212265AB8F76F7FFBDB7EC571D7AC59632EBCF0426B1628ADF1A2891E1D5E159A1CD2F7D8BE7DFB7D92259AA8D1C79E75D659D66D7DFCBC79F3CC19679C51EADFADC38EB457CDD0A143ADC75D7BEDB566FEFCF9FBAD77A0C414000038FC48CA0000805A4187E068B2242874F892F668299E90D129B3B537CB3FFEF10FAB974D68DD99FCFCFCFD9E5F9330DA4B46E950297D7E4DE86892A6381DAAA4857D3559A289127DFDEDDBB75B756A746A6CF5C30F3F9873CE39C71A4AA53431A4EF45EBC204E990A8ABAEBACAAA49A3B34415A7536BEB6B2427275BB72FBEF8626B46277DFFA1C57E5549C3A5B410B1267E82B332010080C38BA40C0000A8154213324A6BA8141DF044EE7FC8A309154D9268F242872385D6A3D17A33A1B4CECBD9679F6DDAB469632537DE7BEF3D6B4A6A9D65A977EFDEE6AF7FFDAB359C29586057A7BDBEF2CA2BAD2145A79F7EBAD5D3450BFF7EF1C51725BE777DCEA79E7ACADC75D75DE6A4934E2A5AAE756EB4086FD7AE5DCD030F3C6015F50D9D2549133E9A9409F5F2CB2F5B09209D72FBB4D34E2B5ADEA04183A276D00490B68F0ED1D2A492D6D5010000871F4919000050EB0467442ACBAC59B38AA6BCD6D996944E0DFDFAEBAF5B43A18274E893265B3409F3D34F3F99952B579A6BAEB9A62839A245795F7CF1452BB9A1331F690F9CABAFBEDAAA1BA30584B55ECDB061C3AC61497979795668524413375A98579F5BEBC86842A6A469A97BF5EA65C68E1D6B0D530A0E41D2C7FCFEFBEF66EAD4A925FE6DFA77E8DF149A9409AD4F136C1F7D0FE9E9E97C600000A826547C030000616DF2E4C9FE0B2EB8A0428FD15A2F5AE7A5BCC56DF7ECD963626262ACEB9A30D1C7151FD2A3CFA93D6A4AA309137D8CD6A329DE7B2594F650D175346952520F9EC341872C9554C8B83CA64D9BA689228E210100A8040C20060000B58E264F0E9490D11A34C19E26C1848CD674D1A44C4935564213322515020E2E0B4DC8682F991F7FFC719FD0E9B43509545642E6CD37DFB4D629CBFBEFBF6F15110ED21E3A6FBDF556B9DAE76013320000A072317C0900001C7174E88E264774C890CED0A4331C75EEDCD91AB6F4D5575F5909131DDEF4F8E38F9BDCDC5CAB70AFD2199DB4568B2643B400EFDCB9734DEBD6ADAD2149BA5CD70FA5C38E420BF72AAD4773CB2DB7ECB36CD5AA55E684134E28BAAD4993ACAC2CAB8E4DF0FDAE5DBBD67AAD209DA9A963C78E45B7754893161FD6599E8E3EFA68F3DB6FBF59F56C000040F822290300008E389A90D19E3213274EB4121B4D9A34B186F4BCF3CE3B5662450BF45E76D965D6BA9AECD0A150191919E68A2BAEB08AEBEA94D35A1858EBCB0413235AF3A5381DA2547C26A7E0F0A850FA5EB41870B0978DBE174DB004A7F4D6E78E8D8DB57AF2141DC445465AC99A6FBFFDD6EA25A389217DCC2FBFFC620D91D2A4CC71C71DB7DF74DD0000207C909401000047141D16141F1F6FCD86A4535547454599850B175A490EAD1BA3457C3571F2D9679F59057B752853DBB66DADE486F640D1C7E950254D98041F571A9D114A7BC1840A4E811D4A0BFC6AC2274867854A484830DDBA75B36E6B7245DFB3D29995A64F9F6E8516133EE59453CCE5975F6E9E7BEE392B51A43D7E162C5860CD08050000C21B491900007044D1DE2863C68CB1922DDAD344932AC169A8B5078C263DD6AD5B67468E1C69CE3FFF7C2B09A33D57B4C78BF68C59B16285F51CC19E32BA8E2A3E13920E538A8B8BB3666F0AA53D6234D9A33335057BCCDC76DB6D562F986041E3E5CB975BD3616BEF179D6569D3A64D4549199D314A933043870EB5DEFF45175D64F58AD1BFE1DA6BAF358F3DF6983514AAA2C5910100C0E147A15F00007044D19A2BDA2B459329AFBDF69A553326183AFC47A7883EF3CC33AD9E32DA8345870269815EAD37A3091B5DA6499A604F9960015FED5D134A9F4B6BBA68F2469F43A7A9D6EB1A251522D6E70FDEAF535977EDDAD5BADEA953A7A2A9BB83962E5D6AB66DDB663DCF830F3E684DADAD89A4679F7DD64A1EF5E8D1C3FA3B01004078A3A70C000038A268CF97BE7DFB5AD7353172CC31C714DD57A74E1D6BC8518B162DFE77B0141969F54CC9C9C9311D3A74B0860B698F94D09E32CD9B37DF2F09123AAC69C99225D610A4B214161616D590D1F57578D2B265CBAC5E33C54D9830C10C1C38D04A1E5D7AE9A556AF1A7D2FFFFEF7BFCDF3CF3F6F259D3459A3C919000010BE48CA000080239616F10D4DC03468D0C0AA33531A4D9CCC9C39D39C77DE79564F15ED95A2BD6674B95E9E7CF2C945EB86F69C9933678E55AB2648871DED7750161959F4DA3AAB93BE863E5FD3A64DCD8C19338AD6D3D769D9B2A535B44969424693385AB4F885175E30CF3CF38C19326408091900006A0092320000E088A5535C6B1D99505A0B263131B1A8078D16FF9D3C79B29558D1E142D75F7FBD3585B6D6A4D1214A5A6346A7AA2E3EC4480BEE1E7FFCF1D6B0259D1D497BD2FCFCF3CF560D987BEFBD77BFF7A23D69A64D9B665DD7E7D475D7AC59634D7D7DE2892716ADA7CF959C9C6C9E7EFA69EBB616F5D5A14F3A6394F694D1EBC1A9B40100407823290300008E589A78D16148A13EF9E4937D8634698F141D1AF4FEFBEF5BC39B54B088AE0E696ADFBEBD69D3A68DD5BB25583858694F154DDA3CFCF0C3D690224DDCE8E375D8912677468C18B1CF74D5C3860D2BBAFEEBAFBF9A73CF3DD79C7AEAA925BE67E5F3F9ACD0214C9A38D2A9BC7BF6EC69EEBEFB6E2BE9D3AB57AF7D6674020000E187A40C00003862E9CC46C13A2E41C56BC36861DF60CF162DF4FBC5175F58CB94D6A7D1A2BB3AEDF5EAD5ABADE1505ADC77D6AC5966F1E2C55642E795575EB18645294DB26801612DC89B9D9D6DF5A629892677B438F081685266D2A449568F9F871E7AC8C4C6C65ACBF5F9F53649190000C29B8326000000E16CF2E4C9FEAA9ADE59A79AD69A2D954993295A6B26982039187BF6EC31313131075C47A7E6B60EE81C87EF904E8758F5EAD58B634800002A013D650000C011ABB213324A132487929051074AC894771D000010DE9C34010000000000C0E14752060000000000A01A9094010000000000A8062465000000000000AA0149190000000000806A4052060000000000A01A9094010000000000A8062465000000000000AA0149190000000000806A4052060000000000A01A9094010000000000A8062465000000000000AA0149190000000000806A4052060000000000A01A9094010000000000A8062465000000000000AA014919000010D61C0E87F1FBFD34441890EDB0532EBCB40400009583A40C0000086B9191917B0B0B0B698830B059783C9E5D494949C7D11A00001C3A9232000020AC4546466ECBCBCBA321C2C0E4C993F366CD9AD5302222223B2525E52FB2C841AB000070F048CA000080B0161D1DFDFD962D5B688830D0BA75EB158D1B375E2C571B4ABC9D9292F25D6A6AEA69B40C000007278226000000E1CCE5722DDBBD7BF7CD2D5BB6746A7D19540F9FCFB77CD5AA55C79E7EFAE9D7CE9D3BF75BD916DD647182DFEFBF352121616FD3A64D67AD5CB9D2474B0100507E246500004058FBF0C30FD70D1E3CB88F5C3DBE418306344835F1783C13F2F3F3375D7AE9A5AF666767E7B46FDFFE3D59DC5CA29344CFFAF5EBF78D8F8FFF45EE5B476B0100503E2465000040D8BBE1861BA66EDFBE7D70A3468DA26362626890C36CE3C68D63D7AC597389D3E9748D1A356AAB2ECBCACACAF7783CE3DBB56BF7A3C3E1E82A8BDAC9E5E0F8F8F8FABA2C2727672F2D070040D948CA000080B0949A9ADA474EF08777E8D061C6D0A143570D1C3870DE9F7FFE7975C3860D49CC1C469A9059B4685177A7D379738F1E3D7E2E7E7F7676F6F2934E3AE95DD926B172F35C1DD624EB2627242464793C9E95B4200000A56360360000081B2E97EB3CB9E8E7F7FBAF97CB63028BD333323252F5CA37DF7CD35B4EFA335AB56AB557A2899CFCD36855446BC86467674FDFBA75ABB6F9C09E3D7B4E3AD0639293933BC9BAEFCAD5F6127E8977BD5EEFDF333333B7D3A20000EC8FA40C0000288B663DAAB4786B4822A69F5CB62E767761646464E29831631607174C9932E51459F745ED91D1AC59B3752D5AB46858A74E9DC6313131F5D85C8764577E7EFE9FB9B9B9BFAD59B366F7F6EDDB3BCBB2594EA7F3811E3D7A2C2BEF93FCE52F7F8992C73E20DBE7FFE4A676695A2B71574646C6A734310000FB2229030000CA9220315462B084B7B29EF4008998FF1DA8381CC9E9E9E9E34ABA6FD2A4491D9C4EE775B2CE25F23CC7C9E5F16CAE4323EDB846DAF10FB9FCDAE7F37DDCBB77EFF907FB5C4949496D222222B4D74CD7C0737F2CCF79576666E67A5A1A0080C0B10E4D0000004AA109194D984C317642E6900AB796371113624C4646C6003643CD3ED694ED7E876CF367E5BA4E9DA54582FF2EDB75244D0300004919000050B2DE12FD25DE946829718B44DF8379A2E4E4641D6A9464CA9788095AE3F57A13A845523BA4A4A4B4928B3724AE082CFAD6E974DE9A9696B69CD601001CC9987D090000843AC5D80999EF25564A9C23F143E0BEB3257EADE8136667677F9D9090F0AF0A3CC4E77038AE75BBDD8BD81CB583C7E3D921911E1F1FBF58B6ED85B228C1EFF7DF9A9898B8272E2EEEE79C9C1C3FAD040038129194010000A192258E96F84DE24E89E112DACB214FE27C896D126B0EE2A4FC8984848461E559574ED65FC9C8C8788B4D51FB6467677B3A76ECF89ED7EB3DD6D849BE4B9C4EA74E7DFEB3DCB7811602001C6948CA000000ADF5F18CB187967C69EC9E323ADBCEF18113E76C892C89A38C3D13D3B283799172266616C6C6C6F69F376FDE5E364BED347FFEFC3CF92C7C9A989838CBD84580DB391C8EC1F2D9A8D3AA55AB1F972E5DEAA5950000470A92320000608FC4D7127F4A686F851C8961120F4BDC2CA1C388B4A6CC2E89DD122E899324E655E445929292A29D4EE73F4C2935EDFC7EBF2662FA8C1D3B76359BA4F6F3783C4BE3E2E246CA67A2BEB187C95D58A74E9DFE090909F3E5BEDF692100C0918042BF0000A0B86B8C3D7CE96E89C78D3D8CE9318951122F4B6C941822F19CC48EF23C616A6AEA093E9F2F53AE762A63B5FFCBC8C8789AE63FF22427279FEB703874FAEC7809AD2FF3564444C44363C78EDD41EB00006A337ACA000070643A57E245898F02B775A89226596E3376CF9819129D25B4C7C274099DD2F83E89B78D9D9CF9CAD83D6C0E283535B58FCFE7D3F54F9558E1F7FB7BCA09F86DC5569BE5F57A6FA2E0EB91293B3B7B4D972E5D46ECD9B347872E69EDA273E5733220313171A9C7E3F98D160200D456246500003872B493A8239168ECDEB23A54292B709FF648D07A32DF18BB906F1F89D1128325264A9C1958AED3647F2BB1F9402F96949414D1BE7DFBA7E5E45AA742AE2B97136263637B8F1D3B76454242C2E3E67F3D76F3BC5E6FAFCCCCCCCD6CA223D7ECD9B37D1E8FE7FBB8B8B84F9C4EE75981CFAB4B3E2B71679E79E6B4050B16E4D24A0080DA86A40C0000478E6B25BA49144AFC2CB144225FA2ADB17BCAAC3776CD989D124F4ABC2F7181C44C6317039E1658B6E9402FE472B98E9113EBF172F54609AFC3E178382323E3AFF3E6CDD3D72B5EF4F7EE71E3C67DCDE681CAC9C9F9B35FBF7EEF6FDAB4694BE0F3DAD1E7F30D8E8F8F5F9F9D9D3D9F160200D426D4940100E0C8D05AE20463FF20A3753B9A18BB778C2664747A622DE81BECA9D25DE22E89F181DB9324F69A72F48E51FDFBF7BFC0E97466049E779D9C50A78C1B376E5A49EBBA5CAEFFA6A7A75FC6E6414902B588747AF4DE81459ABCBB2D23236325AD0300A80DE829030040EDD6D3D8B56334A9B2CAD84390A2245648A44B6C972830F690A420BD6F82C418895F8CDD4326AF1CAFE570B95C0F381C8E0FE57A43B9FC4EA297DBEDCE29ED01717171FFCDC9C9C96333A124595959DB3D1ECFD8C4C4449D86FD42630FBDBB556EEFEED7AFDFCF53A74EA5061100A046A3A70C0000B59FD3D83D5FB440EF3663CFAAA433DD9C11B86F80C46BE67FF56582744893D6F1D87AA01718346850A3BCBCBC510E87A3AFDCF4490CF77ABD8F6566667A697E5486A4A4A466111111AF187B4A7635CBEFF7DFE276BB3DB40E00A0A62229030040ED57DFD8B325F592A86BEC3A317A0CA0B3DA685D19ED39ABBD5BFA1DCC932727277774381C3A8BD349125B9C4EE780B4B4B489343BAA424A4ACAE572F1A6442B8902F9EC0DDFBB77EF3399999905B40E00A0A661F8120000B54F3D63F784D1C488F654D1FA313A7DF539C6AE2BA33D593E97F88FC45A6327667E90B833B06CB1C4CAF2BC90CBE5D2A9AD3521D354E217A7D3D9332D2DED573601AA8AC7E35972F2C927BF1B1515D520F099BE483E77FD121313E7C87D6B682100404D424F1900006A8718894F246E9738DFD88917AD05B33E70BF4E859D6AEC04CDEF126E6317FF7DCAD8332AB5919823916DEC1998CA3460C0807A8585855A80F506BDADD35EFB7CBE7BE9AD80C3A97FFFFEE73B9D4E4D40B60D7CE6DFF07ABD0FCBE77017AD0300A809E829030040EDA03D6234F1F2B0C407C61EDAA1B3253D2431C5D8D360CF959821719FB17BC32C97B84EE25F12B38DDD6BA6F0402F949C9C1CE7F3F974161C2D22BCCBEFF70F74BBDDCFE7E4E4503F0687557676F6EAB8B8B8114EA7537F68EC22719E5CBF213E3E7EB1DCB794160200843B7ACA0000503B68815D9DA1E6AF127F4ABC67ECA11D3F1A7BC6A5500D25061ABBB78CF67479A9BC2F929C9C9CE270384618BB4E4DB6DFEF4F72BBDD0B697E54B7EBAFBF3ED1EBF58E94AB9DAC835C8763AC5CFC2D3D3D7D13AD03000857F4940100A066D2E14ADA1B466BC5C41B3BF17291840E29BA5E42A7A1D6E982753AEC4C634F891DA48F992571938426580ED83B262929293A3131F15539D17D4E6E464B8C898A8ABA3A2D2D6D2D9B02E1202B2B6B635C5CDC7BF219DD2ED155169D2571734242C21F1E8F278B16020084237ACA00005033451A3BF9922471456059AC84CE4C333B7042AA97DA8346EB6DDC59ECF11D8C5D3B66C9815E283535F5049FCFA7891DED81B0474E78EF494F4F7F9B4D807095949474526464E43B7EBF5F87D869CDA389F219BE233333F3775A0700104E48CA000050B3E914D79A5CD1E1449AA49967ECE4C904630F5FFAAFC4706317F11D19F2B8E6121B0FF4E4A9A9A97DE46476B45C6D2CB1424E6EFBB9DDEE39343B6A829494944172F1B2C4D10E8763A77C961F898B8B7B63D8B0613E5A0700100E18BE040040CDA64394BE90D82631466287C483C61ECEA4C9936EC62EE47B4FE0F6F6C0E372CB7AD2A4A4A488F6EDDB3FADB32AC9CDBA7239213636B6F7D8B16357D0E4A8293C1ECFBCC4C4C40F1C0EC709F2193E532EFB6CDAB4A9577C7CFCCCECEC6C6ACD0000AA1D491900006A162DE4AB8995CD81DBD71ABB6ECCD312930265393FD90000200049444154F7FD213144CF4925BE32F650A64B25BE91D872A01770B95CC7389DCEF172F54609AF9CC83E9C9191F1D779F3E6E5D3FCA8693C1E4FAE44667C7CFC3CF92C6B92325E2E6F4D48487074E9D265E6ECD9B3E9350300A83624650000086FDAC3458728AD94B850A29EB187298D0FDCAF057D3559A2BD605E30761226CED8535E9F2AF1B3B1A7BA4E37E548C8F4EFDFFF023961D5E44DA2C43A9FCF77A5DBED4E6333A0A6CBCECE5E1C171737523EDF3A94A9B32CEABE67CF9E6BDAB76F3F3B2B2BEB0F5A0800501D48CA000010DE961BBB278CCE9EA4F562A6499C68ECDE2FBF84ACA74331A2241E95982FF1B1B17BBAE8AC333BCAF13A0E97CBF5809CAC7E28D71BCAE57712BDDC6E770E9B00B5454E4ECE9EECECEC2FDAB56BF75D6086A638BFDF7F737C7CFCD11D3B769CBE60C182425A090070389194010020BC3531F64C4B5D24C64AB40B2CEF21B1CED843958274B8D25581E59AC0F9CE94A377CCA041831AB569D3669CB1873CA967BD5EEFCD6EB77B27CD8FDA283B3B7BD5D9679F3D423EE7D677CBE17074F1F97CAEF8F8F88572DF325A080070B830FB120000E14B13314E89E91277499C24A1332169C245873169AF99CB4C3966512A4D727272473921FD28F0DC5B9C4EE780B4B4B489343D8E14A9A9A967F87C3E9D99AC6360D1875EAFF7BECCCCCC2DB40E00A0AAD153060080F0A43D5E922474F6A35889D6C61EB2F493C42E89BEC64ED068BD988283790197CB759B5C6842A6A9C42F4EA7B3675A5ADAAF343D8E24595959EB9B366DFA5EBD7AF5760586349D2DDF859B121212567B3C9E6C5A08005095E82903004078D07A30F525B6862CD319957496259D86FA7363F78EC994182571D0C577070C1850AFB0B0F02DB97A83DED669AF7D3EDFBD999999056C061CC99293934F71381CEFCAD58B028B3E8F8888183276ECD835B40E00A02A90940100203CFE1F0F3776526648C8721DBAA4B55E1E965822D1CBD83566B4978C2654FC0771D21927279D9AD88997D8E5F7FB6F75BBDD196C02E07F5C2ED72D3E9FEF05F9AE343276A1EC07333232DE3E98EF1C00006561F8120000D5EB6889AB25DE91B85C628F44B0D0A89E004E951861ECD997661A7B8A6B4DDEF496F8B1222F949C9C9C22279913E4EAF112D97EBFFF12B7DB3D954D00ECCBE3F1CC39F3CC3347F97CBE93E5E6191257242424748F8F8FFF313B3B7B332D0400A82CF4940100A0FA9C2D718A843B705B6BC768D2649044E87089EEC6EED9F29F90655A98F4498955077A91A4A4A468A7D3F92F87C3716760D198A8A8A8DB478F1E9DCB2600CAE672B9AEF3FBFDFADD3B56225FBE474FAE5BB7EE85A953A7EEA5750000878AA40C000087972657B4C0EE0C8992860D9D26F1AAC495128521CBB577AB37E4761D3D413CD08BA5A6A69EE0F3F974B85227893D7242794F7A7AFADB6C06A0FC74DAF8FCFCFC17E5EAE0C0A2F94EA773705A5ADA6C5A0700702848CA000070F83597483176F2A524FD24CE93B8FF505E243535B58FCFE7D3199A1A4BACF0FBFDFDDC6EF71C9A1F38382E97ABBB7C8F74A8A1F670D39E32FFF67ABD8F656666E6D13A008083414D1900000E2F2DDE3BC0D87562BCA5AC93237199B1675B5A58D117484A4A8A68DFBEFDD33AAB92DCAC2B97136263637B8F1D3B7605CD0F1C3C8FC7B3222E2E6E84D3E98C919BE74A7495EB298989891EBD8F16020054143D650000A87A5A8B42132C4B03B71F97D828F166198FD129B2BF327602E78FF2BE90CBE53A462ED2FD7EFFC572B9D7E1703C9A9E9EFE8261D618A052A5A6A69EE5F3F9B4B65387C0A29175EAD419FAC1071F6CA3750000E5454F190000AAD65112B7487496F82EB0EC07634F73ADB32CAD2DE5715DF5BC4F629644B97E81EFDFBFFF050E87E31BB99A28B14E4E18AF74BBDD696C02A0F2656565AD6BDAB4E9BB471D7594D6763A5FBFE37BF7EE1D989898B8D2E3F12CA4850000E5414F190000AACE2089DD12E3245E32FBD688D13A2F1F4B5C2BB1B584C7B690D05FDC758AEC03F57271B85CAEBFFBFDFE67E47AA4C3E1D0E48F2B3D3D7D039B00A87AC9C9C9A7CBF7EE5DB9DA2DB0E8D3C8C8C82163C68C5947EB0000CA424F190000AA461363CF8ED45FE20B63CFAAF46BC8FD5A18546BC70C97F8A884C7EF327621D132E9AC306DDAB4D1A4CF90C0A267BD5EEFCD6EB77B279B00383CB2B3B3377B3C9E0F121212D6CBCD0B24CE90EFE1E0F6EDDBEB728A6B03004A454F1900002A4F0F89B3255E911826F1BA84D676D1E9ABBF09DC37576249C863EE92A82BF17C455F2C3939B9A3C3E1D084CE49125B9C4EE780B4B4B4896C06A0FA5C7FFDF5C77BBD5EFDEE5F195834D5EFF7DFE276BB97D13A0080E2E829030040E5D1DA2F5A0BA6AD4481B1872E4DD6F33463CFA23445E242890724BE36764F989F25FE2AB1C594B3768C72B95CB719BB874D53895F9C4E67CFB4B4B45FD90440F5CACACADAE1F178321212121619BBD74CBCC3E1B8353E3EBEA059B3663FAF5CB9D2472B010082E829030040E5394F225AE2FBC0C9587D89D3257E93B8C9D8057FB707AEEB7DFF093CAE91C4A966DFE14D251A306040BDC2C2C2B7E4EA0D7A5BA7BDF6F97CF766666616D0FC4078494A4A6A1C1111F1B25C1D185834C7E9740E4E4B4B9B47EB000014491900002A870E41D21E329A98D1DE2BCF4968E1DDF78C9D888991F887B18735FD5BE233890F2BF202C9C9C9710E872353AEC64BECF2FBFDB7BADDEE0C9A1E086FF2DDBD44BEBB9A4CD5A1863A55FD8B3131314F7CF0C107F9B40E001CD918BE0400C0C1BB5B224BA230103AD3CA2F12C71ABB878CD695E869ECE149EF483803B7B528AFC71C7856A5D093BA1439919B20578F97C8F6FBFD97B8DDEEA96C0220FC6567672F3BF3CC33DFF57ABD75E57B7C8E2CBA60EFDEBDC9EDDAB59B2FF7ADA28500E0C8454F19D40872F211B562C58A7B76EDDA75636E6EEE6905050531127C7E0F515454D4DEC8C8C86DD1D1D1DF4BDB3EDBBD7BF7D9B40A506E57480C95B8D4D8D3560769CD9828899F24FA4A4C92B8DAD83F84E894B93ADB9226577E2CCF8B242525453B9DCE7FC989DC9D814563E4BB7BFBE8D1A373D90440CD939A9ADAD9E7F38D94AB09F6218EFF1DB9FD606666E6765A07008E3C9CD422ECAD59B3E68E0D1B36BCB06BD7AE7A2D5AB4308D1B373675EAD431D1D1D134CE212A282830F9F9F966CB962D66DDBA757B2322227E956537F4E8D183192280D235941860ECA147371ABB50AFF678D96CEC42BD4719BBC8EF9712D74AEC90A827F1B9C48312F38D3D0BD3CC729CBC9D20276B3A5CA993C41E87C3714F7A7AFADB6C02A066FBCB5FFE12B563C78E878C3DA4510F68FEF0FBFD43DC6EF7785A07008E2C246510B6E4E0C4B96AD52AF7CA952BFBB56AD5CAB46CD9D2389D4E1AA68AC8899F59BB76AD9136DF2D6DDFAF478F1EFFA555807DC44A3491B844A2B7C4ED12274B241BBB5E8CF6340BAD11D34EE27E63F78CD1EB3A0B532B89C5E579B1D4D4D43EF2BD1C2D571B4BACD0EFA59CB0CD613300B547A04E94F6A0EB621D98DB35A3FE9A9E9EBE81D601802303356510B66EBAE9A671AB56ADEA171F1F6F9A356BA6072A344A15D2F66DD0A08169D4A851D49F7FFE79F58D37DE3877D4A8514B6919C07295B1A7B5FED4D83D62A6493C2DF189B193263ABBCA5D12A1BF72FF69EC5E333ACC4967592A0C3CB64C49494911EDDBB77F5A6755929B75E572426C6C6CEFB163C7AE603300B54B7676F6A67EFDFA7D20FF7737399DCE6EF27D3F53160F4E4848D8E0F17898A109008E002465109674C8D2F2E5CBFFAE09194D141497B7638D5997FDB1D9B0E873B379E5F72677EB0A135DAF99898A6940E31DA2989818D3B061C3E80D1B365C3E70E0C08F468D1AB5955601CCEF127D24B40799266274F6A4D612571ABB80AF0E51D2BA31C5871E6811602DFA3BBF3C2FE272B98E9113337D0E1D16E575381C0F676464FC75DEBC79CCD002D45253A74EF5676767FF1C17173756BEF36D24DAEBFE243131B1AB2C9B9E9393B38D560280DA8BA40CC28E16F55DBA74E994638E39265A7BC81497BF739D593DFB5D53B07B93ACEBB3A2306FABD9B97EBEA9D7B48D898C398A463C449A9891ED90BB7DFBF6B6A3468D72D32280D92B7186C474898B8D3D9DB5CEB23458774B81653AB469AEC44E63D790513E53CE844CFFFEFD2F9093B16FE46AA2C43A9FCF77A5DBED4EA3E98123434E4ECEF6ECECECB484848425C62E189EE0743A6F898F8FCF6FD7AEDDCF72BF9F560280DA87A40CC2CEC08103EFDBBC79F3E56DDBB62D71C8D2C6DF265A8999E23439E3DB9B6F8E3A268146AC040D1A34A8FBC71F7F3475B95C5F8F193386B1ED38D268AF97F32442870F685D986E12F58DDD6326488BFA6A115FAD2DA3C39CFE62EC02BF634CF9A6BC76C8F7EC01D9DF693D9A8672F99D442FB7DB9DC366008E3C1E8F272B3131F17DD90F1C2737CF92CB4B9D4EE7651D3A74F8292B2B6B232D0400B54B244D8070B36BD7AE81CD9B372FB5A86FDEF6D5A53EB6ACFB5031DAFE4D9B36DDB87EFDFAEB4C397FE9076A89D38C5D08FF8362CBB5D6C31B81FB7407A53566C619BB90AFD69AD102BE8F4978CBFB4283060D6A94979737CAEFF7EBD4D9DAABE69F7BF7EE7D2C3333D3CB66008E5CE9E9E99BE4E286E4E4641DD2F4965CEFE4F57A67A7A4A43C27974FC93EA2805602805A72DE451320DCE4E6E69EA2D35E97C6E72B3CA8FB5071CD9B37AFAFBFD8D3123882E830A446C61E827465B1FBEE30768D183D197A5462A2C42912C15FAEB5886FB9932972B2D5313F3F7F8E7CC73421B3C5E974F6CDC8C87894840C8020B7DBFD5FAFD71B2F575F33760FF77F444444CCEFDFBFFFF9B40E00D40E246510760A0A0AEAC4C6C6D21061A06EDDBA9A1D6B4D4BE008102DD15F62A1B16BC59C20D1A19475B508AF2667B4C78C4E89AD4919ED4533A1BC2FE672B96E73381C33E4EA49FA7A4EA7B3635A5ADA44360380E23233337769C16FD967740DECA3DACA3E635A4A4ACA6B575E792585F400A086232983B0535858E8888A8A2A630DC741DE870A9FA546476BED8C636809D4729A80D1DE2A1F4BAC0F2CD3D996F696B27E4F632760B4B7CC24092D72A57597961CE885060C18504F4EA446FBFD7E1D8E10A3D35E7BBDDEAE696969ABD80C00CA929E9E3E53F61767381C8E2703FBA72175EBD6CD967DCAE5B40E00D45CD49441D8919394120BFC16250A628F367905BB4ABD0F9527B01D28088EDA4C8BF2EA74D61912E74868373D4DB2C494F13F7267E071CB8C9D09D61E2F079CB236393939AEB0B03053AEEA50845DB2AFBBD5ED7667B009009457A096CCE3B23FC994FFD1EF06F65B5FA4A4A4A47BBDDE7BE4FE3F692500A859E829831AA7F1095D8D33227ABFE51151B1A6C98917D240002A42674DBA41A28EC4CF127F48B435766F9801C61EA6F49DC4A5C51EF78E84F676D14256E549C8A4C809943EBF2664B2FD7E7F671232000E96EC3F3C6DDBB6ED22FB957BE566AE842B222262A1CBE5BA81D601809A859E32A8718E6A1E6F766CC8323B3778F6595EB7F129A67EB3B63410808AD0E14ACF49BC2431C4D8439034B22516193BF1A2BF446BC6F72B091D36305242871BED3DD093272525453B9DCE7FC989D39D814563A2A2A26E1F3D7A742E4D0FE0500C1B364C676CFB774A4ACA6772F9B6C4257EBF7FB4DCBE5EF63BB7332C12006A069232A879FC7EE32DD8BDDF626B99DC671CD4950150213F489C67EC1E336302CBB49E52B046CCAC407493F8C6D80999034A4D4D3DC1E7F3E970A54E127B1C0EC73DE9E9E96FD3DC002A534646C64AB9B8343939F946D9CFFC4BAEF7967D8F272525E5D1B66DDBBE1648DE0000C214C39750A314ECDE6C7E9FFDAED9BD75F97EF7E932BD4FD701800A7A41A28FB18717299D756C4EE0BAFE80D14F424F7CA695E7C9525353FBC849913E5E13322BFC7E7F17123200AA92DBED1E15151515A7578D9D587E65D1A2453F262525B5A37500207C51C01361E7C61B6F1C76C20927ECBBD0EF375B57CF346BB3324C41DE96521F5B98BFDD6C5F3BDBAA3913DBE0787ACD548255AB5699D1A3473F414BE00830C5D8C395B4CECCB1C61EC2749CB1EBC9E8F080AD077A0239F98968DFBEFDD33AAB92DCAC2B97136263637B8F1D3B7605CD0BA0AA2D58B020D7E3F17C949898A84961EDDDD7CEE974DE9A909010D1A54B9719B367CFA6D70C0084197ACA20EC057BC76CF86DA2F1790B0FB8BEAEA3EBD26B06400569C1DEC724FE2331D5D8B5644E951867EC82BE6572B95CC74446464E96AB8FE8AEC8E1703CE876BBAFFAE0830FB6D1B4000EA7F4F4F409111111DAF3EF4D892889613B76EC989B9C9C7C2EAD0300E185A40CC2DECA59AF99DDDB2A5EAB4E1FA38F05800A982DF1ABC48B129B24BE2FCF83FAF7EF7F81DFEF9F2B71B1DC5CE7F3F97AC849D1F372DD4F9302A80E63C78EDD919191A145C6B550F96F12F10E87637A4A4ACA2B494949F5692100080F246510F6CAD33BA62A1E0BA066EBDBB76FDD837CE887C69EC9645939D675B85CAE079C4EA70E7D3A564E78BE933873DCB871D3D80200C2414646C60FDBB76F6F2F57FFA98746127747444464C9BEABF7811E9B9292F25D98ED9F01A0D6A1E006C2CEE4C993FD175C70010D1126A64D9B667AF5EAC5BE0235CAB3CF3E9BBC64C99251279C7042EAE38F3FFE7155BCC6A041831AE5E5E58D72381C7D03273AC3BD5EEF639999995EB6008070949C9CDC41F659EFCAD5B3038B46474747DF3B6AD4A8FDC67BA7A4A4583DFD64FDE1E9E9E90FD7A4FD3300D424F4940100D42A7AC0BF6CD9B2B1D75C734DF4EAD5ABDD8F3EFAE855557062D3313F3F7F4E2021B3C5E974F6CDC8C87894840C8070E676BBE77BBDDE7365DF35546EEE9618505050B050F66929A53DC6EFF73FE872B9FAD694FD3300D43424650000B546F080FFBEFBEE8BB8E28A2B8C5E6ED8B0E1A3A143875E5E59AF212727B7C909CD0CB97A92C42F4EA7B3635A5ADA445A1F404DA0C9E3F4F4F49764DF952837BF956826FBB4F49494940912AD741DB9DC1BF21087CFE71B959A9A7A72B8EF9F2B4067D5D3BF5567DA7395B24E64C8F53AA17F8AC4D125ACDFE800AFA95393B728E37EADFDD3BF8CFB756AD2926A01BD50ECBD02A86198121B61A7C429B1516D98121B3545E8017F5C5C9CB5AC59B366E6B4D34E737EFBEDB749DDBA75FB65D6AC594B0FF6F9070C1850AF5DBB76EF197B76A5489DF65A4E5492DD6EF7165A1F404D939595B5D5E3F18C4A48485863ECE9B33B480C96DB9A74D8E7875B87C35147F6771776EAD4E9C379F3E6ED0DB7FDF341B8596289B18BB15F2DF17509EB8C94D823D149E256094DC637085CFF44E228094D28E504D6D7E44E1F897AC69EB9AF789C6EECE4CE8A52DE93D6FD6928312F703B5A22B4F7A5B6FB788951129D254E9338512235F09C9AF4B92BF0B750641EA84148CA20EC9094092F246550139474C01F1438F08F983A756AFFCE9D3BCF9A3D7BF6F28A3E7F7272729C9C90E8816E4F895D7EBF7FA0DBED7E3E272787E14A006A348FC73357F69B1F3A1C8E93B4507969EBC97D2D0A0B0B5B6467674F08A7FD73056872A5B5C4F1125ABC70BA4481B193326B8DDDFBF1FAC072D543E23F12DB24DA183B49A23D597486BE73F47F41E0BEB581F513F4B0C9D8B3F62D94581A12038D5D443EA7D87B1A27B1D3D8499B8EC6EE0DE30CDCD62944BF0DDCAF74F60A4DEACC0EBCEF9512AB8DDDEB47DFE7C981D7D8C3A71AA859AABCAB9B1CB83A7FFAE9A7AB972C5972FB8A152B3AEEDEBDBBDE8E1D3B62B66EDDEA68D4A8D1DEFAF5EBE74544446C94CBCF962F5FFECAFBEFBFBF9ACD0200A88C03FE205D3E74E8D0E8175F7CF18BC18307F7193972E494F23EBFD65A90939111C6EE369E2DFFD792DC6EF7425A1E406D919999B95E2EFA058BFB9646F685B7C83A3F6664647C100EFBE70AFAD3D8090E4DA66F0A9EAA48686FC74581DB59C69E08C51F384FD2FDBECE14952FA1EFEB1289378D3DD4487FDCFEA9A4D31F892112EF1BBB6ECF75C62EAC9C5FCAB9D8A490DB2D426E0F92F8A3D8FA19814B4D085D1378EFCD252E0A2CD76155DBF94403354B95F5949183D63AE79D77DE1BA3468DFA68DAB469AE264D9A9CD2AD5BB7BA175C7041649F3E7D1C03060C305DBA7471262626C6B46EDDBAF1F6EDDBBBAC5FBFFE9EAE5DBB0EEAD0A1C3A23973E62C63F31C99E829135EE8298370569E03FE20FD45F6F4D34F8F98316346B2FCEFF971FEFCF92BCB5A3F2929295AD67B554E429E33F62FA463A2A2A2AE4E4B4B5B4BCB03A88D121212869563B5CB64DFF8B9C7E3D9505DFBE783A4BD5AF28C9D1CE92AE13176EF134D987C1E58AEFBFA604F13ED35A4C391B4774AB6B1932BBF19BBB7CDB912DD258E0BDCA7CFD33EF01CD981F5B4D68B26F09F0F3C766709EFE976096D47ED197396B18723057BCA680F980F03EBC507DEB3CE9CF5A56E03632764546389C5C64E06DD2631A794D70210A6AA2429F3D34F3F0DF9E0830FBECDCACA3AE79A6BAE89B8FDF6DB4DE7CE9DCDF1C71F6F8E3EFA68131B1B6BADA7977A5B9777EAD4C95C71C5158EC68D1B1FBD68D1A294B3CE3AEB9A934F3EF99BECECECAD6CA6230B4999F0425206E1AA2207FCC50EFC2367CE9C992C271F3F2E58B0A0C403FFD4D4D4131C0EC72409EDD6BE472EEFD2D99564FD425A1E406D74A05E3221B477C7A53AE429272767CFE1DE3F1F022D6CAC3D5C34A97291C434630F03D299A776187BF890D67DF104D6DF68EC9E27DA4346932F9F19BBDE8B0EB1FAD1D8091EADC3A33F24EB94E2C1A48C2664B45D7E31F650A761C61E7254124DFA0C37F61027AD45A33D6B3E0ADCBE2C705D692F1FEDCDA343AAB4078EF6E8D13A40DA636671601D7DFF4F99FFF502025043546A52C6EFF73BBA74E932363D3DFDC18B2FBE38F28E3BEE30AD5BB7D6AE8EE57ABCAEA7099A4B2EB9C419111171EC6FBFFD365876E4BF783C9EE56CAA23074999F0425206E1E8600EF84B3AF097C74E97FF31AB42EF4F4D4DEDE3F3F9BE32F62F952BE47FDBA51919195FD0EA006AAB90848C2F78587E80871CED743AE364FF997138F7CF8748932C398184872650823D5CDA4ABC11B8ED0959FF6D63D76DD15A333AE4496BD1BC10487A1C1378AC266C82BDFB439332AA5FE0F9EE08AC575251782DD2EB0E5CD7FF393A5C2A58E857EBD764165B5F9F3398A879C0D83D69D607E20689743ECD40CD536953626B42E6D34F3FFDE9B3CF3E4BBDF7DE7BCD65975D6622220E2EE7A38FD3C73FF4D043F5C47839401ECCA64259A64D9B663EFAE8A352EFFFFDF7DFCDAE5DBBF65B2E9F31B377EF81271178E38D37CCCA952BCB5CE7CF3FFF341B366CD82F3EFFFC73FD7E94FABE56AF5E1D767F2F505B133241FAB8071E782036262666A2CBE5D25F4E75B852849C983CE3F3F9B4886563F9DE4EA853A74E47B7DB3D87560750DB77ADC6EED5E12C9690D18386D27AD05C25FBCCA18763FF5C09EA06922FC1681AF83B351A872CBF47A249E031C17A2E938D5DCB452FEB0512343AA44987249556BFE56263F7C2D1E1AFDA469F97B29E26777A0742872F2586DCD6F75152FD4F1D62A543ABF444AB454844F331066AA64A4BCA7CFDF5D763243A0F1B36CCB469D3A6529E539FE799679ED19DF2BFFBF7EFDF93CD85D2ECDCB9D3ECDEBDBBE8764141C13EF73769D2C4F4EBD7CFBAFECB2FBF58490D8DD9B3679B1933669849932619398030723256E2F38F1831C2FCF1C71F65BE07ED51A2C990F5EBD7EF13EFBCF38EC9CFCF2FF1313A844F4EF8CCCB2FBF1C567F2F509B1332C50EFCEB4647477FA9BD63222323F5805BA7BBF6391C8E07E5BB79D5071F7CB08D560750DB6564643C22D1C9EBF53691FD5FB21EFA187B984E64B124CD3E33CE69CDAD9494946E55B97FAEA4C48C1E28E914D6F981D81B9294D91BB27C7C605D154C46690247DF43AEC495C62EC43B2990CC29A9F74B17630F5F0AF65A991248E8D429615D57C8F3E910A7AC90DB9706DE5B284D2E69EF65AD5513552C2953874F32503355CAF02539C91B2207AF0FFEED6F7F33953DECA45EBD7AA66DDBB6513367CEBCF2F4D34FFF382727670B9BAD762BEFF025398932471D7594910300336FDE3C2B21A23D52F4F63DF7DC63BA77EF6EDDAFE49FBA9518E9D8B1A375FDC4134FB486CA7DF3CD37E6CE3BEF342B56AC305A7CBA4E9D3A250EB77BFDF5D7B530759909474D84FCF0C30F56A2233737B7287EFBED37D3BF7FFF523FDFFABC13274EB41EDFA2458BB0F87B8B279B18BE84DA969009D2AEF2F2BD8E9E3E7D7A3FF9EE6AD7F1757279A5FC4F4BA3C5011C69E4383BCFE3F1644B4C9078B57DFBF6A3E55823478E15346171ACB17B8AEC939791B8BE6FDFBEBBD7AC59F35655EC9FE51CA05FBB76ED661CE25026FD154A8BB46F0BC4F981C486263DB42ECCB890FB34297386C4FDC6AEE5B2CED8D35CEB73047BAEE8FF8B13030997A0E0F0A51F8C3DEC29D4A440DBE901EEE690E5A13D6D4E0D248EE685BCE7E29E96F8BBB18B035F6EECE154C169B72F09249500D430873C25B6CEB2F4CC33CFBC78E59557565A0F99E2E4791DD75D779DF62878CDD8DDF9006B18CE25975C52745B7BA5046F8F1A35CAB46CD9729FF5838991FAF5EB9BF1E3C79BC68D1B5B438EB40789DAB66D9B69D8B061499F716B489DDE5F9698981873FDF5D7EFB7FC934F3EB12ED7AE5DBBDF7B0A5AB870A119376E9CE9D0A143B5FFBD404D49C86CDCB8D1DC7FFFFDFB0CC98B8C8C342FBDF49269DEBC79D1B292D68B8A8A322FBEF8A2B59E3E9FDC1F2D8FCBF77ABD77CA77711A2D0E00C6A4A5A5696F997702A1B567CE96E3A29E0E87437BB05F60ECDE1AD1AB57AF7EF191471E7154C5FE59CB190C1F3E7C82CBE5EA9B9E9EFE7D25FD691181844CA4297908928E2DD75E312B8A2DD7848D0E471A64EC22BDA17607922EDD4B79CD66C6EE69F45B29F74795E3DCAC63C8FBF5863CEFDDC69E1A1B400D74C83D65CE3DF7DCD77596252DEAEB743AABEC8D9E7AEAA975BEFAEAAB4672F96B7676F64A365DED55DE9E323A2C487B96684F913973E6583D3A823D47BEFEFA6B7D1E6BBD9C9C1C6BC88E7E46FBF4E963E473642528D4D6AD5BB5A09CF5D97DF7DD77AD9E25C1DE26A1C98FA953A75A3D59CE3FFFFCFDDEC79A356BCC975F7E69D6AD5B67BDB6C6F7DF7F6FBDA74D9B3659C90F1D6EF4F6DB6F9B73CE39C74A9284CACBCBB38630E9EB5E74D145D6414B75FEBDC5D15306E1989051DAD34C13A64B972EDDE7805E7B82E97729480FEEF5BB18ACEDA4DFC16BAEB9C6FAFC07C9774B4F269CF2DDB93C3E3E7E6625179704805A41F68D6BE5385C0BF08E3AFBECB35F68200A0A0A3A0F1932C471E6996756C9FEB959B3660EED352FFBE7EB2A71FF3CDDD8C571B5077E49891E9D59A9A45FE33411A2332F6961E0E2B31C69CF1B9D71696929B1C0D8C3934AA33D79661DE07D87CE763529F07E3419A43F26680F4F3F9F52A0E639A42C8AEC409D3F4B62815B0000200049444154FEF8E34DC9C9C9075DD4B7DCD92379FE41830645C9C9E4936CB6F0E672B9EE9738AFAA5F477F41D19E221AFACF3B2121A1E8F631C71C53B45EBB76EDCC55575D654E3EF96473ECB1C7EAAF3C5602455D71C515D6E5DCB973CDF3CF3F5F624F164D709C7BEEB9D63020EDED529C0E0B92BFD7AAF1A2BFEEE8EB376AD4C81AB6A4D7EFBAEB2E23DF13AB2E4DE8FB0A1A33668CD5C346871F6972A6BAFF5E209CBEFB071AB2A49F69EDF1151C86A7C307F5A07FE6CC99D66DBDD4DBC1FA49FABF441391975F7EF97ECFA54999871F7EB89EAC33BE128B4B0240ADD4A64D9BAB0A0A0A863CFAE8A38EF3CE3BAFA6ED9F83C98D834962E81BAE8A59137655F0FD842668BCA6E4E14E006A7B524676A6576DD8B021AA73E7CE87E5CDCA0EBFA1EC8C139392928E63D3852FBFDFFFA2C40CF9A7B95562445525680A0B0B4BFF6F798002B653A64CB1860A05437B9794D66344EBB0688F132D9CFBCA2BAF94FA9C7A10A1338FE91021A5C399B4A0AE76D5D5C448493330692F195D473ED3D68C633A0C69C78E1DD5FAF70287FADD97CFFB66F9DEBF7EA8DFFDF2D490D183F82143865849D3A2A3D43D7BCCC89123CDE6CD9BAD4BBD1DA4EB692FB2D27E4890D7899003FFBA72FF6724660080FD330054B5434ACA2C59B2E44EEDAA5895C396F679B3F23AA79F7EFA1AB9BC924D57234ED01A49DC5255091A1D87ACC3763474388FC7E329BAADFFEC4B9AFA596729D222B95EAF779F19928ACF5E14A4332EE9F0A4B3CE3ACBEA11A3C390F4F125D15E325A3F461FA3B31C9D71C61956FD96471E79C4BA5E52415D9DAD4CA7A9D6CFB60E5BD283174DEC54D7DF0B54129D4EFACE4349D054A4A8EF69A79DA649FB7D0EFC3589F9F4D34FEFF359D7D9CE743D5DBF2CEDDAB58B9203FF3AF2BDFC94037F0060FF0C0055E990C61CC989EACBE79F7F7E5D3D593D5CE4C473D3DCB9731BCA09A99BCD179E1212128695B058A7E9D301C283131313FF2671AAC426D98E6B8AAF58DE9A323D7AF4B086F19C72CA29D6D0A1BA75EB9A6BAFBDD6BAADC3898AD766D16142DA4344D7F9F8E38FADC2D4C119927EFAE927AB374B284D64E88C62C3870F37471F7DB4B54C5F4F871AF5EAD5CB1AA214A4BFF47CFEF9E7D630253D40091E7CE8D03E9D19A953A74EA6418306FB3C7F7A7ABA35B380F69009D2C74E9830C17CF7DD77D6DF17FA6B5155FFBDA5A1A60C0EF1BB1F2BD149BFFB72FFDDF2BD3F41626B49DFFD8339E00F39503793274F2E3AC8D7EFAF7ED6F532F4A0FF81071EB012A80722DFCD48F9CEF874562679DFB3A8310300EC9F01A02A1C5217979D3B77D62FA94646556AD5AA954E27D78A4D577355560F1AF92C147FDEA2EB2515CBD5048516C3D569A0B5905CB01E8B46D3A64DF759577B9D3CF9E493563D98934E3AA968B9D66879E699674CD7AE5DCDABAFBE6A0D555ABE7CB9952CD1DE2E3ADDB4266BB4578BDED6A48BFE1AA43321DD7AEBADD6BAEAB3CF3EB3860FDD70C30DFBBDCF37DE78C34A84E854D98B162D3A2C7F2F70981CB007CDC14E7BAD49CAC183075B9FF792BE237AFFCD37DF6C5D96577C7C7CBD471E7924D2E1707CC22FB20048C8B07F0680AA70485362EFD8B12326B4B7C0E1101B1BAB679347CB01FDE36CBEDA91A0918B5B34E49F6ABEDCCED2214215A55D614B1ABE136AD6AC59455340077BA06852E5F5D75FB79228417A5DEBC8684246932AC5692F99B163C75A332C692D172DA83B7DFA74AB378DFEEAA38F7DEBADB7AC5A31AA75EBD656CF171D46A4EB6AB2440E264AEDA2ABBD6C323333AD044E69EB54E6DF5B965DBB7699F9F3E71BBE6FA8025682462EEF94CF579E5C9F7FD249278D9503FE7F57F4803F480B72EB70BEC58B17EF53674913A49A5CD5FB2B4ABEAB0D1E7EF8E12D7232F2B1ECA3AE2B633AD61889938D3DFB060084BBB612A74B2C93C8AEAA84CCE1D83FFFF39FFFD4C4CCC7F27FE40F362B503E0E87A340CE25DE96738E2DB446186C8F4379F0800103FCEFBDF75EA953F85685CF3FFF7C8F1C14C7B0E96AAF134F3CD13CF144C546CB68F240A75F2CA96E4B4974B89116E2559A48D1C755666D24FD05A8BCEFE5601CAEBF57A7D34E4B4BE34389C3222222C2979292E20CCE127630162E5C68F5722BEEB1C71E3307732211949191B17CFCF8F1F57373734F9A3061C2EE5256EB2EA1E314274A683FFDDB25DE62CB0208533A56A8A744B21E624B7C52D24A7DFBF6ADDBAC59B3ADD75C734D7438EE9F9F7AEAA9CD3939394DD89C4085CF571E76BBDDC36989EA7748D994BA75EBEEDDB9736764B0DEC6E1D0BE7DFBB5E9E9E9BAE37D99CD17B68695733D1D4C1C5AD768BB4456E7CE9DBB56F40575784E450413148113C183FE43478F1E6DCE3EFBECFD0E268A274B7EFDF5576BB892D675511F7DF491955409AD27138E7FEFF9E79F6F4DED2DEF7F181F6B54D277DF1FF8EE4716FFEEB768D162ECF8F1E35F3BE59453220EF6005D7B9969C231F49758FDCC6B5DA57FFCE31F07F59C595959EB274C98D050BED7D7959190513ADE50BBA1F591581338D9D1139DB57C340084219DD6F1BF125F498C30760DB0B1C557D2FDDE134F3C912AFB677738EE9F172E5C182DFBE711F49401CAED220DF9DED0D1214C1C5252464E0CF3B66DDB76D4E14CCAE4E5E56917ABCD191919141E0D53292929659D98E9DC87C11D8066077E971DC2479AA7484F4F9FA90B070F1EEC0FD7BF6DC3860D463EF345B767CE9C69D59909F63AF9E28B2F4CF7EEDD8DCE4A164A676FEADDBBB7353B938E99D659999E7AEAA9B0DF969AFCD129B4870E1DCAF70D07FDDD97EFB81E8117C801B316147004FEF7ECF7DD578F3EFAE8BA975F7EF9A3FBEEBB2FB2A207FE5AC07AC58A15FB4D11AFBDC374B9DE5FD12EF27AC03F7CF8F02879EF650D5D525AC8FC4189E78C9D881922B15862179F0C006162A8848E7DFE77B1E5BAD3BCCDD8C919DD7FED378EFCF1C71FFF58F6CFD785E3FE59AE5E7B80FD33807D8FD7F4E2225A227C1C525226262666BD9CA41E155A08B5AA2D5EBC786DE01F0A6A8ED0444C4C69276335811E4C682D97604F15ADFFA2112C5EA73D5F8AD7A179EDB5D7742A776B16A48913275A891D9D8D69CA942966D9B265E6EF7FFF3B9F10D43AA1891809CD5AD629CF77FF99679E193F74E8D0AB5F7AE9A54FEFBFFFFEA8F21EF8EB8C6423478E34F9F9F9A1EFA1A898A4DEAFC36DDBB76F5FEE62921548C8688259FBE40F9068ACC73B12BD25AE36766F993C8969C64E48F9F97400380CB4C695CE10F053E0384CF7457325A694B2BE1E5B8F0AECBB326BD1FE1900C2DE2115D1888989F97CEEDCB987F50DCB896CA4EC8027B3E9C29B3FB4ACFEFF12312F4B74C9C8C83841FE81DE5FD312324A7BC5AC5BB7CE2C58B0C02A56B765CB16EB171EBDFEEDB7DF5A533E164FCA68AF189DF1E8B6DB6E332B57AE34DDBA75D37A4C560F14A0B67EF7351113E81953E1EFFE8B2FBEF865BD7AF5AE94CB02AD41501E3A943038DDAAD264A9CE0E183ABDAA2654B54877151CF0DF2BF1A1C4566317CDBC40E233892EC6FEE5597BCCBC2931984F0880C3447FC43C5B427FF9E927F1ABC42F127794F1181D8279742DDB3F0340D83BA49E327282F9CAEAD5ABEFF5F97CCECA2C925A1A799D0D9B366DEA2497B7B2E9C29BC32EAA52637BC494A567CF9E45D77FFCF1476B7AEC534E39C5BAAD0578DF7FFF7D73D34D3715ADA3071D3AE3805AB26489555B467BCB687207E0BB5FB2575F7D75D26DB7DD76851CF87F3174E8D0E8B27E91D5EF950E250C3DE8D7EF9DD62878F0C107ADD9CA545E5E9EB5DE45175D54EACC660771C0AF4FD449CF5502B7756A56AD913352A285B187342D089C08159FCE4D9337330CBD3F01543EDDAF2C911824F18184CE76A9499A60ADAB92EAAF1C2591538BF6CF0050231C5226454E3E57C7C6C6FEFEF3CF3F1F96379B9999F98D5C2C924B0A7985F749D9D09ADE23A6249B376FB67EC5D1048B86CE4AF4F9E79F5B7562F4B64E81AD5361376DDAD4E4E6E6163D4E873C694F190D3DD038EFBCF3ACEB9ACCD1B1D400DFFD92BDFDF6DB93E5F9FAC881FF9ED27E91D5EF904EF31E7AC0AF85AD070F1E6C9A3469625D8616BAD6F5DE7CF3CD52BF7B0771C0AFD529EF0FBEB4C403C61ECAA4B606122F5981DB7F062E75FCE33F8DDD73E6783E39002A597B89BEC6EEA9A7FBA4746327853559AE75659E2FE5719A482ED77EBB86EC9F01A04638E4EE2DF9F9F9B7CB8E716F559F5CCAF3AFF9ECB3CFCE9113DCC7D86CE14D3E0F2FD5A69E31417A0071FDF5D75B09952E5DBA58F561264C986075B9EDD5AB97D56B26363656A78EB466560AD25F8182899CE02F467A7DFAF4E9FB74DD05F8EEEF6FE4C89153E43B76D90B2FBC905FD281BF16D7DEBE7D7B516D02EDB5A975CE34F9A9F4526F077B73EAFFAA9D3B779A2FBFFC729FE7D15E6EEFBDF7DE8E679F7D36A68207FC038D3DD392FA3F89978C5D434669C2E6E590FB8F357602471FF366E0528B2C5CCCA7074025E96FECC2BD9F1ABB275FA2B167586A1DB87F85C41C896B4B78ACF6DC2BF701BDEE9FE53C60C0F0E1C30BE7CD9B5765FB67454206406D76C849991123467CE5F3F9B2E424B32A8B17FA5F7EF965ED25B364DCB871DFB1D9509D56AF5E6DAEB9E61A2BF972FCF1C75B332D3DF9E493E68E3BEE3043860CD96FFD471F7DB4C49E325A57E6CE3BEF342FBDF4123D6680328C1A35EABBC2C2C2CB9E7FFEF9BCD0C4CCC68D1BADE9E5438B47EAC1BD7E1743E9EDD021B69A80D1C7E9E383E47FCB8EC99327379003FE68B9193F6CD8B08AFE7F3CCBD8BF326BA1B5568113A1E666DFA29A3AB4AB89B187376971E0F703CBB4B78C26741AB3B50194934E5F1D1DB8FE1FF3BFA4CB38098F84FE88A9C57E3539A3B3C20D9268185847675FBACBFC6F1286A0E515787D87CBE5BA4DCE014614141444C9717A6155ED9F49C800A8ED222BE349366CD8D03F333373EEC9279F5CBF4D9B3695FE26A74D9B367ACE9C39BDE5C4B51B9B0CD5450F2CF4D71BFD15A75FBF7E56AF18A5535D7FF7DD7766D1A245A665CB96FB1C90E8D03E2D6857524D19A5439B3451A3EB6A116100251B3366CC543901D0C4CCC4071E78A0AED63068DEBCB95540F2400EB49E1EF04F9932454F6E7E90E82607FEFFCFDE7D803755B67D007F4E3A284370B01CB840E96688039057541407A008A14919A228EAEBABAF5B513F015F4154DC1327146893465144C18556594501810EA6581491A12C2994B649BEFB9FE7044229342D2D4DDBFFEFBAEE2B4D723238E7249C73E77EEEE775F93C0F4A4A4A1AEE743AB3837C8B57483CA6F490A509E6C9D09525FFBB94F8CE5C36C63C314246F63A093B5EDB3CB1C29003369D22A223794BE95992703092A1748237D004336698DF332325C648DC253150E254A59332FBCAFBC2F2DD78AE6118EFCA77A5EFB85C2E3F9163F477E4FBD95515DFCF4CC810516D1756194F929B9BBB4DBE8017C90968FFCE9D3B47040EDD385AEBD7AFFF4CBE8C2F9693D7212E976B113759ED3764C89051679C7146C8BDAFAD5BB7AA4E9D3AF92A6350A68BB1CF987D0CBFEAA0B1EFA44993D0FCCE771D071948B2602A6C3401F6474E4E8EAF895DD7AE5D7DD7DBB469A390C844A22654C96710074CA3B9675275CBCECE5E2FFFD7CCCBCCCCB4CAE726B2E44C67151178C0EF7038462524242C939B2F968893938E5BE3E3E3A3E4733F5F3EF36535E39D2BE16F268544CEDB127F9738414207F0CF24A6487CAB7492E63589A725FE523A31838A9B1F4B3C9688A824FCB0FA90F95D132791A374750C12BF1EF3FB08091B34F7C57025247ABB2B3DBC12891A0CA12C28CF0B0E1F3E3C428E5B46C877A343E9C4339EF366A7D33952BE4BD754E5F73313324495478E6DBA9BDF0719726CC5CF5608A8B42993E4CBF2EB828282BB1E79E4917F303D7065F8E1871F52E4F93ACA9F8FA7A7A77FC3CD45D50949167F892D6609983E7DBABAE69A6B7C535CE3F6D1A347FB8631A14FCCE1AA5ED07F86888EEAFF9AEF0B0B0BAF9503F5DD2B56AC38AA61B3A51DF0CBE52761616138C1795DE91F2E1E95FFDB960F1830A03C7D5F50C3FF5789DB46293D5C09099F6B95FE551BFD65F6283DA409430E50A9833E33ABB8A589E830CE32BF277E50BA070C1A867F6A9E60A1A755E081C644895E4A0FAD84D1663450E5E81D03C9C9C917ECDAB56B9161184FC955F4DE7A372A2A2AD6E1707C78ACBE9F89886AABB0CA7C32F902FDF9DC73CFFD69FEFCF97DE4A0B6A04D9B365115992A1B4D7D9F7FFEF9693366CCB80A15324EA7F3236EAABA23542B6502A162C66EB7AB468D1A1D747B8B162D54FBF6EDD5E1F6FB0B2EB8C0D787A62661A50C851A54CCC4C6C6CE5FB06041FFE8E8E88866CD9A199579C02FF7ED93D79819171787718717CA49488CC48DF1F1F167C6C4C4CCC9CDCDDD5B8E97C2C9CF72F3125538D325564BFCDBBC0D5535994A4F4F8B84CD3CA57FE5860E4A57CC78CC93B065DCFA4475D2094AF785C130CB95E67708863DBEA87405DE6AF37BE25E894F4A3C16DF3FA3CCDB31FF349AB52069BC2798171E3C787043F9DEC36C4DA8C8C12F4E6B25FAC9B1F9AB4B972E2D38D6DFCF4474F45829137AC22AFB09737272D6C997F78772D0DAFECB2FBF6C72D2492715C94968941CD096F9588FC7B3253D3D7DFAD8B1635BFCF9E79F85F265DC5FAE2FE666AA5B6A4252A622C946080F0FAF71DB8349190A45FE037FD14F0EFCC3E5C03FE80F65B007FCF2FFD986AE5DBBBEBB6FDF3E9C787495E8249FFD9BE3E2E236CA7D5941BE1C4E8250759321112571BDD20D37D15013439830BC2057E236A5AB67307B957FFE58647D2F51BAFF0CAA6B3EE69627AA93F01D84219248D4FE685EC7F024F47479CFFC8EC835BF2FFE517A8625BFAD4A57DFF9ABF79054092A21939C9CDCD3ED76CF9463F8AB944EFA3C171515953465CA94B5D5FDFD4C4415C7A44CE809AB8A279583D5EDF2A53AA54D9B368B7EFAE9A7D8E9D3A79F80B1A61E8F676B5151111A8A853768D0A070EBD6AD7FC809DF3AF9D25EF4C61B6FFC2A277EA7AD5CB9B25096BBDFE9743E85E7E126AA7B6A4252A62E61528642150EFCE3E2E216CC9B370F07FE6172E05FE6FF69E53DE05FBC78B1475E674E4C4C8CD362B1C4E358464E506E90039A2EE89F909B9BBB23C8B78B5E31E8848FCA9777949EA5E942A57B41A0F1669A797285844C63A59B6F62DE5854D0FC2681D7C1AFE4E8436370EB13D539F86E40B51C9AF422F18246BD4DCC4BF493C18C6F68FE8B5E314E75F030A6BFCA791C76927CBF4D90EFC9E7E4EAF1F82A94E8E37038A604D15FEB987D3F1351C53029137AC2AAF2C9737272F264437F205FC693B76DDBB6530E6E9B666464A8993367867FF4D1474D67CD9A95FFC30F3FFC235FC2F97BF6ECF9CCED76DF9B9E9EFE0A1EC74D53773129135A9894A15056E2C05FC9817F78551CF0A3A1BDBC568A1CC8AC57FAD7E9048BC572ABBC7691BCE68F7979799E329E020D31372A3DFDF505125689AB951EC274ABD2BF5EEF3F5E52076662C2AFDFDB240629DDD8137FE3F3F8B584977B0051AD852ABAEBCDEF00C04C4949E677C12C89A54A2768FFAB74251E12BE48FEA2BFCCCD4A57E2959BCD664B96E371342447521815358FCAF561727CBE3154BF9F89A87C9894093DC7642C85CBE5C22F7D6F99414444546970006FB7DBAF1F3B76ECC723468C70CB4940C3AA3AE077381C13E5B53E93E7412F874186613CDBA2458B6473FAEC9FCA78F84EA5A7BBF63B53E24175E894B4A88899A9748F99F3954EE44C54FA5772CCD484A6C0E827B14BE9669F85DC0B886A3C54BD4C93E82181EFB06B941EEA8806E09BCDEF05CC9A9421F1B2D2895D54CC6066A52B944ED460882392BD574A3C5E9E17B75AADA75B2C9637CDD785D9727D786A6AEABA9AF2FD4C44545385711550A861A54C6861A50CD504F845363E3E3E73EEDCB9682E59D4BC79F37A5575C02FAFB547E2E3848404CC7CD2D56C048C5E3327C4C6C6624853B049120C49C2670BBF4AEF366F8B344FB8D02F628DD233391DA7F4EC29F82105C39D308B1386148C503A29B3837B00518D87E42C121648B8A20206152F48F43EA97493DE42339088692A11ADF4B4D4F8C1F33E89772522CCEF0E246E7705F3A2A3468DB2B46CD9F22E8BC5F2917C8FE1FB659B7C57DEE9743AEF93EFCE4A6923702CBF9F89A86CAC94093D16AE022222AA0D70402F07F6378C1D3BB6580E32B655F501BF3CDFD76EB73B5E9E1B339378E584E69EB0B0B09CA4A4A45EE5781A9C8005FE40F2B0C40B129875104918CCD2B448E9C40B9230FF93E82FD15EE9E6BF79018F3D5382196DA29AA985D2BD5F1295EEE182C44C1BA59BFA5E5362D909E6F7C0454A276A5E537A181396FDDD8C32C97755FCCA952B31E31B12C1682C9E2EDF63B14EA7F3839AFEFD4C445493B05286420E2B65420B2B65A826317F915D3877EEDC014545459BDE7FFFFD065579C09F9B9B5B9C9393F34D5C5CDCA77232837E0EB172999C909010674E9FBDBB8CA7C0AFDEFE5FB47132869E11985D05BD6B500D83594F3E362F313C0153E362FADB6FD4819E32F8D51C5F9A11E689D92CEE094435462B893EE6E7179F5D0C474262B6D8FC9CA392EE25F3D23FD4119FFD4D4AF79099AE747216C38C7607F38256AB3532313171A47C57A598DF1D1BE4EF410E87638C7C87E6D796EF67222A1D2B65420F2B658888A856317F91ED377DFAF446C7EA80DFE9742E73BBDD9DE5F5EE91939B7FE4D26AB15856D86CB6E12AF8D99290A0B949E9214BE8173156E201A5932EF8C51CCD7DA3D4A13D68C649B453BA2705865435E65E4014B23A2A5D15E3877E314394EE1985613DB1125B946EB28BC0AC4AE831D5B3C4F36428DDD0D76F53302F3E60C080AE6161616812FC7F12E1F25DF5865C8F93EFC919B5F5FB998828D48573151011516D8303FDDEBD7B9F3563C68C3DC7EA355D2E975B2E5EB65AAD1F5B2C96D70CC3E82DD727D86CB6C172F28146C02BCA788A5FCD4B24673024014398306CE935F3040A3A49AC0A78CCBF94FE45DD615ECF54BAD704666DC1AFEE5BB93710850CF486C2B0A357036EC3671D4D79312469AAD2BD643E57BA420EFDA4169558BE42060E1CD8B8B8B8F869F95EBA5DE91F6557783C9E5BD3D3D3E7D585EF6722A250C6A40C1111D54AD575C0EF72B97E938B3E49494956390142AF868BE572A9CD667BDAED768F95FB8369043CDDBC1CAC7472E57AF3E40DB3AC8C37EFC3AFEAA324FA9678EC4A33BA2B3D24020D83F3B84710552B0C41C4D0A0474BB90F43163153297AAD20B9DB4DE9E14A987D2DFD685FD86EB7F796EF9E37E47BE834F37BE419B9FE5490DF45B5EAFB9988281471F81211115115703A9DAEA8A8A858AFD78B5FC0911C19191616B6CC66B3752BC7D3A0F9267E3DC7F085064A2769FC1E93785DE9A9B64B932171AEC4706E0DA26A83A187A88E41450AA6B746255CB352961B85EF08099B448E04A6A7C670C54E157D61BBDDDE42BE6F9CF21D84EA1B246432E5EFF31C0EC713D599902122A28331294344445445264E9CB8C3E974DE6E1806861961F81286167D2F274A6F0F1D3AF4F8209EE24DF31243969E53BAD704C44BB4557A88D3E160A8046677FA3F6E09A2632EC2FCFC21B1FAA1D2C918C855A50F2BC4FD48E0EE0AB81F89D771E673954B5252D24D5EAF17AF3540E906C0FF8D8E8EEE2ADF47D9DC344444A185C397888888AA585A5ADA5CABD5DADE62B13C621806862FDC5A5050D0DB66B3DDE370389CE57C3ACC9CF8A2C4D032967B5EE241A58743F89D24F137B7085195EAA2F44C6A68D47D9C79BC5D6CDEB7ED088F2B9964DD657E868B827DE1E4E4E4B33D1ECFDBF2E7E5B8EEF57A67CAF53BCC61954444148298942122223A06CCE1024F5AAD56677878F8DB72B284EA19071A015B2C963B535353D707F954FE69B2FF38C23268328C93B06501B761C804A6C04553D1C5E66D4F4A8C5187CEE84444158759D0EE51BA5A0DBD53AE55BA4AEE1489B3246E91F841E9E9EDCBF273302F28DF2B61E25E8FC7335AE9A18EA8B6B9C7E974A672731011853626658888888E2197CB85A14897D8EDF65BBC5EEFB338619313A94B6C36DB136EB7FB157316A723F9BC8CFBF1CBFCBD12D794B8FD698987951E26811E1791E671809B5B85A8C2EA4BDC20F197D23D63FC0D6C51E1F28C44B2D28DBB1186042AE3D02B0633A6AD34EF3F2AF2DDD1412EDE9138CFBC69726464E4BD292929AC8A2322AA01D853868888A81AA4A5A5BD6B18468C044ECED077E285B0B0B04CF304ABBC90606960FE3D56E27F120501F76328037AD8603804A6DEC68C4E48DC64A803C32A88A87C303BD24512DF2B5D89364922CEBC0F956F3F49580396C732DF293DCD7D47090C3342A2E62989D8F2BEF8D0A143A3E4FB023D67307B13123279168BE52A87C33184091922A29A839532444444D5242D2D6DB35CD8939393277B3C9E37949E69E54739D17A293F3F7F6439A68DC5D028F4AFC0F251E6899F1F123E0F29DD74140D8213252E95F8AFD2D365E3A471AB7962E9E556210A1AFAC36008202AD030DDF52075F050C057243E91F85A62874482F9B71F6664EAA3742F99DCF2BCB07C47742F282840750C6677727BBDDE972223231F9F3C79723E370B1151CDC24A190A398661A0311D57440890ED80610E1CDA4054C552535367464444C4C9F7DF0BE64D0F346CD830DB6EB75F558EA759A8F4AFEF0F94B81D95337395FE457E91D28D7ECF51076679C17028F49539B5C4F141236E19A223DAA474EFA6A14AF7798A51070F2FC4FF9F4F989F2F384162ADF9372AE230C410D3DDFF1CEC0B62D6B6A4A42424639078454266B9C562E9E2743AEF65428688A86662A50C85DE4E191E5E5C5454141E1919C99551CDF6EDDB87E977EB734D10553DF384EAFEE4E4E45473F6948E5EAF7796CD664B8D8888C009D796329E62B619258D543A0173B5D2BFEC8F50BA8F059A8EF693B844E95FFA37043C060D4AFB4ABCCE2D43542ACCB08421817728DD40BBABD2952F2795580E0917FCC0D14D2253A2B1C495E6EDD3CBF382F25DD0BFA0A0E015C3304EC67FD1F2FDF0BF264D9A3CFBF6DB6F1771731011D55CAC94A190131E1EBE63EFDEBD5C112160F7EEDDEB94FE1590888E91D4D4D4C56EB7FB0239F142C50B1235C94545452BE484ECE60A3EE576A57FB1FF4CE95FE6B3949E567BA5F9F9C60F34734B3CE65FE632447430F485C1903F7FCF985B954ECC20F9899995FE948830973DC1BCC410A747949E81A9B3C48712BF04FB8256ABF5D4A4A42454E2B824909099E3F57A139D4EE718266488886AC1F92F5701859AC8C8C8EFB76DDBD6AF4993265C19D56CC3860DF972E097C93541746C9933303D6FB3D9D06BE24DA5A7C17ECF9C3E7B786A6AEA9A0A3C2D863A9C2E3144E9C6BFF86106CD7E6D01CB0C95F854E91962308EF462F35821C33C99C414BE6C204A75099293FE61BC4D25BA2B9D1C4143DFB6E66713152F37494C343F2FA89652A810D10000200049444154C1D0A65E125394EEF5842147A858FBB11CAF6DD8EDF6E1F2FF306671C241D14EC3301E4E4B4B7B5BB1FF131151ADFA8F8628A4C801C82F7BF6ECB9F994534EB1A0BF0C550F8FC7B36ECD9A35A7C9E5FF4D99326533D708D1B1979D9DBD43626A424202922118FE10272768C3E3E3E355972E5D162C5EBCD813ECC99D79C288E6BEBB959E8109D5308BCDF043150D7AD3A05F05A6F8C52FFD18D6840A9BBBCDDBB773CB501D82E17D79E6DF48AEA021EFFFCCCF1112984B949E6E1E9FAF1912C3257A289DC041E2A68BF9B94165DA1FC1BE685252D2B9F2B94775CC9D1251F2B9FF44FE3FEEE5743ABFE32621A2A321C710DD954E3067C831C6F75C23D58F49190A3993264DFA73D8B061380138AD71E3C65C21D5773238A3A0A0E0AF9E3D7BBEC2B54154ED9FC7ECC4C4C4F7E4C40C277A98A1E9B27DFBF6DD2007564BE5AEDF83788A33257E374F20FD96E2A94B2C875FFBF14BFE3AF364122792179B076F48DEA06200C33690E4E12FF554DB35C7B1883A74A8112AD51E55BA62069FC7E3CCCF0D862FA1CF0C861E22A1891E4E2BCCCF53509F97E1C38747B469D3668461180EB97AB6D2C3A16E763A9D23737373FFE12621A2A3C5A44CE8614F190A4985858583D6AF5F9FBF6BD72EAE8C6AB065CB96A9DBB76FEF69B1581EE2DA200A0DA9A9A9DB1D0EC72D72B286E9AC5139835FE1E7D86CB637AC566B59E33DF394EE2973242D941E6EF19ED233C42050258013C196E673A032E72589586E11AA033085F55FA5DC8EEAB16F255E95982F315AE9E9B071D0B25CE959CD30F470A2C417E6E7A64CC9C9C917C871CF22F98C3F2557EB79BDDE77A3A2A262E573FF2137051151EDC54A190A49292929DB6FBCF1C6A55BB76EBDBE49932691F5EAD5E34A3946909059B972E565168BE5E6CB2FBFFC47AE11A2D0929D9DBDBE55AB56EFC8C91A7E794735CB45F2791D12171797979393B3E2289EFA0DA5A7EF45CF9873956E5CFAB5D23FE06C547ACADF9EE60968E090C641E68928516D83E423129EAB4AB90F9563514A57CD60CAEBB7949E81099F93E2F2BCC8E0C1831BC6C4C43C2B7FA2570C1AF92221DACFE974BEBA74E9D2026E0622AA4CAC94093D4CCA50C89A3469D21A395059B265CB96DE5EAF37BF71E3C60DD863A6EAA0870C862C6DD8B0A1A7ACE79B7AF4E8F105D70A51685ABB76AD5B3EAFDFC989DC348BC5D25E6E8A93CF6D921C687568D7AEDDDCACACACF296190E90C0EC4EE8178346A5A8929BA9F4D00B34089E237199F9F7B7251E8B29B66749701618AA6D301524FA304D2BE53E24457728DDC817094C4C598F214BBF96E7059293937BBADDEE99F2F945C36054D43C171515953465CA94B55CFD4454159894093D4CCA50484B4949597BE38D37BA76EEDC19BD61C386667BF7EE5D171111B14F0E5EC24524D7D051D95D5050F087ACDB1FD7AC59932571865CDF2A2778B61E3D7AFCC4D54314FA727373B7CA01D507728085995ED008B89DD7EBBD25212121BF7FFFFE8B32323282EDFBB24FE94A99D94A3729ADAF0EFCF28F4A00CCD284FE320B941E9A81E7B52B5D51839E17680086A4CCE34A0FF7D8C4AD43B500929B4896A07AACB4DE4D68F0FB81C4CFE667E2F7609F78C8902127C5C4C44C90CFEB734AF7A141E54D1F87C33165E9D2A5C55CF54454559894093D2C3BA01AE38B2FBE6867B158FA198671A51CC49C2A97A771AD1C1D598F1B643DFE21975F793C9E8FAEBAEAAA655C2B443593CD663B453ECBAFC867BA9F79D342F97B785A5A5A7986169D2281E97751358386EBBF293DBD6FB2799B1F1A0EA3F7CC24A587386126A77394AE2CF84A95B35A80A81A5CAD7432D159C6720D949ECEFA7DA5939695F159C5E709BD999A293DA3D348B7DBFDA2CBE57273B310D131385E4075DF2884C3E118CD3552FD9894212222AA5D075B7DE4E2358956124586613C5F5C5CFCA49CF0ED0DE2E1FD959E45E637F37A6BA5FB5CA02A664BC072972B3D334D5AC06D114ACF48F39579B289EA81DFB94528847497E82B81998DCE507AF6B1EC208F9791A4C46C48A8049B17F019099AD56A3DDD62B1BC299FC96BCC9B66CBF5E1A9A9A9EBB86988E8181E2730291362387C898888A816C9CECE5E75F6D967BF1B1E1EDE484EFE2E909BFE856189F1F1F139725F59152CB9123BCDE383FB959EE1698179121A08CB3CA8740F0D2C733D8EF3949EA9098D4E2F92B8CF3CF9250A15BB95EE97F483B9EFA27F1286E82161F977198FC5303E242CB3CDFD3F68A3468DB2B46CD9F22EF91C7E249F497C5EB679BDDE3B9D4EE77D595959DBB95988E858E2F0A5D0C3A40C1111512DB36AD5AAC29C9C9C598989895FC8C9DF8572538CC490848484B33B76EC3867D9B2656555CDA03F06866DA0DAE6D552EEC74C31E3944EC260590CEDF854E904CDCFE6C96B5A89C760C8E92E6E1DAA26D72A9D88C170BB97954E2A3637EF9B5F552F9A949414FFF7DF7F7F227FDE2A815E78E98661F472381C73B94988A83A3029137A9894212222AAA5B2B2B2FE68DAB4E9BB8D1A3542DF0A54047472BBDD37A331B01C8895D56B06432AE69472FB154AF7E2C08926669FC1102724633073CC3689C14A572294F4A62A7D161BA2AA3244E252A5138548202239B941E98A99F3CCFDFB01099C94ECA9CC17B65AAD91898989230DC348517AA8147AB80D72381C63E4B397CF4D4344D5854999D0C3A40C1111512D969797E79183AE797171710E8BC5128BE33189BE09090917CB6DF3737272821D3E81C40B665E422206D36263E8071AFDA2FA65A2D29508974874527A6A6D0CF7C0EB1548144AF49298AE744F8F95DC32740CA0793D664FC2103C0C4FC214EF1D25562B9D7444736A24270729DD0BA9520C1830A06B585818A69447D36DC3EBF5BE191E1E7E436A6A6A1637091155372665420F93324444447500922F72F035590EC670328AE9B3E30DC3B855AE17376DDA74219237653C05863C21F182E1506854FA1F89294A2766D0E4F73189BBCDEB6BCCC7C49827A618AA810A851B94AE5068A47413E0426E19AA621912672A3DCD3BF63F34E845E2100912CC228606D6485422D9F8C7D1BCD0C081031BC7C6C6BE60B1585E577A68D40A8FC773437A7AFA5B595959FBB8298828143029137A9894212222AA43306CA963C78EEFCBC9624BF3E4B447A3468DAE4F4C4C5C82E14E4778281228A87059649EE8622AE153CD935D246BBE935855E231E823836121A8B2F953E27633509D70A5441B75208143541990F42B30031294EEE7827D7582D2D55E0F2B9D84F9DABC7F89D28DADD1A4DA539117B5DBEDBDE53335D3300CCC4C562431D6ED7627BB5CAE3C6E12220A254CCA841E2665888888EA1834FA9503B14FE4C00C152CE83513E3F57A6F8E8B8B6BDABA75EBB968141CE453FD6A9ECC7EA30E9EA109C7175EF3C4B787D2C39670228C06ABE8E181CA1A54DC60AAE1B3D481212644E53556E9A1499B243A289DF4C3FE9565EE5F989E7DB23A30EB12664E427F99AB25DC12B3CCC763F6B0B54A577405CD6EB7B790CF111A5D3FA574AFA54CF92CF5728ADCDC5C37370F11851A2665420F93324444447514A6C88E898979274CC8D5CE8661748E88881824076CBF606AED209F0695339F29DD57A6C8BC0DC3961E513A21F38C79D944E21789B395AE48A827F1A5F9F893CCFBBCDC2A544E188E34DADC77F03786D48D91404F1754CB6C319743350C1227E82B83A144A8D2C2C9C846A57B1F652A3D6B58D0FB605252D24D4A271C517186E6C10F464747DFFEFAEBAF6FE66621A250C5A44CE86152868888A80ECBCDCD2D9683B2D909090938B9EC689EA0DAE3E2E2E4A684B972DF3F653C054E7C312424571D18FA81D966300BD38D121729DD4815950A2F4A7CA8741206891C4CAD7DBC791B13325411181A87441F927AA8D6C234EE987A7A80D289193FCC0C16ADF45026873A30353686E1A1CAE6F760F7C1E4E4E4B3E5F3E1320CE35EB95ADFEBF5CEF4783CD7A4A7A77F959191C1FD9888421A9332A187491922222242D5CCE6FEFDFBBFFFB790AB5DE5841343416E9183B71D72DFE2321E1E9890C1D011F497B95EE921213811BEDF3C00844F95EE2F8384CD29124F73ED530560A6AF0B94AE80F948E98A2C54C0202932CDDCDF8A25F2021E834A1854D1A0B70C9234989DE9AF605FD06AB586252626DEEFF57AD3E56A5BA59391C39D4EE788DCDCDC9DDC244454133029137A9894212222221FFCCA2F07683FB66BD76E8A9C78B6969BDA49F49203B81E3131319972E2B93588A7417206491754CBCC567AE625542774513A0193A2F430134C8D8DEA993D5CF3548613241A283D03981F66FA42C368F48EC17039F46F395FE21DA52B654E94B84EE924A01F9641B516AABB90BC093A2163B3D93A582C163C179289483C4E8E8C8CEC3D75EAD41FB97988A826615226F4185C05444444549AA4A4A41B0CC37855E98A1634FF7D66E7CE9D6366CD9A15ECF4BE6822DC4262B544B6C42B4A0F5B4272E74CA57BCB1095E54EA51329EF05DC86240D2A629084419F18546B3D67EE6BE8E982A14B48C21CD570A2A14387461514148C52BADA2B5C22CF62B1DC9E9A9AFA25370B11D544369B6DA45CE07B6D94C3E118CD3552FD582943444444A5CAC9C959111313F39E9C84A2492F868A748F8A8A1A90909090959D9DBD3E88A7F8DD3C6146950C86433597D86EDEC60A032A0B928198990B3324CD29711F9A4A630AF78B95EE1183DE4498FDC8AAF410A5A24A3871E95E5C5C8CD7EE23E115AF444646F69F3A75EA0A6E1A22AAA95829137A9894212222A2C3CACDCDDD27076D9FCB411CA6BD46D35E0C15B951AEB74A4C4C9C9395955510C4D3A0AA01C33E506D8029B0BB294E814D87874AEEABCDFDE60BA567F23A57A2646FA33C8964A51B4737527A2624F48A49527A66A50A193A74E8F16DDBB67DD5300C54766118D4728BC572BDC3E1787FF9F2E545DC3C4454933129137A2C5C05444444541639219DDFB8716354BBFC9FD2439986793C9E957611C4C3D18C153330ED314FB87FE61AA5C340F2A59FD29531F3028E570F57993542A2B3C437E6752471FCFD90CACD66B3F52F2828C8350CE316B9BACFEBF53E2EFB7DA7D4D45456761111519508E72A202222A260BCFDF6DBA812782A3939D9E9F178DE96BFBBCB496BAA9CC80E91BFEF70381C79413CCD34AE492A059AF3A227CCFB4A4F915ED2E19AF26E51BAE74CA047956E0E1C34ABD57AAAC562794DE959C3608EECDBB7389DCED5DC3444445495387C89888888CA252B2B6B5B7676F6A4F8F878F48CC150A404895B131212F6C5C4C4FC989B9BEBE55AA2724253DEB3951E2EB456E20A891E4AF788B94C6287D28999EDA53CD653E2FA3F4A276B8261D8EDF6DB0CC3F858A2BD5CDF2997F7381C8EBB727272FEE66621A2DA86C397420F933244444454217230F773870E1D267A3C9E53E5EA7912575A2C965E8989898BB3B2B2FEE41AA2209CA9F4703854612D92C04C2068AEBBCCBCEEEF6584FD0943E7FE23F18944FED1BE705252D2B909090998010C9536515EAFF713D9977B399DCEEFB85988A8B6625226F430294344444415B67CF9F27C39A89B2627B70B959E023B564E6E6F96EBC777E8D0611E1BA352291E52BABF102AAA864AAC54BABAC5B74B299D7CF93460F9F3259E517A6813FA13D5973843E966C04BCAFBE2C3870F8F68D3A6CD08C330306B13AA7390F0B9D9E9748ECCCDCDFD879B87886A332665420F933244444474D4E4C06EED59679DF54E6464643DA52B1BBA7A3C9E81898989ABB3B2B2D6700D5100CC96D44BA2ADC478899D01F76D95E8281121B1CEBC0D337EFD64FEBD51E9A9AFE395EE4F54589E174E4E4EBEA0A0A0E033C330D0A03ADCEBF5BE5BBF7EFDEBA74C99B2849B8588EA022665420F1BFD12111151A598316306AA1F1EB4D96CA9728946C09D3C1ECFE776BB1D1509F7A4A5A56DE65AAAB350DD72B9C42AA59332984AFD65A5AB664E966829F182C47C89A7954EB8CC33975D6A3E079A015F23F1AB445A795E7CF0E0C10D0B0B0B9F92FDF12EA57F9444DF9A5B9D4E6706370D111155274E894D44444495CAE170FCEC76BB512D739FC46EAFD76B935861B7DB6FE1DAA993D07308953103244E91F8C03C0645C50BA6481FA5F410A26C73F97D12E3249E9088523A51839E4557497CA674BF99A0252727F72C2A2ACA46035FA5874C3D1315159520FB6906370D1111553756CA10111151A573B95C984DE74539219EE6F1785E97BFAFF57ABDEFD8EDF6C1C5C5C5C3E5FE555C4B75026650C20C5D23954EBA0C94C8543A2973B1D2D360A3FA05FD6276053C6E8E844DE9844E3B89C566046DC8902127151616BE28FBDF60F3263CFE56240DB95988882854B0A70C1111115599ACACAC9DD9D9D9A9F1F1F12BCD93F0388BC5726B5C5C9C25363676416E6EAE9B6BA956435F18245732CDE34E4C758DA9A67F50BA4A2649E9CA19F48D4182263DE0B168FA7BA3C44B4A4F891D349BCD96EC76BB5155D359E9A6C28FCAF561E9E9E91BB94988A82E634F99D0C3A40C111111553939F0CBE9D4A9D37BC5C5C5E81172BE6118975A2C96FE090909CBE4BEDFB8866A3534D17D4BE9E9AF319D352AB59B283D4CE97AA58714A1720A493B2452FC893A54CE7C559E17B25AADA7CB3E952AFBD72372B5A1C46CD9CFAE494B4BFB3C3737D7CB4D4144751D9332A18749192222223A26962E5D5A20078033E480F05BA52B18501D71535C5CDCC9E79F7FFE5CDCCFB5542B619A69CCC03555E9FE31C54A37F145F5D45912EF4A6C93384DE966BE79E57D8151A346595AB66C7997C562F9C8308C383C9FD7EBBDD3E974DE979595B59D9B808848635226F4B0D12F1111111D530E87638EDBED469F90D1124572127D5B4141416E525292956BA7D6CA9198A0F414D82748FC21D15CE9214BA89CB94EE256A5A7C42E17D96FE257AE5C89240F66736A24912EFB54ACD3E9FC80AB9D8888421D2B65888888E898432F99ECECEC8CB8B8385436204113279756B97E5E6C6CEC3CB97FE7911E6FB55A4F9465F6724DD618189274BCD2499396E6DF987D294FC2A3F4F0A529121B827D42D9072213131347CA7E932257CFC063E5EF410E87638CEC5BF95CE544448762A54CE8615286888888AA4D4E4ECE5F725038510E12377ABDDE6E48D0848585DD121717B72736367651697D406C369BD762B1746BD5AAD5D4B56BD7B25170CD81C6BD0F4AA429DD4BE6CD12F7175AADD6B0C4C4C46F659F9874A4271A30604057D94F66CA9FFD240CD977DE0C0F0FBF213535358BAB9988E8F09894093D1CBE44444444D5CDEB7038DEF6783C318661B8E404FB38B97C494EBA17242525B53BCC63BA3469D2E41DAEBA1A67B204B6DBC3A5DD191E1EFE144E1690782BEDFE81030736967DE2758BC582D99BD0936885EC37FF723A9D774E9D3A7517572F1111D534AC94212222A290909B9BBB3B3B3BDB151717B7D8300CCCC4132B97A89A69640E692A0E3859C765BBF8F878340F9EC7B557636C92F85A6273C93BEC767B6FAFD7FB9AD253657B65BB8E2E79BFC7E39929FBC4E572B54862ACDBED4E76B95C795CAD4444C161A54CE8615286888888424A4E4ECEEA98989877E5E4BB81C48512DD2C168B3D21216185DC3DD85CCC302F2F8B8B8B5B268F59C535572360E6A5BF4BDE989C9C7CB6C7E3F942B6757DFFF6951387C7E584E17F76BBBD85FCFDBEDC862A1AF4A1C9F47ABDBD9C02BD89B84A898882C7A44CE8615286888888428E9C6C17E6E4E47C191717374BAE9E2F27EB18AA32B89445E52EA3574242C2E77270B9996BAEE6193A7468546161E157B21DCF2C7197454E1E46C9E5CD129D24764B3C181D1D7DFBEBAFBFCE6D4D4454014CCA849E70AE022222220A554EA7F3A7EEDDBB9FDFB265CBA2232CD6C8EBF57E3A78F0E00B264F9EBCA5ACE79465237EFDF5D7FFEEDEBD7B487E7EFE39858585F5240CAEEDA3131111511C1E1EBE233232F27B59B74F5F76D9658B8379DCDEBD7B5F350CA3FD11163951B6D94C8FC77387CBE5FA8D6B9A88886A13266588888828A4656464A0974C598B9D515454F4F1D5575F7DD9AC59B3F61D6EA10D1B36DCB164C992E776EFDEDDB065CB96EAE4934F565151512A3232922BFA281516168617141434DDB66D5BBF3D7BF65C3767CE9C4572DBA0CB2FBFFC97C33D46B6EB50B9B8A5ACE7763A9DD7720D1311516DC4E14B44444414D20E37134F20AF300CE3F4A8A8A833B2B3B33F2EE57ECB4D37DD94BE6EDDBA075BB46811191D1DAD4E38E10455AF5E3D1516C6C3A14A39A894F588F579FCF1C7AB534F3D15337C9EB673E7CE5B860C19F2734A4ACADA92CBDBEDF644B998AE82F891B064D35F2222AA180E5F0A3D9C129B8888886A3C3496517A46A6C1369BED90E996D7AF5FEF94E81F1717A74E3BED3465B1F010A84A0F3065FD623D2724243490BF5DB367CFBE3AF07EABD5DAC4E3F17C227FD60BE6F98249CC111111D5C8FF33B90A8888882854C9C9F838B95811E4E2FEBE3063939292AEF3DF88214B797979FD63636355E3C68D0F79D0DE5D1BD46F4B3E50ABBF1BED0BFC8DDBE8E8617DC7C7C737943F5367CF9EDDDA7F7B5858588A61186705F31CA88232F70526668888A8D6614F192222220A590E87E311B978C46AB59E181E1EDE43CECFAF94EBA8BA38E5080FB3C809BFC36EB75F989A9ABA023D645AB56A556A42A6E09F3FD5EF8BDF531EF7813EC27BB6FD22B7FDA64EEF345C451D773237C251C27A97F5EFFEEDB7DFC6CBD5BE369BED01B9EC738487609AEBFD63CACC2AA845125F736D1211516DC3A40C111111853C97CBB54D2ED2CD50C9C9C9677B3C9E1E72BE7EA5D7EBBD02E7FE251E1225F72FF8F2CB2F5F6BD0A0414354C994665BDE0F072564FC701BEE3B2521892BBF12B46AD5EAA40D1B365CFCF8E38FDFB476EDDA674BDC7D5012C6FC7B9DC46CD9BEDF1417177F636E7F2222A25A874919222222AA7152535371D2FEB61918DAD2C9EBF5F6B0582C577A3C9E6E72321F2ED160EEDCB9B70D1A34E8B03D64F6EEFCFDB0AF71A4FBA87CB0FE657BECF8E5975FDE51078699F92109B34DEE9F2DDBF01B59F61B73FB121111D57A4CCA101111518DE7703830BC05316EE8D0A1517BF7EEBD5E4EF2ADDDBA75BBE6C4134F3CECE33C9EA20ADD47E5B760C18253BC5EAFBF22062BF7072461500D636E3F2222A23A874919222222AA55264E9C5820170EC41D77DCE1A95FBF3E574A08484E4E563B76EC2858BF7EFD4DB24D3E31B7131111519DC6D997888888A8D62A2A2A322222228EB08451C1FBA8BC5AB66CD9E08A2BAE88703A9D0E2664888888342665888888A8D6C26CCA7AF29ED245D63FA142F751F999DB218C6B828888E8002665888888A8CE3AF18C8B95252CF290DBC322EAAB93CEBC842B88888888AA14933244444454671DD73C4E356C7AEE21B73738B1B56AD42C9A2B88888888AA149332444444547779BDCA5DB8E7909B7DB7C97D4444444455894919222222AA930AF7FCAD7E5BFCAEDAB37DDD21F7E136DC876588888888AA0A933244444454B778BD6AFB6FF355DEC2D7D49E1DEB0FBB18EEC332589655334444445415C2B90A888888A8AE40E5CBA6DC69474CC604F2B88BD4E6D533D53F5B7254CBD81B54648393B812898888A8D2B05286888888EA8CB2AA630EC75F354344444454999894212222A23A03952FD5F158222222A2D270F812111111D519D13D9EE24A202222A290C14A1922222222222222A26AC0A40C11111111111111513560528688888888888888A81A30294344444444444444540D98942122222222222222AA064CCA1011111111111111550326658888888888888888AA0193324444444444444444D5804919222222A2001E8F47BDF5D65BAAA8A8E888CBFDF9E79F6ADAB469877D8E403B76EC38E273AD58B1426DDEBCF9A8DECFE4C993554646C641B73DFEF8E3AAB0B0B0CC7F7369CB1414141C72DBECD9B3D5BC79F30E8A77DE7947EDDAB58B3B0E11115105847315101111111D60B158547878B872B95C2A3939D9771B9216CB972F579D3A75DABF9CD3E954AD5AB552BB77EF569F7CF2895ABF7EBD3AFFFCF37DF78D1D3BD6777F8B162D7CD7A74F9FAE366DDAA43A74E850EA6B222173DA69A7ED5FBEBCEFA7B8B858BDFBEEBBEA3FFFF98FFAEAABAFD4D2A54BD505175CA0B66CD9A2BEFCF24BDFE3172E5CA8468E1CA9F2F3F3D5AA55AB7C8FDBB66D9BFAFDF7DFD5E2C58BD575D75DA77EFEF96775FAE9A7ABBD7BF7FA6EC7F281A64E9DAA5E79E595836E7BFFFDF7D52DB7DCC21D878888A8029894212222A23A0D152848789C78E289BE04086CDFBEDD773B121C8084CABA75EB544C4C8C6AD8B0A1AF8A242F2F4FDD73CF3D6AD1A2456AD0A041EAB6DB6E538F3DF6982F59F2AF7FFDEBA0044B4444844A4848505DBB76F53D3ED0A851A3D4DD77DFED7BFD8ABE1F246450293373E64CD5B1634775D24927A97FFEF947BDFDF6DBBEC4CA7FFFFB5F75F5D557FB1EDBA04103DF631C0E87EAD5AB973AEFBCF3D4B265CBD495575EE9FB37E1F1F0FDF7DF1FB2AEC2C2C20EA9A071BBDDCA300CEE4844444415C0A40C111111D5694898A002051524FE8409921E2D5BB6F4252A60EBD6ADAA59B366FB1F939292A29E78E209DFEDA3478FF65DF70F59C250A3279F7CB2D4D742F202F70F1932C4971CF9F8E38F7D552A515151157E3FFBF6ED53717171BE24CE65975DE67B3C8643A13A06553C7DFBF6F5254E50CD73FDF5D7FB123DD1D1D1BEE73EE184137C8F43E50D123EFEC71D0E2A83501114283636963B111111510531294344444424EEBBEF3ED5BB776F151919A9B2B3B3D5C68D1B7DB77BBD5E3566CC185FE508922A18D6834A162CF7F9E79FFBAA5190DCC0F2AB57AFF6254C305C09C98B92C9192462EC76BB7AF8E1877DAF87A14048CCE0F68ABE1FDC3F65CA145FB205C398905439EBACB37CCBA20266E7CE9DBEFE37EFBDF79EAF5207491854D1F8AB7D7EFDF557DF73F82B65B00C94EC4F83614AA8CCF9FBEFBF0FBABD7DFBF6BE640FFE1DAC982122222A1F36FA25222222523AD9D1BD7B775F72223E3EDE378C077FF7ECD9D3D767C59F7040B508AA4AEAD5ABE71B1674F2C927FBAA55D087A5499326BE6141E81173EDB5D796FA3A5806553618E274E79D77AAE38F3FFEA8DE0F86366118129229AFBDF69AAFC2C61FA8B0494B4BF3F5B241A50CAA6BF0BC68D08B7E3348D8E0362469FC9532FE06BEA8AE0984E73AF7DC737DEF01CF81E413FE46346AD48809192222A20A60528688888848A97225153233337DD525E79C738E6FF8516E6EAEBAE1861B7C3D5DD07705152A175E78E1611FFFC5175FF8123ACF3EFBACFAE5975F8EEAFDA0F2051535FEC7A0978D3F9070411209439FF0BE009534481821B1D3AE5D3B5FE0BD23B9824A18247730E4E9AAABAE3AE875028735AD59B3A6D4EA1E2222222A1F266588888888D4A1D3581FCE9E3D7B7C4D7D31C3119AFAA2A7CA37DF7CA37AF4E8E19B1A7AE2C489EA8A2BAE38ECE331ECEA0EE462000020004944415408099D071E78403DF3CC33BE84C8D1BC9F4048942001E30F2464D067E670D03C78C18205AA73E7CEBE69BB31A40955337FFCF1C72153740756CE2C59B2C437BB931F864D11111151F9B1A70C111111912A3DB1807E2B4852F8674102243E9094C06DA892C9CACAF22530D03C17C37ABA75EBE6EBCD521A24409090494A4AF25DBFF4D24BD5E5975FEE4B860436FB2DCFFB098429AE51A51308BD6030F3937F362834FFFDFAEBAF7DFF060C3B1A3870A02FC184E7C41025BC06AA6830CC2A10923098B61BC3969098C2B0A91F7FFCD137C4EADE7BEFE50E44444454014CCA1011111189C68D1BEF1FA283AA1024588E3BEE38F5E8A38F2A9BCDB67F3934CD1D3162843AF3CC337DB328CD9A35CBB70CA6A89E3061826F7AEAFEFDFBAB175F7CD1371C2810A69F465226D00B2FBCE0EBED8206C2180E55DEF713088917FF0C4D7ED3A64D3B687A6EF4BE41D2E8830F3ED89F08427F1BC030ACC4C444D5B66D5BF5F3CF3FEF6F1C0C481E2169837F3B865D217183C7DF78E38DBEE4CE3BEFBC73C874DF44444474644CCA1011111189975F7E79FFDF18D6838444D3A64D7D8D7203A1B12F1213485C7CFBEDB7EABAEBAEF3F59841B35F2462D0D7E5D4534FF5CD768486BE48AEA0BAE6B7DF7E3B6446233F549FA0E74B605226D8F71308AF8186BD8150D112087D66FC952D48067DF6D967FBA7D7467F9AB56BD7FA668E429208EF1BCD7D172E5CA856AD5AE54BE8E07DE1DF046DDAB4F135107EFAE9A7554E4ECE41439A888888A86C4CCA10111111958069AB5195723848C800FAB5A0F70B86F5043AFFFCF37DE18729A3ABF2FDF84D9D3AD597B80954B2722610862861F8D291A04207CD802FBAE8A252EFC7B0A7C71E7B8C3B0D11115105B0D12F1111115109C12440F61F4C592AE770EACD37DFF455DB1CE9FD4C9A34C9579102E80303480AA1BA054A26642A032A7FEAD7AFCF9D828888A80A302943444444540D30442810122F681AEC87E14A188E14085351FBFBC060F6260C2702F475099C1D898888886A060E5F22222222AA0693274F56EDDBB7DFDFF817B32AA191AEBF270CA6CE4685CAE38F3FEEBB0F332BE112891BCC9084E6BDFE0A96B3CE3ACBD79306438D50D9424444443503933244444444D500CD757BF5EAB5FFFAB871E3547C7CBC6F4A6D40B3E0B8B838DFDF48B6602A6B0C55C24C4768B08BE4CBDF7FFFED4BC6009A01A3770D66413AE59453B8828988886A00266588888888AAC16DB7DDE6AB82F14F478D29B531B313862461D8D25F7FFDB53F2983D98EF03766473AE38C337CBD675035337BF66C5F02064397C68C19E37B3E26648888886A0E266588888888AAC9962D5BF6CF8EB46CD93275F1C517ABD6AD5BFBFE9E3F7FFE41CB2251F3F3CF3FFBA6A9FEF7BFFFEDEB413360C000DF7DA3468DF255C8A08A868888886A0E266588888888AA09861CF97BC8A089EFDCB973D52FBFFCE2AB9A09F4EDB7DFEE1F96D4BF7FFF4366876AD9B22513324444443510933244444444D57520161EAE2EBBEC32DFDFA882E9DCB9B33AFBECB37D535B0756CA60994B2FBDD4571173243B77EE544D9A34E18A252222AA29C7025C0544444444D503CD7C7FF8E107DFDF9851E9C71F7F541B366C507FFCF1873AF3CC330F5AB6B45995B0ECDAB56BF75F9F33678EBAF6DA6B3903131111510DC1A40C111111513509AC7C59B46891BAE8A28B7C332B95B467CF1EB571E3465F0F1A54D76016A6254B96A80F3FFC50DD73CF3DEAB9E79EF335FECDCDCDF555D9E079420D668FC2FBB3D96C7D222323E7A5A4A4FCCD3D808888EA3A26658888888842407171B16FEAEBD2A0B9EF4F3FFDA4F2F2F27CB32FC1D34F3FADAEBBEE3ADFDFC3860D536FBDF596AA5FBF7EA9499D50B070E142B560C102FC39BDB0B010C91994F864CABF79A16118F3DC6EF77297CBE5E69E404444750993324444444421E0FEFBEF57F5EAD53BECFD76BB1D898CFDD7FD0919B8E1861B42FEDF77E18517AAE5CB976366A9EFBC5EEFF97213B2476D0CC31884FBC3C2C2F2E5DFB708491AB93A3F323272C1E4C993B770CF2022A2DA8C4919222222A21070A4848C5F4DEE1583D9A1CE3BEF3CF5C8238F5C366AD428CBEAD5AB13DD6E77678BC582B156177ABDDEB6727989FC1B2FC1F29899CA66B3611A2A24693265B9791B376E5C96919151CCBD8588886A0B266588888888E8981A356A94472E969AF1266E4B4E4E3EC1ED7677F52769944ED49C2D97083BFAE8B46CD972AFCD665B2CD73325E6CBF20B5C2ED726AE512222AAA9989421222222A26A979A9ABA5D2E3E33030CBBDD9E20979D954ED02059132371B11918F2846A9AF54AF7A641C39AF91E8F6799CBE52AE41A2522A29A804919222222220A45DEB4B4B4E5728998801B860E1D7A7C61616117AFD7EB4FD2A0A2069D8FCF300C2309CB84858515D86CB625723DD3E3F1CC9358E872B9FEE0EA2422A250C4A40C11111111D50813274EDC211733CDF01938706082C7E3094CD2C44B2071D3C5308CFBCC6A9ADFE536DF2C4FB26CE6AE5DBB7E9E356BD63EAE512222AA6E4CCA10111111518D3575EAD42CB940BC8BEB56ABB5494444C4451E8FC7DF40B8B36118ADE4EF56F2777F344B6ED2A4C93E9BCDB6D43FE40955350E87E377AE4D22223AD6989421222222A25AC3E572ED948B2FCDF0B15AADB1168BE542C33090A841244AE03A2A6BEEC132369B6DA3D2BD69E62149131515B564E2C489055CA395AF77EFDE0D66CC98B1876B828888491922222222AAE55C2E57AE5C203EC0F53E7DFA1CD7B061C38BD09B46E9214F5D254E91B8C1308C1BB04C414141A1CD665B26D7E79B15350B1D0E471ED7E6D179FAE9A793D6AC5993327AF4E8E49123477EC4354244751D93324444444454A77CFAE9A7FFC8C5D766F8D8EDF66865CEF284300C03D534E7CBDFE7CBE57FB18CCD66C3F4DBBE214F120BF3F3F317B3E2237848C8FCF2CB2F53FBF6ED1B367DFA74E7638F3DD66FCC9831D3B96688A82E63528688888888EABCB4B4B49572819884EB56ABB5517878F805EAC074DC9886BBA5445F3354C3860D8B6D361B66879A2BB1D062B164A6A6A6AEE3DA3C943F2173DF7DF785C5C4C4A8D6AD5B87BDF0C20B1F3EF0C003D78F1F3FFE73AE2122AAAB989421222222222AC1E572ED968B6FCDF0494E4E3EC7DF4058A28BD2BD693A9AA1E43E54D36C55BA92C637E4292222E2A7C99327E7D7E57559322103B894EBE1CF3FFFFCC777DF7D779F575E79E50BEE75445417312943444444441484D4D4D4357281988CEB83070F6E58545484E14D48D274563A51D34CE23A3394DCEF36AB697C439ECC6A9A3575659D959690F1C3F5FBEFBF3F62FCF8F1D36FBBEDB65E13264CF89A7B1911D5354CCA1011111111558059019361864F7272F2D901D53418F2846A9A0E66DC6956D36C93BFE7629627B95C585C5CFCA3599953AB1C2921E387DB1F78E081C8F1E3C77F366CD8B06BDE7BEFBDD9DCB388A82E61528688888888A892983D6510A9B88EE99F1B366C789E3A30E4091535E84DD3C7EBF5F6C1326161619EA4A4A4E548D2F81335668F9B1A2B98848C5F4062E6F32143865C9D9292F21DF72422AA2B98942122222222AA22E6EC4C73CCF0B1D96C67CAC585866174F67ABD48D4B493BFDBCB657BB97EBBB9CC76B99827B150EEC34C4F99E6AC5195C66AB59EEE72B97EABEC7F737912327E6662A6DE73CF3D3773D0A041574F993225837B0F11D5054CCA10111111111D430E87234F2E104E5C1F3A74685441414147732AEEAE7213863F9D22D10B21B7AB060D1A28B3374DA65CCFF4783C0B5D2E57EED1BC8FB0B0B05576BBFDD9F0F0F0672BAB19714512327E58FEC1071F8C7AF6D96767CAFBBA3A2D2DED7BEE2D4454DB31294344444444548D264E9C58A0742360C40BB8CD66B3B532A7E2EE828A1AB944250DFAD324CAF5E16161612A29296987FCED9BE5090D848B8A8A325D2ED7CE72BC7494BCC613F2B85BE4F51E71381C53E4366F45FF1D479390F1C3E31E7AE8A1FA6662E61A266688A8B66352868888886A2D396155A832C025552FD90E187AD3806B22380E87E377B940B870FDEAABAFAED7B871E30E168BE5225997A8A6C1F0A756B80B8106C248D4D86CB66CA5873C65CAB20BA74E9D9A55DAF3CB7281C91754E5A4C86DFF91CB7BE5B5E797F7FD564642C6CF4CCC3478E699673EB7DBEDD732314344B5199332444444547B0F74C2C38B8B8A8AC2232323B932AAD9BE7DFBB6C8457DAE898A99356BD63EB9C834E325DC66B55A4FB5582C174A7435AB6A3A4AC423E4FA30B7DB8DE40B2A67169A4D8417CA6761FEC489135161E391652C255EE6028979F2985479EC8860FBCD546642C60FCFF3F0C30F371C376EDC6776BBBD17133344546B8F55B80A888888A8D61EE88487EFD8BB776F532665AADFEEDDBB3123D1715C1395C7E572FD2117D3CC409226D262B1B45307863C21517386C4955EAF17A10A0A0A90A859514A422650725858585FBBDDFE5C59FD664A4BC86CD9B245DD7FFFFDAAB8B838F0B3A89E7FFE79D5BC79F3FDB795B65C4444841A3F7EBC6F393CDF238F3C82C4CC0C792FBD999821A2DA288CAB808888886AABDB6FBFFD428FC7137BC20927706554B3D5AB57671514142C90137C4E775C45727373DD3939391B25166667677F28F1524C4CCC048BC582E148180AE59168267172104F172171897C7E6E8C8F8FDF2ACF75C830A8C355C8346CD8D037946AEDDAB507255C7EFDF557D5BD7BF7FDD7917CF9EBAFBF7C430CA151A346AA6FDFBEAA63C78EFB9769D6AC99111D1D1D317FFEFC7E7171710BE47DACE79626AA38F93CE34388C890CF13139D21C0C25540444444B5D5EEDDBB9FDEBC797331FA6D50F591F5BF6ED7AE5DE7C9E5475C1BC796CBE5DAE470383E967850A2DBA64D9B1A97F3294E55BADF4CA64417FF8D650D59EAD5AB976AD2A4C9FE7E4EF80C2229B360C102DF755CE2BAFFB38924CE71C71DA7AEBDF6DA439E4B9EDF3262C48886B2CC74BBDD7E09B72A11D526AC94212222A25A6BD2A4497F0E1B36EC1AF9F3B4C68D1B73855493ECECEC190505057FF5ECD9F315AE8DEA959797E7898F8F1F5581872239334C1EDBBF4F9F3EE11B366C78FB483D642C168B6ADDBAB59A3F7FBE426F1BC0A5EC0BAA6BD7AEEAD9679F557BF7EEDDBF7C545494BAF7DE7B55D3A64D4B7DBE66CD9A59A2A3A3C3E6CD9B878A99CC7256CCC49BF16BC06D56895CEE1154D7B05226F4B052868888886AB5C2C2C241EBD7AFCFDFB56B17574635D8B265CBD4EDDBB7F79493F487B8366AC7399D7C9E5E0EA6A9EF39E79CA33A77EEAC027B3A151515A9A79E7A0A9FCBFDB7D5AF5FDFB71C963F92D8D8D88811234644C9BEF471392B663023D50A89EB24AE50BAAF26669AE2B46C4454ED9894212222A25AEDF2CB2FFF452E066467673331738C2121B372E5CACBE424FA26733B508858BF7E3D860F79835CFC37C33016444646E68487877BEFBCF34E23D85996060F1E7C505206C998CD9B37FB92337E68023C70E0C0A09E2F3636366AC4881191F27EA69533319328315D628EC49D128B151B4F135108E0F025222222AAF5264D9AB4464E0E976CD9B2A5B7D7EBCD6FDCB871037FAF0BAA7CE82183214B1B366CE829EBF9A61E3D7A7CC1B5121A060C18E0DDB871A3AA57AF9E3AEDB4D3FC1F02245D96497C2F315D3E2393245E0E0B0B7BB26DDBB6F7BDF6DA6B2F0E1C3870F7AE5DBB6E7BE8A1872C1D3A7408FAF5309B1266525AB66CD9414D7FFD1A3468A06EB9E51675D6596705FD9CF27C91D1D1D14573E7CEB5C6C7C72F0C62281366A11AA474654C2389DE124F4A244860B62A74023F5DE966C844B51A872F851E1E8D101111519D317BF6ECD672B2395E4E3CBB356BD6ECCF962D5B36898A8A3A514E501B72ED1C95DD0505055BF3F3F3576FD8B061CFCE9D3B2F90DB1662C8122B6442CAA5D1D1D1FFDEBC7973B31E3D7A3C3963C68C21919191F7EDDAB56BDB911E545653DF603CF9E4936AD5AA552AB0E936FACEE0F91E7FFCF10A3DA79C506E93F7261F696FBF32A6CB9E2481E1739B25B06FFE4FE2599C944AA0E1CDF912574A8C09780CE6EE8E96F881BB0DD526369B6DA45C8C42381C8ED15C23D58F4919222222AA73BEF8E28B767242D8CF308C2BE584EE54B93C8D6BE5E8C87ADC20EBF10FB9FC0AB32C5D75D555CBB8564206120E18BEF39EC4768971129912E87E8DCAF90F0EF7C0DEBD7B3768D6ACD9F6BE7DFB466246A58A5AB162852F3153D2134F3CA12A9AE80139A95C377DFAF446F9F9F967CD9831634F298B9CAD7442E676F3FAF3E67A40D35FF49741050DC64E15053CE60C89D72426487CC6DD876A132665424F385701111111D53566C200F104D706D552514A2722D0E076A5C45D126F48A4483C26F197444F8961122E89DDA53D09121DA3478F4E9E3E7DBAB375EBD615AE9471B95CBECA98C04A194C83FDD1471F55B852262B2B6B93BCBF268661F43B4C4206EE9378D9FCFB788953D4C1B32E65A803091924A8D00CB8B584DD5C27DD95AE9AF9526227772B22AA6C6CF44B4444444454FB1448A44BA0192EA6B3FE58A2AFD23311DD60DE3E43E92A99FF1EE989468E1CF9518B162DFABDF0C20BC5A87829AFCCCC4C34153E28210398221BB7E3FEF2424266DCB87111650C5D6A6186FF4D0F97783BE0FEA1EAE02AA15B24AE97F85C02D57348C4FCA874F2EA62A51336DD954E781111550A266588888888886A0724201A075CDF28F1A8C406A5872B2549BC25D14DE964C32889BF951EAA734463C68C997EFCF1C75FFFFCF3CF17952731B367CF1EF5DE7BEFA9828282FDB70536D9C6FDEFBFFFBEEF3258412664003D64ACE6DF98020A89157F8F18F496C992D81BB03C862BA1BA08C39D064B242B5D35F3A7D2899A3CA51B04B7E6AE46449585B32F1111111111D57C2D951E8E574FE96A18E8A274F50786EA61A6A19F253A299D8CE82E315BE9EA0F54D23C2C815296C3665CE6CF9FBFA65BB76E3F6564640C38F7DC73C39A356B56E69B42C2252F2FCF571503981E1B8FDBB76FDFFECA190C63DABE7DBB3AEFBCF3CA7CBE7224644ABAD95C2F48548D52BA4A06C9977CF3FE7325FA4B74957849E9E9B391B079476284C465123729DD7FE60FEE6E545371F6A5D0C34A1922222222A29AEB5BA587DC604EE94F253E0AB86FBEC477EAC0B4CF483460284E9AC416A5930EC8AC60CA725488342FEBC55E79E5952F2222227A8D1F3FBEB0AC8A99356BD6A8050B16A8C2C2C2FDB7618A6CF4904172C66FEFDEBDBEE5B0FCE1ECDEBD5B4D9E3C79E7B871E3A22A9090813C09A7D2D533586763CC75E08793D40B25F06631E7770373BD229BD4446288D2953425676AEB5CE23A1ED394BB2511058B491922222222A29A09B304AD523AE1609358A874D35A54CB5C682E93A1743206091794A6FC261121112B81E9CAD163E501A58731BD19CC8B4E9830E16BC330AE193F7EFCBEC325665019F3FAEBAF1F9490A957AF9E1A366C983AE9A4937C97B8EE87E5DE7CF3CDFD153525A5A7A7EF9A397366138FC7D358E21E9BCDD6A59CEBEA6BA5FBECC02CF3BADFC9E67A4035CDAB12DF28DD536680D289AE754A37FE4525D205018FC3A8030C67F2F79AC1F5DBB95B12517970F8121111111151CD11A7F42C4A483020C9821981302C07D51D18C284E1351896831986569A8F411206B32FA11405951E980E1AB3102D57BABF0C923339E579136DDAB4717B3C1ECBC2850B3BB46DDB36BCE450A6193366A865CB96A9E2E262DF75CCBC248F5183060DF25D6FD5AA95EFFE6DDBB6613A755F00FACDC8F31DF45C18B294929282463448A49C29CBC4CBE5B0F8F8F89E12DBFAF7EFBF3A2323C37B14EBF40EA57BC8E085D197E754737DDD65AE1F24BBD0776792D2091DBF7EE6BA4C95D8A674D206493124C18AB9AB5228E2F0A5D0C3A40C1111111151CDB155E929ACFFA5746F98A54A576F20E182199650F1525F1D5CF572B6D2D33BA39A06FD6590AC0997586D3E3EE8844C9F3E7D8EEBD0A1C3488BC5824444378FC7F34A666666FBB66DDB46F813335BB66C512FBDF4D2415532E81BF3D8638FA9860D0F8CFE898D8D555F7FFDF5FEDE32587ED5AA55AA6BD7AEFB97F3F790913FFB391C8E71F2DAEFC8F248482131833E30497FFDF5975D4E348B3B75EA94BD74E9D28A244330CC0B332D21F183C416867AFD4FE97E335867A89299A2740F9E404F2B9DB0C1E883DF25EE34A38BF9FE90400B2C25C2BFC3C35D98AA139332A1C7E02A20222222220A6968D29B1570BD95C44489CB959E55E8DF4A5771E0440B951B98E21AD5325B4B3CCF62F371AF96F70D58ADD630314CE964058642790DC348CDCFCFBFA361C3861DEBD5AB37F3A1871E6A1013135369FFE82335F5EDDDBB7783468D1A0D93FBEE513AE904E811F35A6464E41B2929297F97F3E5C2CD4BF48339DF5CC767987F8F557A48532024C52E95186DBE3E7AC9B457BAF70C60CA71340EBE2BE031572B9DBCC9E62E4DD5C566B38D54BAD9F52887C3319A6BA4FAB152868888888828342151708DC42B4ACF02E41FA28326B46830BBCC4C0EEC52BA2F0A1AB2A0EA03099C47246696783E34BAC50C4C85E57913C9C9C93D2D16CB274AF75C4109CB5CB93E202D2DEDD555AB5615666767AF8F898999979999696DDBB66D6430B33295A5AC599656AF5E5D24AFFBA3BCEEEB8661644BA0D1F1391297BADDEEBBE2E3E35B262626AE92E7D91EE44B7ACC4045112A887E523A113357E904D78725967F5EE92A99F54A4F998D5E32E3CCED8224CD6D12F7AB037D6C94795FB4D2D391FB45290E75A263889532A187491922222222A2D0D34BE93E319F29DDB4F7E380FB903840B201C3776E54BA7A050D7F3F904851BA42067D6250B9813E296BCDC7ED53E548C8242525C52724244CF67ABDF865BD99F99CB7391C8E07B3B2B20E9A161A8999D8D8D8790B162CE81F1D1D8DA14C15AEC82FCFB4D7B9B9B9DE9C9C9C5C79FD77E4BD66285DE982614317C8E3FF2327A00971717179B2CCC60ABE1DAC6754C4149BFFFEFDFF64A59336D836A88A395DE23DA5133A485CB591F8C45C16C3A1909C41254F86B95DBB98DB113D80D0C3662577793A169894093D4CCA101111111185867B2596283DCC05C7E9180B8429AD512D334FE986B24E73D93CA57BC19C662E9B67FEDD48E9E14E97998902DC86EA99A07B99D8EDF61672E2F6A2611898021AD527DBBD5EEFE31E8FE7C6F4F4F4ACC33DCE4CCCCC3F9AC44C791232A5BDBE445A4C4C8CCB62B1A0AF0EFABA24CABFE356F9F75C9A9090F0B7DCBFBA02DB051547BF94B8CD3F340C953243954ED020018629A5D0381895343BCC652E523AF982AA18F49869AC74EF1F4CB58DA151EF2A3D55375195635226F430294344444444141A304C26D53C6947750B66F7F941E9A99931957547A59BFC065A24F1AC793B2A3690C4C1909BEF0322A8848CD56AAD9F9090F0B0611848FC60A80D8643BDEE76BBFBA5A7A77F9B9B9BEB2EEB39FC8919D12F3A3A1AB3325982FDC71F4D422690BCCFADF23E3E6DDFBEFD7B1E8FA7589E2F5EFE4D183664977FDF003929DD1713139313CCBF27082798DBE729A5AB5DD08B0649B4B70296C993B84FE9199C7A2B3DEB5563F371E8013447E969B5FB9BDB8FA8CA3029137A989421222222220A0DE7293DED3366F0C16C4ACBCC937D4CD78C244D27A5FBC5E4073C068905CCA084A14948CA7C5881D735EC76FB20C3303E91E8AB74B5C7748BC5727D5A5ADAD4DCDCDCBDE579322466E2E2E216CC9B370F8999B066CD9A9579CE5159099940CB972FDF2DEFE59BD8D8D8D7C3C2C250D912ABF4B0A23EF26FBB55DE6344BB76ED72E4B50B8EE2651E507A88D93AF33A8649394A2C834A195430613AED5FCDEB68967CAD048686A1AA09499A17CCED5912125B5E7E3CA8323029137A989421222222223AF60629DDA437B0E92B120618928486BA18D282EA18544F6098CB26895394EE4B52725625F43DC1CC4868085CAEA6B1369BAD9B9CA42191F31FF3759618866177381CCF6465656DABE83FAE446246356BD62CFC70CB56454226506E6E2E9A1167366DDAF4B5468D1AAD92D7692DFFC636123DE4EF3BE57D368F8D8D5D21CBEDACC0D32399F26519CB6088D218893DE6B6C59032F4A4F94AE94411123A79121BCCE591AC39D7BC0D554E18C676B162DF19AA044CCA841E266588888888888E9D86E649374EB83F2E71DFDD4AF7704172C03F0533123198CA1AD35FDFA07443DF927D5170C23E43E96A99A058ADD63689898998D1E959F3353678BDDEBB9C4EE77FE4442DAF32FEA166622673EEDCB9FDDAB66DEB69DEBC7964C965AA3A2113282F2FCF23EF292B272767029A12CB4D2D0CC38895B8C862B160C6A6188975B2CCA6723C6D593D6AB03DAF52BAD1AF616E636C77F4A24143E2E3944EB87555071274A8924242AE87D27D6AB03FDC5ACAFE42546E4CCA841E26658888888888AA1E86A05CA974F35D0C63C19024CC8414388B119ABF4E557AD6A45CA5933718C284614B6F989798FA7A94844DE9A6BF6EF3043EA8FE28C9C9C927C4C6C63E6DB158262ADD081733003D959F9F9F3C6DDAB44595FD8F4662464E02919841F3DFA2E6CD9BD7F3DF772C133225E5E4E4AC939892909080444723735DB493B84D6EBB58027D69D656C24B3D685E22011663BE1666C842CF1E54C160B818126A5F073CA6A379D2FC91D2499F97959EC909DB6A273F4A74349894093D4CCA1011111111552D4C9B8C844A86D2B3EFA03F087A89A49538C946F5448444929920C089FC894A575B2C369FE73189F72526AB201331307CF8F08873CF3DF76EAFD7FB916118979A377FE076BBFBA6A7A7CF5CBD7A755155FDE3CDC4CCC2B973E75ADBB66DBBB779F3E6F5AB332153E2BD6D96F8B85DBB761F783C1EAFAC1B2467903C1924EFF90689FC2E5DBAAC58BC78B1A7822F8126BED325D097075397FF9FD2954DD80730E3127ACB7C52E2314F2A3D24EA7CA5AB6930AC0D43A0CE543A99D3CF7CBE8DFC6851793129137A98942122222222AA1AA88A41120555103F4904263E3045F21BA53C065532C94A4FAB8CC6BDE8F3F29744A27972FF4F79DF84CD66EBBB6FDFBE8FCDE7AD6F18C63712FD1C0EC73BB9B9B9BB8FC58A0848CC0C282A2ADAF4FEFBEF37A8EE844CA0ACACAC5D3939395FC5C4C4BC29EB669B843F1982757773424282613605DE57CEA7F627CEBA483490F842E9EA973CA56768C2FE11D8B8B9A5444F73DF5865EE27B9E6EDA89A425F194CCFDD54E90A29BFFB95EE59C3A9B5E9889894093D065701111111115195C14C3CF72AFD632866DD394B020D74ED4A0F673A5C05461FA5AB66D0B817FD4FCE560737052E93CD66EB6418C6F35EAFF75FE64D2B2C16CB03A9A9A933AB6B65D8EDF64BE4FDA4CBFB1A102A0999D258ADD6C8F0F070BBBC57CCAE146FDE8CAA26542FBDE870388EA64A05491724D9307DF6DD25EE1BA7F4F4E6A88C4212071551FDCCF3364C998E64CC8301CB6358DC134A0F858D49B93F00002000494441547BD5DC9FF2F9B1A3237C2FA04A6F1442F6E3D15C23D58F491922222222A2A317A57433D7164ACF8434CE3C4146A35624656E0F5816D53048D6A0EA02535CA3D9EEF280FB315CE919A51BFB62169ED5E5792372D285937DCCF633C83CDEC76C4D4F6CDAB4E9DD8C8C8CE2EA5E51BD7BF76E3063C68C3D3565C32627275FE3F178508972997953A161180E8BC5327EEAD4A959157CDA8725DE53BA0ACA0F55519324AE37AF636A740C69FBCCBC8E1E42C3D581216FDD95EE3FF399B98F60A85B37739F49371F4B54F2FB81499910C3E14B444444444447E734F384F967A5FB80A0A2C55F4981E6BD984567931980C408922583CDE3F1114A57446066260C7142250DAA25BCE6E383D2A74F9FE33A74E8809E25A912E799C983F1616161A84A9987D9874261655565FF9AAA909595B5263B3B3B252E2E6E86ACCFE395EEF3D2C1EBF5DE111F1F7FA1C426B9FFD7723E2DAA9F4A26A6304BD35C093C172A60B02D9F34EF43B50EAAAC66049E5F9BCB6148DB3D4A0F91427F9AAB951EF2D4C5DCF77EE44794FC387C29F430294344444444747430A30EA63446B20189978BCDDB513D83040BFAC98C57BA7A01BA9927CA5BCD93677F42E60373D91D4A27648262B55AC3DAB56B372C22220227E4D7283DEC094D84FB3A1C8E8F2AD007854A919393F3A79CC47E2827B5930D21372548C44A0C91DBFAC4C5C5ED6AD6ACD9CAA3487EA1878C3FB9D35FE94A972D12BB249E32F7A1C0C6D048E0202188DE43EF2A9D8C4385D40B4AF79D4185167A062D08D89F9AA943934154873029137A98942122222222AA9848A58708159927C82F2A3D140955329829098997BD66E0E419FD4030CC04499B6FCCE7089C2A1B8FDD5E9E3760B7DBAF300C034D7C6F513A3934DFEBF50E703A9D2FCB09D70E6EA2CA87F52AF1456262E29BB2AE91304115CB39B21DFA376AD4E8C6B8B8386FC78E1DB3972F5F7E341541E80F33C2DCA6680E8C8AA9C901F763F81366D1FA41E969D4310C0A09A26BCC7DF12589094A0F930B4CF05DA17405CD526EC9BA894999D0C3A40C1111111151F90C91785AE96A140C59BA401D189E84298BD11F06CD7533D581AA04346E45A50386252199B3C17C5CC9A9B28362B55A6313131353E44FF484C0B4CAEB0CC3B8DDE170DC9F9393B3819BA8EA65656515C849ED9C56AD5ABD5ABF7E7D54B5A0974B1BD90E57793C1E0C6D6A12131393538119AE90A8432206493554C6642B5D091338053AAA7490B0411F1A54BFE449BCAEF40C5D4806A10AEB0C891CA587CBA17A0A153CBF998F4565D66E739FFC5A1DBEE134D5324CCA841E36FA25222222222A3F0C19996F9E00E3041715087F9A27CEA88A69609E2CBF1CF01834EE3D556296D2B3EFA092A65C0914ABD5DACC62B1FC4F4EFCD14C38DCEBF5E2C47DACC7E379D9E5721572B354EFB995CD66EB2D9798B1A99B79DB3ED946A87079C1E974AEA8A4D7C16C4C18EAB446E966D13056E25BA5133168208CA4E09D66A08A06491954DFA0FF0C123EF595AEE6C270A939E673511DC046BFA1279CAB8088888888A8DCF00BF30089254A37D55DAB7493DFAF941EA6840A194C7D8C1971B6998F9926F19DD2434EA695E7C5860E1D1AB56FDFBE7BE504FF11B9DA58E964D0EBF5EAD51B999292F237374748F0CA49EEA772F9A99CF85E28DBEA41C330AE97C0D0B2614949499FC96DE3D3D3D37F38CAD769A974950CF63B24E5BA2B9D58C190B8C7944E08E135FD43EB0043AC9024FC8FD2D535D83F3F97F0EF4FD7293DFCE9696E46A2638BC39788888888880EF55FA5871C6158077EC8749927BD7BCD63E8A14A4F5D8DA40B2A215081F0A8D2FD643294AE58D8AC7455C3D701CF3BC9BC3D6872829F5C5C5CFCB1F95CF5E4C47E86C7E3E92B27F793972D5BB6979B2AF4646767FF919393931E1313936AB158B0BF241886112771537C7CFC35090909DBFBF7EFBF2A2323C35B81A7FFC9DC87905C4102F07D735F3D49E279A5133168F21B38FD39A649C7D0A5E6666008D30873DFC6FEDB41E98A9A5F021E87E4CF6E6ECDDA85C397420F9332444444444487C2F4C4F5244EFEFFF6EE034EAEAA5E1CF89DDD344A2891120115880A21A1A8880DDF0B4DE5216261B3BB7441D1BF0A8A60E74178EA439A20CAD3072A0898EC66411014D008E2A35729492852422F81904EDACEFCCFEFEE4CB259367DC36CF97E3F9F9B7BE7EE9D3BBB672673CEF99D96B69DB3B69E3031074C0C398A8A744C941A159A3159DB32C503CBCF8B658B07A7EDFAB4DD5FAEF8B6644B7A2CACB4C6C6C6DD53052A9E7B6CDA362A954AF7A5EDA0F1E3C79F3A79F264BD637A80F43E4D4B15DF6B76DC71C79874377AA7C472DA31F7CCE8575E79E590F4FEB60E1F3E7C62BA6ED12ADE3A822531E42886CBC5BC44B10CF687CB9FBD581EBBE38A5B117089214EB1DAD7BCB43D9CB50563E6646D43EAFE942D997FA6E287697B306B0B38D24B08CA743F82320000D079A5F782AC6D79E17BCA95D3D3B2B68954E7B5BB2EE684393C6D1B972BB9C7646DAB28C535B1124EACA674E3AABC707D7DFDB054893F3F6B9B84352ACCD1FBE6D85479FFEA79E79DF7A4B7A6E74995DFB95101DE75D75D7FDEDADA1A730F6D97B677C667A4A6A6E64BE9FD5EBF3C29F0AA2E571D4B6647A02596BD8E6151115489E5B46FE870DD41E56B6278D55BCBAF1DF3CC449031560D8BF9916696AFDDB8FCF98D00524C5E1D019FADB3B6400E3D9CA04CF723280300004BC4908D980BE69972257497AC6DC8524C9C7A63D61680693F1C2986841C99B66DD316438CA247424CE87B4BD6B6FCF5AD2BFBC2471C71C446DB6DB7DD8F0A8542ACAA14C34BA217C37FF7EFDFBF71ECD8B177ADE65017BA91FBEEBB6F51AA08DF75E081079E3775EAD407D27B1DC3DCA2E7CCBFD7D4D41C932ACC5BEEB4D34E8F3EF8E083D356F3256232E198843A7AD154822CB19A534CEE1A3D5F62A19758C9E9C2F2E72B7A62450030E6A0B9ADFC593FB5FCF98DA5B5A397D81169FB65DAF6CCDA8233F199B75A530F2528D3FD98E8170000DAC444A8E3B3B6004C88611B118089C97C2F2F9F3B386DC3CB95DF8A588AF8BBE5E398C877957A3B1C7DF4D1FD67CD9AF5E579F3E69D9C2AE9312F4831ED2F2C954A273635353DEF6DE97DC68C1913418D98ECF90F314C2DBDD7B162D3A7D2F6FF8AC5E2971A1A1AFE98CE9DDEDCDC7CFB2ADE3AEE7B5227E7BE5879E9ACADB74CCC1D13F3CC4C2A3FBEAA431D71BBF2164B6BDF98B5CD5713D744CFB19860380296D18BEBE7DE4D583396C4060080256282DF58D16646D636996AA95C593E236B6B5D8EB93AE666AB38246959EAEBEB0F28140A31DCE9DDE55337D4D4D41C3F76ECD8FBBC157D4B5D5DDD76B5B5B5C7A7C3C3B2257314DD522A95CE686E6EBEAAFC595C15B1AAD27BB3B680CAB0AC2D08133D606208DC1D59DB30BBE835F36887E7C56B1F91B6A6AC6D79EDE84513BDB762DE99E85DF3FBF2757B676D935FD3835812BBFB119401008025A2974074E9DF276B0BBEC4BC1B13CA95D34BBAEA45EAEBEBDF5B281462A59C51E5530FC712CAA9F2FD276F41DFD6D8D8B879DA1D933E0FFF2F6B5BDD2B4B9F9547D2E39FCE9831E377D75E7BEDFC357C8908D01C91B68BB2B61E331531042F86DF7D256B1BD61443ABF6C8DAE654DA3D6B9BB47AA3AC6DB85ECC39F333EF56CF2328D3FD98530600009628962BA631B9690468626E97987F23E692B9724D6F5E5757177386FC3C55B27F91B5ADD414AFF5ED175F7CF1A83FFFF9CF26522526059E93B61BB6D9669B5F0C18302026F28DE1723131EFFE83060DFAE2C891230795576C5ADDE5D063F2E998C03796678F79902AF789E17AD16B2626B88EE179E7666D2B7FC570A858D169AFB46D95B5052CA332BFD0BBD5F39853A6FB1194010080A53D92B61FA7AD396B9BA837969FFE40D6D63BE099D5B9615D5DDDFA3BEFBCF30F0A85C2B8F4F0FD695B908ECF6E6D6DAD1B3F7EFC4D53A64C31712A4B79F4D14717A64AF31DC3870FFF456D6D6DCCFD123D59DE95B63D6352E01123460CDD61871D1E9E3C79F2F4D5B87D040323A812C3915E2E9F8B25B56365A6588D290232313170046C8694CFDF5A7E1C3D68AEF30EF54C8232DD8FE14B0000F04651F99D922DE90DB061DAFE276B9BE877A58D1933A6E6E1871F3E221DFEA85CB10DCDADADADDF6B6969B1BC35AB64F4E8D17BC49C43E970BFF2A95802FB0FE9DCE963C78EBD670D6F7F4ED6B6E252047F2E4DDB806CC9CA4CFF95B54D821D439BBE94B6E7BC1B3D93E14BDD8FA00C0000AC9C75B225433D56A6F213C33D62B59A9DCAA762259DE35345E85649C99A686C6C1C515EB1E9A0AC2D78126E4CDB99E9F3F5E7D5BCEDBA595B2F9818DAF4D16CC98A4B83D3F69DAC2D50738BD4EFD90465BA1F4B620300C0CA59A9804CAA306F5F2C166312DFFF289F9A522814BE3F2E91847485F4518AE14C9F3FE49043BEDFDADA7A5CFABC7D317DC646A573A352A57B52A9543A2B9DFB7D4B4BCB8255B86D4C6C5D59EA3D823131D545047D620E9953D37648DA9E4ADBB3DE01E83AE6940100802ED0D8D8B8C9C89123CF4C87BF4E15E4EDB2B665B5C7CC9831E3902BAEB8C212D774B9071E7860F6C48913270C1B36EC7FFAF5EBF74AFADCED904EBF33ED0FA8A9A9F9C28E3BEE58BBEBAEBB4EBAEFBEFBE6ADC6ED6309EE58092A86F045EF9B91595B4F9A7BA57CCF654E99EEC7F02500005803FBEEBBEFC00D37DC3056A789258363EE9998E7E38254313E69DCB871AF4821DE2C471F7D74FF59B366D5978736ED9C57F80A8559E9F1AFD3E1D94D4D4DCFACC1ED23D0F874B60A43F8E87E0C5FEA7E0C5F020080D5D498A40AEF7FA7C3ADE3713ABE2626621D376E9CE5AD79D39D7FFEF9D1AB25E67EB9B4BEBEFE638542E184F4998CE147C7A5ED6BE9E33ABE582C9ED1DCDC7CFF6ADCFE11290C5D4F5006000056514343432C1F7C56AAF07EB07CEA81B47D335576AF973A7407E9B3F8D7B4FB6B7D7DFDCE353535DF4A9FD5D1693BB850281C9C3EBF13D2F199E56B802A129401008095545757B74D6D6D6D4C7A5A5F3EF542DA4EDC7EFBED2F1A33664C510AD1DD947BC51CD2D0D010C3EB8E2B140A5F88DE3369BF4F3A777FDA9F3978F0E0E6722F1BE04D664E1900005881BABABA0DFBF5EBF78354993D363D1C98B6B951995DB468D1192D2D2DB3A5103DC511471CB1D1FCF9F38F4E9FE59807E9ADE5D3CFA4C7E7BCFEFAEB175C75D555B3A452EF654E99EE47500600009661D4A851FD860E1DFAA572256693B4456F984B5A5B5B7FD0D2D2F29C14A2A7AAABAB1B50535313C3998E4F0F47C4B952A9343D9DBBA0B6B6F6EC4B2FBDF405A9D4B33536367E23BDA767AFECF54D4D4DE2035560F812000074A2BEBEFE93A9C27A463ADCBE7CEAC654C139BEB9B9D992C0F4782D2D2D0BD2EEC2D81A1A1AF64BFB13D2E77D54FA8C7F6BD1A2455F4FE7C6466FB071E3C64D925A3D53B158BC3DBD872BBC2EBDE7A5C2CA5CC85A21E10100A09D830E3A68975499392B1DEE593EF568AAB37CBBB9B9F98F52875EFED97F5FFAEC7F3B1D7E365BD280FFE7F8FF307EFCF8BF4BA19E57DF6F6C6C9C96BEBF365A896B9F6E6A6A7A8724ABC29B24090000209F6B618B42A1F0A35481393C3DAC49DBABE9F12983070FFE954950E94B6242EB9A9A9A9814F8A8F470DDF2E97BD2E3D3172D5A74794B4B4BAB54EA31DF6BBF49BB2357181828147E3A6EDCB8E3A5D89B4F500600803EEDD0430F5D6FE1C28527A4C36FA56DBDB42D28954A3F5F679D757E74D145174D9742F455757575436A6B6BBF920EBF96B6CDCBA7A7A4EDEC3973E6FCFAEAABAF9E2B95BAB7FAFAFA0F160A85DB9673490C631B90BEF33ED4DCDC7CBB147BF309CA0000D0278D1933A6E6E1871F3E2C1DFE386D5B944F5F962A27DF4D9593C7A510B4D977DF7D076EB8E18687A7CAFD37D3FF8FEDCAA7A7A5C7BF4CFB9F8F1B37EE25A9D47DEBFC2B318429862E6D9DF625C955853748120000D0D78C1E3D7A8FE8AE9FB65DCAA7EE8C556852E5F266A903CBAE3FD6D7D77F2AFD5F895E651F299F9B9FB68B5B5B5BCF6A6969794412753F2B1AC264E85295FF5349020000FA8ABABABAED6A6A6ACE489590FDCBA79E4ADBF79B9A9AC64A1D5879E561313129F00159DB1C4CD1CBE2AAF28A4D829BDDEFBDEA6C0893A14BDD80A00C0000BDDE61871DF696050B169C920E8F4E5BFFB4CD4C95949F0C1C38F0EC8B2EBA689E1482D573D04107BDAB582C1E970E3F9FB641E5D3B7A78AFE19C3870FBF72CC983145A954FD7AFF72863019BA54ED3747120000D05BD5D5D50DA8A9A9F97A3AFC7EA150880AC9A25431F94DAA44FE674B4BCB5429045DF67F6DD37EFDFA7D2DFDFF8A898137299F7E2CFDBF3B7BE0C081BF15FCACAE650D613274A9FA04650000E8951A1B1B47A70AE2A9E970DBF2A9EB5A5B5B8F6F6969992C7560EDA8ABAB5BA7B6B6362AFFD17B6658F9740440CF2B140AE78D1B37EE15A9F4E6EB6408532C6B5E6BE852F509CA0000D01B2B1F67A5C30F974F4D8C556352657082D4813747AC6EF6C8238F7C2655FA63DE99DDCAA75F4FDB6F5B5B5BCF696969794C2ABDB975FF4E863019BAD41DDE18490000406FD0D0D010958BFF4E5B63F9D44B8542E1C4458B165D982A80AD5208AA63F4E8D1FF96FE2F9E90B64F96EBA0ADA552E9CAF4F88CA6A6A63BA4D09BF61DB9D410264397BA07411900007AB4830F3E788362B1F8BD54C98BE11203B3B6D6F8B3E6CE9D7BFA55575D354B0A41F7505F5F3F3CEDBE5928140E2DFF5F0D37A5EDCCA6A6A6AB333D36D676FA2F3584C9D0A5EE41500600801E69D4A851FD860E1DFA8574F85F69DBB45CA1BB346D3F4815BC67A410744F757575436B6B6B8F4D875F4EDBC6E5D30FC7B0C3E9D3A75F72EDB5D7CE974A6BA7FEDFD8D838B7542AC52A5933D2F7E4C6994058F5DF144900004077114B57CF9F3FFFF0E6E6E69F2EEFBA830E3AE83F8AC5E299E970785EA82D14FE2F55348E4F958CBBA522F40C871E7AE87A0B162CF842FAFF1BBDDCDE513EFD52DACEADA9A9F9E5D8B1635F934A5DABBEBEFEAE94DEBBA6EFCB9BD2F7ECBF4991EA13940100FA945410EDFFE4934F7E7DF6ECD987CD9933E75DA94230306DCA446BA87FFFFE8BFAF5EB377DC08001FF48697BEA9E7BEE79CFAADEE3539FFAD4E075D75DF7EFE9F07D4D4D4D9DBE278D8D8D3BA5DD59E97DDCBB7CEA5F69FB4EBAFE0AEF02F44CD1EB6DF3CD373FB050287C2B3D7C6FF9F49CF4F8D7E9FFFA39E9FFF714794AD798356B5676C71D77641FF8C007B2C18307F7EA3CA5A750000100FA8C679F7DF6FFBDF4D24B67A402DE7A43870ECD860C19920D1A34284B853E89B3865225249B376F5E366DDAB4EC85175E58545B5B7B773A77C85E7BEDF5F8CA3CBFAEAE6E402A80FFB95DB0256B1F98290F77F8513A3C226DB5699B962A6C3F4C958AF3CE3FFFFC85DE01E81D1A1A1AF64ABB987C76DFF2A94569BB3C7D379CDEDCDC7CAF3C459ED2DBFE56411900A0D74B85F99AA79E7AAA79CA942907BEED6D6FCBB6D8628BACA6A646C2AC25C562317BFEF9E7B394E63177C181A9107DEDF2AE8FA5731F7EF8E1B1E9B0BEFDF908CAECBFFFFEEBAEB7DE7A51418B6575D78FB27ABAE7FFA402FA7F19DA00BDD7C1071FBC63FA2E3921FD7F6F480F2B518E1BD277F759E9FFFE35F214794A6F51EB2D06007ABBCF7FFEF3E35361EEC0112346649B6EBA69CC3F2251D6A248DF0D36D820DB68A38DFA4F9D3AF5D3871D76D83F2FBEF8E2C79675FDD0A143CFCDDA2DD35A3172E4C83103060C383C1D1E50AE94FDA1B5B5F533E3C78F1FF7E0830FCE93D2D07BA5FFE32F4F9C38F1CAF43DF0DBAC6D32DA11691B9E2AE507A77307EEB8E38E73870F1FFED0E4C993DFF4E5EEE529DD3B4FE9717F9FB71800E8CDA27BF9638F3DF63F51788E425D47AFCF7C369BFAD8846CDE8CA7F3C783367C7BB6E93BF7C9D6D9602B89D70566CE9C993DF0C003D3D3E1AE9D753B6F68683831ED7EB882DBC4E4BDDF6C6A6ABA498A42DF74F0C1076F502C16BF582A956252E02DCBA79F8F3967D2F9F35B5A5A66C853E4293D919E320040AF151330A6C2F3F59B6FBEF98068CDEC68DEAC17B267EEF975B660EE2BE9DA62BE2D7CFDB56CD68BF767EB6DB25DD66FE06089B886060E1C18EFC39C1933666C7FF1C51737B7FF594343C317D3EEEC15DDA3A9A969AB8913273E2535A1EF7AF0C107E7A7EF81DB3EFCE10FFF7CFEFCF931C1F7B0B4BDB35028EC535353F3951123466CB2CB2EBB4C4ED7CD5C95FBC68A6FF7DF7FFFEBF2949E9FA7F45482320040AF75F8E1877FF3D5575FDD6FFBEDB7EFB47BF9CB8F5E9317A2DF58F02E66C545F3B2C19B8F94885D60830D3658F7B9E79EDBA4B1B1F1AF975E7A692C771B0199CFA4DDEFD2B6C28918468E1C7972AA8C9D2225817BEEB9A798BE0F1E48DBAF76DC71C73BD277FBD0747A78DA7F3855D68F49DF17EF4AE71F4F3F7F6965EE377CF8F03BD376D9E4C993E7CA537A6E9ED293998D0800E8B566CF9E7DF8669B6DB6CC09185F9FF1CC329FBBBC9FB18A05CE94FE9B6CB2C9CB69FFB9789C0AD2FF9E2A4FE3320D84C01A18376EDC7569DB276B5B463BBE5322527268FA7EB9BFBEBEFEBAD1A347EFBDBCE7373434C45C35236B6B6B6FA8ABABDB549ED233F3941EFFF7784B0180DE6ACE9C39C36289D265291617AED6CF5875A922B37E0C334815A59D8BC5E21FD3F1C055797EB9F204F0064D4D4DFF4CDB41ADADADC3628E99746A76FA8EF978AAB44F48DF39FF4CDF1F078D1A35AADF329EBED28119794AF7CB537AC3DF22280300F45A0B162C18B4CE3AEB48886E60DD75D71D3273E6CC6D5221FAFAB46DB8B2CF4B15AC98BCF3BA6CC59301037D5C4B4BCBD3CDCDCDC7D5D4D4BC3D7D777C2F9D7A317DDFEC92F6BF1F3A74E8E38D8D8DDFA8ABAB5B3FAE6D17E8AD8C435A6160469ED2BDF294B47B7B6FF85BFA793B0180DE6AE1C28585FEFDFB2FE78AC26AFE8C553563C68CF5AFBCF2CAF597774DAA44C58A1AB7A64AD47D697F776B6BEB3D51C9927AC0AA183B76EC6B69F793BABABA9FD6D6D61E9ABE53BE99BE5F7648DBD935353527373434FCEF329E5A09CCEC99BE7BA6CA53BAAF010306447ED22B226482320040AF950AE09D4EC6B8B850B7CEC6D9EB0B662FF367749DCB2FBF3C2A34EDDF1B011860AD4ADF290BD2EE37B1353636EE9FBE778E4FDF39FF9E1E7F67394F8BC0CCDFEBEAEAF6E8189891A7741FE5F7A157CC4B26280300F45943DEB17BF6C2A4CBB362EB82A5CED7F65F277BCBD6FF2E81BA50434343F6E28B2F6653A64C39BAB5B5F52F0230C09B69DCB87157A7DDD5F5F5F5EF4F15FA3B5770F988650566E429743573CA00007DD6E0CD4664EB6DF2EE379C5F77C8B06CFD4DB797405D68E38D37CEF6DA6BAF9890F3020119A05A5622205331A25FBF7E37AECCAA4CF214D684A00C00D077954A59EB82B96F389D9F2B59EC07A06F6711A51D6A6B6BFFB1D28119790AAB41500600E89316CC7D357BFA9E5F67735F7BE20D3F8B73F1B3B806803E6D786D6DEDAD2B0ACCC853585D82320040DF522A65AF3D7D6B36E58E5F6473A73FB5CCCBE267714D5CAB8513A0E7ABAFAFFF41A150F87D3ABC2D6D5357E1A9EFACADADFDD7AC59B3E429743913FD02007D46B452BE38F90FCB2D38B7576C5D98BDF4E835D9AC9727654377F86C3660DDB74844801EAAB9B9F9C7ED1F1F7AE8A1EB158BC56D172D5AB46D4D4DCD36715C2814B64D3FAA6C03DB5DBEE15D77DD95EDB7DF7EF214BA94A00C00D067442B65148A5755A585F3DD7B9C2C11017A894B2EB9644EDA3D58DEDEA0AEAE6ECBDADADA6D4BA5D2470A85C22EEF7FFFFBEBE5297435411900A0CF589DC273573C17809EA7A5A5E5B9B48BEDA6787CD45147D5CB53E86A823200409FB1FDDE3F920800C853E8364CF40B00000050058232000000005520280300000050058232000000005520280300000050058232000000005520280300000050058232000000005520280300F4694F3EF964F6CF7FFE73F1E39B6FBE391B3F7EFCE2C78B162D5AEAFAC71E7B2C9B33674E7E3C73E6CC4EEF79D75D772DF3FC95575EB9D4B95B6FBD353BFBECB3973A77E9A597667FFDEB5F3BDD7EF5AB5F6593264D5A7CEDF4E9D397FBF73DF4D043D94B2FBDD4E9CF8AC5627EBF850B172EF71E975C724976E38D372E75EEC4134FCC162C58E00304D08BF2948A3FFEF18F2BFD1D3F75EAD4ECDA6BAF5DE93492A72CAD9FFF3600405FB6F5D65B675FF9CA57B2A38E3A2AEBD7AF5F5E58DC77DF7DF3C26A38E79C73F202EE76DB6D973FDE78E38DB3BDF7DE3BBBE1861BB2EF7EF7BBD9273EF1896CD0A041D92BAFBC9217863FF5A94F650F3EF860B6F9E69B676F7FFBDBB3C9932767575F7D75B6E5965B6603060CC8468E1C99FDEC673FCBDEF9CE7766D3A64DCB9FFB918F7C249B3F7F7E3670E0C0FC352EBFFCF2EC8A2BAEE8F4F7FDF9CF7F9ECD983163A982F38B2FBE98BDE73DEFE9F4FA08C86CB5D556F9EFD3514D4D4DFE37B7B4B464071D74507E2E0AC50F3CF040B6EBAEBB2EAE40FCFAD7BFCEBEF6B5AFE56972DF7DF765BBEDB65BF6F2CB2F677FF9CB5FF2E7DF71C71DD9C9279F9C150A051F28409ED283F3948AF8EEFFCD6F7E937DF18B5FCC5E78E1856CC28409D9902143B275D75D37CF772288F2D6B7BE35BF76D34D37CDAEB9E69AECF5D75FCF76DA69A73C28B5E1861BE63FBBFDF6DBB30F7CE003D9C73FFE71798AA00C00C01B45A1EF3FFFF33FF356BE28F01E77DC717950220A863BECB043F6831FFC6071E139BCE52D6FC94E3DF5D4ECFEFBEFCF4AA552B6C71E7BE43D4EAEBBEEBAECE8A38FCE860F1F9E174A870E1D9A5FDFDADA9AB77E7EE73BDF597C8FF3CE3B2FFBF4A73F9DBDE31DEFE8F4779A376FDEE2027C4751388E827145FFFEFDB31D77DC312F84AFB7DE7A4B5D3B66CC98ECD8638F5D7C7DF48889004C3C8E804C78EDB5D7F2F395D78B00CF134F3C91FF1D71BF283C47A5220ADCEF7DEF7BF3BF7FD6AC59D9F9E79F9F179ABFFEF5AFE7150E007A7E9E12C197B83E023E11F8893C20822EAFBEFA6A9ECFBCEB5DEFCA9A9A9A1607649E7BEEB93CA0F4CD6F7E33FFBD870D1B9607882A1E79E4913C9FAA90A7BC91E14B00409FD6DCDC9C1D79E491D961871D96BDEF7DEFCB0B94D1A2F8ECB3CF661B6CB0415E08AD88D6BB285C8F1A352A6F118CC0466C871C7248B6CE3AEBE4018D0B2EB8202F2057D4D6D66653A64CC90BC4D1853C5A38A370DEDEF3CF3FBFD4E3C18307671FFCE007F37BC6EB44A1365EFB4F7FFA53DECDBD7D81B77D4520BAA1CF9D3B377F1C7FC33DF7DC93B79AB60FE0448F988F7EF4A3D9C73EF6B17C8BD6D7F89B2B8FA3301CC19C08C8444BEB881123F202FB9E7BEE993F3F8643C5DF397BF6ECEC339FF94C5E41E8D87D1E409ED233F3947DF6D9279B387162F6A10F7D28EFC1F3873FFC21EFAD53798DE8BD73E8A1872EBE3EEE77E79D7766DB6CB34DFEB72E8F3CF8AE529E0000189349444154A5737ACA00007D5AB4D24521340A8751D08D02EE0F7FF8C3BCC5F15BDFFA56DE5218DDAEA38B780CE989804674058F2ED8B145013A5A1437DA68A3C5818FB7BDED6D8BEF1F3F8F026F043CAEBAEAAABCE0193D536EB9E596BC601CDDC0DFFDEE77E73F8F16D18A28BC47E17BFBEDB7CF7FAF68711D3D7A745E808F426BC7427874296F6C6CCC5B4FA3C5F2DC73CFCD2B0271BEA3F8F9FEFBEF9FFFDE51F8AE14E0A395F6C73FFE71F68F7FFC230FF2C4CFA3D01F7F43FCADF19A51F00ED1AA1B5DDEA39535BAB84745235A5301E4293D3B4F79FFFBDF9FDD7BEFBDF99C65BFF8C52FB2A79F7E7AF1CF9E7AEAA9ECE0830F5E2A4854E979B922F294CEE9290300F469319E3F7A859C79E699F96487319E3FBA6947813486054550E35FFFFAD7E2C2E745175D94DD7DF7DD79A1355A1863CC7E149E634C7C6C51D08EE04645143CDB77DD8EC26814A03FFBD9CFE685E628844677EDF685E74A0137BA73474F97787E1466E3385A2DE3B8333186FFA4934ECAFEEDDFFE2DFBEA57BFBAB850DF51FC7ED1321BAF1FBF6F74218FE3A8284441BD328E3F86367DF2939FCC0BC751308FBFB7B245CBE6B871E3F2B96CA255534006E8EE1A1B1B8F4FDB87E4299DE729F17B464F9F188614222F88004E0C697AE6996716FF7DED27985F95795FE429823200006F10DDCBA31532C6EB47EF91288CC6C4B831E6FFA69B6ECABEFCE52F679FFBDCE716176AA305F2D1471FCD0BCD51508EF35198BCFEFAEBF3026FFB55374274D78E56C6CA848651788EEEDEED8715750C98540AE0D182182D9FD19325BABEC7F1CE3BEFBC5401BDA39887200AE4A79F7E7AF6F8E38F777ACDCA16A2A38B79A449E53931D4A9B24581B9926E51B100E8EED277E79969BBB5A1A1617A6363E36FD74680A627E729D1CB278615456F981081FEE88113019F4A6F9D0832C5E4C0AB139491A708CA0000742ABA5047EB65148A6372C6181F1FC7D17AD8BE70182D853FFDE94FF356BD68ADACAC2E71FCF1C7E7AB4B441024265B8CC9192BA2701DAD82D18279CC31C7E473B674B6125245B44A46013E56D38816D28E85EBE8D51273157426861DC5EF7CC2092764A79D765A5E90EE4CA515745544FA4461B9B245E1390AEF003DD086E9FBF4F36B2B40D393F394F83DE2399579C66238D1669B6DB62480505393FFDE9565BC97D748204F1194010058295108ADB4F6C572A395951F2AAB5D5444A1310AA431374014B4633C7EB4625E78E185F93D428CE76F3F4961B4445626768C6EDF31BF40AA042CF3778996CF78FD982720BA71C7A48851208E091AFFF6B7BFE5F301ACBFFEFA6F78DE6DB7DD9617F8EBEBEBF3C7B182C75E7BED95AFA2D1D9DFDBD1934F3E99CF2DB0ACB90162A9D518F35FD9A2FB7DACA2114B6E0308D0F48E3CA5E37C65EDF384F85B6205BF58A27B4D7BB3C8539630D12F00D0E7EDBEFBEE8B977FFEF0873F9C8FFD8F0045B42EC6F2D0DB6EBBEDE26B63CCFDD65B6F9DB724C64A4651788E4909E37C14C2BFF4A52FE5F7887B4677EC088A5456B68896C5575E79259F3B2044B7F38EAD8C51D88DE554A365357E162B2AC54490D1C53CBAA8C7EB76D632195DE63BCE35132DB031BF40B46AC632A61531E163A5E01D133CC6FD62758EEF7FFFFBCB2CDC474B6CB49AB61773112CAF8516A0270668D2FEF3E9BB7046FA4EFF433ABE60DCB871B7F5953C25F284CAEA4EA1FD4A4EB1A4F75D77DD950F8FAD0C978A9E979DE5492FBFFC721E6889797562496F798AA00C0040A71E7EF8E1BCF52F5AE7A2901A85DF10FB1B6FBC31EFD6FDBFFFFBBF79EB6288F1F451C83CE28823F2826B0C158AA0C7B1C71E9BAF4811AD8A51A0DE64934DF2C2702CF15929B8464BE837BEF18DC5AFDDBEBB7A88026C74558F8278B46246A02456ED68FFF32850577EC7105DC0637E81F85D3B3375EAD4BC45B37D5026BAB15744213E7E8FF87D6392C565A9CC61D05E4CDAB8B2A295365A435345E7649F3AA02705681A1B1BE7A5E389B366CDEAF5794A5CBBDF7EFB2D0E98CC9D3B77F1F9C84B62B9EEF62288B3C5165BBC211DA2374ECC4D13F3E5440F9DAECE537A9382FF6B00406F3561C28452AC44B4A2604167C3812AA205B0E36A172B6BC182058B7BAF54BAB32FAFCB77BCD68A264DAC2C23DA55A2921105F51589D6D8A814ACAEBFFCE52FD9D8B1637D28811E2B7AB49C72CA297D324F895E39D1FBA7ABAC699E12FEEFFFFE2F961FEFF1310D3D6500803E6D7985E71005DA352D3CE785AE54E88D6EE71D0BD0B1C246C75533A29535E6868961466F28BC950BCFBFFCE52FB3238F3C325F3E7559A21B7C741B8FA14D215A3C2FBEF8E27CF58F8A9509C884352D3CC71C08D1627AF7DD778FF1A903AA6465BF7F5AD3D6FECB7A46DA1EDC6DB7DD76EFAB794A04647EF7BBDF65BBEEBA6BDECB27E6AAD965975DF21E3B3124AB32A46A65AD699ED29B08CA0000ACA168198DC917434C5E185DCFEFB9E79EEC80030EC8276D7CFBDBDF9E8FDD8FF3279FBCF4E89DDFFFFEF7D9B9E79EBBD4B9DFFEF6B7D917BEF085A5CE4537F0980CB2228229D1953D0AC8215A3B63EC7FBC56C573CF3D97AFAC5111439D62E58EE8221E134446902496637D33444525BAF29F70C209A7F8C400D5D0D0D03066593F2B140A0B4BA552255A12918EA7D3B9CBD2FEB2CA9C32471D7554E9CDF83DBB6B9E12C39D626E9B10C3AC6292E108E21C7EF8E179AF95BEB694755711940100584311EC8856C4A6A6A6EC939FFC64DE3325E64F8931F93147402530124B56771485D88E2B24C518FD8E5DCE2FB9E492BC55B2D2521AC38E22C05219931FF78E39034E3CF1C42505BD7EFDF282F50D37DC90F79289427C3C27266A8C6EED1194D972CB2DBBB44B3A404FD13E1053DEBF2110234F3931FF590487621F819B58AD2F26E48D9F876DB6D9267FDD95192EC51B09CA0000ACA198883196158D4274F44019326448DED53C0AB70F3DF4D072C7EBC792A8D162D95EAC70D151ACBA1185F38A9FFCE427D9C89123F355344204572A1347C68A4B37DF7C73BE6DB4D146D9B061C3F2891B4F3BEDB4BC50BFDB6EBBE52B811C73CC31DE3CA04F29258572E4A03B0562BA739E12C196E8BD134395A2D7630C558A248C15A22ABD6362D2F89854F8820B2EE874E25F964D500600600D452B64B42046EB64B462462B62B43E565A35633E95D07185A4E8523E7CF8F0BC60DB5EB45E46E1F68A2BAE58DCEA18CBA2468B6565E2E218C3FFD6B7BE35EFFD12AB58C4A489950274ACBE114198E85E1E3D65468D1A95F78A89D6CCCF7EF6B3D949279D94775B5FD124C800BD4D3920D3ED0231DD394F89B968E23882439177CC9F3F3FFFFD62FE9A08C0C4EFFBE31FFF38BF9F80CCAA139401005843D18A78CB2DB7642FBFFC72DE4B257AA64481B563AB66145CDB8BAEE2D12D3DE65A89D589A2101C4BA0869890B76337F0B87F6599D2E8CA1E63FBE3B5E2F8D65B6F5DEADAC71E7B2C9B3E7D7ADEAAF99DEF7C271FBE142DAFA79E7A6A5ED0DF6BAFBD16CF2D03D017A4EFD413D2EED6EE1888E9EE794A046A623E9B185AF595AF7C259F8366F4E8D1F9CFC68C1993F79059D124C7744E500600604D0B54A9801C3D5362858B280C47A1367AA4B46FD5DC6CB3CDF22048C7E755C4048AD15D7C79A27B7865BC7F5C1FC3931E7FFCF1BC85B3A3988031265F7CCF7BDE937DFCE31FCF5B40E37739E79C73B2D34F3F3DEFB61EC19A08CE00F405E3C68D3B4B9EB2EA794ACC4B56199674E08107BE61D5BEA143870AC8ACC9FB2D090000BA4E14726FBBEDB6EC431FFA50DE53257AA5440B679C8FFDB6DB6EBBF8DAF6AD9CF7DE7B6FF699CF7C66F1E31876D459417DCF3DF7CC8FA3C5325E23EE174B8BB66FD58CD789C27374430F11908902F735D75C939D71C6197937F3AF7EF5AB023200F29415E62971CD1E7BEC91F788599EE8D513C3675935823200006B2826409C3061425E088ED6C2E82E7EDF7DF7E593354677F2980F209615ED58588D0977B7DA6AAB6CEAD4A9F9F0A268F5BCF3CE3BF339608E3BEEB837BC4EB47AC6B2A321EE19D73EFBECB3F9D2D75B6FBDF5E2EBE25EF5F5F5D98F7EF4A3FC714CEA1BDDD4BFFEF5AFE73D65E2B8B2EC2900F294E5E529A1B35595E2DA182A5B71D34D37E53D7CACC0B46A04650000D650F448892EE5175E78613668D0A0FC5C65F2C4E87EBED34E3B65DB6DB75DDE1219AD95952EE6D153250AD8DFFBDEF7F2214551C88EE7C7B0A328884777F1F6CB55B76FA5BCFBEEBBB30F7EF083F92A181DC552A52156CA882D86304521FFE4934FCEF6DE7BEFECD8638FCD0BE8FBECB3CF52AB6F00204FE928023CCF3FFF7C1ED08FD78A7C250246975D7659F68D6F7C23EF8119BD76E2778B5E36711F569EA00C00C01A8AA5452BAD90D17DFB4F7FFA537E2EC46A15D192184B943EF3CC33F92489EF7EF7BBB33BEEB8237BE49147F2C2F7CF7EF6B37C758B1005E22BAFBC329F9077D2A44979CB6767A2201E9341AE48149EAFBBEEBA6CDAB469D977BFFBDD6C9D75D6C9CFC7FDE3B1A00C803C6579794ABCC65D77DD95078A62F5A54A1E72C00107E4C7471D7554F6AB5FFD2ACF5F3A0BEAB07CFA150100BDD68409134ADD71D9E728F8C6BC009500C9EA882549070E1CB8C26B6219D5BCD0D70DBA934737F97DF6D947F91390A7F4C03C255EA73B0D4DEA2D798A9E3200006FB228D4AE49E139ACA8F0BCB2D700204F5999FCC25C316B478D240000000078F309CA000000005481A00C000000401508CA000000005481A00C000000401508CA000000005481A00C000000401508CA000000005481A00C000000401508CA000000005481A00C000000401508CA000000005481A00C000000401508CA000000005481A00C000000401508CA000000005481A00C00D06B150A85AC542A49886E20BD0FB3D2AE554A00F214E4294B08CA0000BD56BF7EFD162D5CB850427403F3E7CF7F39ED5E9212803C0579CA12823200406F2E404F7FFDF5D7254437307BF6EC27D2EE692901C85390A72C21280300F45A03060CF8C7B469D3244437F0ECB3CFCE29954A13A404204F419EB284A00C00D06BCD9E3DFBD4975E7A6951B15894185594D2FF89993367BE2FED2F971A803C0579CA1282320040AFB5E79E7BDE53535373F7F3CF3F2F31AA68D2A44937A7DD5D9FF8C427EE971A803C0579CA1282320040AFB660C182439E7AEAA9393367CE941855F0F2CB2FFFFEB5D75EFB78AAC87C5B6A00F214E4294BABF5B60200BDD9C5175FFCDAE1871F7EDFD4A9533FBDE1861B0E183870A04479130BCF0F3FFCF09EA9F07CE45E7BED75A71401E429C8539626280300F47ABFFBDDEFFE75E8A187DE9B0A74FB974AA5391B6CB0C1BA854241C2AC2531DE7FE2C489573FFBECB31F4FE9FCF9BDF7DEFB3AA902C85390A7BC914F0E00D0675C7FFDF5C35201FACC54A8FBE8A69B6EFAC2D0A143371C3468D090810307AE2775D6C8EC79F3E64D9D3367CEA3A9D03C77C68C19BBA5737744F7F2BDF6DAEB71C903C853BAC997F5ECD9D9CD37DF9CEDBEFBEED9FAEBAF2F4FE906046500803EE7BAEBAEDB3915EE3E970AD21F4B05EA2DD37E2BA9B266523A3E9BD2F1B9B4FF6BAC8861525F409ED2FDDC7FFFFDD9DD77DF9DEDBAEBAED9CE3BEF2C4FE9060465000000A00F6868683839EDC6C4D6D4D4748A14A93EAB2F010000005481A00C000000401508CA000000005481A00C000000401508CA000000005481A00C000000401508CA000000005481A00C000000401508CA000000005481A00C000000401508CA000000005481A00C000000401508CA000000005481A00C000000401508CA000000005481A00C000000401508CA000000005481A00C000000401508CA000000005481A00C000000401508CA000000005481A00C000000401508CA000000005481A00C000000401508CA000000005481A00C000000401508CA000000005481A00C000000401508CA000000005481A00C000000401508CA000000005481A00C000000401508CA000000005481A00C000000401508CA000000005481A00C000000401508CA000000005481A00C000000401508CA000000005481A00C000000401508CA000000005481A00C000000401508CA000000005481A00C000000401508CA000000005481A00C000000401508CA000000005481A00C000000401508CA000000005481A00C000000401508CA000000005481A00C000000401508CA000000005481A00C000000401508CA000000005481A00C000000401508CA000000005481A00C000000401508CA000000005481A00C0000004015142401000000F42E8D8D8DDF28954A67AFECF54D4D4DE20355A0A70C000000F432C562F1F695BD546A558FA00C000000F432CDCDCD77140A855757E2D2880B3C2DC5AA4350060000007A9F52D2B4826B5AE39F42A17099E4AA0E4119000000E8854AA5D2A52BB86441FC532C165BA4567508CA000000402FB4124398D649DBD3719DD4AA0E4119000000E89D963784A9FDD0A592A4AA0E4119000000E8A5963384C9D0A56E4050060000007AA9E50C613274A91B109401000080DEEB0D43980A8542B1BC3774A9CA0465000000A017EB6408533E9F8CA14BD5272803000000BD58C7214CA552A97F66E852B7202803000000BD5B6743980C5DEA060465000000A097EB3884C9D0A5EE4150060000007AB9F250A5B9E587330C5DEA1E0A92000000007A9FBABABA2D6B6B6BF72F954AFF51281486A6FDCE693F20EDE7A7FD0369FF62DA5FD3DADA7A754B4BCB7352ECCD272803000000BDC8E8D1A3F7A8A9A939251D7E74159E7653B1583C79FCF8F17F97826F1E4119000000E805EAEBEB87150A855FA4C34FACC16DAE2B954A5F6B6E6E7E5C8AAE7D8232000000D0C38D1E3D7AEFDADADACB4AA5D2869573FDFBF7CF76D861876CB7DD76CBB6DE7AEB6CA38D36CA860C19924D9B362D9B3E7D7A3665CA94ECCE3BEFCC264F9E9C2D5CB8B0FDED5E2B168BA3C78F1FFF3729BB7609CA000000400FD6D0D07064A15038BF542AD5C6E3DADADA6CD4A851D981071E98076256240234975D765976E38D3766ADADAD95D38BD2F6A5A6A6A6DF4AE1B54750060000007AA8720F99EB2A01994D36D9243BFEF8E3F39E31AB2A7ACE9C75D659D92BAFBC5239B5A8582CEEABC7CCDA532B09000000A0E7A9ABAB7B67FFFEFD27944AA575E3F1B061C3B2934E3A29DB7CF3CD57EB7ED1AB66F7DD77CF1E7AE8A1ECB5D75E8B53358542E193C3870FFFC3E4C993A749F1AE572309000000A0E7A9ADAD3DB7582CE6E393A287CCB7BFFDED6C830D3658A37BC6F3E33E71BFB221F13A527BED1094010000801E2696BD4EBB7DE338E69089214B6B1A90A988FBC4FDE2BE65FB965F8F2E2628030000003DAD325F53F35F95E398D47775E690599EB85FDCB7B3D7A30BDF4749000000003D475D5DDD9669F791388E65AF6395A5B521EE1BF72FFB48F975E9428232000000D0932AF235359FCACAAB298F183162A596BD5E1D71DFB87F59A1FCBA74E57B2909000000A0E728140AFB548E77DD75D7B5FA5AEDEFDFFE75E91A8232000000D0B3BCAD72B0EDB6DBAED517EA70FFB749FAAE2528030000003DCB169583B535746919F7DF42D2772D4119000000E859DE5239183C78F05A7DA10EF77F8BA4EF5A8232000000D0B3BC5A3998356BD65A7DA10EF77F55D2772D4119000000E8599EAF1C4C9F3E7DADBE5087FB3F2FE9BB96A00C000000F42CCF540E9E78E289B5FA421DEEFF8CA4EF5A8232000000D083944AA50995E3BBEFBE7BADBE56FBFBB77F5DBA86A00C000000F420C562F1AAB42BC5F1A44993D6DA10A6B8EFC489134BE587A5F2EBD2850465000000A007696969792EED6E89E3850B1766975D76D95A799DB8EFA2458B0AE587B7945F972E2428030000003D4CB1583CA9727CE38D376653A64CE9D2FBC7FDFEFEF7BF973A7B3DBA8EA00C000000F430E3C78FFF7BDA5D1BC7ADADADD959679D95CD9C39B34BEE1DF739F3CC338B49A597CCB5E5D7A38B09CA000000400FD4DADA7A6CDA4D8BE3575E79253BFDF4D3D7383013CF3FEDB4D34AAFBEFA6A255E30ADFC3AAC05B592000000007A9EC993274FDB61871DEE2D140A07A58735AFBDF65A76FBEDB767E95CB6D1461BADF2FD62C8D20F7FF8C3E2F3CF3F5F09C82C2A168B9F6E6969B95B6AAF1D8232000000D0434D9A34E989912347C604BCFBA5AD66EEDCB9F91C33D3A64DCBB6DD76DB6CD0A0412BBC47ACB274E9A59766BFF9CD6F4AE9F98B033269FB527373F3E55279ED294802000000E8D9468F1EBD774D4DCDF874B871E55CFFFEFDF35E33BBEDB65BB6F5D65BE7BD67860C1992076C2210133D63EEBCF3CE08EC94DAADB2145E2B168BA3C78F1FFF3729BB7609CA000000402F505F5F3FAC5028FC221D7E620D6E735DA954FA5A7373F3E35274ED1394010000805E64F4E8D17BD4D4D49C920E3FBA0A4FBBA9582C9E6C95A53797A00C000000F4427575755BD6D6D6EE5F2A95FEA350280C4DA7DE9AB6ADD2F66CDA5E48E75F4CE7AF696D6DBDBAA5A5E539290600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000406FF5FF017C8C0DFB339058450000000049454E44AE426082, NULL); +REPLACE INTO `act_re_model` (`ID_`, `REV_`, `NAME_`, `KEY_`, `CATEGORY_`, `CREATE_TIME_`, `LAST_UPDATE_TIME_`, `VERSION_`, `META_INFO_`, `DEPLOYMENT_ID_`, `EDITOR_SOURCE_VALUE_ID_`, `EDITOR_SOURCE_EXTRA_VALUE_ID_`, `TENANT_ID_`) VALUES ('192501', 36, '能力申请', 'abilityprocess_v3', NULL, '2022-08-17 09:21:47.795', NOW(), 1, '{\"name\":\"能力申请\",\"description\":\"能力申请 v3\",\"revision\":1}', NULL, '192502', '192503', ''); +SET FOREIGN_KEY_CHECKS = 0; \ No newline at end of file From 6a306a8a13406842745b061d0bede0893fb9644d Mon Sep 17 00:00:00 2001 From: wangliwen Date: Thu, 25 Aug 2022 10:00:13 +0800 Subject: [PATCH 06/15] =?UTF-8?q?=E8=B0=83=E6=95=B4=E8=B7=A8=E5=8C=BA?= =?UTF-8?q?=E5=88=A4=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../io/renren/common/controller/AbilityCenterControllerV3.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/renren-admin/src/main/java/io/renren/common/controller/AbilityCenterControllerV3.java b/renren-admin/src/main/java/io/renren/common/controller/AbilityCenterControllerV3.java index 1c403257..6a484c4a 100644 --- a/renren-admin/src/main/java/io/renren/common/controller/AbilityCenterControllerV3.java +++ b/renren-admin/src/main/java/io/renren/common/controller/AbilityCenterControllerV3.java @@ -288,7 +288,8 @@ public class AbilityCenterControllerV3 { if (cityApply && resourceDeptType == 2) { cityApplyCity = Boolean.TRUE; // 市区申请市区 } - if (!cityApply && (user.getDeptId() != sysDeptDTO.getId())) { // 非市申请且发起人与资源所属部门不一致 + SysDeptDTO userDept = sysDeptService.get(user.getDeptId()); + if (!cityApply && (userDept.getDistrict() != sysDeptDTO.getDistrict())) { // 非市申请且发起人与资源所属区县不一致 crossRegion = Boolean.TRUE; // 跨区 } } From a87bb573e93c2c8476db5b21a37b4068b0bd99fc Mon Sep 17 00:00:00 2001 From: wangliwen Date: Thu, 25 Aug 2022 13:31:30 +0800 Subject: [PATCH 07/15] ... --- .../modules/resource/service/impl/ResourceServiceImpl.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/renren-admin/src/main/java/io/renren/modules/resource/service/impl/ResourceServiceImpl.java b/renren-admin/src/main/java/io/renren/modules/resource/service/impl/ResourceServiceImpl.java index 09970282..42aaabb5 100644 --- a/renren-admin/src/main/java/io/renren/modules/resource/service/impl/ResourceServiceImpl.java +++ b/renren-admin/src/main/java/io/renren/modules/resource/service/impl/ResourceServiceImpl.java @@ -1867,6 +1867,10 @@ public class ResourceServiceImpl extends CrudServiceImpl Date: Thu, 25 Aug 2022 14:00:11 +0800 Subject: [PATCH 08/15] ... --- .../gateway/controller/MonitorController.java | 95 +++++++++---------- 1 file changed, 44 insertions(+), 51 deletions(-) diff --git a/renren-admin/src/main/java/io/renren/modules/gateway/controller/MonitorController.java b/renren-admin/src/main/java/io/renren/modules/gateway/controller/MonitorController.java index a136cc11..2df9b4b6 100644 --- a/renren-admin/src/main/java/io/renren/modules/gateway/controller/MonitorController.java +++ b/renren-admin/src/main/java/io/renren/modules/gateway/controller/MonitorController.java @@ -1,8 +1,6 @@ package io.renren.modules.gateway.controller; -import cn.hutool.core.net.URLEncoder; -import cn.hutool.core.util.URLUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import io.renren.modules.gateway.service.MonitorServiceV2; @@ -15,19 +13,16 @@ import io.renren.modules.sys.dao.SysDeptDao; import io.renren.modules.sys.entity.SysDeptEntity; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; -import lombok.extern.log4j.Log4j; import lombok.extern.log4j.Log4j2; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; -import org.springframework.http.*; -import org.springframework.http.converter.ByteArrayHttpMessageConverter; -import org.springframework.stereotype.Controller; +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpMethod; +import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import org.springframework.web.client.HttpMessageConverterExtractor; -import org.springframework.web.client.RequestCallback; import org.springframework.web.client.RestTemplate; import javax.servlet.ServletOutputStream; @@ -66,14 +61,14 @@ public class MonitorController { @Autowired private MonitorServiceV2 monitorServiceV2; -// @RequestMapping("/metrics/**") + // @RequestMapping("/metrics/**") void forward(HttpServletRequest request, HttpServletResponse response) throws IOException { //类似nginx匹配前缀 String location = "/juapi"; String requestURI = request.getRequestURI(); - requestURI = requestURI.replace( context_path,""); - String url = gatewayDomain + location + requestURI ; + requestURI = requestURI.replace(context_path, ""); + String url = gatewayDomain + location + requestURI; if (StringUtils.isNotBlank(request.getQueryString())) { url = url + "?" + request.getQueryString(); } @@ -81,7 +76,7 @@ public class MonitorController { HttpHeaders headers = new HttpHeaders(); Enumeration headerNames = request.getHeaderNames(); - while (headerNames.hasMoreElements()){ + while (headerNames.hasMoreElements()) { String element = headerNames.nextElement(); headers.add(element, request.getHeader(element)); } @@ -89,17 +84,17 @@ public class MonitorController { InputStream in = request.getInputStream(); ByteArrayOutputStream baos = new ByteArrayOutputStream(); int len = 1024; - byte tmp [] = new byte[len]; - int i ; - while((i=in.read(tmp, 0, len))>0){ + byte tmp[] = new byte[len]; + int i; + while ((i = in.read(tmp, 0, len)) > 0) { baos.write(tmp, 0, i); } HttpEntity httpEntity = null; - if (baos.size() > 0){ + if (baos.size() > 0) { httpEntity = new HttpEntity(baos.toByteArray(), headers); - }else { + } else { httpEntity = new HttpEntity(headers); } @@ -118,13 +113,13 @@ public class MonitorController { @GetMapping("/metrics/**") @ApiOperation("前端访问图片请求转发") - public void ford(HttpServletRequest request, HttpServletResponse response){ + public void ford(HttpServletRequest request, HttpServletResponse response) { String location = "/juapi"; String requestURI = request.getRequestURI(); - requestURI = requestURI.replace( context_path,""); - String fordUrl = gatewayDomain + location + requestURI ; + requestURI = requestURI.replace(context_path, ""); + String fordUrl = gatewayDomain + location + requestURI; if (StringUtils.isNotBlank(request.getQueryString())) { fordUrl = fordUrl + "?" + request.getQueryString(); } @@ -157,34 +152,34 @@ public class MonitorController { len = inputStream.read(buffer); } inputStream.close(); - }catch(Exception e) { + } catch (Exception e) { e.printStackTrace(); } } @GetMapping("/gateway-monitor/queryGroupByAbility") @ApiOperation("统计数据按能力归集") - public Result queryGroupByAbility(String query, String time){ + public Result queryGroupByAbility(String query, String time) { String url = gatewayDomain + "/juapi/metrics/api/v1/query?query={query}" + "&time=" + time; ResponseEntity entity = restTemplate.getForEntity(url, HashMap.class, query); HashMap body = entity.getBody(); HashMap data = (HashMap) body.get("data"); - if (data != null){ + if (data != null) { List result = (List) data.get("result"); ArrayList results = new ArrayList<>(); ArrayList abilityIds = new ArrayList<>(); for (HashMap hashMap : result) { Map metric = (Map) hashMap.get("metric"); - if (metric != null && metric.get("groupInfo") != null){ + if (metric != null && metric.get("groupInfo") != null) { List value = (List) hashMap.get("value"); - if (value.size() == 2){ + if (value.size() == 2) { metric.put("count", value.get(1)); - try{ + try { Long groupInfo = Long.valueOf((String) metric.get("groupInfo")); abilityIds.add(groupInfo); metric.put("groupInfo", groupInfo); results.add(metric); - }catch (Exception e) { + } catch (Exception e) { //忽略 } @@ -211,9 +206,9 @@ public class MonitorController { map.put("type", resourceEntity.getType()); map.put("apiUrl", resourceEntity.getApiUrl()); LambdaQueryWrapper attrQueryWrapper = new LambdaQueryWrapper<>(); - attrQueryWrapper.select(AttrEntity::getAttrType,AttrEntity::getAttrValue) - .eq(AttrEntity::getDataResourceId,groupInfo) - .eq(AttrEntity::getAttrType,"服务商名") + attrQueryWrapper.select(AttrEntity::getAttrType, AttrEntity::getAttrValue) + .eq(AttrEntity::getDataResourceId, groupInfo) + .eq(AttrEntity::getAttrType, "服务商名") .eq(AttrEntity::getDelFlag, 0); AttrEntity attrEntity = attrDao.selectOne(attrQueryWrapper); if (attrEntity.getAttrValue() != null) { @@ -234,27 +229,27 @@ public class MonitorController { @GetMapping("/gateway-monitor/queryGroupByDepartment") @ApiOperation("统计数据按部门归集") - public Result queryGroupByDepartment(String query, String time){ + public Result queryGroupByDepartment(String query, String time) { String url = gatewayDomain + "/juapi/metrics/api/v1/query?query={query}" + "&time=" + time; ResponseEntity entity = restTemplate.getForEntity(url, HashMap.class, query); HashMap body = entity.getBody(); HashMap data = (HashMap) body.get("data"); - if (data != null){ + if (data != null) { List result = (List) data.get("result"); ArrayList results = new ArrayList<>(); ArrayList abilityIds = new ArrayList<>(); for (HashMap hashMap : result) { Map metric = (Map) hashMap.get("metric"); - if (metric != null && metric.get("deptInfo") != null){ + if (metric != null && metric.get("deptInfo") != null) { List value = (List) hashMap.get("value"); - if (value.size() == 2){ + if (value.size() == 2) { metric.put("count", value.get(1)); try { Long groupInfo = Long.valueOf((String) metric.get("deptInfo")); abilityIds.add(groupInfo); metric.put("deptInfo", groupInfo); results.add(metric); - }catch (Exception e) { + } catch (Exception e) { //忽略 } @@ -264,7 +259,7 @@ public class MonitorController { if (!results.isEmpty()) { LambdaQueryWrapper queryWrapper = new QueryWrapper().lambda(); - queryWrapper.select(SysDeptEntity::getName,SysDeptEntity::getId) + queryWrapper.select(SysDeptEntity::getName, SysDeptEntity::getId) .in(SysDeptEntity::getId, abilityIds); List entities = sysDeptDao.selectList(queryWrapper); for (Map map : results) { @@ -287,7 +282,7 @@ public class MonitorController { @GetMapping("/gateway-monitor/queryGroupByDeptInRange") @ApiOperation("统计数据按部门显示趋势") - public Result queryGroupByDeptInRange(String query, String start, String end, String step){ + public Result queryGroupByDeptInRange(String query, String start, String end, String step) { String url = gatewayDomain + "/juapi/metrics/api/v1/query_range?query={query}" + "&start=" + start + "&end=" + end + @@ -296,34 +291,32 @@ public class MonitorController { ResponseEntity entity = restTemplate.getForEntity(url, HashMap.class, query); HashMap body = entity.getBody(); HashMap data = (HashMap) body.get("data"); - if (data != null){ + if (data != null) { List result = (List) data.get("result"); ArrayList results = new ArrayList<>(result.size()); for (HashMap hashMap : result) { Map metric = (Map) hashMap.get("metric"); - if (metric != null && metric.get("deptInfo") != null){ - try{ + if (metric != null && metric.get("deptInfo") != null) { + try { Long filterId = Long.valueOf((String) metric.get("deptInfo")); SysDeptEntity sysDeptEntity = sysDeptDao.selectById(filterId); - if (sysDeptEntity != null && StringUtils.isNotBlank(sysDeptEntity.getName())){ + if (sysDeptEntity != null && StringUtils.isNotBlank(sysDeptEntity.getName())) { metric.put("name", sysDeptEntity.getName()); results.add(hashMap); } - }catch (Exception e){ - log.warn("数据异常忽略", e); + } catch (Exception e) { + log.warn("数据异常忽略:{}", e.getMessage()); } - } } return Result.success(results); } - return Result.success(Collections.emptyList()); } @GetMapping("/gateway-monitor/queryGroupCount") @ApiOperation("查询总api数量") - public Result queryGroupCount(){ + public Result queryGroupCount() { LambdaQueryWrapper queryWrapper = new QueryWrapper().lambda(); queryWrapper.isNotNull(ResourceEntity::getGroupId).eq(ResourceEntity::getDelFlag, 0); Integer selectCount = resourceDao.selectCount(queryWrapper); @@ -332,23 +325,23 @@ public class MonitorController { @GetMapping("/gateway-monitor/getCallCount") @ApiOperation("查询总api调用总量") - public Result getCallCount(){ + public Result getCallCount() { Long callCount = monitorServiceV2.getCallCount(); return Result.success(callCount); } @GetMapping("/gateway-monitor/test/get") - public Result testGet(){ + public Result testGet() { return Result.success(null); } @GetMapping("/gateway-monitor/test/404") - public void test404(HttpServletResponse response){ + public void test404(HttpServletResponse response) { response.setStatus(404); } @GetMapping("/gateway-monitor/test/500") - public void test500(HttpServletResponse response){ + public void test500(HttpServletResponse response) { response.setStatus(500); } From 30b5ee12f0025a89bee77f01d5d99ee4d23029ad Mon Sep 17 00:00:00 2001 From: Koi-tsk <337023856@qq.com> Date: Thu, 25 Aug 2022 14:52:20 +0800 Subject: [PATCH 09/15] =?UTF-8?q?=E8=83=BD=E5=8A=9B=E7=94=B3=E8=AF=B7v3-bu?= =?UTF-8?q?g=20fix?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../renren/common/controller/AbilityCenterControllerV3.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/renren-admin/src/main/java/io/renren/common/controller/AbilityCenterControllerV3.java b/renren-admin/src/main/java/io/renren/common/controller/AbilityCenterControllerV3.java index 6a484c4a..3485d09f 100644 --- a/renren-admin/src/main/java/io/renren/common/controller/AbilityCenterControllerV3.java +++ b/renren-admin/src/main/java/io/renren/common/controller/AbilityCenterControllerV3.java @@ -285,11 +285,11 @@ public class AbilityCenterControllerV3 { if (applyUserDeptType == 2) { cityApply = Boolean.TRUE; // 市级部门发起申请 } - if (cityApply && resourceDeptType == 2) { + if (resourceDeptType == 2) { cityApplyCity = Boolean.TRUE; // 市区申请市区 } SysDeptDTO userDept = sysDeptService.get(user.getDeptId()); - if (!cityApply && (userDept.getDistrict() != sysDeptDTO.getDistrict())) { // 非市申请且发起人与资源所属区县不一致 + if (!cityApply && !userDept.getDistrict().equals(sysDeptDTO.getDistrict())) { // 非市申请且发起人与资源所属区县不一致 crossRegion = Boolean.TRUE; // 跨区 } } From 70c706ba73e22f32f5e60cc4ea0b73f583982425 Mon Sep 17 00:00:00 2001 From: wangliwen Date: Thu, 25 Aug 2022 17:55:27 +0800 Subject: [PATCH 10/15] =?UTF-8?q?=E5=90=8C=E6=AD=A5=E7=9F=A5=E8=AF=86?= =?UTF-8?q?=E5=BA=93=E7=9A=84=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/ResourceServiceImpl.java | 107 +++++++++--------- 1 file changed, 54 insertions(+), 53 deletions(-) diff --git a/renren-admin/src/main/java/io/renren/modules/resource/service/impl/ResourceServiceImpl.java b/renren-admin/src/main/java/io/renren/modules/resource/service/impl/ResourceServiceImpl.java index 42aaabb5..9e9334d9 100644 --- a/renren-admin/src/main/java/io/renren/modules/resource/service/impl/ResourceServiceImpl.java +++ b/renren-admin/src/main/java/io/renren/modules/resource/service/impl/ResourceServiceImpl.java @@ -1224,64 +1224,65 @@ public class ResourceServiceImpl extends CrudServiceImpl { - list.parallelStream().filter(resource -> { - Map map = (Map) resource; - return !knowledgeUUID.contains(map.get("uuid").toString()); - }).forEach(resource -> { - Map map = (Map) resource; - ResourceDTO dto = new ResourceDTO(); - dto.setName(map.get("title").toString()); - dto.setType("知识库"); - dto.setVisits(0L); - //所属部门暂时设为青岛市政府办公厅 - dto.setDeptId(1517116100113850370L); - dto.setNote1(map.get("uuid").toString()); - dto.setDelFlag(0); - ArrayList infoList = new ArrayList<>(); - map.forEach((key, value) -> { - switch (key) { - case "title": - dto.setName(value.toString()); - break; - case "url": - dto.setLink(value.toString()); - break; - case "createtime": - Date createDate = new Date(Long.parseLong(value.toString())); - dto.setCreateDate(createDate); - break; - default: - AttrEntity attrEntity = new AttrEntity(); - attrEntity.setDelFlag(0); - attrEntity.setAttrType(key); - attrEntity.setAttrValue(value.toString()); - infoList.add(attrEntity); - break; - } - }); - AttrEntity attrEntity = new AttrEntity(); - attrEntity.setDelFlag(0); - attrEntity.setAttrType("文件类型"); - if ("f49561afc7204f008c4bb3cd821eb6ba".equals(index)) { - attrEntity.setAttrValue("政府公报"); - } else { - attrEntity.setAttrValue("政策解读"); + customThreadPool.submit(() -> list.parallelStream().filter(resource -> { + Map map = (Map) resource; + return !knowledgeUUID.contains(map.get("uuid").toString()); + }).forEach(resource -> { + Map map = (Map) resource; + ResourceDTO dto = new ResourceDTO(); + dto.setName(map.get("title").toString()); + dto.setType("知识库"); + dto.setVisits(0L); + //所属部门暂时设为青岛市政府办公厅 + dto.setDeptId(1517116100113850370L); + dto.setNote1(map.get("uuid").toString()); + dto.setDelFlag(0); + ArrayList infoList = new ArrayList<>(); + map.forEach((key, value) -> { + switch (key) { + case "title": + dto.setName(value.toString()); + break; + case "url": + dto.setLink(value.toString()); + break; + case "createtime": + Date createDate = new Date(Long.parseLong(value.toString())); + dto.setCreateDate(createDate); + break; + default: + AttrEntity attrEntity = new AttrEntity(); + attrEntity.setDelFlag(0); + attrEntity.setAttrType(key); + attrEntity.setAttrValue(value.toString()); + infoList.add(attrEntity); + break; } - infoList.add(attrEntity); - dto.setInfoList(infoList); - this.insertWithAttrs(dto); - logger.info("插入:{}", dto.getName()); }); - }).join(); + AttrEntity attrEntity = new AttrEntity(); + attrEntity.setDelFlag(0); + attrEntity.setAttrType("文件类型"); + if ("f49561afc7204f008c4bb3cd821eb6ba".equals(index)) { + attrEntity.setAttrValue("政府公报"); + } else { + attrEntity.setAttrValue("政策解读"); + } + infoList.add(attrEntity); + dto.setInfoList(infoList); + this.insertWithAttrs(dto); + logger.info("插入:{}", dto.getName()); + })).join(); customThreadPool.shutdown(); }, executor)); - try { - Thread.sleep(100L); // 防止任务运行过快,无法跳出循环 - } catch (InterruptedException e) { - logger.info("知识库同步异常", e); -// throw new RuntimeException(e); + + if (maxPage.get() == 100) { + try { + Thread.sleep(new Random().nextInt(100)); // 防止任务运行过快,无法跳出循环 + } catch (InterruptedException e) { + logger.info("知识库同步异常", e); + } } + } while (end.get() || pageIndex.get() < maxPage.get()); return task; }).collect(Collectors.toList()); From 2d403dcc9e1bf1cae34bca0f0d5e2cdc703733c1 Mon Sep 17 00:00:00 2001 From: yitonglei Date: Fri, 26 Aug 2022 09:05:38 +0800 Subject: [PATCH 11/15] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=8E=B7=E4=BB=8E?= =?UTF-8?q?=E9=87=91=E5=AE=8F=E7=BD=91=E8=8E=B7=E5=8F=96=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=EF=BC=8C=E4=BD=86=E6=98=AF=E8=BF=98=E6=98=AF?= =?UTF-8?q?=E8=8E=B7=E5=8F=96=E4=B8=8D=E5=88=B0guid?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/io/renren/modules/sys/entity/SysUserEntity.java | 2 ++ .../modules/sys/service/impl/SysUserServiceImpl.java | 4 +++- .../src/main/java/io/renren/common/utils/JhlDAPTool.java | 8 +++++--- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/renren-admin/src/main/java/io/renren/modules/sys/entity/SysUserEntity.java b/renren-admin/src/main/java/io/renren/modules/sys/entity/SysUserEntity.java index 030bf5a3..28f0ea02 100644 --- a/renren-admin/src/main/java/io/renren/modules/sys/entity/SysUserEntity.java +++ b/renren-admin/src/main/java/io/renren/modules/sys/entity/SysUserEntity.java @@ -79,4 +79,6 @@ public class SysUserEntity extends BaseEntity { */ private String guid; + private String ywMobile; + } \ No newline at end of file diff --git a/renren-admin/src/main/java/io/renren/modules/sys/service/impl/SysUserServiceImpl.java b/renren-admin/src/main/java/io/renren/modules/sys/service/impl/SysUserServiceImpl.java index 81240f41..98ca8f26 100644 --- a/renren-admin/src/main/java/io/renren/modules/sys/service/impl/SysUserServiceImpl.java +++ b/renren-admin/src/main/java/io/renren/modules/sys/service/impl/SysUserServiceImpl.java @@ -381,7 +381,8 @@ public class SysUserServiceImpl extends BaseServiceImpl Date: Fri, 26 Aug 2022 10:37:20 +0800 Subject: [PATCH 12/15] =?UTF-8?q?=E8=9E=8D=E5=90=88=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fuse/controller/FuseController.java | 8 ++++ .../modules/fuse/service/TbFuseService.java | 3 ++ .../fuse/service/impl/TbFuseServiceImpl.java | 37 ++++++++++++++----- 3 files changed, 38 insertions(+), 10 deletions(-) diff --git a/renren-admin/src/main/java/io/renren/modules/fuse/controller/FuseController.java b/renren-admin/src/main/java/io/renren/modules/fuse/controller/FuseController.java index 98e68094..d05ee9ca 100644 --- a/renren-admin/src/main/java/io/renren/modules/fuse/controller/FuseController.java +++ b/renren-admin/src/main/java/io/renren/modules/fuse/controller/FuseController.java @@ -19,6 +19,7 @@ import org.springframework.web.bind.annotation.*; import springfox.documentation.annotations.ApiIgnore; import java.util.Arrays; +import java.util.List; import java.util.Map; /** @@ -61,6 +62,13 @@ public class FuseController { return new Result().ok(tbFuseService.getFuseById(id)); } + @GetMapping("getDataResource") + @ApiOperation("获取资源数据") + @LogOperation("获取资源数据") + public Result> getDataResource() { + return new Result().ok(tbFuseService.getDataResource()); + } + @PostMapping @ApiOperation("保存") @LogOperation("保存") diff --git a/renren-admin/src/main/java/io/renren/modules/fuse/service/TbFuseService.java b/renren-admin/src/main/java/io/renren/modules/fuse/service/TbFuseService.java index d731cc86..b296b7ef 100644 --- a/renren-admin/src/main/java/io/renren/modules/fuse/service/TbFuseService.java +++ b/renren-admin/src/main/java/io/renren/modules/fuse/service/TbFuseService.java @@ -4,6 +4,7 @@ import io.renren.common.service.CrudService; import io.renren.modules.fuse.dto.TbFuseDTO; import io.renren.modules.fuse.entity.TbFuseEntity; +import java.util.List; import java.util.Map; /** @@ -15,6 +16,8 @@ public interface TbFuseService extends CrudService { TbFuseDTO getFuseById(Long id); + List getDataResource(); + Integer addFuse(TbFuseDTO dto); Integer updateFuse(TbFuseDTO dto); diff --git a/renren-admin/src/main/java/io/renren/modules/fuse/service/impl/TbFuseServiceImpl.java b/renren-admin/src/main/java/io/renren/modules/fuse/service/impl/TbFuseServiceImpl.java index 76e82e2e..39d39908 100644 --- a/renren-admin/src/main/java/io/renren/modules/fuse/service/impl/TbFuseServiceImpl.java +++ b/renren-admin/src/main/java/io/renren/modules/fuse/service/impl/TbFuseServiceImpl.java @@ -154,35 +154,52 @@ public class TbFuseServiceImpl extends CrudServiceImpl> getDataResource() { - Map> result = new HashMap<>(); + public List getDataResource() { + int pageNum=0; + int pageSize=getDataResourceCount(); + List result = new ArrayList<>(); Optional factory = DataResourceFactory.build(); if (factory.isPresent()) { - GetDataResourceListDto dto = new GetDataResourceListDto().setPageNum(0).setPageSize(30); + GetDataResourceListDto dto = new GetDataResourceListDto().setPageNum(pageNum).setPageSize(pageSize); Map dataMap = (Map) factory.get().getDataResource(dto); if (dataMap != null) { List> list = (List>) dataMap.get("data"); - list.forEach(map -> { + list.forEach(map -> result.add(new HashMap() {{ if (map.containsKey("zyname")) { - result.put(map.get("guid").toString(), map); + put("id", map.get("guid")); + put("name", map.get("zyname")); } else { - result.put(map.get("serviceId").toString(), map); + put("id", map.get("serviceId")); + put("name", map.get("serviceName")); } - }); + }})); } } return result; } + private int getDataResourceCount() { + int count=30; + Optional factory = DataResourceFactory.build(); + if (factory.isPresent()) { + GetDataResourceListDto dto = new GetDataResourceListDto().setPageNum(0).setPageSize(30); + Map dataMap = (Map) factory.get().getDataResource(dto); + if (dataMap != null) { + count=Integer.parseInt(dataMap.get("rows").toString()); + } + } + return count; + } + private List getFuseResourceByFuseId(Long fuseId) { - Map> dataResourceMap = new HashMap<>(); + List dataResourceMap = new ArrayList<>(); List result = new ArrayList(); QueryWrapper wrapper = new QueryWrapper(); wrapper.eq("fuse_id", fuseId); List list = fuseResourceDao.selectList(wrapper); Map> resourceMap = list.stream().filter(index -> index.getType() != null).collect(Collectors.groupingBy(TbFuseResourceEntity::getType)); if (resourceMap.containsKey("数据资源")) { - dataResourceMap.putAll(getDataResource()); + dataResourceMap.addAll(getDataResource()); } resourceMap.forEach((type, value) -> { if ("组件服务".equals(type)) { @@ -198,7 +215,7 @@ public class TbFuseServiceImpl extends CrudServiceImpl { TbFuseResourceDTO dto = new TbFuseResourceDTO(); BeanUtils.copyProperties(attr, dto); - dto.setResource(dataResourceMap.get(dto.getResourceId())); + dto.setResource(dataResourceMap.stream().filter(it->it.get("id").equals(dto.getResourceId())).findFirst()); return dto; }).collect(Collectors.toList())); } else if ("基础设施".equals(type)) { From e7ce6d3a1c1bf02d6b61bb9cb42ad13f2ad9b8c0 Mon Sep 17 00:00:00 2001 From: yitonglei Date: Fri, 26 Aug 2022 11:02:03 +0800 Subject: [PATCH 13/15] =?UTF-8?q?user=E8=A1=A8=E6=96=B0=E5=A2=9E=E5=AD=97?= =?UTF-8?q?=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- renren-admin/src/main/resources/db/V5.5__update_user.sql | 1 + 1 file changed, 1 insertion(+) create mode 100644 renren-admin/src/main/resources/db/V5.5__update_user.sql diff --git a/renren-admin/src/main/resources/db/V5.5__update_user.sql b/renren-admin/src/main/resources/db/V5.5__update_user.sql new file mode 100644 index 00000000..6b05b679 --- /dev/null +++ b/renren-admin/src/main/resources/db/V5.5__update_user.sql @@ -0,0 +1 @@ +alter table sys_user add column yw_mobile varchar(100); From 5727a36b3fbda691f3a8b655a970cbba2256992d Mon Sep 17 00:00:00 2001 From: wangliwen Date: Fri, 26 Aug 2022 11:27:37 +0800 Subject: [PATCH 14/15] =?UTF-8?q?=E3=80=82=E3=80=82=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../resource/service/impl/ResourceServiceImpl.java | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/renren-admin/src/main/java/io/renren/modules/resource/service/impl/ResourceServiceImpl.java b/renren-admin/src/main/java/io/renren/modules/resource/service/impl/ResourceServiceImpl.java index 9e9334d9..4ec2300b 100644 --- a/renren-admin/src/main/java/io/renren/modules/resource/service/impl/ResourceServiceImpl.java +++ b/renren-admin/src/main/java/io/renren/modules/resource/service/impl/ResourceServiceImpl.java @@ -1275,14 +1275,13 @@ public class ResourceServiceImpl extends CrudServiceImpl Date: Fri, 26 Aug 2022 11:36:42 +0800 Subject: [PATCH 15/15] =?UTF-8?q?=E5=90=8C=E6=AD=A5=E7=9F=A5=E8=AF=86?= =?UTF-8?q?=E5=BA=93=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modules/resource/service/impl/ResourceServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/renren-admin/src/main/java/io/renren/modules/resource/service/impl/ResourceServiceImpl.java b/renren-admin/src/main/java/io/renren/modules/resource/service/impl/ResourceServiceImpl.java index 4ec2300b..85ac2a0b 100644 --- a/renren-admin/src/main/java/io/renren/modules/resource/service/impl/ResourceServiceImpl.java +++ b/renren-admin/src/main/java/io/renren/modules/resource/service/impl/ResourceServiceImpl.java @@ -1281,7 +1281,7 @@ public class ResourceServiceImpl extends CrudServiceImpl