diff --git a/trunk/CardSaveData/Mover/Imp/Imp.rsf b/trunk/CardSaveData/Mover/Imp/Imp.rsf
new file mode 100644
index 0000000..a5ba6f1
--- /dev/null
+++ b/trunk/CardSaveData/Mover/Imp/Imp.rsf
@@ -0,0 +1,18 @@
+BasicInfo:
+ Title : $(TITLE)
+ BackupMemoryType: None
+ Logo : Nintendo
+# Companycode: "00"
+ ProductCode : "CTR-P-22MA"
+# MediaSize: 2GB
+
+AccessControlInfo:
+ FileSystemAccess:
+ - Debug
+
+Rom:
+ HostRoot : $(ROMFS_ROOT)
+
+TitleInfo:
+ UniqueId: 0xf8015
+ Version: 0
diff --git a/trunk/CardSaveData/Mover/Imp/OMakefile b/trunk/CardSaveData/Mover/Imp/OMakefile
new file mode 100644
index 0000000..1649000
--- /dev/null
+++ b/trunk/CardSaveData/Mover/Imp/OMakefile
@@ -0,0 +1,69 @@
+#!/usr/bin/env omake
+#----------------------------------------------------------------------------
+# Project: Horizon
+# File: OMakefile
+#
+# Copyright (C)2009 Nintendo Co., Ltd. All rights reserved.
+#
+# These coded instructions, statements, and computer programs contain
+# proprietary information of Nintendo of America Inc. and/or Nintendo
+# Company Ltd., and are protected by Federal copyright law. They may
+# not be disclosed to third parties or copied or duplicated in any form,
+# in whole or in part, without the prior written consent of Nintendo.
+#
+# $Rev: 31765 $
+#----------------------------------------------------------------------------
+SUPPORTED_TARGETS = CTR-*.Process.MPCore.*
+
+#demoライブラリ位置指定
+#SAMPLED_DEMOS_COMMON_INCLUDE_DIR = $(dir ../common/include)
+#SAMPLED_DEMOS_COMMON_INCLUDE_DIR = $(dir ../CTR_SDK/sampledemos/common/include)
+#INCLUDES += $(SAMPLED_DEMOS_COMMON_INCLUDE_DIR)
+
+
+SOURCES[] =
+ ./source/main.cpp
+ ./source/test_data.cpp
+ ../../common/shfnt.cpp
+ ../../common/sleep.cpp
+ ../../common/common.cpp
+
+OBJECTS[] =
+ $`(ObjectFromBinary $(TARGET), ./Imp_list/key/Public_Key.der)
+
+TARGET_PROGRAM = CtrSaveDataMover_imp
+
+TITLE = CSM_imp
+
+LIBS += libnn_ps
+
+IMPORTEE_CIA = importee.cia
+
+SRC_IMPORTEE_PATH = ../body/images/$(BUILD_TARGET_DIR)/$(BUILD_TYPE_DIR)/CtrSaveDataMover.cia
+#とりあえず、マスタリング時は直おき、配置時に改名
+#SRC_IMPORTEE_PATH = CtrSaveDataMover_master.cia
+
+# ビルドタイプ別に romfs を作る
+#ROMFS_ROOT = $`(TARGET.getObjectDirectory)/romfsroot
+ROMFS_ROOT = ./romfiles
+DEST_IMPORTEE_PATH = $(ROMFS_ROOT)/$(IMPORTEE_CIA)
+foreach(TARGET, $(BUILDER.getTargets $(SUPPORTED_TARGETS)))
+ $(DEST_IMPORTEE_PATH): $(SRC_IMPORTEE_PATH) $(makeDirectory $(ROMFS_ROOT))
+ cp $< $@
+ROMFS_DEPENDENCIES = $(DEST_IMPORTEE_PATH)
+
+# プログラムから参照するためのROMFSのパスとプログラムIDを定義する
+ROMFS_IMPORTEE_PATH = L\"rom:/$(IMPORTEE_CIA)\"
+CCFLAGS += -DROMFS_IMPORTEE_PATH=$(ROMFS_IMPORTEE_PATH)
+
+ROM_SPEC_FILE = Imp.rsf
+DESCRIPTOR = $(CTRSDK_ROOT)/resources/specfiles/repairtool.desc
+
+# バナー、アイコン
+#CTR_BANNER_SPEC = banner.bsf
+CTR_BANNER_SPEC = banner_null_icon.bsf
+
+include $(ROOT_OMAKE)/modulerules
+
+build: $(DEFAULT_TARGETS)
+
\ No newline at end of file
diff --git a/trunk/CardSaveData/Mover/Imp/banner.bsf b/trunk/CardSaveData/Mover/Imp/banner.bsf
new file mode 100644
index 0000000..a18d99e
Binary files /dev/null and b/trunk/CardSaveData/Mover/Imp/banner.bsf differ
diff --git a/trunk/CardSaveData/Mover/Imp/banner/BannerModel_imp/COMMON/COMMON.cmdl b/trunk/CardSaveData/Mover/Imp/banner/BannerModel_imp/COMMON/COMMON.cmdl
new file mode 100644
index 0000000..3e85377
--- /dev/null
+++ b/trunk/CardSaveData/Mover/Imp/banner/BannerModel_imp/COMMON/COMMON.cmdl
@@ -0,0 +1,274 @@
+
+
+
+
+
+ MetaData
+
+
+
+
+
+
+
+
+ ContentSummaries
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ModelDccToolInfo
+
+
+ OptimizationLogs
+
+
+
+
+
+
+
+
+
+
+
+ Skeleton.Bones["*"].AnimatedTransform
+
+
+
+
+
+
+ IsVisible
+
+
+ Meshes["*"].IsVisible
+
+
+ IsBranchVisible
+
+
+
+
+
+
+ Materials["*"].MaterialColor.Emission
+
+
+ Materials["*"].MaterialColor.Ambient
+
+
+ Materials["*"].MaterialColor.Diffuse
+
+
+ Materials["*"].MaterialColor.Specular0
+
+
+ Materials["*"].MaterialColor.Specular1
+
+
+ Materials["*"].MaterialColor.Constant0
+
+
+ Materials["*"].MaterialColor.Constant1
+
+
+ Materials["*"].MaterialColor.Constant2
+
+
+ Materials["*"].MaterialColor.Constant3
+
+
+ Materials["*"].MaterialColor.Constant4
+
+
+ Materials["*"].MaterialColor.Constant5
+
+
+ Materials["*"].TextureMappers["*"].Sampler.BorderColor
+
+
+ Materials["*"].TextureMappers["*"].Texture
+
+
+ Materials["*"].FragmentOperation.BlendOperation.BlendColor
+
+
+ Materials["*"].TextureCoordinators["*"].Scale
+
+
+ Materials["*"].TextureCoordinators["*"].Rotate
+
+
+ Materials["*"].TextureCoordinators["*"].Translate
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+ 0 1 2 1 3 2
+
+
+
+
+
+
+
+-12 -6 6.5
+12 -6 6.5
+-12 6 6.5
+12 6 6.5
+
+ 0 0 1
+
+0 0
+1 0
+0 1
+1 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Textures["banner_imp"]@file:Textures/banner_imp.ctex
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ DccToolSourceNode
+
+ BONE_00
+
+
+
+ Shapes[0]
+ Materials["MT_00"]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/trunk/CardSaveData/Mover/Imp/banner/BannerModel_imp/COMMON/Textures/banner_imp.ctex b/trunk/CardSaveData/Mover/Imp/banner/BannerModel_imp/COMMON/Textures/banner_imp.ctex
new file mode 100644
index 0000000..83e936f
--- /dev/null
+++ b/trunk/CardSaveData/Mover/Imp/banner/BannerModel_imp/COMMON/Textures/banner_imp.ctex
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+ F5QXlBeUF5QXlBeUF5QXlBeUF5QXlBeUF5QXlBeUF5QXlBeUF5QXlBeUF5QXlBeUF5QXlBeUF5QXlBeUF5QXlBeUF5QXlBeUF5QXlBeUF5QXlBeUF5QXlBeUF5QXlBeUF5QXlBeUF5QXlBeUF5QXlBeUF5QXlBeUF5QnlBeUJ5QXlBeUF5QXlBeUJ5QnlCeUF5QnlBeUJ5QnlCeUJ5QnlCeUJ5QnlCeUJ5UnlSeVJ5UnlCeVJ5QnlSeVJ6UnlSelJ5QnlCeUJ5QnlCeUJ5QnlCeUJ5QnlCeUJ5QnlSeUJ5UnlCeVJ5UnlSeVJ6UnpSelJ5UnpSeVJ6UnpSelJ6UnpSelJ6UnpSelJ6UnpSelJ6UnpSelJ6UnpSelN6UnpTelJ6U3pTelN6U3pTelN6U3pTelN6U3pTelN6U3pjelN6YnpSelJ6UnpSelN6U3pTelJ6U3pSelN6U3pTelN6U3pTelN6U3pTelN6Y3pjemN6Y3pTemN6U3pjemN6Y3pjemN6Y3pjemN6Y3pjemN6ZHpjemN6Y3pjemN6ZHpjemR7ZHpke2R7ZHtke2R7ZHtke2R7ZHtke2R7ZHtke3R7ZHtzemN6Y3pjemR6ZHtkemR7Y3pkemN6ZHpke2R7ZHtke2R7ZHtke2R7ZHtke3R7dHt0e2R7ZHtke3R7dHt0e3R7dHt0e3R7dHt0e3V7dXt1e3R7dHt0e3R7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V8hXx1fIR7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1fIZ8hXyGfIV7dXyFe3V8hXyGfIZ8hnyFfIZ8hXyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfJZ8h3yWfIZ8hnyGfIZ8l3yXfJd8lnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyHfJd8l3yXfJd8lnyHfJd8l3yXfJd8l3yXfZd8l3yXfJd8l3yXfZd9l32XfJd9l3yXfZd9l32XfZd9l32XfZd9l32YfZh9qH2ofad9mH2XfZh9qH2ofah9qH2nfJd9l32XfZd9l32XfZd9l32XfZd9l32XfZh9l32Yfah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2pfah9qX6ofal+qX2pfql+uX65frl+uX6pfrl+qX65frl+uX65frh9qH2ofah9qX2pfql9qX6ofah9qH2pfal+qX65fql+uX65frl+uX65frl+uX65frl+uX65frl+uX65frl+uX65frl+uX65frl+uX65frp+uX65frl+uX65frp+un66frp+un66frp+un66fsp+yn7Kfrp+un66frp+yn7Kfsp+yX66frl+un66frp+un66frl+un66frp+un66frp+un7Kfrp+yn66fsp+yn7Kfsp+yn7Kfsp+yn7Kfsp/yn7Kf8p+yn7Kfsp+yn/Kf8p/y3/Kfsp/yn/Kf8p/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Kf8p/yn/Lf8t/y3/Lf8t/yn/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/23/Lf8t/y3/bf9t/23/bf9t/y3/bf8t/23/bf9t/23/bf9t/23/bf9t/3H/bf9x/23/bf9t/23/cf9x/3H/cf9t/23/bf9t/23/bf9t/23/bf9t/23/bf9t/23/bf9t/23/cf9t/3H/cf9x/3H/cf9t/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/23/cf9x/3H/cf9x/3H/cf9t/3H/cf9x/3H/bf9t/23/bf9t/23/bf9t/23/bf8t/y3/Lf9t/23/bf8t/y3/Lf8t/zH/bf9x/23/bf9t/23/bf9t/23/bf9t/23/bf8t/23/Lf9t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y37Lf8t/y3/Lf8t+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lf8t/y3/Lfst+y37Lfst+y37Lfst/y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Kfsp+yn7Kfsp+u37Kfsp+yn7Kfsp+un7Kfrt+y37Lfst+y37Lfst+yn7Lfst+y37Lfst+yn7Kfsp+yn7Kfsp+yn7Kfrp+un66frp+yn66fsp+un66frp+un66frp+un66frp+un66frp+un66frp+un66frp+un66frp+un66frp9un26fbp9un26frp9un26fbp9un26fbp9un66frp+un66frp9un66fbp+un66frp+un66fbp9un26fbp9un26fbp9un26fbp9un26fbp9un26fbp9un25fbp9un26fbp9un25fbp9uX26fbp9un26fbl9uX25fbl9uX25fal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2qfbl9uX25fbl9uX2pfbl9qX25fbl9uX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfKl9qX2pfal9qX2pfKl9qXypfKl8qXypfKh8qHyofKh8qXyofKh8qHyofKh8mHyofJl9qX2pfal9qXypfKl8qHypfal8qX2pfKl8qHypfKh8qHyofKh8qHyofKh8mHyYfJh8qHyYfKh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8l3yYfJd8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8l3yXfJd7mHyYfJh8l3yXfJd7l3uXe4d8l3uXfJd7l3uXe4d7l3uHe5d7l3uXe5d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe5d7h3uXe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4Z7h3uHe4d7h3uGe4Z7hnuGe4d7hnuHe4Z7hnuGe4Z7hnuGe4Z7hnuGe3Z6dnp2enZ6dnt2enZ7dnp2enZ6dnp2end7hnuGe4Z7hnuGe3Z7hnp2e4Z7hnuGe4Z7dnp2e3Z6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp1enZ6dXp1enV6dXp1enV6dXplenV6dXp1enV6dXplenV6Znp2enZ6dnp2enV6dXp1enZ6dnp2enV6dXp1enV6dXp1enV6dXp1emV6ZXplemV6ZXp1emV6ZXplemV6ZXplemV6ZXplemV6ZXpleWV5ZXllemV5ZXplemV5ZXlleWV5ZXlleWV5ZXlleWR5ZHlkeWV5ZXlleWV5ZHlkeWR5ZHllemV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlleWV5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5VHlkeWR5ZHlkeWR5VHlUeVR5ZHlkeWR5ZHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR4VHlUeVR5VHlUeVR5VHlUeFR5ZHlUeWR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR4VHhTeFR5VHhUeVR4VHhTeFR4U3hUeFR4VHhTeFN4U3hTeFN4VHhTeFR4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeEN4Q3hDeFN4U3hTeEN4Q3hDeEN4Q3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hDeFN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hCeEJ4QnhCeEN4QnhDeEJ4QnhCd0J4QndDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEJ4Q3hCeEJ4QnhCeEJ3QndCd0J3QndCeEJ3QndCd0J3QndCd0J3QndCd0J3QndCd0J3QndCd0J3QndCd0J3QndCd0J3Qncyd0J3MndCdzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3QndCd0J3QndCdzJ3Qncyd0J3QndCdzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MXcxdzF3MXcydzJ3MncxdzF3MXcxdzF3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncxdzJ3MXcydzF3MncxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF2MXcxdjF3MXcxdzF2MXcxdjF2MXYxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF2MXYxdjF2MXYxdjF2MXcxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdiF2MXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2MXYxdjF2IXYhdiF2IXYhdjF2IXYxdjF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYheUF5QXlBeUF5QXlBeUF5QXlBeUF5QXlBeUF5QXlBeUF5QXlBeUF5QXlCeUJ5QnlBeUJ5QXlCeUJ5QnlCeUJ5QXlBeUF5QXlBeUF5QXlBeUF5QXlBeUF5QXlCeUF5QnlBeUJ5QnlCeUJ5QnlCeUJ5QnlCeUJ5QnlCeUJ5QnlCeVJ5QnlCeUJ5QnlSeVJ5UnlSeUJ5UnlCeVJ5UnlSeVJ6UnpSelJ6UnpSelJ6UnpSelJ6UnpSelJ6UnpSelJ6U3pSeUJ5UnlSeVJ6UnpSelJ6UnlSelJ5UnpSelJ6UnpSelJ6UnpSelJ6U3pTelN6U3pSelJ6UnpTelN6U3pTelN6U3pTelN6U3pTelN6U3pTelN6U3pTelN6U3pTemN6U3pjemN6Y3pjemN6Y3pjemN6Y3pjemN6Y3pjemR6Y3pkemN6U3pTelN6U3pTemN6Y3pjelN6U3pTemN6Y3pjemN6Y3pjemN6Y3pkemR6ZHpke2N6ZHpjemR6ZHtke2R7ZHtkemR6ZHpke2R7ZHtke2R7ZHpke2R7ZHtke2R7ZHtke3R7ZHt0e3R7dHt1e3R7dXt0e3R7dHt0e3V7dXt1e3V7dHtke2R7ZHtke2R7dHt0e3R7ZHtke2R7dHt0e3R7dHt0e3V7dHt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXyFe3V8hXyGfIV8hnyGfIZ8hnyGfIV8hnyGfIZ8hnyGfIZ8hnyFe3V7dXt1e3V8hXyFfIZ8hXt1fIV7dXyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyHfJZ8hnyGfIZ8hnyHfJd8l3yXfJd8l3yXfJd9l32XfZd9l3yXfZd8l32XfZd9l32XfZZ8hnyGfId8l3yXfJd8l3yWfJd8lnyXfJd8l32XfJd9l3yXfZd9l32XfZd9l32XfZd9l32XfZd9l32YfZd9mH2nfZd9l32YfZh9mH2ofah9p32YfZd9mH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qX2ofal9qH2Yfah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qX6pfal+qH2ofah9qX2pfql+uX6pfrh9qX6pfal+qX65frl+uX65fql+uX6pfrl+uX65frl+uX65frl+uX65frl+uX66frl+uX65frl+uX66frp+un65frl+uX65frl+uX65frl+uX65frl+uX65frl+uX65frl+uX65frp+un66frp+un65frp+un66frp+un66frp+un66frp+un66frp+yn66fsp+un66frp+un7Kfsp+yn7Kfsp+yn7Kfsp/yn/Kf8t/yn7Kf8p+yn/Kf8t/yn/Lf8p+un7Kfsp+yn7Kfsp+yn/Kfsp+yn7Kfsp+yn/Kfsp/yn/Kf8p/y3/Lf8t/y3/Lf8p/y3/Kf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/bf9t/23/bf8t/23/Lf9t/23/bf9t/23/Lf8t/y3/Lf8t/y3/Lf9t/y3/Lf8t/y3/Lf9t/y3/bf9t/23/bf9t/23/bf9t/23/bf9t/23/bf9t/23/bf9t/23/bf9t/23/cf9t/3H/bf9t/23/bf9t/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/bf9x/23/cf9x/3H/cf9x/23/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9t/23/bf9x/3H/cf9x/3H/bf9t/23/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/23/cf9t/23/bf9t/23/bf9t/23/bf9t/23/Lf9t/y3/bf9t/23/bf9t/y3/Lf8t/23/Lf9t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y37Lfst/23/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lfst+y37Lfst/y37Lf8t+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfsp+yn7Kfst+y37Lfsp+yn7Kfsp+yn67fsp+yn7Kfsp+yn66frp+un66frp+un66frp+un66frp+un66frp+un66frp+un66fsp+yn7Kfsp+un66frp+un7Kfrp+yn66frp+un66frp+un66frp+un66frp+un26frp+un66frp+un26fbp9un66frp+un26fbp9un26fbp+un26frp9un26fbp9un26fbp9un26fbp9uX25fbl9un26fbp9uX25fbl9uX25fap9un26fbp9un26fbp9un26fbp9un26fbp9un26fbl9un25fbp9uX25fbl9qX25fal9uX25fbl9qX2pfal9qX2pfbl9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qXypfal8qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal8qXypfKl8qX2pfKl9qXypfKh8qXyofKl8qXypfKl8qHyofKh8qHypfKh8qXyofKh8qHyofKh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfKh8qHyofKh8qHyYfJh8mHyofJh8qHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8l3yYfJd7l3yXe5d7l3uHe5d7h3yXe5d7l3uHe4d7h3uHe4h8mHyYfJh8mHyXe5d8l3uYfJh8mHyXfJd7l3uXe5d7h3uXe4d7l3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7hnuGe4Z7hnuHe4Z7h3uGe4Z7hnuGe4Z7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7hnuHe4Z7hnuGe4Z7hnuGe4Z7dnuGe4Z7hnuGe4Z6dnp2enZ7hnt2e4Z6dnp2enZ6dnp2e3Z6dnt2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dXp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp1enV6dXp2enZ6dnp1enV6dXp1enV6dXp1enV6dXp1enV6dXp1enV6dXp1enV6dXp1emV6dXplemV6ZXplemV6ZXllemV5ZXplemV6ZXpleWV5ZXlleWV6dXp1enV6ZXplemV6ZXplenV6ZXplemV6ZXplemV5ZXpleWV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlleWV5ZHlleWV5ZXlleWV5ZHlleWR5ZXlleWV5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlkeVR5VHlUeWR5ZHlkeVR5VHlUeVR5VXlkeWV5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlUeWR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHhUeVR4VHhUeFR4VHhTeFN4U3hTeFR4U3hUeFN4U3hTeFN4U3hUeVR5VHlUeVR5VHhUeFR4VHlUeVR5VHhUeFN4VHhTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4Q3hTeFN4U3hTeFN4Q3hDeEN4U3hTeFN4U3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4U3hDeFN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4QnhDeEN4Q3hDeEN4QnhCeEJ4Q3hCeEN4QnhCeEJ3QndCd0J4QndCd0J3QndCd0J3QndCd0J3QndCd0J3QndCd0J3QnhCeEJ4QnhCeEJ3QndCd0J4QndCeEJ3QndCd0J3QndCd0J3QndCd0J3Qncyd0J3MndCd0J3QndCdzJ3MncydzJ3Qncyd0J3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzF3MncydzJ3MncydzF3MXcxdzJ3MncydzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzJ3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdjF2MXcxdzF3MXcxdjF2MXcxdjF3MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYhdjF2IXcxdjF3MXYxdjF2MXYxdjF3MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2IXYxdiF2MXYxdjF2MXYxdiF2IXYhdiF2MXYhdjF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdjF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXlBeUF5QXlBeUJ5QnlCeUF5QXlBeUJ5QnlCeUJ5QnlCeUJ5QnlCeUJ5UnlSeVJ5UnlCeUJ5QnlSeVJ5UnlSelF5QnlCeUJ5QnlCeUJ5QnlCeUJ5QnlCeUJ5QnlCeUJ5UnlCeVJ5UnlSelJ6UnpSelJ5UnlSeVJ6UnpSelJ6UnpSelJ6UnpSelJ6UnpSelJ6UnpSelJ6UnpSelJ6UnpTelJ6U3pTelN6U3pTelN6U3pTelN6U3pTelN6U3pTelN6YnpSelJ6UnpTelN6U3pTelJ6UnpSelN6U3pTelN6U3pTelN6U3pTelN6Y3pjemN6Y3pTelN6U3pjemN6Y3pjemN6U3pjemN6Y3pjemN6Y3pjemN6Y3pjemN6Y3pjemR6ZHpke2R6ZHtke2R7ZHtke2R7ZHtke2R7ZHtke2R7ZHtzemN6Y3pjemR6ZHpkemR6Y3pjemN6ZHpkemR7ZHpke2R7ZHtke2R7ZHtke3R7ZHt0e2R7ZHtke3R7dHt0e3R7dHtke3R7ZHt0e3V7dHt1e3R7dHt0e3R7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V8hXt1fIR7dXt0e3V7dXt1e3V7dXt0e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1fIV8hXyGfIV7dXx1e3V8hXyGfIZ8hnyFfIV8hXyGfIZ8hnyGfIZ8hXyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8h3yWfIZ8hnyGfIZ8l3yXfJd8lnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfJd8l3yXfJd8lnyHfJZ8l3yXfJd8l3yXfZd8l3yXfJd8l32XfZd9l32XfJd8l3yXfZd9l32XfZd9l32XfZd9l32YfZh9qH2ofad9mH2XfZh9qH2ofah9qH2nfJd9l32XfZd9l32XfZd9l32XfZd9l32XfZh9l32Yfah9mH2ofZh9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qX2ofal+qX2pfql+uX65frl+uX2pfql+qX65frl+uX65frh9qH2ofah9qH2pfql9qX6ofah9qH2pfal9qX6pfql+uX6pfrl+uX65frl+uX65frl+uX65frl+uX65frl+uX65frl+uX65frl+uX65frp+uX65frl+uX65frp+un66frp+un66frp+un66fsp+un7Kfrp+un66frp+yn7Kfsp+yX65frl+un66frp+un66frl+un65frp+un66frp+un66frp+yn7Kfsp+yn7Kfsp+yn7Kfsp+yn7Kfsp+yn7Kf8p+yn7Kfsp+yn/Kf8p/y3/Kfsp/yn7Kf8p/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Kf8p/yn/Lf8t/y3/Lf8t/yn/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/bf8t/23/Lf8t/y3/Lf9t/23/bf9t/y3/bf8t/23/bf9t/23/bf9t/23/bf9t/3H/bf9t/23/bf9t/23/bf9x/3H/cf9t/y3/bf9t/23/bf9t/23/bf9t/23/bf9t/23/bf9t/23/bf9t/3H/cf9x/3H/cf9t/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/23/cf9x/3H/cf9x/3H/bf9t/23/bf9t/23/bf9t/23/bf8t/y3/Lf9t/23/bf9t/23/Lf8t/zH/cf9x/3H/bf9t/23/bf9x/23/bf9t/23/bf9t/23/bf9t/y3/bf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lf8t+y3/Lfst+y37Lfst+y3/Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Kfsp+yn7Kfsp+u37Kfst+yn7Kfsp+un7Kfrt+y37Lfst+y37Lfst+yn7Lfst+y37Lfst+yn7Kfsp+yn7Kfsp+yn66frp+un66frp+yn66fsp+un66frp+un66frp+un66frp+un66frp+un66frp+un66frp+un66frp+un66frp9un26fbp9un26frp9un26fbp9un26fbp9un66frp+un66frp+un66fbp+un66frp+un66fbp+un26fbp9un26fbp9un26fbp9un26fbp9un26fbp9un26fbp9un26fbp9un25fbp9uX26fbp9un25fbl9uX25fbl9uX25fal9uX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2qfbl9un25fbl9uX2pfbl9qX25fbl9uX25fal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfKl9qXypfKl8qXypfKh8qHyofKh8qXyofKl8qHyofKh8mHyofJl9qX2pfal9qX2pfKl8qXypfal8qX2pfKl8qHypfKh8qXyofKh8qHyofKh8mHyYfJh8qHyYfKh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJd8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8l3yXfJd7mHyYfJh8mHyXfJd7l3uXe5h8l3yXfJd7l3uXe4d7l3uHfJd7l3uXe5d7l3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe5d7l3uXe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4Z7hnuGe4d7h3uHe4Z7hnuGe4Z7hnuGe4Z7dnuGe3Z6dnp2enZ6dnuGenZ7dnp2enZ6dnp2end7hnuHe4Z7hnuGe3Z7hnt2e4Z7hnuGe4Z7hnp2e3Z6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp1enZ6dXp1enV6dXp1enV6dXp1enV6dXp1enV6dXplenV6Znp2enZ6dnp2enV6dXp1enZ6dnp2enV6dXp1enV6dXp1enV6dXp1emV6dXplemV6ZXp1emV6dXplemV6ZXplemV6ZXplemV6ZXpleWV5ZXllemV6ZXplemV5ZXlleWV5ZXlleWV5ZXlleWR5ZXlkeWV5ZXlleWV5ZHlkeWR5ZHllemV5ZXpleWV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlkeWV5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5VHlkeVR5ZHlkeWR5ZHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR4VHlUeFR5ZHlUeWR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR4VHhUeFR5VHlUeVR5VHhTeFR4U3hUeVR4VHhUeFN4U3hTeFN4VHhTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeEN4U3hDeFN4U3hTeEN4Q3hDeEN4Q3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4Q3hTeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEJ4QnhCeEN4QnhDeEJ4QnhCeEJ4QndDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hCeEJ4QnhCeEJ3QndCd0J3QndCeEJ3QnhCd0J3QndCd0J3QnhCd0J3QndCd0J3QndCd0J3QndCd0J3QndCd0J3QndCd0J3MndCdzJ3MncydzJ3MndCdzJ3MncydzJ3MncydzJ3QndCd0J3QndCdzJ3Qncyd0J3QndCd0J3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MXcxdzJ3MXcydzJ3MncydzF3MXcxdzF3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MXcydzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF2MXcxdjF3MXcxdzF3MXcxdjF2MXYxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdjF3MXYxdjF2MXYxdzF3MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYhdiF2IXYxdjF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2MXYxdjF2MXYxdiF2IXYxdjF2MXYxdiF2IXYhdjF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2MXYhdjJ5QnlCeUJ5QnlCeVJ5UnlSeUJ5QnlCeUJ5UnlSeVJ6UnlSelJ6UnpSelJ6UnpSelJ6UnpSelJ6UnpSelJ6U3pSeUJ5UnlSeVJ5UnpSelJ6UnlSeVJ5UnpSelJ6UnpSelJ6UnpSelJ6UnpTelN6U3pSelJ6UnpSelN6U3pTelN6UnpTelN6U3pTelN6U3pTelN6U3pTelN6U3pTelN6U3pjelN6Y3pjemN6Y3pjemN6Y3pjemN6Y3pjemR6Y3pkemN6U3pTelN6U3pTemN6U3pjelN6U3pTelN6Y3pjemN6Y3pjemN6Y3pkemR6ZHpkemN6ZHpjemR6ZHpke2R7ZHtjemR7ZHpke2R7ZHtke2R7ZHpke2R7ZHtke2R7ZHtke2R7ZHt0e2R7dHt1e3R7dXt0e3R7dHt0e3V7dXt1e3V7dHtke2R7ZHtke2R7dHtke3R7ZHtke2R7ZHt0e3R7dHt0e3R7dHt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXx1e3V8hXuFfIV8hnyGfIZ8hnyGfIV8hnyGfIZ8hnyGfIZ8hnyFe3V7dXt1e3V8dXyFfIV8hXt1e3V7dXyFfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyHfJZ8hnyGfIZ8hnyHfJZ8l3yXfJd8l3yXfJd8l32XfZd9l3yXfJd8l32XfZd9l32XfZZ8hnyGfId8l3yXfJd8l3yWfId8lnyHfJd8l3yXfJd8l3yXfZd8l32XfZd9l32XfZd9l32XfZd9l32YfZd9mH2XfZd9l32XfZh9mH2ofZh9p32YfZd9mH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2Yfah9mH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qX2ofal+qH2ofah9qX2pfql+qX6pfrh9qX2ofal+qX6pfrl+uX65fql+qX6pfrl+uX65frl+uX65frl+uX65frl+uX66frl+uX65frl+uX66frp+un65fql+uX6pfrl+uX65frl+uX65frl+uX65frl+uX65frl+uX65frp+un66frp+un65frp+uX66frp+un66frp+un66frp+un66frp+yn66fsp+un66frp+un7Kfsp+yn7Kfsp+yn7Kf8p/yn/Kf8t/yn7Kfsp+yn/Kf8t/yn/Lf8p+un66frp+yn7Kfsp+yn7Kfsp+yn7Kfsp+yn7Kfsp/yn/Kf8p/yn/Lf8t/y3/Lf8p/y3/Kf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf9t/23/bf8t/y3/Lf9t/23/bf9t/23/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/bf8t/23/bf9t/23/bf9t/23/bf9t/23/bf9t/23/bf9t/23/bf9t/23/cf9t/3H/bf9t/23/bf9t/3H/bf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/bf9t/23/cf9x/3H/cf9x/3H/cf9t/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9t/23/cf9x/3H/cf9x/23/bf9x/23/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/23/bf9x/23/bf9t/23/bf9t/23/bf9t/23/bf9t/y3/bf9t/23/bf9t/y3/Lf8t/23/bf9t/23/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t+y37Lfst/23/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y37Lfst+y37Lfst/y37Lf8t+y37Lfst+y37Lf8t+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfsp+y37Kfst+y37Lfst+y37Kfsp+yn7Lfsp+y37Kfsp+yn66fsp+un7Kfrp+un66frp+un66frp+un66frp+un66frp+un66fsp+yn7Kfsp+un66frp+un7Kfsp+yn66frp+un66frp+un66frp+un66frp+un66frp+un66frp+un66fbp9un66frp+un26fbp9un26fbp+un26frp9un26fbp9un26fbp9un26fbp9uX26fbl9un26fbp9uX25fbl9uX25fbp9un26fbp9un26fbp9un26fbp9un26fbp9un26fbp9un25fbp9uX25fbl9qX25fap9uX25fbl9uX2pfal9qX2pfbl9uX25fal9qX2pfal9qX25fal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qXypfal8qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal8qXypfKl8qX2pfal9qX2pfKl8qXyofKl8qXypfKl8qHyofKh8qHypfKl8qXyofKh8qHyofKh8mHyofJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyZfKh8qHyofKh8qHyYfKh8mHyofKh8qHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8l3yYfJd8l3yXe5d7l3uXe5d7h3yXe5d7l3uXe4d7h3uHe4h8mHyYfJh8mHyXfJd8l3uYfJh8mHyYfJd8l3uXe5d7l3uXe4d7l3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uGe4Z7hnuHe4d7h3uHe4Z7hnuGe4Z7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7hnuHe4Z7h3uGe4Z7hnuGe4Z7dnuGe4Z7hnuGe4Z6dnt2enZ7hnuGe4Z6dnp2enZ6dnp2e4Z7dnt2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dXp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp1enV6dXp2enZ6dnp2enV6dXp1enV6dnp1enZ6dXp1enV6dXp1enV6dXp1enV6dXp1emV6dXplemV6ZXplemV6ZXpleWV5ZXplemV6ZXlleWV5ZXlleWV6dXp1enV6dXplemV6ZXplenV6dXp1emV6ZXplemV6ZXplemV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlleWV5ZHlleWR5ZXlleWV5ZXlkeWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlUeWR5ZHlkeWR5VHlUeVR5VXlkeWV5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5VHlkeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR4VHlUeFR5VHhTeFN4U3hTeFR4U3hTeFN4U3hTeFN4U3hUeVR5VHlUeVR5VHhUeFR4VHlUeVR5VHhUeFR4VHhTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4Q3hTeEN4U3hTeFN4U3hTeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4U3hDeFN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4QnhDeEN4Q3hDeEN4QnhCeEJ4Q3hDeEN4QnhCeEJ4QnhCd0J3QndCd0J3QndCd0J3QndCd0J3QndCd0J3QndCd0J3Q3hCeEJ4QnhCd0J3QndCd0J4QndCeEJ4QndCd0J3QndCd0J3QndCd0J3Qncyd0J3MndCd0J3QndCd0J3MncydzJ3QndCd0J3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzF3MncxdzJ3MncydzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzJ3MncxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdjF3MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYhdiF2IXcxdzF3MXYxdzF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2IXYxdjF2IXYxdiF2MXYxdiF2IXYhdiF2IXYxdjF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2MXYxdjF2MXYhdjF2IXYxdjF2MXYxdjF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdzF2MXcyeVJ6UnpSelJ6UnpSelJ6UnpSelJ6UnpSelJ6UnpTelJ6U3pTelN6U3pTelN6U3pTelN6U3pTelN6U3pTelN6YnpSelJ6UnpSelN6UnpTelJ6UnpSelJ6U3pTelN6U3pTelN6U3pTelN6U3pjelN6Y3pTelN6U3pTemN6Y3pjemN6U3pjemN6Y3pjemN6Y3pjemN6Y3pjemN6Y3pjemR6ZHpkemR6ZHtke2R7ZHtke2R6ZHtke2R7ZHtke2R7ZHtjemN6Y3pjemN6ZHpkemR7Y3pjemN6ZHpkemR7ZHtke2R7ZHtke2R7ZHtke3R7ZHt0e2R7ZHtke2R7dHt0e3R7dHtke3R7ZHt0e3R7dHt1e3R7dHt0e3R7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V8dXt1fIR7dHt0e3V7dXt1e3V7dXt0e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1fHV8hXyGfIV7dXt1e3V8hXyGfIZ8hnyFfHV8hXyFfIZ8hnyGfIZ8hXyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyWfIZ8hnyGfIZ8h3yWfId8lnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfJd8l3yXfJd8lnyHfJZ8h3yXfJd8l3yXfJd8l3yXfJd8l3yXfZd9l32XfJd8l3yXfZd9l32XfZd9l32XfZd9l32YfZh9qH2Yfad9mH2XfZh9mH2ofah9qH2nfJd9l32XfZd9l32XfZd9l32XfZd9l32XfZh9l32YfZh9mH2ofZh9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofal9qX2pfql+qX65frl+uX2pfql+qX65frl+uX65frh9qH2ofah9qH2pfah9qX6ofah9qH2ofal9qX6pfql+uX6pfrl+uX65frl+uX65frl+uX65frl+uX65frl+uX65frl+uX65frl+uX65frl+uX65frl+uX65frp+uX66frp+un66frp+un66fsp+un7Kfrp+un66frp+un7Kfsp+yX65frl+un66frp+un66frl+un65frp+un66frp+un66frp+yn66fsp+yn7Kfsp+yn66fsp+yn7Kfsp/yn7Kf8p+yn7Kfsp+yn/Kf8p/yn/Kfsp+yn7Kf8p/y3/Kf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Kf8p/yn/Kf8t/y3/Lf8t/yn/Lf8p/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/23/Lf8t/y3/Lf8t/23/bf9t/y3/Lf8t/23/bf9t/23/bf9t/23/bf9t/23/bf9x/23/bf9t/23/bf9x/3H/cf9t/y3/bf8t/23/bf9t/23/bf9t/23/bf9t/23/bf9t/23/bf9t/3H/cf9x/3H/cf9t/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/23/cf9t/3H/cf9x/3H/bf9t/3H/bf9t/23/bf9t/23/bf8t/23/Lf9t/23/bf9t/23/Lf8t/zH/cf9x/23/bf9t/23/bf9t/23/bf9t/23/bf9t/23/bf9t/y3/bf9t/y3/Lf8t/y3/bf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y37Lf8t/y3/Lf8t/y3/Lf8t+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lf8t/y3/Lfst+y37Lfst+y3/Lf8t+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Kfsp+yn7Kfsp+y37Lfst+yn7Kfsp+yn7Kfrt+y37Lfst+y37Lfst+y37Lfst+y37Lfst+yn7Lfsp+yn7Kfsp+yn7Kfsp+un66frp+yn66fsp+un66frp+un66frp+un66frp+un66frp+un66frp+un66frp+un66frp+un66frp+un26fbp9un26frp9un26fbp9un26fbp9un66frp+un66frp+un66frp+un66frp+un66fbp9un26fbp9un26fbp9un26fbp9un26fbp9un26fbp9un26fbp9un26fbp9un26fbp9uX26fbp9un26fbl9uX25fbl9uX25fbl9uX2pfal9qX2pfal9uX2pfal9qX2pfal9qX2qfbl9un25fbl9uX2pfbl9qn25fbl9uX25fal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qXypfKl8qXypfKh8qHyofKh8qXypfKl8qHyofKh8qHyofJl9qX2pfal9qX2pfKl8qXypfal8qX2pfKl8qXypfKh8qXyofKh8qHyofKh8mHyYfJh8qHyofKh8qHyYfJh8mHyYfKh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJd8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8l3yYfJd7mHyYfJh8mHyXfJd7l3uXe5h8l3uXfJd7l3uXe5d7l3uHfJd7l3yXe5d7l3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe5d7h3uXe4d7h3uHe4d7h3uXe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4Z7hnuGe4d7h3uHe4Z7hnuGe4Z7hnuGe4Z7hnuGe3Z6dnp2enZ6dnuGe3Z7hnp2enZ6dnp2end7hnuHe4Z7hnuGe4Z7hnuGe4Z7hnuGe4Z7hnt2e3Z6dnt2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dXp1enV6dXp1enV6dXp1enV6dXp1enV6dXp1enV6Znp2enZ6dnp2enV6dnp1enZ6dnp2enZ6dXp1enV6dXp1enV6dXp1enV6dXplemV6ZXp1enV6dXplemV6ZXplemV6dXplemV6ZXpleWV6ZXllemV6ZXplemV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlkeWV5ZXlleWV5ZHlkeWR5ZHllemV5ZXpleWV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlleWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5VHlkeVR5ZHlkeWR5ZHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5ZHlkeWR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR4VHlUeFR5VHlUeVR5VHhTeFR4U3hUeVR4VHhUeFN4U3hTeFN4VHhTeFR4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4Q3hDeFN4U3hTeFN4U3hDeEN4Q3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeEN4Q3hDeEN4Q3hTeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEJ4Q3hCeEN4Q3hDeEJ4QnhCeEJ4QndDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEJ4QnhCeEJ4QnhCd0J3QndCeEJ4QnhCeEJ3QndCd0J3QnhCd0J3QndCd0J3QndCd0J3QndCd0J3QndCd0J3QndCd0J3MndCdzJ3MncydzJ3MndCdzJ3QncydzJ3MncydzJ3QndCd0J3QndCd0J3QndCd0J3QndCd0J3Qncyd0J3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncxdzJ3MXcydzF3MncydzJ3MXcxdzF3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzF3MXcxdzF3MXcxdzF3MncxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXYxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF2MXYxdjF2MXYxdjF2MXcxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdiF2MXYhdjF2MXYxdjF2IXYhdiF2IXYxdiF2IXYhdiF2IXYhdiF2MXYxdjF2MXYxdiF2MXYhdjF2MXYxdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYxdjF2MXYxdiF2MXYhdjF2MXYxdjF2MXYxdjF2MXcxdzF3MXcxdzF2MXcxdzF3MXcydzF3MncxdiF2MXYxdjF2MXYxdjF3MXYxdjF2MXYxdjF3MXYxdzF2MXcxdzF3MncydzJ3MncxdzJ3MXcydzJ3MncydzJ3MnpTelN6U3pTelN6U3pTelN6U3pTelN6U3pTelN6U3pjelN6Y3pTemN6Y3pjemN6Y3pjemN6Y3pjemN6Y3pkemN6U3pTelN6U3pTemN6Y3pjelN6U3pTelN6Y3pjemN6Y3pjemN6Y3pjemR6ZHpke2N6Y3pjemN6ZHpke2R6ZHtjemR6Y3pke2R7ZHtke2R7ZHpke2R7ZHtke2R7ZHtke2R7ZHt0e2R7dHt0e3R7dXt0e2R7dHt0e3R7dXt1e3V7dHtke2R7ZHtke2R7dHtke3R7ZHtke2R7ZHt0e3R7dHt0e3R7dHt1e3V7dXt1e3V7dHt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V8hXt1fIV8hnyGfIZ8hnyGfIV8hnyFfIZ8hnyGfIZ8hnyFe3V7dXt1e3V7dXyFe3V8hXt1e3V7dXyFfIZ8hXyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfJZ8hnyGfIZ8hnyHfJZ8l3yXfJd8l3yXfJd8l32XfZd9l3yXfJd8l32XfZd9l32XfZZ8hnyGfIZ8hnyXfJd8l3yWfIZ8lnyHfJd8l3yXfJd8l3yXfZd9l32XfZd9l32XfZd9l32XfZd9l32XfZd9mH2XfZd9l32XfZd9mH2ofZh9p32XfZd9mH2Yfah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9p32Yfah9mH2ofah9qH2ofah9qH2ofaeKiH2ofaa2VrVYfah9qH2ofah9qX2ofal9qH2ofaa1VrVZfal+qIuJfah9qX2ofal+qX6pfrl+qX65fal+qX6pfrl+uX65frl+uX65frl+uX65frl+uX65frl+uX65frl+uX66frl+un65fql+uX6pfrl+uX65frl+uX65frl9qX65frl+uYynmXl+uX65frl+un66frp+un65frp+trVWtVp+un62tVa1Wn66frp+un66frp+yn66fsp+un66frp+un66fsp+yn7Kfsp+yn7Kfsp+yn/Kf8p/yn7Kfsp+yn/Kf8t/yn/Lf8p+un66frp+yn7Kfsp+yn7Kfrp+x7VXtmp+yn7ImYp+yn7Kf8p+yn/Kf8t/y3/Lf8p/yn/Kfsp+y3/Lf8mamJmKf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf9t/y3/bf8t/y3/Lf8t/23/bf9t/23/Lf8t/y3/Lf8t/y3/Lf8t/y3/ImYiZi3/Lf8mZiZmLf8t/23/bf9t/23/bf9t/23/bf9mZiZqbf9t/23/bf9t/23/bf9t/23/bf9t/23/bf9t/23/bf9t/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/bf9t/23/bf9x/3H/cf9x/23/cf9t/23/cf9x/23/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/ZmZe2bH/cf9x/3H/cf9x/3H/cf9x/3H/Xtme2bH/cf9i2aoysf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9t/3H/cf9x/3H/cf9x/3H/bf9x/23/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9t/23/bf9t/23/cf9t/23/bf9t/23/bf9t/3H/bf9t/23/bf9t/23/Lf8t/23/bf9t/23/bf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t+y3/Lfst/23/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t+y37Lfst/y37Lf8t+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfsp+y37Kfst+y37Lfst+y37Kfsp+yn7Lfsp+y37Kfsp+yn66fsp+yn7Kfrp+un66frp+un66frp+un66frp+un66frp+un67fsp+yn7Kfsp+un66frp+un7Kfsp+yn66frp+un66frp+un66frp+un66frp+un66frp+un66frp+un26frmMqn66frp+un66fbp9un26fbp+un26frp9un26fbp9un26fbp9un26fbp9uX26fbl9un26fbp9un26fbl9uX25fbp9un26fbp9un26fbp9un26fbp9uJh4mHp9un24mHiYen26fbp9uX25fbl9uX25fap9uX24mHl9qX25fal9qX2pfbl9uX25fal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal8qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qXypfal8qX2pfal9qX2pfKl8qXyofKl8qXypfal8qHyofKh8qHypfKl8qXypfKh8qHyofKh8qHyofJh8qHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyZfKh8qHyofKh8qHyYfKh8mHyofKh8qHyofJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJd8mHyXfJd7l3uHe5d7h3yXe5d7l3uXe4d7h3uHe4h8mHyYfJh8mHyXfJh8l3uYfJh8mHyYfJd8l3uXe5d7l3uXe5d7l3uHe4d7h3uHe4d7l3uHe5d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uGe4d7hnuHe4d7h3uHe4Z7hnuGe4Z7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4Z7h3uGe4Z7hnuGe4Z7h3uGe4Z7hnuGe4Z7dnuGe3Z7hnuGe4Z7hnt2enZ6dnp2e4Z7dnuGenZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2e3Z6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp1enZ6dXp2enZ6dollllZ6dXp1llWWVnp1enZ6dXp1enV6dXp1enV6dXp1enV6dXp1enV6dXplemV6ZXplemV6ZXplemV5ZXplemV6ZXplemV5ZXlleWV6dXp1enV6dXp1emV6ZXplenV6dYllemV6ZXpleWV5ZXplemV6ZXlleWV5ZXlleWV5ZXlleWV5ZXlleWWXVZZFeWV5ZXlleWV5ZHlleWR5ZXlleWV5ZXlleWR5ZHlkeWR5ZHlkeWR5ZHlkeVR5ZHlUeWR5ZHlkeWR5VHlUeVR5VXlleWV5ZHlkeWR5ZHlkeWR5ZHlllkWHVHlkeWR5ZHlkeWR5ZHlkeVR5VHlUeVR5VHlkeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeFR5VHhTeFN4U3hTeFR4VHhUeFN4U3hTeFN4U3hUeVR5VHlUeVR5VHhUeVR4VHlUeVR5VHlUeFN4VHhTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4Q3hTeEN4U3hTeFN4U3hTeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4U3hDeFN4Q3hDeEN4Q3hDeFN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4QnhDeEN4Q3hDeEN4QnhCeEJ4Q3hDeEN4Q3hCeEJ4QnhCd0J3QndCd0J3QndCd0J3QndCd0J3QndCd0J3QndCd0J3Q3hCeEN4QnhCeEJ3QndCd0J4QnhCeEJ4QndCd0J3QndCd0J3QndCd0J3Qncyd0J3MndCd0J3QndCd0J3MndCdzJ3QndCd0J3MncydzJ3Mncyd0J3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MXcxdzJ3MncydzF3MncxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzJ3MXcydzF3MXcxdzF3MXcydzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXYxdzF2MXcxdzF3MXcxdjF3MXcxdjF3MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYhdjF2MXcxdzF3MXcxdzF2MXYxdjF3MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYhdiF2IXYxdjF2MXYxdjF2IXYhdiF2MXYhdjF2IXYhdiF2IXYhdjF2IXYxdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYxdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2MXYxdiF2MXYhdiF2IXYxdjF2MXYxdjF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXcxdjF2MXYxdjF3MXcxdzJ3MXYxdzF3MXcxdzJ3MXcydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3QXcxdzF3MXcydzJ3MncydzF3MncxdzJ3MncydzJ3MncydzJ3MncydzJ3QndCd0J3Qncyd0J3MndCd0J3QndCd0N6U3pjelN6Y3pjemN6Y3pjemN6Y3pjemN6Y3pjemR6Y3pkemN6ZHpke2R7ZHtke2R6ZHtkemR7ZHtke2R7ZHtjemN6Y3pjemN6ZHpkemR6Y3pjemN6Y3pkemR7ZHpke2R7ZHtke2R7ZHtke3R7ZHt0e2R7ZHtke2R7ZHt0e3R7dHtke3R7ZHt0e3R7dHt1e3R7ZHt0e3R7dHt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3R7dHt0e3V7dXt1e3V7dXt0e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V8hXt1fIV7dXt1e3V7dXyGfIV8hnyFe3V8hXyFfIZ8hnyGfIZ8hXyGfIV8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8h3yWfId8lnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8l3yXfJd8lnyHfJZ8h3yXfJd8l3yXfJd8l3yXfJd8l3yXfZd8l32XfJd8l3yXfJd9l32XfZd9l32XfZd9l32XfZh9qH2V0zd9l32XfZeLhrVV8SXyNfEnfJd9l3yXfZd9l32XfZd9l32XfZd9l32XfZd9l32YfZd9lqZXfZXTRfEl8SXxJfEnfZXiOH2V8SXxJfEl8SXxJsRF8SXxJfEl8SXxJfEl8SXxJfEl8SXyNfEl4jamVZhl8SXxJfEl8SXxJsRF8SXxJeM18SWXZdM18SXxJfEl8SXxJcVF8SWnZZhkp1SnU6ZF4jSnVeI0pkOlQ7VDtUO1NKZUtUO1Q7VExDS1Q7VDtUO1Q7VDtUO1Q7VDtUSmRKZYjKenZ5h14zXxJfEl8SXxJqZV8jW1RfEl8SXxJfElxEXxJfEl8SXxJfEl8SXxJfEl8jXxJqhl8jXxJfEl8SXxJLVF4jO1RLVEtUWnVKZEplS1RLZEp1SmVKZUplSmVKdUp1XxJMRF8SXxJfEl8SXxJMQ18SXTNfEl8SXxJfEl8SXxJfEl8SXxJfEl8jXxJfEl8TXyNdM1plXxJfEl4jXiOKh5jKbTR6h18jXxJfEl8Sa2ZsVVp2XURfEl8SXxJfEkxDO1Q8QzxDO1RLVDxDO0Q8QyxDPEM8QzxDO0M8QztUS2VdM0tUXTNfEl8SXxJfEktUXTNLZV0zXxJfEl8SXxJfEl8SXxJfEl8SXxJfEl8SXxJfI18Sa1VsRF8jaYdqdl8SXxJfEl8SbTSZqV8SXyNfEl8SXiNfEl8SXxJfEl8SXxJbZV8SS1VaZVtVTERfI18SXiNfEl8SXxJfEl8SXxJfEl8SXxJfEl8SXxJfEl8jXxJfEl8SXxJfEkwzPDM8Q7fst+yo26jbt/23/bjst+x6d5jKa2Z5mJjKqNuIuZjKx/3H/bf9x/3H/cf9x/3H/bfst/2o27fsx/2oysf9mZhbVWqGS1RaZXmYiblqdnmYO0RLVDxDS1RaZnmXWmVph6jKuOyYyqjbt/2ZmLfsqNuIuajbibmo27fst+y37LfsuOxtNHxFXxJfEl8SXxJfEl8SXxJfEl8SXxJfEl8SbFVfEl8SXxJfEl8SXxJfEl8SXiNtNHmYeYdfEl8SbFRfEl8SXxJfEl8SXxJtNF8SXxJ8VV8SqNtsVV8SXxJfE18SanZadl8SXiNbZVtUTERLVF8SXxJfEl8SXxJeI18SXxJtNKjLXxJ8Vbfst+yo26jbXyN6h1xEaoeIuZjKeZiJqLf8t/247Lfsx/3H/bf8t/2o26jbe2ZfI6i6mZhfEl8SW2VadktUS2Vqdmp2WnZrVUxES2VfElxEWnZqh1p2aodfEl8SXxJfEl8SXxJfI18jbTRfI3mYeneJqXqHbFVeI8f9x/3H/cf9x/3H/cf9t/23/bf9XxJtRLf8t/yoy7fst/23/bf9t/23/bf9t/23/bf9t/237G4jt/y3/F8SXyNfEl8SXxJfEm4jmLpfEmtVXyNfEl8SXxJfEl00XxJeI6jbXxKYuV8SXxJfEl8SXxJ5mF8SWnZeI18SXxJfEl8St/y3/Lf8t/y3/Lf8t/y3/Lf8t/yJmLfst/y37LfsbiO37Lfst+y37Lfst+y37Lfst+y37F8SbiO37LfsqMu37HtmqNt6h5jKqNtfEpjKXxJrZomoXERph4moXxJph18SXxJfEl8SXxKKh6jbeod6dl8SXxJfEl8SendeI2mHXxK37Lfst+y37Lfst+y37Lfst+y37Kfse1W37JmpXyNfErfst+y37Lfst+yn7Kfsp+yZqafrXxJfI6frp+t7VafbbURfEl8SXxJfEl8SXxJeI18SXxJfEl8SbER5mGtVXTRfEl8SXxJfEl8Sa1VfEl8jbERfEl8SXxJfEl8SXxJfI6fsp+un66frp+un66frp+un66frp9un26frp+un26fbp+un66frp+un23tmp9ttM6frp+un26fbp9teI6fbXxKYypjKiKiIuZfap9uIyZjKaYd5l1plWXZ4qIi5aZd4qKfbp9uX26fbl9tfEpfaXxKYypfaiLmXypfaXxKXyl8SXxJfEl8SXxJfEl8SXxJfEl8SXxJfEl8SXxJeI18jWXZfEl8jXxJfEmtVl8pfEm1EXyNfElp1XyNfEl8SXxJfEl8SXxJfEl8SXTRKZV0zSlRfEl8SXxJfEl0zO1RdMztDSlRMQztEO0NfEl8SXyJfEjtDO0M7QztDTSNfEk0zXxKXypfKiLmIuZfKl8qHyYfKbER4qF8SanZ4uIi5aJd4qJfKl8qXyofKl8qHyofKh8qHyYfJbERfE3mXeZdfEl8SXxJdM18SXyNZhltUSmVcRF8SXxJfEl8SS0RKZUxDOlRfEl8SXxJfEl8SXxJeI18SXiNeI0pUW1RZhltVXTNfI4fKh8mHyYfJh8mHyYfJh8mHyYfJXxJsRIfJh8l4qIe5h8mHyYfJh8mHyYfJeJdeI4fJh8l4qF0za1VfEl8SXxJfEl8SXxJfEl4jeKhfEmplXxJfEl8SXxJfElwzXxJNM2p2XxJqZV8jXxJfEl8SXxJZdlmGSmRKZV4jXxJeI18SanZrVV8SXxJ3uHe4eJd3uF8SXiNfEl8SeKhop10zWJZ3uHe4d7h3uHe4d7h3uHe4aKdoqFmGXERnqGl2XxJfEl8SXxJfEl8jXxJbVF4jSlRfEktDXxI8MzpTOkMrQytDXDNfEl4jXxJfEl8SXxJeIztDXiMrQztDXTNJdUtDXSN3uHe4d7h3uHe4Z7h3uGe4aYZ3uF8SXxJnuGe4W0Rnp2e4Z7hnuGe4Z7dnp2enZ6dnp2e4Z6dnp2enZ6dnp2enXxJfEl8SXxJfElwzXxJfEktDXxJfIl8SXxJfEl8SXxJYlliXWWVYhlenZ6dYlliWS0RJdUwzOlRIhViGSWRIdWenZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp1enXERfEl0jXxJfEl8SXxJfEl8SXxJfEl8SXxJfEl8SXxJnp2enV6dXp2enV6dXp1eWWJZXp1iGV5ZXp1eWV6dZZV8SXxJfEl8SXxJfEl8SOzNfEl8SXxJfEl8SKkNfEitCXiNYhl8SXTNXlleWSIVIhV8SXxJfEl8SSlRJZF4jTSNXllwzWlRfEl8SXxJfEl8SXxJfEl8SXxJfEl8SXxJfEl8SXxJfEl8SXxJfEl8SXxJOIl8SPSJfEl8SXxJfEl8SXxJfEl8SXxJfEl8SPDJfEl8SPSJfEiwhLCJfEi0iXxJfEl4jXxJfEkeFR4VIhTiFXxJfEl8SXxJKQzhkO0MpU0eFR5U4hUeFR5VHlUeFR4U4dDh0KWM6UziFSHRfIl8SXxJfEl8SXxI8MipCLCIbMl8SXxJfEl8SPiIsIj4SPSI7Q18STiJfEl8SXxJfEl8SXxJfEl8SXxJfEilTTSIqQkeVR4VHhUeFR4U3hUeFN4VJVDeFXxJfEjeFN4VcMzh0N4U3hTeFN4U3hTeFN4U3hDeFN4U3hElkN4U3hF4iXxJfEl8SXiNfEl8SXiNfEl8SKVNMMypCGkJfEl8SXxJfEjh0SlNLMzpDXxJfEl8SXxJeIjtDXxIaQl8SXxJfEl8SN4Q3hDeEN4Q3hDeEN4Q3hDeEN4ReIzhkN4Q3hDeEOGQ3hDeEN4Q3hDeEJ4Q3hCeEN4Q3hF8SXxInhCeETDMndF8SOWNfEihjKHQ6UyhjOkNfEilTXxI7MilTOkMZQjsyXxJfEl8SXxJfEihzXxIoY18SXxJfEl8SXxIpU04iOzInhCd0J4QndCd0J3QndCd0J3QndCd0KGMndCd0TDNfEid0J3QndCdzJ3MncydzJ3M5UzhjXxJfEidzJ3NeIjpDKGNeIkwzXxJfEl8SXxJfEl8SXxJfEl8SXxI6Ql4iOzJfEl8SXiJfEl8SXxJfEl8SGVJOIk4iXxJfEl8SXxJfEidzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3NeIl8SJ3MncydzJ3MncydzJ3MXcydzJ3NeIjpDF3MoU14iXxI5QxhjTSI6Ql8SXxJfEl8STiIrMj0iGjFfEl8SXxJfEl8SXxJfEl8SXxJfEl8SXxJfEl8SXxIsIjsyXxIKMSshF3MXcxdzF3MXcxdzF3MXcxdzF3NeIihjF3MXcxdjF2MXcxdzF3MXcxdzF3MXcxdzF3MXcxdjF3MXcxdjF2MXc18SOzJfEjwyGGIYYhhSGFJfEhpCGzEKMRlCGUIKMQlBF2IXYxhiGGIXYhdjF2IXYxhSGFIZQhhSGGIXYhhiF2IXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdiF2MXYhdiF2IXYhdiF2MXYhdiF2IXYhdiF2MXYxdjF2MXYxdjF2MXYhdjF2MXYxdiF2IXYhdjF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdjF2IXYhdiF2IXYxdjF2IXYxdiF2MXYhdiF2MXYxdjF2MXYxdjF2MXYxdzF3MXcxdzF2MXcxdzF3MXcydzF3MncxdiF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF3MXYxdzF3MXcxdzF3MncydzJ3MncxdzF3MXcydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3Mncyd0J3MndCdzJ3QndCd0J3Q3dDd0N3QndCd0J3QndDd0N3Q3dDeEJ3MncydzJ3MndCd0J3QndCdzJ3Mncyd0J3QndCd0J3QndDd0J3Q3dDeEN4Q3hDeEN3Q3hDd0N4Q3hDeFN4Q3hTemR6Y3pkemR7ZHtke2R7ZHpke2R6ZHtke2R7ZHtke2R7ZHtke2R7dHt0e3R7dHt0e2R7dHt0e3R7dXt0e3V7dHtke2R7ZHtke2R7ZHtke3R7ZHtke2R7ZHtke3R7dHt0e3R7dHt1e3V7dXt1e3V7dHt1e3R7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1fIV8dXyGfIZ8hnyGfIV8hnyFfIZ8hnyGfIZ8hnyFe3V7dXt1e3V7dXyFe3V8hXt1e3V7dXt1fIV8hXyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyHfJZ8h3yWfJd8l3yXfJd8l32XfJd9l3yXfJd8l3yXfZd9l32XfZZ8hnyGfIZ8hnyXfJd8l3yWfIZ8lnyHfJd8l3yXfJd8l3yXfJd8l32XfZd9l32XfZd9l32XfZd9l32XfZd9l32XfZd9l32XfZd9mH2YfZh9p32XfZd9l32YfZh9qH2ofah9lfEofZXjNfEl8SXxJfEofZXUSHyWp2XxJfEl8SXxJ32YfZh9mH2ofah9qH2ofah9mH2ofah9qH2ofah9qH2ofZeLiH2Xi5XyNfEmp2XxKH2njJh9qIyWioWmV4uGmXXyM7VF8STEM7VDtUO1M7VF8SXyNfEl8SO0M7VF8STTM7VEplSmVZhlp2WYZpl10zSnVpl1tUXURrVV8SXxJfEl8SXxJfEl8SXxJfEl8SXxJfI18SSmVMM18SXxJNM14iXxJfEl8SXxJfEl8SXxJeI18SXxJNI00zXiNadTtUS2Rph1mGeKh4qFmGWYZ5qHmoeZeIyXtmiMqIuYi5iMqIyl1EXxJcRF8SXxJfEl8SXxJsVV8SbFVfEl8SXxJfEl8SeYeIuXmoeaiIyYjJeKiIuVmGaYdKZVp1aZd5qFmGaZdsVV8SbFVfEl8SXxJfEl8Sa2ZfEnmobFVfEl8Sa2VbVDtDO0NLVDtUO1RLZEtUWmVMREtUTERLVEtlWnZKZWqGWnVdRGqGbERfEl8SXxJfEmmXbER5mGxVXxJfEl8SXxJdM0tUXiNLVEplaoZLZVp2XxJLVExES1RLZVp2S2VadnmYbFV5mGxVXxJfEl8SXxJ5mHp2eZeJqV8SXxJ6dmtmXxJfEl8SXxJfEl8SXyNfEl8SXiNfEkxDPENOIzxDPDNfEl8SXxJfEk0zPENfEj0zXxJfEl8SXxJfEl8iXxJfEl8STTNfEl4zPEMsMzxDPDNfEl4jXFRMRDxDPEM7VDtETyJfEk4jXxJfEl8SXxJfEk0zXxJLVExEXxJfEkxETEQ8Q0tUPENLVFplaYdadnmYO0RLVUwzS2VqdnmYanaJqIi5qNuYuqjbt+yo27fse2aYyrjsmMq47Lf8bTS3/G00TiNLZV4jS2VqdomoWnZ5mF4jS1RMREtUWnZ5l1plaoeYyrjsmMqo27fsfFW37Jm6iLmo24mpqMq37LjcuOyo2200iahfEntmaoddRHmHWmZfEm4zXxJfEnmYWnZeM2tVXyNfEktUTDNfEl8SXyNfEktlS1RbVVxETTNfEl8jXxJfEl8SXyNfEl8SXxJfEl8SiZhfI5jKialfEl8Sa1VdNF8SXxJfEl8SXxJfEl8SXxJfEl8SXiNdM18SXxJNM0xEXxJfEl8SXxJadmmHW1Vqdl8SXxJfEl8SXTRcRExEXiNqdl8jXxNfEl8SXxJfEl8SXxJfEl8SXxJfEl00XyNbZV8SXxJfEk0zS0ReMzxETDNOIzxDO0Q8QzxDPEM8QzxDXxJfEl8SXxJfEl8SXxJfEk0zXxI7REtUXxJfEkxDTDNfEl8SXxJfEl8SXiNfEl4jTERfEk0zXxJfEl8iXxJPIktlXjM7RE0zXxJfEl8SXxI8Q0wzPDM8Q18SXxJfI18SXxJfEl8SXxJfEl8iXxJfEl8SXxJNMz0zXxJfEj0iLDMsMzxDLDM8Q00zXxI7RF8jLDM8QzxDO0M7RExES1RLZV0zWnZfI0tlW1VfEl00XxJfEkxDXxJfEl8jXxJfEl8SXxJeI18SXTNbVV8SXERfEl8SXERfI0tUTERfEkxEXxJfEl8SXxJfEl8SXxJfEl8jXxJfEktUXTNfEjwzTEM7Q00zO1Q7QztDO0RfIjtDTTM8QzxDPEM8QztDO0Q7REtUXxJfEl8SXxJfEl8SXxJfEl8SXxJfEl8SXxJOI04jPDNfEl8SXxJeI18STDM9MzxDPDMsMywzLDIsM00jTiJfEl8SXxJfEl8SXxJfEl8SXxJOI18SS1RMRF8SXxJNM04jTiJfEl8SXxJfEl8SXxJOI18SXxJOI00jXyI8QzxDO0NLVEplO0NLVFl2eZdadWmHO0NLVDtDS1RaZWmHWmVph4i5mMp4qJjKl8pfEpjKXxJ4qIjJeKiIyZjKXxKYyl8SO0NKVDtUSmVadWmHWXZpl0tUSmVLVEplWXZ5l1l2eZd4qIjJeKiYypjKXxKYyl8SiLmIyYi5iMmIyl4ziMp5l18SXxJfEl8STTM7Q00zO0RfEl8SXxJfEl4jO1RfEjtDO0M7QztDO1RMM18STDNfEjtUSlQ7VExDXTNfEl8SXxJfEl8SXxJfEl8SXyJfEl8SXxJfEmplW1RfEl8STEM8M14jXxJfEl8SXxJfEl8SXxJfEl8SPDM8M18SXyI8MztDXxJfEl8SXxJMMztDTDM8M18SXxJfEl8STDNOIztDXiJMM18SXxJfEl8SXxJfEl8SXxJfEl8SXxJfEk0zTiM7Q18SXiNfEkxDO0NeIjtDTSNMQztDO0M7QytDKzMrQytDXxJfEl8SXxJfEl8SXxJfEk0iXxIrQytDXxJfEjwzPDJfEl8SXxJfEl8STSNfEk4iTiNfEk4iXxJfEk8iXxJPEjtDOlQrQztDXxJfEl8SXxIsMitDLDIrMl8SXxJfIl8SXxJfEl8SXxJfEk8SXxJPEl8SXxI9Ij0iXxJOEi0iHCIsMisyLDIrMl4iXxJeIl8SLDIrMiwyKzJOIl8SOzNNI18SPDNfEjwyKzIrMisyKzJfEjwzXxJNIisyK0IrQytDK0NMMzwyXxJfEl8SXxJfEl8iXxJfEl8SXxJfEl8SXiNfEk4iXxJfEitDK0M7QytDXxJNIztDK0M7QytDK0MrQ18SXxJNI18SXxJfEl8SXxI6Q00jOkM6U18SXxI6QzwzXxJfEl8SXxJfEl8SXxJfEjtDTiIqQ18iXxJfEl8SXxJNIipDTSIrMjpUSWQqQzlkPiIrMj4iHDIrQzpTKzI6U18SXxJfEl8SXxJfEl8SXxJfEl8SPDI9Il8SXxItIi0iPiIcIk4iHCIrMipTKzIqQ04SHCIcIRwyKzIqQysyKkNIhViWSHVYhleWWWVXllllSXRIhTlkSIVYlliFWJZYll8SXxJfEl8SXxIrMl8SPDJfEl8SXxJfEl8SPDJfEk0iOWRIdTlkSHVYhliWSIZIljlkSHU5ZEh1SIZIlkiGSJZfEl8SXxJfEl8STiJfEl8SXiNfEklkSkNfEl8SO0M7MhsyXxIbMk8SXxJfEl8SXxIbMj0iGzIcIl8SXxJOEl8STxIcIT4SHCEtIV8SPhJfEj0iHCEcIRwhPhJfEk4SXxIbMhsyGzIbMhsyGzIbMhsyKzIbMhsyGzIbMhsyGzIqQhsyGzEbMhsyTxJfEl8SXxIqQjwyKkMqU18SXxI7MzsyXxJfEl8SXxI+Ej4iPhI+Il8SXxJfEl8SPhI+Ii0iLSJfEl8SXxJfEk0iGkI9IhsyXxJfEl8SXxJOIhsxXxI9Il8SXxJfEl8SLSIcISwiHCFfEl8SPDIsIhwhHCEbMRshXxJfEj4iXxJfEl8SXxJfEhwhThIcIRshXxJfEiwiPSIaMhoyGzIbMk4iXxJPEl8SGzEbMiwiTiJfEl8SXxJfEl8SLDJfEiwiXxJfEk4iXxJfEhwhXxIbMT0iXxIcIV8SXxJfEl8SXxJfEl8SXxJfEl8SXxJOEj0iXxIsIhwhGyFOIhsxKzIbMRshThIbIRwhGzEbIRshGyEbIRshGyEbMV8SPCJfEk4iGjI9IhsxTiJfEl8SXxJfEiwhXxJfEl8SXxJfEl8SXxJNIj0iPCI9Il8SXxJfEk4iGzE9IhshPSJfEl8SXxJfEl8SXxJfEl8SPSJfEhsxLCJfEk8SPSIcIV8SLCE+EgshCyEcIQshCyEcIQwhDCEMIQwhCyELIQshXxJfEl8SXxJfEl8SXxJfEl8SXxJfEl8SXxJOEl8SLRFfEl8SXxJfEl8SXxJOEhwhPRIcIQwQDBAMEC0RDBFfEl8SXxI+El8SXxJfEl8SXxIbIU4SCyELMV8SXxIsIT0iTxI+El8SXxJfEl8SXxJfEl8SXxJOEj4SXxJOEi0RDCEcIQshDCELIV8SXxJfEl8SLREMIU4SCyFfEl8SXxJfEl8SHCFfEgshCyELIQshCyFfEgshXxIcIQshCyELIQshThILIS0hCyFfEl8SXxJfEgshCyELIQshXxJfEiwhLCFfEiwhXxI9IgshCyELIQshXxJOEiwhGyELIQshCyEKMQshCyELIQshCjEKMQoxCjELIQshCyEKMQoxCTEKMRlCGUIYUhlCGFIYUhdiGFIXYhlCGFIYUhhSGGIXYhhiF2IKMQoxCjEJQRlCGFIYUhhSCjEZQgoxGUIYUhhiGFIYYhhSGGIXYhdiF2IXYhdiF2IXYhdjF2MXYxdjF2IXYxdiF2MXYhdjF2MXYhdiF2IXYhdjF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdjF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2MXYxdiF2MXYhdiF2IXYxdjF2MXYxdjF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2MXYhdjF2IXYxdjF2MXYxdjF2MXYxdjF2MXYxdzF2MXcxdjF2MXYxdjF2MXcxdzF3MXYxdzF2MXcxdzF3MXcydzF3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3QXcxdzF3MXcxdzJ3MncydzF3MXcxdzJ3MncydzJ3MncydzJ3MncydzJ3MndCd0J3QncydzJ3MndCd0J3QndCd0J3MndCd0J3QndDd0J3Q3dCd0J3QndCd0N3Q3hDd0N4Q3hDeEN4Q3hDeEN4U3hTeFN4Q3hDeEN4U3hUeFN4VHhSd0N3QndDd0N4Q3hDeEN4Q3dDeEN3Q3hDeEN4Q3hDeFN4Q3hTeFN4VHhUeFR4VHhTeFR4U3hUeFR4VHhUeFR4VHtke2R7ZHt0e3R7dHt0e3R7ZHt0e3R7dHt1e3R7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3R7dHt0e3R7dXt1e3V7dXt0e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V8hXx1fIV7dXt1e3V7dXx1fIV8hnyFe3V8hXt1fIV8hnyGfIZ8hXyFfIV8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfId8lnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8h3yXfJd8lnyGfJZ8h3yXfJd8l3yXfJZ8l3yXfJd8l3yXfJd8l32XfJd8l3yXfJd8l32XfZd9l32XfZd9l32XfZh9l32Yfad9l32XfZd9mH2Yfah9qH2nfJd8l3yXfZd9l32XfZd9l3yXfZd9l32XfZd9l32YfZd9mH2XfZh9qH2ofah9qH2ofZh9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofaeLloqIjJeLiH2ofal9qX2ofaiMmX2ofah9qH2ofah9qH2ofah9qX2ofah9qH2ofah9qX6pfal+qX6pfal+qX65fal9qX65frl+qX65frl+uX65frl+uX61mGSmVpl1p2O1Q7Q0plO1R4qGmXiMl4qFp2SmVpl1mGO0M7QztDO0M7QztUO0M7VEtkO1Radlp1O1RLVFp1WnaH2ojJl9uX2ni5eKiI2ojKl+uX65frl+uX25fbp+un62mXaZeIuYi5aZdpl4i5iLmX25jap+un65jamNun66frS1RKZUtUSmVadmmXWoZ5mEplWnZahmmXaZd4qHmoiLl5qHmoeKh5qGmXWnZ5mGqGiLmIuZjKmMp5qWmXiMqIuXmoiLmIypjKiMqY2pjbp+uX26frp+yn7Kfst+yn7Lf8qNuo26fsp+yY25jKp+uo27f8t/y3/Lf8t+y37Lf8t/xLZUtlWnVaZUtlWnZadWqGaoZadnmYeZhqhmmXeZiJqHmYial5mIi5ial5mIi5eaiJqYi5mLqYypjKiLmo25jKiLmIuajbmNuIuZjKqNuo26fsp+y3/Lf8t+y37Lf8t/2Y26jbqOy37KjbqNu37Lfst/y3/Lf9t/23/Lf9t/23/Wp2W2Vph1p2S1VLVFplWmV5mGqHiLmJqGqHaod5mHmoS2VaZVp2anZaZUtlanZadmmHeZiJqIm5eZhph4m5iamYypjKqOyo25i6mLqo26jbt+y37Mf9x/237Lfsx/3H/ZjKmMqo27jsmMqYyrjsqNu37Lfsx/3H/bf8t+zH/cf9S1VLZVplWmVaZWqHWnZqh2qHaoZ5qHmYaod5mImoibmJqJjKiamYyqjsuNyo7LjsiLmoy5jKqNu47Lfst+y37JjKmLqo26jbmLqYyqjbqNy37Lfsx/3H/bfst+zH/cf9qNu37Lfst+y37Mf9t/3H/bf9x/3H/cf9x/3H/cf9x/2YyompqNuIuWmHWnZ5mGp2qNuYyrfsqNuJqXmXmMqJqUtlS1RaZUtVS1Q7VEtUO1RadlpleZhqh0tlS1Vqdlp2t/237Mf9t/2o25jKt+yo28f9x/3H/cf9t/23/Mf9t/2YuYmpqNuYynmYeZiYypi6t+y37Lf9t/2o26jbt+y37DtEPEQ7VEtUO0Q7VEtUS2VLVUtlWnZqdlplWnZph3mYS1RLVFplWmVLVEtUWmVLZWqHaYeJqImpaYdqdomoeZh5mHmomLqYyompmLmoyqjbqNuo3Lfst/y37Lfst/y3/JjKmMqo27frmMqYuqjbqNu37Lfst/y3/Lfst+y3/LfsO0Q8Q0tUO1Q8MzwzO0M7RFp2WmV5l2mHS1VLVWp2anY8QztUO1RLVUtVWmVaZVp2SmVadmqGaYdqhmmXeZiIqYi5iamoy5jKeah5mJjKmMqn7Kfst+y37Kfbp9u37LfseaiIqZjKmMqIuZjKmMqo26fbp9u37Lfsp+un7Lfst+xaZUplanZadktUO0RaZUtVeZdph4ipiKhphlp2eZh5lztDO0RLVEtUS1RKZUplWnZadVp2aYdpl2mGaZd5mIiomMqYyqfbqNuIuYi5qNuYyqfrp+u37Lfsp9un26fsp+uIqYi5mMqYyoi5mMqYypfbp9un26frp+un26fbp+un61plSmVphlp2S1Q7VFplSmV5l3mXiLmIuWmHWnZ4qGmXO0M8QztUO0Q8QztDO0M7VEplSlRphlp2S1RKZVp1WnaYypjKp9uX24i5iKiYypjKp9un26frp+un25fap9un23mYaZeIuYi5aZdpl4ioiKiXypjKp9un25jKmMqX25faS1RKZUpUWmVZdnmXaYZ4mEplWXZZdmmHaYd4qHioiLmIuYjKiLmXyofKiLmXyoi5iLmXyojJl8qXyoi5l8qHyXmXeKiIuYi5iLmIyYjJl8qXypfKl9uX2pfal9qX2pfal8qX2pfal9qX2pfKl9qXypfal9qX2pfal9qX2pfal9pol1l2eJhZhkpUO0NKZTtUeKhpl4i5eKhZdUpkaYZZdjtDK0M7QztDK0M7QztDO0M6VDtUSnVKZTtTO1RKZUpliLl4uIfKh8l4qGiXiLl4qJfKl8qX2pfKh8mHyYfKh8pph1mGeKh4qFmGWYZ4p3ioh7mHuYfJh8mIuYe5h8mHyStDK0M7QztDO0M7QztTOlQ7VDpUSmVJdUpkSmVZdlmGO0M7QzpUOlQ7QytDOlQ7U0l1SXVZhliGSXVKZFmGWXZZhmmGeKh4qGiXaJd4qHi4d7l3uYfJh8mHuYe5h8mHyWinaKd3uHe4aJdol3i4eKh3uXe5h8mHyXe4d7h3yXe4KzIsMitDKzMsMiwyKzIrMjpUOlNJdUllO0M7Q0pkSmQsMitDK0M7QytDOlM6UzpUOlM6VElkSXU6ZElkSXVJdViGWYZop2inWXZZdWiXaJd3uHe4d7h3uHeoZ6h3uHe4WYZYhmiXaJdYhliWaKdop2eoZ6h3uHe4Z6hnqHe4Z7g6UzpDOlQ6VDpDOkM6UzpTSWQ5ZEl1SXU5ZDlkSXVJdTpTOlM6VDpUOlMqQzpUOlM5ZElkSXVIdUlkOWRIdUl1WIZYhmiXaJdYhliGaJdol2enZ6dnuGe4Z6dnp2enZ6dYhliGWJdYl1iGWIZYl1iWZ6dnp2enZ6dnp2enZ6dnpytCKzIqQysyHCIcISsyGzI6VCpTSXU5ZCtDK0I6VDpTHCEbMhsyKzIrQipTKkM6UytCKkM6UzlUKlM5ZDlkSXVIhUh1WJZYlkl1SXRYhkiGV6dXl2enZ6dXlleWV6dXpzl0SXVIhUiFSHVIhUiGSJZXlleWV6dXpleWV5ZXpleWOWRIdTlkSHVIlleWSJZHlkh1SIVIhUiFV5ZXlleWV5ZIhTl0SIU4dClTKkM5ZCpDSIVIdUeWSIU5ZClTOHQ5ZEiGV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlleWR5ZIhUeWR5ZIhTh0R4VIhUeWR5ZHlkeWR5VHlUeWR5YrMhsyKkIqQipCKkMqQylTKlMqUzlkOWMpUzljOWQ4dClTKVM5ZDhkKVMpUzhkKWM4ZDh0OHQ4hTh0OGQ4hDh0OHQ4dEiFOIU4dDh0OIVIhUeFR4VHlUeVR4VHhUeVR5U4hTeFR4VHhTeFOIQ3hTeFR4VHhUeVR5U3hTeFR4U3hSpCGzIpUxpCGzIbMRoyGzIpUylDOGQpUypCGkIpUylTGzEbMRsyGjIbMRsxGjIaMhpCGkIpUylTKUIaQilTKVM4dDhkOIQ4dChjKGM4dDh0N4U3hDeFN4U3hDeEN4U3hShjKGM4dDh0KGMoYzh0OHQ3hDeEN4Q3hDeEN4Q3hDeEGzEbIRsyGzEbIRshGyEbIRpCGjIpUhlCGzEbMRpCGkIbIRshGyEbMRsxGjEaMhpCGjEaMhpCGUIaQhlSGVIoUyhjKVModChjKVMpUyhjKGM3dCd0N4Q3hCh0KHQ3hDeEKVMoUyhjKGMoYyhjKHMncyd0J3QndCd0J3QndCd0J3QaMhoyGUIZQhoxGyEaMhoxGVIZUihjKGMZQhpCGFIZUgshCyEbMRsxCyELMRsxGjEaMhoxGUIZQhoyGUIZQhlSKGMoYydzJ3MoYyhjJ3MoYyd0J3MndCdzJ3MncydzJ3MYUxhSKGMoYxhTGGMoYyhjJ3MncydzJ3MncydzJ3MncxoxGjEaQhlCGjELIRpCGjEZQhlSGFIYUhlCGUIYUhlSCyELIQsxCyEMIQshCyELIRoxCjEZQhlBCzELMRoxGjEYYxhjJ3MncxhjGGInYxhjJ3MncydzJ3MncxdzJ3MncxhSGVIYYxhSGUIZQhhSGFIXYxdjF3MXcxhjGGMXcxdjCyELIQshCjELMQoxCjEKMQoxCjEaMRlBCjEKMRlCGUIKIQshCjEKMQshCjEKMQoxCjEKMRlCGUIKMQkxGUIZQhlCGUIYUhhSGFIYUhhiGGIYYxdjF3MXYxdiF2MXYxdjGFIYUhhiGGIYUhhSGGIYYhdjF2IXYxdjF2IXYhdjF2MJMRlCCUEZQhhSF2IYUhdiGUIYUhhSGFIYUhdiGGIXYhdjF2IXYxdiF2MXYhdiF2IXYxdiF2MXYhdiF2IXYhdiGFIYYhhiF2IXYhdiF2IXYhdiF2IXYxdjF2MXYhdjF2IXYhdiF2MXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdjF2IXYxdiF2IXYhdiF2MXYxdjF2MXYxdjF2MXYxdzF3MXcxdzF2MXYxdjF3MXcxdzF3MncxdiF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF3MXYxdzF2MXcxdzF3MXcydzJ3MncxdzF3MXcydzJ3MncydzJ3MXcydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3QndCd0J3Q3dCd0N3QndCd0J3QndDd0N4Q3dDeEJ3MncydzJ3Mncyd0J3MndCdzJ3Mncyd0J3QndCd0J3QndDd0J3Q3dDd0N4Q3hDeEN3Q3hDd0N4Q3hDeEN4Q3hTd0N4Q3hDeEN4Q3hTeFN4U3hDeEN4Q3hTeFN4U3hUeFR4VHhUeFR4VHhUeVR4VHlkeFR4VHhUeFR5VHlkeWV5Y3hDeFN4U3hTeFR4VHhUeFN4U3hTeFR4VHhUeFR4VHhUeFR5VHhUeWR5ZXlkeWV5ZHlUeWR5ZHlleWV5ZXlleWV7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1fIV7dXyFfIZ8hnyGfIV8hXyFfIZ8hnyGfIZ8hnyFe3V7dXt1e3V7dXuFe3V8hXt1e3V7dXt1fHV8hXyGfIV8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyWfId8l3yXfJd8l3yXfJd9l3yXfJd8l3yXfJd9l32XfZZ8hnyGfIZ8hnyHfJZ8l3yWfIZ8hnyHfJd8l3yXfJd8l3yXfJd8l32XfZd9l32XfZd9l32XfZd9l32XfZd9l32XfZd9l32XfZd9mH2XfZh9p32XfZd9l32YfZh9qH2Yfah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9p32YfZd9mH2Yfah9qH2ofah9mH2ofZh9qH2ofah9qH2ofah9qH2ofah9qH2ofal9qH2ofah9qH2ofal9qX2pfqh9qH2ofal9qX6pfrl+qX64fal9qX2pfql+qX65frl+uX65frl+uX65frl+uX65frl+uX65frl+uX65frl+uX65fal+qX6pfrl+uX65frl+uX6pfrl+uX65frl+uX65frl+uX65frl+uX66frp+un65frl+uX66frp+un66frp+uX66frp+un66frp+un66fsp+un66frp+un66fsp+un7Kfsp+yn7Kfsp+yn/Kf8p/yn7Kfsp+yn7Kf8p/yn/Kf8p+un66frp+un7Kfsp+yn7Kfrp+yn66fsp+yn7Kfsp+yn7Kf8p/yn/Kf8t/yn/Lf8p+yn/Kf8t/y3/Lf8t/y3/Kf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/bf8t/y3/Lf8t/23/bf9t/23/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/23/Lf9t/23/bf9t/23/bf9t/23/bf9t/23/bf9t/23/bf9t/23/bf9t/23/bf9t/23/bf9t/3H/bf9t/23/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/bf9t/23/bf9t/3H/cf9x/23/bf9t/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/bf9x/3H/cf9x/3H/bf9x/23/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/23/bf9t/23/cf9t/3H/cf9t/23/bf9t/3H/bf9t/23/bf9t/y3/bf9t/23/bf9t/23/bf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lfst/23/bf9t/23/Lf8t/y3/Lf9t/y3/bf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t+y37Lfst/y3/Lf8t/y37Lfst+y37Lf8t+y37Lfst+y37Lfst+y3/Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Kfst+y37Lfst+y37Kfst+yn7Lfst+y37Lfsp+yn7Kfsp+yn7Kfrp+yn66frp+un66frp+un66frp+un66frp+un67fsp+yn7Kfsp+yn66fsp+un7Kfsp+yn66frp+un66frp+un66frp+un66frp+un66frp+un66frp+un66frp+un66frp+un66frp9un26fbp+un66frp9un26fbp9un26fbp9un26fbp9un26fbp9un26fbp9un26fbl9un25fbp+un26fbp9un26fbp9un26fbp9un26fbp9un26fbp9un26fbp9uX25fbl9uX25fbp9uX26fbl9uX25fbl9uX2pfbl9uX25fbl9qX2pfal9qX25fal9uX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX25fal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal8qX2pfal9qX2pfal8qXypfKl9qX2pfal8qXyofKl8qHypfKl8qXypfKh8qHyofKh8qHyofKh8qHyYfJh8mHyYfJh8qHyYfJh8mHyYfJh8mHyZfKh8qXyofKh8qHyofKh8mXyofKh8qHyofKh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyXfJd7l3uXe5d7mHyXe5h8l3uXe5d7h3uXe4h8mHyYfJh8mHyYfJh8l3yYfJh8mHyYfJh8l3yYfJd7l3uXe5d7l3uXe4d7h3uHe4d7l3uHe5d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7hnuHe4d7h3uHe4d7hnuHe4Z7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uGe4Z7hnuGe4Z7h3uGe4Z7hnuGe4Z7hnuGe3Z7hnuGe4Z7hnt2enZ6dnp2e4Z7hnuGe3Z7dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2e4Z6dnt2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dXp2enZ6dnp2enZ6dXp2enV6dnp2enZ6dXp1enV6dXp1enZ6dXp1enV6dXp1enV6dXp1enV6ZXp1emV6ZXplemV5ZXplemV6ZXplemV5ZXpleWV6dXp1enV6dXp1emV6dXplenV6dXp1enV6ZXplemV6ZXplemV6ZXlleWV5ZXlleWV6ZXllemV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlleWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlUeWR5ZHlkeWR5ZHlUeWR5VXlleWV5ZXlkeWR5ZHlkeWV5ZHlleWR5ZHlkeWR5ZHlkeWR5ZHlkeVR5VHlUeVR5VHlkeWR5ZHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeFR5VHhUeFN4VHhTeFR4VHhUeFN4U3hTeFN4U3hUeVR5VHlUeVR5VHlUeVR4VHlUeVR5VHlUeVR4VHhUeFR4U3hUeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4U3hTeFN4U3hDeEN4Q3hDeFN4U3hTeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4QnhDeEJ4Q3hDeEN4Q3hCeEJ4QnhCeEJ4QndCeEJ3QndCd0J3QndCeEJ3QndCd0J3QndCd0J3Q3hCeEN4QnhCeEJ3QnhCd0J4QnhCeEJ4QnhCd0J3QndCd0J3QndCd0J3QndCd0J3MndCd0J3QndCd0J3MndCdzJ3QndCd0J3QncydzJ3Mncyd0J3QndCdzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncxdzJ3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzJ3MncydzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF2MXYxdzF3MXYxdzF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXcxdzF3MXcxdjF2MXcxdjF3MXcxdzF3MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYhdiF2MXYxdjF2MXYhdjF2IXYxdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYxdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYxdiF2MXYhdiF2IXYhdjF2MXYxdjF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdjF2IXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXcxdjF3MXYxdjF2MXcxdzF3MXcydzF3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3QXYxdzF3MXcxdzJ3MXcydzF3MXcxdzJ3MncydzJ3MncydzJ3MncydzJ3MndCdzJ3QncydzJ3Mncyd0J3QndCd0J3MndCd0J3QndCd0J3Q3dCd0J3QndCd0N3Q3dDd0N4Q3dDeEN4Q3hDeEN4U3hTeFN4Q3hDeEN4Q3hTeFN4VHhSd0J3QndDd0N3Q3hDeEN4QndDd0N3Q3hDeEN4Q3hDeEN4Q3hTeFN4U3hUeFR4VHhTeFN4U3hUeFR4VHhUeFR4U3hUeFR4VHhUeFR5VHhUeWR4VHhUeFR4VHlUeWR5ZHlkeWV5ZHlleWV5ZXlleWV5ZXlleWV5ZXlleWV5dXlleXR4VHhUeFR5VHlleWR5ZXlkeVR5ZHlkeWV5ZXlleWV5ZXlleWV5ZXlleXZ6dXl2enV5ZXl1eWV5dnp2enZ6dnp1e3V8dXt1fIV8hnyGfIZ8hXuFfIV8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8lXyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8h3yWfJd8lnyGfIZ8hnyHfJd8l3yXfJZ8h3yXfJd8l3yXfJd8l3yXfJd8l3yXfJd8l32XfZd9l32XfZd9l32XfZh9l32YfZd9l32XfZd9mH2Yfah9mH2nfJd8l3yXfZd9l32XfZd9l3yXfZd8l32XfZd9l32XfZd9l32XfZh9mH2ofah9qH2ofZh9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2pfal+qX6pfql+uH2pfqh9qX6pfql+uX65frh9qH2ofah9qH2ofah9qX2ofah9qH2ofah9qX2ofal+qX6pfql+qX65frl+uX65frl+qX65frl+uX65frl+uX65frl+uX65frl+uX65frl+uX65frl+uX65frl+uX66frl+un66frp+un63j5p+uY6qfrp+un66frp+un66frp+uX65frl+uX65frp+uX66frl+uX65frp+un66frp+un66frp+un66frp+yn66fsp+un66fsp+un7Kfsp+yn7KfsHfEd8TvzO/Md8R3xHvEP8Kfrp+un65fbWuYP8FrmD/Ad8R3xD/Ae8R3xHfE88zzzD/Ba1g/wSsWIuYi5eah5qKfrmNun65jbWtYP8FrWD/Cn66fbp+yn61rWD/Ba5g/wD/BLtA/wO6Rph2mHWnZadg/wO6QP8DukWnZadlp1WnaI6bfsiNmo27fst/yn67fsmMqYyomoiLmo26jrmMqo27f8t/y3/Lf8t/23/bf9t/237Lf8p+y3/Lf9t/23/cf9aZd5qGqHeZiIuZjKebg75GqGeZhqhnmYPNMP8Ii5LfKo27fsHfI79Lf9x/23/Gn3D/AP8A/wD/AP8A/wD/AP8Lf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9t/23/cf9x/23/Yn4HvFa9g/wD/Ad8Q/wD/AP8Mf9x/2o+8f9x/3H/cf9qPsP8Gr2D/Ae8bfsO/So25jqx/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/1q9jzzx/3H/R3xx/0P8A/wWuYP8A/wWvUP8A/wx/3H/aj7effH/cf9efeY+g/wD/AP8DzjD/AP8B7xD/DH/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/Tzzt+wP8Czzt+y37KjbqNvH/cf9x/3H/cf9x/3H/cf9t/y3/bfsefiJ+B3xD/AP8Mf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9t/3H/cf9x/23/bf9t/23/bf9t/23/bf9t/23/bf9t/23/Lf9t/zH/cf9ifh598f9t/1595j5D/AP8A7wS/QP8A/wLPMP8Lf9t/23/Lf8t/y3/Lfst+ws8pjqD/Ae8bfst+yoy6jbt/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t+y3/Lfst/y37Lfst+y37Lfst/y37Lfst+y37Lfst+y37Lf8t/y37Gn3t/y37Fr2O/S37A/wqNt56A/wD/Bp5x3yt+y37B7xLfK37Lfst+y37A/wHfEP8B7xidge8Q/wD/C37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+yn7Kfsp+y37Lfst+y37Kfsp+yn7Kfst+y37Hnoafe37LfsmOqn7A/wD/As4h7xD/A78w/wD/C37Kfsp+un66fsp+yI6Vr2p9un25jKmMod8Q/wedha5qfsp+yn7Kfrp+un66frp+un63nnp+tp5g/weecP8Gnmp+un66frp+un66fbp9un26fbp9un25fbp9un25fbl9un6yzzLPIP8A/wWeYP8DvkD/AP8FrWD/AP8A/wD/As05jKmMpa1VrVl8qXylrViMkP8A/wS7Q7tA/weKhKpXmXp9un26fbp9un26fbp9un26fbl9un25fbp9un26fbl9un25fbl9uX25fal9qX2pfal9uX2pfbl9qX2pfal9qX2pfal9qXypfal9uX25fal9qIuYjKeKiIuZfal9qXyojZl9qX2pfal9qX2pfaeNhZ5ojZLPIO8Q/wD/AP8A7wOuSX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal8qX2pfKl8qHypfKh8qXypfKl8qXyofKh8qHyofKl9qX2lnmadeX2pfKl8qXyg/wD/A75B7xHfFZ1g/wD/CXyofKh8qHyofKh8qHyVnVh8mHyVnGeLiHyQ/weLlZxofKh8qHyofJh8mHyYfJh8mHyofJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJSuUr44fJh8kO8B3xD/AP8EnVHfEP8B3xD/AP8IfJh8mHuXe5h8mHyVnWSdVZxQ7wD/AP8A/wD/Ac4g7wh8mHyYfJh8l3yXe5d7l3uYfJd7l3yXfJd7l3uHe5d7h3uXe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHfJd7lox3e4d7l3uHe4d7gP8CvjD/AP8He4d7hop2ind7h3uHe4d7h3uHe4d7h3uHe4d7hop2eod7h3uGe4Z7h3uHe4d7h3uHe4d7h3uGe4d7h3uHe4d7h3uGe4d7hnuGe4Z7hnuGe4Z7hnp2e3Z6dnuGe4Z7hnt2e3Z6dnp2end7h3uHe4d7hnuGe4Z7hnuHe4Z7hnuGe4Z7hnuGe4Z7hnuGe3Z7dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dXp1enV6dXp2enV6dnp1enV6dXp1enV6dnp2enZ6dnp2enZ6dnp1enZ6dnp2enZ6dnp1enV6dXp1enV6dXp1enV6dXplenV6ZXp1enV6dXp1emV6ZXplemV6dXplenV6ZXplemV6ZXplemV6ZXplemV6ZXllemV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlkeWV5ZHllemV6ZXpleWV5ZXlleWV5ZXpleWV6ZXlleWV5ZXlleWV5ZXlleWV5ZHlkeWR5ZHlleWV5ZXlkeWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlUeWR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5ZHlkeWR5ZHlUeVR5VHlUeWR5VHlkeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeFR5VHlUeVR5VHhUeFR5VHhUeVR4VHlUeVR4U3hUeFN4VHlUeFR5VHhTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hDeFN4U3hTeFN4U3hDeEN4RHhTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hDeEN4Q3hTeEN4Q3hDeEN4Q3hDeEN4U3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hCeEN4Q3hDeEN4Q3hCeEJ4QnhDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEJ4QnhCeEJ4QndDeEJ4QnhCeEJ4QndCd0J3QnhCeEJ4QndCd0J3QndCd0J3QndCd0J3QndCd0J3QndCd0J3QndCd0J3MncydzJ3MndCdzJ3QncydzJ3MncydzJ3QndCd0J3QndCd0J3QndCd0J3QndCd0J3Qncyd0J3MndCdzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncxdzJ3MncydzJ3MncydzF3MXcxdzF3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncxdzF3MXcxdzF3MncxdzJ3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdjF2MXYxdjF2MXcxdzF2MXYxdjF2MXYxdjF2MXYxdzF2MXYxdjF2MXYxdjF2MXYxdiF2IXYhdiF2IXYhdiF2IXYhdjF2IXYhdiF2MXYxdjF2MXYxdiF2IXYxdjF2MXYxdjF2IXYhdjF2MXYxdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdjF2IXYhdiF2IXYhdiF2MXYxdiF2IXYhdiF2MXYxdjF2MXYxdjF2MXYxdjF3MXYxdzF2MXYxdjF3MXcxdzF3MXcxdiF2IXYhdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXcxdjF3MXcydzJ3MncxdzF3MXcydzJ3MncydzJ3MXcydzF3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3Qncyd0J3QndCd0N3QndCd0J3QndCd0N3Q3dDeEJ3MncydzJ3Mncyd0J3MndCdzJ3MncydzJ3QndCd0J3QndCd0J3Q3dDd0N4Q3hDeEJ3Q3dDd0N3Q3hDeEN4Q3hDd0N4Q3hDeEN4Q3hTeEN4U3hDeEN4Q3hTeFN4U3hUeFN4VHhUeFR4VHhUeFR4VHlkeFR4VHhUeFR4VHlkeWR5Y3hDeFN4Q3hTeFR4VHhUeFN4U3hTeFR4VHhUeFR4VHhUeFR4VHhUeVR5ZXlkeWV5ZHhUeWR5VHlleWV5ZXlleWR5ZXlkeWV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlleWV5dXl2eXV5dnp2enZ6dnp2enZ5dnp2enZ6dnp2eoZ6d3qFeWV5ZXlleWV5ZXl1eXZ6dXlleWV5ZXl2eXZ6dnp2enZ6dnp2enZ6dnqHeod6h3uGenZ6hnp3eod6h3uHe4d7hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfId8lnyXfJd8l3yXfJd9l3yXfJd8l3yXfJd9l3yXfZZ8hnyGfIZ8hnyHfJZ8l3yWfIZ8hnyGfJd8l3yXfJd8l3yXfJd8l32XfZd9l32XfZd8l32XfJd9l32XfZd9l32XfZd9l32XfZd9mH2XfZh9l32XfZd9l32XfZh9qH2Yfah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9p32XfZd9mH2Yfah9qH2ofad9mH2ofZh9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofal9qH2pfqh9qH2ofal9qX2pfql+qX6ofal+qH2pfql+qX65frl+uX65frl+uX65frl+uX65frl+uX65frl+uX65frl+uX65fal+qX6pfrl+uX65frl+uX6pfrl+uX65frl+uX65frl+uX65frl+uX66frl+un65frl+uX65frp+un66frp+uX66frl+un66frp+un66frp+un66frp+un66fsp+un7Kfrp+yn7Kfsp+yn7Kfsp/yn7Kfsp+yn7Kf8p/yn/Kf8p+un66frp+un66fsp+yn7Kfrp+un66fsp+yn7Kfsp+yn7Kfsp+yn/Kf8t/yn/Lf8p+yn/Kf8p/y3/Lf8t/yY+6fsp+un7KfsWuYP8GrmD/C3/Kfst/y37GrmD/Bq5g/wD/BLpA/wS7Radlp2WnZadg/wS7QP8Eu0WnZadlp2Wna3/Lfst/y3/GrnD/Bq5w/wt/y3/Dv0O/Rq5w/wHfIP8A/wS7QP8Eu0WnZadlp2WnYP8Eu0D/Ae4Vp2WnYtwi3Caod5mGmHeaiIuTzjiLk842mHeahph3momLk845i6POMP8A/wD/Ae8WrXS9V5qEu1D/Ae8Q/wHvFpl0ukaoc8pGmHiahph4momLo845i6PONph4moapZ5qJi6PONq1x7xD/Ae8Q/wHvFqhzyTaoc8kw/wHvEP8A/waoc8lEu0HtEP8A/wD/AP8DzTS9V5h0u1D/AP8A/wD/BadjukS2U8kw/wD/AP8A/wmLqYynmYiagP8A/wD/AP8GqGaodaZVp2D/AP8A/wD/BLVTyDS1Qsgw/wD/AP8A/wS2U8gyyjHcEP8A/wD/AP8EtlWmVLZVtlD/AP8A/wD/BLZVtlLbJbZZjKD/CJqQ/wD/Ae8Q/wS8V5lw/wanYP8A/waocP8Gp2ebiJuXmYeZeJqTzjeZdql2qGanZadlp2anZqdlp2WnZadg/wWnYP8A/wWnYP8EuVWnYP8Fp2D/AP8A7gD/AP8Fp2WnZadlp2WnZadmp2aodahWp2D/AtwmqHPMMO8A/wD/AP8A/wD/B5yJjKPNOJqQ/wD/Ae4Q/wLNJ5mC3Caoeo2x7xascP8A/wLfIP8GnXPNMP8CzSD/AP8Ii5D/B5mB7hD/AP8A/wLcJqdizDWnYP8A/wD/At0lqWanZph2p2PLMP8EuFD/AP8GmHD/BLlFp2HtFadkt1D/Ae4Q/gD/Co26jKmMqIuZjKiciJqXmoial5mHmXaYd5l2mHaYdqhw/wD/At4g/wPOOYyg/wialLtA/wS6QP8A/wWqYP8Eu0aodqhlp2WnZqhmqHaodph1p2WnYP8B3SaYdaph7hD/BLtA/wLdIP8A/wWoYP8Gp2D/AP8A/wHeI8w2qGeZdqhpjKqMuIuZi6qNs845i6PON5mImoaYd5mIipLON5qCzTD/AP8A/wD/AP8DvULdJphg/wD/AP8B7hWoVaZVplSmVqhmmHWnZqhnmYLNJphyzSWnZqdlqFLcJphyzSLNIe4Q/wHuEP8B7hWmVLZVp1SmUP8B7hD/AP8Fp2WmUtwi3Ceah5qGmGaYcs4lrGaYdpl1plWnVLZUplWnZphlplWnaIqYi5eZh5qIi5iLl4qIi5aYdpl2mHaZd5mHioeZh4qEtUSmVKZVplWnVphlp2aYdaZVp2O5RphmmHeZh5l4ipaZd5mHmoiKl4qIi5iLmIuYi5iLmYypfamMqYypfbp9uIuQ/weKgP8A/wS7QP8DukeKgP8HioD/AP8DuTD/A7o1p2WnVKZUplWXZphkplWXZKVEtUSlRLVEplWnVKZVp1iKgP8Ii5D/AP8DujD/A7pJjKDvCXyjvUD/Ad0Q/wD/BKZUpkSmVKZUplWXYd0Q/wWmVLhA7gD/AP8B3hD/A7s3mXeKhph3ioiLkr44i5D/BphniXaYd4qHioD/CIuQ/wD/AO8A/wLOJ4yIi5eKh4lw/wD/AP8A7wHvEe4Q7hDuFph3ioaZd4qIi5D/CIuQ7weJd4qGmXeKiIuTvTeLh4qA/wLMMP8B3RWXZKZUplSlQP8A/wDvAP8CuTOlQP8A/weKh4p2mXaYYP8A/wHeEP8A7hDuEO4A7gD/AP8A7gDuAs4ninDuFph3ioeKhol2iXD/BZdQ7RSmVZhlmGSmVZdUpkSlQ6VDpUSlRKVDtkD/A7VDpUHcEP8A7RD/AP8ByySlRKZB3BSlRKZUl1SmRJZSuDSlRKZEpkSmRJZTp0HMJ4qCziaJcs0g/wD/AP8A/waIYs0lmGLNIP8A/wD/AO4A/wOrQcwkllWYZJlUllSWU6dDpUOlQ6UzpUOlQ7QzpTWXYc0ll2HNIP8A7gD/AO4Fl1HNIc0g7wD/AO4A/wD/A6VDtDOlQ6UztDOlM6UzpUSmQ6VB3BHbE6VDpkK4NJZB3hOqRJdUl1WIZYlkl1WIY6VEpkOlQ6ZEllSXVJZUl1aJdop1iGaJdnp2eoaKdnp1iGWJZYhliWaJdnp2iXZ6c6VElkOmRJdUl1WXVZhliGSWVZhkl1WIZYhmiXaJdnp1iGWJdYlmiXaKdnp2enZ6dol2enZ6dnp2enZ6dnp2enZ7hnuGe4Z7hnuGe3Z7hnp2e4Z7hnp2e3Z6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dXp2enZ6dnp2enZ6dXp1enV6dnp2enZ6dnp1enV6dXp1enZ6dXp1enV6dXp1enV6dXp1enV6ZXp1emV6ZXplemV6ZXplemV6ZXplemV6ZXpleWV6dXp1enV6dXp1emV6dXplenV6dXp1enV6ZXplemV6ZXplemV6ZXpleWV5ZXlleWV6ZXllemV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlkeWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlUeWR5VXlleWV5ZXlleWR5ZHlkeWV5ZXlleWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5VHlUeVR5VHlkeVR5ZHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHhUeFN4VHhTeFR5VHhUeFR4U3hTeFN4U3hUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR4VHhUeFR4U3hUeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeEN4U3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4U3hTeFN4U3hDeEN4Q3hDeFN4Q3hTeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEJ4Q3hDeEN4Q3hDeEJ4QnhCeEJ4QnhCeEJ3QndCd0J3QndCd0J3QndCd0J3QndCd0J3Q3hDeEN4QnhCeEJ4QnhCd0N4QnhCeEJ4QnhCd0J4QndCd0J3QndCd0J3QndCd0J3QndCd0J3QndCd0J3QndCd0J3QndCd0J3QndCdzJ3Mncyd0J3QndCdzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3Mncyd0J3MndCdzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncxdzJ3MncydzJ3MncxdzJ3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzJ3MncydzF3MncxdzF3MXcydzJ3MncxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXYxdzF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXcxdzF3MXcxdzF2MXYxdjF3MXcxdzF2MXcxdjF2MXYxdjF2MXYxdjF2MXYxdjF2IXYxdjF2MXYxdiF2IXYxdjF2MXYxdjF2IXYhdjF2IXYhdjF2IXYxdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2MXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2MXYhdiF2IXYhdjF2MXYxdjF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYxdjF2MXYxdjF2IXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXcxdjF3MXYxdjF2MXYxdzF3MXcxdzF3MncxdzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MXYxdzF2MXcxdzJ3MncydzF3MXcxdzF3MncydzJ3MncydzJ3MncydzJ3MndCdzJ3QncydzJ3MncydzJ3QndCd0J3MndCdzJ3QndCd0J3Q3dCdzJ3QndCd0J3Q3dDd0N3Q3dDeEN4Q3hDeEN4U3hDeFN4Q3hDeEN4Q3hTeFN4U3hSd0J3QndDd0N3Q3hDeEN4QndDd0N3Q3dDeEN4Q3hDeEN4Q3hTeEN4U3hUeFR4VHhTeFN4U3hUeFR4VHhUeFR4U3hUeFR4VHhUeFR4VHhUeVR4VHhUeFR4VHhUeWR5VHlkeWV5ZHlleWV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlleXR4VHhUeFR5VHlleWR5ZXlkeFR5ZHlUeWR5ZXlleWV5ZXlleWV5ZXlleWV5dXl2enV5ZXlleWV5dXl2enZ6dnp1eWV6dXl2enZ6dnp2enZ6dXl2enZ6dnp2enZ6hnp3eoZ6h3qHeod7h3uHe5d7iHuXeod7h3uHe4d7mHuYe5h7lnp2enZ6dnp2eod6h3qHeoZ6dnqGend6h3qHe4d7h3uHe4d7l3uIe5h7mHyYe5h8l3uYe5h7mHuYe5l8qHyZfKZ8h3yWfId8l3yXfJd8l3yWfJd8l3yXfJd8l32XfJd9l32XfZd9l32XfZd9l32YfZd9l32XfZd9l32Yfah9mH2nfJd8l3yXfJd9l32XfZd9l3yXfZd8l32XfZd9l32XfZd9l32XfZh9mH2ofah9qH2nfZh9qH2Yfah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofal9qX6pfal+qH2pfah9qX6pfql+uX6pfrh9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qX2ofal+qX2pfql+qX65frl+uX65frl+qX65fql+uX65frl+uX65frl+uX65frl+uX65frl+uX65frl+uX65frl+uX65frl+un65frp+un66frp+un66frp+un66frp+un7Kfrp+yX65frl+uX65frp+uX66frl+uX65frl+un66frp+un66frp+un66frp+un7Kfsp+yn66fsp+un7Kfsp+yn7Kfsp+un7Kfsp+yn7Kfsp+yn/Kfsp+yn7Kfsp+yn/Kf8p/yn/Lf8p/y3/Lf8efi3/Lf8t/y3/Lf8t/y3/Lf8t/y37Kfsp+yn7Kf8p/y3/Kf8t/yn/Kf8p/yn/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lfst/y3/Lf8t/y3/Lf8t/y3/Lf8t/wP8A/wt+yn6w/wD/CYyoi5p+yo66fsqNuYyompmMqJqA/wD/B5l2qGD/AP8Fp1WnVpl2p2eZdqhlp1WnZadlp2p+yo27fsqNuYyompmNuYyrfsp+y3/LfsqNuY27fsqNt5mGmHial5qGqGaoZ5mHmYmMqYuqjbqNuIuYi5qNuo20uleZhqhnmYPOMP8ImpiLlqhnmXaoZ5l4moibl5qImpD/AP8ImpeZge4Q/waodadompeZiJqXmYaodadmmHanZph3mYiaiJuYmoiLmYupjKmLqYyqjbqNuoy6jbqOy47Im5iaiYypi6eZhph4m5iaio26jLuOy47JjKmMqo26jbD/AP8EtlS2UP8A/wS2VLVVplW2VadlpmW2VLZVplWmUP8A/wS1RLZQ/wW2VLZVtlS2VLZVplWmVLZVplWmUtwmqHaoZ5mHmYanZqdnmYeZiYupi6qNuo25i6mLqo26jbanZqdnmYeZhqdkuleZh5mJi5mLmo26jbmLmYuajbqNtaZg/wWmYP8A/wLMMP8Gp2S5QP8A/wD/AP8EuUD/AP8A/wD/Badlp2D/AP8GqGaodadlp2LcJaZVp2WnZaZVp2LcItwnmYeZctwi3CaYdqdom5iaiYyoi5eZhqh3moeZc7lFtlWnZaZVplWnZadmp2WnZadmqHaodqdmmHaYd5mDzTeZdqh2mHaYdqdmqHanZqdmqGWnZqdmqHaoZqh2mHWnZadlp2WnZadR3CanZqdmqGaYd5l3mYaYdph3mYeZhadmqHaYd5mHmXeZiJqIi5eZiJqYmpmMqYupjKqNuo24moiLmYupjKiLmIuajLqMuo26jbt+y37Kfrp9u37LfsD/AP8Fp2anYP8A/waYdph2mHaod5mGmHaYdph2mHaYc803mYaZdph2mHanZph2p2aYdph2mHaoZph2qGaYdph4ipeaiYyoi5eZh5l4ipiaio25jKt+yn25jKmLqo26jbaYdph3moeahph3mXiaiIqYi5iLmYy5jKmLmYyqjbqNtLlA/wWnZqhg/wD/Bph3mXaoZph2mHeZd5l3mXeZh5mA/wD/Bph2mGD/AP8Fp2WmVph2mGaZdph1p2WmVadlpleZiIqIi5mLmIqXiomLqIuZjKmMqn26fbmMqYyqfbp9t5mGmHiKl5qGmGWnZ5l2mXmMqIuZjKmMqIuYipmMqYyh7RaYZadWmGeZeIuXmXiLladWmGWnZphmmXiKlpl3iomMqn25jKp9un26fbp9un25jKl9qIyZfap9un26fbp9tadmmHaZd5mHmXeKh4qIi5iKmIuZjKmMqIuZjKmMqXyoi5l8qYypfal9un25fbp9uXypfbl9qX25fbp9un25fbl9p4yJfaiLkd4g/weKhph5fbiMmX25jKeKhpl4i5eJgP8B3RWnZKZTujWXZKZVp1WXZadWmGWnZKZVp1WnVadafbl8qX25faiLl4qJjKiLmX25fbp9uX25fKiMmX2pfKaZdphnioeJdZdll2aZdpl4i5eKiXyojJeKh4qIi5iLlphniXWXZph3ioaJdol2iXWXZZhll2WYZpl2iXaZdol1mWLMJphll2D/AP8EplSmRpl1mGaJdpl1l1SmVZhll1WYZph2iXeJdol3ioeKh4uHioeLiIuYfJiLmHuYfJh8l4qHioeLl4uGiXWYZ4qGiXh8mHuYfJh8l4uXioh8mHuQ/wD/BKVEpUHcFKZEpkSmVKZEpkSmVKZUpkSmVKZUplSmVKZUplSWU7ow/wSXVZdkllSXVJdVl1WXVZhlmGWIZZdll1aJdZhll1WXVZhlmGeKhol3i4eKhol2iXeKh4qFl2WYZZhmiXWIZolmiXaJdol2ineKh4uGioeKh3uHe4D/AP8FmGWYYP8A/wWXVJZViGWYZYhlmGWXVJZVl1SWUP8A/wOmQ6VB2xSWQ6VElkOlQ6VDpkOlQ6VElkOlRJZGiXWIZol2iXWXZJdViGWYZ4p2ind7h3qGiXWJdoqGinSWQ6ZEl1SXVKZEllSXVZdViGWIZol2iXWIZYhmiXaKdJdViWSXVYhminZ6hop2eoSXVYhkl1WIZol2enaJdnp2e4Z7hnuGenZ6dnp2e4Z6dnp2enZ6dnp2enZ6dnp2enSXVYhliGWJZYl2enaKdnp1iWaJdop2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dXp1enV6dXp2enV6dnp1enV6dXp1enV6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dXp1enV6dXp1enV6dXplenV6ZXp1enV6dXp1enV6ZXplemV6dXp1enV6ZXplemV6ZXplenV6ZXplemV6ZXllemV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlleWV5ZHllemV6ZXplemV6ZXlleWV5ZXpleWV6ZXlleWV5ZXlleWV5ZXlleWV5ZXlkeWR5ZHlleWV5ZXlkeWR5ZHlkeWR5ZXlkeWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlkeVR5ZHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5ZHlkeWR5ZHlkeVR5VHlUeWR5ZHlkeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeFR5VHlUeVR5VHlUeFR5VHhUeVR5VHlUeVR4U3hUeFN4VHlUeFR4VHhTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4RHhUeFR4U3hTeFN4U3hTeFR4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4Q3hDeEN4Q3hTeFN4U3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hCeEJ4QnhDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4QnhCeEJ4QndDeEJ4Q3hCeEJ3QndCeEJ3QnhCeEJ4QnhCd0J3QndCd0J3QndCd0J3QndCd0J3QndCd0J3QndCd0J3Qncyd0J3MndCd0J3QncydzJ3MncydzJ3QndCd0J3QndCd0J3QndCd0J3QndCd0J3Qncyd0J3QndCdzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncxdzF3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzF3MXcxdzF3MncxdzF3MXcxdzF3MXcxdzJ3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdjF3MXYxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdjF3MXYxdzF2MXcxdjF2MXYxdjF2MXcxdjF3MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYhdiF2IXYhdjF2MXYhdiF2IXYhdiF2MXYxdjF2MXYxdjF2MXYhdjF2MXYxdjF2MXYxdjF2MXYhdiF2MXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdjF2IXYxdiF2IXYhdiF2IXYxdjF2MXYxdjF2MXYxdjF3MXYxdzF2MXYxdjF2MXcxdzF3MXcxdiF2IXYhdjF2MXYxdjF2MXYhdjF2IXYxdjF2MXYxdjF2MXYxdzF3MXcydzF3MncxdjF3MXcxdzJ3MncydzJ3MXcydzF3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3Qncyd0J3QndCd0N3Qncyd0J3QndCd0N3Q3dDd0J3MncydzJ3MncydzJ3MndCdzJ3MncydzJ3MndCd0J3QndCd0J3Q3dDd0N4Q3dDeEJ3Q3dCd0N3Q3hDeEN4Q3hDd0N4Q3hDeEN4Q3hTeEN4U3hDeEN4Q3hDeFN4U3hUeFN4VHhTeFR4VHhUeFR4VHlUeFR4VHhUeFR4VHlkeFR5Y3hDeFN4Q3hTeFR4U3hUeFN4U3hTeFN4VHhUeFR4VHhUeFR4VHhUeVR5ZHlkeWV5ZHhUeWR4VHlkeWV5ZXlleWR5ZHlkeWV5ZXlleWV5ZXlkeWV5ZXlleWV5ZXlleWV5dXlleXV5dnp2enZ6dnp2enV5dnp2enZ6dnp2enZ6dnqFeWV5ZXlleWV5ZXl1eXZ6dXlleWV5ZXl1eXZ6dnp2enZ6dnp2enZ6dnp3eoZ6h3qGenZ6dnp2eod6h3uHeod7hnp3eod6h3qHe4d7l3uIe5d6h3uHe4d7h3uYe5h7mHuYe5h7mHuYfJl8qXypfKl8qHuZfKh8mXypfKl8qXypfKd7h3uXe4h7mHuYe5h7mHyXe5h7mHuYe5h7mHyofJl8qXypfKl8qXypfKp8uXyqfbl8qXypfKl8qny6fbp9un23fZd9l32XfZd9l32XfZh9l32XfZd9l32XfZh9qH2Yfah9mH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9p32XfZd9mH2YfZh9qH2ofad9mH2YfZh9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofal9qH2pfqh9qH2ofah9qX2pfql+qX6ofal9qH2pfql+qX65fql+uX65frl+uX65frl+uX65frl+uX65frl+uX65frl+uX65fal+qX2pfql+uX65frl+uX6pfrl+qX65frl+uX65frl+uX65frl+uX65frl+un65frl+uX65frp+un66frp+uX66frl+un66frp+un66frp+un66frp+un66frp+un7Kfrp+yn7Kfsp+yn7Kfsp+yn7Kfsp+yn7Kf8p/yn/Kf8p+un66frp+un66fsp+yn7Kfrp+un66frp+yn7Kfsp+yn7Kfsp+yn/Kf8p/yn/Lf8p+yn/Kf8p/yn/Lf8t/y3/Kf8t/yn/Lf8t/y3/Lf8t/yn/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/bf9t/23/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf9t/23/bf9t/23/Lf9t/y3/bf9t/23/bf9t/y3/Lf9t/23/Lf8t/23/bf9t/23/bf9t/23/bf9t/237Lfst/3H/bfst+zH/cf9x/3H/cf9x/3H/cf9x/3H/bf9t/23/bf9t/3H/bf9x/23/bf9t/23/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/237Lfsx/3H/bf8t/3H/cf9x/3H/cf9x/3H/cf9x/3H/bf9t/3H/cf9t/y37Mf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/bfst+zH/cf9t+y37Mf9x/3H/cf9x/3H/cf9x/3H/cf9t+y37Mf9x/237Lfsx/23/cf9x/3H/cf9x/23/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9qNuYyrfsqNuYuYmomMqYurfst+y3/Lf8qNuo27fst+x5mHmYmLmIuYmoiLmYupjKqMuoy7jsqOyo26jbt+y37Mf9x/3H/cf9t/23/cf9x/3H/cf9x/3H/cf9x/3H/cf9t+y37Mf9x/23/Lf8x/23/cf9t/3H/bf9t/23/bf9t/2YyqjbqNu37Lfst+y37Lf8t+y37Lfst+y37Lf8t/y3/bfst/y3/Lf8t+y37Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf9t/23/bf8t/23/Lf9t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lfst/y3/Lf8t/y3/Lfst+y37Lfst+y37Lf8t+y37Lfst+y37Lfst+y37Lfst+y37Lfsp+yn67fst+yn7Kfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfsp+yn7Lfst+yn7Kfbt+yn7Lfst+y37Lfst+yn7Kfsp+yn26fbp+yn66fbp9un66frp+yn66frp+un66frp+un67fst+y37Kfsp+yn7Kfsp+yn7Kfsp+yn7Kfsp+un7Kfrp+un66frp+un66frp+un66frp+un66frp+un66frp+uX25fbp+un66fbp9un66fbp+un66frp+un66fbp9un26fbp9un26fbp9un26fbp9un26fbp9un26fbp9un25fbp+un66frp9un26fbp9un26frp9un26fbp9un26fbp9un26fbp9un26fbl9uX25fbp9un26fbp9uX25fbl9uX2qfbl9uX25fbl9qX2pfal9qX25fbl9uX2pfal9qX2pfal9qXypfal9qXypfKl9qX2pfal9qX2pfal9qX2pfal9qX25fal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal8qX2pfKl8qHypfal8qXyofKl8qHypfal8qXypfKl8qHypfKh8qHyofJh8qHyofJh8mHyYfJh8qHyYfJh8mHyYfJh8mHyZfKl8qXypfKh8qHyofKh8qXyofKh8qHyofKh8mHyofJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYe5h8mHyXe5d7mHyYfJh8mHyYfJh8mHyYfJh8mHyXe5d7mHyYfJd7l3uHfJd7mHyXfJh8l3uXe5d7l3uXe5h8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8l3yYfJd8mHyXe5d7l3uXe5d7h3uXe4d7l3uXe5d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4Z6hnqHe4d7hnp2eod7h3uHe4d7h3uHe4d7hnuHe4Z7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7hnuGe4Z7h3uHe4d7hnuGe4Z7hnuGe4Z6dnp2e4Z7hnp2enZ7hnp2e4Z7hnuGe4Z7hnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2e4Z7dnuGe3Z6dnp2enZ6dnt2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dXp2enV6dnp2enZ6dnp1enV6dXp1enZ6dnp2enV6dXp1enV6dXp1enV6dXp1emV6ZXplemV6ZXp1emV6ZXplemV6ZXpleWZ6dXp1enV6dXp1enV6dXplenV6dXp1enV6dXplenV6ZXplemV6ZXplemV5ZXlleWV6ZXplemV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlkeWV5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5VXlleWV5ZXlleWR5ZXlkeWV5ZXlleWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlUeVR5VHlkeWR5ZHlkeVR5VHlUeVR5ZHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeFR4VHhTeFR5VHhUeVR4U3hTeFN4U3hUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR4VHlUeFR4U3hUeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hDeEN4Q3hTeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4U3hTeFN4U3hTeEN4Q3hDeFN4U3hTeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEJ4QnhCeEJ4QnhCeEJ3QndCd0J3QndCeEJ3QndCd0J3QndCd0J3Q3hDeEN4QnhCeEJ4QnhCeEN4QnhCeEJ4QnhCd0J3QndCd0J3QndCd0J3QndCd0J3QndCd0J3QndCd0J3QndCd0J3QndCd0J3QndCdzJ3Qncyd0J3QndCdzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3Mncyd0J3MndCdzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncxdzJ3MXcydzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzJ3MncydzJ3MncxdzF3MXcydzF3MncxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF2MXcxdzF3MXYxdzF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXcxdzF3MXcxdzF3MXcxdjF3MXcxdzF2MXcxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2IXYhdjF2MXYxdjF2MXYhdiF2MXYhdjF2IXYxdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdjF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYxdiF2IXYhdiF2IXYhdiF2MXYxdjF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdjF2IXYxdjF2MXYxdjF2IXYxdiF2MXYxdjF2MXYxdjF2MXYxdjF2MXcxdjF3MXYxdjF2MXYxdzF3MXcxdzF3MXcxdzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MXYxdzF2MXcxdzJ3MXcydzF3MXcxdzF3MncydzJ3MncydzJ3MncydzJ3MncydzJ3QncydzJ3MncydzJ3QndCd0J3MndCdzJ3QndCd0J3QndCd0J3QndCd0J3Q3dCd0N3Q3dDeEN3Q3hDeEN4U3hDeFN4Q3hDeEN4Q3hDeFN4U3hSd0J3QndCd0N3Q3hDd0N4QndDd0J3Q3dDeEN4Q3hDeEN4Q3hDeEN4U3hUeFN4VHhTeEN4U3hTeFR4VHhUeFR4U3hUeFN4VHhUeFR4VHhUeFR4VHhUeFR4VHhUeVR4VHlkeWR5ZHlleWV5ZXlleWV5ZHlleWV5ZXlleWV5ZXlleXR4VHhUeFR4VHlkeWR5ZXlkeFR5VHhUeWR5ZXlleWV5ZXlleWV5ZXlleWV5dXl2enV5ZXlleWV5dXl2enZ6dnp1eWV5dXl2enZ6dnp2enZ6dXl2enZ6dnp2enZ6dnp2eoZ6d3qGeod6h3uHe5d7iHuXeod7h3qHe4d7mHuYe5h7lnp2enZ6dnp2end6hnqHeoZ6dnp2enZ6h3qHe4d6h3uHe4d7h3uIe5h7mHuYe5h8l3uYe5h7mHuYe5h8qHyZfKh7mHuYe5h8mXypfKl8qXyoe5h8qHyZfKl8qXypfKl8qXyqfLl8qn26fbp9un26fbp8un26fbp9un27fbp9u33IfKl8qXypfKl8qny5fKp9uXypfKl8qXypfLp9un26fbp9un26fbp9un27fct9y33Kfbp9un27fct9y37Lfct+yH2Yfah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofal9qX6pfal+qH2ofah9qX6pfql+qX6pfrh9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qX2ofal9qX2pfql+qX6pfrl+uX65frl+qX65fql+uX65frl+uX65frl+uX65frl+uX65frl+uX65frl+uX65frl+uX65frl+un65frp+un66frp+un65frp+un66frp+un66frp+yX65frl+uX65frp+uX66frl+uX65frl+un66frp+un66frp+un66frp+un7Kfrp+yn66frp+un66fsp+yn7Kfsp+un7Kfsp+yn7Kfsp+yn/Kfsp+yn7Kfsp+yn/Kf8p/yn/Lf8p/y3/Lf8t/y3/Lf8p/y3/Lf8t/y3/Lf8t/y3/Kfsp+yn7Kfsp/yn/Kf8t/yn7Kf8p+yn/Kf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/bf9t/23/bf9t/23/bf9t/23/bf9t/23/bf9t/23/bf9t/y3/Lf8t/y3/bf9t/23/bf8t/y3/Lf9t/23/bf9t/23/bf9t/23/bf9x/3H/cf9t/23/bf9x/23/cf9x/3H/bf9x/23/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/bf9x/23/cf9t/23/bf9t/23/bf9t/23/bf9t/23/Lf9t/zH/cf9x/3H/cf9x/23/bf9x/3H/cf9x/3H/bf9t/23/bf9t/23/bf9t/23/Lf8t/y3/bf8t/23/Lf8t/y3/Lf8t/23/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lfst/y37Lfst+y37Lfst/y37Lfst+y37Lfst+y37Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfsp+y37Lfst+y37Lfsp+yn7Kfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Kfst+yn7Kfsp+yn7Kfrp+yn7Kfsp+yn7Kfrp+un66fsp+yn7Kfsp+un66frp+un7Kfrp+yn66frp+un66frp+un66frp+un66frp+un26frp+un66frp+un26fbp9un66frp+un66frp+un66frp+un66frp+un66frp+un66frp+un66fbp9un26fbp9un66fbp+un26fbp9un26fbp9un26fbp9un26fbp9un26fbp9un26fbp9un26fbl9un25fbl9uX25fbl9qX2pfal9uX25fbl9qX2pfal9qX2qfbp9un26fbl9uX25fbl9un26fbp9uX25fbl9uX25fal9uX2pfbl9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfKl8qXypfKl8qX2pfKl8qXypfKh8qXyofKl9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qXypfKl8qXypfKl8qHyofKh8qHyofKl8qHypfKh8qHyofJh8qHyYfKh8qHyofKh8mHyYfJh8mHyofJh8qHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyofJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyXfJh8mHyYfJh8mHyXfJd8l3uYfJh8mHyXfJd7l3uXe5d7h3uXe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uIfJd7l3yXe5d7l3uHe5d7h3yXe5d7l3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7hnuGe4Z7hnuGe4Z7hnt2e4Z6dnuGe4Z7hnuGe3Z6dnt2end7h3uHe4d7h3uGe4Z7hnuHe4Z7h3uGe4Z7hnuGe4Z7hnuGe4Z7hnp2enZ6dnp2enZ7dnp2e3Z6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dXp1enV6dXp2enV6dnp1enV6dXp1enV6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dXp1enV6dXp1enV6dXp1enV6dXp1enV6dXp1enV6ZXp1emV6dXp1enV6ZXplemV6ZXplenV6ZXplemV6ZXplemV6ZXpleWV6ZXlleWV5ZXlleWV5ZXlleWV5ZXlleWV5ZHllemV6ZXplemV6ZXlleWV5ZXplemV6ZXlleWV5ZXlleWV5ZXlleWV5ZXlkeWR5ZHlleWV5ZXlkeWR5ZHlkeWR5ZXlkeWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlUeWR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5ZHlkeWR5ZHlkeVR5ZHlUeWR5ZHlkeWR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeFR5VHhUeVR5VHlUeVR4VHhUeFN4VHlUeFR5VHhUeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4RHhUeFR4U3hTeFN4U3hTeFR4U3hUeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hDeEN4Q3hTeFN4U3hTeEN4Q3hDeEN4U3hDeFN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4QnhDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4QnhCeEJ4QnhDeEJ4Q3hCeEJ4QnhCd0J3QnhCeEJ4QnhCd0J3QndCd0J4QndCeEJ3QndCd0J3QndCd0J3QndCd0J3QncydzJ3MndCd0J3QndCdzJ3MncydzJ3QndCd0J3QndCd0J3QndCd0J3QndCd0J3QndCd0J3MndCd0J3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzF3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MXcxdzF3MncydzJ3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXYxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdjF3MXYxdzF3MXcxdjF2MXYxdjF2MXcxdjF3MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2IXYhdiF2IXYxdjF2MXYhdiF2IXYhdiF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYhdiF2IXYhdiF2IXYhdiF2MXYhdjF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYxdiF2IXYhdiF2IXYxdjF2MXYxdjF2MXYxdjF3MXYxdzF2MXYxdjF2MXYxdzF3MXcxdiF2MXYhdjF2IXYxdjF2MXYhdiF2MXYxdjF2MXYxdjF2MXYxdjF2MXcxdzF3MncxdjF3MXcxdzF3MncydzJ3MXcxdzF3MncydzJ3MncydzF3MncydzJ3MncydzJ3MncydzJ3Mncyd0J3QndCd0J3Qncyd0J3QndCd0N3QndDd0J3MncydzJ3MncydzJ3MndCdzJ3MncydzJ3MndCd0J3QndCd0J3QndDd0N4Q3dDeEJ3Q3dCd0N3Q3dDeEN4Q3hDd0N4Q3dDeEN4Q3hDeEN4U3dDeEN4Q3hDeEN4U3hTeFN4VHhTeFR4VHhUeFR4VHhUeFR4VHhUeFR4VHlUeFR5Y3hDeFN4Q3hTeFR4U3hUeFN4Q3hTeFN4U3hUeFR4VHhUeFR4VHhUeFR5VHlkeWV5ZHhUeVR4VHlkeWV5ZXlleWR5ZHlkeWV5ZXlleWV5ZXlkeWV5ZXlleWV5ZXlleWV5dXlleXV5dXl2enZ6dnp2enV5dnp2eXZ6dnp2enZ6dnqFeWV5ZXlleWV5ZXl1eWV5dXlleWV5ZXlleXZ6dnp2enZ6dnp2enZ6dnp3eoZ6h3qGenZ6dnp2eod6h3uHeod7hnp3eoZ6h3qHe4d7h3uIe5d6h3uHeod7h3uIe5d7mHuYe5h7mHuYe5h8qXypfKl8qHuYfKh7mXypfKl8qXypfKd7h3uHe4h7mHuYe5h7mHuXe4h7l3uYe5h7mHyoe5l8qHypfKl8qXypfKl8uXyqfbl8qXypfKl8qXyqfbp8un25fKl8uXyqfbp9un26fbp9uXy6fbp8un26fbp9un27fcp9u33Lfct9y33Lfst+y37Lfct+y33Lfst+zH7Lfsx+2n26fbp9un26fbt9y33Lfcp9un26fbt9y33Lfst9y37Lfct+y37Lfsx+zH7cftx+237Mfst+zH7cftx+3H7cfth9qH2ofah9qH2pfql9qX6ofal9qH2pfal+qX6pfql+uX65frl+uX65frl+uX65frl+uX65frl+uX65frl+uX64fal+qX6pfql+uX65frl+uX6pfrl+qX65frl+uX65frl+uX65frl+uX65frl+un65frl+uX65frl+un66frp+uX66frl+un66frp+un66frl+un66frp+un66frp+un66frp+yn7Kfsp+yn7Kfsp/yn7Kfsp+yn7Kfsp+yn/Kf8p+un66frp+un66fsp+un7Kfrp+un66frp+yn7Kfsp+yn7Kfsp+yn7Kf8p/yn/Lf8p+yn/Kfsp/yn/Lf8t/y3/Kf8p/yn/Lf8t/y3/Lf8t/yn/Lf8p/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/bf8t/y3/Lf8t/y3/bf8t/23/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf9t/23/bf9t/23/Lf8t/y3/bf9t/23/bf9t/23/bf9t/23/bf9t/23/bf9t/23/bf9t/23/bf9t/23/bf9t/3H/cf9x/3H/cf9t/3H/cf9x/3H/cf9x/3H/bf9t/23/bf9t/23/bf9x/23/bf9t/23/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/bf9x/23/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/bf9x/23/cf9x/3H/bf9t/23/bf9t/3H/bf9t/23/bf9t/23/bf9t/23/bf9t/23/bf9t/23/bf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/23/bf9t/23/bf8t/y3/Lf9t/23/bf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lfst/y3/Lf8t/y3/Lfst+y37Lf8t/y3/Lf8t+y37Lfst+y3/Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+yn7Lfst+y37Lfst+yn7Lfsp+yn7Kfsp+yn66frp+un66frp+yn66fsp+un66frp+un67fst+y37Kfsp+yn7Kfsp+y37Kfst+yn7Kfsp+yn7Kfrp+un66frp+un66frp+un66frp+un66frp+un66frp+un66frp+un66frp9un66fbp+un66frp+un66fbp9un26fbp9un26fbp9un26fbp9un26fbp9un26fbp9un25fbp+un66frp+un26fbp9un26frp9un66fbp9un26fbp9un26fbp9un26fbl9uX25fbp9un26fbl9uX25fbl9uX26fbl9uX25fbl9uX2pfbl9qX25fbl9uX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX25fal9uX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal8qX2pfKl9qX2pfal8qX2pfKl8qXypfal8qX2pfKl8qHyofKh8qHyofKh8qHyofJh8mHyYfJh8qHyofKh8mHyYfJh8mHyZfal8qXypfKh8qHyofKh8qXypfKl8qHyofKh8mHyofJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8l3uXfJd7mHyYfJh8l3yXe5d7l3uXe4h8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJd8mHyXe5d8l3uXe5d7h3uXe4d7l3uXe5d7h3uHe4d7h3uHe5d7h3uXe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7hnuHe4Z7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4Z7hnuGe4Z7h3uHe4d7hnuGe4Z7hnuGe4d7hnuGe4Z7hnuGe4Z7hnt2e4Z7hnuGe4Z7dnp2e3Z6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2e4Z7dnuGe3Z6dnp2enZ6dnuGe3Z6hnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dXp2enZ6dnp2enZ6dnp1enV6dXp1enZ6dXp2enV6dXp1enV6dXp1enV6dXp1enV6ZXplemV6ZXp1emV6dXplemV6ZXpleWZ6dXp1enV6dXp1enV6dXp1enV6dXp1enV6dXplenV6ZXplemV6ZXplemV5ZXpleWV6ZXplemV5ZXlleWV5ZXllemV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlleWV5ZHlleWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZXlleWV5ZXlleWR5ZHlkeWV5ZXlleWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlUeWR5VHlkeWR5ZHlUeVR5VHlUeVR5ZHlUeWR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeFR4VHhTeFR5VHlUeVR4VHhTeFN4U3hUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR4VHlUeFR5VHhUeFN4U3hTeFN4U3hUeFN4VHhTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4U3hTeFN4U3hTeEN4U3hDeFN4U3hTeFN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hCeEN4QnhCeEJ4QnhCd0J3QndCeEJ3QndCd0J3QndCd0J3Q3hDeEN4Q3hCeEJ4QnhCeEN4QnhDeEJ4QnhCd0J4QndCeEJ3QndCd0J3QndCd0J3QndCd0J3QndCd0J3QndCd0J3QndCd0J3QndCdzJ3Qncyd0J3QndCd0J3QncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3Mncyd0J3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncxdzJ3MXcydzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzJ3MncydzJ3MXcxdzF3MXcydzJ3MncydzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXcxdzF3MXcxdzF2MXcxdjF3MXcxdzF3MXYxdzF3MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdiF2MXYxdjF2IXYhdiF2MXYhdjF2MXYxdjF2IXYhdjF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYxdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2MXYhdiF2IXYhdiF2MXYhdjF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdjF2MXYxdjF2IXYhdiF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF3MXYxdjF2MXYxdjF3MXcxdzF3MXcxdzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MXYxdjF2MXcxdzF3MXcydzF2MXcxdzF3MXcydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3Qncyd0J3MncydzJ3QndCd0J3QndCdzJ3Qncyd0J3Q3dCd0N3Q3dDd0N3Q3hDeEN4Q3hDeFN4Q3hDeEN4Q3hDeFN4U3hSd0J3QndCd0N3Q3dDd0N4QndDd0J3Q3dDd0N4Q3hDeEN4Q3hDeEN4U3hUeFN4VHhTeEN4U3hTeFN4VHhUeFR4U3hUeFN4VHhUeFR4VHhUeFN4VHhUeFR4VHhUeVR4VHlkeVR5ZHlkeWV5ZXlleWV5ZHlleWR5ZXlleWV5ZXlleWR4VHhUeFR4VHlUeWR5ZHlkeFR5VHhUeWR5ZXlkeWV5ZXlleWV5ZXlleWV5dXlleXV5ZXlleWV5ZXl2enV5dnp1eWV5dXlleXZ6dnp2enZ6dXl2enV5dnp2enZ6dnp2eoZ6d3qGeod6h3uHe4d7h3uXeod7h3qHe4d7iHuXe5h7lnp2enZ6dnp2end6hnp3eoZ6dnp2enZ6h3qHe4d6h3uHeod7h3uHe5h7mHuYe5h7l3uIe5d7mHuYe5h8mHuZfKh7mHuYe5h7mHyZfKl8qXyoe5h8mHuZfKl8qXypfKl8qXypfKl8qny6fbp9un26fbl8qn26fLp9un26fbp9u33IfJl8qXypfKl8qXypfKp8uXypfKl8qXypfKp9uny6fbp9un26fbp9un27fct9y33Kfbp9un27fct9y33Lfct+yn27fct9y33Lfct+y37Lfst9y37Lfct+y37Lfst+zH7bfsx+3H7cftx+3H7cftx+3H7cftx+3H7cftx+3H7cftt9y37Lfst+zH7Mftx+3H7bfst+y37Mftx+3H7cftx+3H7cftx+3H7cftx+3H7cftx+3H7cftx+3H7cftx+3H7Q==
+
+
+
+
+
diff --git a/trunk/CardSaveData/Mover/Imp/banner/banner_dummy.bcwav b/trunk/CardSaveData/Mover/Imp/banner/banner_dummy.bcwav
new file mode 100644
index 0000000..d579907
Binary files /dev/null and b/trunk/CardSaveData/Mover/Imp/banner/banner_dummy.bcwav differ
diff --git a/trunk/CardSaveData/Mover/Imp/banner/banner_imp.cbmd b/trunk/CardSaveData/Mover/Imp/banner/banner_imp.cbmd
new file mode 100644
index 0000000..e64d183
Binary files /dev/null and b/trunk/CardSaveData/Mover/Imp/banner/banner_imp.cbmd differ
diff --git a/trunk/CardSaveData/Mover/Imp/banner/icon2_24.ctpk b/trunk/CardSaveData/Mover/Imp/banner/icon2_24.ctpk
new file mode 100644
index 0000000..a96f378
Binary files /dev/null and b/trunk/CardSaveData/Mover/Imp/banner/icon2_24.ctpk differ
diff --git a/trunk/CardSaveData/Mover/Imp/banner/icon2_48.ctpk b/trunk/CardSaveData/Mover/Imp/banner/icon2_48.ctpk
new file mode 100644
index 0000000..550e559
Binary files /dev/null and b/trunk/CardSaveData/Mover/Imp/banner/icon2_48.ctpk differ
diff --git a/trunk/CardSaveData/Mover/Imp/banner_null_icon.bsf b/trunk/CardSaveData/Mover/Imp/banner_null_icon.bsf
new file mode 100644
index 0000000..ef62f22
Binary files /dev/null and b/trunk/CardSaveData/Mover/Imp/banner_null_icon.bsf differ
diff --git a/trunk/CardSaveData/Mover/Imp/csm_inf.txt b/trunk/CardSaveData/Mover/Imp/csm_inf.txt
new file mode 100644
index 0000000..995c06e
--- /dev/null
+++ b/trunk/CardSaveData/Mover/Imp/csm_inf.txt
@@ -0,0 +1,2 @@
+-p
+-t
diff --git a/trunk/CardSaveData/Mover/Imp/imp_list/batch/csm_list.txt b/trunk/CardSaveData/Mover/Imp/imp_list/batch/csm_list.txt
new file mode 100644
index 0000000..c610178
--- /dev/null
+++ b/trunk/CardSaveData/Mover/Imp/imp_list/batch/csm_list.txt
@@ -0,0 +1,2 @@
+#
+EJF10000237
diff --git a/trunk/CardSaveData/Mover/Imp/imp_list/batch/csm_sign.dat b/trunk/CardSaveData/Mover/Imp/imp_list/batch/csm_sign.dat
new file mode 100644
index 0000000..c0e054c
--- /dev/null
+++ b/trunk/CardSaveData/Mover/Imp/imp_list/batch/csm_sign.dat
@@ -0,0 +1 @@
+\
q$#9#1Ųv:ɯ'T0UtWw^VOOk$
Z[-XAWIhnL6.YZ3+db7f{qˁi;/*>eN]+q:A)2x#%r ` ORZ-o:'#zK>lbLUUcAudlY?emCJaWvkgdfe6G$s!2aM
\ No newline at end of file
diff --git a/trunk/CardSaveData/Mover/Imp/imp_list/batch/makekey.bat b/trunk/CardSaveData/Mover/Imp/imp_list/batch/makekey.bat
new file mode 100644
index 0000000..813beb0
--- /dev/null
+++ b/trunk/CardSaveData/Mover/Imp/imp_list/batch/makekey.bat
@@ -0,0 +1,4 @@
+openssl genrsa -out private_key.pem 2048
+openssl enc -d -base64 -in private_key.pem -out private_key.der
+openssl rsa -pubout -inform DER -outform DER -in private_key.der -out public_key.der
+
diff --git a/trunk/CardSaveData/Mover/Imp/imp_list/batch/makekey_100.bat b/trunk/CardSaveData/Mover/Imp/imp_list/batch/makekey_100.bat
new file mode 100644
index 0000000..0524431
--- /dev/null
+++ b/trunk/CardSaveData/Mover/Imp/imp_list/batch/makekey_100.bat
@@ -0,0 +1,3 @@
+rem ver1.0.0p
+openssl genpkey -out private_key.der -outform DER -algorithm rsa -pkeyopt rsa_keygen_bits:2048 -pkeyopt rsa_keygen_pubexp:65537
+openssl rsa -pubout -inform DER -outform DER -in private_key.der -out public_key.der
diff --git a/trunk/CardSaveData/Mover/Imp/imp_list/batch/makesign.bat b/trunk/CardSaveData/Mover/Imp/imp_list/batch/makesign.bat
new file mode 100644
index 0000000..1d87ba0
--- /dev/null
+++ b/trunk/CardSaveData/Mover/Imp/imp_list/batch/makesign.bat
@@ -0,0 +1,7 @@
+@echo off
+if "%1"=="" goto 1
+openssl dgst -sha256 -binary -keyform DER -sign ../key/private_key.der -out csm_sign.dat %1
+goto end
+:1
+openssl dgst -sha256 -binary -keyform DER -sign ../key/private_key.der -out csm_sign.dat csm_list.txt
+:end
diff --git a/trunk/CardSaveData/Mover/Imp/imp_list/caution.txt b/trunk/CardSaveData/Mover/Imp/imp_list/caution.txt
new file mode 100644
index 0000000..496953d
--- /dev/null
+++ b/trunk/CardSaveData/Mover/Imp/imp_list/caution.txt
@@ -0,0 +1,5 @@
+閧̈͒
+쐬Kv̖ɂ͏oȂ
+
+쐬́AzzŎgpo[WɓĂ
+ƃyA̔閧g
diff --git a/trunk/CardSaveData/Mover/Imp/imp_list/digit.txt b/trunk/CardSaveData/Mover/Imp/imp_list/digit.txt
new file mode 100644
index 0000000..6691db8
--- /dev/null
+++ b/trunk/CardSaveData/Mover/Imp/imp_list/digit.txt
@@ -0,0 +1,45 @@
+
+{̈̃VAŌ̎lpgɓ
+digitƂ̂炵
+Xg쐬ɓ͈Ⴂ`FbN̂Ɏg
+R}hCŃt@Cw肷ȒPȃ`FbJ[Ƃ
+
+
+ȉAJ삳[
+----------------
+`FbNfWbǧvZ@͈ʓIȂ̂炵A
+"WX10 EFCg3E1iM10W31j"Ƃ̂炵łB
+
+
+// NULLI[ꂽVAio[
+// NULL̏ꏊɃ`FbNfWbgtĐVNULLI[
+void AddCheckDigit(char* serial)
+{
+ size_t len = std::strlen(serial);
+
+ u8 digit = 0;
+ bool odd = true;
+ for(u8 i = len - 1; i > 0 && std::isdigit(serial[i]); i--)
+ {
+ if(odd)
+ {
+ digit += (serial[i] - '0') * 3;
+ }
+ else
+ {
+ digit += (serial[i] - '0');
+ }
+ odd = !odd;
+ }
+
+ if(digit % 10 != 0)
+ {
+ serial[len] = 10 - (digit % 10) + '0';
+ }
+ else
+ {
+ serial[len] = '0';
+ }
+
+ serial[len + 1] = '\0';
+}
diff --git a/trunk/CardSaveData/Mover/Imp/imp_list/import.txt b/trunk/CardSaveData/Mover/Imp/imp_list/import.txt
new file mode 100644
index 0000000..e94a4f3
--- /dev/null
+++ b/trunk/CardSaveData/Mover/Imp/imp_list/import.txt
@@ -0,0 +1,27 @@
+
+ړIF{̂̂݃C|[g
+
+JROMǂݍ
+
+SCj@c[p{̂̃VA[ȂǂRED֘A
+RED)@Xg(csm_list)Ə(csm_sign)쐬
+
+
+C|[g菇
+E@XgASDCTRɍ
+E@C|[gpAvJ[hN
+E@LȖ{̂ȂC|[gj[\
+
+
+Openeelō쐬
+ɎSD[gɒu
+
+Xg̏
+C|[gVAeLXgŗ
+---
+aaaaaaaa
+bbbbbbbb
+----
+{̗VAI[digit(lpg̐)͏Ȃ
+digitmFꍇ̓Xg쐬ɂƂ
+t@CTCY64K܂(VÂLڂŁA悻4000)
diff --git a/trunk/CardSaveData/Mover/Imp/imp_list/key/public_key.der b/trunk/CardSaveData/Mover/Imp/imp_list/key/public_key.der
new file mode 100644
index 0000000..1fa5839
Binary files /dev/null and b/trunk/CardSaveData/Mover/Imp/imp_list/key/public_key.der differ
diff --git a/trunk/CardSaveData/Mover/Imp/option.txt b/trunk/CardSaveData/Mover/Imp/option.txt
new file mode 100644
index 0000000..6e48073
--- /dev/null
+++ b/trunk/CardSaveData/Mover/Imp/option.txt
@@ -0,0 +1,11 @@
+C|[^̃IvVL
+
+cms_inf.txt̖OŃt@C쐬SD̃[gɔzu
+ȉ̋LqŃIvVLɂȂ
+foOspAʏ͂Ȃ
+
+-t: eXgj[
+@@@J[h̃Z[uɃeXgp^[݁xt@C
+
+-p: {̃VA\
+
diff --git a/trunk/CardSaveData/Mover/Imp/romfiles/importee.cia b/trunk/CardSaveData/Mover/Imp/romfiles/importee.cia
new file mode 100644
index 0000000..aef6591
Binary files /dev/null and b/trunk/CardSaveData/Mover/Imp/romfiles/importee.cia differ
diff --git a/trunk/CardSaveData/Mover/Imp/romfiles/nnfont_RectDrawerShader.shbin b/trunk/CardSaveData/Mover/Imp/romfiles/nnfont_RectDrawerShader.shbin
new file mode 100644
index 0000000..4290c2c
Binary files /dev/null and b/trunk/CardSaveData/Mover/Imp/romfiles/nnfont_RectDrawerShader.shbin differ
diff --git a/trunk/CardSaveData/Mover/Imp/source/main.cpp b/trunk/CardSaveData/Mover/Imp/source/main.cpp
new file mode 100644
index 0000000..138b342
--- /dev/null
+++ b/trunk/CardSaveData/Mover/Imp/source/main.cpp
@@ -0,0 +1,490 @@
+/*---------------------------------------------------------------------------*
+ Project: Horizon
+ File: main.cpp
+
+ Copyright (C)2009 Nintendo Co., Ltd. All rights reserved.
+
+ These coded instructions, statements, and computer programs contain
+ proprietary information of Nintendo of America Inc. and/or Nintendo
+ Company Ltd., and are protected by Federal copyright law. They may
+ not be disclosed to third parties or copied or duplicated in any form,
+ in whole or in part, without the prior written consent of Nintendo.
+
+ $Rev$
+ *---------------------------------------------------------------------------*/
+
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include "demo.h"
+#include "../../body/ver.h"
+#include "../../../common/sleep.h"
+#include "../../../common/common.h"
+#include "../../../common/shfnt.h"
+#include "test_data.h"
+
+#define INF_FILE "sdmc:/csm_inf.txt"
+
+#define KEY_LENGTH 2048
+#define LIST_FILE "sdmc:/csm_list.txt"
+#define SIGN_FILE "sdmc:/csm_sign.dat"
+
+
+extern "C" {
+ extern u8* PUBLIC_KEY_BEGIN[];
+ extern u8* PUBLIC_KEY_END[];
+
+ const void* PUBLIC_KEY = PUBLIC_KEY_BEGIN;
+}
+
+demo::RenderSystemDrawing s_RenderSystem;
+nn::fnd::ExpHeap appHeap;
+uptr heapForGx;
+void ErrorStop(char *s);
+void ErrorPOff(char *s);
+
+const size_t ROMFS_BUFFER_SIZE = 64*1024;//ROMマウント用
+const size_t READ_BUFFER_SIZE = 64*1024;
+
+#define SDK_SER_LEN nn::cfg::CTR::CFG_SECURE_INFO_SERIAL_NO_LEN
+
+namespace
+{
+ u8* readBuf;
+ u8* romfsBuf;
+
+}
+nn::Result result;
+
+
+bool ImportFile(nn::fs::MediaType mediaType, wchar_t* filename)
+{
+ //nn::Result result;
+
+ nn::fs::FileOutputStream* stream;
+ result = nn::am::BeginImportProgram(&stream, mediaType);
+ if (result.IsSuccess())
+ {
+ //NN_LOG("Importing: %ls...", filename);
+ nn::fs::FileInputStream in(filename);
+
+ while(s32 read = in.Read(readBuf, READ_BUFFER_SIZE))
+ {
+ stream->Write(readBuf, read);
+ }
+ result = nn::am::EndImportProgram(stream);
+ }
+ return result.IsSuccess();
+}
+
+#define LIST_MAX 4000
+#define LIST_LENGTH (LIST_MAX * (nn::cfg::CTR::CFG_SECURE_INFO_SERIAL_NO_LEN+1))
+u8 s_list[LIST_MAX][nn::cfg::CTR::CFG_SECURE_INFO_SERIAL_NO_LEN+1];//シリアルリスト
+u8 sign[256];//署名
+u8 serialNo[nn::cfg::CTR::CFG_SECURE_INFO_SERIAL_NO_LEN+1];
+
+//本体シリアル取得
+int GettedSerLen;
+bool GetSerial(){
+ nn::cfg::CTR::init::Initialize();
+ nn::cfg::CTR::system::Initialize();
+ result = nn::cfg::CTR::system::GetSerialNo(serialNo);
+ nn::cfg::CTR::system::Finalize();
+ nn::cfg::CTR::init::Finalize();
+ serialNo[nn::cfg::CTR::CFG_SECURE_INFO_SERIAL_NO_LEN] = 0;
+ GettedSerLen = strlen((char*)serialNo);
+ return result.IsSuccess();
+}
+
+
+
+//#define setColor(r,g,b,a) s_RenderSystem.SetColor(r,g,b,a)
+void setColor(f32 r,f32 g,f32 b,f32 a){ shf_SetColor(r,g,b,a);}
+//#define setText(x,y,s) s_RenderSystem.DrawText(x,y,s)
+void drawText(u16 x,u16 y,char *s){ shf_DrawText_0( x,y,s);}
+//上はASCIIのみ対応したTextWriterへのラッパ
+//日本語表示の場合、WideTextWriterを使う(要sft_側の関数追加)
+
+
+nn::hid::PadReader *hpr;
+//入力待ち
+nn::hid::PadStatus padStatus;
+u32 WaitKey(u32 mask)
+{
+
+ while(1){
+ hpr->ReadLatest(&padStatus);
+ if(padStatus.trigger & mask)return padStatus.trigger;
+ CheckSysBreak();
+ int i = nn::ndm::GetDaemonStatus( nn::ndm::DN_CEC );
+ if (i !=3 )NN_LOG("DN_CEC %d\n",i);
+ i = nn::ndm::GetDaemonStatus( nn::ndm::DN_BOSS );
+ if (i !=3 )NN_LOG("DN_BOSS %d\n",i);
+ i = nn::ndm::GetDaemonStatus( nn::ndm::DN_NIM );
+ if (i !=3 )NN_LOG("DN_NIM %d\n",i);
+ i = nn::ndm::GetDaemonStatus( nn::ndm::DN_FRIENDS );
+ if (i !=3 )NN_LOG("DN_FRIENDS %d\n",i);
+ }
+}
+
+//終了
+void endfunc()
+{
+ appHeap.Free(reinterpret_cast(readBuf));
+ appHeap.Free(reinterpret_cast(romfsBuf));
+ nn::hid::Finalize();
+ SharedFontFinalize();
+ nngxWaitVSync(NN_GX_DISPLAY_BOTH);//SDK2.0以降では不要?
+ s_RenderSystem.Finalize();
+}
+
+//署名検証
+bool VeriRsa(u8* src,size_t sz,u8* sig)
+{
+ nn::crypto::RsaKey key;
+ //nn::crypto::Initialize();
+ nn::ps::CTR::Initialize();
+ result = key.InitializePublicKey(PUBLIC_KEY_BEGIN,KEY_LENGTH);
+ if (result.IsSuccess())
+ {
+ result = nn::ps::CTR::VerifyRsaSha256(src,sz,sig,key);
+ }
+ //nn::crypto::Finalize();
+ nn::ps::CTR::Finalize();
+ return result.IsSuccess();
+}
+
+//エラー
+void ErrorCommon(char *s,char *ss)
+{
+ char str[128];
+ nn::am::FinalizeForLocalImporter();
+ nn::fs::Unmount("sdmc:");
+ nn::fs::Unmount("rom:");
+ NN_LOG(s);
+ NN_LOG(" result = %d\n",result.GetDescription());
+ shf_SetScale(0.7,0.7);
+ setColor(1.0, 0.0, 0.0,1.0);
+ strcpy(str,"Error: ");
+ strcat(str,s);
+ drawText(10,100,str);
+ drawText(10,140,ss);
+}
+
+
+void ErrorStop(char *s)
+{
+ ErrorCommon(s,"Push Home Button & end");
+ s_RenderSystem.SwapBuffers();
+ WaitKey(0);
+}
+
+void ErrorPoff(char *s)
+{
+ ErrorCommon(s,"Push Power Button & Power Off");
+ drawText(10,160,"Home Button is invalid");
+ s_RenderSystem.SwapBuffers();
+ WaitKey(0);
+}
+
+
+//改行後の位置を返す、0=見つからなかった
+int CrLf(int n,int max)
+{
+ u8 d;
+ while(n < max)
+ {
+ d = readBuf[n];
+ if (d==0x0a)return n+1;//LF
+ if (d==0x0d)//CR
+ {
+ if (n == max-1)return 0;//終端
+ n++;
+ if (readBuf[n]==0x0a)return n+1;//CR+LF
+ ErrorStop("list broken");//CRのみは異常、署名時にファイル壊れてた?
+ }
+ n++;
+ }
+ return 0;
+}
+
+
+nn::fs::FileInputStream fi;
+//ファイルリード
+s32 FileRead(char* fname)
+{
+ s32 size;
+ result = fi.TryInitialize(fname);
+ if (result.IsFailure()){//open error
+ //NN_LOG("desc= %d\n",result.GetDescription());
+ return 0;
+ }
+ result = fi.TryRead(&size,readBuf,READ_BUFFER_SIZE);
+ fi.Finalize();
+ if (result.IsFailure()){
+ //NN_LOG("desc= %d\n",result.GetDescription());
+ return 0;
+ }
+ return size;
+}
+
+
+char ver[16];
+char seri[32];
+void nnMain( void )
+{
+ //nn::Result result;
+ bool flg_applove=false;
+ bool flg_test=false;
+ int i,j,n;
+ s32 fsize;
+ extern bool prohibitHome;// HOME ボタン禁止
+
+ nn::os::Initialize();
+ nn::fs::Initialize();
+
+ //DEA-SUPにて推奨のフリーズ暫定対策:無線デーモンを停止 (2011.3.1 現在)
+ //ただし、スリープ時の"いつのまに通信"は止まらない
+ //無線は使わないので本体横スイッチ切っとくのが確実
+ nn::ndm::Initialize();
+ result = nn::ndm::SuspendScheduler();
+ NN_LOG("%d",result.GetDescription());
+
+ //中断処理の準備
+ InitSysBreak((uptr)endfunc);
+ // グラフィックスライブラリの初期化は、以降で行わなければならない
+ // 他、アプリケーションの初期化処理
+
+ nn::hid::Initialize();
+ nn::hid::PadReader padReader;
+ hpr = &padReader;
+
+ //result = nn::ns::CTR::InitializeForShell();
+ //if (result.IsSuccess())
+ result = nn::am::InitializeForLocalImporter();
+
+ nn::applet::DisableSleep();//スリープ非対応
+
+ // ヒープの確保
+ appHeap.Initialize(nn::os::GetDeviceMemoryAddress(), nn::os::GetDeviceMemorySize(), nn::os::ALLOCATE_OPTION_LINEAR);
+
+ const u32 s_GxHeapSize = 0x800000;
+ // RenderSystem の準備
+ heapForGx = reinterpret_cast(appHeap.Allocate(s_GxHeapSize));
+ s_RenderSystem.Initialize(heapForGx, s_GxHeapSize);
+ SharedFontInit();
+
+ // 共有フォントの種類を取得
+ //nn::pl::SharedFontType sftype = nn::pl::GetSharedFontType();
+
+ // スリープ要求に対する返答を有効にする
+ // また、蓋の状態チェックを行い蓋が閉じられているならスリープ要求が発生する
+// nn::applet::EnableSleep(true);
+
+ s_RenderSystem.SetRenderTarget(NN_GX_DISPLAY0);
+ s_RenderSystem.Clear();
+// s_RenderSystem.SetFontSize(12);
+ shf_SetScale(0.8,0.6);
+ setColor(1.0,1.0,1.0,1.0);
+ drawText(20,20,"CTR Card Savedata Mover Setup");
+ s_RenderSystem.SwapBuffers();
+
+ shf_SetScale(0.5,0.5);
+ sprintf(ver,"version %.2f",VERSION);
+ drawText(250,40,ver);
+
+ shf_SetScale(0.7,0.7);
+ if (result.IsFailure())ErrorStop("Initialize");//初期化に失敗
+ if (READ_BUFFER_SIZE < LIST_LENGTH)ErrorStop("buffer size");//バッファサイズのチェック
+
+ //ファイルバッファ
+ //カゲマイ上のSDリード速度比較実験で32アラインが良かったので、おまじない
+ //回数もサイズも少ないので気にする必要ないかも
+ if (READ_BUFFER_SIZE > appHeap.GetTotalFreeSize())ErrorStop("memory alloc");
+ readBuf = reinterpret_cast(appHeap.Allocate(READ_BUFFER_SIZE,32));
+ if (ROMFS_BUFFER_SIZE > appHeap.GetTotalFreeSize())ErrorStop("memory alloc");
+ romfsBuf = reinterpret_cast(appHeap.Allocate(ROMFS_BUFFER_SIZE,32));
+
+
+ //シリアルチェック
+ if( GetSerial() == false)ErrorStop("Get Serial");//本体シリの取得に失敗
+
+ result = nn::fs::MountSdmc();//ダイレクトでマウント..マスタリング時にワーニング
+ if (result.IsFailure())ErrorStop("Mount SD");
+ fsize = FileRead(INF_FILE);//設定ファイルがあるか
+ if((fsize < 1024) && (fsize > 0))//サイズチェック,増えても1Kは超えない
+ {//不具合調査時に状況にあわせて現場で作成&変更を想定したオプション
+ //通常は不要なので無しでも動くようしとく
+ n = 0;
+ while(n < fsize)
+ {
+ if (readBuf[n] == '-'){
+ if (n == fsize-1)break;//終端
+ n++;
+ switch (readBuf[n]){
+ case 'p':// -p .. 本体シリアル表示
+ strcpy(seri,"s/n: ");
+ strcat(seri,(char *)serialNo);
+ shf_SetScale(0.5,0.5);
+ drawText(10,40,(char*)seri);
+ shf_SetScale(0.7,0.7);
+ break;
+ case 't':// -t .. テストメニュー有効
+ flg_test = true;
+ break;
+ }
+ }
+ n++;
+ }
+ }
+
+ //シリアル表示(オプション)後にチェック
+ //デバッガ=15,実機=11
+ if (GettedSerLen < 11)ErrorStop("invalid Serial");
+
+ fsize = FileRead(SIGN_FILE);//署名リード
+ if(fsize != 256)ErrorStop("sign file");//鍵のbit長は2046固定
+ memcpy(sign,readBuf,256);//readBuf -> sign
+ fsize = FileRead(LIST_FILE);//リストリード
+ if((fsize > LIST_LENGTH ) || (fsize == 0))ErrorStop("list file");
+
+ nn::fs::Unmount("sdmc:"); //検証後はSDから読まないでメモリバッファ上のデータを使う: 差替え対策
+ if (VeriRsa(readBuf,fsize,sign) == false)ErrorStop("sign verify");
+
+ //署名検証OK
+ int list_ct = 0;
+ n=0;
+ while(n < fsize)//リスト作成
+ {
+ if (readBuf[n] == '#')//コメント行を無視、ワイド文字非対応
+ {
+ i = CrLf(n,fsize);//コメントの次行
+ if (i == 0)break;//ファイル終わりまで改行が見つからない
+ }else
+ {
+ //改行さがし
+ if ((fsize-n) > (SDK_SER_LEN+2))
+ {//シリアルは改行つける
+ i = CrLf(n,n+SDK_SER_LEN+2);
+ if (i == 0)ErrorStop("list broken");//改行が見つからない
+ }else{
+ i = CrLf(n,fsize);
+ if (i ==0)i = fsize;//改行以外でファイル終
+ }
+ if ((i-n) > GettedSerLen)//シリアルをリスト化
+ {
+ j = 0;
+ while(n=LIST_MAX)ErrorStop("List too Long");
+ }
+ }
+ if ((fsize-i) < GettedSerLen)break;//ファイル終
+ n=i;//ポインタを改行の次へ
+ }
+
+ //プログラムミス、コードバグ対策
+ //値が小さいと判定が緩くなるが、動作確認時にスルーしそうなので
+ //念の為チェック
+ if (GettedSerLen < 11)ErrorStop("invalid Serial");
+
+ //本体シリアルがリストにあるかチェック
+ n =0;
+ while(n
+#include
+#include
+#include
+#include
+#include
+#include "demo.h"
+
+nn::Result res;
+
+nn::fs::FileOutputStream fout;
+nn::fs::FileInputStream fin;
+
+nn::fs::Directory dc[256];
+
+wchar_t file_pathw[1024];
+char file_path[1024];
+char file_path2[1024];
+char src_buff[1024*1024];
+char get_buff[1024*1024];
+char str[512];
+
+
+extern demo::RenderSystemDrawing s_RenderSystem;
+
+//終了処理
+extern void finish(void);
+extern u32 WaitKey(u32 mask);
+
+extern void setColor(f32 r,f32 g,f32 b,f32 a);
+extern void drawText(u16 x,u16 y,char *s);
+void drawText(u16 x,u16 y,char *s,int v)
+{
+ sprintf(str,s,v);
+ drawText( x,y,str);
+}
+
+
+//---------------------------------------- テストパターン
+void make_pattern()
+{
+ int i,j;
+ j=0;
+ for (i=0;i<1024*1024;i++){
+ src_buff[i] = j+i;
+ if (i & 0x100)j++;
+ }
+}
+
+//TEST ライト
+s32 size;
+#define SIZE_TEST1 421888
+//#define SIZE_TEST1 244736 //dup
+bool Test1_W()
+{
+ int total,size2;
+
+ res = nn::fs::FormatSaveData(1,0,false);
+ if (res.IsFailure()){
+ drawText(8,100,"format Fail");
+ return false;
+ }
+ res =nn::fs::MountSaveData();
+ if (res.IsFailure()){
+ drawText(8,100,"Mount Fail");
+ return false;
+ }
+ res = nn::fs::TryCreateFile(L"data:/test1.bin",SIZE_TEST1);
+ if (res.IsFailure()){
+ drawText(8,100,"Create Fail");
+ nn::fs::Unmount("data:");
+ return false;
+ }
+ res = fout.TryInitialize(L"data:/test1.bin",true);
+ if (res.IsFailure()){
+ drawText(8,100,"open Fail");
+ nn::fs::Unmount("data:");
+ return false;
+ }
+ total =0;
+ size2 = 512;
+ //size2 = 4096;
+ //size2 = SIZE_TEST1;
+ while(1){
+ res = fout.TryWrite( &size,&src_buff[total],size2);
+ if (res.IsFailure()){
+ drawText(8,100,"write Fail");
+ fout.Finalize();
+ nn::fs::Unmount("data:");
+ return false;
+ }
+ total += size;
+ sprintf(str,"size %d",total);
+ s_RenderSystem.Clear();
+ drawText(10,80,str);
+ s_RenderSystem.SwapBuffers();
+ //if (size<512)break;
+ if (total >= SIZE_TEST1)break;
+ if ((SIZE_TEST1 - total) < 512)size2 = SIZE_TEST1 - total ;
+ }
+ fout.Finalize();
+ nn::fs::CommitSaveData();
+ nn::fs::Unmount("data:");
+ NN_LOG("total %d",total);
+ drawText(10,100,"end");
+ s_RenderSystem.SwapBuffers();
+ nngxWaitVSync(NN_GX_DISPLAY0);
+ return true;
+}
+
+//ベリファイ
+bool Test1_V()
+{
+ int i,total;
+
+ res = fin.TryInitialize(L"data:/test1.bin");
+ if (res.IsFailure()){
+ drawText(8,100,"open Fail");
+ nn::fs::Unmount("data:");
+ return false;
+ }
+ total =0;
+ while(1){
+ res = fin.TryRead( &size,&get_buff[total],512);
+ if (res.IsFailure()){
+ drawText(8,100,"read Fail");
+ fin.Finalize();
+ nn::fs::Unmount("data:");
+ return false;
+ }
+ //if (size == 0)break;
+ for (i=0;i= SIZE_TEST1)break;
+
+ total += size;
+ s_RenderSystem.Clear();
+ sprintf(str,"now %d",total);
+ drawText(10,80,str);
+ s_RenderSystem.SwapBuffers();
+ if (size<512)break;
+ }
+ fout.Finalize();
+ nn::fs::Unmount("data:");
+ drawText(10,100,"end");
+ s_RenderSystem.SwapBuffers();
+ nngxWaitVSync(NN_GX_DISPLAY0);
+ return true;
+}
+
+
+//ファイル数
+bool Test2_W(int n)
+{
+ int total,size2;
+
+ res = nn::fs::FormatSaveData(680,1,false);//dupなしファイル680
+ if (res.IsFailure()){
+ drawText(8,100,"format Fail");
+ return false;
+ }
+ res =nn::fs::MountSaveData();
+ if (res.IsFailure()){
+ drawText(8,100,"Mount Fail");
+ return false;
+ }
+
+ total =0;
+ int num = 0;
+ size2 = 512;
+ while(1){
+ sprintf(file_path,"data:/test%d.bin",num);
+// res = nn::fs::TryCreateFile(L"data:/test2.bin",SIZE_TEST1);
+// if (res.IsFailure()){
+// drawText(8,100,"Create Fail");
+// nn::fs::Unmount("data:");
+// return false;
+// }
+ res = fout.TryInitialize(file_path,true);
+ if (res.IsFailure()){
+ drawText(8,100,"open Fail");
+ nn::fs::Unmount("data:");
+ return false;
+ }
+ res = fout.TryWrite( &size,&src_buff[total],size2);
+ if (res.IsFailure()){
+ drawText(8,100,"write Fail");
+ fout.Finalize();
+ nn::fs::Unmount("data:");
+ return false;
+ }
+ fout.Finalize();
+ total += size;
+ num++;
+ sprintf(str,"size %d , num %d",total,num);
+ s_RenderSystem.Clear();
+ drawText(10,80,str);
+ s_RenderSystem.SwapBuffers();
+ //if (size<512)break;
+ if (num == n)break;
+ }
+ fout.Finalize();
+ nn::fs::CommitSaveData();
+ nn::fs::Unmount("data:");
+ NN_LOG("total %d",total);
+ drawText(10,100,"end");
+ s_RenderSystem.SwapBuffers();
+ nngxWaitVSync(NN_GX_DISPLAY0);
+ return true;
+}
+
+bool Test2_V(int n)
+{
+ int total,size2,i;
+
+ total =0;
+ int num = 0;
+ size2 = 512;
+ while(1){
+ sprintf(file_path,"data:/test%d.bin",num);
+ res = fin.TryInitialize(file_path);
+ if (res.IsFailure()){
+ drawText(8,100,"open Fail");
+ nn::fs::Unmount("data:");
+ return false;
+ }
+ res = fin.TryRead( &size,&get_buff[total],size2);
+ if (res.IsFailure()){
+ drawText(8,100,"read Fail");
+ fin.Finalize();
+ nn::fs::Unmount("data:");
+ return false;
+ }
+ for (i=0;i= SIZE_TEST5)break;
+ }
+ fout.Finalize();
+ nn::fs::CommitSaveData();
+ nn::fs::Unmount("data:");
+ drawText(10,100,"end");
+ s_RenderSystem.SwapBuffers();
+ nngxWaitVSync(NN_GX_DISPLAY0);
+ return true;
+}
+
+
+bool Test5_V()
+{
+ int i,pos;
+
+ res = fin.TryInitialize(L"data:/test5.bin");
+ if (res.IsFailure()){
+ drawText(8,100,"open Fail");
+ nn::fs::Unmount("data:");
+ return false;
+ }
+ pos =0;
+ while(1){
+ fin.SetPosition(pos);
+ res = fin.TryRead( &size,&get_buff[pos],512);
+ if (res.IsFailure() || (size!=512)){
+ drawText(8,100,"read Fail");
+ fin.Finalize();
+ nn::fs::Unmount("data:");
+ return false;
+ }
+ sprintf(str,"position %d",pos);
+ s_RenderSystem.Clear();
+ drawText(10,80,str);
+ s_RenderSystem.SwapBuffers();
+
+ for (i=0;i<512;i++) if (src_buff[pos+i] != get_buff[pos+i])
+ {
+ drawText(8,100,"verifi Fail at %d",i);
+ return false;
+ }
+ pos += 1024;//512飛ばす
+ if (pos >= SIZE_TEST5)break;
+ }
+ fin.Finalize();
+ nn::fs::Unmount("data:");
+ drawText(10,100,"end");
+ s_RenderSystem.SwapBuffers();
+ nngxWaitVSync(NN_GX_DISPLAY0);
+ return true;
+}
+
+
+
+
+#define menu_ct 6
+#define menu_max (menu_ct-1)
+char* menu_str[menu_ct] = {"Casual check","Large size","many files","Deep directry","max size name","data < create size"};
+
+#define menu_top_Y 80
+#define menu_top_X 60
+#define menu_spc 14
+
+//---------------------------------------------------------------- main
+void TestMain()
+{
+ u32 value;
+ int curs = 0;
+ int i;
+ bool sccs;
+
+ //Render
+ setColor(1.0f,1.0f,1.0f,1.0f);
+
+ //TEST PATTERN
+ make_pattern();
+
+ while(1){
+
+ //menu 表示
+ s_RenderSystem.Clear();
+ drawText(8,20," Backup Verifi for SaveDataMover Test ");
+ drawText(8,40," for 512KB Backup");
+ for (i=0;i");
+ drawText(menu_top_X,menu_top_Y+menu_spc*(menu_max+2),"push A:Write ,X:Verifi");
+ s_RenderSystem.SwapBuffers();
+ nngxWaitVSync(NN_GX_DISPLAY0);
+
+ //ボタン待ち
+ value = WaitKey(nn::hid::BUTTON_A | nn::hid::BUTTON_X |nn::hid::BUTTON_UP |nn::hid::BUTTON_DOWN);
+ if (value & nn::hid::BUTTON_A){//ライト
+ sccs = false;
+ s_RenderSystem.Clear();
+ drawText(10,70,"writing");
+ s_RenderSystem.SwapBuffers();
+ nngxWaitVSync(NN_GX_DISPLAY0);
+ switch(curs){
+ case 0:sccs = Test2_W(10);break;
+ case 1:sccs = Test1_W();break;
+ case 2:sccs = Test2_W(680);break;
+ case 3:sccs = Test3_W();break;
+ case 4:sccs = Test4_W();break;
+ case 5:sccs = Test5_W();break;
+ default:break;
+ }
+ }else if (value & nn::hid::BUTTON_X)
+ {//ベリファイ
+ sccs = false;
+ s_RenderSystem.Clear();
+ drawText(10,70,"verifi");
+ s_RenderSystem.SwapBuffers();
+ nngxWaitVSync(NN_GX_DISPLAY0);
+ res =nn::fs::MountSaveData();
+ if (res.IsFailure()){
+ drawText(8,100,"Mount Fail");
+ }else
+ switch(curs){
+ case 0:sccs = Test2_V(10);break;
+ case 1:sccs = Test1_V();break;
+ case 2:sccs = Test2_V(680);break;
+ case 3:sccs = Test3_V();break;
+ case 4:sccs = Test4_V();break;
+ case 5:sccs = Test5_V();break;
+ default:break;
+ }
+ }else if (value & nn::hid::BUTTON_UP){
+ if(curs > 0)curs--;
+ }else if(curs < menu_max)curs++;
+
+ if (value & (nn::hid::BUTTON_A | nn::hid::BUTTON_X)){
+ if (sccs == false)drawText(8,120,"Failed");
+ sprintf(str,"desc %d",res.GetDescription());
+ drawText(10,140,str);
+ s_RenderSystem.SwapBuffers();
+ NN_LOG("desc %d",res.GetDescription());
+ WaitKey(nn::hid::BUTTON_B);
+ }
+ }
+}
+
+
+/*---------------------------------------------------------------------------*
+ End of file
+ *---------------------------------------------------------------------------*/
+
diff --git a/trunk/CardSaveData/Mover/Imp/source/test_data.h b/trunk/CardSaveData/Mover/Imp/source/test_data.h
new file mode 100644
index 0000000..3525aa4
--- /dev/null
+++ b/trunk/CardSaveData/Mover/Imp/source/test_data.h
@@ -0,0 +1,6 @@
+#ifndef TEST_DATA_H_
+#define TEST_DATA_H_
+
+void TestMain();
+
+#endif
diff --git a/trunk/CardSaveData/Mover/OMakefile b/trunk/CardSaveData/Mover/OMakefile
new file mode 100644
index 0000000..372a9da
--- /dev/null
+++ b/trunk/CardSaveData/Mover/OMakefile
@@ -0,0 +1,30 @@
+#!/usr/bin/env omake
+#----------------------------------------------------------------------------
+# Project: Horizon
+# File: OMakefile
+#
+# Copyright (C)2009 Nintendo Co., Ltd. All rights reserved.
+#
+# These coded instructions, statements, and computer programs contain
+# proprietary information of Nintendo of America Inc. and/or Nintendo
+# Company Ltd., and are protected by Federal copyright law. They may
+# not be disclosed to third parties or copied or duplicated in any form,
+# in whole or in part, without the prior written consent of Nintendo.
+#
+# $Rev: 34658 $
+#----------------------------------------------------------------------------
+
+#\DemoCugp܂
+#PCɍ킹ăTvf̃fBNgw
+#SAMPLED_DEMOS_COMMON_INCLUDE_DIR = $(dir ../common/include)
+SAMPLED_DEMOS_COMMON_INCLUDE_DIR = $(dir $(HORIZON_ROOT)/../CTR/sampledemos/common/include)
+INCLUDES += $(SAMPLED_DEMOS_COMMON_INCLUDE_DIR)
+
+LIBS += lib_demo libnn_am
+
+.SUBDIRS: $(exist-dirs \
+ body \
+ Imp \
+ )
+
+DefineDefaultRules()
diff --git a/trunk/CardSaveData/Mover/body/OMakefile b/trunk/CardSaveData/Mover/body/OMakefile
new file mode 100644
index 0000000..6c18610
--- /dev/null
+++ b/trunk/CardSaveData/Mover/body/OMakefile
@@ -0,0 +1,64 @@
+#!/usr/bin/env omake
+#----------------------------------------------------------------------------
+# Project: Horizon
+# File: Omakefile
+#
+# Copyright (C)2010 Nintendo Co., Ltd. All rights reserved.
+#
+# These coded instructions, statements, and computer programs contain
+# proprietary information of Nintendo of America Inc. and/or Nintendo
+# Company Ltd., and are protected by Federal copyright law. They may
+# not be disclosed to third parties or copied or duplicated in any form,
+# in whole or in part, without the prior written consent of Nintendo.
+#
+# $Rev: 25650 $
+#----------------------------------------------------------------------------
+
+SUPPORTED_TARGETS = CTR-T*.Process.MPCore.*
+CTR_APPTYPE = BOTH
+#CTR_APPTYPE = CARD
+#CTR_APPTYPE = NAND
+
+#demoCuʒuw
+#SAMPLED_DEMOS_COMMON_INCLUDE_DIR = $(dir ../common/include)
+#SAMPLED_DEMOS_COMMON_INCLUDE_DIR = $(dir ../CTR_SDK/sampledemos/common/include)
+#INCLUDES += $(SAMPLED_DEMOS_COMMON_INCLUDE_DIR)
+
+# rh\[XR[hw肵܂B
+#SDɃZ[uꍇmembak -> exsave ύX
+SOURCES[] =
+ ./source/main.cpp
+ ./source/screen/screen.cpp
+ ../../common/savefile/savedata.cpp
+ ../../common/savefile/membak.cpp
+ ../../common/savefile/savefile.cpp
+ ../../common/gui/gui.cpp
+ ../../common/shfnt.cpp
+ ../../common/sleep.cpp
+ ../../common/common.cpp
+
+#LIBS += lib_demo libnn_am
+#LIBS += libnn_ps
+
+TARGET_PROGRAM = CtrSaveDataMover
+
+TITLE = CSM_body
+
+# ROMFS ̃[gpXw肵܂B
+#ROMFS_ROOT =
+
+# Ǝ RSF t@Cw肷ꍇ
+ROM_SPEC_FILE = body.rsf
+DESCRIPTOR = $(CTRSDK_ROOT)/resources/specfiles/repairtool.desc
+
+# oi[AACR
+CTR_BANNER_SPEC = banner_null_icon.bsf
+
+
+#Cia o[W:}X^OɍXV邱
+#W[rsfŎw(Remasterversion)
+MAKECIAFLAGS = -minor 0 -micro 11
+
+include $(ROOT_OMAKE)/modulerules
+
+build: $(DEFAULT_TARGETS)
diff --git a/trunk/CardSaveData/Mover/body/banner.bsf b/trunk/CardSaveData/Mover/body/banner.bsf
new file mode 100644
index 0000000..516f44d
Binary files /dev/null and b/trunk/CardSaveData/Mover/body/banner.bsf differ
diff --git a/trunk/CardSaveData/Mover/body/banner/BannerModel_test/COMMON/COMMON.cmdl b/trunk/CardSaveData/Mover/body/banner/BannerModel_test/COMMON/COMMON.cmdl
new file mode 100644
index 0000000..63f2c7a
--- /dev/null
+++ b/trunk/CardSaveData/Mover/body/banner/BannerModel_test/COMMON/COMMON.cmdl
@@ -0,0 +1,274 @@
+
+
+
+
+
+ MetaData
+
+
+
+
+
+
+
+
+ ContentSummaries
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ModelDccToolInfo
+
+
+ OptimizationLogs
+
+
+
+
+
+
+
+
+
+
+
+ Skeleton.Bones["*"].AnimatedTransform
+
+
+
+
+
+
+ IsVisible
+
+
+ Meshes["*"].IsVisible
+
+
+ IsBranchVisible
+
+
+
+
+
+
+ Materials["*"].MaterialColor.Emission
+
+
+ Materials["*"].MaterialColor.Ambient
+
+
+ Materials["*"].MaterialColor.Diffuse
+
+
+ Materials["*"].MaterialColor.Specular0
+
+
+ Materials["*"].MaterialColor.Specular1
+
+
+ Materials["*"].MaterialColor.Constant0
+
+
+ Materials["*"].MaterialColor.Constant1
+
+
+ Materials["*"].MaterialColor.Constant2
+
+
+ Materials["*"].MaterialColor.Constant3
+
+
+ Materials["*"].MaterialColor.Constant4
+
+
+ Materials["*"].MaterialColor.Constant5
+
+
+ Materials["*"].TextureMappers["*"].Sampler.BorderColor
+
+
+ Materials["*"].TextureMappers["*"].Texture
+
+
+ Materials["*"].FragmentOperation.BlendOperation.BlendColor
+
+
+ Materials["*"].TextureCoordinators["*"].Scale
+
+
+ Materials["*"].TextureCoordinators["*"].Rotate
+
+
+ Materials["*"].TextureCoordinators["*"].Translate
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+ 0 1 2 1 3 2
+
+
+
+
+
+
+
+-12 -6 6.5
+12 -6 6.5
+-12 6 6.5
+12 6 6.5
+
+ 0 0 1
+
+0 0
+1 0
+0 1
+1 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Textures["banner"]@file:Textures/banner.ctex
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ DccToolSourceNode
+
+ BONE_00
+
+
+
+ Shapes[0]
+ Materials["MT_00"]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/trunk/CardSaveData/Mover/body/banner/BannerModel_test/COMMON/Textures/banner.ctex b/trunk/CardSaveData/Mover/body/banner/BannerModel_test/COMMON/Textures/banner.ctex
new file mode 100644
index 0000000..c36b19c
--- /dev/null
+++ b/trunk/CardSaveData/Mover/body/banner/BannerModel_test/COMMON/Textures/banner.ctex
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+ B/YH9gf2B/YH9gf2B/YH9wf2B/YH9gf2B/YH9wf2B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf2B/YH9gf2B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/gH9wf3B/cH9wf3B/gH+Af4B/cH9wf3B/cH+Af4B/gH+Af3B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/kH+Af5B/gH+Af4B/gH+Qf5B/kH+Qf4B/kH+Af5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/oH+Qf6B/kH+Qf5B/kH+gf6B/oH+gf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+gf5B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/sH+gf6B/oH+gf6B/sH+gf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+gf6B/oH+gf7B/sH+wf7B/oH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf8B/sH/Af7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH/Af8B/wH/Af7B/wH+wf8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Qf8B/0H/Qf9B/0H/Qf8B/0H/Qf9B/0H/Qf9B/0H/Af8B/wH/Af8B/0H/Af9B/wH/Af8B/wH/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/4H/Qf+B/0H/Qf9B/0H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/0H/gf9B/4H/gf+B/4H/gf9B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/wf+B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf+B/4H/gf+B/4H/wf/B/8H/gf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/gf/B/4H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf+B/8H/gf/B/4H/wf/B/4H/gf+B/4H/gf+B/8H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf9B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf9B/0H/Qf9B/4H/Qf9B/0H/Qf9B/0H/Qf+B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf8B/0H/Af8B/wH/Af8B/0H/Af8B/wH/Af8B/wH/Af9B/0H/Qf9B/0H/Af9B/wH/Qf9B/0H/Qf9B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af7B/wH/Af8B/wH/Af7B/sH+wf8B/sH/Af7B/sH+wf7B/sH/Af7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/oH+wf6B/sH+wf7B/sH+gf6B/oH+gf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf4B/gH+Af4B/gH9wf4B/cH+Af4B/gH+Af4B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf4B/gH+Af4B/gH+Qf4B/kH+Af4B/gH+Af5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+gf5B/oH+Qf5B/kH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+Qf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf7B/sH+wf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/sH+wf7B/sH+wf6B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/wH+wf8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH+wf7B/sH+wf7B/wH/Af8B/sH+wf7B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af9B/wH/Qf8B/wH/Af8B/0H/Qf9B/0H/Af9B/wH/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/gf9B/0H/Qf9B/0H/gf+B/4H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/4H/Qf+B/4H/gf+B/4H/Qf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/8H/gf/B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf/B/8H/wf/B/4H/wf+B/8H/wf/B/8H/wf+B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf+B/8H/wf/B/4H/wf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/8H/wf/B/8H/gf+B/4H/gf/B/8H/wf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/0H/gf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf+B/4H/gf+B/0H/Qf9B/0H/gf9B/4H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf8B/0H/Qf9B/0H/Af8B/wH/Af9B/0H/Qf8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af7B/wH+wf7B/sH+wf7B/sH+wf8B/sH+wf7B/sH+wf8B/wH/Af8B/wH/Af8B/sH/Af8B/wH/Af8B/sH/Af7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+gf7B/sH+wf7B/sH+gf6B/oH+wf7B/sH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+wf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf5B/oH+Qf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf5B/kH+Qf6B/oH+gf5B/kH+Qf5B/kH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/gH9wf4B/cH9wf3B/cH+Af4B/gH+Af3B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af5B/gH+Af4B/gH+Af5B/kH+Qf4B/gH+Af5B/kH+Qf5B/kH+Af5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/oH+Qf6B/kH+Qf5B/kH+gf6B/oH+gf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+gf6B/oH+wf7B/sH+wf7B/oH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH/Af7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf8B/wH/Af7B/wH+wf8B/wH/Af8B/wH+wf8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/0H/Qf9B/0H/Qf8B/0H/Qf9B/0H/Qf9B/0H/Af8B/wH/Af8B/0H/Af9B/wH/Af8B/wH/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf+B/0H/Qf9B/0H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/0H/Qf9B/4H/gf+B/4H/gf9B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/wf+B/8H/gf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf+B/4H/gf+B/4H/wf+B/8H/gf+B/4H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/4H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/gf+B/4H/wf+B/8H/wf+B/4H/gf+B/8H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/0H/gf9B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf9B/0H/Qf9B/4H/gf+B/0H/Qf9B/0H/Qf+B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Af8B/wH/Af8B/0H/Af8B/wH/Af8B/wH/Af9B/0H/Qf9B/0H/Qf9B/wH/Qf9B/0H/Qf8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af7B/wH/Af8B/wH/Af7B/wH+wf8B/wH/Af7B/sH+wf7B/sH/Af7B/wH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/oH+wf6B/sH+wf7B/oH+gf6B/oH+gf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf6B/sH+gf7B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+gf6B/oH+gf6B/kH+Qf5B/oH+Qf6B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/gH+Af4B/gH9wf4B/gH+Af4B/gH+Af4B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Qf5B/kH+Qf5B/gH+Qf5B/kH+Qf5B/kH+Qf4B/gH+Af4B/gH+Af4B/kH+Af4B/gH+Af4B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+gf5B/oH+Qf5B/kH+Qf5B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+Qf5B/kH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf7B/sH+wf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+wf7B/sH+wf6B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf8B/sH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH+wf7B/sH+wf7B/wH/Af8B/sH+wf7B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Qf8B/wH/Af8B/wH/Qf8B/0H/Af8B/wH/Qf9B/0H/Qf9B/0H/Qf8B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/gf+B/4H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf+B/4H/gf+B/4H/Qf+B/0H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf/B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf/B/8H/wf/B/4H/gf+B/8H/wf/B/8H/wf+B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf+B/8H/gf/B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/8H/wf/B/8H/wf+B/8H/gf/B/4H/wf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/Qf+B/0H/gf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf+B/4H/gf+B/4H/Qf9B/0H/gf9B/4H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf8B/0H/Qf9B/0H/Qf8B/0H/Af9B/0H/Qf8B/wH/Af8B/wH/Qf8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH+wf7B/sH+wf7B/wH+wf7B/sH+wf7B/sH+wf8B/wH/Af8B/wH/Af8B/sH/Af8B/wH/Af8B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+gf7B/sH+wf7B/sH+gf7B/oH+wf7B/sH+wf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+wf6B/sH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf5B/oH+Qf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf5B/kH+Qf6B/oH+gf6B/kH+Qf5B/kH+gf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/gH9wf4B/cH9wf3B/cH+Af4B/gH+Af3B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/kH+Af5B/gH+Af4B/gH+Af5B/gH+Qf4B/gH+Af5B/kH+Qf5B/kH+Af5B/gH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/oH+Qf6B/kH+Qf5B/kH+gf6B/oH+gf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/oH+gf6B/oH+gf5B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+gf6B/oH+wf7B/sH+wf7B/oH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH/Af7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf8B/wH/Af7B/sH+wf8B/wH/Af8B/wH+wf8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Qf9B/0H/Qf8B/0H/Qf9B/0H/Qf9B/0H/Af8B/wH/Af8B/wH/Af9B/wH/Af8B/wH/Af9B/wH/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/4H/Qf+B/0H/Qf9B/0H/Qf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/0H/gf9B/0H/gf+B/4H/gf9B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/wf+B/4H/gf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf+B/4H/gf+B/8H/wf/B/8H/gf+B/4H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/gf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/gf+B/4H/wf/B/8H/wf+B/4H/gf+B/8H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf9B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf9B/0H/Qf9B/4H/gf+B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf8B/0H/Qf8B/wH/Af8B/0H/Af8B/wH/Af8B/wH/Af9B/0H/Qf9B/0H/Qf9B/wH/Qf9B/0H/Qf9B/wH/Qf8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af7B/wH+wf8B/wH/Af8B/sH+wf7B/sH/Af7B/wH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf6B/sH+wf7B/sH+wf6B/oH+gf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/oH+gf6B/oH+gf7B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf5B/oH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+gf6B/oH+gf6B/kH+Qf5B/oH+Qf6B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/gH+Af4B/gH9wf4B/cH+Af4B/gH+Af4B/cH9wf3B/cH9wf3B/cH+Af3B/cH9wf3B/cH9wf3B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af5B/kH+Qf5B/gH+Qf5B/kH+Qf5B/kH+Qf4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+gf5B/oH+Qf5B/kH+Qf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+Qf6B/kH+gf6B/oH+gf6B/kH+gf6OPsH+gf6m/2r/gf6B/oH+gf6B/oH+gf6B/oH+gf6q/6r/gf6B/o4+wf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf7B/oH+wf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oo+2n8B/oH+gf6B/sH+wf7B/sH+wf6B/qr/qv+B/sH+6v+q/4H+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/ur/pv+B/sH+2n9B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7Wf1p/Qf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf8B/sH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH+wf7B/sH+wf7B/wH/Af8B/sH+2n9af0H/Af8af1p/Qf8B/wH/Af8B/wH/Af8B/wH/Af8af1Z/Qf8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af9B/wH/Qf8B/wH/Af8B/wH/Qf8B/0H/Af9B/wH/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Wn+q/8H/Qf9B/0H/Qf9B/0H/Qf9B/0H/av/q/8H/Qf9m/44/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/gf9B/0H/Qf9B/0H/gf+B/4H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf+B/4H/gf+B/4H/Qf+B/0H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/8H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/8H/wf/B/4H/gf+B/4H/wf/B/8H/wf+B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/GP8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/9p/2n/B/8H/2n/af8H/wf/B/8H/wf/B/8H/wf/B/8H/2n/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8Y/2n/B/8H/2n/af8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/gf/B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/8H/wf/B/8H/gf+B/4H/gf/B/8Y/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+Wf9p/wf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/mn/OP4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/0H/gf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf+B/4H/gf+B/4H/Qf9B/0H/gf+B/4H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf8B/wH/Af9B/0H/Qf9B/wH/Af8B/wH/Qf8B/0H/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af7B/sH+wf7B/wH+wf7B/sH+wf7B/sH+wf8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/sH/Af7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+gf7B/oH+wf7B/sH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+wf7B/sH+gf6B/oH+gf6B/sH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf5B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf5B/oH+Qf6B/oH+gf5B/kH+Qf5B/kH+gf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf4B/kH+Af5B/kH+Qf4B/gH+Af4B/gH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Af5B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/cH9wf3B/gH+Af4B/gH+Af3B/cH9wf4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af3B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af5B/kH+Qf4B/gH+Af4B/kH+Qf5B/kH+Af5B/gH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+c3uB/kH+Qf5GPqb7N/dz9zPzAf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/lq2wf5jbq/u7+7r6qvqgf5jqkH+Y+In5mfmY+Ij4i8/f//7+7v7v/////v7u/u393f3c/Mz8zf3c7dSskJpv/////v7u/u//+8/e/u7+6+3N/dCZaNut/d393PzM/Mv7t8ua+qGpYJlgqFCoUKZI6ZCoV+iAp0CmQLZAtkC1MKdBt1C2QLUzyGK3ULUwtkC1MLUwtkC2QLZAtkCnQKdQjpevxJ2s7t/////+/u7+5aud/dW6jPzN/d393PzIy6/////+/u7+7/////7+7v7t/d390al7/M393f3c/Mz8wrdp66C2QLZEuXCnUKZAp0C2QLZAp1CnUKZApkCnUKdQp1v7s8hq+qv7u/u6+qr6pMhp+ZXXePiJ+Zn5mPiI+I/////+/u7+7//+//7+7v7t/dz92Nuhp2393f3a67rstq7Bjrve1a2+/////v7u/uW7mMywqGjbrf3d/dz8zPzDx2C1QcVAxDC1QrdQxDC1MMQwxDDEMMQwxDC0MMQwtUC2R9qQtUbZi/u7+7r6qvqgtUXYcLZF13n5mfmY+Ij4j/////7+7v7v/////v7u/u393f3c/MW6mc3M/dCYYal//////v7u/u3f5J7O/u3+7f3d/drsvPzN/d393PzM/Mv7srhq+qC2QKdSt2HGWfqZ+ZfoiPiI+In5mfmY+Ij4i/u7+7r6qvqr+7v7uvqp+pn5mfmY+Ij4ifmSxVHFQMQwf7B/wI2gjrB/wH/AjrB/xaygjJS6kJqAjKCOsIuQjKB/wH/Af8B/wH/Qf9B/wH/QfsB/wI6wf8B/w4/Qf8Wew7hwqGC1QKZQmXCbkKhgmoC1QLVAxDC1QKdQmXCmUJhwjKCOsIygjrB/xJ7Af8GOwIuQjbCbkI2wfsB/wH7AfsGP3d/7zu7+7/////7+7v7t/d393PzM/M393f3c/MjMv/////7+7v7v/////v7u/uzt293QmoCZff3d/dbKnPzL+7v7uvqq+qv7uNuq+qr6psup+ZCNtcmJ+Zn5mPiI+IGocKdq+qfpkLZSt2PHYLVJ+Zn5mPiI+In5l+iI+Ij4jN/hjs7+6c7QfsB/0I2wjs390qumypCocIugjKCZgJqQf9B/0I7Af9B/0H/gf9B/4I2wjsa8vPzDjtWe3PzM/MC2UKdgtVC2UKhzqpCnZLmSxlC2WPiCx2CnYKhwp2Coe/u7+7r6qvqr+7v7uvqq+qfZmfmQmYKpkJuhqpTJh+iAf+B/4H/gf+B/4H/gf+B/4H/gf+z8yt3Qf+B/4Y7Qf9B/4H/gf+B/4H/gf+B/4H/gf+B/4H/r7dB/4H/s/Mz92/u7+7r6qvqq7MGNyvqmu6j5mfmY+Ij4ifmX2Zj4h+iAjsv7sIy6+qv7u/u6+qr6oJqZ+ZCod+iJ+Zn5mPiI+IB/4H/gf+B/4H/gf+B/4H/gf+B/5Z7Qf+B/4H/gf+vt0H/gf/B/4H/wf/B/8H/wf/B/8H/8/Mvt0H/wf/GP4H/nvMCO1KywjMCO2/uwjMr6pLqgm6XIgJmAm6n5kJmI+Iv7u/u6+qr6pK3QjtSstay5+Zn5mPiI+IKqqOmQmZj4gH/wf/B/8H/wf/B/8H/wf/B/8H/wf+i90H/0n+z93PzAf/B/8H/wf/B/8H/wf/B/9J/gf/z8zP3Qf/B/+L3Qf+ncy/u6+qr6q/u7+7r6qeu5+Zn5mPiI+IbKoJqjuIXYi/u7+7r6qvqr+7e8yvqq+qbJmfmY+Ij4ifmZ+Zj4h/iAf/B/8H/wf/B/8H/wf/B/8H/wf/B/4H/wf/B/8H/wf/B/8H/wf/B/8H/5v/B//N7gf/B/8H/wf/B//e7Qf/z8wI3QjuCMsIzAfuB/4I3QjuCZkJqgp3CYgIywjdCaoIywf/B/8H/gf/B/+/uwf/r6oI7gf/CN0H7gf+n5kH7o+I/////+/u7+7/////7+7v7t/d393PzM/M392+3c/MGan//+//7+7v7pv/B+7v7r3uz93f3RqZv8zf3d/dz8zPzL+7v7uvqq+qjbsKd22ZCmafmZ+Zj4iPiF2IC2VddwtVCnY8iAtVC1W/u7+7n6qvqgtVC1ULVQtVXXefmT1mj4gH/gf/CN0I7gf/B/8H7gf/nN0IzM/MKrsI3QjuCLsIzAf/B/8H/wf/B/8H/wf/B/8H/wf/jN3P3Un/Sf/PzM/Mv7uNqq+qn6oJmWu7Cohsqp+Zn5mPiI+IG3cKiCx3Cma/u7+7r6qvqr+7v7ueu6+qjpmOmQp3O4gJqjuqXYh/iAf/B/8H/wf/B/8H/wf/B/8H/wf/z8yc3Qf/B/8Y7gf/B/8H/wf/B/8H/wf/OP/e7gf/B/8Y/63di+7f3c/Mz8y/u7+7r6qvqq7MCN2vqjq7n5mfmY+Ij4ifmWyZj4hdiErdv7tKu6+7v7u/u6+qr6oJqgmqCogKiI6Zn5l+iI+Iev+b/+/u7+4H/wf/OP8H/9/dzt3PzM/MCO4I7a3MCMwH/wf/B/8H/wf/B/8H/wf/CO4I7hnMnN0H/lnuz8zPzL+7v7uvqq+qv7tbu56qGoifmTuIj4gsdwpmCmYLVQtVfLu/u46qr6q/u7+7r6qeugt3jpkLZht3fZkJmSuIbYgH/wf/B/8H/wf/B/8H/wf/Sf4H/8/Mz90H/wf/i90H/gf/B/8H/wf/B/8H/wf/B/8H/wf/B/4H/gf/B/8H/gf/v7u/u6+qr6q/u4zMr6qvqkuZn5l/iI+In5mfmY+Ij4gI3QjtKbsIzAfuB/4I3QjtO5kJqkyHCogIuwjcCakIuwf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf+vP///83u7+7/////7+7v7t/d393PzM/M393f3c/Mz8wH/gf/B/4H/gf/B/4H/wf+CO0H/gjcB+4H/gf+B/45y7+7v7uvqq+qv7u/u6+qO4ifmZ+Zj4iPiJ+ZCnaPiAtm3v8Y/u/uve4H/gf+CNwI7d/d393PzM/MWssZy67MncsH/rz/eu3v7v/////v7u/u393f3c/Mz8zf3d/dz8zPzL+7v7uvqq+qv7u/u6+qr6p+iJ+ZPWaPiJ+Zn5mPiI+Iv7u/u6+qr6q/u7+7XJivqp+ZXXePiBxUPGafmS1Vj4j//97/7+7v7gf9B/0I3Ajc393f3c/Mz8xaywi6S6oJmAf9B/0I7AftB/0H/Qf9B/0IywjcCak6ywjsOO3PzM/Mv7u/u6+qr6pMiAp2PHYLZZ+Zn5mPiI+IXncsZU5mTWY7mL+7jqqvqr+7v7uvqq+qn5mfmY+Ij4ifmRmoXYgKhwf+B/0H/Qf9B/0H/Qf9B/1Z7Qf9z8zPzAf9B/2s3RjsB/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/UnsB/0H/c7cz8y/u7+7nrqvqr+7rsuvqq+qCalcmQqHCoefmZ+Zj4iPiAjbSttbukq6v7u/u6+qr6qOmTuYj4gKhp+Zn5mPiI+IB/0H/Qf9B/0H/Qf9B/0H/Qf9B/2+3CjsB/0H/Qf8KOwH/Qf9B/0H/Af8B/wH/Af8B/0H/M/cz8wH/Af8rNwH/L+7KduvqgjKCOtK2wjKSsqfmRmpj4g7hwm5OqkJlzuXv7u/u6+qr6q/uwjrr6oIyp+Zn5mPiI+In5kZuX6IO5cH/Af8B/wH/Af8B/wH/Af8B/wH/Af8GPwH/Af8rNzPzAf8B/wH/Af8B/wH/Af8B/xZ/Tj8z8zPzAf8B/vO3GrsGOuuy3y6r6q/u7+7r6qvqp+Zn5mPiI+In5k6qX6IO4e/u7+7nrqvqr+7v7uvqq+qCaiOmW6Ij4ifmZ+Zj4iPiAf8B/wH/Af8B/sH+wf7B/sH+wf7B/sH+wf7B/vO3M/MB/sH+wf7B/sH+wf7B/sH+wf7B/u+3HrsB/s4/M7cz8w52gjajbpKub+7v7uvqq+qjpk7mF2HCnWfmZ+Zj4iPiL+7v7uvqq+qv7u/u6+qr6qfmZ+Zj4g8hkuYn5kKdSt2B/sH+wf7B/sH+wf7B/sH+wf7B/u+3BjrB/sH+wf6B/oH+wf7B/sH+wf7B/sH+wf6B/sH+wf6B/oH+wf6B/oH+r+7e8uvqmy5COkI6gjICMifmQqWC3UKdQmnCacKhQmWB+oH+gjZCOkH+gf6B/oH+gjICNkJpwjICOkH+gjpB/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+gf6B/oH+gf6B/kH+Qf5B/oH+gf6B/oH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/gH+Af4B/kH+Qf5B/kH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/kH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Qf5B/kH+Qf5B/gH+Qf4B/kH+Qf5B/kH+Qf4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/kH+Af5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/oH+Qf5B/kH+Qf6B/oH+gf6B/l/dwf5XnZ/d393b2ZvZgf5PXUH+RqWX1VfVU9ET0QH+Qf5B/kH+gf6B/oH+gf6B/kH+gf6B/oH+gf6B/oH+gf5CNgH+QjYLzM/MwqGLyIH+QjpB/oI6QjHCnUIyAmnb3cLZG9mLGQLUwtTC1MLZF9VT1RPRE9EC1MLZD9ELVQLZAp1CnQJhgqFCZYJp112CnUJlhtkLVQ7dl9VT0RPRD8zPzMvIi8iPzM/My8iLyIfER8RCnUMMh8RHxENIQ4RPzM/My8iLyI/Mz8zLyIeMh8RHxENIQ0yHiEKdQtkC2QJlgmWCLgItwmWCZYJtwm3GagI2SuGCNkIyQjICNkI2U12f3dMdm9mf3d/d29mb2Y8dl9VLGVPRF9VX1VPRE9EGZcIyQmnCbcIyQjZCLgIyAmGCZYKdQp1CZcJpwmGCacsZT8zHFQvIj8zPzMvIi8iC2UfEQmnDEMfER8RC2QLUwtTC1MLVAtUC1MLZAtkCnUcVAtUHFQLZAtkCoYKZQqGCnVNdgqGPHZ/d393b2ZvZgmXPHYJpyxlX1VfVU9ET0QdQwtkHiILVAplCoYLZAqGHxELVAxDC1QLZAp2C2QKdQmnHGUJpxxUPzM/My8iLyIJlwp1CZcJuB8RHxEKdQtlf3d/d29mb2Z/d393X1VvZl9VPlRPRBxEDEMuRAxDDDN/d393b2ZvZj1VDENvZh1EX1VfVT9DT0RfVU9ET0RPRD8zHUMvIh4yDEMMMgxDDDMfER4hDEMMQwxDDEMLVAtULzI/Mx4iLyI/Mz8zLyIvIg0yHxELVAxDHxEfEQxDDDMMQwtUDEMLVAplCZcKdQmXC0MLZBxEC2UKdgmoCoYJqAi5CNsIuQjbB+wI6wf8S5gIygjrCMoI7Af8TWYH/D1VHjMLZR4iC2UKhgmoCnYJmB4hC1QMQwtUCnUJlwplCocIygjsCMoI6wf8LGUH7Am5CLkI2wmpCMsH7AjsCOwI7G2ICalvZjuHCoc9dgmXCnZfVU5lT0RPRAmYCnY+VBtmb3d/dwtUHFR/d393X2VvZgtlC1QLZRxUHVRfVT9ET0Q/Mz8zLyIvIj8zPzMvIi8iCZcfIQjKCakfER8RC1QNMj8zPzMvIi8iPzM/My8iLyIfER8RDiENIh8RHxENMgxEf3d/d29mb2YKdgmHK3YKh19VX1VPRE9EPVUsZRxUPkQqmH93b2ZvZn93f3dvZm9mX1VfVU9ET0RfVT1lP0QLZj8zPzMvIh0zC1QeQwxEDEMOIgxEC1QMRAxEDEQMRAxEPzM/My8iLyI/My8zLyIvIg0zHxELVAtUHxEfEQwzDDN/d393b2ZvZn93bndvZl5VLFVfVS1ET0RfVU9ET0Q/QwtlXncLVD1Vf3d/d29mb2YMRBxEDEMMRF9VX1U/RE9EPzM/My8iLyI/My8zLyIvIh8RHxENMw0yHxEfEQ0iDDMMQwxEDEMMRB1DPzMLVB8iDEMMRAxDC0QLVAxEC1ULZl13CndfZgtmK3d/dz1mb2ZfVSxVT0RPRE9VX1VPRE9Ef3dud29mTWYrd393LGZvZl9VLGU/RAtlHFVfVQxVT0Q/Mz8zLyIvIj8zPzMvIh8iHxEfEQtUDSIfEQwzDEQLRB1DC1ULVAtUC1UvMwtUDTMMRAxEDEQMRAtUC1ULVQtVf3d/d29mb2Z/d393b2ZvZl9VX1VPRE9ET1UuRC5EDER/d393b2ZeZX93LGYdVAxEHEQMRAxDDDMMRC1ELkM/RD8zPzMvIi8iPzMvMy8iLyIOIh8RC2YMRB8RHxENIg4RHjMvMy8iLyI/My8zLyIeMx8RHxEOIg0iHxEMRAxEC1ULZgp3C1ULZgmICaoKhwmqC1QLZgtVC2YKdwmZCncJqgjMCO4IzAjuB+5/dwjub2YIzAjtCMwI7QjuX1UI7k9EC1UKZgtlCncKiAmqCYgJqgtmCncLZgp3CZkJuwmZCbsIzAjuCMwI7gjuPzMI7i8iCMwI7gjMCO4I7h4zCO4Jqn93f3dvZm9mTXcLVT1mC1VfVV9VT0RPRD5VC2U/RAtVC1ULVQtVC2YsZn93LGZvZgtmCmYLZhxVPVVfVU9ET0Q/Mz8zLyIvIj8zLzMvIi8iHxEfEQp3C1UfER8RDEQMMy4zPzMvIi8iPzM/My8iLyIfER8RDDMMMx8RHxEMRAtVf3d/d29mb2YsZgtmLGYsVV9VX1VPRE9EHFU+VQtVPkQ8d393b2ZvZn93f3dvZm9mX1VfVU9ET0RfVS1VPkQLVT8zLjMvIgxVC1UuMwtVDTMMVQtVC1ULVQtVC1ULVQtVPzM/My8iLyI/My8zLyIvIg0iHxELVQtVHxEfEQwzDDN/d393b2ZvZn93TWZvZj5VPlVfVT5ET0RfVU9ET0Q/RAtmCncLVQtmf3d/d29mb2YMRAtVDEQLVV9VX1U/RE9EPzM/My8iLyI/My8zLyIfIh8RHxENMw0iHxEOEQ0iDDMMRAtEDEQLRC4zPzMeIi8iDEQLRAxEC1UOIh8RC1QNIn93LGZvZhxVC1ULVQtVC1VfVRxVT0QtRAtVC1ULVQtVC1U8ZixVb2Z/d393b2ZvZk9VX1VPRE9EX1VPVU9EPkQ/My4zLyIvIgtVC2YLVQtmHxENMwtlC2YLVQtmC2YLZi8zPzMdMy8iPzM/My8iLyIKdg0zCnYKdx8RHxEKZgxEf3d/d29mb2Z/d393b2ZvZhtmTlUKZj9EX1VfVU9ET0RNZgp2PVULVQqICakKdgmYLkQLVC5DDEQLZgqIC1UKdy8zPzMvIi8iPzM/My8iLyIfER8RDEMNMx8RHxENIg0iHjMMRB4iDEQLVQp3C1UKdw4iDEQMMwxEC1UKdwtVCncIywjtCLoI3Af+ObsH7im6CaoIzAmpCMsI7QjcCO0I7X93f3dvZm9mf3cLZm9mLGZfVV9VT0RPRF9VHGVPRC1UCZkIywmZCMsI7QjtCO0I7QmZCMsJmQjLCO0I7QjtCO0/Mz8zLyIvIj8zLjMvIh8iHiIfEQmpCnYfER8RC1ULVAtEf3cLVF9Vf3d/d29mb2YLVC1EC1UMRF9VX1U+RD9Eb2YMMz5VDDMtRH93PkRvZi1EDDMMRAxDLkRfVS5DT0QLVQtUC1ULVQtUC1QLVQtVC1QLVQtlC2ULZQtlC2UKdgtUC1QLZQtlLzM/My8iLyIKdgxUCocKhx8RHxELVQtUf3d/d29mb2ZOVU5lPlU+VV9VX1VPRE9ELkQuRB1DHUN/d393b2ZvZk12CnY9ZQtlX1VfVU9ET0Q+VAtUT0QtRD8zPzMvIi8iDUMMQwxDDEMfER8RDEQMRAxEDEQLVAtULzM/Mx4yLyI/Mz8zLyIvIgxDDiIMRAtEHxEfEQwzDSIKdgplC2ULZW53f3dfZm9mC1ULZQxUPkRfVV9VT0RPRH93LHZvZixlf3d/d05lb2ZfVQxUP0QLVC1UX1UMVE9EPzM/My8iLyI/Mz8zLyIvIh8RHxEOEQ0iHxEMQwxDC1QuQwtUC1QLVAtULjMLVAxDC2QLVAtUC1QLVAtUC1QLZH93PHZvZk5lCnZNdgtlTmZfVU9VT0RPRBxUX1VPRE9Ef3d/d29mb2ZNd012PGY9ZV9VX1VPRC5EC2U9VAtUHUQ/Mz8zLyIvIj8zPzMvIi8iDTIfEQtlDEMfER8RDSIMQz8zDEMeMgtTC1QMUwtTC1MMQwxDDEMMQwxDC1MLQwtUf3d/d29mb2Z/d393b2ZvZl9VX1VPRE9EX1VOVE9EHUN/d393b2ZvZn93f3dOVRxDLUQMQwxDDEMMQx1DDDM/Qz8zPzMeMi8iPzM/My8iLyILUx4hC2QLZB8RHxEMMg0hLzMuMy8iLyIvMz8zLyIvIh8RHxEOEQ4hHxEOIQ0yDEMcVAtkDEMLU393f3dvZm9mHUMMQy5DC0NfVV9VT0RPRH93HGVvZgtTC2QLVAtTC1NfVQtTT0QMQwtDC0MLQwtTLjMLUw1DC1Q/Mz8zLyIvIgtTC2QLVAtkHxEfEQxDDEM/MwxDLyIdMgtTC1QLVAtkHxEOIQxDC1MLVAtkC2QKZAtUC2QLUwtUCnQKhQpkCoULUwtkC2QKdAp1CZYKhQmnCacIyAmmCMgI2Qf6CNkH+gmnCMgIyAjZCOkH+gjpB/oKZAqFCnUJlgmmCLgItwjZCoUJpgqFCacIyAjpCMgI6QjZCOkH6Qf6B/kH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+Qf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf5B/oH+Qf6B/oH+gf5B/kH+Qf5B/kH+gf5B/oH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf4B/kH+Af5B/kH+Qf5B/gH+Af4B/gH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af5B/gH+Af4B/gH+Af5B/kH+Qf4B/gH+Af4B/kH+Qf5B/kH+Af5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf6B/kH+Qf5B/kH+Qf6B/oH+gf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B+kH+gf6CNgItwjpCMgH+gf6B/oH+gfpCNkH+gfpB/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gmWCnUJpwqFC2QLUwp0C2QIyAmnCNkIyAqFCnUJpwmWC0MLQwtTC1MLUwtTC1MLUwtkC2QKhQp1C2QLZAp1CoUH6QjZB/oH6gjICLgI6QjZB/oH+gf6B/oH+gfqB/sH+wmnCacIyQjICacJpwjICMkH6gjqB/sH+wjqCOoH+wf7C2QKdQtkCnUKhgmXCoYJpwp1CoUKhgmXCZcIuAm4CMkJpwmnCLgJuAmXCoYJpwqGCMkIyQjZCNkJuAmXCMkIuAmnCLgIyQjZCMkI6gjqB/sH6gf6B/sH+wf7B/sH+wf7COoI6gf7B/sI2gjJB+sI6gf7B/sH+wf7B/sH+wf7B/sLZAtkCnUKZQtlCoYKdQqGCoYKhgmnCZcKhgmXCacJqAmXCbgJpwi4CbgJlwi5CagJuAjJCMkI2gjJCLkI2gjJCMkIuQjaCNoIyQjJCNoI6gf7B+sH/Af8B/sH+wf8B/wI2gjqCOsH6wjrCNsH+wfrB/wH/Af8B/wH/Af8B/wH/AqGC2UJhgp1C1QLVAp1CnUJqAqGCLkJqAqGCoYJqAmoC2UKZQp2CoYKZQtlCoYKdgmHCZcJqAm5CZcJhwm5CagI2gjJCOsI6wjJCMkI2wjbB/wH/Af8B/wH/Af8B/wH/AjKCMoI6wjrCMoIygjrCOsH/Af8B/wH/Qf8B/wH/Qf9C2QLZQp1CmUKZQqHCnYKhwqGCoYJqAmoCocJmAmoCbkJqAjKCakIygjsCOwI7AjsCLkI2wjKCNsI7AfsB+wH/QjKCMoI2wjbCMoIygjbCOwH/Af8B/0H/Qf8B/0H/Qf9CNsH7AfsB/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0IywmpCNsIugmXCnYJmAqHCOwIygfsCNwJqQmYCMoJqQtlC1UKZgtlC1QLVAtUC1QKdgpmCZgKhwtlC2UKhwp2B/0H7Af9B/0I3AjLB+0I7Af9B/0H/Qf+B/0H/Qf+B/4IugmpCNwIywmpCZgIywjLB/0H7Qf+B/4I7AjsB/0H/QtEDEQLVAtUC0QLVAtVC2ULZQtlCncKhwp2CncJmAmZC1ULZQpmCnYLVQtVCnYLZgqHCZgJqQm6CYgKhwm6CakJqQmpCMsIywm6CMsI3AjcCOwI7Qf+B/4H7Qf9B/4H/gjLCNsI7QftCMwIywjtCO0H/gf+B/4H/gf+B/4H/gf+C0QMRAtVC1QMQwxDC0QLVAp2CmYJmAmIC2ULZQqHCocMRAtVC1ULZQtlCnYKdgqHCmYKdwqICZkKiAmZCakIugi7CboI3AjcCakJqgjMCMwH/gfuB/4H/gftB+0H/gf+CaoIuwjcCNwIywjcCO0I7QfuB+4H/gf/B/4H/gf/B/8Kdwp2CogKhwtlC1UKdgtmCakJmQi7CLsJiAqHCaoJqQtUC1ULZQtmC2UKZgp3CogKdwqHCZkJqQmICakJqgi7CNwI3AfuCO0IzAjLCO0I7Qf+B/4H/wf/B/4H/gf/B/8IywjLCN0I7QjMCN0I7QfuB/4H/gf/B/8H/wf/B/8H/wp3CncJiAqIC2YLVQp3CmYJqgmqCMwIzAmZCogIuwmqC1QMRAtVC1UMRAtVC1ULVQp3CmYJmQqIC2YKZgqICogI7QjdB/4H/gjcCMwI7gjtB/8H/wf/B/8H/wf+B/8H/wm7CaoI3QjMCaoJqgjMCMwH7gjuB/8H/wjuCO4H/wf/C2YKdwpmCocJmQm7CZkIuwp3CYgJmQmqCaoIzAi7CNwIzAjuCN0H7gfuCN0H7gjdCN0H7gjuB/8H/gjuB/8H7gm7CMsI3AjdCNwI7gjuB/4H7gf+B/8H/wf/B/8H/wf/B/4H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8IuwmZCMsJmQp3C1UKdwtmCMwJqgjdCMwJiAp3CaoJmQtVC1ULVQtVC1ULVQtVC1UKZgtmCogKiAtmC2YKiAqICO4I3Qf/B+4IzAi7CO4I3Qf/B/8H/wf/B/8H7gf/B/8JqgmqCMwIzAmqCaoIzAjMB+4H7gf/B/8I7gfuB/8H/wtVC1ULVQtVC1ULVQtmCmYLZgp3CogJmQp3CogJmQmqC2YLZgp3CncLZQtVCncLZgmZCZkJuwi7CZkKiAm7CaoJqgm7CMwI3QjLCMwI3QjuB+4H7gf/B/8H/wf/B/8H/wjdCN0H7gfuCMwIzAjuCO4H/wf/B/8H/wf/B/8H/wf/C0QMRAtVC1UMRAxEC0QLVQp3CmYJmQmIC2YLZgqICogMRAtVC1ULZgtmCnYKdwp3CmYKdwmICZkKiAmYCaoJqgi7CbsI3QjdCaoJqgjMCMwH/gfuB/8H/wfuB+4H/wf/CbsIuwjdCN0IywjMCN0I7QfuB+4H/wf/B/4H/gf/B/8KdgpmCncKdwpmCmYKdwp3CZgJiAmqCaoJiAmYCaoJqgp3CncKhwqICncKZgqICncJmQmZCboIuwmZCZgIuwm6CMwIzAjtCO0IzAjMCO0I7Qf+B/4H/wf/B/4H/gf/B/8IzAjcCO0I7QjcCMwI7QjtB/4H/gf/B/8H/gf+B/8H/wtVC1QKZgtVDEQMQwtUC0QKiAp3CaoJmQtmC2UKiAqIDEQLRAtUC1ULZQp3CmYKiAtmCnYKiAmYCocJmQmZCboIywi7CO0I3Qm6CaoI3AjMB/4H/gf/B/8H7gfuB/4H/gmqCboIzAjcCLsIzAjcCO0H7QftB/4H/gf+B/4H/gf+CakIywmqCMsI7QftCO0H7Qi6CNwIywjtB+0H/Qf9B/4I3Am6CNwIugmYCnYJmQqHCO0IywftCNwJqgmYCMsJugjcB+0H7Qf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/0I7Qf+B/0I3AjLB+0I7Af+B/4H/gf+B/4H/Qf+B/4LZgtlCnYKdgp2CocKhwmYCocKhwmpCakJmAmpCakIygmYCakJqQi6CagJmAi6CakIygjLCNsI7AjLCLoI7AjbCMsIywjcCNwIywjbCOwI7Af9B/0H/gf+B/0H/Qf+B/0I7AftB/0H/QftCOwH/Qf9B/0H/Qf9B/4H/Qf9B/0H/QqHC2UJlwp2C1ULVAplC2UJqQmHCLoJqQqHCnYJqAmYC1QLVAtlCnULZQtVCnYKdQqGCocJqAmpCYcKhwmpCagI2wjKCOwI7AjKCLoI2wjbB/0H/Af9B/0H/Af8B/0H/QjKCMoI2wjrCMoIygjsCOsH/Af8B/0H/Qf8B/wH/Qf9C1QLVAtlC1ULVAtUC1QLVAp2CnUJmAmXC2ULZQqGCoYLVAtUC1QLZQtlCnUKdQqGCmUKdgqGCZcKhwmXCagIuQi5CbkI2wjaCagJqAjKCMoH/AfsB/wH/AjrCOsH/Af8CagIuQjKCNoIygjaCOsH6wfrB+wH/Af8B/wH/Af8B/wKdQp1CYcJhwplC1QKhgp1CagJqAjJCMkJlwqGCLkJqAtUC1QLZAtkC1QLZAtlCnUKdgp1CZcJlwqGCZcJpwm4COsI6wf7B/sI2gjJB+sI6wf8B/wH/Af8B/wH+wf8B/wIyQjJCOoI2gjJCMkI6gjqB/sH+wf7B/sH+wf7B/sH+wp1CnUKhgmWCnULZAqGCnUJpwmoCMkIyQmnCZYIyQm4C1QLQwtkC1QMQwtDC1MLVAqFCnUJpwmWC2QLZAqGCoUI2gjqB+sH+wjaCMkH6wjqB/sH+wf7B/sH+wf7B/sH+wjICbgI2gjZCacJpwjJCMgH+gfqB/sH+wjqCOoH+wf7C1QLZAtkCmQLZApkCnUKdQp1CnUKhgmWCoUKhQmWCacKZAtkCnUKdAtkCnUKdQqFCoUKhQmnCaYKhQmWCacJpwmnCbcIyQjZCLgIyAjZCNkI6gfqB/sH+wfqB/oH+wf6CMgIyAjZCNkIyAjICNkI6Qf6B/oH+gf6B/oH+gf6B/oJhgmnCZYJtwjIB+kI2AfpCaYItwi3CMgI2QfpCOkH+Qf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6CMgI2QjpB+kH6Qf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+Qf6B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+gf6B/oH+gf6B/kH+gf5B/oH+gf6B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/gH+Qf4B/kH+Qf5B/kH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/kH+Af4B/gH+Af4B/gH+Af5B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af5B/kH+Qf5B/gH+Qf4B/kH+Qf5B/kH+Qf4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/oH+Qf5B/kH+Qf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+Qf5B/kH+Qf6B/oH+gf6B/kH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf7B/oH+wf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf7B/sH+wf6B/sH+gf7B/sH+wf7B/sH+gf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH/Af7B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH+wf7B/sH+wf7B/wH+wf8B/sH+wf7B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Qf8B/0H/Af8B/wH/Qf9B/0H/Qf9B/wH/Qf8B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/gf9B/4H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/gf+B/4H/Qf+B/0H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf/B/4H/gf+B/4H/wf/B/8H/wf+B/8H/gf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/4H/gf+B/4H/gf+B/4H/wf+B/4H/gf+B/4H/gf+B/8H/wf/B/8H/wf+B/8H/gf/B/8H/wf/B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/0H/gf9B/4H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf+B/4H/gf+B/4H/Qf9B/0H/gf+B/4H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf8B/0H/Af9B/0H/Qf9B/0H/Af8B/wH/Qf9B/0H/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af7B/sH+wf7B/wH/Af8B/sH+wf7B/sH+wf8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/sH/Af7B/wH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+gf7B/oH+wf7B/sH+wf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+wf7B/sH+gf6B/oH+gf6B/sH+gf7B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf5B/oH+Qf6B/oH+gf6B/kH+Qf5B/kH+gf5B/oH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf4B/kH+Af5B/kH+Qf5B/kH+Af4B/gH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/gH+Qf4B/gH+Af4B/gH+Qf4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/cH+Af4B/gH+Af4B/cH9wf3B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf4B/gH+Af4B/kH+Qf5B/kH+Af5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf6B/kH+Qf5B/kH+Qf6B/oH+gf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+gf6B/oH+gf5B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+gf6B/oH+gf6B/sH+wf7B/oH+wf6B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH/Af7B/sH+wf7B/sH/Af8B/wH+wf8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Qf9B/0H/Qf8B/0H/Qf9B/0H/Qf9B/0H/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af9B/wH/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/0H/Qf9B/4H/gf+B/4H/gf9B/4H/Qf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/8H/gf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf+B/4H/gf+B/4H/wf+B/8H/gf+B/4H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/4H/wf/B/8H/wf+B/4H/gf+B/8H/gf/B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf9B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/0H/gf9B/4H/gf+B/0H/Qf9B/0H/Qf+B/0H/gf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf8B/wH/Af8B/0H/Af9B/wH/Af8B/wH/Af9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/wH/Qf8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af7B/wH+wf8B/wH/Af8B/wH+wf7B/sH/Af7B/wH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH/Af7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf6B/sH+wf7B/sH+wf6B/sH+gf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+gf6B/oH+gf7B/oH+wf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+Qf6B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+gf6B/oH+gf6B/kH+gf5B/oH+gf6B/oH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Af4B/kH+Qf5B/kH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/kH+Af5B/gH+Af4B/gH+Af5B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH9wf4B/gH+Af4B/gH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf4B/gH+Af3B/cH9wf3B/cH+Af3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+Qf5B/kH+gf6B/oH+gf6B/kH+gf5B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+wf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf7B/sH+wf6B/oH+gf7B/sH+wf7B/sH+gf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH/Af7B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH+wf7B/sH+wf7B/sH+wf8B/sH+wf7B/sH+wf8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Qf8B/0H/Af8B/wH/Af8B/0H/Qf9B/wH/Qf8B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/4H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/4H/gf+B/4H/Qf+B/0H/gf+B/4H/gf+B/0H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf/B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf/B/4H/gf+B/4H/wf/B/8H/wf+B/8H/gf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf+B/4H/gf+B/4H/wf+B/4H/gf+B/4H/gf+B/8H/wf/B/8H/wf+B/4H/gf/B/8H/wf/B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf9B/4H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf+B/4H/gf+B/4H/Qf+B/0H/gf+B/4H/gf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Af9B/0H/Qf9B/wH/Af8B/wH/Qf9B/0H/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Qf8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af7B/sH+wf7B/wH/Af8B/sH+wf7B/sH+wf8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/sH/Af7B/wH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+wf7B/sH+gf6B/oH+gf6B/sH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf5B/oH+Qf6B/oH+gf6B/kH+Qf5B/kH+gf5B/oH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Af5B/kH+Qf5B/kH+Af4B/gH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/gH+Qf4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/cH+Af4B/gH+Af3B/cH9wf3B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH9wf3B/cH9wf3B/gH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf6B/kH+Qf5B/kH+Qf6B/kH+gf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/oH+gf6B/oH+gf5B/oH+Qf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf7B/oH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+gf6B/oH+gf7B/sH+wf7B/oH+gf6B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf8B/sH/Af7B/sH+wf7B/wH/Af8B/wH+wf8B/sH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Qf9B/0H/Qf8B/wH/Af9B/0H/Qf9B/0H/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af9B/wH/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf+B/0H/gf9B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/0H/Qf9B/0H/gf+B/4H/gf9B/4H/Qf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf/B/4H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf+B/4H/gf+B/4H/wf+B/8H/gf+B/4H/gf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/gf/B/4H/wf/B/8H/wf+B/4H/gf+B/8H/gf/B/4H/gf+B/4H/gf/B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf9B/4H/gf+B/4H/Qf9B/0H/Qf+B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/wH/Af8B/0H/Af9B/wH/Af8B/wH/Af9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf8B/0H/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af7B/wH+wf8B/wH/Af8B/sH+wf7B/sH/Af8B/wH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf6B/sH+gf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/oH+gf6B/oH+gf7B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+Qf6B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+gf6B/oH+gf6B/kH+gf5B/oH+gf6B/oH+gf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf4B/kH+Qf5B/kH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/kH+Af5B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH9wf4B/gH+Af4B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf4B/gH+Af3B/cH9wf3B/cH+Af3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/oH+Qf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+Qf5B/kH+gf6B/oH+gf6B/kH+gf5B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+wf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf7B/oH+wf6B/oH+gf7B/sH+wf7B/sH+gf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH/Af7B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH+wf7B/sH+wf7B/sH+wf8B/sH+wf7B/sH+wf8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Qf8B/0H/Af8B/wH/Af9B/0H/Qf9B/wH/Af9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/4H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/4H/gf+B/4H/Qf+B/0H/gf+B/4H/gf+B/0H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf/B/4H/gf+B/4H/gf/B/8H/wf+B/8H/gf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/gf/B/4H/wf+B/4H/gf+B/4H/wf+B/4H/gf+B/4H/gf+B/8H/wf/B/8H/wf+B/8H/gf/B/8H/wf/B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf9B/4H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf+B/4H/gf+B/4H/Qf+B/0H/gf+B/4H/gf+B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Af9B/0H/Qf9B/0H/Af8B/wH/Qf9B/0H/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/sH+wf7B/wH/Af8B/sH+wf7B/sH+wf8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/oH+wf7B/sH+wf7B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+wf7B/sH+wf6B/oH+gf6B/sH+gf7B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+Qf6B/oH+gf6B/kH+Qf5B/kH+gf6B/oH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf4B/kH+Af5B/kH+Qf5B/kH+Af4B/gH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf4B/gH+Af4B/gH+Qf4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/cH+Af4B/gH+Af3B/cH+Af3B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af3B/cH9wf3B/gH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+gf6B/oH+gf6B/sH+wf7B/oH+gf6B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf8B/sH/Af7B/sH+wf7B/wH/Af8B/wH+wf7B/sH/Af8B/wH/Af8B/sH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af9B/0H/Qf8B/0H/Af9B/0H/Qf9B/0H/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf+B/0H/gf9B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/0H/Qf9B/0H/Qf+B/4H/gf9B/0H/Qf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf+B/4H/gf+B/4H/wf+B/8H/gf+B/4H/gf+B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/4H/wf/B/8H/wf+B/4H/gf+B/8H/wf/B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/0H/gf9B/4H/gf+B/4H/gf9B/0H/Qf+B/0H/gf9B/0H/Qf9B/0H/gf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/wH/Af8B/0H/Af9B/wH/Af8B/wH/Af9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/wH/Qf8B/0H/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH+wf8B/sH/Af8B/wH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH/Af7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf6B/oH+gf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/oH+gf6B/oH+gf7B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+gf6B/oH+gf6B/oH+gf5B/oH+gf6B/oH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf4B/kH+Qf5B/kH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/kH+Af5B/gH+Af4B/gH+Af5B/gH+Qf4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf4B/gH+Af4B/cH9wf3B/cH9wf3B/gH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/YH9wf3B/cH9wf2B/cH9wf2B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf7B/sH+wf6B/oH+gf6B/sH+wf7B/sH+gf7B/oH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH+wf7B/sH+wf7B/wH+wf8B/sH+wf7B/sH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/0H/Af8B/wH/Af9B/0H/Qf9B/wH/Af8B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/4H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/gf+B/4H/Qf9B/0H/gf+B/4H/gf+B/0H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/8H/gf/B/4H/gf+B/4H/gf/B/4H/wf+B/8H/gf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/4H/wf/B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/8H/wf/B/8H/wf/B/8H/gf/B/8H/wf/B/8H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/Qf9B/0H/Qf9B/4H/Qf9B/0H/Qf9B/0H/Qf+B/4H/gf+B/4H/gf+B/0H/gf+B/4H/gf+B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Af9B/0H/Qf9B/0H/Af8B/wH/Qf9B/0H/Qf8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Qf8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/sH+wf7B/wH/Af8B/sH+wf7B/sH+wf8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/oH+wf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+wf7B/sH+wf6B/oH+gf6B/sH+gf7B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf5B/oH+Qf6B/oH+gf6B/oH+Qf5B/kH+gf6B/oH+Qf5B/kH+Qf5B/oH+Qf6B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf4B/kH+Af5B/kH+Qf5B/gH+Af4B/gH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/gH+Qf5B/gH+Af4B/gH+Qf4B/kH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/cH+Af3B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af3B/cH9wf3B/gH9wf4B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/YH9gf2B/YH9wf2B/cH9gf2B/YH9gf2B/cH9wf3B/cH9wf2B/cH9wf3B/cH9wf3B/cH9gf3B/YH9wf2B/YH9gf2B/YH9gf2B/YH9gf2B/YH9gf2B/YH9g==
+
+
+
+
+
diff --git a/trunk/CardSaveData/Mover/body/banner/banner.cbmd b/trunk/CardSaveData/Mover/body/banner/banner.cbmd
new file mode 100644
index 0000000..2364568
Binary files /dev/null and b/trunk/CardSaveData/Mover/body/banner/banner.cbmd differ
diff --git a/trunk/CardSaveData/Mover/body/banner/banner_dummy.bcwav b/trunk/CardSaveData/Mover/body/banner/banner_dummy.bcwav
new file mode 100644
index 0000000..d579907
Binary files /dev/null and b/trunk/CardSaveData/Mover/body/banner/banner_dummy.bcwav differ
diff --git a/trunk/CardSaveData/Mover/body/banner/icon_24.ctpk b/trunk/CardSaveData/Mover/body/banner/icon_24.ctpk
new file mode 100644
index 0000000..cc54fe7
--- /dev/null
+++ b/trunk/CardSaveData/Mover/body/banner/icon_24.ctpk
@@ -0,0 +1 @@
+MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMUUMMMMMMMMMMMMMUUUMUUUU]]]U]]]]eemMMMUUUU]UU]]]eee]]]eemmnemmvv,v,v-~]eeeemmvennvv,~-~Mv,~,~-~-~NNoM~NNoopn,v,v-~-~NNo-~NNooppnopӦҦӮӮopӦӦӦԮӦԮ7778XYφMUUUU]]]U]]e]eem]eej]mkeK*!m2vk+;-~LmNeeemmvv,vmvv,~,v-~-~Nv!-~K
moK*.uNoS:v-~!dM}K*!NnuopkNdl2oL2ktrҍk.Kl2kpO}nKtd
CtӦԮ
KB:kB.KB|77cXyӦ|k7m:!kXkY7XXYYzzzYzzכߛߛm:[kV:WJOSzzߛtxߛ,~-~M~NNooNooӦӦӮӮҦӮӮӮԮ77X77XXYyzԮ77X77XXYYz8YYyyzzߛzךߚߛXYyzzכߛߛzߛߛߜߜ
\ No newline at end of file
diff --git a/trunk/CardSaveData/Mover/body/banner/icon_48.ctpk b/trunk/CardSaveData/Mover/body/banner/icon_48.ctpk
new file mode 100644
index 0000000..24fd5a8
--- /dev/null
+++ b/trunk/CardSaveData/Mover/body/banner/icon_48.ctpk
@@ -0,0 +1,2 @@
+MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMUUMUUUUUUUMMMMMMMUMUUUUUUUUUUUUUU]UUU]]]]]UUUUUU]]U]]]]]]]]]]]]eee]eeeeeem]]]]]]ee]]eeeeemeeeeemmnmmmnnnvveeemmmmnmmmnnvvvnvvvv,v,v,~v,v,v-~-~-~-~Mmnnvvv,v,~v,vv,~,~-~-~M~,~-~-~-~M~NNN-~NNNNooo,~-~-~M~M~NNNMNNNNoooNooooppopNNooooopoppӦӦӦӮӦӦӮӮӮԮԮMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMUMMMMMMMMMMMMMMMUMMMUUUUUUUUUUUUUMMMMMUUUMUUUUUUUUUUUU]]]U]]]]]]]UUUUU]]]U]]]]]]e]]]eeeeeeeeeemmm]]]]]eee]eeeeeemeeemmmnnmmmnnvv,veemmmmnvmnnvvvv,vnvv,v,v,~,~-~v,~,~-~-~M~MNnvvvv,v,v-~v,~,~-~-~-~-~N-~-~-~NMNNoNNNONoop-~M~M~NNNNoNNNoooopOoopppnoooopopӦӦӮҦҦӦӮӮҦӦӦӮӮӮӦӦӮӮԮԮӮԮ777777777778X78XXXYYy׆MMMUUUUUUUUUUUU]UUU]]]]]]]]]]]]eUUU]]]]]]]]]]eee]]]eeeeeeeememmm]]]eeeeeeeeeemmTemmm
+nnn+e+]2kkkk2Kemmne!Lknnvv2k2kkKT+;,~,~-~-~-~d-~u-~-~NNNvvm,v,v-~-~-~kk+;K*l\N
e~-~MMNNNnumm*!kkkKK-~NNNN\OdNoooo/pkKkBp!k}*:P}kkoooppkS*NdӦl2kkktӮ
CӦ:rӦ2Ӯkkk!kk|knSk0dk.Km:kӦӦӮԮӮԮt*kBkB777kckնS*2kck2!k7XXXBkBkXYYy7777XXX7XXXXYYyXYYyYyzzyzzzzߚzߛXYYyyzzzyzzzzߚߛߛzzߚߛߛߛߛ]eeeeeemeeemmmnnemmnnvvvnvvvv,v,v-~mmmnnvvvnvvvv,~,~-~v,v,~-~-~-~-~M-~-~-~NNNNov,v,v,~2kCk-~-~-~M
ekN:
eNm\NNooo*k*opd/uNNNNNoonoopopLCkpkkNd\oppt\ul*r
ColӦԮq/dkk\p\SӦӮӦӦӮӮԮԮkkҕplkk0d2k:*kl2kk*0l0lk0lkttkukkk7m:7Dz|!Pl7u677777XkԝԝXϗXYXXXYYyyz[.S!k6,2Ykkkkyzא[krtkzr|kr|kk:zzzߚzzzߚߚߛߛߛr|k:Uμzߛߛߛ,v,~,~-~-~M~M~N-~M~M~NNNNoNNNoOoopoooppNNNoooopoooppӦpӦӦӮӦӦӮӮӦӦӮӮԮӦӮӮԮԮԮӮԮ777777788X77777778XX7XXXXYYyXYYyyzzz788XXXXYXYYYYyyzYyyzzzzߛzzzߛߛߛYyzzzߚߚߛzߚߚߛߛߛߛߛߛpҦҦӦӦӦӮӮԮӦӮӮԮԮӦӦӮӮӮԮԮ67Ԯ77777877788XXX7777X777XXXXY8XXYYYyyYYyyyzzߚ7XXXXYYyXYyyyzzzyzzzzߚߛߛzߛߛߛߛߛyzzzzߛߛߛzߛߛߛߛ
\ No newline at end of file
diff --git a/trunk/CardSaveData/Mover/body/banner_null_icon.bsf b/trunk/CardSaveData/Mover/body/banner_null_icon.bsf
new file mode 100644
index 0000000..9b21bc2
Binary files /dev/null and b/trunk/CardSaveData/Mover/body/banner_null_icon.bsf differ
diff --git a/trunk/CardSaveData/Mover/body/body.rsf b/trunk/CardSaveData/Mover/body/body.rsf
new file mode 100644
index 0000000..ffe9238
--- /dev/null
+++ b/trunk/CardSaveData/Mover/body/body.rsf
@@ -0,0 +1,29 @@
+# AvP[ṼftHgl
+BasicInfo:
+ # vÕ^Cgw肵܂B
+ Title : $(TITLE)
+# BackupMemoryType: 128KB
+ BackupMemoryType: None
+ Logo : Nintendo
+# CompanyCode: "00"
+ ProductCode : "CTR-N-22NA"
+
+TitleInfo:
+# Category: 0x0010
+# Category: SystemApplication
+ UniqueId: 0xf8014
+ Version: 0
+
+Rom:
+ HostRoot : romfiles
+# SaveDataSize: 512K
+
+AccessControlInfo:
+ UseExtSaveData : false
+
+ FileSystemAccess:
+ - CategoryFileSystemTool
+
+SystemControlInfo:
+ RemasterVersion: 2
+
diff --git a/trunk/CardSaveData/Mover/body/romfiles/banner.icn b/trunk/CardSaveData/Mover/body/romfiles/banner.icn
new file mode 100644
index 0000000..eb780b9
Binary files /dev/null and b/trunk/CardSaveData/Mover/body/romfiles/banner.icn differ
diff --git a/trunk/CardSaveData/Mover/body/romfiles/nnfont_RectDrawerShader.shbin b/trunk/CardSaveData/Mover/body/romfiles/nnfont_RectDrawerShader.shbin
new file mode 100644
index 0000000..4290c2c
Binary files /dev/null and b/trunk/CardSaveData/Mover/body/romfiles/nnfont_RectDrawerShader.shbin differ
diff --git a/trunk/CardSaveData/Mover/body/source/main.cpp b/trunk/CardSaveData/Mover/body/source/main.cpp
new file mode 100644
index 0000000..d9e50e6
--- /dev/null
+++ b/trunk/CardSaveData/Mover/body/source/main.cpp
@@ -0,0 +1,1470 @@
+/*---------------------------------------------------------------------------*
+ Project: Horizon
+ File: main.cpp
+
+ Copyright (C)2010 Nintendo Co., Ltd. All rights reserved.
+
+ These coded instructions, statements, and computer programs contain
+ proprietary information of Nintendo of America Inc. and/or Nintendo
+ Company Ltd., and are protected by Federal copyright law. They may
+ not be disclosed to third parties or copied or duplicated in any form,
+ in whole or in part, without the prior written consent of Nintendo.
+
+ *---------------------------------------------------------------------------*/
+
+#include
+#include
+#include
+#include
+#include
+//#include
+#include
+#include
+#include
+#include
+#include
+//#include
+#include "../../../common/savefile/savefile.h"
+#include "../../../common/savefile/savedata.h"
+#ifdef BKUP_NOTMEM
+#include "./savefile/exsave.h"
+#else
+#include "../../../common/savefile/membak.h"
+#endif
+#include "./screen/screen.h"
+#include "../../../common/common.h"
+
+nn::fnd::ExpHeap appHeap;
+uptr heapForGx;
+//Gui gui;
+myResult errRes;
+#ifdef BKUP_NOTMEM
+const u32 IconBuffSize = 1024*20;
+uptr IconBuffer;
+size_t IconSize;
+#endif
+
+#ifdef DEBUG_ENABLE
+cStrLst memo;
+#endif
+bool isDebugMode = false;//デバッグモード
+
+//char strBuff[128];
+//bool exist;
+
+SaveData savedata;
+nn::os::LightEvent ejectEvnt(false);
+nn::os::LightEvent insEvnt(false);
+#ifdef BKUP_NOTMEM
+ExSave exsave;
+nn::os::LightEvent ejectEvntSd(false);
+nn::os::LightEvent insEvntSd(false);
+#else
+MemBak exsave;
+#endif
+
+//バックアップの状態
+bool Active,Formatted;
+bool exActive,exFormatted;
+tArcInfo arcInfo,arcInfo_ex;//アーカイブ情報
+
+//プロダクトコードの一致
+bool isAgreePCode;
+//ベリファイ結果
+//bool failveri;
+
+//Top画面エラー表示
+int tmerr;
+
+
+#ifdef ENABLE_CRUSH
+int CrashForDebug= 0;
+#endif
+
+
+//結果
+typedef enum {
+ SUCCESS
+ ,ERROR
+ ,CANCEL
+ ,INSEXIT
+}RetCode;
+
+//挿抜イベント時に設定
+typedef enum {
+ InEx_None
+ ,InEx_InsCard
+ ,InEx_EjcCard
+#ifdef BKUP_NOTMEM
+ ,InEx_InsSd
+ ,InEx_EjcSd
+#endif
+}tIsInsEject;
+
+tIsInsEject isInsEject;
+
+extern u8 scr_evnt;
+void WaitUI();
+void PutError(ErcDev dev,int cd=0);
+
+
+//終了処理
+void endfunc()
+{
+
+ nn::fs::UnregisterCardEjectedEvent();
+ nn::fs::UnregisterCardInsertedEvent();
+ ejectEvnt.Finalize();
+ insEvnt.Finalize();
+#ifdef BKUP_NOTMEM
+ nn::fs::UnregisterSdmcEjectedEvent();
+ nn::fs::UnregisterSdmcInsertedEvent();
+ ejectEvntSd.Finalize();
+ insEvntSd.Finalize();
+#endif
+
+ savedata.Finalize();
+ exsave.Finalize();
+
+ ScrFinalize();
+
+#ifdef BKUP_NOTMEM
+ appHeap.Free(reinterpret_cast(IconBuffer));
+#endif
+
+}
+
+//エラー停止
+void failstop()
+{
+ NN_LOG("fail %d,stop\n",errRes);
+ finish();
+}
+
+#ifdef DEBUG_ENABLE
+//ログ追加&表示
+void LogAdd(char *s)
+{
+ memo.add(s);
+ if(isDebugMode){
+ scr_DgbLog(&memo);
+ while(ScrGetDrawFlag()){
+ nn::os::Thread::Yield();//表示
+ }
+ }
+}
+
+char dst[128],work[64];
+void LogAdd_Int(char *s,int i)
+{
+ sprintf(dst,s,i);
+ LogAdd(dst);
+}
+
+void LogAdd_cat(char *s,char *s2)
+{
+ strcpy(dst,s);
+ strcat(dst,s2);
+ LogAdd(dst);
+}
+
+void LogAdd_bytes(char *s,u8 *b,int n)
+{
+ int i;
+ for (i=0;i desc = %d",res.GetDescription());
+}
+
+void LogAdd_Fparam(tArcInfo *p)
+{
+ LogAdd_Int("FileCount %d",p->FileCount);
+ LogAdd_Int("DirCount %d",p->DirCount);
+ LogAdd_Int("FileEntry %d",p->FileEntry);
+ LogAdd_Int("DirEntry %d",p->DirEntry);
+}
+
+void LogAdd_InfoParam(tArcInfo *p)
+{
+ LogAdd_Int("Version %d",p->Ver);
+ LogAdd_cat("> pcode = ",p->Pcode);
+ LogAdd_Fparam(p);
+}
+#else
+void LogAdd(char *s)
+{
+ NN_UNUSED_VAR(s);
+}
+
+void LogAdd_Int(char *s,int i)
+{
+ NN_UNUSED_VAR(s);
+ NN_UNUSED_VAR(i);
+}
+
+void LogAdd_cat(char *s,char *s2)
+{
+ NN_UNUSED_VAR(s);
+ NN_UNUSED_VAR(s2);
+}
+
+void LogAdd_bytes(char *s,u8 *b,int n)
+{
+ NN_UNUSED_VAR(s);
+ NN_UNUSED_VAR(b);
+ NN_UNUSED_VAR(n);
+}
+
+void LogAdd_Res(nn::Result res)
+{
+ NN_UNUSED_VAR(res);
+}
+
+void LogAdd_Fparam(tArcInfo *p)
+{
+ NN_UNUSED_VAR(p);
+}
+
+void LogAdd_InfoParam(tArcInfo *p)
+{
+ NN_UNUSED_VAR(p);
+}
+
+#endif
+
+char sts[64];
+//エラー表示
+void PutError(ErcDev dev,int cd)
+{
+ int desc,code;
+ nn::Result res;
+ switch (dev)
+ {
+ case ERC_DEV_CARD: res = savedata.LastNnResult;break;
+ case ERC_DEV_OUT: res = exsave.LastNnResult;break;
+ }
+ if(dev != ERC_DEV_OTHER)LogAdd_Res(res);
+ if(isDebugMode==false)
+ {
+ if ((cd ==0 ) && (dev != ERC_DEV_OTHER))
+ {
+ desc = res.GetDescription();
+ if (desc < 100 ) code = ERC_UNKNOWN;//キー検索完了 .. ありえない
+ else if (desc < 180 ) code = ERC_READ;//ファイルが見つからないか不正
+ else if (desc < 200 ) code = ERC_WRITE_OW;//ファイルが存在 .. 削除失敗?
+ else if (desc < 220 ) code = ERC_WRITE_NS;//空きが無い
+ else if (desc < 260 ) code = ERC_ACCESS;//操作拒否
+ else if (desc < 280 ) code = ERC_WRITE_PROTECT;//書き込み禁止
+ else if (desc < 340 ) code = ERC_ACCESS;//アクセスエラー
+ else if (desc < 390 ) code = ERC_FORMAT;//フォーマットエラー
+ else if (desc < 400 ) code = ERC_SDK_VERIFI;//改竄
+ else if (desc < 580 ) code = ERC_ROM;//ROM情報エラー
+ else if (desc < 590 ) code = ERC_RETRY;//リトライ要求
+ else if (desc < 600 ) code = ERC_UNKNOWN;//CCI,CXI不正 .. ありえない
+ else if (desc < 900 ) code = ERC_EXEC;//実行時エラー、ソフトバグ
+ else code = ERC_FATAL;//本体に問題の可能性
+ }else code = cd;
+ sprintf(sts,"ERROR %d",dev+code);
+ scr_Status(sts,COLOR_RED);
+ }
+
+}
+
+
+//-------------------------------------------------- Verifi
+wchar_t file_pathw[MAX_PATH_LENGTH];
+char file_path[MAX_PATH_LENGTH];
+//ドライバの仕様で速度的に4バイトアラインした方がいい(SDK 0.14.23 時点)
+char fileBuffer[512] NN_ATTRIBUTE_ALIGN(4);//検証が512単位なので
+char fileBuffer_ex[512] NN_ATTRIBUTE_ALIGN(4);
+#define FILEBUFF_SIZE sizeof(fileBuffer)
+
+bool Verifi()
+{
+ myResult res;
+ int ct,i,msize,rsize;
+ s64 total=0;
+
+ LogAdd("Verifi");
+
+ //セーブデータのマウント
+ LogAdd("Mount savedata");
+ res = savedata.Mount();
+ if(res != RESULT_OK){
+ PutError(ERC_DEV_CARD);
+ return false;
+ }
+
+/*
+ if(isDebugMode==false) scr_Status("Ready to Verifi",COLOR_YELLO);
+ //情報ファイル
+ LogAdd("Directry Info");
+ if(savedata.GetInfo(&arcInfo)==false)
+ {
+ LogAdd("> get fail");//有効な情報ファイルがない
+ savedata.Unmount();
+ PutError(ERC_DEV_CARD);
+ return ERROR;
+ }
+ LogAdd_Fparam(&arcInfo);
+*/
+
+ //出力デバイスのマウント
+#ifdef BKUP_NOMEM //フラグ間違えチェック用に表示分け
+ LogAdd("Mount Device");//不揮発メディア
+#else
+ LogAdd("memory setup");//メモリ保存
+#endif
+
+ res = exsave.Mount();
+ if(res != RESULT_OK){
+ PutError(ERC_DEV_OUT);
+ return false;
+ }
+
+ //情報ファイル
+ LogAdd("Directry Info(out)");
+ if (exsave.GetInfo(&arcInfo_ex))
+ {
+ //todo:フォーマット変更時はバージョンチェック入れる
+ LogAdd_InfoParam(&arcInfo_ex);
+ }else {
+ LogAdd("> get fail");//有効な情報ファイルがない
+ savedata.Unmount();
+ exsave.Unmount();
+ return false;
+ }
+
+ //フォーマット情報の比較
+ if ((arcInfo.DirEntry != arcInfo_ex.DirEntry) ||
+ (arcInfo.FileEntry != arcInfo_ex.FileEntry) ||
+ (arcInfo.Dup != arcInfo_ex.Dup))
+ {
+ LogAdd("> verifi fail");//有効な情報ファイルがない
+ PutError(ERC_DEV_OUT,ERC_VERIFI);
+ savedata.Unmount();
+ exsave.Unmount();
+ return false;
+ }
+
+ ct =0;
+ if (arcInfo.FileCount == 0)//ファイルが無い
+ {
+ LogAdd("> no files");
+ savedata.Unmount();
+ exsave.Unmount();
+ return true;//フォーマット一致のみ
+ }else{
+ LogAdd("-- file compair --");
+ if(isDebugMode==false) scr_Status("file compairing",COLOR_YELLO);
+ savedata.ResetPath();
+ exsave.ResetPath();
+ s64 fsize;
+ res = RESULT_OK;
+ while(res==RESULT_OK){
+ res = savedata.GetPath(file_pathw);
+ if (res != RESULT_OK)
+ {
+ LogAdd("failed to get path");
+ if (res == RESULT_DIR_LEVEL_OVER){
+ LogAdd("Dir Level Over");
+ break;
+ }
+ if (res == RESULT_PATH_LENGTH_OVER){
+ LogAdd("path name too long");
+ break;
+ }
+ res = RESULT_FAIL_OPEN;
+ break;
+ }
+ if (file_pathw[0] == 0){LogAdd("end");break;}//root then end
+ if (ct>=arcInfo.FileCount)
+ {//カウンタ壊れ、メモリフローの可能性
+ LogAdd("memory error");
+ res = RESULT_FAIL;
+ break;
+ }
+#ifdef DEBUG_ENABLE
+ wcstombs(file_path,file_pathw,510);
+ LogAdd(file_path);
+#endif
+ if(isDebugMode==false) scr_CountPerMax(ct,arcInfo.FileCount);
+ if (savedata.Open(file_pathw)==false)
+ {
+ LogAdd("Open Error(card)");
+ res = RESULT_FAIL_OPEN;
+ break;
+ }
+ fsize = savedata.FileSize;
+ total += fsize;
+ if (exsave.Open(file_pathw)==false)
+ {
+ LogAdd("Open Error(out)");
+ res = RESULT_FAIL_OPENW;
+ //savedata.Close();
+ break;
+ }
+ if (fsize != exsave.FileSize)//file size
+ {
+ res = RESULT_FAIL;
+ break;
+ }
+ msize=fsize;
+ if(msize <= FILEBUFF_SIZE ){//一回で読めるサイズならゲージは出さない
+ if(isDebugMode==false) scr_CountPerMax2(0,0,-1);
+ }
+ while(fsize)
+ {
+ if(msize > FILEBUFF_SIZE ){
+ if(isDebugMode==false) scr_CountPerMax2(msize-fsize,msize,0);
+ }
+ if (fsize > FILEBUFF_SIZE)
+ {
+ rsize = FILEBUFF_SIZE;
+ fsize -= FILEBUFF_SIZE;
+ }else{
+ rsize = fsize;
+ fsize = 0;
+ }
+ if(savedata.Read(fileBuffer,rsize) != rsize )
+ {
+ //中身のデータが作成サイズに満たない場合に検証エラーとなる対策
+ //読めないブロックは置き換える
+ //検証は512単位でされるので読めてるとこまで置き換えないよう
+ //リードサイズは512にしておく
+ if(nn::fs::ResultVerificationFailed::Includes(savedata.LastNnResult))
+ {
+ for (i = 0; i < rsize; i++)
+ {
+ fileBuffer[i] = 0;//0埋め
+ }
+ }else{
+ LogAdd("Read Error(card)");
+ res = RESULT_FAIL_READ;
+ break;
+ }
+ }
+ if(exsave.Read(fileBuffer_ex,rsize) != rsize )
+ {
+ LogAdd("Read Error(out)");
+ res = RESULT_FAIL;
+ break;
+ }
+ }
+ savedata.Close();
+ exsave.Close();
+ if (res != RESULT_OK)break;
+ //verifi
+ for (i = 0;i detect");
+ if(exsave.Delete()) LogAdd("> deleted");
+ else{
+ savedata.Unmount();
+ LogAdd("delete failed");
+ PutError(ERC_DEV_OUT);
+ return ERROR;
+ }
+ }else{
+ LogAdd("not found");
+ }
+
+ if(isDebugMode==false)scr_Status("Create Backup",COLOR_YELLO);
+ LogAdd("Create bkup");
+#ifdef BKUP_NOTMEM
+ res = exsave.Create((void*)IconBuffer,IconSize
+ ,arcInfo.DirEntry+1,arcInfo.FileEntry+1);//管理情報
+#else
+ res = exsave.Create(0,0,arcInfo.DirEntry+1,arcInfo.FileEntry+1);//管理情報
+#endif
+
+ if (res != RESULT_OK){
+ savedata.Unmount();
+ PutError(ERC_DEV_OUT);
+ return ERROR;
+ }
+
+ if (arcInfo.FileCount == 0)//ファイルが無い
+ {
+ LogAdd("> no files");
+ if(isDebugMode==false)scr_Status("no files",COLOR_YELLO);
+ savedata.Unmount();
+ exsave.Unmount();
+ return SUCCESS;//フォーマットのみ
+ }else{
+ LogAdd("-- file copy --");
+ if(isDebugMode==false)scr_Status("file copying",COLOR_SKY);
+ savedata.ResetPath();
+ s64 fsize;
+ res = RESULT_OK;
+ while(res==RESULT_OK){
+ res = savedata.GetPath(file_pathw);
+ if (res != RESULT_OK)
+ {
+ LogAdd("failed to get path");
+ if (res == RESULT_DIR_LEVEL_OVER){
+ LogAdd("Dir Level Over");
+ PutError(ERC_DEV_CARD,ERC_DIRDEPTH);
+ break;
+ }
+ if (res == RESULT_PATH_LENGTH_OVER){
+ LogAdd("path name too long");
+ PutError(ERC_DEV_CARD,ERC_PATH);
+ break;
+ }
+ res = RESULT_FAIL_OPEN;
+ break;
+ }
+ if (file_pathw[0] == 0){LogAdd("end");break;}//root then end
+ if (ct>=arcInfo.FileCount)
+ {//カウンタ壊れ、メモリフローの可能性
+ LogAdd("memory error");
+ res = RESULT_FAIL;
+ break;
+ }
+#ifdef DEBUG_ENABLE
+ wcstombs(file_path,file_pathw,510);
+ LogAdd(file_path);
+#endif
+ if(isDebugMode==false) scr_CountPerMax(ct,arcInfo.FileCount);
+ if (savedata.Open(file_pathw)==false)
+ {
+ LogAdd("Open Error(card)");
+ res = RESULT_FAIL_OPEN;
+ break;
+ }
+ fsize = savedata.FileSize;
+ total += fsize;
+ if (exsave.OpenW(file_pathw,fsize)==false)
+ {
+ LogAdd("Open Error(sd)");
+ res = RESULT_FAIL_OPENW;
+ //savedata.Close();
+ break;
+ }
+
+ msize=fsize;
+ while(fsize)
+ {
+ if(msize > FILEBUFF_SIZE * 2){
+ if(isDebugMode==false) scr_CountPerMax2(msize-fsize,msize,0);
+ }
+ if (fsize>FILEBUFF_SIZE)
+ {
+ rsize = FILEBUFF_SIZE;
+ fsize -= FILEBUFF_SIZE;
+ }else{
+ rsize = fsize;
+ fsize = 0;
+ }
+ if(savedata.Read(fileBuffer,rsize) != rsize )
+ {
+ //中身のデータが作成サイズに満たない場合に検証エラーとなる対策
+ //読めないブロックは置き換える
+ //検証は512単位でされるので読めてるとこまで置き換えないよう
+ //リードサイズは512にしておく
+ if(nn::fs::ResultVerificationFailed::Includes(savedata.LastNnResult))
+ {
+ for (int i = 0; i < rsize; i++)
+ {
+ fileBuffer[i] = 0;//0埋め
+ }
+ }else{
+ LogAdd("Read Error(card)");
+ res = RESULT_FAIL_READ;
+ break;
+ }
+ }
+ if(exsave.Write(fileBuffer,rsize) != rsize )
+ {
+ LogAdd("Write Error(bkup)");
+ res = RESULT_FAIL_WRITE;
+ break;
+ }
+ }
+ savedata.Close();
+ exsave.CloseW();
+ //todo: ゲージ表示
+ ct++;
+ }
+ savedata.Close();
+ exsave.CloseW();
+ }
+
+ if (res == RESULT_OK){
+ //フォーマット情報を記録
+ //Exsaveに2重化が無いので情報取得APIでは不足 - 2011.1 現在
+ //プロダクトコードを追加(2011.1.26)
+ //バージョンを追加(2011.1.27)
+ LogAdd("save systemfile");
+ if (exsave.OpenSysW())
+ {
+ strcpy(arcInfo.Pcode,savedata.PrdCode);
+ if(exsave.WriteSys(&arcInfo)){
+ LogAdd("> done");
+ }else{
+ LogAdd("> write fail");
+ res = RESULT_FAIL_WRITE;
+ }
+ }else{
+ LogAdd("> open fail");
+ res = RESULT_FAIL_OPENW;
+ }
+ exsave.CloseSysW();
+ }
+ savedata.Unmount();
+ //exsave.Commit(); Nandはコミット入れる(NAND未実装->MEM変更、今後も不要?)
+ exsave.Unmount();
+ LogAdd_Int("> %d files",ct);
+ if(isDebugMode==false){
+ scr_CountPerMax(ct,arcInfo.FileCount);
+ if(total>0)scr_CountPerMax2(0,0,total);
+ }
+
+//結果
+ switch(res)
+ {
+ case RESULT_OK:
+ if (Verifi()==false)return ERROR;
+ if(isDebugMode==false) scr_Status("Complate",COLOR_WHITE);
+ return SUCCESS;
+ case RESULT_FAIL_WRITE:
+ case RESULT_FAIL_OPENW:
+ PutError(ERC_DEV_OUT);
+ exsave.Delete();//バックアップを削除
+ return ERROR;
+ case RESULT_FAIL_READ:
+ case RESULT_FAIL_OPEN:
+ PutError(ERC_DEV_CARD);
+ exsave.Delete();//バックアップを削除
+ return ERROR;
+ }
+ //その他、実行時エラー
+ PutError(ERC_DEV_OTHER);
+ return ERROR;
+}
+
+bool mkdir;
+//---------------------------------------------------------------- SD->CARD
+RetCode Sd2Card()
+{
+ myResult res;
+ int ct=0,msize,rsize;
+ s64 total = 0;
+
+ LogAdd("-- write savedata --");
+
+ if(isDebugMode == false){
+ scr_RestoreYesNo();//実行確認
+ WaitUI();//入力待ち
+ if(isInsEject != InEx_None ){//挿抜?
+ //isInsEject = InEx_None;
+ return INSEXIT;//挿抜による中断
+ }
+ if (scr_evnt != EVNT_YES)return CANCEL;//キャンセル
+ }
+ if(isDebugMode==false){
+ scr_Restore();//画面表示
+ scr_Status("Check Backup",COLOR_YELLO);
+ }
+ //保存先のマウント
+ LogAdd("Mount bkup");
+ res = exsave.Mount();
+ if(res != RESULT_OK){
+ PutError(ERC_DEV_OUT);
+ return ERROR;
+ }
+
+ //セーブデータのフォーマット&マウント
+ if(isDebugMode==false)scr_Status("Card savedata Create",COLOR_YELLO);
+ LogAdd("Format savedata");
+ res = savedata.Format(&arcInfo);//_exの方がいいかも
+ if(res != RESULT_OK){
+ exsave.Unmount();
+ PutError(ERC_DEV_CARD);
+ return ERROR;
+ }
+
+ //パラメータはバックアップ時
+ //Top画面開始時、挿入イベントで取得
+ if (arcInfo.FileCount == 0)//ファイルが無い
+ {
+ LogAdd("> no files");
+ savedata.Unmount();
+ exsave.Unmount();
+ return SUCCESS;//フォーマットのみ
+ }else{
+ LogAdd("-- file restore --");
+ if(isDebugMode==false)scr_Status("file copying",COLOR_PARPL);
+ exsave.ResetPath();
+ s64 fsize;
+ res = RESULT_OK;
+ while(res==RESULT_OK){
+ res = exsave.GetPath(file_pathw);
+ if (res != RESULT_OK)
+ {
+ LogAdd("failed to get path");
+ if (res == RESULT_DIR_LEVEL_OVER){
+ LogAdd("Dir Level Over");
+ break;
+ }
+ if (res == RESULT_PATH_LENGTH_OVER){
+ LogAdd("path name too long");
+ break;
+ }
+ res = RESULT_FAIL_OPEN;
+ break;
+ }
+ if (file_pathw[0] == 0){LogAdd("end");break;}//root then end
+ if (ct>=arcInfo.FileCount)
+ {//カウンタ壊れ、メモリフローの可能性
+ LogAdd("memory error");
+ res = RESULT_FAIL;
+ break;
+ }
+#ifdef DEBUG_ENABLE
+ wcstombs(file_path,file_pathw,510);
+ LogAdd(file_path);//todo:デバグ表示オーバ対策
+#endif
+ if(isDebugMode==false) scr_CountPerMax(ct,arcInfo.FileCount);
+ if (exsave.Open(file_pathw)==false)
+ {
+ LogAdd("Open Error(bkup)");
+ res = RESULT_FAIL_OPEN;
+ break;
+ }
+ fsize = exsave.FileSize;
+ total += fsize;
+#ifdef ENABLE_CRUSH
+ //デバグ用に違うファイル名にする
+ if (CrashForDebug & 2)wcscat(file_pathw,L"D");
+#endif
+ int rev = 0;
+ while(1){
+ if (savedata.OpenW(file_pathw,fsize,&mkdir)==false)
+ {
+ if(mkdir)//ディレクトリのみ作成
+ {//深い場合に作成が多いと画面が止まるので
+ LogAdd("Dir create");
+ rev++;
+ if (rev & 1)scr_MessOnCount2("Create Directry -");
+ else scr_MessOnCount2("Create Directry |");
+
+ }else{
+ LogAdd("Open Error(card)");
+ res = RESULT_FAIL_OPENW;
+ //exsave.Close();
+ break;
+ }
+ }else break;
+ }
+ if (res != RESULT_OK)break;
+
+ msize = fsize;
+ int itvl = 0;
+ while(fsize)
+ {
+ if(isDebugMode==false)
+ if(msize > FILEBUFF_SIZE * 2){
+ scr_CountPerMax2(msize-fsize,msize,0);
+ if (++itvl & 1)scr_Status("file copying |",COLOR_PARPL);
+ else scr_Status("file copying -",COLOR_PARPL);
+
+ }else scr_MessOnCount2("");
+
+ if (fsize>FILEBUFF_SIZE)
+ {
+ rsize = FILEBUFF_SIZE;
+ fsize -= FILEBUFF_SIZE;
+ }else{
+ rsize = fsize;
+ fsize = 0;
+ }
+ if(exsave.Read(fileBuffer,rsize) != rsize )
+ {
+ LogAdd("Read Error(bkup)");
+ res = RESULT_FAIL_READ;
+ break;
+ }
+#ifdef ENABLE_CRUSH
+ //デバグ用にデータを壊す
+ if (CrashForDebug & 1)//中身
+ {
+ int i;
+ for (i = 0;i %d files",ct);
+ if(isDebugMode==false){
+ scr_CountPerMax(ct,arcInfo.FileCount);
+ scr_CountPerMax2(0,0,total);
+ }
+
+//結果
+ switch(res){
+ case RESULT_OK:
+ if (Verifi()==false)return ERROR;
+#ifdef SUCCESS_DELETE
+ if(exsave.Delete()){//バックアップを削除
+ LogAdd("> deleted");
+#endif
+ if(isDebugMode==false) scr_Status("Complate",COLOR_WHITE);
+ return SUCCESS;
+#ifdef SUCCESS_DELETE
+ }else{
+ LogAdd("> delete fail");
+ PutError(ERC_DEV_OUT);
+ return ERROR;
+ }
+#endif
+ case RESULT_FAIL_WRITE:
+ case RESULT_FAIL_OPENW:
+ PutError(ERC_DEV_CARD);
+ return ERROR;
+ case RESULT_FAIL_READ:
+ case RESULT_FAIL_OPEN:
+ PutError(ERC_DEV_OUT);
+ return ERROR;
+ }
+ //その他、実行時エラー
+ PutError(ERC_DEV_OTHER);
+ return ERROR;
+}
+
+
+//メモリ保存では不要
+#ifdef BKUP_NOTMEM
+//------------------------------------------------------------------ アイコンデータ
+//NAND起動で失敗は無いはず
+void ReadIcon()
+{
+ const size_t ROMFS_BUFFER_SIZE = 1024 * 64;
+ static char buffer[ROMFS_BUFFER_SIZE];
+ nn::Result res;
+
+ Active = false;
+ Formatted = false;
+
+ //Iconデータ
+ //NN_LOG("ICON Data Read\n");
+ LogAdd("Mount Rom");
+ nn::fs::FileReader RomFsFile;
+ res = nn::fs::MountRom(16, 16, buffer, ROMFS_BUFFER_SIZE);
+ if (res.IsFailure())
+ {
+ //NN_LOG("failed :res.desc = %d\n",res.GetDescription());
+ //failstop();
+ LogAdd("> failed");
+ LogAdd_Res(res);
+ return;
+ }
+ LogAdd("Read Icon data");
+ res = RomFsFile.TryInitialize(L"rom:/def.icn");
+ if (res.IsFailure())
+ {
+ //NN_LOG("failed :res.desc = %d\n",res.GetDescription());
+ nn::fs::Unmount("rom:");
+ //failstop();
+ LogAdd("> open failed");
+ LogAdd_Res(res);
+ return;
+ }
+ //s32 gs = RomFsFile.GetSize();
+ //NN_LOG("Icon Size = %d\n",gs);
+ res = RomFsFile.TryRead((s32*)&IconSize,(void*)IconBuffer,IconBuffSize);
+ if (res.IsFailure())
+ {
+ //NN_LOG("failed :res.desc = %d\n",res.GetDescription());
+ //RomFsFile.Finalize();
+ nn::fs::Unmount("rom:");
+ //failstop();
+ LogAdd("> read failed");
+ LogAdd_Res(res);
+ return;
+ }
+ //NN_LOG("Read Size = %d\n",IconSize);
+ RomFsFile.Finalize();
+ nn::fs::Unmount("rom:");
+
+}
+#endif
+
+//--------------------------------------------------------------- セーブデータの情報取得
+//呼ぶ前に tmerr のクリアを忘れない事
+void CheckSaveDataState()
+{
+ myResult myres;
+
+
+ Formatted = false;//フォーマット
+ Active = false;
+ //failveri = false;
+
+ LogAdd("get pcode");
+ if (savedata.GetPrdCode())
+ {
+ LogAdd_cat("> pcode = ",savedata.PrdCode);
+ LogAdd("check savedata");
+ myres = savedata.IsExist();
+ if (myres != RESULT_FAIL)
+ {
+ Active = true;//アクセス可能
+ switch(myres){
+ case RESULT_OK:
+ LogAdd("> exist");
+ Formatted=true;
+ break;
+ case RESULT_NO_MEDIA:
+ LogAdd("> Media not found");
+ tmerr |= SDATA_ERRPUT_MEDIA;
+ break;
+ case RESULT_NOT_FAUND:
+ LogAdd("> not Found");
+ break;
+ case RESULT_SDK_VERIFI:
+ LogAdd("> sdk verifi err");
+ //failveri = true;
+ tmerr |= SDATA_ERRPUT_VERIFI;
+ break;
+ default:
+ LogAdd("> Not/Bad Format");
+ break;
+ }
+ }else{
+ LogAdd("> Invalid state");
+ LogAdd_Res(savedata.LastNnResult);
+ }
+ }else
+ {
+ LogAdd("> fail");
+ }
+ scr_PrdCode(savedata.PrdCode);
+ //プロダクトコードのチェック
+ isAgreePCode = strcmp(savedata.PrdCode,arcInfo.Pcode)==0;
+}
+
+void CheckExSaveState()
+{
+ LogAdd("check exsave");
+#ifdef BKUP_NOTMEM
+ exActive = nn::fs::IsSdmcInserted();
+#else
+ exActive = true;
+#endif
+ if (exActive){
+ exFormatted = exsave.IsExist();
+ if (exFormatted){
+ LogAdd("> exist");
+ if (exsave.GetInfo(&arcInfo))
+ {
+ LogAdd_InfoParam(&arcInfo);
+ //todo:フォーマット変更時はバージョンチェック入れる
+ }else {
+ LogAdd("> sysdata none");//有効な情報ファイルがない
+ //arcInfo.Pcode[0] = 0;
+ exFormatted = false;
+ }
+ exsave.Unmount();
+ }else{
+ LogAdd("> not found");
+ //arcInfo.Pcode[0] = 0;
+ }
+ }else{
+ LogAdd("> not inserted");
+ //arcInfo.Pcode[0] = 0;
+ exFormatted = false;
+ }
+ if (exFormatted==false) arcInfo.Pcode[0] = 0;
+ scr_PrdCodeEx(arcInfo.Pcode);
+ //プロダクトコードのチェック
+ isAgreePCode = strcmp(savedata.PrdCode,arcInfo.Pcode)==0;
+}
+
+
+//---------------------------------------------------------------- 入力待ち
+void WaitUI()
+{
+ tmerr = 0;
+ scr_Draw();//画面更新
+ scr_evnt = EVNT_NONE;
+ while(scr_evnt == EVNT_NONE)
+ {
+ nn::os::Thread::Yield();//スレッド実行
+ //scr_GetEvnt();//入力イベント
+
+ CheckSysBreak();//中断処理
+
+ int i = nn::ndm::GetDaemonStatus( nn::ndm::DN_CEC );
+ if (i !=3 )NN_LOG("DN_CEC %d\n",i);
+ i = nn::ndm::GetDaemonStatus( nn::ndm::DN_BOSS );
+ if (i !=3 )NN_LOG("DN_BOSS %d\n",i);
+ i = nn::ndm::GetDaemonStatus( nn::ndm::DN_NIM );
+ if (i !=3 )NN_LOG("DN_NIM %d\n",i);
+ i = nn::ndm::GetDaemonStatus( nn::ndm::DN_FRIENDS );
+ if (i !=3 )NN_LOG("DN_FRIENDS %d\n",i);
+
+ //挿抜を検知したら中断して抜ける
+ //トップ以外ではトップメニューへ戻るようする
+ if (ejectEvnt.TryWait()){
+ LogAdd("Card Ejected");//状態表示:抜け
+ CheckSaveDataState();
+ isInsEject = InEx_EjcCard;
+ return;
+ }
+ if (insEvnt.TryWait()){
+ LogAdd("Card Inserted");//状態表示:挿入
+ CheckSaveDataState();
+ isInsEject = InEx_InsCard;
+ return;
+ }
+#ifdef BKUP_NOTMEM
+ if (ejectEvntSd.TryWait()){
+ LogAdd("SD Ejected");//状態表示:抜け
+ CheckExSaveState();
+ isInsEject = InEx_EjcSd;
+ return;
+ }
+ if (insEvntSd.TryWait()){
+ LogAdd("SD Inserted");//状態表示:挿入
+ CheckExSaveState();
+ isInsEject = InEx_InsSd;
+ return;
+ }
+#endif
+ }
+ ScrClr();//画面消去
+ nn::os::Thread::Sleep(nn::fnd::TimeSpan::FromMilliSeconds(500));//チャタ対策
+}
+
+tColStr mess_ReadError = {"[Read] is failed",COLOR_RED};
+tColStr mess_WriteError = {"[Write] is failed",COLOR_RED};
+tColStr mess_ReadOk = {"[Read] is Success",COLOR_GREEN};
+tColStr mess_WriteOk = {"[Write] is Success",COLOR_GREEN};
+tColStr mess_PullOut = {"Pull Out",COLOR_RED};
+tColStr mess_ChkDev = {"check device",COLOR_RED};
+tColStr mess_Insexit = {"Detect Insert or pull out",COLOR_RED};
+tColStr mess_WhenExc = {"When you exchange device",COLOR_WHITE};
+tColStr mess_PoffSys = {"PowerOff or return Top Menu",COLOR_WHITE};
+
+//---------------------- main loop --------------------------
+void nnMain()
+{
+ int i;
+ myResult mres;
+ RetCode retc;
+ tColStr *colstr[4];
+ colstr[2] = &mess_WhenExc;
+ colstr[3] = &mess_PoffSys;
+ isDebugMode = false;
+ isInsEject = InEx_None;
+
+ //NN_LOG("Start\n");
+ nn::os::Initialize();
+ nn::fs::Initialize();
+
+ //DEA-SUPにて推奨のフリーズ暫定対策:無線デーモンを停止 (2011.3.1 現在)
+ //ただし、スリープ時は止まらない
+ //心配なら本体スイッチで切っとく
+ nn::ndm::Initialize();
+ nn::ndm::SuspendScheduler();
+
+ //中断処理の準備
+ InitSysBreak((uptr)endfunc);
+ // グラフィックスライブラリの初期化は、以降で行わなければならない
+ // 他、アプリケーションの初期化処理
+
+ nn::applet::DisableSleep();//スリープ非対応
+
+ //Heap
+ appHeap.Initialize(nn::os::GetDeviceMemoryAddress(),
+ nn::os::GetDeviceMemorySize(), nn::os::ALLOCATE_OPTION_LINEAR);
+ const u32 GxHeapSize = 0x800000;
+ heapForGx = reinterpret_cast(appHeap.Allocate(GxHeapSize));
+#ifdef BKUP_NOTMEM
+ IconBuffer = reinterpret_cast(appHeap.Allocate(IconBuffSize));
+#endif
+ //画面初期化
+ if (ScrInitialize(heapForGx,GxHeapSize) == false)failstop();
+#ifdef DEBUG_ENABLE
+ memo.clr();
+ memo.setbuttom(ScrDbgLogGetMax()-1);//表示行数でリスト数を制限
+#endif
+ ejectEvnt.ClearSignal();
+ insEvnt.ClearSignal();
+ nn::fs::RegisterCardEjectedEvent(&ejectEvnt);
+ nn::fs::RegisterCardInsertedEvent(&insEvnt);
+#ifdef BKUP_NOTMEM
+ ejectEvntSd.ClearSignal();
+ insEvntSd.ClearSignal();
+ nn::fs::RegisterSdmcEjectedEvent(&ejectEvntSd);
+ nn::fs::RegisterSdmcInsertedEvent(&insEvntSd);
+ ReadIcon(); //アイコンデータの読込
+#endif
+
+ // スリープ要求に対する返答を有効にする
+ // また、蓋の状態チェックを行い蓋が閉じられているならスリープ要求が発生する
+ //nn::applet::EnableSleep(true);
+
+ LogAdd("-- start --");
+
+ extern u8 scr_evnt;
+ while(1)
+ {
+ tmerr = 0;
+ CheckSaveDataState(); //セーブデータの状態取得
+ CheckExSaveState(); //同バックアップ
+#ifdef DEBUG_ENABLE
+ //トップメニュー
+ if (isDebugMode){
+ scr_TopMenuDbg(Formatted,Active);
+ scr_DgbLog(&memo);
+ while(ScrGetDrawFlag()){
+ nn::os::Thread::Yield();//表示
+ }
+ }else
+#endif
+ if (isAgreePCode==false) tmerr |= SDATA_ERRPUT_PCODE;
+// scr_TopMenu(Formatted,Active,exFormatted,exActive,isAgreePCode,failveri);
+ scr_TopMenu(Formatted,Active,exFormatted,exActive,tmerr);
+
+
+ WaitUI();//入力待ち
+ if (isInsEject != InEx_None){
+ ScrClr();//画面消去
+ isInsEject= InEx_None;
+ }else
+ switch(scr_evnt)
+ {
+ case EVNT_PUSH_B:
+ case EVNT_NONE:
+ break;
+ case EVNT_PUSH_Y:
+#ifdef ENABLE_CRUSH
+ CrashForDebug++;
+ CrashForDebug &= 3;
+#endif
+ break;
+ case EVNT_SEL_READ://リード
+ NN_LOG("select read\n");
+ retc = Card2Sd();
+ switch (retc){
+ case SUCCESS:
+ //CheckExSaveState(); //状態の更新
+ if (isDebugMode){
+ colstr[1] = &mess_ReadOk;
+ scr_SuccessQuitDbg(&colstr[1]);//成功とQuitボタン
+ }else scr_ResultQuit("Success",COLOR_GREEN);//成功とQuitボタン
+ break;
+ case INSEXIT:
+ //scr_InsExitQuit();//挿抜検知表示 & Quit
+ ScrClr();//画面消去
+ scr_Backup();
+#ifdef DEBUG_ENABLE
+ if (isDebugMode){
+ colstr[1] = &mess_PullOut;
+ scr_ErrorQuitDbg(&colstr[1]);//エラーとQuitボタン
+ }else
+#endif
+ {
+ if (isInsEject == InEx_EjcCard)PutError(ERC_DEV_CARD,ERC_DEVICE);
+#ifdef BKUP_NOTMEM
+ else if (isInsEject == InEx_EjcSd)PutError(ERC_DEV_OUT,ERC_DEVICE);
+#endif
+ else PutError(ERC_DEV_OTHER);
+ scr_ResultQuit("Break",COLOR_RED);//エラーとQuitボタン
+ }
+ break;
+ case CANCEL:
+ //scr_ResultQuit("Canseled",COLOR_YELLO);//キャンセル
+ break;
+ default://errors
+#ifdef DEBUG_ENABLE
+ if (isDebugMode){
+ colstr[0] = &mess_ReadError;
+ colstr[1] = &mess_ChkDev;
+ scr_ErrorQuitDbg(colstr);//エラーとQuitボタン
+ }else
+#endif
+ scr_ResultQuit("Failed",COLOR_RED);//エラーとQuitボタン
+ break;
+ }
+ if (retc == CANCEL)break;
+ //isInsEject = InEx_None;
+ while(1){
+ WaitUI();
+ if (isInsEject != InEx_None){
+ isInsEject = InEx_None;
+ }
+ if(scr_evnt==EVNT_QUIT)break;
+ if(scr_evnt==EVNT_PUSH_B)break;
+ }
+ break;
+ case EVNT_SEL_WRITE://リストア
+ NN_LOG("select write\n");
+ retc = Sd2Card();
+ switch (retc){
+ case SUCCESS:
+ //CheckSaveDataState(); //状態の更新
+ //CheckExSaveState();
+ if (isDebugMode){
+ colstr[1] = &mess_WriteOk;
+ scr_SuccessQuitDbg(&colstr[1]);//成功とQuitボタン
+ }else scr_ResultQuit("Success",COLOR_GREEN);//成功とQuitボタン
+ break;
+ case INSEXIT:
+ //scr_InsExitQuit();//挿抜検知表示 & Quit
+ ScrClr();//画面消去
+ scr_Backup();
+#ifdef DEBUG_ENABLE
+ if (isDebugMode){
+ colstr[1] = &mess_PullOut;
+ scr_ErrorQuitDbg(&colstr[1]);//エラーとQuitボタン
+ }else
+#endif
+ {
+ if (isInsEject == InEx_EjcCard)PutError(ERC_DEV_CARD,ERC_DEVICE);
+#ifdef BKUP_NOTMEM
+ else if (isInsEject == InEx_EjcSd)PutError(ERC_DEV_OUT,ERC_DEVICE);
+#endif
+ else PutError(ERC_DEV_OTHER);
+ scr_ResultQuit("Break",COLOR_RED);//エラーとQuitボタン
+ }
+ break;
+ case CANCEL:
+ //scr_ResultQuit("Canseled",COLOR_YELLO);//キャンセル
+ break;
+ default://errors
+#ifdef DEBUG_ENABLE
+ if (isDebugMode){
+ colstr[0] = &mess_WriteError;
+ colstr[1] = &mess_ChkDev;
+ scr_ErrorQuitDbg(colstr);//エラーとQuitボタン
+ }else
+#endif
+ scr_ResultQuit("Failed",COLOR_RED);//エラーとQuitボタン
+ break;
+ }
+ if (retc == CANCEL)break;
+ while(1){
+ WaitUI();
+ if (isInsEject != InEx_None){
+ isInsEject= InEx_None;
+ }
+ if(scr_evnt==EVNT_QUIT)break;
+ if(scr_evnt==EVNT_PUSH_B)break;
+ }
+ break;
+/* case EVNT_SEL_END:
+ NN_LOG("select end\n");
+ finish();
+ break;
+ case EVNT_NO:
+ NN_LOG("select NO\n");
+ break;
+ case EVNT_YES:
+ NN_LOG("select NO\n");
+ break;
+*/
+ case EVNT_PUSH_L:// ----------------------------------------- 表示の切り替え
+ case EVNT_PUSH_DOWN_Y:// ----------------------------------------- 表示の切り替え
+#ifdef DEBUG_ENABLE
+ isDebugMode = (isDebugMode == false);
+#endif
+ break;
+
+ case EVNT_PUSH_LEFT_X:// ------------------------------------- LEFT + X
+ //バックアップ削除
+ scr_DelConf();//実行確認
+ WaitUI();
+ if (scr_evnt != EVNT_YES)break;
+ exsave.Delete();
+ //CheckExSaveState(); //状態更新
+ break;
+
+ case EVNT_PUSH_R:// ------------------------------------------- R
+ //CARD(NAND)へテストファイル書き込み
+ //デバグモード時のみ
+ bool flg;
+ scr_ConfirmDbg("dummy savedata write OK?");//実行確認
+ WaitUI();
+ if (scr_evnt != EVNT_YES)break;
+ for ( i =0;i failed");
+ LogAdd_Res(savedata.LastNnResult);
+ LogAdd_Int("%d",mres);
+ break;
+ }
+
+ i= 2;
+ LogAdd("create");
+ while(i){
+ sprintf(file_path,"dir%d/file%d",i,i);
+ LogAdd(file_path);
+ mbstowcs(file_pathw,file_path,510);
+ if (savedata.OpenW(file_pathw,FILEBUFF_SIZE,&flg)==false)
+ {
+ LogAdd("> Open Error");
+ break;
+ }
+ if(savedata.Write(fileBuffer,FILEBUFF_SIZE)!=FILEBUFF_SIZE)
+ {
+ LogAdd("> Write failed");
+ break;
+ }
+ savedata.CloseW();
+ i--;
+ }
+ i=2;
+ while(i){
+ sprintf(file_path,"dir%d/dir%d/file%d",i,i,i);
+ LogAdd(file_path);
+ mbstowcs(file_pathw,file_path,510);
+ if (savedata.OpenW(file_pathw,FILEBUFF_SIZE,&flg)==false)
+ {
+ LogAdd("> Open Error");
+ break;
+ }
+ if(savedata.Write(fileBuffer,FILEBUFF_SIZE)!=FILEBUFF_SIZE)
+ {
+ LogAdd("> Write failed");
+ break;
+ }
+ savedata.CloseW();
+
+ sprintf(file_path,"dir%d/dir%d/file%d",i,i,i+2);
+ LogAdd(file_path);
+ mbstowcs(file_pathw,file_path,510);
+ if (savedata.OpenW(file_pathw,FILEBUFF_SIZE,&flg)==false)
+ {
+ LogAdd("> Open Error");
+ break;
+ }
+ if(savedata.Write(fileBuffer,FILEBUFF_SIZE)!=FILEBUFF_SIZE)
+ {
+ LogAdd("> Write failed");
+ break;
+ }
+ savedata.CloseW();
+ i--;
+ }
+ savedata.CloseW();
+ savedata.Commit();
+ savedata.Unmount();
+ //CheckSaveDataState(); //カード状態更新
+ break;
+ default:
+ NN_LOG("menu error\n");
+ failstop();
+ break;
+ }
+ }//while()
+
+}
+
+/*---------------------------------------------------------------------------*
+ End of file
+ *---------------------------------------------------------------------------*/
+
diff --git a/trunk/CardSaveData/Mover/body/source/screen/screen.cpp b/trunk/CardSaveData/Mover/body/source/screen/screen.cpp
new file mode 100644
index 0000000..f1bbacc
--- /dev/null
+++ b/trunk/CardSaveData/Mover/body/source/screen/screen.cpp
@@ -0,0 +1,793 @@
+#include
+#include
+#include "screen.h"
+#include "../../../../common/my_defs.h"
+#include "../../ver.h"
+
+
+Gui gui;
+u8 scr_evnt;
+
+enum{
+//PANEL_END,
+PANEL_ERROR,
+PANEL_SUCCESS,
+PANEL_TOPMENU,
+PANEL_TITLE,
+PANEL_QUIT,
+PANEL_READ,
+PANEL_WRITE,
+PANEL_YES,
+PANEL_NO,
+PANEL_CONFIRM,
+PANEL_DELCONF,
+PANEL_MENU,
+PANEL_BKUP,
+PANEL_INSEXIT,
+PANEL_DBGLOG
+};
+
+enum{
+MESSAGE_VERSION,
+MESSAGE_PRODUCT,
+MESSAGE_PRODUCT2,
+MESSAGE_ERROR_TITLE,
+MESSAGE_ERROR_INFO,
+MESSAGE_ERROR_INFO2,
+MESSAGE_ERROR_INFO3,
+MESSAGE_SUCCESS_TITLE,
+MESSAGE_SUCCESS_INFO,
+MESSAGE_SUCCESS_INFO2,
+MESSAGE_CONFIRM_TITLE,
+MESSAGE_CONFIRM_MSG,
+MESSAGE_DELCONF_TITLE,
+MESSAGE_DELCONF_MSG,
+MESSAGE_DELCONF_MSG2,
+MESSAGE_DELCONF_MSG3,
+//MESSAGE_TOPMENU_HELP_TITLE,
+MESSAGE_TOPMENU_HELP_READ,
+MESSAGE_TOPMENU_HELP_WRITE,
+MESSAGE_TOPMENU_HELP_END,
+MESSAGE_TOPMENU_HELP_OPERATE,
+MESSAGE_TITLE,
+MESSAGE_MENU_READ,
+MESSAGE_MENU_WRITE,
+//MESSAGE_MENU_END,
+MESSAGE_MENU_OPERATE,
+MESSAGE_MENU_CAUTION,
+MESSAGE_MENU_ERROR,
+MESSAGE_MENU_DEBUG,
+MESSAGE_INSEXT_1,
+MESSAGE_INSEXT_2,
+MESSAGE_INSEXT_3,
+MESSAGE_OPERATE,
+MESSAGE_RESULT,
+MESSAGE_QUIT_OPERATE,
+MESSAGE_CONF,
+MESSAGE_COUNT,
+MESSAGE_COUNT2,
+MESSAGE_STATUS
+};
+
+enum{
+MEMO_DBGLOG
+};
+
+
+//ʏAR|[lgfBZ[u
+void ScrClr()
+{
+ gui.ButtonMask(0);
+ gui.DisableAll();
+ gui.Draw();
+}
+
+nn::os::Tick holdTck;
+u32 holdVal;
+//---------------------------------CxgR[obN
+//----------------PAD{^
+void pushButton(u32 sts)
+{
+ //NN_LOG("button > %4x\n",button);
+ u32 trg = sts & 0x0ffff;
+ u32 hld = sts >> 16;
+/*
+ if (holdVal)//P\
+ {
+ if (nn::fnd::TimeSpan::FromMilliSeconds(100) > (nn::os::Tick::GetSystemCurrent()-holdTck)){
+ holdVal |= trg;
+ if (holdVal == nn::hid::BUTTON_LEFT | holdVal & nn::hid::BUTTON_X ){
+ holdVal = 0;
+ scr_evnt = EVNT_PUSH_LEFT_X;
+ }
+ }else holdVal = 0;
+ }else if( (holdVal = trg & (nn::hid::BUTTON_LEFT | nn::hid::BUTTON_X ))>0)
+ {//莞Ԃǂ̃{^ێ
+ holdTck = nn::os::Tick::GetSystemCurrent();
+ }
+*/
+
+ if( holdVal )//
+ {
+ if (hld != holdVal)
+ {
+ holdVal = 0;
+ }else
+ if (nn::fnd::TimeSpan::FromMilliSeconds(4000) < (nn::os::Tick::GetSystemCurrent()-holdTck))
+ {
+ holdVal = 0;
+ scr_evnt = EVNT_PUSH_LEFT_X;
+ }
+ }else if (hld == ( nn::hid::BUTTON_LEFT | nn::hid::BUTTON_X ))
+ {
+ holdVal = hld;
+ holdTck = nn::os::Tick::GetSystemCurrent();
+ }
+
+
+#ifdef DEBUG_ENABLE
+ else if (hld & nn::hid::BUTTON_DOWN)//
+ {
+ if (hld & nn::hid::BUTTON_Y)
+ if (hld & nn::hid::BUTTON_X)
+ scr_evnt = EVNT_PUSH_DOWN_Y;
+ }
+ else if (trg & nn::hid::BUTTON_R)scr_evnt = EVNT_PUSH_R;
+ else if (trg & nn::hid::BUTTON_L)scr_evnt = EVNT_PUSH_L;
+#endif
+#ifdef ENABLE_CRUSH
+ else if (trg & nn::hid::BUTTON_Y)scr_evnt = EVNT_PUSH_Y;
+#endif
+ else if (trg & nn::hid::BUTTON_B)scr_evnt = EVNT_PUSH_B;
+}
+
+//-----------------pl^b`
+// ---- Top Menu :READ
+void touchRead(u32 pos NN_IS_UNUSED_VAR)
+{
+ scr_evnt = EVNT_SEL_READ;
+}
+// ---- Top Menu :WRITE
+void touchWrite(u32 pos NN_IS_UNUSED_VAR)
+{
+ scr_evnt = EVNT_SEL_WRITE;
+}
+
+//---- Top Menu :END
+//void touchEnd(u32 pos NN_IS_UNUSED_VAR)
+//{
+// scr_evnt = EVNT_SEL_END;
+//}
+
+//---- YES
+void touchYes(u32 pos NN_IS_UNUSED_VAR)
+{
+ scr_evnt = EVNT_YES;
+}
+
+//---- NO
+void touchNo(u32 pos NN_IS_UNUSED_VAR)
+{
+ scr_evnt = EVNT_NO;
+}
+
+void touchQuit(u32 pos NN_IS_UNUSED_VAR)
+{
+ scr_evnt = EVNT_QUIT;
+}
+
+#define NULL_PTR 0
+#define NULL_STR 0
+#define SCREEN_UPPER 0
+#define SCREEN_LOWER 1
+#define LOC_CONF_X 60
+#define LOC_CONF_Y 20
+#define LOC_CONF_W (400 - LOC_CONF_X*2)
+#define LOC_CONF_H 70
+#define LOC_LOG_X 50
+#define LOC_LOG_W (400 - LOC_LOG_X*2)
+#define LOC_LOG_Y (LOC_CONF_Y + LOC_CONF_H + 10)
+#define LOC_LOG_H (240 - LOC_LOG_Y - 10)
+#define LOG_MAX 10
+
+// -------------------------------------------------- R|[lgv
+//
+
+//Top Menu
+const tPanel panel_Read = {(uptr)touchRead,"Backup",80+20,30,160,80,PANEL_READ,SCREEN_LOWER};
+const tPanel panel_Write = {(uptr)touchWrite,"Restore",80+20,130,160,80,PANEL_WRITE,SCREEN_LOWER};
+//const tPanel panel_End = {(uptr)touchEnd,"End",80,180,160,30,PANEL_END,SCREEN_LOWER};
+
+//Yes No
+const tPanel panel_Yes = {(uptr)touchYes,"YES",40+10,60,80,120,PANEL_YES,SCREEN_LOWER};
+const tPanel panel_No = {(uptr)touchNo,"NO",200+30,60,80,120,PANEL_NO,SCREEN_LOWER};
+
+//Quit
+const tPanel panel_Quit = {(uptr)touchQuit,"Quit",80+20,60,160,120,PANEL_QUIT,SCREEN_LOWER};
+
+//
+//foOp
+//G[\
+const tPanel panel_Error = {NULL_PTR,NULL_STR,LOC_CONF_X,LOC_CONF_Y,LOC_CONF_W,LOC_CONF_H,PANEL_ERROR,SCREEN_UPPER};
+const tMessage mess_Title_Err = {"title",10,10,COLOR_RED,8,MESSAGE_ERROR_TITLE,PANEL_ERROR};
+const tMessage mess_Info_Err = {"info",10,22,COLOR_RED,8,MESSAGE_ERROR_INFO,PANEL_ERROR};
+const tMessage mess_Info2_Err = {"info2",10,40,COLOR_RED,8,MESSAGE_ERROR_INFO2,PANEL_ERROR};
+const tMessage mess_Info3_Err = {"info3",10,50,COLOR_RED,8,MESSAGE_ERROR_INFO3,PANEL_ERROR};
+
+//
+const tPanel panel_Success = {NULL_PTR,NULL_STR,LOC_CONF_X,LOC_CONF_Y,LOC_CONF_W,LOC_CONF_H,PANEL_SUCCESS,SCREEN_UPPER};
+const tMessage mess_Title_Suc = {"title",10,10,COLOR_GREEN,8,MESSAGE_SUCCESS_TITLE,PANEL_SUCCESS};
+const tMessage mess_Info_Suc = {"info",10,40,COLOR_WHITE,8,MESSAGE_SUCCESS_INFO,PANEL_SUCCESS};
+const tMessage mess_Info2_Suc = {"info2",10,50,COLOR_WHITE,8,MESSAGE_SUCCESS_INFO2,PANEL_SUCCESS};
+
+//smF
+const tPanel panel_Confirm = {NULL_PTR,NULL_STR,LOC_CONF_X,LOC_CONF_Y,LOC_CONF_W,LOC_CONF_H,PANEL_CONFIRM,SCREEN_UPPER};
+const tMessage mess_conf_Title = {"title",10,10,COLOR_YELLO,8,MESSAGE_CONFIRM_TITLE,PANEL_CONFIRM};
+const tMessage mess_conf_Msg = {"Do you execute?",10,40,COLOR_WHITE,8,MESSAGE_CONFIRM_MSG,PANEL_CONFIRM};
+
+//gbvj[
+const tPanel panel_topmenu_help = {NULL_PTR,NULL_STR,LOC_CONF_X,LOC_CONF_Y,LOC_CONF_W,LOC_CONF_H,PANEL_TOPMENU,SCREEN_UPPER};
+const tMessage mess_topmenu_help_read = {"[Backup] Card -> bkup",10,4,COLOR_WHITE,8,MESSAGE_TOPMENU_HELP_READ,PANEL_TOPMENU};
+const tMessage mess_topmenu_help_notread = {"[Backup] is Invalid",10,4,COLOR_RED,8,MESSAGE_TOPMENU_HELP_READ,PANEL_TOPMENU};
+const tMessage mess_topmenu_help_write = {"[Restore] bkup -> Card",10,16,COLOR_WHITE,8,MESSAGE_TOPMENU_HELP_WRITE,PANEL_TOPMENU};
+const tMessage mess_topmenu_help_notwrite = {"[Restore] is Invalid",10,16,COLOR_RED,8,MESSAGE_TOPMENU_HELP_WRITE,PANEL_TOPMENU};
+const tMessage mess_topmenu_help_end = {"[End] return to SystemMenu",10,28,COLOR_WHITE,8,MESSAGE_TOPMENU_HELP_END,PANEL_TOPMENU};
+const tMessage mess_topmenu_help_operate = {"touch below",10,48,COLOR_GREEN,8,MESSAGE_TOPMENU_HELP_OPERATE,PANEL_TOPMENU};
+
+//O\
+const tPanel panel_dbglog = {NULL_PTR,NULL_STR,LOC_LOG_X,LOC_LOG_Y,LOC_LOG_W,LOC_LOG_H,PANEL_DBGLOG,SCREEN_UPPER};
+const tMemo memo_dbglog = {LOG_MAX,10,10,COLOR_WHITE,8,MEMO_DBGLOG,PANEL_DBGLOG};
+
+
+//ʏ펞
+//^Cg
+#define FONT_SIZE_TITLE 12
+#define LOC_TITL_X (40-FONT_SIZE_TITLE*2)
+#define LOC_TITL_Y 20
+#define LOC_TITL_W (400 - LOC_CONF_X*2)
+#define LOC_TITL_H 50
+#define FONT_SIZE_PRODUCT 10
+const tPanel panel_title = {NULL_PTR,NULL_STR,LOC_TITL_X,LOC_TITL_Y,LOC_TITL_W,LOC_TITL_H,PANEL_TITLE,SCREEN_UPPER};
+const tMessage mess_title = {"title",0,0,COLOR_WHITE,FONT_SIZE_TITLE,MESSAGE_TITLE,PANEL_TITLE};
+const tMessage mess_product = {"product",0,LOC_TITL_H - 22,COLOR_WHITE,FONT_SIZE_PRODUCT,MESSAGE_PRODUCT,PANEL_TITLE};
+const tMessage mess_product2 = {"product2",0,LOC_TITL_H - 10,COLOR_WHITE,FONT_SIZE_PRODUCT,MESSAGE_PRODUCT2,PANEL_TITLE};
+const tMessage mess_version = {"version",LOC_TITL_W-FONT_SIZE_PRODUCT*6,FONT_SIZE_TITLE+2,COLOR_WHITE,FONT_SIZE_PRODUCT,MESSAGE_VERSION,PANEL_TITLE};
+
+#define LOC_MESS_X 20
+#define LOC_MESS_W (400 - LOC_MESS_X*2)
+#define LOC_MESS_Y (LOC_TITL_Y + LOC_TITL_H + 10)
+#define LOC_MESS_H (240 - LOC_MESS_Y - 10)
+//TOPj[
+//\̓OƔr
+#define FONT_SIZE 10
+#define STR_LINE(ln) (FONT_SIZE + 2)*ln
+const tPanel panel_menu = {NULL_PTR,NULL_STR,LOC_MESS_X,LOC_MESS_Y,LOC_MESS_W,LOC_MESS_H,PANEL_MENU,SCREEN_UPPER};
+const tMessage mess_menu_read = {"[Backup] Card savedata Backup",10,STR_LINE(1),COLOR_WHITE,FONT_SIZE,MESSAGE_MENU_READ,PANEL_MENU};
+const tMessage mess_menu_write = {"[Restore] restore to Card",10,STR_LINE(2),COLOR_WHITE,FONT_SIZE,MESSAGE_MENU_WRITE,PANEL_MENU};
+//const tMessage mess_menu_end = {"[End] close this apprication",10,STR_LINE(3),COLOR_WHITE,FONT_SIZE,MESSAGE_MENU_END,PANEL_MENU};
+const tMessage mess_menu_operate = {"touch below",10,STR_LINE(4),COLOR_GREEN,FONT_SIZE,MESSAGE_MENU_OPERATE,PANEL_MENU};
+const tMessage mess_bkuperr = {"Backup error",10,STR_LINE(6),COLOR_RED,FONT_SIZE,MESSAGE_MENU_ERROR,PANEL_MENU};
+const tMessage mess_carderr = {"CARD error",10,STR_LINE(7),COLOR_YELLO,FONT_SIZE,MESSAGE_MENU_CAUTION,PANEL_MENU};
+const tMessage mess_debug = {"Crush Mode",10,STR_LINE(3),COLOR_YELLO,FONT_SIZE,MESSAGE_MENU_DEBUG,PANEL_MENU};
+
+//Backup
+//const tPanel panel_bkup = {NULL_PTR,NULL_STR,LOC_LOG_X,LOC_LOG_Y,LOC_LOG_W,LOC_LOG_H,PANEL_BKUP,SCREEN_UPPER};
+const tPanel panel_bkup = {NULL_PTR,NULL_STR,LOC_MESS_X,LOC_MESS_Y,LOC_MESS_W,LOC_MESS_H,PANEL_BKUP,SCREEN_UPPER};
+const tMessage mess_quit_operate = {"touch [Quit],or Push B",10,STR_LINE(4),COLOR_SKY,FONT_SIZE,MESSAGE_QUIT_OPERATE,PANEL_BKUP};
+const tMessage mess_conf = {"Do you execute?",10,STR_LINE(2),COLOR_WHITE,FONT_SIZE,MESSAGE_CONF,PANEL_BKUP};
+const tMessage mess_result = {"result",10,STR_LINE(2),COLOR_WHITE,FONT_SIZE,MESSAGE_RESULT,PANEL_BKUP};
+const tMessage mess_operate = {"touch below",10,STR_LINE(4),COLOR_GREEN,FONT_SIZE,MESSAGE_OPERATE,PANEL_BKUP};
+const tMessage mess_status = {"status",10,STR_LINE(7),COLOR_WHITE,FONT_SIZE,MESSAGE_STATUS,PANEL_BKUP};
+const tMessage mess_count = {"count",10,STR_LINE(8),COLOR_WHITE,FONT_SIZE,MESSAGE_COUNT,PANEL_BKUP};
+const tMessage mess_count2 = {"count2",10,STR_LINE(9),COLOR_GREEN,FONT_SIZE,MESSAGE_COUNT2,PANEL_BKUP};
+
+
+//}
+//const tPanel panel_insexit = {NULL_PTR,NULL_STR,LOC_LOG_X,LOC_LOG_Y,LOC_LOG_W,LOC_LOG_H,PANEL_INSEXIT,SCREEN_UPPER};
+const tPanel panel_insexit = {NULL_PTR,NULL_STR,LOC_MESS_X,LOC_MESS_Y,LOC_MESS_W,LOC_MESS_H,PANEL_INSEXIT,SCREEN_UPPER};
+const tMessage mess_insexit = {"device insert or pull out is detected",10,STR_LINE(3),COLOR_RED,8,MESSAGE_INSEXT_1,PANEL_INSEXIT};
+const tMessage mess_insexit2 = {"return to top menu",10,STR_LINE(5),COLOR_WHITE,8,MESSAGE_INSEXT_2,PANEL_INSEXIT};
+const tMessage mess_insexit3 = {"please touch or push B",10,STR_LINE(6),COLOR_WHITE,8,MESSAGE_INSEXT_3,PANEL_INSEXIT};
+
+//폜mF
+//const tPanel panel_delconf = {NULL_PTR,NULL_STR,LOC_CONF_X-10,LOC_CONF_Y,LOC_CONF_W+10,LOC_CONF_H*2,PANEL_DELCONF,SCREEN_UPPER};
+const tPanel panel_delconf = {NULL_PTR,NULL_STR,LOC_MESS_X,LOC_MESS_Y-36,LOC_MESS_W,LOC_MESS_H,PANEL_DELCONF,SCREEN_UPPER};
+const tMessage mess_delconf_Title = {" *** DELETE *** ",10,10,COLOR_YELLO,16,MESSAGE_DELCONF_TITLE,PANEL_DELCONF};
+const tMessage mess_delconf_Msg = {" caution!",10,50,COLOR_YELLO,12,MESSAGE_DELCONF_MSG,PANEL_DELCONF};
+const tMessage mess_delconf_Msg2 = {"this is delete backup",10,70,COLOR_YELLO,12,MESSAGE_DELCONF_MSG2,PANEL_DELCONF};
+const tMessage mess_delconf_Msg3 = {"Do you execute?",10,90,COLOR_YELLO,12,MESSAGE_DELCONF_MSG3,PANEL_DELCONF};
+
+
+
+nn::os::LightEvent stopEvnt(true);
+
+char scr_ver[16];
+char scr_err[32];
+char scr_debug[32];
+//menu
+bool ScrInitialize(uptr heap,u32 size)
+{
+ scr_evnt = EVNT_NONE;
+ holdVal = 0;
+ holdTck = nn::fnd::TimeSpan(0);
+
+ if (gui.Initialize(heap,size,&stopEvnt)==false)return false;
+
+ gui.ButtonCallback((uptr)pushButton);
+ //R|[lgo^
+ gui.PanelSet(&panel_Read);
+ gui.PanelSet(&panel_Write);
+// gui.PanelSet(&panel_End);
+ gui.PanelSet(&panel_Yes);
+ gui.PanelSet(&panel_No);
+ gui.PanelSet(&panel_Quit);
+ gui.PanelSet(&panel_Error);
+ gui.PanelSet(&panel_Success);
+ gui.PanelSet(&panel_Confirm);
+ gui.PanelSet(&panel_delconf);
+ gui.PanelSet(&panel_topmenu_help);
+ gui.PanelSet(&panel_title);
+ gui.PanelSet(&panel_menu);
+ gui.PanelSet(&panel_bkup);
+ gui.PanelSet(&panel_dbglog);
+ gui.PanelSet(&panel_insexit);
+
+ gui.PanelLineStyle(PANEL_TITLE,COLOR_BLACK);
+
+
+ gui.MessSet(&mess_Title_Err);
+ gui.MessSet(&mess_Info_Err);
+ gui.MessSet(&mess_Info2_Err);
+ gui.MessSet(&mess_Info3_Err);
+ gui.MessSet(&mess_Title_Suc);
+ gui.MessSet(&mess_Info_Suc);
+ gui.MessSet(&mess_Info2_Suc);
+ gui.MessSet(&mess_conf_Title);
+ gui.MessSet(&mess_conf_Msg);
+ gui.MessSet(&mess_delconf_Title);
+ gui.MessSet(&mess_delconf_Msg);
+ gui.MessSet(&mess_delconf_Msg2);
+ gui.MessSet(&mess_delconf_Msg3);
+
+ gui.MessSet(&mess_topmenu_help_read);
+ gui.MessSet(&mess_topmenu_help_write);
+ gui.MessSet(&mess_topmenu_help_end);
+ gui.MessSet(&mess_topmenu_help_operate);
+
+ gui.MessSet(&mess_title);
+ gui.MessSet(&mess_version);
+ gui.MessSet(&mess_product);
+ gui.MessSet(&mess_product2);
+ gui.MessSet(&mess_menu_read);
+ gui.MessSet(&mess_menu_write);
+// gui.MessSet(&mess_menu_end);
+ gui.MessSet(&mess_menu_operate);
+ gui.MessSet(&mess_quit_operate);
+ gui.MessSet(&mess_conf);
+ gui.MessSet(&mess_operate);
+ gui.MessSet(&mess_bkuperr);
+ gui.MessSet(&mess_carderr);
+ gui.MessSet(&mess_debug);
+ gui.MessSet(&mess_result);
+ gui.MessSet(&mess_status);
+ gui.MessSet(&mess_count);
+ gui.MessSet(&mess_count2);
+
+ gui.MessSet(&mess_insexit);
+ gui.MessSet(&mess_insexit2);
+ gui.MessSet(&mess_insexit3);
+
+ gui.MemoSet(&memo_dbglog);
+
+ gui.MemoEffective(MESSAGE_PRODUCT);
+ gui.MessEffective(MESSAGE_ERROR_TITLE);
+ gui.MessEffective(MESSAGE_ERROR_INFO);
+ gui.MessEffective(MESSAGE_ERROR_INFO2);
+ gui.MessEffective(MESSAGE_ERROR_INFO3);
+ gui.MessEffective(MESSAGE_SUCCESS_TITLE);
+ gui.MessEffective(MESSAGE_SUCCESS_INFO);
+ gui.MessEffective(MESSAGE_SUCCESS_INFO2);
+ gui.MessEffective(MESSAGE_CONFIRM_TITLE);
+ gui.MessEffective(MESSAGE_CONFIRM_MSG);
+ gui.MessEffective(MESSAGE_DELCONF_TITLE);
+ gui.MessEffective(MESSAGE_DELCONF_MSG);
+ gui.MessEffective(MESSAGE_DELCONF_MSG2);
+ gui.MessEffective(MESSAGE_DELCONF_MSG3);
+ gui.MessEffective(MESSAGE_TOPMENU_HELP_READ);
+ gui.MessEffective(MESSAGE_TOPMENU_HELP_WRITE);
+ gui.MessEffective(MESSAGE_TOPMENU_HELP_END);
+ gui.MessEffective(MESSAGE_TOPMENU_HELP_OPERATE);
+ gui.MessEffective(MESSAGE_MENU_READ);
+ gui.MessEffective(MESSAGE_MENU_WRITE);
+// gui.MessEffective(MESSAGE_MENU_END);
+ gui.MessEffective(MESSAGE_MENU_OPERATE);
+ gui.MessEffective(MESSAGE_INSEXT_1);
+ gui.MessEffective(MESSAGE_INSEXT_2);
+ gui.MessEffective(MESSAGE_INSEXT_3);
+ gui.MessEffective(MESSAGE_TITLE);
+ gui.MessEffective(MESSAGE_VERSION);
+ gui.MemoEffective(MEMO_DBGLOG);
+
+ gui.PanelLineStyle(PANEL_DELCONF,COLOR_YELLO);
+
+ sprintf(scr_ver,"ver %.2f",VERSION);
+ gui.MessStr(MESSAGE_VERSION,scr_ver);
+ gui.MessStr(MESSAGE_MENU_CAUTION,scr_err);
+ gui.MessStr(MESSAGE_MENU_ERROR,scr_err);
+ gui.MessStr(MESSAGE_MENU_DEBUG,scr_debug);
+
+ return true;
+
+}
+
+void ScrFinalize()
+{
+ stopEvnt.Signal();
+ while(stopEvnt.TryWait()){
+ nn::os::Thread::Yield();
+
+ };
+ gui.Finalize();
+}
+
+//YES-NO {^
+void YesNo()
+{
+ gui.ButtonMask(nn::hid::BUTTON_A | nn::hid::BUTTON_B);
+ gui.PanelEffective(PANEL_YES);
+ gui.PanelEffective(PANEL_NO);
+ gui.Draw();
+}
+
+void Quit()
+{
+ gui.ButtonMask(nn::hid::BUTTON_A | nn::hid::BUTTON_B);
+ gui.PanelEffective(PANEL_QUIT);
+ gui.Draw();
+}
+
+
+//gbvj[
+//:J[h
+void scr_TopMenuDbg(bool formatted,bool insertted)//fobOp
+{
+ scr_evnt = EVNT_NONE;
+ gui.ButtonMask(nn::hid::BUTTON_A | nn::hid::BUTTON_R | nn::hid::BUTTON_L);
+
+ if (formatted)
+ {//[h\
+ gui.MessSet(&mess_topmenu_help_read);
+ gui.PanelEffective(PANEL_READ);
+ }else{//[hs
+ gui.MessSet(&mess_topmenu_help_notread);
+ gui.PanelEffective(PANEL_READ,false);
+ }
+ if (insertted)
+ {//݉
+ gui.MessSet(&mess_topmenu_help_write);
+ gui.PanelEffective(PANEL_WRITE);
+ }else{//ݕs
+ gui.MessSet(&mess_topmenu_help_notwrite);
+ gui.PanelEffective(PANEL_WRITE,false);
+ }
+
+ gui.MessEffective(MESSAGE_TOPMENU_HELP_READ);
+ gui.MessEffective(MESSAGE_TOPMENU_HELP_WRITE);
+// gui.PanelEffective(PANEL_END);
+ gui.PanelEffective(PANEL_TOPMENU);
+ gui.Draw();
+}
+
+//ʏ펞
+
+//v_NgR[h
+//:J[hAgZ[uɋL^ꂽ
+char scr_pcode[32];
+void scr_PrdCode(char *s)
+{
+ strcpy(scr_pcode,"CARD : ");
+ if (s[0]==0) strcat(scr_pcode,"----");
+ else strcat(scr_pcode,s);
+ gui.MessStr(MESSAGE_PRODUCT,scr_pcode);
+}
+
+char scr_pcode2[64];
+void scr_PrdCodeEx(char *s)
+{
+ strcpy(scr_pcode2,"BKUP : ");
+ if (s[0]==0) strcat(scr_pcode2,"----");
+ else strcat(scr_pcode2,s);
+ gui.MessStr(MESSAGE_PRODUCT2,scr_pcode2);
+}
+
+//폜̎smF
+void scr_DelConf()
+{
+ scr_evnt = EVNT_NONE;
+ gui.PanelEffective(PANEL_DELCONF);
+ YesNo();
+}
+
+
+//Top menu
+//:foCX
+//arg : v_NgR[hv
+void scr_TopMenu(bool formatted,bool inserted,bool exfm,bool bkupins,int err)
+{
+
+ int i;
+ scr_evnt = EVNT_NONE;
+
+ u32 mask = 0;
+ mask |= (nn::hid::BUTTON_LEFT | nn::hid::BUTTON_X);//LEFT+X = Delete L
+#ifdef DEBUG_ENABLE
+ mask | = ( nn::hid::BUTTON_DOWN | nn::hid::BUTTON_Y |nn::hid::BUTTON_X|nn::hid::BUTTON_L | nn::hid::BUTTON_R);
+#endif
+#ifdef CRUSH_ENABLE
+ extern bool CrashForDebug;
+ mask | = nn::hid::BUTTON_Y;
+ if (CrashForDebug==0) gui.MessEffective(MESSAGE_MENU_DEBUG,false,false);
+ else{
+ sprintf(scr_debug,"Crush mode %d",CrashForDebug);
+ gui.MessEffective(MESSAGE_MENU_DEBUG);
+ }
+#endif
+
+ gui.MessStr(MESSAGE_TITLE," < CTR Card Savedata Mover >");
+
+ gui.MessEffective(MESSAGE_MENU_ERROR,false,false);
+ gui.MessEffective(MESSAGE_MENU_CAUTION,false,false);
+ gui.MessEffective(MESSAGE_MENU_OPERATE,false,false);
+ //Е̂ݗL
+ if (formatted && bkupins && (exfm == false))
+ {//obNAbv
+ gui.MessEffective(MESSAGE_MENU_OPERATE);
+ gui.PanelEffective(PANEL_READ);
+ gui.PanelEffective(PANEL_WRITE,false,false);
+ }else if (exfm && inserted)
+ {//XgA
+ mask |= (nn::hid::BUTTON_LEFT | nn::hid::BUTTON_X);//LEFT+X = Delete L
+ gui.PanelEffective(PANEL_READ,false,false);
+ i =0;
+ if (err & SDATA_ERRPUT_MEDIA) i = ERC_MEDIA + ERC_DEV_CARD;//obNAbvȂ
+ else
+ if (err & SDATA_ERRPUT_PCODE) i = ERC_DEV_OTHER + ERC_PRODCODE;//v_NgR[hsv
+ if (i !=0 )
+ {
+ gui.PanelEffective(PANEL_WRITE,false,false);
+ sprintf(scr_err,"ERROR %d",i);
+ gui.MessEffective(MESSAGE_MENU_ERROR);
+ }
+ else{
+ gui.MessEffective(MESSAGE_MENU_OPERATE);
+ gui.PanelEffective(PANEL_WRITE);
+ }
+ }else{//Ȃ
+ gui.PanelEffective(PANEL_WRITE,false,false);
+ gui.PanelEffective(PANEL_READ,false,false);
+
+ if (inserted == false)
+ {
+ strcpy(scr_err,"Please Insert Card");
+ gui.MessEffective(MESSAGE_MENU_CAUTION);
+
+ }else{
+ if (err & SDATA_ERRPUT_MEDIA) i = ERC_MEDIA + ERC_DEV_CARD;//obNAbvȂ
+ else
+ if (err & SDATA_ERRPUT_VERIFI) i = ERC_SDK_VERIFI + ERC_DEV_CARD;//f[^Ă
+ else if (bkupins == false) i = ERC_DEVICE + ERC_DEV_OUT;//ofoCX
+ else i = ERC_FORMAT + ERC_DEV_CARD;//tH[}bgG[
+ sprintf(scr_err,"ERROR %d",i);
+ gui.MessEffective(MESSAGE_MENU_ERROR);
+ }
+ }
+
+ gui.ButtonMask(mask);
+
+ gui.MessEffective(MESSAGE_PRODUCT);
+ gui.MessEffective(MESSAGE_PRODUCT2);
+
+ gui.PanelEffective(PANEL_TITLE);
+ gui.PanelEffective(PANEL_MENU);
+
+ gui.Draw();
+}
+
+//fobOpA{^҂
+void ScrStep()
+{
+ scr_evnt = EVNT_NONE;
+ gui.ButtonMask(nn::hid::BUTTON_B);
+}
+
+
+void ClearBkupMess()
+{
+ gui.MessEffective(MESSAGE_CONF,false,false);
+ gui.MessEffective(MESSAGE_RESULT,false,false);
+ gui.MessEffective(MESSAGE_OPERATE,false,false);
+ gui.MessEffective(MESSAGE_QUIT_OPERATE,false,false);
+ gui.MessEffective(MESSAGE_STATUS,false,false);
+ gui.MessEffective(MESSAGE_COUNT,false,false);
+ gui.MessEffective(MESSAGE_COUNT2,false,false);
+ gui.PanelEffective(PANEL_BKUP);
+}
+
+//Backup
+void scr_Backup()
+{
+ scr_evnt = EVNT_NONE;
+ gui.PanelLineStyle(PANEL_BKUP,COLOR_SKY);
+ gui.MessStr(MESSAGE_TITLE," --- Backup Card Savedata ---");
+ gui.PanelEffective(PANEL_TITLE);
+ ClearBkupMess();
+ gui.Draw();
+
+}
+void scr_BackupYesNo()
+{
+ scr_Backup();
+ gui.MessEffective(MESSAGE_CONF);
+ gui.MessEffective(MESSAGE_OPERATE);
+ YesNo();
+}
+
+//restore
+void scr_Restore()
+{
+ scr_evnt = EVNT_NONE;
+ gui.PanelLineStyle(PANEL_BKUP,COLOR_PARPL);
+ gui.MessStr(MESSAGE_TITLE,"--- Restore Card Savedata ---");
+ gui.PanelEffective(PANEL_TITLE);
+ ClearBkupMess();//backupƓplg
+ gui.Draw();
+
+}
+void scr_RestoreYesNo()
+{
+ scr_Restore();
+ gui.MessEffective(MESSAGE_CONF);
+ gui.MessEffective(MESSAGE_OPERATE);
+ YesNo();
+}
+
+
+void scr_Status(char *s,eColor col)
+{
+ gui.MessCol(MESSAGE_STATUS,col);
+ gui.MessStr(MESSAGE_STATUS,s);
+ gui.MessEffective(MESSAGE_STATUS);
+ gui.Draw();
+}
+
+void scr_ResultQuit(char *s,eColor col)
+{
+ gui.MessCol(MESSAGE_RESULT,col);
+ gui.MessStr(MESSAGE_RESULT,s);
+ gui.MessEffective(MESSAGE_RESULT);
+ gui.MessEffective(MESSAGE_QUIT_OPERATE);
+ Quit();
+}
+
+
+void scr_InsExitQuit()
+{
+ ClearBkupMess();
+ gui.PanelLineStyle(PANEL_INSEXIT,COLOR_RED);
+ gui.PanelEffective(PANEL_INSEXIT);
+ Quit();
+}
+
+// JEg/MAX \
+char str_Counter[128];
+char str_Counter2[128];
+void scr_CountPerMax(int ct,int max)
+{
+ sprintf(str_Counter,"%d / %d",ct,max);
+ gui.MessStr(MESSAGE_COUNT,str_Counter);
+ gui.MessEffective(MESSAGE_COUNT);
+ gui.Draw();
+}
+
+//Q[Wtotal
+void scr_CountPerMax2(int ct,int max,int total)
+{
+ if (total == -1) str_Counter2[0]=0;
+ else if (total != 0){
+// gui.MessCol(MESSAGE_COUNT2,COLOR_WHITE);
+ sprintf(str_Counter2,"total size %d",total);
+ }else{
+// gui.MessCol(MESSAGE_COUNT2,COLOR_YELLO);
+ int i;
+ int lv = ct/(max/25);
+ for (i =0;i';
+ while ( i < 25 )str_Counter2[i++] = '|';
+ str_Counter2[i] = 0;
+ }
+ //sprintf(str_Counter2,"%d / %d",ct,max);
+ gui.MessStr(MESSAGE_COUNT2,str_Counter2);
+ gui.MessEffective(MESSAGE_COUNT2);
+ gui.Draw();
+
+}
+
+void scr_MessOnCount2(char *str)
+{
+// gui.MessCol(MESSAGE_COUNT2,COLOR_YELLO);
+ gui.MessStr(MESSAGE_COUNT2,str);
+ gui.MessEffective(MESSAGE_COUNT2);
+ gui.Draw();
+}
+
+
+//smF
+void scr_ConfirmDbg(char *str)
+{
+ scr_evnt = EVNT_NONE;
+ gui.MessStr(MESSAGE_CONFIRM_TITLE,str);
+ gui.PanelEffective(PANEL_CONFIRM);
+ YesNo();
+}
+
+
+//G[\Quit{^
+void scr_ErrorQuitDbg(tColStr **s)
+{
+ scr_evnt = EVNT_NONE;
+ gui.MessStr(MESSAGE_ERROR_TITLE,s[0]->str);
+ gui.MessCol(MESSAGE_ERROR_TITLE,s[0]->color);
+ gui.MessStr(MESSAGE_ERROR_INFO,s[1]->str);
+ gui.MessCol(MESSAGE_ERROR_INFO,s[1]->color);
+ gui.MessStr(MESSAGE_ERROR_INFO2,s[2]->str);
+ gui.MessCol(MESSAGE_ERROR_INFO2,s[2]->color);
+ gui.MessStr(MESSAGE_ERROR_INFO3,s[3]->str);
+ gui.MessCol(MESSAGE_ERROR_INFO3,s[3]->color);
+ gui.PanelEffective(PANEL_ERROR);
+ Quit();
+}
+
+//\Quit{^
+void scr_SuccessQuitDbg(tColStr **s)
+{
+ scr_evnt = EVNT_NONE;
+ gui.MessStr(MESSAGE_SUCCESS_TITLE,s[0]->str);
+ gui.MessCol(MESSAGE_SUCCESS_TITLE,s[0]->color);
+ gui.MessStr(MESSAGE_SUCCESS_INFO,s[1]->str);
+ gui.MessCol(MESSAGE_SUCCESS_INFO,s[1]->color);
+ gui.MessStr(MESSAGE_SUCCESS_INFO2,s[2]->str);
+ gui.MessCol(MESSAGE_SUCCESS_INFO2,s[2]->color);
+ gui.PanelEffective(PANEL_SUCCESS);
+ Quit();
+}
+
+
+//fobOO
+void scr_DgbLog(cStrLst *p)
+{
+ gui.PanelLineStyle(PANEL_DBGLOG,COLOR_BLUE);
+
+ for (int i=0;igetpos()+1;i++)gui.MemoStr(MEMO_DBGLOG,p->line(i),i);
+
+ gui.PanelEffective(PANEL_DBGLOG);
+ gui.Draw();
+}
+
+
+
+int ScrDbgLogGetMax()
+{
+ return LOG_MAX;
+}
+
+
+void scr_Draw()
+{
+ gui.Draw();
+}
+
+void scr_GetEvnt()
+{
+// gui.thUpdate();
+}
+
+
diff --git a/trunk/CardSaveData/Mover/body/source/screen/screen.h b/trunk/CardSaveData/Mover/body/source/screen/screen.h
new file mode 100644
index 0000000..081be50
--- /dev/null
+++ b/trunk/CardSaveData/Mover/body/source/screen/screen.h
@@ -0,0 +1,115 @@
+#ifndef SCREEN_H_
+#define SCREEN_H_
+
+#include
+#include
+#include "../../../../common/gui/gui.h"
+
+//plID
+enum {
+ EVNT_NONE,
+ EVNT_YES,
+ EVNT_NO,
+ EVNT_QUIT,
+ EVNT_PUSH_A,
+ EVNT_PUSH_B,
+ EVNT_PUSH_R,
+ EVNT_PUSH_L,
+ EVNT_PUSH_X,
+ EVNT_PUSH_Y,
+ EVNT_PUSH_LEFT_X,
+ EVNT_PUSH_DOWN_Y,
+ EVNT_SEL_READ,
+ EVNT_SEL_WRITE,
+ EVNT_SEL_END,
+ EVNT_ERROR,
+ EVNT_FATAL
+};
+
+typedef struct{
+ char *str;
+ eColor color;
+ u8 pad[3];
+}tColStr;
+
+
+#define LST_MAX 30
+#define LST_LENGTH 128
+class cStrLst {
+private:
+ int pos;
+ int buttom;
+ char str[LST_MAX][LST_LENGTH];
+public:
+ cStrLst():pos(0){};
+ void add(char *p){
+ if (pos>=LST_MAX)return;
+ //char *s = &str[pos][0];
+ int i;
+ if (pos == buttom)
+ {
+ i =0;
+ while(i < buttom){ strcpy(str[i],str[i+1]);i++;}
+ }else pos++;
+ i=0;
+ while(i < (LST_LENGTH-1)){ //I[o[[h
+ if (p[i]!=0){
+ str[pos][i] = p[i];
+ i++;
+ }else break;
+ }
+ str[pos][i] = 0;
+ //strcpy(str[pos],p);
+ //for (i =0;i=LST_MAX))return false;
+ buttom = btm;
+ return true;
+ }
+};
+
+
+//Topj[ł̃G[\p̃tO
+//bit`FbN
+#define SDATA_ERRPUT_PCODE 1
+#define SDATA_ERRPUT_MEDIA 2
+#define SDATA_ERRPUT_VERIFI 4
+
+
+bool ScrInitialize(uptr heap,u32 size);
+void ScrFinalize();
+void ScrClr();
+int ScrDbgLogGetMax();
+void ScrStep();
+void scr_TopMenuDbg(bool formatted,bool insertted);
+void scr_TopMenu(bool formatted,bool inserted,bool exfm,bool sdins,int err);
+void scr_ErrorQuitDbg(tColStr **s);
+void scr_SuccessQuitDbg(tColStr **s);
+void scr_ConfirmDbg(char *str);
+void scr_DgbLog(cStrLst *p);
+void scr_BackupYesNo();
+void scr_Backup();
+void scr_RestoreYesNo();
+void scr_Restore();
+void scr_InsExitQuit();
+void scr_Status(char *s,eColor col);
+void scr_ResultQuit(char *s,eColor col);
+void scr_CountPerMax(int ct,int max);
+void scr_CountPerMax2(int ct,int max,int total);
+void scr_PrdCode(char *s);
+void scr_PrdCodeEx(char *s);
+void scr_DelConf();
+void scr_MessOnCount2(char *str);
+void scr_Draw();
+void scr_GetEvnt();
+
+#endif
+
diff --git a/trunk/CardSaveData/Mover/body/ver.h b/trunk/CardSaveData/Mover/body/ver.h
new file mode 100644
index 0000000..c99df49
--- /dev/null
+++ b/trunk/CardSaveData/Mover/body/ver.h
@@ -0,0 +1,22 @@
+/*---------------------------------------------------------------------------*
+ Project: Horizon
+ File: irp.h
+
+ Copyright (C)2009 Nintendo Co., Ltd. All rights reserved.
+
+ These coded instructions, statements, and computer programs contain
+ proprietary information of Nintendo of America Inc. and/or Nintendo
+ Company Ltd., and are protected by Federal copyright law. They may
+ not be disclosed to third parties or copied or duplicated in any form,
+ in whole or in part, without the prior written consent of Nintendo.
+
+ $Rev$
+ *---------------------------------------------------------------------------*/
+
+#ifndef VER_H_
+#define VER_H_
+
+#define VERSION 1.05
+
+
+#endif
diff --git a/trunk/CardSaveData/Mover/docs/Error_code.txt b/trunk/CardSaveData/Mover/docs/Error_code.txt
new file mode 100644
index 0000000..0920809
--- /dev/null
+++ b/trunk/CardSaveData/Mover/docs/Error_code.txt
@@ -0,0 +1,37 @@
+
+//エラー表示コードの下位2桁
+0, //不明
+1, //デバイスが見つからない
+2,//プロダクトコード不一致
+3,//ベリファイエラー
+4,//パスが長すぎ
+5,//ディレクトリ深すぎ
+6, //メディアが見つからない(サブ基盤外れなど)
+10, //ファイルが見つからない
+20, //既に存在
+21, //空き容量がない
+22, //書込み禁止
+30, //アクセスエラー
+50, //フォーマットエラー
+60, //検証に失敗、改竄
+70, //ROM情報エラー
+80, //リトライ要求
+90, //実行時エラー
+99 //深刻なエラー
+
+
+//上位
+CARD = 100,
+BKUP DEVICE = 200,
+OTHER = 300
+
+
+これらの合成で表示される
+例えば、カードが刺さっていない場合は 101 となる
+
+
+通常時に発生しやすいと思われるもの
+
+302 .. プロダクトコードが一致しない
+101 .. カードが見つからない
+
diff --git a/trunk/CardSaveData/Mover/docs/HowToビルド.txt b/trunk/CardSaveData/Mover/docs/HowToビルド.txt
new file mode 100644
index 0000000..534ab9d
--- /dev/null
+++ b/trunk/CardSaveData/Mover/docs/HowToビルド.txt
@@ -0,0 +1,57 @@
+mFF
+ARM RVC_Nintendo 4.1
+omake 0.9.8.5
+CTR SDK2.0 + RepairtoolvCx[gpb`
+v1.03ȍ~ ps_api.h libnn_ps(SystemProgramKitɓĂ)
+
+vFSDK2.0ȍ~̃VXe{
+
+)
+SDK2.0pSampledemos common,gxrhĂ
+omakeroot̂fBNgɂomaket@C
+SAMPLED_DEMOS_COMMON_INCLUDE_DIR Ɂ@
+sampledemos/common/includëʒuw肵Ă
+Jpubkeyimp/omakeŎw
+
+rh)
+omakeroot̂fBNgomakes
+bodyŃrhocia AImpomake(SRC_IMPORTEE_PATH)Ŏw
+(ʎY@Ŏgɂ́A}X^Ociaw)
+rhNANDC|[gpccił
+
+
+C|[g:
+ciarcC|[g -> SD .. DevMenugp,DevMenufullȂnandɂ
+J[hNC|[g -> NAND
+
+ʎY@ł̎sɂ̓}X^OK{
+bodyō쐬cia OLStŃ}X^O
+ciagč쐬cci}X^O
+
+}X^O̗F
+Ebody/imagesɏocia}X^OOLSt
+EciaImpomakeŎwA͎wꏊɒu
+ibodỹrhŏ㏑Ȃ悤ꏊt@CςقSj
+Eimp/omakesAcci쐬
+Ecci}X^O
+
+OLSƃ}X^o[WXVKv
+common/ver.h͕\o[WAύXĂ_
+body/omekẽRgQl
+
+NANDC|[gŎsꍇcia`FbN
+SDC|[g
+J@œ- }X^OĂȂ
+ʎY@œ- OLStĂȂ
+
+1.03ȍ~̓C|[g̖{̂VAԍŐ
+"imp/imp_lis/"ɃXgƏTv
+OpenSSL0.9.6k,r 1.0.0d œmF
+imp/imp_list ɃR}hCc[(win32)pob`
+gcygwinł
+[UɂomakewpubkeyƑgprivatekeyōn
+
+
+{c[J̃}X^O͐iG()Ɉ˗
+}X^OςDevMenu(full)
+CUP쐬͔ѓɕ
diff --git a/trunk/CardSaveData/Mover/docs/option.txt b/trunk/CardSaveData/Mover/docs/option.txt
new file mode 100644
index 0000000..64a334f
--- /dev/null
+++ b/trunk/CardSaveData/Mover/docs/option.txt
@@ -0,0 +1,10 @@
+C|[^̃IvVL
+
+cms_inf.txt̖OŃt@C쐬
+ȉ̋LqŃIvVLɂȂ
+
+-t: eXgj[
+@@@J[h̃Z[uɃeXgp^[݁xt@C
+
+-p: {̃VA\
+
diff --git a/trunk/CardSaveData/Mover/docs/release.txt b/trunk/CardSaveData/Mover/docs/release.txt
new file mode 100644
index 0000000..9331b64
--- /dev/null
+++ b/trunk/CardSaveData/Mover/docs/release.txt
@@ -0,0 +1,55 @@
+////////////////////////////////////////////////////////////////
+{c[ uNintendo for 3DSvѐpJ[hpł
+J[h̃Z[uf[^obNAbvyуXgA܂
+////////////////////////////////////////////////////////////////
+
+NANDC|[gĂAAvl̎菇ŋN
+{̃VXe2.0ȍ~ɂĂ
+CUP(v1.02ȍ~)͖{̃VXeÂꍇXVj[N
+AUPP(?)Homej[NłȂƎgȂ
+
+(C|[g菇)
+EfobK̓C^"cci"J[hɏ
+EHomej[J[hNj[Inports
+Ej[ImportI
+EId{^Z ->"d"^b`
+dȂȂƃACRj[Ɍ܂
+
+
+(NAND폜)
+N܂ł̓C|[gƓl
+Ej[Deletes
+I̓j[ɖ߂܂
+
+(eXgp^[)
+J[h̃obNAbvɃeXgf[^݂܂
+茳ɎgQ[J[hꍇ̓mFpł
+N܂ł̓C|[gƓl
+EfobK̓C^"cci"J[hɏ
+EJ[h{̂ɍj[Test Datas
+EJ[\œeIAAŃCgAXŃxt@C
+ʂCasual Test IԁA̓[X̃`FbNɎgx
+
+
+CgɈUIHomej[ɂǂ
+Nand̃c[NA[hXgA
+Home{^ȂǂŃc[IAJ[hNxt@C
+
+
+c[{̂̑͑}jAQ
+
+
+[Histry]
+#\ver@}X^Over
+# ύXe
+
+v1.04 - Remaster 2.0.9 - svnrW 190
+ body,imp: ACRHɕύXFj[̃oOŃtOŋۂĂɌĂ܂
+ 쒆̖~
+
+v1.03 - Remaster 2.0.8 - svnrW 181
+ body: "LEFT+X"SbɕύX
+ ^b`̒
+ imp: C|[g{̃VAԍŐ
+ ݒt@CŃIvVL悤
+ SDK2.0+`j[œmF
diff --git a/trunk/CardSaveData/Mover/docs/マスタリング.txt b/trunk/CardSaveData/Mover/docs/マスタリング.txt
new file mode 100644
index 0000000..3009e14
--- /dev/null
+++ b/trunk/CardSaveData/Mover/docs/マスタリング.txt
@@ -0,0 +1,10 @@
+ʎY@ł̓ɂ̓}X^OKv
+
+cia̓T[oFiOLSjK{
+OLS͑O擾烊}X^o[WグKv(2011/2)
+(ႦAO 1.0.0 Ȃ@1.0.1 )
+W[rsfŎw(Remasterversion)
+}Ciƃ}CNOmakefile
+MAKECIAFLAGS = -minor 0 -micro 1
+̏ꍇ *.0.1 (*rsfRemasterversion)
+
diff --git a/trunk/CardSaveData/Mover/docs/操作説明.txt b/trunk/CardSaveData/Mover/docs/操作説明.txt
new file mode 100644
index 0000000..5ae7423
--- /dev/null
+++ b/trunk/CardSaveData/Mover/docs/操作説明.txt
@@ -0,0 +1,41 @@
+
+<상j[>
+
+삪oԂ̂ƂʂɃ{^\
+
+EobNAbvԂŃJ[h
+obNAbvL
+
+EobNAbvԂł
+XgAL
+
+(obNAbv)
+^b`Ďs
+J[h{̓ɓǂݏo܂
+
+(XgA)
+^b`Ďs
+obNAbveJ[h֏܂
+Ǝŏ
+s̏ꍇ͏܂
+
+(obNAbvf[g)
+擪ʂ L[ LEFT + X
+
+
+
+ȉArhɃtOL(my_dess.h )ɂꍇ̂ݎg
+
+//NbV[h
+߂ۂɃf[^Axt@CŕKG[
+擪ʂŁ@x@{^
+
+//foO[h
+擪ʂ +x(0.09܂)
+擪ʂ +X+x(1.00ȍ~)
+
+NbV[hLF@L {^
+
+//eXgf[^
+foO[hɐ擪ʂłq{^
+
diff --git a/trunk/CardSaveData/Mover/docs/署名に関する覚え書.txt b/trunk/CardSaveData/Mover/docs/署名に関する覚え書.txt
new file mode 100644
index 0000000..484e487
--- /dev/null
+++ b/trunk/CardSaveData/Mover/docs/署名に関する覚え書.txt
@@ -0,0 +1,34 @@
+
+rhɑgݍJ̃yAƂȂvCx[ggďs
+
+o[WŌʂ
+ύX̏ꍇło[Wς邱
+
+Openssl.exe : cygwiñCXgAWinł
+RSAArbg͂QOSŴ
+SHA256̃_CWFXgɏ
+Openssl0.9.6.k(r),1.0.0d쐬̏œmF
+
+(쐬)
+openssl genrsa -out private_key.pem 2048
+openssl enc -d -base64 -in private_key.pem -out private_key.der
+openssl rsa -pubout -inform DER -outform DER -in private_key.der -out public_key.der
+
+(1.0.0̏ꍇ)
+openssl genpkey -out private_key.der -outform DER -algorithm rsa -pkeyopt rsa_keygen_bits:2048 -pkeyopt rsa_keygen_pubexp:65537
+openssl rsa -pubout -inform DER -outform DER -in private_key.der -out public_key.der
+
+()
+openssl dgst -sha256 -binary -keyform DER -sign private_key.der -out csm_sign.dat csm_list.txt
+
+vCx[g̃oCisvȂ
+openssl genrsa -out private_key.pem 2048
+openssl rsa -pubout -outform DER -in private_key.pem -out public_key.der
+
+openssl dgst -sha256 -binary -sign private_key.pem -out csm_sign.dat csm_list.txt
+
+쐬pubC|[gAvomakeŎw
+OBJECTS[] =
+ $`(ObjectFromBinary $(TARGET), ./Imp_list/Public_Key.der)
+
+XgvCx[gŏ쐬AXgƏC|[gSDǂ
diff --git a/trunk/CardSaveData/OMakefile b/trunk/CardSaveData/OMakefile
new file mode 100644
index 0000000..9890e86
--- /dev/null
+++ b/trunk/CardSaveData/OMakefile
@@ -0,0 +1,30 @@
+#!/usr/bin/env omake
+#----------------------------------------------------------------------------
+# Project: Horizon
+# File: OMakefile
+#
+# Copyright (C)2009 Nintendo Co., Ltd. All rights reserved.
+#
+# These coded instructions, statements, and computer programs contain
+# proprietary information of Nintendo of America Inc. and/or Nintendo
+# Company Ltd., and are protected by Federal copyright law. They may
+# not be disclosed to third parties or copied or duplicated in any form,
+# in whole or in part, without the prior written consent of Nintendo.
+#
+# $Rev: 34658 $
+#----------------------------------------------------------------------------
+
+#\DemoCugp܂
+#PCɍ킹ăTvf̃fBNgw
+#SAMPLED_DEMOS_COMMON_INCLUDE_DIR = $(dir ../common/include)
+SAMPLED_DEMOS_COMMON_INCLUDE_DIR = $(dir $(HORIZON_ROOT)/../CTR/sampledemos/common/include)
+INCLUDES += $(SAMPLED_DEMOS_COMMON_INCLUDE_DIR)
+
+LIBS += lib_demo libnn_am
+
+.SUBDIRS: $(exist-dirs \
+ Mover \
+ ToSD \
+ )
+
+DefineDefaultRules()
diff --git a/trunk/CardSaveData/OMakeroot b/trunk/CardSaveData/OMakeroot
new file mode 100644
index 0000000..7260486
--- /dev/null
+++ b/trunk/CardSaveData/OMakeroot
@@ -0,0 +1,73 @@
+#!/usr/bin/env omake
+#----------------------------------------------------------------------------
+# Project: Horizon
+# File: OMakeroot
+#
+# Copyright (C)2009 Nintendo Co., Ltd. All rights reserved.
+#
+# These coded instructions, statements, and computer programs contain
+# proprietary information of Nintendo of America Inc. and/or Nintendo
+# Company Ltd., and are protected by Federal copyright law. They may
+# not be disclosed to third parties or copied or duplicated in any form,
+# in whole or in part, without the prior written consent of Nintendo.
+#
+# $Rev:$
+#----------------------------------------------------------------------------
+
+# fBNgCAEgɂĂ̐
+#
+# a) \[XR[h[gfBNgɔzuꍇ
+# :
+# /OMakeroot
+# /foo/bar/OMakefile
+#
+# :
+# OMakefile ƓfBNgȉ objects images ܂B
+#
+# /foo/bar/objects/...
+# /foo/bar/images/..
+#
+#
+# b) \[XR[h sources ȉɔzuꍇ
+# :
+# /OMakeroot
+# /sources/foo/bar/OMakefile
+#
+# :
+# [gfBNgȉ objects images ܂B
+#
+# /objects/foo/bar/...
+# /images/foo/bar/...
+#
+#
+
+# [gϐ̎擾
+public.HORIZON_ROOT =
+if $(defined-env HORIZON_ROOT)
+ HORIZON_ROOT = $(absname $(getenv HORIZON_ROOT))
+ export
+
+if $(defined-env CTRSDK_ROOT)
+ CTRSDK_ROOT = $(absname $(getenv CTRSDK_ROOT))
+ if $(and $(defined-env HORIZON_ROOT), $(not $(equal $(HORIZON_ROOT), $(CTRSDK_ROOT))))
+ eprintln(HORIZON_ROOT CTRSDK_ROOT v܂BpXݒ肷邩Aǂ炩`ĉB)
+ exit(1)
+ HORIZON_ROOT = $(CTRSDK_ROOT)
+ export
+
+if $(not $(HORIZON_ROOT))
+ eprintln($"$$CTRSDK_ROOT `Ă܂")
+ exit(1)
+
+include $(HORIZON_ROOT)/build/omake/commondefs
+
+DefineCommandVars()
+
+.PHONY: all build clean clobber
+.PHONY: run run-scripts
+
+#
+# OMakefile ̓ǂݍ
+#
+.SUBDIRS: .
+
diff --git a/trunk/CardSaveData/ToSD/Imp/Imp.rsf b/trunk/CardSaveData/ToSD/Imp/Imp.rsf
new file mode 100644
index 0000000..158e306
--- /dev/null
+++ b/trunk/CardSaveData/ToSD/Imp/Imp.rsf
@@ -0,0 +1,19 @@
+BasicInfo:
+ Title : $(TITLE)
+ BackupMemoryType: None
+ Logo : Nintendo
+# Companycode: "00"
+ ProductCode : "CTR-P-23BA"
+# MediaSize: 2GB
+
+AccessControlInfo:
+ FileSystemAccess:
+ - Debug
+
+Rom:
+ HostRoot : $(ROMFS_ROOT)
+
+TitleInfo:
+# UniqueId: 0xffff6
+ UniqueId: 0xf8031
+ Version: 0
diff --git a/trunk/CardSaveData/ToSD/Imp/OMakefile b/trunk/CardSaveData/ToSD/Imp/OMakefile
new file mode 100644
index 0000000..5b4a970
--- /dev/null
+++ b/trunk/CardSaveData/ToSD/Imp/OMakefile
@@ -0,0 +1,71 @@
+#!/usr/bin/env omake
+#----------------------------------------------------------------------------
+# Project: Horizon
+# File: OMakefile
+#
+# Copyright (C)2009 Nintendo Co., Ltd. All rights reserved.
+#
+# These coded instructions, statements, and computer programs contain
+# proprietary information of Nintendo of America Inc. and/or Nintendo
+# Company Ltd., and are protected by Federal copyright law. They may
+# not be disclosed to third parties or copied or duplicated in any form,
+# in whole or in part, without the prior written consent of Nintendo.
+#
+# $Rev: 31765 $
+#----------------------------------------------------------------------------
+SUPPORTED_TARGETS = CTR-*.Process.MPCore.*
+
+#demoライブラリ位置指定
+#SAMPLED_DEMOS_COMMON_INCLUDE_DIR = $(dir ../common/include)
+#SAMPLED_DEMOS_COMMON_INCLUDE_DIR = $(dir ../CTR_SDK/sampledemos/common/include)
+#INCLUDES += $(SAMPLED_DEMOS_COMMON_INCLUDE_DIR)
+
+
+SOURCES[] =
+ ./source/main.cpp
+ ./source/test_data.cpp
+ ../../common/shfnt.cpp
+ ../../common/sleep.cpp
+ ../../common/common.cpp
+
+OBJECTS[] =
+ $`(ObjectFromBinary $(TARGET), ./Imp_list/key/Public_Key.der)
+
+TARGET_PROGRAM = CtrSaveToSd_imp
+
+TITLE = imp
+
+LIBS += lib_demo libnn_am
+LIBS += libnn_ps
+
+
+IMPORTEE_CIA = importee.cia
+
+SRC_IMPORTEE_PATH = ../body/images/$(BUILD_TARGET_DIR)/$(BUILD_TYPE_DIR)/CtrSaveToSd.cia
+#とりあえず、マスタリング時は直おき、配置時に改名
+#SRC_IMPORTEE_PATH = CtrSaveToSd_master.cia
+
+# ビルドタイプ別に romfs を作る
+#ROMFS_ROOT = $`(TARGET.getObjectDirectory)/romfsroot
+ROMFS_ROOT = ./romfiles
+DEST_IMPORTEE_PATH = $(ROMFS_ROOT)/$(IMPORTEE_CIA)
+foreach(TARGET, $(BUILDER.getTargets $(SUPPORTED_TARGETS)))
+ $(DEST_IMPORTEE_PATH): $(SRC_IMPORTEE_PATH) $(makeDirectory $(ROMFS_ROOT))
+ cp $< $@
+ROMFS_DEPENDENCIES = $(DEST_IMPORTEE_PATH)
+
+# プログラムから参照するためのROMFSのパスとプログラムIDを定義する
+ROMFS_IMPORTEE_PATH = L\"rom:/$(IMPORTEE_CIA)\"
+CCFLAGS += -DROMFS_IMPORTEE_PATH=$(ROMFS_IMPORTEE_PATH)
+
+ROM_SPEC_FILE = Imp.rsf
+DESCRIPTOR = $(CTRSDK_ROOT)/resources/specfiles/repairtool.desc
+
+# バナー、アイコン
+#CTR_BANNER_SPEC = banner.bsf
+CTR_BANNER_SPEC = banner_null_icon.bsf
+
+include $(ROOT_OMAKE)/modulerules
+
+build: $(DEFAULT_TARGETS)
+
\ No newline at end of file
diff --git a/trunk/CardSaveData/ToSD/Imp/banner/BannerModel_imp/COMMON/COMMON.cmdl b/trunk/CardSaveData/ToSD/Imp/banner/BannerModel_imp/COMMON/COMMON.cmdl
new file mode 100644
index 0000000..3e85377
--- /dev/null
+++ b/trunk/CardSaveData/ToSD/Imp/banner/BannerModel_imp/COMMON/COMMON.cmdl
@@ -0,0 +1,274 @@
+
+
+
+
+
+ MetaData
+
+
+
+
+
+
+
+
+ ContentSummaries
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ModelDccToolInfo
+
+
+ OptimizationLogs
+
+
+
+
+
+
+
+
+
+
+
+ Skeleton.Bones["*"].AnimatedTransform
+
+
+
+
+
+
+ IsVisible
+
+
+ Meshes["*"].IsVisible
+
+
+ IsBranchVisible
+
+
+
+
+
+
+ Materials["*"].MaterialColor.Emission
+
+
+ Materials["*"].MaterialColor.Ambient
+
+
+ Materials["*"].MaterialColor.Diffuse
+
+
+ Materials["*"].MaterialColor.Specular0
+
+
+ Materials["*"].MaterialColor.Specular1
+
+
+ Materials["*"].MaterialColor.Constant0
+
+
+ Materials["*"].MaterialColor.Constant1
+
+
+ Materials["*"].MaterialColor.Constant2
+
+
+ Materials["*"].MaterialColor.Constant3
+
+
+ Materials["*"].MaterialColor.Constant4
+
+
+ Materials["*"].MaterialColor.Constant5
+
+
+ Materials["*"].TextureMappers["*"].Sampler.BorderColor
+
+
+ Materials["*"].TextureMappers["*"].Texture
+
+
+ Materials["*"].FragmentOperation.BlendOperation.BlendColor
+
+
+ Materials["*"].TextureCoordinators["*"].Scale
+
+
+ Materials["*"].TextureCoordinators["*"].Rotate
+
+
+ Materials["*"].TextureCoordinators["*"].Translate
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+ 0 1 2 1 3 2
+
+
+
+
+
+
+
+-12 -6 6.5
+12 -6 6.5
+-12 6 6.5
+12 6 6.5
+
+ 0 0 1
+
+0 0
+1 0
+0 1
+1 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Textures["banner_imp"]@file:Textures/banner_imp.ctex
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ DccToolSourceNode
+
+ BONE_00
+
+
+
+ Shapes[0]
+ Materials["MT_00"]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/trunk/CardSaveData/ToSD/Imp/banner/BannerModel_imp/COMMON/Textures/banner_imp.ctex b/trunk/CardSaveData/ToSD/Imp/banner/BannerModel_imp/COMMON/Textures/banner_imp.ctex
new file mode 100644
index 0000000..83e936f
--- /dev/null
+++ b/trunk/CardSaveData/ToSD/Imp/banner/BannerModel_imp/COMMON/Textures/banner_imp.ctex
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+ F5QXlBeUF5QXlBeUF5QXlBeUF5QXlBeUF5QXlBeUF5QXlBeUF5QXlBeUF5QXlBeUF5QXlBeUF5QXlBeUF5QXlBeUF5QXlBeUF5QXlBeUF5QXlBeUF5QXlBeUF5QXlBeUF5QXlBeUF5QXlBeUF5QXlBeUF5QXlBeUF5QnlBeUJ5QXlBeUF5QXlBeUJ5QnlCeUF5QnlBeUJ5QnlCeUJ5QnlCeUJ5QnlCeUJ5UnlSeVJ5UnlCeVJ5QnlSeVJ6UnlSelJ5QnlCeUJ5QnlCeUJ5QnlCeUJ5QnlCeUJ5QnlSeUJ5UnlCeVJ5UnlSeVJ6UnpSelJ5UnpSeVJ6UnpSelJ6UnpSelJ6UnpSelJ6UnpSelJ6UnpSelJ6UnpSelN6UnpTelJ6U3pTelN6U3pTelN6U3pTelN6U3pTelN6U3pjelN6YnpSelJ6UnpSelN6U3pTelJ6U3pSelN6U3pTelN6U3pTelN6U3pTelN6Y3pjemN6Y3pTemN6U3pjemN6Y3pjemN6Y3pjemN6Y3pjemN6ZHpjemN6Y3pjemN6ZHpjemR7ZHpke2R7ZHtke2R7ZHtke2R7ZHtke2R7ZHtke3R7ZHtzemN6Y3pjemR6ZHtkemR7Y3pkemN6ZHpke2R7ZHtke2R7ZHtke2R7ZHtke3R7dHt0e2R7ZHtke3R7dHt0e3R7dHt0e3R7dHt0e3V7dXt1e3R7dHt0e3R7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V8hXx1fIR7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1fIZ8hXyGfIV7dXyFe3V8hXyGfIZ8hnyFfIZ8hXyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfJZ8h3yWfIZ8hnyGfIZ8l3yXfJd8lnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyHfJd8l3yXfJd8lnyHfJd8l3yXfJd8l3yXfZd8l3yXfJd8l3yXfZd9l32XfJd9l3yXfZd9l32XfZd9l32XfZd9l32YfZh9qH2ofad9mH2XfZh9qH2ofah9qH2nfJd9l32XfZd9l32XfZd9l32XfZd9l32XfZh9l32Yfah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2pfah9qX6ofal+qX2pfql+uX65frl+uX6pfrl+qX65frl+uX65frh9qH2ofah9qX2pfql9qX6ofah9qH2pfal+qX65fql+uX65frl+uX65frl+uX65frl+uX65frl+uX65frl+uX65frl+uX65frl+uX65frp+uX65frl+uX65frp+un66frp+un66frp+un66fsp+yn7Kfrp+un66frp+yn7Kfsp+yX66frl+un66frp+un66frl+un66frp+un66frp+un7Kfrp+yn66fsp+yn7Kfsp+yn7Kfsp+yn7Kfsp/yn7Kf8p+yn7Kfsp+yn/Kf8p/y3/Kfsp/yn/Kf8p/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Kf8p/yn/Lf8t/y3/Lf8t/yn/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/23/Lf8t/y3/bf9t/23/bf9t/y3/bf8t/23/bf9t/23/bf9t/23/bf9t/3H/bf9x/23/bf9t/23/cf9x/3H/cf9t/23/bf9t/23/bf9t/23/bf9t/23/bf9t/23/bf9t/23/cf9t/3H/cf9x/3H/cf9t/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/23/cf9x/3H/cf9x/3H/cf9t/3H/cf9x/3H/bf9t/23/bf9t/23/bf9t/23/bf8t/y3/Lf9t/23/bf8t/y3/Lf8t/zH/bf9x/23/bf9t/23/bf9t/23/bf9t/23/bf8t/23/Lf9t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y37Lf8t/y3/Lf8t+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lf8t/y3/Lfst+y37Lfst+y37Lfst/y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Kfsp+yn7Kfsp+u37Kfsp+yn7Kfsp+un7Kfrt+y37Lfst+y37Lfst+yn7Lfst+y37Lfst+yn7Kfsp+yn7Kfsp+yn7Kfrp+un66frp+yn66fsp+un66frp+un66frp+un66frp+un66frp+un66frp+un66frp+un66frp+un66frp9un26fbp9un26frp9un26fbp9un26fbp9un66frp+un66frp9un66fbp+un66frp+un66fbp9un26fbp9un26fbp9un26fbp9un26fbp9un26fbp9un25fbp9un26fbp9un25fbp9uX26fbp9un26fbl9uX25fbl9uX25fal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2qfbl9uX25fbl9uX2pfbl9qX25fbl9uX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfKl9qX2pfal9qX2pfKl9qXypfKl8qXypfKh8qHyofKh8qXyofKh8qHyofKh8mHyofJl9qX2pfal9qXypfKl8qHypfal8qX2pfKl8qHypfKh8qHyofKh8qHyofKh8mHyYfJh8qHyYfKh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8l3yYfJd8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8l3yXfJd7mHyYfJh8l3yXfJd7l3uXe4d8l3uXfJd7l3uXe4d7l3uHe5d7l3uXe5d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe5d7h3uXe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4Z7h3uHe4d7h3uGe4Z7hnuGe4d7hnuHe4Z7hnuGe4Z7hnuGe4Z7hnuGe3Z6dnp2enZ6dnt2enZ7dnp2enZ6dnp2end7hnuGe4Z7hnuGe3Z7hnp2e4Z7hnuGe4Z7dnp2e3Z6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp1enZ6dXp1enV6dXp1enV6dXplenV6dXp1enV6dXplenV6Znp2enZ6dnp2enV6dXp1enZ6dnp2enV6dXp1enV6dXp1enV6dXp1emV6ZXplemV6ZXp1emV6ZXplemV6ZXplemV6ZXplemV6ZXpleWV5ZXllemV5ZXplemV5ZXlleWV5ZXlleWV5ZXlleWR5ZHlkeWV5ZXlleWV5ZHlkeWR5ZHllemV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlleWV5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5VHlkeWR5ZHlkeWR5VHlUeVR5ZHlkeWR5ZHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR4VHlUeVR5VHlUeVR5VHlUeFR5ZHlUeWR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR4VHhTeFR5VHhUeVR4VHhTeFR4U3hUeFR4VHhTeFN4U3hTeFN4VHhTeFR4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeEN4Q3hDeFN4U3hTeEN4Q3hDeEN4Q3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hDeFN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hCeEJ4QnhCeEN4QnhDeEJ4QnhCd0J4QndDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEJ4Q3hCeEJ4QnhCeEJ3QndCd0J3QndCeEJ3QndCd0J3QndCd0J3QndCd0J3QndCd0J3QndCd0J3QndCd0J3QndCd0J3Qncyd0J3MndCdzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3QndCd0J3QndCdzJ3Qncyd0J3QndCdzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MXcxdzF3MXcydzJ3MncxdzF3MXcxdzF3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncxdzJ3MXcydzF3MncxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF2MXcxdjF3MXcxdzF2MXcxdjF2MXYxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF2MXYxdjF2MXYxdjF2MXcxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdiF2MXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2MXYxdjF2IXYhdiF2IXYhdjF2IXYxdjF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYheUF5QXlBeUF5QXlBeUF5QXlBeUF5QXlBeUF5QXlBeUF5QXlBeUF5QXlCeUJ5QnlBeUJ5QXlCeUJ5QnlCeUJ5QXlBeUF5QXlBeUF5QXlBeUF5QXlBeUF5QXlCeUF5QnlBeUJ5QnlCeUJ5QnlCeUJ5QnlCeUJ5QnlCeUJ5QnlCeVJ5QnlCeUJ5QnlSeVJ5UnlSeUJ5UnlCeVJ5UnlSeVJ6UnpSelJ6UnpSelJ6UnpSelJ6UnpSelJ6UnpSelJ6U3pSeUJ5UnlSeVJ6UnpSelJ6UnlSelJ5UnpSelJ6UnpSelJ6UnpSelJ6U3pTelN6U3pSelJ6UnpTelN6U3pTelN6U3pTelN6U3pTelN6U3pTelN6U3pTelN6U3pTemN6U3pjemN6Y3pjemN6Y3pjemN6Y3pjemN6Y3pjemR6Y3pkemN6U3pTelN6U3pTemN6Y3pjelN6U3pTemN6Y3pjemN6Y3pjemN6Y3pkemR6ZHpke2N6ZHpjemR6ZHtke2R7ZHtkemR6ZHpke2R7ZHtke2R7ZHpke2R7ZHtke2R7ZHtke3R7ZHt0e3R7dHt1e3R7dXt0e3R7dHt0e3V7dXt1e3V7dHtke2R7ZHtke2R7dHt0e3R7ZHtke2R7dHt0e3R7dHt0e3V7dHt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXyFe3V8hXyGfIV8hnyGfIZ8hnyGfIV8hnyGfIZ8hnyGfIZ8hnyFe3V7dXt1e3V8hXyFfIZ8hXt1fIV7dXyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyHfJZ8hnyGfIZ8hnyHfJd8l3yXfJd8l3yXfJd9l32XfZd9l3yXfZd8l32XfZd9l32XfZZ8hnyGfId8l3yXfJd8l3yWfJd8lnyXfJd8l32XfJd9l3yXfZd9l32XfZd9l32XfZd9l32XfZd9l32YfZd9mH2nfZd9l32YfZh9mH2ofah9p32YfZd9mH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qX2ofal9qH2Yfah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qX6pfal+qH2ofah9qX2pfql+uX6pfrh9qX6pfal+qX65frl+uX65fql+uX6pfrl+uX65frl+uX65frl+uX65frl+uX66frl+uX65frl+uX66frp+un65frl+uX65frl+uX65frl+uX65frl+uX65frl+uX65frl+uX65frp+un66frp+un65frp+un66frp+un66frp+un66frp+un66frp+yn66fsp+un66frp+un7Kfsp+yn7Kfsp+yn7Kfsp/yn/Kf8t/yn7Kf8p+yn/Kf8t/yn/Lf8p+un7Kfsp+yn7Kfsp+yn/Kfsp+yn7Kfsp+yn/Kfsp/yn/Kf8p/y3/Lf8t/y3/Lf8p/y3/Kf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/bf9t/23/bf8t/23/Lf9t/23/bf9t/23/Lf8t/y3/Lf8t/y3/Lf9t/y3/Lf8t/y3/Lf9t/y3/bf9t/23/bf9t/23/bf9t/23/bf9t/23/bf9t/23/bf9t/23/bf9t/23/cf9t/3H/bf9t/23/bf9t/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/bf9x/23/cf9x/3H/cf9x/23/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9t/23/bf9x/3H/cf9x/3H/bf9t/23/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/23/cf9t/23/bf9t/23/bf9t/23/bf9t/23/Lf9t/y3/bf9t/23/bf9t/y3/Lf8t/23/Lf9t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y37Lfst/23/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lfst+y37Lfst/y37Lf8t+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfsp+yn7Kfst+y37Lfsp+yn7Kfsp+yn67fsp+yn7Kfsp+yn66frp+un66frp+un66frp+un66frp+un66frp+un66frp+un66fsp+yn7Kfsp+un66frp+un7Kfrp+yn66frp+un66frp+un66frp+un66frp+un26frp+un66frp+un26fbp9un66frp+un26fbp9un26fbp+un26frp9un26fbp9un26fbp9un26fbp9uX25fbl9un26fbp9uX25fbl9uX25fap9un26fbp9un26fbp9un26fbp9un26fbp9un26fbl9un25fbp9uX25fbl9qX25fal9uX25fbl9qX2pfal9qX2pfbl9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qXypfal8qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal8qXypfKl8qX2pfKl9qXypfKh8qXyofKl8qXypfKl8qHyofKh8qHypfKh8qXyofKh8qHyofKh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfKh8qHyofKh8qHyYfJh8mHyofJh8qHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8l3yYfJd7l3yXe5d7l3uHe5d7h3yXe5d7l3uHe4d7h3uHe4h8mHyYfJh8mHyXe5d8l3uYfJh8mHyXfJd7l3uXe5d7h3uXe4d7l3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7hnuGe4Z7hnuHe4Z7h3uGe4Z7hnuGe4Z7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7hnuHe4Z7hnuGe4Z7hnuGe4Z7dnuGe4Z7hnuGe4Z6dnp2enZ7hnt2e4Z6dnp2enZ6dnp2e3Z6dnt2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dXp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp1enV6dXp2enZ6dnp1enV6dXp1enV6dXp1enV6dXp1enV6dXp1enV6dXp1enV6dXp1emV6dXplemV6ZXplemV6ZXllemV5ZXplemV6ZXpleWV5ZXlleWV6dXp1enV6ZXplemV6ZXplenV6ZXplemV6ZXplemV5ZXpleWV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlleWV5ZHlleWV5ZXlleWV5ZHlleWR5ZXlleWV5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlkeVR5VHlUeWR5ZHlkeVR5VHlUeVR5VXlkeWV5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlUeWR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHhUeVR4VHhUeFR4VHhTeFN4U3hTeFR4U3hUeFN4U3hTeFN4U3hUeVR5VHlUeVR5VHhUeFR4VHlUeVR5VHhUeFN4VHhTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4Q3hTeFN4U3hTeFN4Q3hDeEN4U3hTeFN4U3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4U3hDeFN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4QnhDeEN4Q3hDeEN4QnhCeEJ4Q3hCeEN4QnhCeEJ3QndCd0J4QndCd0J3QndCd0J3QndCd0J3QndCd0J3QndCd0J3QnhCeEJ4QnhCeEJ3QndCd0J4QndCeEJ3QndCd0J3QndCd0J3QndCd0J3Qncyd0J3MndCd0J3QndCdzJ3MncydzJ3Qncyd0J3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzF3MncydzJ3MncydzF3MXcxdzJ3MncydzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzJ3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdjF2MXcxdzF3MXcxdjF2MXcxdjF3MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYhdjF2IXcxdjF3MXYxdjF2MXYxdjF3MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2IXYxdiF2MXYxdjF2MXYxdiF2IXYhdiF2MXYhdjF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdjF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXlBeUF5QXlBeUJ5QnlCeUF5QXlBeUJ5QnlCeUJ5QnlCeUJ5QnlCeUJ5UnlSeVJ5UnlCeUJ5QnlSeVJ5UnlSelF5QnlCeUJ5QnlCeUJ5QnlCeUJ5QnlCeUJ5QnlCeUJ5UnlCeVJ5UnlSelJ6UnpSelJ5UnlSeVJ6UnpSelJ6UnpSelJ6UnpSelJ6UnpSelJ6UnpSelJ6UnpSelJ6UnpTelJ6U3pTelN6U3pTelN6U3pTelN6U3pTelN6U3pTelN6YnpSelJ6UnpTelN6U3pTelJ6UnpSelN6U3pTelN6U3pTelN6U3pTelN6Y3pjemN6Y3pTelN6U3pjemN6Y3pjemN6U3pjemN6Y3pjemN6Y3pjemN6Y3pjemN6Y3pjemR6ZHpke2R6ZHtke2R7ZHtke2R7ZHtke2R7ZHtke2R7ZHtzemN6Y3pjemR6ZHpkemR6Y3pjemN6ZHpkemR7ZHpke2R7ZHtke2R7ZHtke3R7ZHt0e2R7ZHtke3R7dHt0e3R7dHtke3R7ZHt0e3V7dHt1e3R7dHt0e3R7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V8hXt1fIR7dXt0e3V7dXt1e3V7dXt0e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1fIV8hXyGfIV7dXx1e3V8hXyGfIZ8hnyFfIV8hXyGfIZ8hnyGfIZ8hXyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8h3yWfIZ8hnyGfIZ8l3yXfJd8lnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfJd8l3yXfJd8lnyHfJZ8l3yXfJd8l3yXfZd8l3yXfJd8l32XfZd9l32XfJd8l3yXfZd9l32XfZd9l32XfZd9l32YfZh9qH2ofad9mH2XfZh9qH2ofah9qH2nfJd9l32XfZd9l32XfZd9l32XfZd9l32XfZh9l32Yfah9mH2ofZh9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qX2ofal+qX2pfql+uX65frl+uX2pfql+qX65frl+uX65frh9qH2ofah9qH2pfql9qX6ofah9qH2pfal9qX6pfql+uX6pfrl+uX65frl+uX65frl+uX65frl+uX65frl+uX65frl+uX65frl+uX65frp+uX65frl+uX65frp+un66frp+un66frp+un66fsp+un7Kfrp+un66frp+yn7Kfsp+yX65frl+un66frp+un66frl+un65frp+un66frp+un66frp+yn7Kfsp+yn7Kfsp+yn7Kfsp+yn7Kfsp+yn7Kf8p+yn7Kfsp+yn/Kf8p/y3/Kfsp/yn7Kf8p/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Kf8p/yn/Lf8t/y3/Lf8t/yn/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/bf8t/23/Lf8t/y3/Lf9t/23/bf9t/y3/bf8t/23/bf9t/23/bf9t/23/bf9t/3H/bf9t/23/bf9t/23/bf9x/3H/cf9t/y3/bf9t/23/bf9t/23/bf9t/23/bf9t/23/bf9t/23/bf9t/3H/cf9x/3H/cf9t/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/23/cf9x/3H/cf9x/3H/bf9t/23/bf9t/23/bf9t/23/bf8t/y3/Lf9t/23/bf9t/23/Lf8t/zH/cf9x/3H/bf9t/23/bf9x/23/bf9t/23/bf9t/23/bf9t/y3/bf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lf8t+y3/Lfst+y37Lfst+y3/Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Kfsp+yn7Kfsp+u37Kfst+yn7Kfsp+un7Kfrt+y37Lfst+y37Lfst+yn7Lfst+y37Lfst+yn7Kfsp+yn7Kfsp+yn66frp+un66frp+yn66fsp+un66frp+un66frp+un66frp+un66frp+un66frp+un66frp+un66frp+un66frp9un26fbp9un26frp9un26fbp9un26fbp9un66frp+un66frp+un66fbp+un66frp+un66fbp+un26fbp9un26fbp9un26fbp9un26fbp9un26fbp9un26fbp9un26fbp9un25fbp9uX26fbp9un25fbl9uX25fbl9uX25fal9uX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2qfbl9un25fbl9uX2pfbl9qX25fbl9uX25fal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfKl9qXypfKl8qXypfKh8qHyofKh8qXyofKl8qHyofKh8mHyofJl9qX2pfal9qX2pfKl8qXypfal8qX2pfKl8qHypfKh8qXyofKh8qHyofKh8mHyYfJh8qHyYfKh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJd8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8l3yXfJd7mHyYfJh8mHyXfJd7l3uXe5h8l3yXfJd7l3uXe4d7l3uHfJd7l3uXe5d7l3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe5d7l3uXe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4Z7hnuGe4d7h3uHe4Z7hnuGe4Z7hnuGe4Z7dnuGe3Z6dnp2enZ6dnuGenZ7dnp2enZ6dnp2end7hnuHe4Z7hnuGe3Z7hnt2e4Z7hnuGe4Z7hnp2e3Z6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp1enZ6dXp1enV6dXp1enV6dXp1enV6dXp1enV6dXplenV6Znp2enZ6dnp2enV6dXp1enZ6dnp2enV6dXp1enV6dXp1enV6dXp1emV6dXplemV6ZXp1emV6dXplemV6ZXplemV6ZXplemV6ZXpleWV5ZXllemV6ZXplemV5ZXlleWV5ZXlleWV5ZXlleWR5ZXlkeWV5ZXlleWV5ZHlkeWR5ZHllemV5ZXpleWV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlkeWV5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5VHlkeVR5ZHlkeWR5ZHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR4VHlUeFR5ZHlUeWR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR4VHhUeFR5VHlUeVR5VHhTeFR4U3hUeVR4VHhUeFN4U3hTeFN4VHhTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeEN4U3hDeFN4U3hTeEN4Q3hDeEN4Q3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4Q3hTeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEJ4QnhCeEN4QnhDeEJ4QnhCeEJ4QndDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hCeEJ4QnhCeEJ3QndCd0J3QndCeEJ3QnhCd0J3QndCd0J3QnhCd0J3QndCd0J3QndCd0J3QndCd0J3QndCd0J3QndCd0J3MndCdzJ3MncydzJ3MndCdzJ3MncydzJ3MncydzJ3QndCd0J3QndCdzJ3Qncyd0J3QndCd0J3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MXcxdzJ3MXcydzJ3MncydzF3MXcxdzF3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MXcydzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF2MXcxdjF3MXcxdzF3MXcxdjF2MXYxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdjF3MXYxdjF2MXYxdzF3MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYhdiF2IXYxdjF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2MXYxdjF2MXYxdiF2IXYxdjF2MXYxdiF2IXYhdjF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2MXYhdjJ5QnlCeUJ5QnlCeVJ5UnlSeUJ5QnlCeUJ5UnlSeVJ6UnlSelJ6UnpSelJ6UnpSelJ6UnpSelJ6UnpSelJ6U3pSeUJ5UnlSeVJ5UnpSelJ6UnlSeVJ5UnpSelJ6UnpSelJ6UnpSelJ6UnpTelN6U3pSelJ6UnpSelN6U3pTelN6UnpTelN6U3pTelN6U3pTelN6U3pTelN6U3pTelN6U3pjelN6Y3pjemN6Y3pjemN6Y3pjemN6Y3pjemR6Y3pkemN6U3pTelN6U3pTemN6U3pjelN6U3pTelN6Y3pjemN6Y3pjemN6Y3pkemR6ZHpkemN6ZHpjemR6ZHpke2R7ZHtjemR7ZHpke2R7ZHtke2R7ZHpke2R7ZHtke2R7ZHtke2R7ZHt0e2R7dHt1e3R7dXt0e3R7dHt0e3V7dXt1e3V7dHtke2R7ZHtke2R7dHtke3R7ZHtke2R7ZHt0e3R7dHt0e3R7dHt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXx1e3V8hXuFfIV8hnyGfIZ8hnyGfIV8hnyGfIZ8hnyGfIZ8hnyFe3V7dXt1e3V8dXyFfIV8hXt1e3V7dXyFfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyHfJZ8hnyGfIZ8hnyHfJZ8l3yXfJd8l3yXfJd8l32XfZd9l3yXfJd8l32XfZd9l32XfZZ8hnyGfId8l3yXfJd8l3yWfId8lnyHfJd8l3yXfJd8l3yXfZd8l32XfZd9l32XfZd9l32XfZd9l32YfZd9mH2XfZd9l32XfZh9mH2ofZh9p32YfZd9mH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2Yfah9mH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qX2ofal+qH2ofah9qX2pfql+qX6pfrh9qX2ofal+qX6pfrl+uX65fql+qX6pfrl+uX65frl+uX65frl+uX65frl+uX66frl+uX65frl+uX66frp+un65fql+uX6pfrl+uX65frl+uX65frl+uX65frl+uX65frl+uX65frp+un66frp+un65frp+uX66frp+un66frp+un66frp+un66frp+yn66fsp+un66frp+un7Kfsp+yn7Kfsp+yn7Kf8p/yn/Kf8t/yn7Kfsp+yn/Kf8t/yn/Lf8p+un66frp+yn7Kfsp+yn7Kfsp+yn7Kfsp+yn7Kfsp/yn/Kf8p/yn/Lf8t/y3/Lf8p/y3/Kf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf9t/23/bf8t/y3/Lf9t/23/bf9t/23/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/bf8t/23/bf9t/23/bf9t/23/bf9t/23/bf9t/23/bf9t/23/bf9t/23/cf9t/3H/bf9t/23/bf9t/3H/bf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/bf9t/23/cf9x/3H/cf9x/3H/cf9t/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9t/23/cf9x/3H/cf9x/23/bf9x/23/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/23/bf9x/23/bf9t/23/bf9t/23/bf9t/23/bf9t/y3/bf9t/23/bf9t/y3/Lf8t/23/bf9t/23/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t+y37Lfst/23/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y37Lfst+y37Lfst/y37Lf8t+y37Lfst+y37Lf8t+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfsp+y37Kfst+y37Lfst+y37Kfsp+yn7Lfsp+y37Kfsp+yn66fsp+un7Kfrp+un66frp+un66frp+un66frp+un66frp+un66fsp+yn7Kfsp+un66frp+un7Kfsp+yn66frp+un66frp+un66frp+un66frp+un66frp+un66frp+un66fbp9un66frp+un26fbp9un26fbp+un26frp9un26fbp9un26fbp9un26fbp9uX26fbl9un26fbp9uX25fbl9uX25fbp9un26fbp9un26fbp9un26fbp9un26fbp9un26fbp9un25fbp9uX25fbl9qX25fap9uX25fbl9uX2pfal9qX2pfbl9uX25fal9qX2pfal9qX25fal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qXypfal8qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal8qXypfKl8qX2pfal9qX2pfKl8qXyofKl8qXypfKl8qHyofKh8qHypfKl8qXyofKh8qHyofKh8mHyofJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyZfKh8qHyofKh8qHyYfKh8mHyofKh8qHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8l3yYfJd8l3yXe5d7l3uXe5d7h3yXe5d7l3uXe4d7h3uHe4h8mHyYfJh8mHyXfJd8l3uYfJh8mHyYfJd8l3uXe5d7l3uXe4d7l3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uGe4Z7hnuHe4d7h3uHe4Z7hnuGe4Z7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7hnuHe4Z7h3uGe4Z7hnuGe4Z7dnuGe4Z7hnuGe4Z6dnt2enZ7hnuGe4Z6dnp2enZ6dnp2e4Z7dnt2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dXp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp1enV6dXp2enZ6dnp2enV6dXp1enV6dnp1enZ6dXp1enV6dXp1enV6dXp1enV6dXp1emV6dXplemV6ZXplemV6ZXpleWV5ZXplemV6ZXlleWV5ZXlleWV6dXp1enV6dXplemV6ZXplenV6dXp1emV6ZXplemV6ZXplemV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlleWV5ZHlleWR5ZXlleWV5ZXlkeWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlUeWR5ZHlkeWR5VHlUeVR5VXlkeWV5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5VHlkeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR4VHlUeFR5VHhTeFN4U3hTeFR4U3hTeFN4U3hTeFN4U3hUeVR5VHlUeVR5VHhUeFR4VHlUeVR5VHhUeFR4VHhTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4Q3hTeEN4U3hTeFN4U3hTeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4U3hDeFN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4QnhDeEN4Q3hDeEN4QnhCeEJ4Q3hDeEN4QnhCeEJ4QnhCd0J3QndCd0J3QndCd0J3QndCd0J3QndCd0J3QndCd0J3Q3hCeEJ4QnhCd0J3QndCd0J4QndCeEJ4QndCd0J3QndCd0J3QndCd0J3Qncyd0J3MndCd0J3QndCd0J3MncydzJ3QndCd0J3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzF3MncxdzJ3MncydzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzJ3MncxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdjF3MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYhdiF2IXcxdzF3MXYxdzF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2IXYxdjF2IXYxdiF2MXYxdiF2IXYhdiF2IXYxdjF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2MXYxdjF2MXYhdjF2IXYxdjF2MXYxdjF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdzF2MXcyeVJ6UnpSelJ6UnpSelJ6UnpSelJ6UnpSelJ6UnpTelJ6U3pTelN6U3pTelN6U3pTelN6U3pTelN6U3pTelN6YnpSelJ6UnpSelN6UnpTelJ6UnpSelJ6U3pTelN6U3pTelN6U3pTelN6U3pjelN6Y3pTelN6U3pTemN6Y3pjemN6U3pjemN6Y3pjemN6Y3pjemN6Y3pjemN6Y3pjemR6ZHpkemR6ZHtke2R7ZHtke2R6ZHtke2R7ZHtke2R7ZHtjemN6Y3pjemN6ZHpkemR7Y3pjemN6ZHpkemR7ZHtke2R7ZHtke2R7ZHtke3R7ZHt0e2R7ZHtke2R7dHt0e3R7dHtke3R7ZHt0e3R7dHt1e3R7dHt0e3R7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V8dXt1fIR7dHt0e3V7dXt1e3V7dXt0e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1fHV8hXyGfIV7dXt1e3V8hXyGfIZ8hnyFfHV8hXyFfIZ8hnyGfIZ8hXyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyWfIZ8hnyGfIZ8h3yWfId8lnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfJd8l3yXfJd8lnyHfJZ8h3yXfJd8l3yXfJd8l3yXfJd8l3yXfZd9l32XfJd8l3yXfZd9l32XfZd9l32XfZd9l32YfZh9qH2Yfad9mH2XfZh9mH2ofah9qH2nfJd9l32XfZd9l32XfZd9l32XfZd9l32XfZh9l32YfZh9mH2ofZh9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofal9qX2pfql+qX65frl+uX2pfql+qX65frl+uX65frh9qH2ofah9qH2pfah9qX6ofah9qH2ofal9qX6pfql+uX6pfrl+uX65frl+uX65frl+uX65frl+uX65frl+uX65frl+uX65frl+uX65frl+uX65frl+uX65frp+uX66frp+un66frp+un66fsp+un7Kfrp+un66frp+un7Kfsp+yX65frl+un66frp+un66frl+un65frp+un66frp+un66frp+yn66fsp+yn7Kfsp+yn66fsp+yn7Kfsp/yn7Kf8p+yn7Kfsp+yn/Kf8p/yn/Kfsp+yn7Kf8p/y3/Kf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Kf8p/yn/Kf8t/y3/Lf8t/yn/Lf8p/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/23/Lf8t/y3/Lf8t/23/bf9t/y3/Lf8t/23/bf9t/23/bf9t/23/bf9t/23/bf9x/23/bf9t/23/bf9x/3H/cf9t/y3/bf8t/23/bf9t/23/bf9t/23/bf9t/23/bf9t/23/bf9t/3H/cf9x/3H/cf9t/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/23/cf9t/3H/cf9x/3H/bf9t/3H/bf9t/23/bf9t/23/bf8t/23/Lf9t/23/bf9t/23/Lf8t/zH/cf9x/23/bf9t/23/bf9t/23/bf9t/23/bf9t/23/bf9t/y3/bf9t/y3/Lf8t/y3/bf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y37Lf8t/y3/Lf8t/y3/Lf8t+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lf8t/y3/Lfst+y37Lfst+y3/Lf8t+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Kfsp+yn7Kfsp+y37Lfst+yn7Kfsp+yn7Kfrt+y37Lfst+y37Lfst+y37Lfst+y37Lfst+yn7Lfsp+yn7Kfsp+yn7Kfsp+un66frp+yn66fsp+un66frp+un66frp+un66frp+un66frp+un66frp+un66frp+un66frp+un66frp+un26fbp9un26frp9un26fbp9un26fbp9un66frp+un66frp+un66frp+un66frp+un66fbp9un26fbp9un26fbp9un26fbp9un26fbp9un26fbp9un26fbp9un26fbp9un26fbp9uX26fbp9un26fbl9uX25fbl9uX25fbl9uX2pfal9qX2pfal9uX2pfal9qX2pfal9qX2qfbl9un25fbl9uX2pfbl9qn25fbl9uX25fal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qXypfKl8qXypfKh8qHyofKh8qXypfKl8qHyofKh8qHyofJl9qX2pfal9qX2pfKl8qXypfal8qX2pfKl8qXypfKh8qXyofKh8qHyofKh8mHyYfJh8qHyofKh8qHyYfJh8mHyYfKh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJd8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8l3yYfJd7mHyYfJh8mHyXfJd7l3uXe5h8l3uXfJd7l3uXe5d7l3uHfJd7l3yXe5d7l3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe5d7h3uXe4d7h3uHe4d7h3uXe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4Z7hnuGe4d7h3uHe4Z7hnuGe4Z7hnuGe4Z7hnuGe3Z6dnp2enZ6dnuGe3Z7hnp2enZ6dnp2end7hnuHe4Z7hnuGe4Z7hnuGe4Z7hnuGe4Z7hnt2e3Z6dnt2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dXp1enV6dXp1enV6dXp1enV6dXp1enV6dXp1enV6Znp2enZ6dnp2enV6dnp1enZ6dnp2enZ6dXp1enV6dXp1enV6dXp1enV6dXplemV6ZXp1enV6dXplemV6ZXplemV6dXplemV6ZXpleWV6ZXllemV6ZXplemV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlkeWV5ZXlleWV5ZHlkeWR5ZHllemV5ZXpleWV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlleWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5VHlkeVR5ZHlkeWR5ZHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5ZHlkeWR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR4VHlUeFR5VHlUeVR5VHhTeFR4U3hUeVR4VHhUeFN4U3hTeFN4VHhTeFR4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4Q3hDeFN4U3hTeFN4U3hDeEN4Q3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeEN4Q3hDeEN4Q3hTeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEJ4Q3hCeEN4Q3hDeEJ4QnhCeEJ4QndDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEJ4QnhCeEJ4QnhCd0J3QndCeEJ4QnhCeEJ3QndCd0J3QnhCd0J3QndCd0J3QndCd0J3QndCd0J3QndCd0J3QndCd0J3MndCdzJ3MncydzJ3MndCdzJ3QncydzJ3MncydzJ3QndCd0J3QndCd0J3QndCd0J3QndCd0J3Qncyd0J3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncxdzJ3MXcydzF3MncydzJ3MXcxdzF3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzF3MXcxdzF3MXcxdzF3MncxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXYxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF2MXYxdjF2MXYxdjF2MXcxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdiF2MXYhdjF2MXYxdjF2IXYhdiF2IXYxdiF2IXYhdiF2IXYhdiF2MXYxdjF2MXYxdiF2MXYhdjF2MXYxdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYxdjF2MXYxdiF2MXYhdjF2MXYxdjF2MXYxdjF2MXcxdzF3MXcxdzF2MXcxdzF3MXcydzF3MncxdiF2MXYxdjF2MXYxdjF3MXYxdjF2MXYxdjF3MXYxdzF2MXcxdzF3MncydzJ3MncxdzJ3MXcydzJ3MncydzJ3MnpTelN6U3pTelN6U3pTelN6U3pTelN6U3pTelN6U3pjelN6Y3pTemN6Y3pjemN6Y3pjemN6Y3pjemN6Y3pkemN6U3pTelN6U3pTemN6Y3pjelN6U3pTelN6Y3pjemN6Y3pjemN6Y3pjemR6ZHpke2N6Y3pjemN6ZHpke2R6ZHtjemR6Y3pke2R7ZHtke2R7ZHpke2R7ZHtke2R7ZHtke2R7ZHt0e2R7dHt0e3R7dXt0e2R7dHt0e3R7dXt1e3V7dHtke2R7ZHtke2R7dHtke3R7ZHtke2R7ZHt0e3R7dHt0e3R7dHt1e3V7dXt1e3V7dHt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V8hXt1fIV8hnyGfIZ8hnyGfIV8hnyFfIZ8hnyGfIZ8hnyFe3V7dXt1e3V7dXyFe3V8hXt1e3V7dXyFfIZ8hXyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfJZ8hnyGfIZ8hnyHfJZ8l3yXfJd8l3yXfJd8l32XfZd9l3yXfJd8l32XfZd9l32XfZZ8hnyGfIZ8hnyXfJd8l3yWfIZ8lnyHfJd8l3yXfJd8l3yXfZd9l32XfZd9l32XfZd9l32XfZd9l32XfZd9mH2XfZd9l32XfZd9mH2ofZh9p32XfZd9mH2Yfah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9p32Yfah9mH2ofah9qH2ofah9qH2ofaeKiH2ofaa2VrVYfah9qH2ofah9qX2ofal9qH2ofaa1VrVZfal+qIuJfah9qX2ofal+qX6pfrl+qX65fal+qX6pfrl+uX65frl+uX65frl+uX65frl+uX65frl+uX65frl+uX66frl+un65fql+uX6pfrl+uX65frl+uX65frl9qX65frl+uYynmXl+uX65frl+un66frp+un65frp+trVWtVp+un62tVa1Wn66frp+un66frp+yn66fsp+un66frp+un66fsp+yn7Kfsp+yn7Kfsp+yn/Kf8p/yn7Kfsp+yn/Kf8t/yn/Lf8p+un66frp+yn7Kfsp+yn7Kfrp+x7VXtmp+yn7ImYp+yn7Kf8p+yn/Kf8t/y3/Lf8p/yn/Kfsp+y3/Lf8mamJmKf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf9t/y3/bf8t/y3/Lf8t/23/bf9t/23/Lf8t/y3/Lf8t/y3/Lf8t/y3/ImYiZi3/Lf8mZiZmLf8t/23/bf9t/23/bf9t/23/bf9mZiZqbf9t/23/bf9t/23/bf9t/23/bf9t/23/bf9t/23/bf9t/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/bf9t/23/bf9x/3H/cf9x/23/cf9t/23/cf9x/23/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/ZmZe2bH/cf9x/3H/cf9x/3H/cf9x/3H/Xtme2bH/cf9i2aoysf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9t/3H/cf9x/3H/cf9x/3H/bf9x/23/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9t/23/bf9t/23/cf9t/23/bf9t/23/bf9t/3H/bf9t/23/bf9t/23/Lf8t/23/bf9t/23/bf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t+y3/Lfst/23/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t+y37Lfst/y37Lf8t+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfsp+y37Kfst+y37Lfst+y37Kfsp+yn7Lfsp+y37Kfsp+yn66fsp+yn7Kfrp+un66frp+un66frp+un66frp+un66frp+un67fsp+yn7Kfsp+un66frp+un7Kfsp+yn66frp+un66frp+un66frp+un66frp+un66frp+un66frp+un26frmMqn66frp+un66fbp9un26fbp+un26frp9un26fbp9un26fbp9un26fbp9uX26fbl9un26fbp9un26fbl9uX25fbp9un26fbp9un26fbp9un26fbp9uJh4mHp9un24mHiYen26fbp9uX25fbl9uX25fap9uX24mHl9qX25fal9qX2pfbl9uX25fal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal8qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qXypfal8qX2pfal9qX2pfKl8qXyofKl8qXypfal8qHyofKh8qHypfKl8qXypfKh8qHyofKh8qHyofJh8qHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyZfKh8qHyofKh8qHyYfKh8mHyofKh8qHyofJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJd8mHyXfJd7l3uHe5d7h3yXe5d7l3uXe4d7h3uHe4h8mHyYfJh8mHyXfJh8l3uYfJh8mHyYfJd8l3uXe5d7l3uXe5d7l3uHe4d7h3uHe4d7l3uHe5d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uGe4d7hnuHe4d7h3uHe4Z7hnuGe4Z7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4Z7h3uGe4Z7hnuGe4Z7h3uGe4Z7hnuGe4Z7dnuGe3Z7hnuGe4Z7hnt2enZ6dnp2e4Z7dnuGenZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2e3Z6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp1enZ6dXp2enZ6dollllZ6dXp1llWWVnp1enZ6dXp1enV6dXp1enV6dXp1enV6dXp1enV6dXplemV6ZXplemV6ZXplemV5ZXplemV6ZXplemV5ZXlleWV6dXp1enV6dXp1emV6ZXplenV6dYllemV6ZXpleWV5ZXplemV6ZXlleWV5ZXlleWV5ZXlleWV5ZXlleWWXVZZFeWV5ZXlleWV5ZHlleWR5ZXlleWV5ZXlleWR5ZHlkeWR5ZHlkeWR5ZHlkeVR5ZHlUeWR5ZHlkeWR5VHlUeVR5VXlleWV5ZHlkeWR5ZHlkeWR5ZHlllkWHVHlkeWR5ZHlkeWR5ZHlkeVR5VHlUeVR5VHlkeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeFR5VHhTeFN4U3hTeFR4VHhUeFN4U3hTeFN4U3hUeVR5VHlUeVR5VHhUeVR4VHlUeVR5VHlUeFN4VHhTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4Q3hTeEN4U3hTeFN4U3hTeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4U3hDeFN4Q3hDeEN4Q3hDeFN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4QnhDeEN4Q3hDeEN4QnhCeEJ4Q3hDeEN4Q3hCeEJ4QnhCd0J3QndCd0J3QndCd0J3QndCd0J3QndCd0J3QndCd0J3Q3hCeEN4QnhCeEJ3QndCd0J4QnhCeEJ4QndCd0J3QndCd0J3QndCd0J3Qncyd0J3MndCd0J3QndCd0J3MndCdzJ3QndCd0J3MncydzJ3Mncyd0J3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MXcxdzJ3MncydzF3MncxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzJ3MXcydzF3MXcxdzF3MXcydzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXYxdzF2MXcxdzF3MXcxdjF3MXcxdjF3MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYhdjF2MXcxdzF3MXcxdzF2MXYxdjF3MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYhdiF2IXYxdjF2MXYxdjF2IXYhdiF2MXYhdjF2IXYhdiF2IXYhdjF2IXYxdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYxdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2MXYxdiF2MXYhdiF2IXYxdjF2MXYxdjF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXcxdjF2MXYxdjF3MXcxdzJ3MXYxdzF3MXcxdzJ3MXcydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3QXcxdzF3MXcydzJ3MncydzF3MncxdzJ3MncydzJ3MncydzJ3MncydzJ3QndCd0J3Qncyd0J3MndCd0J3QndCd0N6U3pjelN6Y3pjemN6Y3pjemN6Y3pjemN6Y3pjemR6Y3pkemN6ZHpke2R7ZHtke2R6ZHtkemR7ZHtke2R7ZHtjemN6Y3pjemN6ZHpkemR6Y3pjemN6Y3pkemR7ZHpke2R7ZHtke2R7ZHtke3R7ZHt0e2R7ZHtke2R7ZHt0e3R7dHtke3R7ZHt0e3R7dHt1e3R7ZHt0e3R7dHt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3R7dHt0e3V7dXt1e3V7dXt0e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V8hXt1fIV7dXt1e3V7dXyGfIV8hnyFe3V8hXyFfIZ8hnyGfIZ8hXyGfIV8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8h3yWfId8lnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8l3yXfJd8lnyHfJZ8h3yXfJd8l3yXfJd8l3yXfJd8l3yXfZd8l32XfJd8l3yXfJd9l32XfZd9l32XfZd9l32XfZh9qH2V0zd9l32XfZeLhrVV8SXyNfEnfJd9l3yXfZd9l32XfZd9l32XfZd9l32XfZd9l32YfZd9lqZXfZXTRfEl8SXxJfEnfZXiOH2V8SXxJfEl8SXxJsRF8SXxJfEl8SXxJfEl8SXxJfEl8SXyNfEl4jamVZhl8SXxJfEl8SXxJsRF8SXxJeM18SWXZdM18SXxJfEl8SXxJcVF8SWnZZhkp1SnU6ZF4jSnVeI0pkOlQ7VDtUO1NKZUtUO1Q7VExDS1Q7VDtUO1Q7VDtUO1Q7VDtUSmRKZYjKenZ5h14zXxJfEl8SXxJqZV8jW1RfEl8SXxJfElxEXxJfEl8SXxJfEl8SXxJfEl8jXxJqhl8jXxJfEl8SXxJLVF4jO1RLVEtUWnVKZEplS1RLZEp1SmVKZUplSmVKdUp1XxJMRF8SXxJfEl8SXxJMQ18SXTNfEl8SXxJfEl8SXxJfEl8SXxJfEl8jXxJfEl8TXyNdM1plXxJfEl4jXiOKh5jKbTR6h18jXxJfEl8Sa2ZsVVp2XURfEl8SXxJfEkxDO1Q8QzxDO1RLVDxDO0Q8QyxDPEM8QzxDO0M8QztUS2VdM0tUXTNfEl8SXxJfEktUXTNLZV0zXxJfEl8SXxJfEl8SXxJfEl8SXxJfEl8SXxJfI18Sa1VsRF8jaYdqdl8SXxJfEl8SbTSZqV8SXyNfEl8SXiNfEl8SXxJfEl8SXxJbZV8SS1VaZVtVTERfI18SXiNfEl8SXxJfEl8SXxJfEl8SXxJfEl8SXxJfEl8jXxJfEl8SXxJfEkwzPDM8Q7fst+yo26jbt/23/bjst+x6d5jKa2Z5mJjKqNuIuZjKx/3H/bf9x/3H/cf9x/3H/bfst/2o27fsx/2oysf9mZhbVWqGS1RaZXmYiblqdnmYO0RLVDxDS1RaZnmXWmVph6jKuOyYyqjbt/2ZmLfsqNuIuajbibmo27fst+y37LfsuOxtNHxFXxJfEl8SXxJfEl8SXxJfEl8SXxJfEl8SbFVfEl8SXxJfEl8SXxJfEl8SXiNtNHmYeYdfEl8SbFRfEl8SXxJfEl8SXxJtNF8SXxJ8VV8SqNtsVV8SXxJfE18SanZadl8SXiNbZVtUTERLVF8SXxJfEl8SXxJeI18SXxJtNKjLXxJ8Vbfst+yo26jbXyN6h1xEaoeIuZjKeZiJqLf8t/247Lfsx/3H/bf8t/2o26jbe2ZfI6i6mZhfEl8SW2VadktUS2Vqdmp2WnZrVUxES2VfElxEWnZqh1p2aodfEl8SXxJfEl8SXxJfI18jbTRfI3mYeneJqXqHbFVeI8f9x/3H/cf9x/3H/cf9t/23/bf9XxJtRLf8t/yoy7fst/23/bf9t/23/bf9t/23/bf9t/237G4jt/y3/F8SXyNfEl8SXxJfEm4jmLpfEmtVXyNfEl8SXxJfEl00XxJeI6jbXxKYuV8SXxJfEl8SXxJ5mF8SWnZeI18SXxJfEl8St/y3/Lf8t/y3/Lf8t/y3/Lf8t/yJmLfst/y37LfsbiO37Lfst+y37Lfst+y37Lfst+y37F8SbiO37LfsqMu37HtmqNt6h5jKqNtfEpjKXxJrZomoXERph4moXxJph18SXxJfEl8SXxKKh6jbeod6dl8SXxJfEl8SendeI2mHXxK37Lfst+y37Lfst+y37Lfst+y37Kfse1W37JmpXyNfErfst+y37Lfst+yn7Kfsp+yZqafrXxJfI6frp+t7VafbbURfEl8SXxJfEl8SXxJeI18SXxJfEl8SbER5mGtVXTRfEl8SXxJfEl8Sa1VfEl8jbERfEl8SXxJfEl8SXxJfI6fsp+un66frp+un66frp+un66frp9un26frp+un26fbp+un66frp+un23tmp9ttM6frp+un26fbp9teI6fbXxKYypjKiKiIuZfap9uIyZjKaYd5l1plWXZ4qIi5aZd4qKfbp9uX26fbl9tfEpfaXxKYypfaiLmXypfaXxKXyl8SXxJfEl8SXxJfEl8SXxJfEl8SXxJfEl8SXxJeI18jWXZfEl8jXxJfEmtVl8pfEm1EXyNfElp1XyNfEl8SXxJfEl8SXxJfEl8SXTRKZV0zSlRfEl8SXxJfEl0zO1RdMztDSlRMQztEO0NfEl8SXyJfEjtDO0M7QztDTSNfEk0zXxKXypfKiLmIuZfKl8qHyYfKbER4qF8SanZ4uIi5aJd4qJfKl8qXyofKl8qHyofKh8qHyYfJbERfE3mXeZdfEl8SXxJdM18SXyNZhltUSmVcRF8SXxJfEl8SS0RKZUxDOlRfEl8SXxJfEl8SXxJeI18SXiNeI0pUW1RZhltVXTNfI4fKh8mHyYfJh8mHyYfJh8mHyYfJXxJsRIfJh8l4qIe5h8mHyYfJh8mHyYfJeJdeI4fJh8l4qF0za1VfEl8SXxJfEl8SXxJfEl4jeKhfEmplXxJfEl8SXxJfElwzXxJNM2p2XxJqZV8jXxJfEl8SXxJZdlmGSmRKZV4jXxJeI18SanZrVV8SXxJ3uHe4eJd3uF8SXiNfEl8SeKhop10zWJZ3uHe4d7h3uHe4d7h3uHe4aKdoqFmGXERnqGl2XxJfEl8SXxJfEl8jXxJbVF4jSlRfEktDXxI8MzpTOkMrQytDXDNfEl4jXxJfEl8SXxJeIztDXiMrQztDXTNJdUtDXSN3uHe4d7h3uHe4Z7h3uGe4aYZ3uF8SXxJnuGe4W0Rnp2e4Z7hnuGe4Z7dnp2enZ6dnp2e4Z6dnp2enZ6dnp2enXxJfEl8SXxJfElwzXxJfEktDXxJfIl8SXxJfEl8SXxJYlliXWWVYhlenZ6dYlliWS0RJdUwzOlRIhViGSWRIdWenZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp1enXERfEl0jXxJfEl8SXxJfEl8SXxJfEl8SXxJfEl8SXxJnp2enV6dXp2enV6dXp1eWWJZXp1iGV5ZXp1eWV6dZZV8SXxJfEl8SXxJfEl8SOzNfEl8SXxJfEl8SKkNfEitCXiNYhl8SXTNXlleWSIVIhV8SXxJfEl8SSlRJZF4jTSNXllwzWlRfEl8SXxJfEl8SXxJfEl8SXxJfEl8SXxJfEl8SXxJfEl8SXxJfEl8SXxJOIl8SPSJfEl8SXxJfEl8SXxJfEl8SXxJfEl8SPDJfEl8SPSJfEiwhLCJfEi0iXxJfEl4jXxJfEkeFR4VIhTiFXxJfEl8SXxJKQzhkO0MpU0eFR5U4hUeFR5VHlUeFR4U4dDh0KWM6UziFSHRfIl8SXxJfEl8SXxI8MipCLCIbMl8SXxJfEl8SPiIsIj4SPSI7Q18STiJfEl8SXxJfEl8SXxJfEl8SXxJfEilTTSIqQkeVR4VHhUeFR4U3hUeFN4VJVDeFXxJfEjeFN4VcMzh0N4U3hTeFN4U3hTeFN4U3hDeFN4U3hElkN4U3hF4iXxJfEl8SXiNfEl8SXiNfEl8SKVNMMypCGkJfEl8SXxJfEjh0SlNLMzpDXxJfEl8SXxJeIjtDXxIaQl8SXxJfEl8SN4Q3hDeEN4Q3hDeEN4Q3hDeEN4ReIzhkN4Q3hDeEOGQ3hDeEN4Q3hDeEJ4Q3hCeEN4Q3hF8SXxInhCeETDMndF8SOWNfEihjKHQ6UyhjOkNfEilTXxI7MilTOkMZQjsyXxJfEl8SXxJfEihzXxIoY18SXxJfEl8SXxIpU04iOzInhCd0J4QndCd0J3QndCd0J3QndCd0KGMndCd0TDNfEid0J3QndCdzJ3MncydzJ3M5UzhjXxJfEidzJ3NeIjpDKGNeIkwzXxJfEl8SXxJfEl8SXxJfEl8SXxI6Ql4iOzJfEl8SXiJfEl8SXxJfEl8SGVJOIk4iXxJfEl8SXxJfEidzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3NeIl8SJ3MncydzJ3MncydzJ3MXcydzJ3NeIjpDF3MoU14iXxI5QxhjTSI6Ql8SXxJfEl8STiIrMj0iGjFfEl8SXxJfEl8SXxJfEl8SXxJfEl8SXxJfEl8SXxIsIjsyXxIKMSshF3MXcxdzF3MXcxdzF3MXcxdzF3NeIihjF3MXcxdjF2MXcxdzF3MXcxdzF3MXcxdzF3MXcxdjF3MXcxdjF2MXc18SOzJfEjwyGGIYYhhSGFJfEhpCGzEKMRlCGUIKMQlBF2IXYxhiGGIXYhdjF2IXYxhSGFIZQhhSGGIXYhhiF2IXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdiF2MXYhdiF2IXYhdiF2MXYhdiF2IXYhdiF2MXYxdjF2MXYxdjF2MXYhdjF2MXYxdiF2IXYhdjF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdjF2IXYhdiF2IXYxdjF2IXYxdiF2MXYhdiF2MXYxdjF2MXYxdjF2MXYxdzF3MXcxdzF2MXcxdzF3MXcydzF3MncxdiF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF3MXYxdzF3MXcxdzF3MncydzJ3MncxdzF3MXcydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3Mncyd0J3MndCdzJ3QndCd0J3Q3dDd0N3QndCd0J3QndDd0N3Q3dDeEJ3MncydzJ3MndCd0J3QndCdzJ3Mncyd0J3QndCd0J3QndDd0J3Q3dDeEN4Q3hDeEN3Q3hDd0N4Q3hDeFN4Q3hTemR6Y3pkemR7ZHtke2R7ZHpke2R6ZHtke2R7ZHtke2R7ZHtke2R7dHt0e3R7dHt0e2R7dHt0e3R7dXt0e3V7dHtke2R7ZHtke2R7ZHtke3R7ZHtke2R7ZHtke3R7dHt0e3R7dHt1e3V7dXt1e3V7dHt1e3R7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1fIV8dXyGfIZ8hnyGfIV8hnyFfIZ8hnyGfIZ8hnyFe3V7dXt1e3V7dXyFe3V8hXt1e3V7dXt1fIV8hXyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyHfJZ8h3yWfJd8l3yXfJd8l32XfJd9l3yXfJd8l3yXfZd9l32XfZZ8hnyGfIZ8hnyXfJd8l3yWfIZ8lnyHfJd8l3yXfJd8l3yXfJd8l32XfZd9l32XfZd9l32XfZd9l32XfZd9l32XfZd9l32XfZd9mH2YfZh9p32XfZd9l32YfZh9qH2ofah9lfEofZXjNfEl8SXxJfEofZXUSHyWp2XxJfEl8SXxJ32YfZh9mH2ofah9qH2ofah9mH2ofah9qH2ofah9qH2ofZeLiH2Xi5XyNfEmp2XxKH2njJh9qIyWioWmV4uGmXXyM7VF8STEM7VDtUO1M7VF8SXyNfEl8SO0M7VF8STTM7VEplSmVZhlp2WYZpl10zSnVpl1tUXURrVV8SXxJfEl8SXxJfEl8SXxJfEl8SXxJfI18SSmVMM18SXxJNM14iXxJfEl8SXxJfEl8SXxJeI18SXxJNI00zXiNadTtUS2Rph1mGeKh4qFmGWYZ5qHmoeZeIyXtmiMqIuYi5iMqIyl1EXxJcRF8SXxJfEl8SXxJsVV8SbFVfEl8SXxJfEl8SeYeIuXmoeaiIyYjJeKiIuVmGaYdKZVp1aZd5qFmGaZdsVV8SbFVfEl8SXxJfEl8Sa2ZfEnmobFVfEl8Sa2VbVDtDO0NLVDtUO1RLZEtUWmVMREtUTERLVEtlWnZKZWqGWnVdRGqGbERfEl8SXxJfEmmXbER5mGxVXxJfEl8SXxJdM0tUXiNLVEplaoZLZVp2XxJLVExES1RLZVp2S2VadnmYbFV5mGxVXxJfEl8SXxJ5mHp2eZeJqV8SXxJ6dmtmXxJfEl8SXxJfEl8SXyNfEl8SXiNfEkxDPENOIzxDPDNfEl8SXxJfEk0zPENfEj0zXxJfEl8SXxJfEl8iXxJfEl8STTNfEl4zPEMsMzxDPDNfEl4jXFRMRDxDPEM7VDtETyJfEk4jXxJfEl8SXxJfEk0zXxJLVExEXxJfEkxETEQ8Q0tUPENLVFplaYdadnmYO0RLVUwzS2VqdnmYanaJqIi5qNuYuqjbt+yo27fse2aYyrjsmMq47Lf8bTS3/G00TiNLZV4jS2VqdomoWnZ5mF4jS1RMREtUWnZ5l1plaoeYyrjsmMqo27fsfFW37Jm6iLmo24mpqMq37LjcuOyo2200iahfEntmaoddRHmHWmZfEm4zXxJfEnmYWnZeM2tVXyNfEktUTDNfEl8SXyNfEktlS1RbVVxETTNfEl8jXxJfEl8SXyNfEl8SXxJfEl8SiZhfI5jKialfEl8Sa1VdNF8SXxJfEl8SXxJfEl8SXxJfEl8SXiNdM18SXxJNM0xEXxJfEl8SXxJadmmHW1Vqdl8SXxJfEl8SXTRcRExEXiNqdl8jXxNfEl8SXxJfEl8SXxJfEl8SXxJfEl00XyNbZV8SXxJfEk0zS0ReMzxETDNOIzxDO0Q8QzxDPEM8QzxDXxJfEl8SXxJfEl8SXxJfEk0zXxI7REtUXxJfEkxDTDNfEl8SXxJfEl8SXiNfEl4jTERfEk0zXxJfEl8iXxJPIktlXjM7RE0zXxJfEl8SXxI8Q0wzPDM8Q18SXxJfI18SXxJfEl8SXxJfEl8iXxJfEl8SXxJNMz0zXxJfEj0iLDMsMzxDLDM8Q00zXxI7RF8jLDM8QzxDO0M7RExES1RLZV0zWnZfI0tlW1VfEl00XxJfEkxDXxJfEl8jXxJfEl8SXxJeI18SXTNbVV8SXERfEl8SXERfI0tUTERfEkxEXxJfEl8SXxJfEl8SXxJfEl8jXxJfEktUXTNfEjwzTEM7Q00zO1Q7QztDO0RfIjtDTTM8QzxDPEM8QztDO0Q7REtUXxJfEl8SXxJfEl8SXxJfEl8SXxJfEl8SXxJOI04jPDNfEl8SXxJeI18STDM9MzxDPDMsMywzLDIsM00jTiJfEl8SXxJfEl8SXxJfEl8SXxJOI18SS1RMRF8SXxJNM04jTiJfEl8SXxJfEl8SXxJOI18SXxJOI00jXyI8QzxDO0NLVEplO0NLVFl2eZdadWmHO0NLVDtDS1RaZWmHWmVph4i5mMp4qJjKl8pfEpjKXxJ4qIjJeKiIyZjKXxKYyl8SO0NKVDtUSmVadWmHWXZpl0tUSmVLVEplWXZ5l1l2eZd4qIjJeKiYypjKXxKYyl8SiLmIyYi5iMmIyl4ziMp5l18SXxJfEl8STTM7Q00zO0RfEl8SXxJfEl4jO1RfEjtDO0M7QztDO1RMM18STDNfEjtUSlQ7VExDXTNfEl8SXxJfEl8SXxJfEl8SXyJfEl8SXxJfEmplW1RfEl8STEM8M14jXxJfEl8SXxJfEl8SXxJfEl8SPDM8M18SXyI8MztDXxJfEl8SXxJMMztDTDM8M18SXxJfEl8STDNOIztDXiJMM18SXxJfEl8SXxJfEl8SXxJfEl8SXxJfEk0zTiM7Q18SXiNfEkxDO0NeIjtDTSNMQztDO0M7QytDKzMrQytDXxJfEl8SXxJfEl8SXxJfEk0iXxIrQytDXxJfEjwzPDJfEl8SXxJfEl8STSNfEk4iTiNfEk4iXxJfEk8iXxJPEjtDOlQrQztDXxJfEl8SXxIsMitDLDIrMl8SXxJfIl8SXxJfEl8SXxJfEk8SXxJPEl8SXxI9Ij0iXxJOEi0iHCIsMisyLDIrMl4iXxJeIl8SLDIrMiwyKzJOIl8SOzNNI18SPDNfEjwyKzIrMisyKzJfEjwzXxJNIisyK0IrQytDK0NMMzwyXxJfEl8SXxJfEl8iXxJfEl8SXxJfEl8SXiNfEk4iXxJfEitDK0M7QytDXxJNIztDK0M7QytDK0MrQ18SXxJNI18SXxJfEl8SXxI6Q00jOkM6U18SXxI6QzwzXxJfEl8SXxJfEl8SXxJfEjtDTiIqQ18iXxJfEl8SXxJNIipDTSIrMjpUSWQqQzlkPiIrMj4iHDIrQzpTKzI6U18SXxJfEl8SXxJfEl8SXxJfEl8SPDI9Il8SXxItIi0iPiIcIk4iHCIrMipTKzIqQ04SHCIcIRwyKzIqQysyKkNIhViWSHVYhleWWWVXllllSXRIhTlkSIVYlliFWJZYll8SXxJfEl8SXxIrMl8SPDJfEl8SXxJfEl8SPDJfEk0iOWRIdTlkSHVYhliWSIZIljlkSHU5ZEh1SIZIlkiGSJZfEl8SXxJfEl8STiJfEl8SXiNfEklkSkNfEl8SO0M7MhsyXxIbMk8SXxJfEl8SXxIbMj0iGzIcIl8SXxJOEl8STxIcIT4SHCEtIV8SPhJfEj0iHCEcIRwhPhJfEk4SXxIbMhsyGzIbMhsyGzIbMhsyKzIbMhsyGzIbMhsyGzIqQhsyGzEbMhsyTxJfEl8SXxIqQjwyKkMqU18SXxI7MzsyXxJfEl8SXxI+Ej4iPhI+Il8SXxJfEl8SPhI+Ii0iLSJfEl8SXxJfEk0iGkI9IhsyXxJfEl8SXxJOIhsxXxI9Il8SXxJfEl8SLSIcISwiHCFfEl8SPDIsIhwhHCEbMRshXxJfEj4iXxJfEl8SXxJfEhwhThIcIRshXxJfEiwiPSIaMhoyGzIbMk4iXxJPEl8SGzEbMiwiTiJfEl8SXxJfEl8SLDJfEiwiXxJfEk4iXxJfEhwhXxIbMT0iXxIcIV8SXxJfEl8SXxJfEl8SXxJfEl8SXxJOEj0iXxIsIhwhGyFOIhsxKzIbMRshThIbIRwhGzEbIRshGyEbIRshGyEbMV8SPCJfEk4iGjI9IhsxTiJfEl8SXxJfEiwhXxJfEl8SXxJfEl8SXxJNIj0iPCI9Il8SXxJfEk4iGzE9IhshPSJfEl8SXxJfEl8SXxJfEl8SPSJfEhsxLCJfEk8SPSIcIV8SLCE+EgshCyEcIQshCyEcIQwhDCEMIQwhCyELIQshXxJfEl8SXxJfEl8SXxJfEl8SXxJfEl8SXxJOEl8SLRFfEl8SXxJfEl8SXxJOEhwhPRIcIQwQDBAMEC0RDBFfEl8SXxI+El8SXxJfEl8SXxIbIU4SCyELMV8SXxIsIT0iTxI+El8SXxJfEl8SXxJfEl8SXxJOEj4SXxJOEi0RDCEcIQshDCELIV8SXxJfEl8SLREMIU4SCyFfEl8SXxJfEl8SHCFfEgshCyELIQshCyFfEgshXxIcIQshCyELIQshThILIS0hCyFfEl8SXxJfEgshCyELIQshXxJfEiwhLCFfEiwhXxI9IgshCyELIQshXxJOEiwhGyELIQshCyEKMQshCyELIQshCjEKMQoxCjELIQshCyEKMQoxCTEKMRlCGUIYUhlCGFIYUhdiGFIXYhlCGFIYUhhSGGIXYhhiF2IKMQoxCjEJQRlCGFIYUhhSCjEZQgoxGUIYUhhiGFIYYhhSGGIXYhdiF2IXYhdiF2IXYhdjF2MXYxdjF2IXYxdiF2MXYhdjF2MXYhdiF2IXYhdjF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdjF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2MXYxdiF2MXYhdiF2IXYxdjF2MXYxdjF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2MXYhdjF2IXYxdjF2MXYxdjF2MXYxdjF2MXYxdzF2MXcxdjF2MXYxdjF2MXcxdzF3MXYxdzF2MXcxdzF3MXcydzF3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3QXcxdzF3MXcxdzJ3MncydzF3MXcxdzJ3MncydzJ3MncydzJ3MncydzJ3MndCd0J3QncydzJ3MndCd0J3QndCd0J3MndCd0J3QndDd0J3Q3dCd0J3QndCd0N3Q3hDd0N4Q3hDeEN4Q3hDeEN4U3hTeFN4Q3hDeEN4U3hUeFN4VHhSd0N3QndDd0N4Q3hDeEN4Q3dDeEN3Q3hDeEN4Q3hDeFN4Q3hTeFN4VHhUeFR4VHhTeFR4U3hUeFR4VHhUeFR4VHtke2R7ZHt0e3R7dHt0e3R7ZHt0e3R7dHt1e3R7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3R7dHt0e3R7dXt1e3V7dXt0e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V8hXx1fIV7dXt1e3V7dXx1fIV8hnyFe3V8hXt1fIV8hnyGfIZ8hXyFfIV8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfId8lnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8h3yXfJd8lnyGfJZ8h3yXfJd8l3yXfJZ8l3yXfJd8l3yXfJd8l32XfJd8l3yXfJd8l32XfZd9l32XfZd9l32XfZh9l32Yfad9l32XfZd9mH2Yfah9qH2nfJd8l3yXfZd9l32XfZd9l3yXfZd9l32XfZd9l32YfZd9mH2XfZh9qH2ofah9qH2ofZh9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofaeLloqIjJeLiH2ofal9qX2ofaiMmX2ofah9qH2ofah9qH2ofah9qX2ofah9qH2ofah9qX6pfal+qX6pfal+qX65fal9qX65frl+qX65frl+uX65frl+uX61mGSmVpl1p2O1Q7Q0plO1R4qGmXiMl4qFp2SmVpl1mGO0M7QztDO0M7QztUO0M7VEtkO1Radlp1O1RLVFp1WnaH2ojJl9uX2ni5eKiI2ojKl+uX65frl+uX25fbp+un62mXaZeIuYi5aZdpl4i5iLmX25jap+un65jamNun66frS1RKZUtUSmVadmmXWoZ5mEplWnZahmmXaZd4qHmoiLl5qHmoeKh5qGmXWnZ5mGqGiLmIuZjKmMp5qWmXiMqIuXmoiLmIypjKiMqY2pjbp+uX26frp+yn7Kfst+yn7Lf8qNuo26fsp+yY25jKp+uo27f8t/y3/Lf8t+y37Lf8t/xLZUtlWnVaZUtlWnZadWqGaoZadnmYeZhqhmmXeZiJqHmYial5mIi5ial5mIi5eaiJqYi5mLqYypjKiLmo25jKiLmIuajbmNuIuZjKqNuo26fsp+y3/Lf8t+y37Lf8t/2Y26jbqOy37KjbqNu37Lfst/y3/Lf9t/23/Lf9t/23/Wp2W2Vph1p2S1VLVFplWmV5mGqHiLmJqGqHaod5mHmoS2VaZVp2anZaZUtlanZadmmHeZiJqIm5eZhph4m5iamYypjKqOyo25i6mLqo26jbt+y37Mf9x/237Lfsx/3H/ZjKmMqo27jsmMqYyrjsqNu37Lfsx/3H/bf8t+zH/cf9S1VLZVplWmVaZWqHWnZqh2qHaoZ5qHmYaod5mImoibmJqJjKiamYyqjsuNyo7LjsiLmoy5jKqNu47Lfst+y37JjKmLqo26jbmLqYyqjbqNy37Lfsx/3H/bfst+zH/cf9qNu37Lfst+y37Mf9t/3H/bf9x/3H/cf9x/3H/cf9x/2YyompqNuIuWmHWnZ5mGp2qNuYyrfsqNuJqXmXmMqJqUtlS1RaZUtVS1Q7VEtUO1RadlpleZhqh0tlS1Vqdlp2t/237Mf9t/2o25jKt+yo28f9x/3H/cf9t/23/Mf9t/2YuYmpqNuYynmYeZiYypi6t+y37Lf9t/2o26jbt+y37DtEPEQ7VEtUO0Q7VEtUS2VLVUtlWnZqdlplWnZph3mYS1RLVFplWmVLVEtUWmVLZWqHaYeJqImpaYdqdomoeZh5mHmomLqYyompmLmoyqjbqNuo3Lfst/y37Lfst/y3/JjKmMqo27frmMqYuqjbqNu37Lfst/y3/Lfst+y3/LfsO0Q8Q0tUO1Q8MzwzO0M7RFp2WmV5l2mHS1VLVWp2anY8QztUO1RLVUtVWmVaZVp2SmVadmqGaYdqhmmXeZiIqYi5iamoy5jKeah5mJjKmMqn7Kfst+y37Kfbp9u37LfseaiIqZjKmMqIuZjKmMqo26fbp9u37Lfsp+un7Lfst+xaZUplanZadktUO0RaZUtVeZdph4ipiKhphlp2eZh5lztDO0RLVEtUS1RKZUplWnZadVp2aYdpl2mGaZd5mIiomMqYyqfbqNuIuYi5qNuYyqfrp+u37Lfsp9un26fsp+uIqYi5mMqYyoi5mMqYypfbp9un26frp+un26fbp+un61plSmVphlp2S1Q7VFplSmV5l3mXiLmIuWmHWnZ4qGmXO0M8QztUO0Q8QztDO0M7VEplSlRphlp2S1RKZVp1WnaYypjKp9uX24i5iKiYypjKp9un26frp+un25fap9un23mYaZeIuYi5aZdpl4ioiKiXypjKp9un25jKmMqX25faS1RKZUpUWmVZdnmXaYZ4mEplWXZZdmmHaYd4qHioiLmIuYjKiLmXyofKiLmXyoi5iLmXyojJl8qXyoi5l8qHyXmXeKiIuYi5iLmIyYjJl8qXypfKl9uX2pfal9qX2pfal8qX2pfal9qX2pfKl9qXypfal9qX2pfal9qX2pfal9pol1l2eJhZhkpUO0NKZTtUeKhpl4i5eKhZdUpkaYZZdjtDK0M7QztDK0M7QztDO0M6VDtUSnVKZTtTO1RKZUpliLl4uIfKh8l4qGiXiLl4qJfKl8qX2pfKh8mHyYfKh8pph1mGeKh4qFmGWYZ4p3ioh7mHuYfJh8mIuYe5h8mHyStDK0M7QztDO0M7QztTOlQ7VDpUSmVJdUpkSmVZdlmGO0M7QzpUOlQ7QytDOlQ7U0l1SXVZhliGSXVKZFmGWXZZhmmGeKh4qGiXaJd4qHi4d7l3uYfJh8mHuYe5h8mHyWinaKd3uHe4aJdol3i4eKh3uXe5h8mHyXe4d7h3yXe4KzIsMitDKzMsMiwyKzIrMjpUOlNJdUllO0M7Q0pkSmQsMitDK0M7QytDOlM6UzpUOlM6VElkSXU6ZElkSXVJdViGWYZop2inWXZZdWiXaJd3uHe4d7h3uHeoZ6h3uHe4WYZYhmiXaJdYhliWaKdop2eoZ6h3uHe4Z6hnqHe4Z7g6UzpDOlQ6VDpDOkM6UzpTSWQ5ZEl1SXU5ZDlkSXVJdTpTOlM6VDpUOlMqQzpUOlM5ZElkSXVIdUlkOWRIdUl1WIZYhmiXaJdYhliGaJdol2enZ6dnuGe4Z6dnp2enZ6dYhliGWJdYl1iGWIZYl1iWZ6dnp2enZ6dnp2enZ6dnpytCKzIqQysyHCIcISsyGzI6VCpTSXU5ZCtDK0I6VDpTHCEbMhsyKzIrQipTKkM6UytCKkM6UzlUKlM5ZDlkSXVIhUh1WJZYlkl1SXRYhkiGV6dXl2enZ6dXlleWV6dXpzl0SXVIhUiFSHVIhUiGSJZXlleWV6dXpleWV5ZXpleWOWRIdTlkSHVIlleWSJZHlkh1SIVIhUiFV5ZXlleWV5ZIhTl0SIU4dClTKkM5ZCpDSIVIdUeWSIU5ZClTOHQ5ZEiGV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlleWR5ZIhUeWR5ZIhTh0R4VIhUeWR5ZHlkeWR5VHlUeWR5YrMhsyKkIqQipCKkMqQylTKlMqUzlkOWMpUzljOWQ4dClTKVM5ZDhkKVMpUzhkKWM4ZDh0OHQ4hTh0OGQ4hDh0OHQ4dEiFOIU4dDh0OIVIhUeFR4VHlUeVR4VHhUeVR5U4hTeFR4VHhTeFOIQ3hTeFR4VHhUeVR5U3hTeFR4U3hSpCGzIpUxpCGzIbMRoyGzIpUylDOGQpUypCGkIpUylTGzEbMRsyGjIbMRsxGjIaMhpCGkIpUylTKUIaQilTKVM4dDhkOIQ4dChjKGM4dDh0N4U3hDeFN4U3hDeEN4U3hShjKGM4dDh0KGMoYzh0OHQ3hDeEN4Q3hDeEN4Q3hDeEGzEbIRsyGzEbIRshGyEbIRpCGjIpUhlCGzEbMRpCGkIbIRshGyEbMRsxGjEaMhpCGjEaMhpCGUIaQhlSGVIoUyhjKVModChjKVMpUyhjKGM3dCd0N4Q3hCh0KHQ3hDeEKVMoUyhjKGMoYyhjKHMncyd0J3QndCd0J3QndCd0J3QaMhoyGUIZQhoxGyEaMhoxGVIZUihjKGMZQhpCGFIZUgshCyEbMRsxCyELMRsxGjEaMhoxGUIZQhoyGUIZQhlSKGMoYydzJ3MoYyhjJ3MoYyd0J3MndCdzJ3MncydzJ3MYUxhSKGMoYxhTGGMoYyhjJ3MncydzJ3MncydzJ3MncxoxGjEaQhlCGjELIRpCGjEZQhlSGFIYUhlCGUIYUhlSCyELIQsxCyEMIQshCyELIRoxCjEZQhlBCzELMRoxGjEYYxhjJ3MncxhjGGInYxhjJ3MncydzJ3MncxdzJ3MncxhSGVIYYxhSGUIZQhhSGFIXYxdjF3MXcxhjGGMXcxdjCyELIQshCjELMQoxCjEKMQoxCjEaMRlBCjEKMRlCGUIKIQshCjEKMQshCjEKMQoxCjEKMRlCGUIKMQkxGUIZQhlCGUIYUhhSGFIYUhhiGGIYYxdjF3MXYxdiF2MXYxdjGFIYUhhiGGIYUhhSGGIYYhdjF2IXYxdjF2IXYhdjF2MJMRlCCUEZQhhSF2IYUhdiGUIYUhhSGFIYUhdiGGIXYhdjF2IXYxdiF2MXYhdiF2IXYxdiF2MXYhdiF2IXYhdiGFIYYhhiF2IXYhdiF2IXYhdiF2IXYxdjF2MXYhdjF2IXYhdiF2MXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdjF2IXYxdiF2IXYhdiF2MXYxdjF2MXYxdjF2MXYxdzF3MXcxdzF2MXYxdjF3MXcxdzF3MncxdiF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF3MXYxdzF2MXcxdzF3MXcydzJ3MncxdzF3MXcydzJ3MncydzJ3MXcydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3QndCd0J3Q3dCd0N3QndCd0J3QndDd0N4Q3dDeEJ3MncydzJ3Mncyd0J3MndCdzJ3Mncyd0J3QndCd0J3QndDd0J3Q3dDd0N4Q3hDeEN3Q3hDd0N4Q3hDeEN4Q3hTd0N4Q3hDeEN4Q3hTeFN4U3hDeEN4Q3hTeFN4U3hUeFR4VHhUeFR4VHhUeVR4VHlkeFR4VHhUeFR5VHlkeWV5Y3hDeFN4U3hTeFR4VHhUeFN4U3hTeFR4VHhUeFR4VHhUeFR5VHhUeWR5ZXlkeWV5ZHlUeWR5ZHlleWV5ZXlleWV7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1fIV7dXyFfIZ8hnyGfIV8hXyFfIZ8hnyGfIZ8hnyFe3V7dXt1e3V7dXuFe3V8hXt1e3V7dXt1fHV8hXyGfIV8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyWfId8l3yXfJd8l3yXfJd9l3yXfJd8l3yXfJd9l32XfZZ8hnyGfIZ8hnyHfJZ8l3yWfIZ8hnyHfJd8l3yXfJd8l3yXfJd8l32XfZd9l32XfZd9l32XfZd9l32XfZd9l32XfZd9l32XfZd9mH2XfZh9p32XfZd9l32YfZh9qH2Yfah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9p32YfZd9mH2Yfah9qH2ofah9mH2ofZh9qH2ofah9qH2ofah9qH2ofah9qH2ofal9qH2ofah9qH2ofal9qX2pfqh9qH2ofal9qX6pfrl+qX64fal9qX2pfql+qX65frl+uX65frl+uX65frl+uX65frl+uX65frl+uX65frl+uX65fal+qX6pfrl+uX65frl+uX6pfrl+uX65frl+uX65frl+uX65frl+uX66frp+un65frl+uX66frp+un66frp+uX66frp+un66frp+un66fsp+un66frp+un66fsp+un7Kfsp+yn7Kfsp+yn/Kf8p/yn7Kfsp+yn7Kf8p/yn/Kf8p+un66frp+un7Kfsp+yn7Kfrp+yn66fsp+yn7Kfsp+yn7Kf8p/yn/Kf8t/yn/Lf8p+yn/Kf8t/y3/Lf8t/y3/Kf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/bf8t/y3/Lf8t/23/bf9t/23/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/23/Lf9t/23/bf9t/23/bf9t/23/bf9t/23/bf9t/23/bf9t/23/bf9t/23/bf9t/23/bf9t/3H/bf9t/23/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/bf9t/23/bf9t/3H/cf9x/23/bf9t/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/bf9x/3H/cf9x/3H/bf9x/23/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/23/bf9t/23/cf9t/3H/cf9t/23/bf9t/3H/bf9t/23/bf9t/y3/bf9t/23/bf9t/23/bf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lfst/23/bf9t/23/Lf8t/y3/Lf9t/y3/bf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t+y37Lfst/y3/Lf8t/y37Lfst+y37Lf8t+y37Lfst+y37Lfst+y3/Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Kfst+y37Lfst+y37Kfst+yn7Lfst+y37Lfsp+yn7Kfsp+yn7Kfrp+yn66frp+un66frp+un66frp+un66frp+un67fsp+yn7Kfsp+yn66fsp+un7Kfsp+yn66frp+un66frp+un66frp+un66frp+un66frp+un66frp+un66frp+un66frp+un66frp9un26fbp+un66frp9un26fbp9un26fbp9un26fbp9un26fbp9un26fbp9un26fbl9un25fbp+un26fbp9un26fbp9un26fbp9un26fbp9un26fbp9un26fbp9uX25fbl9uX25fbp9uX26fbl9uX25fbl9uX2pfbl9uX25fbl9qX2pfal9qX25fal9uX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX25fal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal8qX2pfal9qX2pfal8qXypfKl9qX2pfal8qXyofKl8qHypfKl8qXypfKh8qHyofKh8qHyofKh8qHyYfJh8mHyYfJh8qHyYfJh8mHyYfJh8mHyZfKh8qXyofKh8qHyofKh8mXyofKh8qHyofKh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyXfJd7l3uXe5d7mHyXe5h8l3uXe5d7h3uXe4h8mHyYfJh8mHyYfJh8l3yYfJh8mHyYfJh8l3yYfJd7l3uXe5d7l3uXe4d7h3uHe4d7l3uHe5d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7hnuHe4d7h3uHe4d7hnuHe4Z7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uGe4Z7hnuGe4Z7h3uGe4Z7hnuGe4Z7hnuGe3Z7hnuGe4Z7hnt2enZ6dnp2e4Z7hnuGe3Z7dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2e4Z6dnt2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dXp2enZ6dnp2enZ6dXp2enV6dnp2enZ6dXp1enV6dXp1enZ6dXp1enV6dXp1enV6dXp1enV6ZXp1emV6ZXplemV5ZXplemV6ZXplemV5ZXpleWV6dXp1enV6dXp1emV6dXplenV6dXp1enV6ZXplemV6ZXplemV6ZXlleWV5ZXlleWV6ZXllemV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlleWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlUeWR5ZHlkeWR5ZHlUeWR5VXlleWV5ZXlkeWR5ZHlkeWV5ZHlleWR5ZHlkeWR5ZHlkeWR5ZHlkeVR5VHlUeVR5VHlkeWR5ZHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeFR5VHhUeFN4VHhTeFR4VHhUeFN4U3hTeFN4U3hUeVR5VHlUeVR5VHlUeVR4VHlUeVR5VHlUeVR4VHhUeFR4U3hUeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4U3hTeFN4U3hDeEN4Q3hDeFN4U3hTeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4QnhDeEJ4Q3hDeEN4Q3hCeEJ4QnhCeEJ4QndCeEJ3QndCd0J3QndCeEJ3QndCd0J3QndCd0J3Q3hCeEN4QnhCeEJ3QnhCd0J4QnhCeEJ4QnhCd0J3QndCd0J3QndCd0J3QndCd0J3MndCd0J3QndCd0J3MndCdzJ3QndCd0J3QncydzJ3Mncyd0J3QndCdzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncxdzJ3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzJ3MncydzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF2MXYxdzF3MXYxdzF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXcxdzF3MXcxdjF2MXcxdjF3MXcxdzF3MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYhdiF2MXYxdjF2MXYhdjF2IXYxdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYxdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYxdiF2MXYhdiF2IXYhdjF2MXYxdjF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdjF2IXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXcxdjF3MXYxdjF2MXcxdzF3MXcydzF3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3QXYxdzF3MXcxdzJ3MXcydzF3MXcxdzJ3MncydzJ3MncydzJ3MncydzJ3MndCdzJ3QncydzJ3Mncyd0J3QndCd0J3MndCd0J3QndCd0J3Q3dCd0J3QndCd0N3Q3dDd0N4Q3dDeEN4Q3hDeEN4U3hTeFN4Q3hDeEN4Q3hTeFN4VHhSd0J3QndDd0N3Q3hDeEN4QndDd0N3Q3hDeEN4Q3hDeEN4Q3hTeFN4U3hUeFR4VHhTeFN4U3hUeFR4VHhUeFR4U3hUeFR4VHhUeFR5VHhUeWR4VHhUeFR4VHlUeWR5ZHlkeWV5ZHlleWV5ZXlleWV5ZXlleWV5ZXlleWV5dXlleXR4VHhUeFR5VHlleWR5ZXlkeVR5ZHlkeWV5ZXlleWV5ZXlleWV5ZXlleXZ6dXl2enV5ZXl1eWV5dnp2enZ6dnp1e3V8dXt1fIV8hnyGfIZ8hXuFfIV8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8lXyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8h3yWfJd8lnyGfIZ8hnyHfJd8l3yXfJZ8h3yXfJd8l3yXfJd8l3yXfJd8l3yXfJd8l32XfZd9l32XfZd9l32XfZh9l32YfZd9l32XfZd9mH2Yfah9mH2nfJd8l3yXfZd9l32XfZd9l3yXfZd8l32XfZd9l32XfZd9l32XfZh9mH2ofah9qH2ofZh9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2pfal+qX6pfql+uH2pfqh9qX6pfql+uX65frh9qH2ofah9qH2ofah9qX2ofah9qH2ofah9qX2ofal+qX6pfql+qX65frl+uX65frl+qX65frl+uX65frl+uX65frl+uX65frl+uX65frl+uX65frl+uX65frl+uX66frl+un66frp+un63j5p+uY6qfrp+un66frp+un66frp+uX65frl+uX65frp+uX66frl+uX65frp+un66frp+un66frp+un66frp+yn66fsp+un66fsp+un7Kfsp+yn7KfsHfEd8TvzO/Md8R3xHvEP8Kfrp+un65fbWuYP8FrmD/Ad8R3xD/Ae8R3xHfE88zzzD/Ba1g/wSsWIuYi5eah5qKfrmNun65jbWtYP8FrWD/Cn66fbp+yn61rWD/Ba5g/wD/BLtA/wO6Rph2mHWnZadg/wO6QP8DukWnZadlp1WnaI6bfsiNmo27fst/yn67fsmMqYyomoiLmo26jrmMqo27f8t/y3/Lf8t/23/bf9t/237Lf8p+y3/Lf9t/23/cf9aZd5qGqHeZiIuZjKebg75GqGeZhqhnmYPNMP8Ii5LfKo27fsHfI79Lf9x/23/Gn3D/AP8A/wD/AP8A/wD/AP8Lf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9t/23/cf9x/23/Yn4HvFa9g/wD/Ad8Q/wD/AP8Mf9x/2o+8f9x/3H/cf9qPsP8Gr2D/Ae8bfsO/So25jqx/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/1q9jzzx/3H/R3xx/0P8A/wWuYP8A/wWvUP8A/wx/3H/aj7effH/cf9efeY+g/wD/AP8DzjD/AP8B7xD/DH/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/Tzzt+wP8Czzt+y37KjbqNvH/cf9x/3H/cf9x/3H/cf9t/y3/bfsefiJ+B3xD/AP8Mf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9t/3H/cf9x/23/bf9t/23/bf9t/23/bf9t/23/bf9t/23/Lf9t/zH/cf9ifh598f9t/1595j5D/AP8A7wS/QP8A/wLPMP8Lf9t/23/Lf8t/y3/Lfst+ws8pjqD/Ae8bfst+yoy6jbt/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t+y3/Lfst/y37Lfst+y37Lfst/y37Lfst+y37Lfst+y37Lf8t/y37Gn3t/y37Fr2O/S37A/wqNt56A/wD/Bp5x3yt+y37B7xLfK37Lfst+y37A/wHfEP8B7xidge8Q/wD/C37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+yn7Kfsp+y37Lfst+y37Kfsp+yn7Kfst+y37Hnoafe37LfsmOqn7A/wD/As4h7xD/A78w/wD/C37Kfsp+un66fsp+yI6Vr2p9un25jKmMod8Q/wedha5qfsp+yn7Kfrp+un66frp+un63nnp+tp5g/weecP8Gnmp+un66frp+un66fbp9un26fbp9un25fbp9un25fbl9un6yzzLPIP8A/wWeYP8DvkD/AP8FrWD/AP8A/wD/As05jKmMpa1VrVl8qXylrViMkP8A/wS7Q7tA/weKhKpXmXp9un26fbp9un26fbp9un26fbl9un25fbp9un26fbl9un25fbl9uX25fal9qX2pfal9uX2pfbl9qX2pfal9qX2pfal9qXypfal9uX25fal9qIuYjKeKiIuZfal9qXyojZl9qX2pfal9qX2pfaeNhZ5ojZLPIO8Q/wD/AP8A7wOuSX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal8qX2pfKl8qHypfKh8qXypfKl8qXyofKh8qHyofKl9qX2lnmadeX2pfKl8qXyg/wD/A75B7xHfFZ1g/wD/CXyofKh8qHyofKh8qHyVnVh8mHyVnGeLiHyQ/weLlZxofKh8qHyofJh8mHyYfJh8mHyofJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJSuUr44fJh8kO8B3xD/AP8EnVHfEP8B3xD/AP8IfJh8mHuXe5h8mHyVnWSdVZxQ7wD/AP8A/wD/Ac4g7wh8mHyYfJh8l3yXe5d7l3uYfJd7l3yXfJd7l3uHe5d7h3uXe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHfJd7lox3e4d7l3uHe4d7gP8CvjD/AP8He4d7hop2ind7h3uHe4d7h3uHe4d7h3uHe4d7hop2eod7h3uGe4Z7h3uHe4d7h3uHe4d7h3uGe4d7h3uHe4d7h3uGe4d7hnuGe4Z7hnuGe4Z7hnp2e3Z6dnuGe4Z7hnt2e3Z6dnp2end7h3uHe4d7hnuGe4Z7hnuHe4Z7hnuGe4Z7hnuGe4Z7hnuGe3Z7dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dXp1enV6dXp2enV6dnp1enV6dXp1enV6dnp2enZ6dnp2enZ6dnp1enZ6dnp2enZ6dnp1enV6dXp1enV6dXp1enV6dXplenV6ZXp1enV6dXp1emV6ZXplemV6dXplenV6ZXplemV6ZXplemV6ZXplemV6ZXllemV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlkeWV5ZHllemV6ZXpleWV5ZXlleWV5ZXpleWV6ZXlleWV5ZXlleWV5ZXlleWV5ZHlkeWR5ZHlleWV5ZXlkeWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlUeWR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5ZHlkeWR5ZHlUeVR5VHlUeWR5VHlkeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeFR5VHlUeVR5VHhUeFR5VHhUeVR4VHlUeVR4U3hUeFN4VHlUeFR5VHhTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hDeFN4U3hTeFN4U3hDeEN4RHhTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hDeEN4Q3hTeEN4Q3hDeEN4Q3hDeEN4U3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hCeEN4Q3hDeEN4Q3hCeEJ4QnhDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEJ4QnhCeEJ4QndDeEJ4QnhCeEJ4QndCd0J3QnhCeEJ4QndCd0J3QndCd0J3QndCd0J3QndCd0J3QndCd0J3QndCd0J3MncydzJ3MndCdzJ3QncydzJ3MncydzJ3QndCd0J3QndCd0J3QndCd0J3QndCd0J3Qncyd0J3MndCdzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncxdzJ3MncydzJ3MncydzF3MXcxdzF3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncxdzF3MXcxdzF3MncxdzJ3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdjF2MXYxdjF2MXcxdzF2MXYxdjF2MXYxdjF2MXYxdzF2MXYxdjF2MXYxdjF2MXYxdiF2IXYhdiF2IXYhdiF2IXYhdjF2IXYhdiF2MXYxdjF2MXYxdiF2IXYxdjF2MXYxdjF2IXYhdjF2MXYxdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdjF2IXYhdiF2IXYhdiF2MXYxdiF2IXYhdiF2MXYxdjF2MXYxdjF2MXYxdjF3MXYxdzF2MXYxdjF3MXcxdzF3MXcxdiF2IXYhdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXcxdjF3MXcydzJ3MncxdzF3MXcydzJ3MncydzJ3MXcydzF3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3Qncyd0J3QndCd0N3QndCd0J3QndCd0N3Q3dDeEJ3MncydzJ3Mncyd0J3MndCdzJ3MncydzJ3QndCd0J3QndCd0J3Q3dDd0N4Q3hDeEJ3Q3dDd0N3Q3hDeEN4Q3hDd0N4Q3hDeEN4Q3hTeEN4U3hDeEN4Q3hTeFN4U3hUeFN4VHhUeFR4VHhUeFR4VHlkeFR4VHhUeFR4VHlkeWR5Y3hDeFN4Q3hTeFR4VHhUeFN4U3hTeFR4VHhUeFR4VHhUeFR4VHhUeVR5ZXlkeWV5ZHhUeWR5VHlleWV5ZXlleWR5ZXlkeWV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlleWV5dXl2eXV5dnp2enZ6dnp2enZ5dnp2enZ6dnp2eoZ6d3qFeWV5ZXlleWV5ZXl1eXZ6dXlleWV5ZXl2eXZ6dnp2enZ6dnp2enZ6dnqHeod6h3uGenZ6hnp3eod6h3uHe4d7hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfId8lnyXfJd8l3yXfJd9l3yXfJd8l3yXfJd9l3yXfZZ8hnyGfIZ8hnyHfJZ8l3yWfIZ8hnyGfJd8l3yXfJd8l3yXfJd8l32XfZd9l32XfZd8l32XfJd9l32XfZd9l32XfZd9l32XfZd9mH2XfZh9l32XfZd9l32XfZh9qH2Yfah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9p32XfZd9mH2Yfah9qH2ofad9mH2ofZh9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofal9qH2pfqh9qH2ofal9qX2pfql+qX6ofal+qH2pfql+qX65frl+uX65frl+uX65frl+uX65frl+uX65frl+uX65frl+uX65fal+qX6pfrl+uX65frl+uX6pfrl+uX65frl+uX65frl+uX65frl+uX66frl+un65frl+uX65frp+un66frp+uX66frl+un66frp+un66frp+un66frp+un66fsp+un7Kfrp+yn7Kfsp+yn7Kfsp/yn7Kfsp+yn7Kf8p/yn/Kf8p+un66frp+un66fsp+yn7Kfrp+un66fsp+yn7Kfsp+yn7Kfsp+yn/Kf8t/yn/Lf8p+yn/Kf8p/y3/Lf8t/yY+6fsp+un7KfsWuYP8GrmD/C3/Kfst/y37GrmD/Bq5g/wD/BLpA/wS7Radlp2WnZadg/wS7QP8Eu0WnZadlp2Wna3/Lfst/y3/GrnD/Bq5w/wt/y3/Dv0O/Rq5w/wHfIP8A/wS7QP8Eu0WnZadlp2WnYP8Eu0D/Ae4Vp2WnYtwi3Caod5mGmHeaiIuTzjiLk842mHeahph3momLk845i6POMP8A/wD/Ae8WrXS9V5qEu1D/Ae8Q/wHvFpl0ukaoc8pGmHiahph4momLo845i6PONph4moapZ5qJi6PONq1x7xD/Ae8Q/wHvFqhzyTaoc8kw/wHvEP8A/waoc8lEu0HtEP8A/wD/AP8DzTS9V5h0u1D/AP8A/wD/BadjukS2U8kw/wD/AP8A/wmLqYynmYiagP8A/wD/AP8GqGaodaZVp2D/AP8A/wD/BLVTyDS1Qsgw/wD/AP8A/wS2U8gyyjHcEP8A/wD/AP8EtlWmVLZVtlD/AP8A/wD/BLZVtlLbJbZZjKD/CJqQ/wD/Ae8Q/wS8V5lw/wanYP8A/waocP8Gp2ebiJuXmYeZeJqTzjeZdql2qGanZadlp2anZqdlp2WnZadg/wWnYP8A/wWnYP8EuVWnYP8Fp2D/AP8A7gD/AP8Fp2WnZadlp2WnZadmp2aodahWp2D/AtwmqHPMMO8A/wD/AP8A/wD/B5yJjKPNOJqQ/wD/Ae4Q/wLNJ5mC3Caoeo2x7xascP8A/wLfIP8GnXPNMP8CzSD/AP8Ii5D/B5mB7hD/AP8A/wLcJqdizDWnYP8A/wD/At0lqWanZph2p2PLMP8EuFD/AP8GmHD/BLlFp2HtFadkt1D/Ae4Q/gD/Co26jKmMqIuZjKiciJqXmoial5mHmXaYd5l2mHaYdqhw/wD/At4g/wPOOYyg/wialLtA/wS6QP8A/wWqYP8Eu0aodqhlp2WnZqhmqHaodph1p2WnYP8B3SaYdaph7hD/BLtA/wLdIP8A/wWoYP8Gp2D/AP8A/wHeI8w2qGeZdqhpjKqMuIuZi6qNs845i6PON5mImoaYd5mIipLON5qCzTD/AP8A/wD/AP8DvULdJphg/wD/AP8B7hWoVaZVplSmVqhmmHWnZqhnmYLNJphyzSWnZqdlqFLcJphyzSLNIe4Q/wHuEP8B7hWmVLZVp1SmUP8B7hD/AP8Fp2WmUtwi3Ceah5qGmGaYcs4lrGaYdpl1plWnVLZUplWnZphlplWnaIqYi5eZh5qIi5iLl4qIi5aYdpl2mHaZd5mHioeZh4qEtUSmVKZVplWnVphlp2aYdaZVp2O5RphmmHeZh5l4ipaZd5mHmoiKl4qIi5iLmIuYi5iLmYypfamMqYypfbp9uIuQ/weKgP8A/wS7QP8DukeKgP8HioD/AP8DuTD/A7o1p2WnVKZUplWXZphkplWXZKVEtUSlRLVEplWnVKZVp1iKgP8Ii5D/AP8DujD/A7pJjKDvCXyjvUD/Ad0Q/wD/BKZUpkSmVKZUplWXYd0Q/wWmVLhA7gD/AP8B3hD/A7s3mXeKhph3ioiLkr44i5D/BphniXaYd4qHioD/CIuQ/wD/AO8A/wLOJ4yIi5eKh4lw/wD/AP8A7wHvEe4Q7hDuFph3ioaZd4qIi5D/CIuQ7weJd4qGmXeKiIuTvTeLh4qA/wLMMP8B3RWXZKZUplSlQP8A/wDvAP8CuTOlQP8A/weKh4p2mXaYYP8A/wHeEP8A7hDuEO4A7gD/AP8A7gDuAs4ninDuFph3ioeKhol2iXD/BZdQ7RSmVZhlmGSmVZdUpkSlQ6VDpUSlRKVDtkD/A7VDpUHcEP8A7RD/AP8ByySlRKZB3BSlRKZUl1SmRJZSuDSlRKZEpkSmRJZTp0HMJ4qCziaJcs0g/wD/AP8A/waIYs0lmGLNIP8A/wD/AO4A/wOrQcwkllWYZJlUllSWU6dDpUOlQ6UzpUOlQ7QzpTWXYc0ll2HNIP8A7gD/AO4Fl1HNIc0g7wD/AO4A/wD/A6VDtDOlQ6UztDOlM6UzpUSmQ6VB3BHbE6VDpkK4NJZB3hOqRJdUl1WIZYlkl1WIY6VEpkOlQ6ZEllSXVJZUl1aJdop1iGaJdnp2eoaKdnp1iGWJZYhliWaJdnp2iXZ6c6VElkOmRJdUl1WXVZhliGSWVZhkl1WIZYhmiXaJdnp1iGWJdYlmiXaKdnp2enZ6dol2enZ6dnp2enZ6dnp2enZ7hnuGe4Z7hnuGe3Z7hnp2e4Z7hnp2e3Z6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dXp2enZ6dnp2enZ6dXp1enV6dnp2enZ6dnp1enV6dXp1enZ6dXp1enV6dXp1enV6dXp1enV6ZXp1emV6ZXplemV6ZXplemV6ZXplemV6ZXpleWV6dXp1enV6dXp1emV6dXplenV6dXp1enV6ZXplemV6ZXplemV6ZXpleWV5ZXlleWV6ZXllemV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlkeWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlUeWR5VXlleWV5ZXlleWR5ZHlkeWV5ZXlleWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5VHlUeVR5VHlkeVR5ZHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHhUeFN4VHhTeFR5VHhUeFR4U3hTeFN4U3hUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR4VHhUeFR4U3hUeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeEN4U3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4U3hTeFN4U3hDeEN4Q3hDeFN4Q3hTeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEJ4Q3hDeEN4Q3hDeEJ4QnhCeEJ4QnhCeEJ3QndCd0J3QndCd0J3QndCd0J3QndCd0J3Q3hDeEN4QnhCeEJ4QnhCd0N4QnhCeEJ4QnhCd0J4QndCd0J3QndCd0J3QndCd0J3QndCd0J3QndCd0J3QndCd0J3QndCd0J3QndCdzJ3Mncyd0J3QndCdzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3Mncyd0J3MndCdzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncxdzJ3MncydzJ3MncxdzJ3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzJ3MncydzF3MncxdzF3MXcydzJ3MncxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXYxdzF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXcxdzF3MXcxdzF2MXYxdjF3MXcxdzF2MXcxdjF2MXYxdjF2MXYxdjF2MXYxdjF2IXYxdjF2MXYxdiF2IXYxdjF2MXYxdjF2IXYhdjF2IXYhdjF2IXYxdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2MXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2MXYhdiF2IXYhdjF2MXYxdjF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYxdjF2MXYxdjF2IXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXcxdjF3MXYxdjF2MXYxdzF3MXcxdzF3MncxdzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MXYxdzF2MXcxdzJ3MncydzF3MXcxdzF3MncydzJ3MncydzJ3MncydzJ3MndCdzJ3QncydzJ3MncydzJ3QndCd0J3MndCdzJ3QndCd0J3Q3dCdzJ3QndCd0J3Q3dDd0N3Q3dDeEN4Q3hDeEN4U3hDeFN4Q3hDeEN4Q3hTeFN4U3hSd0J3QndDd0N3Q3hDeEN4QndDd0N3Q3dDeEN4Q3hDeEN4Q3hTeEN4U3hUeFR4VHhTeFN4U3hUeFR4VHhUeFR4U3hUeFR4VHhUeFR4VHhUeVR4VHhUeFR4VHhUeWR5VHlkeWV5ZHlleWV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlleXR4VHhUeFR5VHlleWR5ZXlkeFR5ZHlUeWR5ZXlleWV5ZXlleWV5ZXlleWV5dXl2enV5ZXlleWV5dXl2enZ6dnp1eWV6dXl2enZ6dnp2enZ6dXl2enZ6dnp2enZ6hnp3eoZ6h3qHeod7h3uHe5d7iHuXeod7h3uHe4d7mHuYe5h7lnp2enZ6dnp2eod6h3qHeoZ6dnqGend6h3qHe4d7h3uHe4d7l3uIe5h7mHyYe5h8l3uYe5h7mHuYe5l8qHyZfKZ8h3yWfId8l3yXfJd8l3yWfJd8l3yXfJd8l32XfJd9l32XfZd9l32XfZd9l32YfZd9l32XfZd9l32Yfah9mH2nfJd8l3yXfJd9l32XfZd9l3yXfZd8l32XfZd9l32XfZd9l32XfZh9mH2ofah9qH2nfZh9qH2Yfah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofal9qX6pfal+qH2pfah9qX6pfql+uX6pfrh9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qX2ofal+qX2pfql+qX65frl+uX65frl+qX65fql+uX65frl+uX65frl+uX65frl+uX65frl+uX65frl+uX65frl+uX65frl+un65frp+un66frp+un66frp+un66frp+un7Kfrp+yX65frl+uX65frp+uX66frl+uX65frl+un66frp+un66frp+un66frp+un7Kfsp+yn66fsp+un7Kfsp+yn7Kfsp+un7Kfsp+yn7Kfsp+yn/Kfsp+yn7Kfsp+yn/Kf8p/yn/Lf8p/y3/Lf8efi3/Lf8t/y3/Lf8t/y3/Lf8t/y37Kfsp+yn7Kf8p/y3/Kf8t/yn/Kf8p/yn/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lfst/y3/Lf8t/y3/Lf8t/y3/Lf8t/wP8A/wt+yn6w/wD/CYyoi5p+yo66fsqNuYyompmMqJqA/wD/B5l2qGD/AP8Fp1WnVpl2p2eZdqhlp1WnZadlp2p+yo27fsqNuYyompmNuYyrfsp+y3/LfsqNuY27fsqNt5mGmHial5qGqGaoZ5mHmYmMqYuqjbqNuIuYi5qNuo20uleZhqhnmYPOMP8ImpiLlqhnmXaoZ5l4moibl5qImpD/AP8ImpeZge4Q/waodadompeZiJqXmYaodadmmHanZph3mYiaiJuYmoiLmYupjKmLqYyqjbqNuoy6jbqOy47Im5iaiYypi6eZhph4m5iaio26jLuOy47JjKmMqo26jbD/AP8EtlS2UP8A/wS2VLVVplW2VadlpmW2VLZVplWmUP8A/wS1RLZQ/wW2VLZVtlS2VLZVplWmVLZVplWmUtwmqHaoZ5mHmYanZqdnmYeZiYupi6qNuo25i6mLqo26jbanZqdnmYeZhqdkuleZh5mJi5mLmo26jbmLmYuajbqNtaZg/wWmYP8A/wLMMP8Gp2S5QP8A/wD/AP8EuUD/AP8A/wD/Badlp2D/AP8GqGaodadlp2LcJaZVp2WnZaZVp2LcItwnmYeZctwi3CaYdqdom5iaiYyoi5eZhqh3moeZc7lFtlWnZaZVplWnZadmp2WnZadmqHaodqdmmHaYd5mDzTeZdqh2mHaYdqdmqHanZqdmqGWnZqdmqHaoZqh2mHWnZadlp2WnZadR3CanZqdmqGaYd5l3mYaYdph3mYeZhadmqHaYd5mHmXeZiJqIi5eZiJqYmpmMqYupjKqNuo24moiLmYupjKiLmIuajLqMuo26jbt+y37Kfrp9u37LfsD/AP8Fp2anYP8A/waYdph2mHaod5mGmHaYdph2mHaYc803mYaZdph2mHanZph2p2aYdph2mHaoZph2qGaYdph4ipeaiYyoi5eZh5l4ipiaio25jKt+yn25jKmLqo26jbaYdph3moeahph3mXiaiIqYi5iLmYy5jKmLmYyqjbqNtLlA/wWnZqhg/wD/Bph3mXaoZph2mHeZd5l3mXeZh5mA/wD/Bph2mGD/AP8Fp2WmVph2mGaZdph1p2WmVadlpleZiIqIi5mLmIqXiomLqIuZjKmMqn26fbmMqYyqfbp9t5mGmHiKl5qGmGWnZ5l2mXmMqIuZjKmMqIuYipmMqYyh7RaYZadWmGeZeIuXmXiLladWmGWnZphmmXiKlpl3iomMqn25jKp9un26fbp9un25jKl9qIyZfap9un26fbp9tadmmHaZd5mHmXeKh4qIi5iKmIuZjKmMqIuZjKmMqXyoi5l8qYypfal9un25fbp9uXypfbl9qX25fbp9un25fbl9p4yJfaiLkd4g/weKhph5fbiMmX25jKeKhpl4i5eJgP8B3RWnZKZTujWXZKZVp1WXZadWmGWnZKZVp1WnVadafbl8qX25faiLl4qJjKiLmX25fbp9uX25fKiMmX2pfKaZdphnioeJdZdll2aZdpl4i5eKiXyojJeKh4qIi5iLlphniXWXZph3ioaJdol2iXWXZZhll2WYZpl2iXaZdol1mWLMJphll2D/AP8EplSmRpl1mGaJdpl1l1SmVZhll1WYZph2iXeJdol3ioeKh4uHioeLiIuYfJiLmHuYfJh8l4qHioeLl4uGiXWYZ4qGiXh8mHuYfJh8l4uXioh8mHuQ/wD/BKVEpUHcFKZEpkSmVKZEpkSmVKZUpkSmVKZUplSmVKZUplSWU7ow/wSXVZdkllSXVJdVl1WXVZhlmGWIZZdll1aJdZhll1WXVZhlmGeKhol3i4eKhol2iXeKh4qFl2WYZZhmiXWIZolmiXaJdol2ineKh4uGioeKh3uHe4D/AP8FmGWYYP8A/wWXVJZViGWYZYhlmGWXVJZVl1SWUP8A/wOmQ6VB2xSWQ6VElkOlQ6VDpkOlQ6VElkOlRJZGiXWIZol2iXWXZJdViGWYZ4p2ind7h3qGiXWJdoqGinSWQ6ZEl1SXVKZEllSXVZdViGWIZol2iXWIZYhmiXaKdJdViWSXVYhminZ6hop2eoSXVYhkl1WIZol2enaJdnp2e4Z7hnuGenZ6dnp2e4Z6dnp2enZ6dnp2enZ6dnp2enSXVYhliGWJZYl2enaKdnp1iWaJdop2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dXp1enV6dXp2enV6dnp1enV6dXp1enV6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dXp1enV6dXp1enV6dXplenV6ZXp1enV6dXp1enV6ZXplemV6dXp1enV6ZXplemV6ZXplenV6ZXplemV6ZXllemV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlleWV5ZHllemV6ZXplemV6ZXlleWV5ZXpleWV6ZXlleWV5ZXlleWV5ZXlleWV5ZXlkeWR5ZHlleWV5ZXlkeWR5ZHlkeWR5ZXlkeWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlkeVR5ZHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5ZHlkeWR5ZHlkeVR5VHlUeWR5ZHlkeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeFR5VHlUeVR5VHlUeFR5VHhUeVR5VHlUeVR4U3hUeFN4VHlUeFR4VHhTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4RHhUeFR4U3hTeFN4U3hTeFR4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4Q3hDeEN4Q3hTeFN4U3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hCeEJ4QnhDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4QnhCeEJ4QndDeEJ4Q3hCeEJ3QndCeEJ3QnhCeEJ4QnhCd0J3QndCd0J3QndCd0J3QndCd0J3QndCd0J3QndCd0J3Qncyd0J3MndCd0J3QncydzJ3MncydzJ3QndCd0J3QndCd0J3QndCd0J3QndCd0J3Qncyd0J3QndCdzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncxdzF3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzF3MXcxdzF3MncxdzF3MXcxdzF3MXcxdzJ3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdjF3MXYxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdjF3MXYxdzF2MXcxdjF2MXYxdjF2MXcxdjF3MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYhdiF2IXYhdjF2MXYhdiF2IXYhdiF2MXYxdjF2MXYxdjF2MXYhdjF2MXYxdjF2MXYxdjF2MXYhdiF2MXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdjF2IXYxdiF2IXYhdiF2IXYxdjF2MXYxdjF2MXYxdjF3MXYxdzF2MXYxdjF2MXcxdzF3MXcxdiF2IXYhdjF2MXYxdjF2MXYhdjF2IXYxdjF2MXYxdjF2MXYxdzF3MXcydzF3MncxdjF3MXcxdzJ3MncydzJ3MXcydzF3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3Qncyd0J3QndCd0N3Qncyd0J3QndCd0N3Q3dDd0J3MncydzJ3MncydzJ3MndCdzJ3MncydzJ3MndCd0J3QndCd0J3Q3dDd0N4Q3dDeEJ3Q3dCd0N3Q3hDeEN4Q3hDd0N4Q3hDeEN4Q3hTeEN4U3hDeEN4Q3hDeFN4U3hUeFN4VHhTeFR4VHhUeFR4VHlUeFR4VHhUeFR4VHlkeFR5Y3hDeFN4Q3hTeFR4U3hUeFN4U3hTeFN4VHhUeFR4VHhUeFR4VHhUeVR5ZHlkeWV5ZHhUeWR4VHlkeWV5ZXlleWR5ZHlkeWV5ZXlleWV5ZXlkeWV5ZXlleWV5ZXlleWV5dXlleXV5dnp2enZ6dnp2enV5dnp2enZ6dnp2enZ6dnqFeWV5ZXlleWV5ZXl1eXZ6dXlleWV5ZXl1eXZ6dnp2enZ6dnp2enZ6dnp3eoZ6h3qGenZ6dnp2eod6h3uHeod7hnp3eod6h3qHe4d7l3uIe5d6h3uHe4d7h3uYe5h7mHuYe5h7mHuYfJl8qXypfKl8qHuZfKh8mXypfKl8qXypfKd7h3uXe4h7mHuYe5h7mHyXe5h7mHuYe5h7mHyofJl8qXypfKl8qXypfKp8uXyqfbl8qXypfKl8qny6fbp9un23fZd9l32XfZd9l32XfZh9l32XfZd9l32XfZh9qH2Yfah9mH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9p32XfZd9mH2YfZh9qH2ofad9mH2YfZh9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofal9qH2pfqh9qH2ofah9qX2pfql+qX6ofal9qH2pfql+qX65fql+uX65frl+uX65frl+uX65frl+uX65frl+uX65frl+uX65fal+qX2pfql+uX65frl+uX6pfrl+qX65frl+uX65frl+uX65frl+uX65frl+un65frl+uX65frp+un66frp+uX66frl+un66frp+un66frp+un66frp+un66frp+un7Kfrp+yn7Kfsp+yn7Kfsp+yn7Kfsp+yn7Kf8p/yn/Kf8p+un66frp+un66fsp+yn7Kfrp+un66frp+yn7Kfsp+yn7Kfsp+yn/Kf8p/yn/Lf8p+yn/Kf8p/yn/Lf8t/y3/Kf8t/yn/Lf8t/y3/Lf8t/yn/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/bf9t/23/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf9t/23/bf9t/23/Lf9t/y3/bf9t/23/bf9t/y3/Lf9t/23/Lf8t/23/bf9t/23/bf9t/23/bf9t/237Lfst/3H/bfst+zH/cf9x/3H/cf9x/3H/cf9x/3H/bf9t/23/bf9t/3H/bf9x/23/bf9t/23/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/237Lfsx/3H/bf8t/3H/cf9x/3H/cf9x/3H/cf9x/3H/bf9t/3H/cf9t/y37Mf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/bfst+zH/cf9t+y37Mf9x/3H/cf9x/3H/cf9x/3H/cf9t+y37Mf9x/237Lfsx/23/cf9x/3H/cf9x/23/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9qNuYyrfsqNuYuYmomMqYurfst+y3/Lf8qNuo27fst+x5mHmYmLmIuYmoiLmYupjKqMuoy7jsqOyo26jbt+y37Mf9x/3H/cf9t/23/cf9x/3H/cf9x/3H/cf9x/3H/cf9t+y37Mf9x/23/Lf8x/23/cf9t/3H/bf9t/23/bf9t/2YyqjbqNu37Lfst+y37Lf8t+y37Lfst+y37Lf8t/y3/bfst/y3/Lf8t+y37Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf9t/23/bf8t/23/Lf9t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lfst/y3/Lf8t/y3/Lfst+y37Lfst+y37Lf8t+y37Lfst+y37Lfst+y37Lfst+y37Lfsp+yn67fst+yn7Kfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfsp+yn7Lfst+yn7Kfbt+yn7Lfst+y37Lfst+yn7Kfsp+yn26fbp+yn66fbp9un66frp+yn66frp+un66frp+un67fst+y37Kfsp+yn7Kfsp+yn7Kfsp+yn7Kfsp+un7Kfrp+un66frp+un66frp+un66frp+un66frp+un66frp+uX25fbp+un66fbp9un66fbp+un66frp+un66fbp9un26fbp9un26fbp9un26fbp9un26fbp9un26fbp9un25fbp+un66frp9un26fbp9un26frp9un26fbp9un26fbp9un26fbp9un26fbl9uX25fbp9un26fbp9uX25fbl9uX2qfbl9uX25fbl9qX2pfal9qX25fbl9uX2pfal9qX2pfal9qXypfal9qXypfKl9qX2pfal9qX2pfal9qX2pfal9qX25fal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal8qX2pfKl8qHypfal8qXyofKl8qHypfal8qXypfKl8qHypfKh8qHyofJh8qHyofJh8mHyYfJh8qHyYfJh8mHyYfJh8mHyZfKl8qXypfKh8qHyofKh8qXyofKh8qHyofKh8mHyofJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYe5h8mHyXe5d7mHyYfJh8mHyYfJh8mHyYfJh8mHyXe5d7mHyYfJd7l3uHfJd7mHyXfJh8l3uXe5d7l3uXe5h8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8l3yYfJd8mHyXe5d7l3uXe5d7h3uXe4d7l3uXe5d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4Z6hnqHe4d7hnp2eod7h3uHe4d7h3uHe4d7hnuHe4Z7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7hnuGe4Z7h3uHe4d7hnuGe4Z7hnuGe4Z6dnp2e4Z7hnp2enZ7hnp2e4Z7hnuGe4Z7hnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2e4Z7dnuGe3Z6dnp2enZ6dnt2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dXp2enV6dnp2enZ6dnp1enV6dXp1enZ6dnp2enV6dXp1enV6dXp1enV6dXp1emV6ZXplemV6ZXp1emV6ZXplemV6ZXpleWZ6dXp1enV6dXp1enV6dXplenV6dXp1enV6dXplenV6ZXplemV6ZXplemV5ZXlleWV6ZXplemV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlkeWV5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5VXlleWV5ZXlleWR5ZXlkeWV5ZXlleWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlUeVR5VHlkeWR5ZHlkeVR5VHlUeVR5ZHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeFR4VHhTeFR5VHhUeVR4U3hTeFN4U3hUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR4VHlUeFR4U3hUeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hDeEN4Q3hTeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4U3hTeFN4U3hTeEN4Q3hDeFN4U3hTeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEJ4QnhCeEJ4QnhCeEJ3QndCd0J3QndCeEJ3QndCd0J3QndCd0J3Q3hDeEN4QnhCeEJ4QnhCeEN4QnhCeEJ4QnhCd0J3QndCd0J3QndCd0J3QndCd0J3QndCd0J3QndCd0J3QndCd0J3QndCd0J3QndCdzJ3Qncyd0J3QndCdzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3Mncyd0J3MndCdzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncxdzJ3MXcydzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzJ3MncydzJ3MncxdzF3MXcydzF3MncxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF2MXcxdzF3MXYxdzF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXcxdzF3MXcxdzF3MXcxdjF3MXcxdzF2MXcxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2IXYhdjF2MXYxdjF2MXYhdiF2MXYhdjF2IXYxdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdjF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYxdiF2IXYhdiF2IXYhdiF2MXYxdjF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdjF2IXYxdjF2MXYxdjF2IXYxdiF2MXYxdjF2MXYxdjF2MXYxdjF2MXcxdjF3MXYxdjF2MXYxdzF3MXcxdzF3MXcxdzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MXYxdzF2MXcxdzJ3MXcydzF3MXcxdzF3MncydzJ3MncydzJ3MncydzJ3MncydzJ3QncydzJ3MncydzJ3QndCd0J3MndCdzJ3QndCd0J3QndCd0J3QndCd0J3Q3dCd0N3Q3dDeEN3Q3hDeEN4U3hDeFN4Q3hDeEN4Q3hDeFN4U3hSd0J3QndCd0N3Q3hDd0N4QndDd0J3Q3dDeEN4Q3hDeEN4Q3hDeEN4U3hUeFN4VHhTeEN4U3hTeFR4VHhUeFR4U3hUeFN4VHhUeFR4VHhUeFR4VHhUeFR4VHhUeVR4VHlkeWR5ZHlleWV5ZXlleWV5ZHlleWV5ZXlleWV5ZXlleXR4VHhUeFR4VHlkeWR5ZXlkeFR5VHhUeWR5ZXlleWV5ZXlleWV5ZXlleWV5dXl2enV5ZXlleWV5dXl2enZ6dnp1eWV5dXl2enZ6dnp2enZ6dXl2enZ6dnp2enZ6dnp2eoZ6d3qGeod6h3uHe5d7iHuXeod7h3qHe4d7mHuYe5h7lnp2enZ6dnp2end6hnqHeoZ6dnp2enZ6h3qHe4d6h3uHe4d7h3uIe5h7mHuYe5h8l3uYe5h7mHuYe5h8qHyZfKh7mHuYe5h8mXypfKl8qXyoe5h8qHyZfKl8qXypfKl8qXyqfLl8qn26fbp9un26fbp8un26fbp9un27fbp9u33IfKl8qXypfKl8qny5fKp9uXypfKl8qXypfLp9un26fbp9un26fbp9un27fct9y33Kfbp9un27fct9y37Lfct+yH2Yfah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofal9qX6pfal+qH2ofah9qX6pfql+qX6pfrh9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qX2ofal9qX2pfql+qX6pfrl+uX65frl+qX65fql+uX65frl+uX65frl+uX65frl+uX65frl+uX65frl+uX65frl+uX65frl+un65frp+un66frp+un65frp+un66frp+un66frp+yX65frl+uX65frp+uX66frl+uX65frl+un66frp+un66frp+un66frp+un7Kfrp+yn66frp+un66fsp+yn7Kfsp+un7Kfsp+yn7Kfsp+yn/Kfsp+yn7Kfsp+yn/Kf8p/yn/Lf8p/y3/Lf8t/y3/Lf8p/y3/Lf8t/y3/Lf8t/y3/Kfsp+yn7Kfsp/yn/Kf8t/yn7Kf8p+yn/Kf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/bf9t/23/bf9t/23/bf9t/23/bf9t/23/bf9t/23/bf9t/y3/Lf8t/y3/bf9t/23/bf8t/y3/Lf9t/23/bf9t/23/bf9t/23/bf9x/3H/cf9t/23/bf9x/23/cf9x/3H/bf9x/23/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/bf9x/23/cf9t/23/bf9t/23/bf9t/23/bf9t/23/Lf9t/zH/cf9x/3H/cf9x/23/bf9x/3H/cf9x/3H/bf9t/23/bf9t/23/bf9t/23/Lf8t/y3/bf8t/23/Lf8t/y3/Lf8t/23/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lfst/y37Lfst+y37Lfst/y37Lfst+y37Lfst+y37Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfsp+y37Lfst+y37Lfsp+yn7Kfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Kfst+yn7Kfsp+yn7Kfrp+yn7Kfsp+yn7Kfrp+un66fsp+yn7Kfsp+un66frp+un7Kfrp+yn66frp+un66frp+un66frp+un66frp+un26frp+un66frp+un26fbp9un66frp+un66frp+un66frp+un66frp+un66frp+un66frp+un66fbp9un26fbp9un66fbp+un26fbp9un26fbp9un26fbp9un26fbp9un26fbp9un26fbp9un26fbl9un25fbl9uX25fbl9qX2pfal9uX25fbl9qX2pfal9qX2qfbp9un26fbl9uX25fbl9un26fbp9uX25fbl9uX25fal9uX2pfbl9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfKl8qXypfKl8qX2pfKl8qXypfKh8qXyofKl9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qXypfKl8qXypfKl8qHyofKh8qHyofKl8qHypfKh8qHyofJh8qHyYfKh8qHyofKh8mHyYfJh8mHyofJh8qHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyofJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyXfJh8mHyYfJh8mHyXfJd8l3uYfJh8mHyXfJd7l3uXe5d7h3uXe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uIfJd7l3yXe5d7l3uHe5d7h3yXe5d7l3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7hnuGe4Z7hnuGe4Z7hnt2e4Z6dnuGe4Z7hnuGe3Z6dnt2end7h3uHe4d7h3uGe4Z7hnuHe4Z7h3uGe4Z7hnuGe4Z7hnuGe4Z7hnp2enZ6dnp2enZ7dnp2e3Z6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dXp1enV6dXp2enV6dnp1enV6dXp1enV6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dXp1enV6dXp1enV6dXp1enV6dXp1enV6dXp1enV6ZXp1emV6dXp1enV6ZXplemV6ZXplenV6ZXplemV6ZXplemV6ZXpleWV6ZXlleWV5ZXlleWV5ZXlleWV5ZXlleWV5ZHllemV6ZXplemV6ZXlleWV5ZXplemV6ZXlleWV5ZXlleWV5ZXlleWV5ZXlkeWR5ZHlleWV5ZXlkeWR5ZHlkeWR5ZXlkeWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlUeWR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5ZHlkeWR5ZHlkeVR5ZHlUeWR5ZHlkeWR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeFR5VHhUeVR5VHlUeVR4VHhUeFN4VHlUeFR5VHhUeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4RHhUeFR4U3hTeFN4U3hTeFR4U3hUeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hDeEN4Q3hTeFN4U3hTeEN4Q3hDeEN4U3hDeFN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4QnhDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4QnhCeEJ4QnhDeEJ4Q3hCeEJ4QnhCd0J3QnhCeEJ4QnhCd0J3QndCd0J4QndCeEJ3QndCd0J3QndCd0J3QndCd0J3QncydzJ3MndCd0J3QndCdzJ3MncydzJ3QndCd0J3QndCd0J3QndCd0J3QndCd0J3QndCd0J3MndCd0J3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzF3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MXcxdzF3MncydzJ3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXYxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdjF3MXYxdzF3MXcxdjF2MXYxdjF2MXcxdjF3MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2IXYhdiF2IXYxdjF2MXYhdiF2IXYhdiF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYhdiF2IXYhdiF2IXYhdiF2MXYhdjF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYxdiF2IXYhdiF2IXYxdjF2MXYxdjF2MXYxdjF3MXYxdzF2MXYxdjF2MXYxdzF3MXcxdiF2MXYhdjF2IXYxdjF2MXYhdiF2MXYxdjF2MXYxdjF2MXYxdjF2MXcxdzF3MncxdjF3MXcxdzF3MncydzJ3MXcxdzF3MncydzJ3MncydzF3MncydzJ3MncydzJ3MncydzJ3Mncyd0J3QndCd0J3Qncyd0J3QndCd0N3QndDd0J3MncydzJ3MncydzJ3MndCdzJ3MncydzJ3MndCd0J3QndCd0J3QndDd0N4Q3dDeEJ3Q3dCd0N3Q3dDeEN4Q3hDd0N4Q3dDeEN4Q3hDeEN4U3dDeEN4Q3hDeEN4U3hTeFN4VHhTeFR4VHhUeFR4VHhUeFR4VHhUeFR4VHlUeFR5Y3hDeFN4Q3hTeFR4U3hUeFN4Q3hTeFN4U3hUeFR4VHhUeFR4VHhUeFR5VHlkeWV5ZHhUeVR4VHlkeWV5ZXlleWR5ZHlkeWV5ZXlleWV5ZXlkeWV5ZXlleWV5ZXlleWV5dXlleXV5dXl2enZ6dnp2enV5dnp2eXZ6dnp2enZ6dnqFeWV5ZXlleWV5ZXl1eWV5dXlleWV5ZXlleXZ6dnp2enZ6dnp2enZ6dnp3eoZ6h3qGenZ6dnp2eod6h3uHeod7hnp3eoZ6h3qHe4d7h3uIe5d6h3uHeod7h3uIe5d7mHuYe5h7mHuYe5h8qXypfKl8qHuYfKh7mXypfKl8qXypfKd7h3uHe4h7mHuYe5h7mHuXe4h7l3uYe5h7mHyoe5l8qHypfKl8qXypfKl8uXyqfbl8qXypfKl8qXyqfbp8un25fKl8uXyqfbp9un26fbp9uXy6fbp8un26fbp9un27fcp9u33Lfct9y33Lfst+y37Lfct+y33Lfst+zH7Lfsx+2n26fbp9un26fbt9y33Lfcp9un26fbt9y33Lfst9y37Lfct+y37Lfsx+zH7cftx+237Mfst+zH7cftx+3H7cfth9qH2ofah9qH2pfql9qX6ofal9qH2pfal+qX6pfql+uX65frl+uX65frl+uX65frl+uX65frl+uX65frl+uX64fal+qX6pfql+uX65frl+uX6pfrl+qX65frl+uX65frl+uX65frl+uX65frl+un65frl+uX65frl+un66frp+uX66frl+un66frp+un66frl+un66frp+un66frp+un66frp+yn7Kfsp+yn7Kfsp/yn7Kfsp+yn7Kfsp+yn/Kf8p+un66frp+un66fsp+un7Kfrp+un66frp+yn7Kfsp+yn7Kfsp+yn7Kf8p/yn/Lf8p+yn/Kfsp/yn/Lf8t/y3/Kf8p/yn/Lf8t/y3/Lf8t/yn/Lf8p/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/bf8t/y3/Lf8t/y3/bf8t/23/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf9t/23/bf9t/23/Lf8t/y3/bf9t/23/bf9t/23/bf9t/23/bf9t/23/bf9t/23/bf9t/23/bf9t/23/bf9t/3H/cf9x/3H/cf9t/3H/cf9x/3H/cf9x/3H/bf9t/23/bf9t/23/bf9x/23/bf9t/23/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/bf9x/23/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/bf9x/23/cf9x/3H/bf9t/23/bf9t/3H/bf9t/23/bf9t/23/bf9t/23/bf9t/23/bf9t/23/bf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/23/bf9t/23/bf8t/y3/Lf9t/23/bf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lfst/y3/Lf8t/y3/Lfst+y37Lf8t/y3/Lf8t+y37Lfst+y3/Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+yn7Lfst+y37Lfst+yn7Lfsp+yn7Kfsp+yn66frp+un66frp+yn66fsp+un66frp+un67fst+y37Kfsp+yn7Kfsp+y37Kfst+yn7Kfsp+yn7Kfrp+un66frp+un66frp+un66frp+un66frp+un66frp+un66frp+un66frp9un66fbp+un66frp+un66fbp9un26fbp9un26fbp9un26fbp9un26fbp9un26fbp9un25fbp+un66frp+un26fbp9un26frp9un66fbp9un26fbp9un26fbp9un26fbl9uX25fbp9un26fbl9uX25fbl9uX26fbl9uX25fbl9uX2pfbl9qX25fbl9uX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX25fal9uX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal8qX2pfKl9qX2pfal8qX2pfKl8qXypfal8qX2pfKl8qHyofKh8qHyofKh8qHyofJh8mHyYfJh8qHyofKh8mHyYfJh8mHyZfal8qXypfKh8qHyofKh8qXypfKl8qHyofKh8mHyofJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8l3uXfJd7mHyYfJh8l3yXe5d7l3uXe4h8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJd8mHyXe5d8l3uXe5d7h3uXe4d7l3uXe5d7h3uHe4d7h3uHe5d7h3uXe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7hnuHe4Z7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4Z7hnuGe4Z7h3uHe4d7hnuGe4Z7hnuGe4d7hnuGe4Z7hnuGe4Z7hnt2e4Z7hnuGe4Z7dnp2e3Z6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2e4Z7dnuGe3Z6dnp2enZ6dnuGe3Z6hnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dXp2enZ6dnp2enZ6dnp1enV6dXp1enZ6dXp2enV6dXp1enV6dXp1enV6dXp1enV6ZXplemV6ZXp1emV6dXplemV6ZXpleWZ6dXp1enV6dXp1enV6dXp1enV6dXp1enV6dXplenV6ZXplemV6ZXplemV5ZXpleWV6ZXplemV5ZXlleWV5ZXllemV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlleWV5ZHlleWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZXlleWV5ZXlleWR5ZHlkeWV5ZXlleWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlUeWR5VHlkeWR5ZHlUeVR5VHlUeVR5ZHlUeWR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeFR4VHhTeFR5VHlUeVR4VHhTeFN4U3hUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR4VHlUeFR5VHhUeFN4U3hTeFN4U3hUeFN4VHhTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4U3hTeFN4U3hTeEN4U3hDeFN4U3hTeFN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hCeEN4QnhCeEJ4QnhCd0J3QndCeEJ3QndCd0J3QndCd0J3Q3hDeEN4Q3hCeEJ4QnhCeEN4QnhDeEJ4QnhCd0J4QndCeEJ3QndCd0J3QndCd0J3QndCd0J3QndCd0J3QndCd0J3QndCd0J3QndCdzJ3Qncyd0J3QndCd0J3QncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3Mncyd0J3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncxdzJ3MXcydzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzJ3MncydzJ3MXcxdzF3MXcydzJ3MncydzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXcxdzF3MXcxdzF2MXcxdjF3MXcxdzF3MXYxdzF3MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdiF2MXYxdjF2IXYhdiF2MXYhdjF2MXYxdjF2IXYhdjF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYxdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2MXYhdiF2IXYhdiF2MXYhdjF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdjF2MXYxdjF2IXYhdiF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF3MXYxdjF2MXYxdjF3MXcxdzF3MXcxdzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MXYxdjF2MXcxdzF3MXcydzF2MXcxdzF3MXcydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3Qncyd0J3MncydzJ3QndCd0J3QndCdzJ3Qncyd0J3Q3dCd0N3Q3dDd0N3Q3hDeEN4Q3hDeFN4Q3hDeEN4Q3hDeFN4U3hSd0J3QndCd0N3Q3dDd0N4QndDd0J3Q3dDd0N4Q3hDeEN4Q3hDeEN4U3hUeFN4VHhTeEN4U3hTeFN4VHhUeFR4U3hUeFN4VHhUeFR4VHhUeFN4VHhUeFR4VHhUeVR4VHlkeVR5ZHlkeWV5ZXlleWV5ZHlleWR5ZXlleWV5ZXlleWR4VHhUeFR4VHlUeWR5ZHlkeFR5VHhUeWR5ZXlkeWV5ZXlleWV5ZXlleWV5dXlleXV5ZXlleWV5ZXl2enV5dnp1eWV5dXlleXZ6dnp2enZ6dXl2enV5dnp2enZ6dnp2eoZ6d3qGeod6h3uHe4d7h3uXeod7h3qHe4d7iHuXe5h7lnp2enZ6dnp2end6hnp3eoZ6dnp2enZ6h3qHe4d6h3uHeod7h3uHe5h7mHuYe5h7l3uIe5d7mHuYe5h8mHuZfKh7mHuYe5h7mHyZfKl8qXyoe5h8mHuZfKl8qXypfKl8qXypfKl8qny6fbp9un26fbl8qn26fLp9un26fbp9u33IfJl8qXypfKl8qXypfKp8uXypfKl8qXypfKp9uny6fbp9un26fbp9un27fct9y33Kfbp9un27fct9y33Lfct+yn27fct9y33Lfct+y37Lfst9y37Lfct+y37Lfst+zH7bfsx+3H7cftx+3H7cftx+3H7cftx+3H7cftx+3H7cftt9y37Lfst+zH7Mftx+3H7bfst+y37Mftx+3H7cftx+3H7cftx+3H7cftx+3H7cftx+3H7cftx+3H7cftx+3H7Q==
+
+
+
+
+
diff --git a/trunk/CardSaveData/ToSD/Imp/banner/banner_dummy.bcwav b/trunk/CardSaveData/ToSD/Imp/banner/banner_dummy.bcwav
new file mode 100644
index 0000000..d579907
Binary files /dev/null and b/trunk/CardSaveData/ToSD/Imp/banner/banner_dummy.bcwav differ
diff --git a/trunk/CardSaveData/ToSD/Imp/banner/banner_imp.cbmd b/trunk/CardSaveData/ToSD/Imp/banner/banner_imp.cbmd
new file mode 100644
index 0000000..e64d183
Binary files /dev/null and b/trunk/CardSaveData/ToSD/Imp/banner/banner_imp.cbmd differ
diff --git a/trunk/CardSaveData/ToSD/Imp/banner/icon2_24.ctpk b/trunk/CardSaveData/ToSD/Imp/banner/icon2_24.ctpk
new file mode 100644
index 0000000..a96f378
Binary files /dev/null and b/trunk/CardSaveData/ToSD/Imp/banner/icon2_24.ctpk differ
diff --git a/trunk/CardSaveData/ToSD/Imp/banner/icon2_48.ctpk b/trunk/CardSaveData/ToSD/Imp/banner/icon2_48.ctpk
new file mode 100644
index 0000000..550e559
Binary files /dev/null and b/trunk/CardSaveData/ToSD/Imp/banner/icon2_48.ctpk differ
diff --git a/trunk/CardSaveData/ToSD/Imp/banner_null_icon.bsf b/trunk/CardSaveData/ToSD/Imp/banner_null_icon.bsf
new file mode 100644
index 0000000..17dfacb
Binary files /dev/null and b/trunk/CardSaveData/ToSD/Imp/banner_null_icon.bsf differ
diff --git a/trunk/CardSaveData/ToSD/Imp/imp_list/batch/cts_inf.BAK b/trunk/CardSaveData/ToSD/Imp/imp_list/batch/cts_inf.BAK
new file mode 100644
index 0000000..e69de29
diff --git a/trunk/CardSaveData/ToSD/Imp/imp_list/batch/cts_inf.txt b/trunk/CardSaveData/ToSD/Imp/imp_list/batch/cts_inf.txt
new file mode 100644
index 0000000..e4c75a9
--- /dev/null
+++ b/trunk/CardSaveData/ToSD/Imp/imp_list/batch/cts_inf.txt
@@ -0,0 +1 @@
+-t
diff --git a/trunk/CardSaveData/ToSD/Imp/imp_list/batch/cts_list.BAK b/trunk/CardSaveData/ToSD/Imp/imp_list/batch/cts_list.BAK
new file mode 100644
index 0000000..e69de29
diff --git a/trunk/CardSaveData/ToSD/Imp/imp_list/batch/cts_list.txt b/trunk/CardSaveData/ToSD/Imp/imp_list/batch/cts_list.txt
new file mode 100644
index 0000000..0f11b78
--- /dev/null
+++ b/trunk/CardSaveData/ToSD/Imp/imp_list/batch/cts_list.txt
@@ -0,0 +1 @@
+EJF10000237
diff --git a/trunk/CardSaveData/ToSD/Imp/imp_list/batch/cts_sign.dat b/trunk/CardSaveData/ToSD/Imp/imp_list/batch/cts_sign.dat
new file mode 100644
index 0000000..990b849
--- /dev/null
+++ b/trunk/CardSaveData/ToSD/Imp/imp_list/batch/cts_sign.dat
@@ -0,0 +1,2 @@
+c;qi|x$^DQl_O?OQw]idUʛPL8QLQj)~SVO>( $6i(H?8?0ۄU
zOW$}葯PГ<]Ϩ[)3v}2^Fo{5TzdNA*-\$4]9KmTF0L39i='[4>Q,/Gȗ]03
+=
\ No newline at end of file
diff --git a/trunk/CardSaveData/ToSD/Imp/imp_list/batch/makekey.bat b/trunk/CardSaveData/ToSD/Imp/imp_list/batch/makekey.bat
new file mode 100644
index 0000000..813beb0
--- /dev/null
+++ b/trunk/CardSaveData/ToSD/Imp/imp_list/batch/makekey.bat
@@ -0,0 +1,4 @@
+openssl genrsa -out private_key.pem 2048
+openssl enc -d -base64 -in private_key.pem -out private_key.der
+openssl rsa -pubout -inform DER -outform DER -in private_key.der -out public_key.der
+
diff --git a/trunk/CardSaveData/ToSD/Imp/imp_list/batch/makekey_100.bat b/trunk/CardSaveData/ToSD/Imp/imp_list/batch/makekey_100.bat
new file mode 100644
index 0000000..0524431
--- /dev/null
+++ b/trunk/CardSaveData/ToSD/Imp/imp_list/batch/makekey_100.bat
@@ -0,0 +1,3 @@
+rem ver1.0.0p
+openssl genpkey -out private_key.der -outform DER -algorithm rsa -pkeyopt rsa_keygen_bits:2048 -pkeyopt rsa_keygen_pubexp:65537
+openssl rsa -pubout -inform DER -outform DER -in private_key.der -out public_key.der
diff --git a/trunk/CardSaveData/ToSD/Imp/imp_list/batch/makesign.bat b/trunk/CardSaveData/ToSD/Imp/imp_list/batch/makesign.bat
new file mode 100644
index 0000000..f853d3c
--- /dev/null
+++ b/trunk/CardSaveData/ToSD/Imp/imp_list/batch/makesign.bat
@@ -0,0 +1,7 @@
+@echo off
+if "%1"=="" goto 1
+openssl dgst -sha256 -binary -keyform DER -sign ../key/private_key.der -out cts_sign.dat %1
+goto end
+:1
+openssl dgst -sha256 -binary -keyform DER -sign ../key/private_key.der -out cts_sign.dat cts_list.txt
+:end
diff --git a/trunk/CardSaveData/ToSD/Imp/imp_list/caution.txt b/trunk/CardSaveData/ToSD/Imp/imp_list/caution.txt
new file mode 100644
index 0000000..496953d
--- /dev/null
+++ b/trunk/CardSaveData/ToSD/Imp/imp_list/caution.txt
@@ -0,0 +1,5 @@
+閧̈͒
+쐬Kv̖ɂ͏oȂ
+
+쐬́AzzŎgpo[WɓĂ
+ƃyA̔閧g
diff --git a/trunk/CardSaveData/ToSD/Imp/imp_list/digit.txt b/trunk/CardSaveData/ToSD/Imp/imp_list/digit.txt
new file mode 100644
index 0000000..6691db8
--- /dev/null
+++ b/trunk/CardSaveData/ToSD/Imp/imp_list/digit.txt
@@ -0,0 +1,45 @@
+
+{̈̃VAŌ̎lpgɓ
+digitƂ̂炵
+Xg쐬ɓ͈Ⴂ`FbN̂Ɏg
+R}hCŃt@Cw肷ȒPȃ`FbJ[Ƃ
+
+
+ȉAJ삳[
+----------------
+`FbNfWbǧvZ@͈ʓIȂ̂炵A
+"WX10 EFCg3E1iM10W31j"Ƃ̂炵łB
+
+
+// NULLI[ꂽVAio[
+// NULL̏ꏊɃ`FbNfWbgtĐVNULLI[
+void AddCheckDigit(char* serial)
+{
+ size_t len = std::strlen(serial);
+
+ u8 digit = 0;
+ bool odd = true;
+ for(u8 i = len - 1; i > 0 && std::isdigit(serial[i]); i--)
+ {
+ if(odd)
+ {
+ digit += (serial[i] - '0') * 3;
+ }
+ else
+ {
+ digit += (serial[i] - '0');
+ }
+ odd = !odd;
+ }
+
+ if(digit % 10 != 0)
+ {
+ serial[len] = 10 - (digit % 10) + '0';
+ }
+ else
+ {
+ serial[len] = '0';
+ }
+
+ serial[len + 1] = '\0';
+}
diff --git a/trunk/CardSaveData/ToSD/Imp/imp_list/import.txt b/trunk/CardSaveData/ToSD/Imp/imp_list/import.txt
new file mode 100644
index 0000000..e94a4f3
--- /dev/null
+++ b/trunk/CardSaveData/ToSD/Imp/imp_list/import.txt
@@ -0,0 +1,27 @@
+
+ړIF{̂̂݃C|[g
+
+JROMǂݍ
+
+SCj@c[p{̂̃VA[ȂǂRED֘A
+RED)@Xg(csm_list)Ə(csm_sign)쐬
+
+
+C|[g菇
+E@XgASDCTRɍ
+E@C|[gpAvJ[hN
+E@LȖ{̂ȂC|[gj[\
+
+
+Openeelō쐬
+ɎSD[gɒu
+
+Xg̏
+C|[gVAeLXgŗ
+---
+aaaaaaaa
+bbbbbbbb
+----
+{̗VAI[digit(lpg̐)͏Ȃ
+digitmFꍇ̓Xg쐬ɂƂ
+t@CTCY64K܂(VÂLڂŁA悻4000)
diff --git a/trunk/CardSaveData/ToSD/Imp/imp_list/key/private_key.der b/trunk/CardSaveData/ToSD/Imp/imp_list/key/private_key.der
new file mode 100644
index 0000000..a6addbc
Binary files /dev/null and b/trunk/CardSaveData/ToSD/Imp/imp_list/key/private_key.der differ
diff --git a/trunk/CardSaveData/ToSD/Imp/imp_list/key/private_key.pem b/trunk/CardSaveData/ToSD/Imp/imp_list/key/private_key.pem
new file mode 100644
index 0000000..61e3eb9
--- /dev/null
+++ b/trunk/CardSaveData/ToSD/Imp/imp_list/key/private_key.pem
@@ -0,0 +1,27 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIIEogIBAAKCAQEAsOicKm/hXrlKcKyJd+jBeg1yEa5j8tT9UINkCP/UWFyLQ9xs
+/EYImuQlGhzqk+TWTU9sdLnOqbQFxzCPSDu/ictKayv8ZZwW53N1YodMITEPLo2i
+ZVuknNkl/XQcLGjl9SymFXShry0g433QO2SxuyLcREkV9ZSRanS8Ei/NftyK7OEZ
+zbcf5D8MSwhmF5gwU5h9xt0UvEkSwYUjQXBsvwJzVb5c5pDhiGX2+4KWo3+ZQlbS
+OCL86HA31SzMNyKvI5zrLPpEJNLLOp8s7wX1S2YPrVbwYtxciHsQCNfhFnZKK4iI
+78Sx6L6km8NARte3Q7fmi+lQHNFLKJyOcyKuwwIDAQABAoIBAE9vMufvMp/ozR8I
+qfU4gt99+BEuX9yifFfRl3JfBQbkDvhammkwPR7ngC1YfJAJuZwfJJDI+Z3DorCN
+Alkp0thZesHij0NEshgdBMFIBQwGTk3V9OxUGPcAnglPQHNEarUK5kxOAWd5+QGM
+9ZolnZRsk8DpnD2YBy9o2SXFZx0lxOb3UoMDcm46mMfFf+dJFX3iF8LurLllkzHr
+IMiqWkU2q2B2+M93LMDr4Sh4JTta9mMMYnBGE2Yuy1SqxBivByHfnIXFJAooAwuz
+0B9uJTxvdyUtNvmGyWKrY0nFdzaDAY64hfpRF0I5D9QTQXso3gKyWxytiDTUWF8S
+H7nTZuECgYEA2YH0wVTdIhnpEO3tQZ4wI7r2AM7tUgEsmca4wo4vahScxt/fuXE/
+WZ0qmjBUaky9liRy8GwkRz4SSd6cYRDf5ht5OdFh/0ksFwcZscCDbowx8d0qVRMR
+BPIGSjJZg8gBuLzcrdx6XfbUVUzFVIm9l8NTd6DHaDNqxUSrUrCWGlECgYEA0DdX
+i5iYqbrgarbJYzDV2yy4mvkL2rTCC34Eya//yDwhsNFVR6GdzmJJoz04Ka5i2/67
+BmPQZXioBMckcUdYDqDsEtCdV6nqbX6HmL/Hxvhe3FgKMK8rPwH3adkYzoWZerza
+W3AR4W5KBWwtje/ncDXlNqrR956vNtfausgdntMCgYBXSgUstV8NeXKEXcfShqZx
+IG3rgx/QwjHhANRTF/bFTsJgOaYyaNVwpFddi7nE80k+gSAzhmLEyI9UX+dIORpx
+4WK0Jmh6qCXuk+Xm5QiaC99bXlPH0qAI6QxHKI+uCE1Qk1LI32uoXA94sBedRq30
+wumzX63HDqNxyY4r4DxNEQKBgDQOcgvLpfdhanQjqOvsrLr0Tl8ofsc6Q/1dj1Lh
+dsCYEBBF9d1H0c1kk2aFisIZAExiPl4VnGeSJ+ex5jGQFbrqjrsRfxUIvTyM0tfk
+sszTEdxjAoEzektxcWr8RRB1JG8kQi90MHQ8/7KlXipLXYCXaOwm/wG6obHDe8MQ
+/x7TAoGAZ+092oEfNVyZaniPn4B7C3FMmCz555THhUHTzlmAITkFeXH006hbqHYX
+romWUfA4qexKWKoSb5crBPm9h/3OlwcWgkldDDYDm1SKTrEDKmpmkDOKMXrDivsV
+mJULZt10BA0tTb35ToxPy3ChtI2Qy2G+m9nCMu9AdvEos/oRL68=
+-----END RSA PRIVATE KEY-----
diff --git a/trunk/CardSaveData/ToSD/Imp/imp_list/key/public_key.der b/trunk/CardSaveData/ToSD/Imp/imp_list/key/public_key.der
new file mode 100644
index 0000000..7a9e751
Binary files /dev/null and b/trunk/CardSaveData/ToSD/Imp/imp_list/key/public_key.der differ
diff --git a/trunk/CardSaveData/ToSD/Imp/option.txt b/trunk/CardSaveData/ToSD/Imp/option.txt
new file mode 100644
index 0000000..6e48073
--- /dev/null
+++ b/trunk/CardSaveData/ToSD/Imp/option.txt
@@ -0,0 +1,11 @@
+C|[^̃IvVL
+
+cms_inf.txt̖OŃt@C쐬SD̃[gɔzu
+ȉ̋LqŃIvVLɂȂ
+foOspAʏ͂Ȃ
+
+-t: eXgj[
+@@@J[h̃Z[uɃeXgp^[݁xt@C
+
+-p: {̃VA\
+
diff --git a/trunk/CardSaveData/ToSD/Imp/romfiles/importee.cia b/trunk/CardSaveData/ToSD/Imp/romfiles/importee.cia
new file mode 100644
index 0000000..0aa4199
Binary files /dev/null and b/trunk/CardSaveData/ToSD/Imp/romfiles/importee.cia differ
diff --git a/trunk/CardSaveData/ToSD/Imp/romfiles/nnfont_RectDrawerShader.shbin b/trunk/CardSaveData/ToSD/Imp/romfiles/nnfont_RectDrawerShader.shbin
new file mode 100644
index 0000000..4290c2c
Binary files /dev/null and b/trunk/CardSaveData/ToSD/Imp/romfiles/nnfont_RectDrawerShader.shbin differ
diff --git a/trunk/CardSaveData/ToSD/Imp/source/main.cpp b/trunk/CardSaveData/ToSD/Imp/source/main.cpp
new file mode 100644
index 0000000..1bae9f8
--- /dev/null
+++ b/trunk/CardSaveData/ToSD/Imp/source/main.cpp
@@ -0,0 +1,492 @@
+/*---------------------------------------------------------------------------*
+ Project: Horizon
+ File: main.cpp
+
+ Copyright (C)2009 Nintendo Co., Ltd. All rights reserved.
+
+ These coded instructions, statements, and computer programs contain
+ proprietary information of Nintendo of America Inc. and/or Nintendo
+ Company Ltd., and are protected by Federal copyright law. They may
+ not be disclosed to third parties or copied or duplicated in any form,
+ in whole or in part, without the prior written consent of Nintendo.
+
+ $Rev$
+ *---------------------------------------------------------------------------*/
+
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include "demo.h"
+#include "../../body/ver.h"
+#include "../common/sleep.h"
+#include "../common/common.h"
+#include "../common/shfnt.h"
+#include "test_data.h"
+
+#define INF_FILE "sdmc:/cts_inf.txt"
+
+#define KEY_LENGTH 2048
+#define LIST_FILE "sdmc:/cts_list.txt"
+#define SIGN_FILE "sdmc:/cts_sign.dat"
+
+
+extern "C" {
+ extern u8* PUBLIC_KEY_BEGIN[];
+ extern u8* PUBLIC_KEY_END[];
+
+ const void* PUBLIC_KEY = PUBLIC_KEY_BEGIN;
+}
+
+demo::RenderSystemDrawing s_RenderSystem;
+nn::fnd::ExpHeap appHeap;
+uptr heapForGx;
+void ErrorStop(char *s);
+void ErrorPOff(char *s);
+
+const size_t ROMFS_BUFFER_SIZE = 64*1024;//ROMマウント用
+const size_t READ_BUFFER_SIZE = 64*1024;
+
+#define SDK_SER_LEN nn::cfg::CTR::CFG_SECURE_INFO_SERIAL_NO_LEN
+
+namespace
+{
+ u8* readBuf;
+ u8* romfsBuf;
+
+}
+nn::Result result;
+
+
+bool ImportFile(nn::fs::MediaType mediaType, wchar_t* filename)
+{
+ //nn::Result result;
+
+ nn::fs::FileOutputStream* stream;
+ result = nn::am::BeginImportProgram(&stream, mediaType);
+ if (result.IsSuccess())
+ {
+ //NN_LOG("Importing: %ls...", filename);
+ nn::fs::FileInputStream in(filename);
+
+ while(s32 read = in.Read(readBuf, READ_BUFFER_SIZE))
+ {
+ stream->Write(readBuf, read);
+ }
+ result = nn::am::EndImportProgram(stream);
+ }
+ return result.IsSuccess();
+}
+
+#define LIST_MAX 4000
+#define LIST_LENGTH (LIST_MAX * (nn::cfg::CTR::CFG_SECURE_INFO_SERIAL_NO_LEN+1))
+u8 s_list[LIST_MAX][nn::cfg::CTR::CFG_SECURE_INFO_SERIAL_NO_LEN+1];//シリアルリスト
+u8 sign[256];//署名
+u8 serialNo[nn::cfg::CTR::CFG_SECURE_INFO_SERIAL_NO_LEN+1];
+
+//本体シリアル取得
+int GettedSerLen;
+bool GetSerial(){
+ nn::cfg::CTR::init::Initialize();
+ nn::cfg::CTR::system::Initialize();
+ result = nn::cfg::CTR::system::GetSerialNo(serialNo);
+ nn::cfg::CTR::system::Finalize();
+ nn::cfg::CTR::init::Finalize();
+ serialNo[nn::cfg::CTR::CFG_SECURE_INFO_SERIAL_NO_LEN] = 0;
+ GettedSerLen = strlen((char*)serialNo);
+ return result.IsSuccess();
+}
+
+
+
+//#define setColor(r,g,b,a) s_RenderSystem.SetColor(r,g,b,a)
+void setColor(f32 r,f32 g,f32 b,f32 a){ shf_SetColor(r,g,b,a);}
+//#define setText(x,y,s) s_RenderSystem.DrawText(x,y,s)
+void drawText(u16 x,u16 y,char *s){ shf_DrawText_0( x,y,s);}
+//上はASCIIのみ対応したTextWriterへのラッパ
+//日本語表示の場合、WideTextWriterを使う(要sft_側の関数追加)
+
+
+nn::hid::PadReader *hpr;
+//入力待ち
+nn::hid::PadStatus padStatus;
+u32 WaitKey(u32 mask)
+{
+
+ while(1){
+ hpr->ReadLatest(&padStatus);
+ if(padStatus.trigger & mask)return padStatus.trigger;
+ CheckSysBreak();
+/*
+ int i = nn::ndm::GetDaemonStatus( nn::ndm::DN_CEC );
+ if (i !=3 )NN_LOG("DN_CEC %d\n",i);
+ i = nn::ndm::GetDaemonStatus( nn::ndm::DN_BOSS );
+ if (i !=3 )NN_LOG("DN_BOSS %d\n",i);
+ i = nn::ndm::GetDaemonStatus( nn::ndm::DN_NIM );
+ if (i !=3 )NN_LOG("DN_NIM %d\n",i);
+ i = nn::ndm::GetDaemonStatus( nn::ndm::DN_FRIENDS );
+ if (i !=3 )NN_LOG("DN_FRIENDS %d\n",i);
+*/
+ }
+}
+
+//終了
+void endfunc()
+{
+ appHeap.Free(reinterpret_cast(readBuf));
+ appHeap.Free(reinterpret_cast(romfsBuf));
+ nn::hid::Finalize();
+ SharedFontFinalize();
+ nngxWaitVSync(NN_GX_DISPLAY_BOTH);//SDK2.0以降では不要?
+ s_RenderSystem.Finalize();
+}
+
+//署名検証
+bool VeriRsa(u8* src,size_t sz,u8* sig)
+{
+ nn::crypto::RsaKey key;
+ //nn::crypto::Initialize();
+ nn::ps::CTR::Initialize();
+ result = key.InitializePublicKey(PUBLIC_KEY_BEGIN,KEY_LENGTH);
+ if (result.IsSuccess())
+ {
+ result = nn::ps::CTR::VerifyRsaSha256(src,sz,sig,key);
+ }
+ //nn::crypto::Finalize();
+ nn::ps::CTR::Finalize();
+ return result.IsSuccess();
+}
+
+//エラー
+void ErrorCommon(char *s,char *ss)
+{
+ char str[128];
+ nn::am::FinalizeForLocalImporter();
+ nn::fs::Unmount("sdmc:");
+ nn::fs::Unmount("rom:");
+ NN_LOG(s);
+ NN_LOG(" result = %d\n",result.GetDescription());
+ shf_SetScale(0.7,0.7);
+ setColor(1.0, 0.0, 0.0,1.0);
+ strcpy(str,"Error: ");
+ strcat(str,s);
+ drawText(10,100,str);
+ drawText(10,140,ss);
+}
+
+
+void ErrorStop(char *s)
+{
+ ErrorCommon(s,"Push Home Button & end");
+ s_RenderSystem.SwapBuffers();
+ WaitKey(0);
+}
+
+void ErrorPoff(char *s)
+{
+ ErrorCommon(s,"Push Power Button & Power Off");
+ drawText(10,160,"Home Button is invalid");
+ s_RenderSystem.SwapBuffers();
+ WaitKey(0);
+}
+
+
+//改行後の位置を返す、0=見つからなかった
+int CrLf(int n,int max)
+{
+ u8 d;
+ while(n < max)
+ {
+ d = readBuf[n];
+ if (d==0x0a)return n+1;//LF
+ if (d==0x0d)//CR
+ {
+ if (n == max-1)return 0;//終端
+ n++;
+ if (readBuf[n]==0x0a)return n+1;//CR+LF
+ ErrorStop("list broken");//CRのみは異常、署名時にファイル壊れてた?
+ }
+ n++;
+ }
+ return 0;
+}
+
+nn::fs::FileInputStream fi;
+//ファイルリード
+s32 FileRead(char* fname)
+{
+ s32 size;
+ result = fi.TryInitialize(fname);
+ if (result.IsFailure()){//open error
+ //NN_LOG("desc= %d\n",result.GetDescription());
+ return 0;
+ }
+ result = fi.TryRead(&size,readBuf,READ_BUFFER_SIZE);
+ fi.Finalize();
+ if (result.IsFailure()){
+ //NN_LOG("desc= %d\n",result.GetDescription());
+ return 0;
+ }
+ return size;
+}
+
+
+char ver[16];
+char seri[32];
+void nnMain( void )
+{
+ //nn::Result result;
+ bool flg_applove=false;
+ bool flg_test=false;
+ int i,j,n;
+ s32 fsize;
+ extern bool prohibitHome;// HOME ボタン禁止
+
+ nn::os::Initialize();
+ nn::fs::Initialize();
+
+ //DEA-SUPにて推奨のフリーズ暫定対策:無線デーモンを停止 (2011.3.1 現在)
+ //ただし、スリープ時の"いつのまに通信"は止まらない
+ //無線は使わないので本体横スイッチ切っとくのが確実
+ nn::ndm::Initialize();
+ result = nn::ndm::SuspendScheduler();
+ //NN_LOG("%d",result.GetDescription());
+
+ //中断処理の準備
+ InitSysBreak((uptr)endfunc);
+ // グラフィックスライブラリの初期化は、以降で行わなければならない
+ // 他、アプリケーションの初期化処理
+
+ nn::hid::Initialize();
+ nn::hid::PadReader padReader;
+ hpr = &padReader;
+
+ //result = nn::ns::CTR::InitializeForShell();
+ //if (result.IsSuccess())
+ result = nn::am::InitializeForLocalImporter();
+
+ nn::applet::DisableSleep();//スリープ非対応
+
+ // ヒープの確保
+ appHeap.Initialize(nn::os::GetDeviceMemoryAddress(), nn::os::GetDeviceMemorySize(), nn::os::ALLOCATE_OPTION_LINEAR);
+
+ const u32 s_GxHeapSize = 0x800000;
+ // RenderSystem の準備
+ heapForGx = reinterpret_cast(appHeap.Allocate(s_GxHeapSize));
+ s_RenderSystem.Initialize(heapForGx, s_GxHeapSize);
+ SharedFontInit();
+
+ // 共有フォントの種類を取得
+ //nn::pl::SharedFontType sftype = nn::pl::GetSharedFontType();
+
+ // スリープ要求に対する返答を有効にする
+ // また、蓋の状態チェックを行い蓋が閉じられているならスリープ要求が発生する
+// nn::applet::EnableSleep(true);
+
+ s_RenderSystem.SetRenderTarget(NN_GX_DISPLAY0);
+ s_RenderSystem.Clear();
+// s_RenderSystem.SetFontSize(12);
+ shf_SetScale(0.8,0.6);
+ setColor(1.0,1.0,1.0,1.0);
+ drawText(20,20,"CTR Card Savedata to SD Setup");
+ s_RenderSystem.SwapBuffers();
+
+ shf_SetScale(0.5,0.5);
+ sprintf(ver,"version %.2f",VERSION);
+ drawText(250,40,ver);
+
+ shf_SetScale(0.7,0.7);
+ if (result.IsFailure())ErrorStop("Initialize");//初期化に失敗
+ if (READ_BUFFER_SIZE < LIST_LENGTH)ErrorStop("buffer size");//バッファサイズのチェック
+
+ //ファイルバッファ
+ //カゲマイ上のSDリード速度比較実験で32アラインが良かったので、おまじない
+ //回数もサイズも少ないので気にする必要ないかも
+ if (READ_BUFFER_SIZE > appHeap.GetTotalFreeSize())ErrorStop("memory alloc");
+ readBuf = reinterpret_cast(appHeap.Allocate(READ_BUFFER_SIZE,32));
+ if (ROMFS_BUFFER_SIZE > appHeap.GetTotalFreeSize())ErrorStop("memory alloc");
+ romfsBuf = reinterpret_cast(appHeap.Allocate(ROMFS_BUFFER_SIZE,32));
+
+/*
+ //シリアルチェック
+ if( GetSerial() == false)ErrorStop("Get Serial");//本体シリの取得に失敗
+
+ result = nn::fs::MountSdmc();//ダイレクトでマウント..マスタリング時にワーニング
+ if (result.IsFailure())ErrorStop("Mount SD");
+ fsize = FileRead(INF_FILE);//設定ファイルがあるか
+ if((fsize < 1024) && (fsize > 0))//サイズチェック,増えても1Kは超えない
+ {//不具合調査時に状況にあわせて現場で作成&変更を想定したオプション
+ //通常は不要なので無しでも動くようしとく
+ n = 0;
+ while(n < fsize)
+ {
+ if (readBuf[n] == '-'){
+ if (n == fsize-1)break;//終端
+ n++;
+ switch (readBuf[n]){
+ case 'p':// -p .. 本体シリアル表示
+ strcpy(seri,"s/n: ");
+ strcat(seri,(char *)serialNo);
+ shf_SetScale(0.5,0.5);
+ drawText(10,40,(char*)seri);
+ shf_SetScale(0.7,0.7);
+ break;
+ case 't':// -t .. テストメニュー有効
+ flg_test = true;
+ break;
+ }
+ }
+ n++;
+ }
+ }
+
+ //シリアル表示(オプション)後にチェック
+ //デバッガ=15,実機=11
+ if (GettedSerLen < 11)ErrorStop("invalid Serial");
+
+ fsize = FileRead(SIGN_FILE);//署名リード
+ if(fsize != 256)ErrorStop("sign file");//鍵のbit長は2046固定
+ memcpy(sign,readBuf,256);//readBuf -> sign
+ fsize = FileRead(LIST_FILE);//リストリード
+ if((fsize > LIST_LENGTH ) || (fsize == 0))ErrorStop("list file");
+
+ nn::fs::Unmount("sdmc:"); //検証後はSDから読まないでメモリバッファ上のデータを使う: 差替え対策
+ if (VeriRsa(readBuf,fsize,sign) == false)ErrorStop("sign verify");
+
+ //署名検証OK
+ int list_ct = 0;
+ n=0;
+ while(n < fsize)//リスト作成
+ {
+ if (readBuf[n] == '#')//コメント行を無視、ワイド文字非対応
+ {
+ i = CrLf(n,fsize);//コメントの次行
+ if (i == 0)break;//ファイル終わりまで改行が見つからない
+ }else
+ {
+ //改行さがし
+ if ((fsize-n) > (SDK_SER_LEN+2))
+ {//シリアルは改行つける
+ i = CrLf(n,n+SDK_SER_LEN+2);
+ if (i == 0)ErrorStop("list broken");//改行が見つからない
+ }else{
+ i = CrLf(n,fsize);
+ if (i ==0)i = fsize;//改行以外でファイル終
+ }
+ if ((i-n) > GettedSerLen)//シリアルをリスト化
+ {
+ j = 0;
+ while(n=LIST_MAX)ErrorStop("List too Long");
+ }
+ }
+ if ((fsize-i) < GettedSerLen)break;//ファイル終
+ n=i;//ポインタを改行の次へ
+ }
+
+ //プログラムミス、コードバグ対策
+ //値が小さいと判定が緩くなるが、動作確認時にスルーしそうなので
+ //念の為チェック
+ if (GettedSerLen < 11)ErrorStop("invalid Serial");
+
+ //本体シリアルがリストにあるかチェック
+ n =0;
+ while(n
+#include
+#include
+#include
+#include
+#include
+#include "demo.h"
+
+nn::Result res;
+
+nn::fs::FileOutputStream fout;
+nn::fs::FileInputStream fin;
+
+nn::fs::Directory dc[256];
+
+wchar_t file_pathw[1024];
+char file_path[1024];
+char file_path2[1024];
+char src_buff[1024*1024];
+char get_buff[1024*1024];
+char str[512];
+
+
+extern demo::RenderSystemDrawing s_RenderSystem;
+
+//終了処理
+extern void finish(void);
+extern u32 WaitKey(u32 mask);
+
+extern void setColor(f32 r,f32 g,f32 b,f32 a);
+extern void drawText(u16 x,u16 y,char *s);
+void drawText(u16 x,u16 y,char *s,int v)
+{
+ sprintf(str,s,v);
+ drawText( x,y,str);
+}
+
+
+//---------------------------------------- テストパターン
+void make_pattern()
+{
+ int i,j;
+ j=0;
+ for (i=0;i<1024*1024;i++){
+ src_buff[i] = j+i;
+ if (i & 0x100)j++;
+ }
+}
+
+//TEST ライト
+s32 size;
+#define SIZE_TEST1 421888
+//#define SIZE_TEST1 244736 //dup
+bool Test1_W()
+{
+ int total,size2;
+
+ res = nn::fs::FormatSaveData(1,0,false);
+ if (res.IsFailure()){
+ drawText(8,100,"format Fail");
+ return false;
+ }
+ res =nn::fs::MountSaveData();
+ if (res.IsFailure()){
+ drawText(8,100,"Mount Fail");
+ return false;
+ }
+
+ res = nn::fs::TryCreateFile(L"data:/test1.bin",SIZE_TEST1);
+ if (res.IsFailure()){
+ drawText(8,100,"Create Fail");
+ nn::fs::Unmount("data:");
+ return false;
+ }
+ res = fout.TryInitialize(L"data:/test1.bin",true);
+ if (res.IsFailure()){
+ drawText(8,100,"open Fail");
+ nn::fs::Unmount("data:");
+ return false;
+ }
+ total =0;
+ size2 = 512;
+ //size2 = 4096;
+ //size2 = SIZE_TEST1;
+ while(1){
+ res = fout.TryWrite( &size,&src_buff[total],size2);
+ if (res.IsFailure()){
+ drawText(8,100,"write Fail");
+ fout.Finalize();
+ nn::fs::Unmount("data:");
+ return false;
+ }
+ total += size;
+ sprintf(str,"size %d",total);
+ s_RenderSystem.Clear();
+ drawText(10,80,str);
+ s_RenderSystem.SwapBuffers();
+ //if (size<512)break;
+ if (total >= SIZE_TEST1)break;
+ if ((SIZE_TEST1 - total) < 512)size2 = SIZE_TEST1 - total ;
+ }
+ fout.Finalize();
+ nn::fs::CommitSaveData();
+ nn::fs::Unmount("data:");
+ NN_LOG("total %d",total);
+ drawText(10,100,"end");
+ s_RenderSystem.SwapBuffers();
+ nngxWaitVSync(NN_GX_DISPLAY0);
+ return true;
+}
+
+//ベリファイ
+bool Test1_V()
+{
+ int i,total;
+
+ res = fin.TryInitialize(L"data:/test1.bin");
+ if (res.IsFailure())
+ {
+ //NN_LOG("%d\n",res.GetDescription());
+ drawText(8,100,"open Fail");
+ nn::fs::Unmount("data:");
+ return false;
+ }
+ total =0;
+ while(1){
+ res = fin.TryRead( &size,&get_buff[total],512);
+ if (res.IsFailure()){
+ drawText(8,100,"read Fail");
+ fin.Finalize();
+ nn::fs::Unmount("data:");
+ return false;
+ }
+ //if (size == 0)break;
+ for (i=0;i= SIZE_TEST1)break;
+
+ total += size;
+ s_RenderSystem.Clear();
+ sprintf(str,"now %d",total);
+ drawText(10,80,str);
+ s_RenderSystem.SwapBuffers();
+ if (size<512)break;
+ }
+ fout.Finalize();
+ nn::fs::Unmount("data:");
+ drawText(10,100,"end");
+ s_RenderSystem.SwapBuffers();
+ nngxWaitVSync(NN_GX_DISPLAY0);
+ return true;
+}
+
+
+//ファイル数
+bool Test2_W(int n)
+{
+ int total,size2;
+
+ res = nn::fs::FormatSaveData(680,1,false);//dupなしファイル680
+ if (res.IsFailure()){
+ drawText(8,100,"format Fail");
+ return false;
+ }
+ res =nn::fs::MountSaveData();
+ if (res.IsFailure()){
+ drawText(8,100,"Mount Fail");
+ return false;
+ }
+
+ total =0;
+ int num = 0;
+ size2 = 512;
+ while(1){
+ sprintf(file_path,"data:/test%d.bin",num);
+// res = nn::fs::TryCreateFile(L"data:/test2.bin",SIZE_TEST1);
+// if (res.IsFailure()){
+// drawText(8,100,"Create Fail");
+// nn::fs::Unmount("data:");
+// return false;
+// }
+ res = fout.TryInitialize(file_path,true);
+ if (res.IsFailure()){
+ drawText(8,100,"open Fail");
+ nn::fs::Unmount("data:");
+ return false;
+ }
+ res = fout.TryWrite( &size,&src_buff[total],size2);
+ if (res.IsFailure()){
+ drawText(8,100,"write Fail");
+ fout.Finalize();
+ nn::fs::Unmount("data:");
+ return false;
+ }
+ fout.Finalize();
+ total += size;
+ num++;
+ sprintf(str,"size %d , num %d",total,num);
+ s_RenderSystem.Clear();
+ drawText(10,80,str);
+ s_RenderSystem.SwapBuffers();
+ //if (size<512)break;
+ if (num == n)break;
+ }
+ fout.Finalize();
+ nn::fs::CommitSaveData();
+ nn::fs::Unmount("data:");
+ NN_LOG("total %d",total);
+ drawText(10,100,"end");
+ s_RenderSystem.SwapBuffers();
+ nngxWaitVSync(NN_GX_DISPLAY0);
+ return true;
+}
+
+bool Test2_V(int n)
+{
+ int total,size2,i;
+
+ total =0;
+ int num = 0;
+ size2 = 512;
+ while(1){
+ sprintf(file_path,"data:/test%d.bin",num);
+ res = fin.TryInitialize(file_path);
+ if (res.IsFailure()){
+ drawText(8,100,"open Fail");
+ nn::fs::Unmount("data:");
+ return false;
+ }
+ res = fin.TryRead( &size,&get_buff[total],size2);
+ if (res.IsFailure()){
+ drawText(8,100,"read Fail");
+ fin.Finalize();
+ nn::fs::Unmount("data:");
+ return false;
+ }
+ for (i=0;i= SIZE_TEST5)break;
+ }
+ fout.Finalize();
+ nn::fs::CommitSaveData();
+ nn::fs::Unmount("data:");
+ drawText(10,100,"end");
+ s_RenderSystem.SwapBuffers();
+ nngxWaitVSync(NN_GX_DISPLAY0);
+ return true;
+}
+
+
+bool Test5_V()
+{
+ int i,pos;
+
+ res = fin.TryInitialize(L"data:/test5.bin");
+ if (res.IsFailure()){
+ drawText(8,100,"open Fail");
+ nn::fs::Unmount("data:");
+ return false;
+ }
+ pos =0;
+ while(1){
+ fin.SetPosition(pos);
+ res = fin.TryRead( &size,&get_buff[pos],512);
+ if (res.IsFailure() || (size!=512)){
+ drawText(8,100,"read Fail");
+ fin.Finalize();
+ nn::fs::Unmount("data:");
+ return false;
+ }
+ sprintf(str,"position %d",pos);
+ s_RenderSystem.Clear();
+ drawText(10,80,str);
+ s_RenderSystem.SwapBuffers();
+
+ for (i=0;i<512;i++) if (src_buff[pos+i] != get_buff[pos+i])
+ {
+ drawText(8,100,"verifi Fail at %d",i);
+ return false;
+ }
+ pos += 1024;//512飛ばす
+ if (pos >= SIZE_TEST5)break;
+ }
+ fin.Finalize();
+ nn::fs::Unmount("data:");
+ drawText(10,100,"end");
+ s_RenderSystem.SwapBuffers();
+ nngxWaitVSync(NN_GX_DISPLAY0);
+ return true;
+}
+
+const char kinsi[] = {0x22,'<','>','?','*','|',0x5c,':',' ','/',0};//0x22 = "",0x5c = 円マーク
+const char *kinsi2[] = { "CON","PRN","NUL","AUX","LPT1","LPT2","LPT3","LPT4","COM1","COM2","COM3","COM4"
+,"con","prn","nul","aux","lpt1","lpt2","lpt3","lpt4","com1","com2","com3","com4",""};
+
+
+//FAT違反の名前
+bool Test6_W()
+{
+
+ res = nn::fs::FormatSaveData(100,100,true);
+ if (res.IsFailure()){
+ drawText(8,100,"format Fail");
+ return false;
+ }
+ res =nn::fs::MountSaveData();
+ if (res.IsFailure()){
+ drawText(8,100,"Mount Fail");
+ return false;
+ }
+
+
+
+//禁止文字
+ char *base = "test6";
+ char dname[128],fname[128];
+ int ofst=0;
+
+ //頭に付ける
+ strcpy(dname,"data:/");
+ int pos = strlen(dname);
+ strcat(dname,"_");
+ strcat(dname,base);//data:/_base
+ int pos2 = strlen(dname)+1;
+ strcpy(fname,dname);
+ strcat(fname,"/_");
+ strcat(fname,base);
+ strcat(fname,".bin");//data:/_base/_base.bin
+
+ int i =0;
+ char c;
+ while(kinsi[i] != 0)
+ {
+ c = kinsi[i];
+ dname[pos] = c;
+ res = nn::fs::TryCreateDirectory(dname);
+ if (res.IsFailure()){
+ drawText(8,100,"Dir fail");
+ nn::fs::Unmount("data:");
+ return false;
+ }
+ fname[pos] = c;
+ fname[pos2] = c;
+ res = fout.TryInitialize(fname,true);
+ if (res.IsFailure()){
+ drawText(8,100,"open fail");
+ nn::fs::Unmount("data:");
+ return false;
+ }
+ res = fout.TryWrite( &size,&src_buff[ofst],512);
+ if (res.IsFailure()){
+ drawText(8,100,"write fail");
+ nn::fs::Unmount("data:");
+ return false;
+ }
+ fout.Finalize();
+ i++;
+ ofst+=512;
+ }
+
+ //末尾
+ strcpy(dname,"data:/");
+ strcat(dname,base);//data:/base
+ pos = strlen(dname);
+ strcat(dname,"_");//data:/base_
+ strcpy(fname,dname);
+ strcat(fname,"/");
+ strcat(fname,base);//data:/base_/base
+ pos2 = strlen(fname);
+ strcat(fname,"_.bin");//data:/base_/base_.bin
+
+ i =0;
+ while(kinsi[i] != '/')//末尾スラッシュは名無しでエラー
+ {
+ c = kinsi[i];
+ dname[pos] = c;
+ res = nn::fs::TryCreateDirectory(dname);
+ if (res.IsFailure()){
+ drawText(8,100,"dir fail");
+ nn::fs::Unmount("data:");
+ return false;
+ }
+ fname[pos] = c;
+ fname[pos2] = c;
+ res = fout.TryInitialize(fname,true);
+ if (res.IsFailure()){
+ drawText(8,100,"open fail");
+ nn::fs::Unmount("data:");
+ return false;
+ }
+ res = fout.TryWrite( &size,&src_buff[ofst],512);
+ if (res.IsFailure()){
+ drawText(8,100,"write fail");
+ nn::fs::Unmount("data:");
+ return false;
+ }
+ fout.Finalize();
+ i++;
+ ofst+=512;
+ }
+
+
+//禁止名
+ i=0;
+ while(kinsi2[i][0] != 0)
+ {
+ strcpy(dname,"data:/");
+ strcat(dname,kinsi2[i]);
+ res = nn::fs::TryCreateDirectory(dname);
+ if (res.IsFailure()){
+ drawText(8,100,"dir fail");
+ nn::fs::Unmount("data:");
+ return false;
+ }
+ strcpy(fname,dname);
+ strcat(fname,"/");
+ strcat(fname,kinsi2[i]);
+ res = fout.TryInitialize(fname,true);
+ if (res.IsFailure()){
+ drawText(8,100,"open fail");
+ nn::fs::Unmount("data:");
+ return false;
+ }
+ res = fout.TryWrite( &size,&src_buff[ofst],512);
+ if (res.IsFailure()){
+ drawText(8,100,"write fail");
+ nn::fs::Unmount("data:");
+ return false;
+ }
+ fout.Finalize();
+ i++;
+ ofst+=512;
+ }
+
+ nn::fs::CommitSaveData();
+ nn::fs::Unmount("data:");
+
+ drawText(10,100,"end");
+ s_RenderSystem.SwapBuffers();
+ nngxWaitVSync(NN_GX_DISPLAY0);
+ return true;
+}
+
+
+bool Test6_V()
+{
+
+//禁止文字
+ char *base = "test6";
+ char fname[128];
+ int ofst=0;
+
+ //頭に付ける
+ strcpy(fname,"data:/");
+ int pos = strlen(fname);
+ strcat(fname,"_");
+ strcat(fname,base);//data:/_base
+ int pos2 = strlen(fname)+1;
+ strcat(fname,"/_");
+ strcat(fname,base);
+ strcat(fname,".bin");//data:/_base/_base.bin
+
+ int i =0;
+ int j;
+ char c;
+ while(kinsi[i] != 0)
+ {
+ c = kinsi[i];
+ fname[pos] = c;
+ fname[pos2] = c;
+ res = fin.TryInitialize(fname);
+ if (res.IsFailure()){
+ drawText(8,100,"open fail");
+ nn::fs::Unmount("data:");
+ return false;
+ }
+ res = fin.TryRead( &size,&get_buff[ofst],512);
+ if (res.IsFailure()){
+ drawText(8,100,"read fail");
+ nn::fs::Unmount("data:");
+ return false;
+ }
+ fin.Finalize();
+
+ for(j=0;j<512;j++)if(src_buff[ofst+i] != get_buff[ofst+i]){
+ drawText(8,100,"verifi fail");
+ nn::fs::Unmount("data:");
+ return false;
+ }
+
+ i++;
+ ofst+=512;
+ }
+
+ //末尾
+ strcpy(fname,"data:/");
+ strcat(fname,base);//data:/base
+ pos = strlen(fname);
+ strcat(fname,"_/");//data:/base_/
+ strcat(fname,base);//data:/base_/base
+ pos2 = strlen(fname);
+ strcat(fname,"_.bin");//data:/base_/base_.bin
+
+ i =0;
+ while(kinsi[i] != '/')//末尾スラッシュは名無しでエラー
+ {
+ c = kinsi[i];
+ fname[pos] = c;
+ fname[pos2] = c;
+ res = fin.TryInitialize(fname);
+ if (res.IsFailure()){
+ drawText(8,100,"open fail");
+ nn::fs::Unmount("data:");
+ return false;
+ }
+ res = fin.TryRead( &size,&get_buff[ofst],512);
+ if (res.IsFailure()){
+ drawText(8,100,"write fail");
+ nn::fs::Unmount("data:");
+ return false;
+ }
+ fout.Finalize();
+
+ for(j=0;j<512;j++)if(src_buff[ofst+i] != get_buff[ofst+i]){
+ drawText(8,100,"verifi fail");
+ nn::fs::Unmount("data:");
+ return false;
+ }
+
+ i++;
+ ofst+=512;
+ }
+
+
+//禁止名
+ i=0;
+ while(kinsi2[i][0] != 0)
+ {
+ strcpy(fname,"data:/");
+ strcat(fname,kinsi2[i]);
+ strcat(fname,"/");
+ strcat(fname,kinsi2[i]);
+ res = fin.TryInitialize(fname);
+ if (res.IsFailure()){
+ drawText(8,100,"open fail");
+ nn::fs::Unmount("data:");
+ return false;
+ }
+ res = fin.TryRead( &size,&get_buff[ofst],512);
+ if (res.IsFailure()){
+ drawText(8,100,"read fail");
+ nn::fs::Unmount("data:");
+ return false;
+ }
+ fin.Finalize();
+
+ for(j=0;j<512;j++)if(src_buff[ofst+i] != get_buff[ofst+i]){
+ drawText(8,100,"verifi fail");
+ nn::fs::Unmount("data:");
+ return false;
+ }
+ i++;
+ ofst+=512;
+ }
+
+ fin.Finalize();
+ nn::fs::Unmount("data:");
+ drawText(10,100,"end");
+ s_RenderSystem.SwapBuffers();
+ nngxWaitVSync(NN_GX_DISPLAY0);
+ return true;
+}
+
+#define menu_ct 7
+#define menu_max (menu_ct-1)
+char* menu_str[menu_ct] = {"Casual check","Large size","many files","Deep directry","max size name","data < create size","fat error name"};
+
+#define menu_top_Y 80
+#define menu_top_X 60
+#define menu_spc 14
+
+//---------------------------------------------------------------- main
+void TestMain()
+{
+ u32 value;
+ int curs = 0;
+ int i;
+ bool sccs;
+
+ //Render
+ setColor(1.0f,1.0f,1.0f,1.0f);
+
+ //TEST PATTERN
+ make_pattern();
+
+ while(1){
+
+ //menu 表示
+ s_RenderSystem.Clear();
+ drawText(8,20," Backup Verifi for SaveDataMover Test ");
+ drawText(8,40," for 512KB Backup");
+ for (i=0;i");
+ drawText(menu_top_X,menu_top_Y+menu_spc*(menu_max+2),"push A:Write ,X:Verifi");
+ s_RenderSystem.SwapBuffers();
+ nngxWaitVSync(NN_GX_DISPLAY0);
+
+ //ボタン待ち
+ value = WaitKey(nn::hid::BUTTON_A | nn::hid::BUTTON_X |nn::hid::BUTTON_UP |nn::hid::BUTTON_DOWN);
+ if (value & nn::hid::BUTTON_A){//ライト
+ sccs = false;
+ s_RenderSystem.Clear();
+ drawText(10,70,"writing");
+ s_RenderSystem.SwapBuffers();
+ nngxWaitVSync(NN_GX_DISPLAY0);
+ switch(curs){
+ case 0:sccs = Test2_W(10);break;
+ case 1:sccs = Test1_W();break;
+ case 2:sccs = Test2_W(680);break;
+ case 3:sccs = Test3_W();break;
+ case 4:sccs = Test4_W();break;
+ case 5:sccs = Test5_W();break;
+ case 6:sccs = Test6_W();break;
+ default:break;
+ }
+ }else if (value & nn::hid::BUTTON_X)
+ {//ベリファイ
+ sccs = false;
+ s_RenderSystem.Clear();
+ drawText(10,70,"verifi");
+ s_RenderSystem.SwapBuffers();
+ nngxWaitVSync(NN_GX_DISPLAY0);
+ res =nn::fs::MountSaveData();
+ if (res.IsFailure()){
+ drawText(8,100,"Mount Fail");
+ }else
+ switch(curs){
+ case 0:sccs = Test2_V(10);break;
+ case 1:sccs = Test1_V();break;
+ case 2:sccs = Test2_V(680);break;
+ case 3:sccs = Test3_V();break;
+ case 4:sccs = Test4_V();break;
+ case 5:sccs = Test5_V();break;
+ case 6:sccs = Test6_V();break;
+ default:break;
+ }
+ }else if (value & nn::hid::BUTTON_UP){
+ if(curs > 0)curs--;
+ }else if(curs < menu_max)curs++;
+
+ if (value & (nn::hid::BUTTON_A | nn::hid::BUTTON_X)){
+ if (sccs == false)drawText(8,120,"Failed");
+ sprintf(str,"desc %d",res.GetDescription());
+ drawText(10,140,str);
+ s_RenderSystem.SwapBuffers();
+ NN_LOG("desc %d",res.GetDescription());
+ WaitKey(nn::hid::BUTTON_B);
+ }
+ }
+}
+
+
+/*---------------------------------------------------------------------------*
+ End of file
+ *---------------------------------------------------------------------------*/
+
diff --git a/trunk/CardSaveData/ToSD/Imp/source/test_data.h b/trunk/CardSaveData/ToSD/Imp/source/test_data.h
new file mode 100644
index 0000000..3525aa4
--- /dev/null
+++ b/trunk/CardSaveData/ToSD/Imp/source/test_data.h
@@ -0,0 +1,6 @@
+#ifndef TEST_DATA_H_
+#define TEST_DATA_H_
+
+void TestMain();
+
+#endif
diff --git a/trunk/CardSaveData/ToSD/OMakefile b/trunk/CardSaveData/ToSD/OMakefile
new file mode 100644
index 0000000..7ec5ac6
--- /dev/null
+++ b/trunk/CardSaveData/ToSD/OMakefile
@@ -0,0 +1,30 @@
+#!/usr/bin/env omake
+#----------------------------------------------------------------------------
+# Project: Horizon
+# File: OMakefile
+#
+# Copyright (C)2009 Nintendo Co., Ltd. All rights reserved.
+#
+# These coded instructions, statements, and computer programs contain
+# proprietary information of Nintendo of America Inc. and/or Nintendo
+# Company Ltd., and are protected by Federal copyright law. They may
+# not be disclosed to third parties or copied or duplicated in any form,
+# in whole or in part, without the prior written consent of Nintendo.
+#
+# $Rev: 34658 $
+#----------------------------------------------------------------------------
+
+#\DemoCugp܂
+#PCɍ킹ăTvf̃fBNgw
+#SAMPLED_DEMOS_COMMON_INCLUDE_DIR = $(dir ../common/include)
+SAMPLED_DEMOS_COMMON_INCLUDE_DIR = $(dir $(HORIZON_ROOT)/../CTR/sampledemos/common/include)
+INCLUDES += $(SAMPLED_DEMOS_COMMON_INCLUDE_DIR)
+
+#LIBS += lib_demo libnn_am
+
+.SUBDIRS: $(exist-dirs \
+ body \
+ Imp \
+ )
+
+DefineDefaultRules()
diff --git a/trunk/CardSaveData/ToSD/body/OMakefile b/trunk/CardSaveData/ToSD/body/OMakefile
new file mode 100644
index 0000000..8b2b9d3
--- /dev/null
+++ b/trunk/CardSaveData/ToSD/body/OMakefile
@@ -0,0 +1,62 @@
+#!/usr/bin/env omake
+#----------------------------------------------------------------------------
+# Project: Horizon
+# File: Omakefile
+#
+# Copyright (C)2010 Nintendo Co., Ltd. All rights reserved.
+#
+# These coded instructions, statements, and computer programs contain
+# proprietary information of Nintendo of America Inc. and/or Nintendo
+# Company Ltd., and are protected by Federal copyright law. They may
+# not be disclosed to third parties or copied or duplicated in any form,
+# in whole or in part, without the prior written consent of Nintendo.
+#
+# $Rev: 25650 $
+#----------------------------------------------------------------------------
+
+SUPPORTED_TARGETS = CTR-T*.Process.MPCore.*
+#CTR_APPTYPE = BOTH
+CTR_APPTYPE = CARD
+#CTR_APPTYPE = NAND
+
+#demoCuʒuw
+#SAMPLED_DEMOS_COMMON_INCLUDE_DIR = $(dir ../common/include)
+#SAMPLED_DEMOS_COMMON_INCLUDE_DIR = $(dir ../CTR_SDK/sampledemos/common/include)
+#INCLUDES += $(SAMPLED_DEMOS_COMMON_INCLUDE_DIR)
+
+# rh\[XR[hw肵܂B
+SOURCES[] =
+ ./source/main.cpp
+ ./source/screen/screen.cpp
+ ../../common/savefile/savedata.cpp
+ ../../common/savefile/sdmc.cpp
+ ../../common/savefile/savefile.cpp
+ ../../common/gui/gui.cpp
+ ../../common/shfnt.cpp
+ ../../common/sleep.cpp
+ ../../common/common.cpp
+
+#LIBS += lib_demo libnn_am
+
+TARGET_PROGRAM = CtrSaveToSd
+
+TITLE = body
+
+# ROMFS ̃[gpXw肵܂B
+#ROMFS_ROOT =
+
+# Ǝ RSF t@Cw肷ꍇ
+ROM_SPEC_FILE = body.rsf
+DESCRIPTOR = $(CTRSDK_ROOT)/resources/specfiles/repairtool.desc
+
+# oi[AACR
+CTR_BANNER_SPEC = banner_null_icon.bsf
+
+
+#Cia o[W:}X^OɍXV邱
+#W[rsfŎw(Remasterversion)
+MAKECIAFLAGS = -minor 0 -micro 0
+
+include $(ROOT_OMAKE)/modulerules
+
+build: $(DEFAULT_TARGETS)
diff --git a/trunk/CardSaveData/ToSD/body/banner/BannerModel_test/COMMON/COMMON.cmdl b/trunk/CardSaveData/ToSD/body/banner/BannerModel_test/COMMON/COMMON.cmdl
new file mode 100644
index 0000000..63f2c7a
--- /dev/null
+++ b/trunk/CardSaveData/ToSD/body/banner/BannerModel_test/COMMON/COMMON.cmdl
@@ -0,0 +1,274 @@
+
+
+
+
+
+ MetaData
+
+
+
+
+
+
+
+
+ ContentSummaries
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ModelDccToolInfo
+
+
+ OptimizationLogs
+
+
+
+
+
+
+
+
+
+
+
+ Skeleton.Bones["*"].AnimatedTransform
+
+
+
+
+
+
+ IsVisible
+
+
+ Meshes["*"].IsVisible
+
+
+ IsBranchVisible
+
+
+
+
+
+
+ Materials["*"].MaterialColor.Emission
+
+
+ Materials["*"].MaterialColor.Ambient
+
+
+ Materials["*"].MaterialColor.Diffuse
+
+
+ Materials["*"].MaterialColor.Specular0
+
+
+ Materials["*"].MaterialColor.Specular1
+
+
+ Materials["*"].MaterialColor.Constant0
+
+
+ Materials["*"].MaterialColor.Constant1
+
+
+ Materials["*"].MaterialColor.Constant2
+
+
+ Materials["*"].MaterialColor.Constant3
+
+
+ Materials["*"].MaterialColor.Constant4
+
+
+ Materials["*"].MaterialColor.Constant5
+
+
+ Materials["*"].TextureMappers["*"].Sampler.BorderColor
+
+
+ Materials["*"].TextureMappers["*"].Texture
+
+
+ Materials["*"].FragmentOperation.BlendOperation.BlendColor
+
+
+ Materials["*"].TextureCoordinators["*"].Scale
+
+
+ Materials["*"].TextureCoordinators["*"].Rotate
+
+
+ Materials["*"].TextureCoordinators["*"].Translate
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+ 0 1 2 1 3 2
+
+
+
+
+
+
+
+-12 -6 6.5
+12 -6 6.5
+-12 6 6.5
+12 6 6.5
+
+ 0 0 1
+
+0 0
+1 0
+0 1
+1 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Textures["banner"]@file:Textures/banner.ctex
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ DccToolSourceNode
+
+ BONE_00
+
+
+
+ Shapes[0]
+ Materials["MT_00"]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/trunk/CardSaveData/ToSD/body/banner/BannerModel_test/COMMON/Textures/banner.ctex b/trunk/CardSaveData/ToSD/body/banner/BannerModel_test/COMMON/Textures/banner.ctex
new file mode 100644
index 0000000..c36b19c
--- /dev/null
+++ b/trunk/CardSaveData/ToSD/body/banner/BannerModel_test/COMMON/Textures/banner.ctex
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+ B/YH9gf2B/YH9gf2B/YH9wf2B/YH9gf2B/YH9wf2B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf2B/YH9gf2B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/gH9wf3B/cH9wf3B/gH+Af4B/cH9wf3B/cH+Af4B/gH+Af3B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/kH+Af5B/gH+Af4B/gH+Qf5B/kH+Qf4B/kH+Af5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/oH+Qf6B/kH+Qf5B/kH+gf6B/oH+gf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+gf5B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/sH+gf6B/oH+gf6B/sH+gf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+gf6B/oH+gf7B/sH+wf7B/oH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf8B/sH/Af7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH/Af8B/wH/Af7B/wH+wf8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Qf8B/0H/Qf9B/0H/Qf8B/0H/Qf9B/0H/Qf9B/0H/Af8B/wH/Af8B/0H/Af9B/wH/Af8B/wH/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/4H/Qf+B/0H/Qf9B/0H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/0H/gf9B/4H/gf+B/4H/gf9B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/wf+B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf+B/4H/gf+B/4H/wf/B/8H/gf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/gf/B/4H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf+B/8H/gf/B/4H/wf/B/4H/gf+B/4H/gf+B/8H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf9B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf9B/0H/Qf9B/4H/Qf9B/0H/Qf9B/0H/Qf+B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf8B/0H/Af8B/wH/Af8B/0H/Af8B/wH/Af8B/wH/Af9B/0H/Qf9B/0H/Af9B/wH/Qf9B/0H/Qf9B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af7B/wH/Af8B/wH/Af7B/sH+wf8B/sH/Af7B/sH+wf7B/sH/Af7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/oH+wf6B/sH+wf7B/sH+gf6B/oH+gf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf4B/gH+Af4B/gH9wf4B/cH+Af4B/gH+Af4B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf4B/gH+Af4B/gH+Qf4B/kH+Af4B/gH+Af5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+gf5B/oH+Qf5B/kH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+Qf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf7B/sH+wf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/sH+wf7B/sH+wf6B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/wH+wf8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH+wf7B/sH+wf7B/wH/Af8B/sH+wf7B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af9B/wH/Qf8B/wH/Af8B/0H/Qf9B/0H/Af9B/wH/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/gf9B/0H/Qf9B/0H/gf+B/4H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/4H/Qf+B/4H/gf+B/4H/Qf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/8H/gf/B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf/B/8H/wf/B/4H/wf+B/8H/wf/B/8H/wf+B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf+B/8H/wf/B/4H/wf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/8H/wf/B/8H/gf+B/4H/gf/B/8H/wf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/0H/gf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf+B/4H/gf+B/0H/Qf9B/0H/gf9B/4H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf8B/0H/Qf9B/0H/Af8B/wH/Af9B/0H/Qf8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af7B/wH+wf7B/sH+wf7B/sH+wf8B/sH+wf7B/sH+wf8B/wH/Af8B/wH/Af8B/sH/Af8B/wH/Af8B/sH/Af7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+gf7B/sH+wf7B/sH+gf6B/oH+wf7B/sH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+wf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf5B/oH+Qf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf5B/kH+Qf6B/oH+gf5B/kH+Qf5B/kH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/gH9wf4B/cH9wf3B/cH+Af4B/gH+Af3B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af5B/gH+Af4B/gH+Af5B/kH+Qf4B/gH+Af5B/kH+Qf5B/kH+Af5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/oH+Qf6B/kH+Qf5B/kH+gf6B/oH+gf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+gf6B/oH+wf7B/sH+wf7B/oH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH/Af7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf8B/wH/Af7B/wH+wf8B/wH/Af8B/wH+wf8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/0H/Qf9B/0H/Qf8B/0H/Qf9B/0H/Qf9B/0H/Af8B/wH/Af8B/0H/Af9B/wH/Af8B/wH/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf+B/0H/Qf9B/0H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/0H/Qf9B/4H/gf+B/4H/gf9B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/wf+B/8H/gf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf+B/4H/gf+B/4H/wf+B/8H/gf+B/4H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/4H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/gf+B/4H/wf+B/8H/wf+B/4H/gf+B/8H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/0H/gf9B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf9B/0H/Qf9B/4H/gf+B/0H/Qf9B/0H/Qf+B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Af8B/wH/Af8B/0H/Af8B/wH/Af8B/wH/Af9B/0H/Qf9B/0H/Qf9B/wH/Qf9B/0H/Qf8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af7B/wH/Af8B/wH/Af7B/wH+wf8B/wH/Af7B/sH+wf7B/sH/Af7B/wH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/oH+wf6B/sH+wf7B/oH+gf6B/oH+gf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf6B/sH+gf7B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+gf6B/oH+gf6B/kH+Qf5B/oH+Qf6B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/gH+Af4B/gH9wf4B/gH+Af4B/gH+Af4B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Qf5B/kH+Qf5B/gH+Qf5B/kH+Qf5B/kH+Qf4B/gH+Af4B/gH+Af4B/kH+Af4B/gH+Af4B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+gf5B/oH+Qf5B/kH+Qf5B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+Qf5B/kH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf7B/sH+wf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+wf7B/sH+wf6B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf8B/sH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH+wf7B/sH+wf7B/wH/Af8B/sH+wf7B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Qf8B/wH/Af8B/wH/Qf8B/0H/Af8B/wH/Qf9B/0H/Qf9B/0H/Qf8B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/gf+B/4H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf+B/4H/gf+B/4H/Qf+B/0H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf/B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf/B/8H/wf/B/4H/gf+B/8H/wf/B/8H/wf+B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf+B/8H/gf/B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/8H/wf/B/8H/wf+B/8H/gf/B/4H/wf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/Qf+B/0H/gf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf+B/4H/gf+B/4H/Qf9B/0H/gf9B/4H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf8B/0H/Qf9B/0H/Qf8B/0H/Af9B/0H/Qf8B/wH/Af8B/wH/Qf8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH+wf7B/sH+wf7B/wH+wf7B/sH+wf7B/sH+wf8B/wH/Af8B/wH/Af8B/sH/Af8B/wH/Af8B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+gf7B/sH+wf7B/sH+gf7B/oH+wf7B/sH+wf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+wf6B/sH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf5B/oH+Qf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf5B/kH+Qf6B/oH+gf6B/kH+Qf5B/kH+gf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/gH9wf4B/cH9wf3B/cH+Af4B/gH+Af3B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/kH+Af5B/gH+Af4B/gH+Af5B/gH+Qf4B/gH+Af5B/kH+Qf5B/kH+Af5B/gH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/oH+Qf6B/kH+Qf5B/kH+gf6B/oH+gf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/oH+gf6B/oH+gf5B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+gf6B/oH+wf7B/sH+wf7B/oH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH/Af7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf8B/wH/Af7B/sH+wf8B/wH/Af8B/wH+wf8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Qf9B/0H/Qf8B/0H/Qf9B/0H/Qf9B/0H/Af8B/wH/Af8B/wH/Af9B/wH/Af8B/wH/Af9B/wH/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/4H/Qf+B/0H/Qf9B/0H/Qf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/0H/gf9B/0H/gf+B/4H/gf9B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/wf+B/4H/gf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf+B/4H/gf+B/8H/wf/B/8H/gf+B/4H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/gf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/gf+B/4H/wf/B/8H/wf+B/4H/gf+B/8H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf9B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf9B/0H/Qf9B/4H/gf+B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf8B/0H/Qf8B/wH/Af8B/0H/Af8B/wH/Af8B/wH/Af9B/0H/Qf9B/0H/Qf9B/wH/Qf9B/0H/Qf9B/wH/Qf8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af7B/wH+wf8B/wH/Af8B/sH+wf7B/sH/Af7B/wH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf6B/sH+wf7B/sH+wf6B/oH+gf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/oH+gf6B/oH+gf7B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf5B/oH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+gf6B/oH+gf6B/kH+Qf5B/oH+Qf6B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/gH+Af4B/gH9wf4B/cH+Af4B/gH+Af4B/cH9wf3B/cH9wf3B/cH+Af3B/cH9wf3B/cH9wf3B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af5B/kH+Qf5B/gH+Qf5B/kH+Qf5B/kH+Qf4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+gf5B/oH+Qf5B/kH+Qf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+Qf6B/kH+gf6B/oH+gf6B/kH+gf6OPsH+gf6m/2r/gf6B/oH+gf6B/oH+gf6B/oH+gf6q/6r/gf6B/o4+wf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf7B/oH+wf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oo+2n8B/oH+gf6B/sH+wf7B/sH+wf6B/qr/qv+B/sH+6v+q/4H+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/ur/pv+B/sH+2n9B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7Wf1p/Qf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf8B/sH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH+wf7B/sH+wf7B/wH/Af8B/sH+2n9af0H/Af8af1p/Qf8B/wH/Af8B/wH/Af8B/wH/Af8af1Z/Qf8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af9B/wH/Qf8B/wH/Af8B/wH/Qf8B/0H/Af9B/wH/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Wn+q/8H/Qf9B/0H/Qf9B/0H/Qf9B/0H/av/q/8H/Qf9m/44/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/gf9B/0H/Qf9B/0H/gf+B/4H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf+B/4H/gf+B/4H/Qf+B/0H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/8H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/8H/wf/B/4H/gf+B/4H/wf/B/8H/wf+B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/GP8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/9p/2n/B/8H/2n/af8H/wf/B/8H/wf/B/8H/wf/B/8H/2n/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8Y/2n/B/8H/2n/af8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/gf/B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/8H/wf/B/8H/gf+B/4H/gf/B/8Y/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+Wf9p/wf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/mn/OP4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/0H/gf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf+B/4H/gf+B/4H/Qf9B/0H/gf+B/4H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf8B/wH/Af9B/0H/Qf9B/wH/Af8B/wH/Qf8B/0H/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af7B/sH+wf7B/wH+wf7B/sH+wf7B/sH+wf8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/sH/Af7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+gf7B/oH+wf7B/sH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+wf7B/sH+gf6B/oH+gf6B/sH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf5B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf5B/oH+Qf6B/oH+gf5B/kH+Qf5B/kH+gf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf4B/kH+Af5B/kH+Qf4B/gH+Af4B/gH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Af5B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/cH9wf3B/gH+Af4B/gH+Af3B/cH9wf4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af3B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af5B/kH+Qf4B/gH+Af4B/kH+Qf5B/kH+Af5B/gH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+c3uB/kH+Qf5GPqb7N/dz9zPzAf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/lq2wf5jbq/u7+7r6qvqgf5jqkH+Y+In5mfmY+Ij4i8/f//7+7v7v/////v7u/u393f3c/Mz8zf3c7dSskJpv/////v7u/u//+8/e/u7+6+3N/dCZaNut/d393PzM/Mv7t8ua+qGpYJlgqFCoUKZI6ZCoV+iAp0CmQLZAtkC1MKdBt1C2QLUzyGK3ULUwtkC1MLUwtkC2QLZAtkCnQKdQjpevxJ2s7t/////+/u7+5aud/dW6jPzN/d393PzIy6/////+/u7+7/////7+7v7t/d390al7/M393f3c/Mz8wrdp66C2QLZEuXCnUKZAp0C2QLZAp1CnUKZApkCnUKdQp1v7s8hq+qv7u/u6+qr6pMhp+ZXXePiJ+Zn5mPiI+I/////+/u7+7//+//7+7v7t/dz92Nuhp2393f3a67rstq7Bjrve1a2+/////v7u/uW7mMywqGjbrf3d/dz8zPzDx2C1QcVAxDC1QrdQxDC1MMQwxDDEMMQwxDC0MMQwtUC2R9qQtUbZi/u7+7r6qvqgtUXYcLZF13n5mfmY+Ij4j/////7+7v7v/////v7u/u393f3c/MW6mc3M/dCYYal//////v7u/u3f5J7O/u3+7f3d/drsvPzN/d393PzM/Mv7srhq+qC2QKdSt2HGWfqZ+ZfoiPiI+In5mfmY+Ij4i/u7+7r6qvqr+7v7uvqp+pn5mfmY+Ij4ifmSxVHFQMQwf7B/wI2gjrB/wH/AjrB/xaygjJS6kJqAjKCOsIuQjKB/wH/Af8B/wH/Qf9B/wH/QfsB/wI6wf8B/w4/Qf8Wew7hwqGC1QKZQmXCbkKhgmoC1QLVAxDC1QKdQmXCmUJhwjKCOsIygjrB/xJ7Af8GOwIuQjbCbkI2wfsB/wH7AfsGP3d/7zu7+7/////7+7v7t/d393PzM/M393f3c/MjMv/////7+7v7v/////v7u/uzt293QmoCZff3d/dbKnPzL+7v7uvqq+qv7uNuq+qr6psup+ZCNtcmJ+Zn5mPiI+IGocKdq+qfpkLZSt2PHYLVJ+Zn5mPiI+In5l+iI+Ij4jN/hjs7+6c7QfsB/0I2wjs390qumypCocIugjKCZgJqQf9B/0I7Af9B/0H/gf9B/4I2wjsa8vPzDjtWe3PzM/MC2UKdgtVC2UKhzqpCnZLmSxlC2WPiCx2CnYKhwp2Coe/u7+7r6qvqr+7v7uvqq+qfZmfmQmYKpkJuhqpTJh+iAf+B/4H/gf+B/4H/gf+B/4H/gf+z8yt3Qf+B/4Y7Qf9B/4H/gf+B/4H/gf+B/4H/gf+B/4H/r7dB/4H/s/Mz92/u7+7r6qvqq7MGNyvqmu6j5mfmY+Ij4ifmX2Zj4h+iAjsv7sIy6+qv7u/u6+qr6oJqZ+ZCod+iJ+Zn5mPiI+IB/4H/gf+B/4H/gf+B/4H/gf+B/5Z7Qf+B/4H/gf+vt0H/gf/B/4H/wf/B/8H/wf/B/8H/8/Mvt0H/wf/GP4H/nvMCO1KywjMCO2/uwjMr6pLqgm6XIgJmAm6n5kJmI+Iv7u/u6+qr6pK3QjtSstay5+Zn5mPiI+IKqqOmQmZj4gH/wf/B/8H/wf/B/8H/wf/B/8H/wf+i90H/0n+z93PzAf/B/8H/wf/B/8H/wf/B/9J/gf/z8zP3Qf/B/+L3Qf+ncy/u6+qr6q/u7+7r6qeu5+Zn5mPiI+IbKoJqjuIXYi/u7+7r6qvqr+7e8yvqq+qbJmfmY+Ij4ifmZ+Zj4h/iAf/B/8H/wf/B/8H/wf/B/8H/wf/B/4H/wf/B/8H/wf/B/8H/wf/B/8H/5v/B//N7gf/B/8H/wf/B//e7Qf/z8wI3QjuCMsIzAfuB/4I3QjuCZkJqgp3CYgIywjdCaoIywf/B/8H/gf/B/+/uwf/r6oI7gf/CN0H7gf+n5kH7o+I/////+/u7+7/////7+7v7t/d393PzM/M392+3c/MGan//+//7+7v7pv/B+7v7r3uz93f3RqZv8zf3d/dz8zPzL+7v7uvqq+qjbsKd22ZCmafmZ+Zj4iPiF2IC2VddwtVCnY8iAtVC1W/u7+7n6qvqgtVC1ULVQtVXXefmT1mj4gH/gf/CN0I7gf/B/8H7gf/nN0IzM/MKrsI3QjuCLsIzAf/B/8H/wf/B/8H/wf/B/8H/wf/jN3P3Un/Sf/PzM/Mv7uNqq+qn6oJmWu7Cohsqp+Zn5mPiI+IG3cKiCx3Cma/u7+7r6qvqr+7v7ueu6+qjpmOmQp3O4gJqjuqXYh/iAf/B/8H/wf/B/8H/wf/B/8H/wf/z8yc3Qf/B/8Y7gf/B/8H/wf/B/8H/wf/OP/e7gf/B/8Y/63di+7f3c/Mz8y/u7+7r6qvqq7MCN2vqjq7n5mfmY+Ij4ifmWyZj4hdiErdv7tKu6+7v7u/u6+qr6oJqgmqCogKiI6Zn5l+iI+Iev+b/+/u7+4H/wf/OP8H/9/dzt3PzM/MCO4I7a3MCMwH/wf/B/8H/wf/B/8H/wf/CO4I7hnMnN0H/lnuz8zPzL+7v7uvqq+qv7tbu56qGoifmTuIj4gsdwpmCmYLVQtVfLu/u46qr6q/u7+7r6qeugt3jpkLZht3fZkJmSuIbYgH/wf/B/8H/wf/B/8H/wf/Sf4H/8/Mz90H/wf/i90H/gf/B/8H/wf/B/8H/wf/B/8H/wf/B/4H/gf/B/8H/gf/v7u/u6+qr6q/u4zMr6qvqkuZn5l/iI+In5mfmY+Ij4gI3QjtKbsIzAfuB/4I3QjtO5kJqkyHCogIuwjcCakIuwf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf+vP///83u7+7/////7+7v7t/d393PzM/M393f3c/Mz8wH/gf/B/4H/gf/B/4H/wf+CO0H/gjcB+4H/gf+B/45y7+7v7uvqq+qv7u/u6+qO4ifmZ+Zj4iPiJ+ZCnaPiAtm3v8Y/u/uve4H/gf+CNwI7d/d393PzM/MWssZy67MncsH/rz/eu3v7v/////v7u/u393f3c/Mz8zf3d/dz8zPzL+7v7uvqq+qv7u/u6+qr6p+iJ+ZPWaPiJ+Zn5mPiI+Iv7u/u6+qr6q/u7+7XJivqp+ZXXePiBxUPGafmS1Vj4j//97/7+7v7gf9B/0I3Ajc393f3c/Mz8xaywi6S6oJmAf9B/0I7AftB/0H/Qf9B/0IywjcCak6ywjsOO3PzM/Mv7u/u6+qr6pMiAp2PHYLZZ+Zn5mPiI+IXncsZU5mTWY7mL+7jqqvqr+7v7uvqq+qn5mfmY+Ij4ifmRmoXYgKhwf+B/0H/Qf9B/0H/Qf9B/1Z7Qf9z8zPzAf9B/2s3RjsB/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/UnsB/0H/c7cz8y/u7+7nrqvqr+7rsuvqq+qCalcmQqHCoefmZ+Zj4iPiAjbSttbukq6v7u/u6+qr6qOmTuYj4gKhp+Zn5mPiI+IB/0H/Qf9B/0H/Qf9B/0H/Qf9B/2+3CjsB/0H/Qf8KOwH/Qf9B/0H/Af8B/wH/Af8B/0H/M/cz8wH/Af8rNwH/L+7KduvqgjKCOtK2wjKSsqfmRmpj4g7hwm5OqkJlzuXv7u/u6+qr6q/uwjrr6oIyp+Zn5mPiI+In5kZuX6IO5cH/Af8B/wH/Af8B/wH/Af8B/wH/Af8GPwH/Af8rNzPzAf8B/wH/Af8B/wH/Af8B/xZ/Tj8z8zPzAf8B/vO3GrsGOuuy3y6r6q/u7+7r6qvqp+Zn5mPiI+In5k6qX6IO4e/u7+7nrqvqr+7v7uvqq+qCaiOmW6Ij4ifmZ+Zj4iPiAf8B/wH/Af8B/sH+wf7B/sH+wf7B/sH+wf7B/vO3M/MB/sH+wf7B/sH+wf7B/sH+wf7B/u+3HrsB/s4/M7cz8w52gjajbpKub+7v7uvqq+qjpk7mF2HCnWfmZ+Zj4iPiL+7v7uvqq+qv7u/u6+qr6qfmZ+Zj4g8hkuYn5kKdSt2B/sH+wf7B/sH+wf7B/sH+wf7B/u+3BjrB/sH+wf6B/oH+wf7B/sH+wf7B/sH+wf6B/sH+wf6B/oH+wf6B/oH+r+7e8uvqmy5COkI6gjICMifmQqWC3UKdQmnCacKhQmWB+oH+gjZCOkH+gf6B/oH+gjICNkJpwjICOkH+gjpB/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+gf6B/oH+gf6B/kH+Qf5B/oH+gf6B/oH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/gH+Af4B/kH+Qf5B/kH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/kH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Qf5B/kH+Qf5B/gH+Qf4B/kH+Qf5B/kH+Qf4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/kH+Af5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/oH+Qf5B/kH+Qf6B/oH+gf6B/l/dwf5XnZ/d393b2ZvZgf5PXUH+RqWX1VfVU9ET0QH+Qf5B/kH+gf6B/oH+gf6B/kH+gf6B/oH+gf6B/oH+gf5CNgH+QjYLzM/MwqGLyIH+QjpB/oI6QjHCnUIyAmnb3cLZG9mLGQLUwtTC1MLZF9VT1RPRE9EC1MLZD9ELVQLZAp1CnQJhgqFCZYJp112CnUJlhtkLVQ7dl9VT0RPRD8zPzMvIi8iPzM/My8iLyIfER8RCnUMMh8RHxENIQ4RPzM/My8iLyI/Mz8zLyIeMh8RHxENIQ0yHiEKdQtkC2QJlgmWCLgItwmWCZYJtwm3GagI2SuGCNkIyQjICNkI2U12f3dMdm9mf3d/d29mb2Y8dl9VLGVPRF9VX1VPRE9EGZcIyQmnCbcIyQjZCLgIyAmGCZYKdQp1CZcJpwmGCacsZT8zHFQvIj8zPzMvIi8iC2UfEQmnDEMfER8RC2QLUwtTC1MLVAtUC1MLZAtkCnUcVAtUHFQLZAtkCoYKZQqGCnVNdgqGPHZ/d393b2ZvZgmXPHYJpyxlX1VfVU9ET0QdQwtkHiILVAplCoYLZAqGHxELVAxDC1QLZAp2C2QKdQmnHGUJpxxUPzM/My8iLyIJlwp1CZcJuB8RHxEKdQtlf3d/d29mb2Z/d393X1VvZl9VPlRPRBxEDEMuRAxDDDN/d393b2ZvZj1VDENvZh1EX1VfVT9DT0RfVU9ET0RPRD8zHUMvIh4yDEMMMgxDDDMfER4hDEMMQwxDDEMLVAtULzI/Mx4iLyI/Mz8zLyIvIg0yHxELVAxDHxEfEQxDDDMMQwtUDEMLVAplCZcKdQmXC0MLZBxEC2UKdgmoCoYJqAi5CNsIuQjbB+wI6wf8S5gIygjrCMoI7Af8TWYH/D1VHjMLZR4iC2UKhgmoCnYJmB4hC1QMQwtUCnUJlwplCocIygjsCMoI6wf8LGUH7Am5CLkI2wmpCMsH7AjsCOwI7G2ICalvZjuHCoc9dgmXCnZfVU5lT0RPRAmYCnY+VBtmb3d/dwtUHFR/d393X2VvZgtlC1QLZRxUHVRfVT9ET0Q/Mz8zLyIvIj8zPzMvIi8iCZcfIQjKCakfER8RC1QNMj8zPzMvIi8iPzM/My8iLyIfER8RDiENIh8RHxENMgxEf3d/d29mb2YKdgmHK3YKh19VX1VPRE9EPVUsZRxUPkQqmH93b2ZvZn93f3dvZm9mX1VfVU9ET0RfVT1lP0QLZj8zPzMvIh0zC1QeQwxEDEMOIgxEC1QMRAxEDEQMRAxEPzM/My8iLyI/My8zLyIvIg0zHxELVAtUHxEfEQwzDDN/d393b2ZvZn93bndvZl5VLFVfVS1ET0RfVU9ET0Q/QwtlXncLVD1Vf3d/d29mb2YMRBxEDEMMRF9VX1U/RE9EPzM/My8iLyI/My8zLyIvIh8RHxENMw0yHxEfEQ0iDDMMQwxEDEMMRB1DPzMLVB8iDEMMRAxDC0QLVAxEC1ULZl13CndfZgtmK3d/dz1mb2ZfVSxVT0RPRE9VX1VPRE9Ef3dud29mTWYrd393LGZvZl9VLGU/RAtlHFVfVQxVT0Q/Mz8zLyIvIj8zPzMvIh8iHxEfEQtUDSIfEQwzDEQLRB1DC1ULVAtUC1UvMwtUDTMMRAxEDEQMRAtUC1ULVQtVf3d/d29mb2Z/d393b2ZvZl9VX1VPRE9ET1UuRC5EDER/d393b2ZeZX93LGYdVAxEHEQMRAxDDDMMRC1ELkM/RD8zPzMvIi8iPzMvMy8iLyIOIh8RC2YMRB8RHxENIg4RHjMvMy8iLyI/My8zLyIeMx8RHxEOIg0iHxEMRAxEC1ULZgp3C1ULZgmICaoKhwmqC1QLZgtVC2YKdwmZCncJqgjMCO4IzAjuB+5/dwjub2YIzAjtCMwI7QjuX1UI7k9EC1UKZgtlCncKiAmqCYgJqgtmCncLZgp3CZkJuwmZCbsIzAjuCMwI7gjuPzMI7i8iCMwI7gjMCO4I7h4zCO4Jqn93f3dvZm9mTXcLVT1mC1VfVV9VT0RPRD5VC2U/RAtVC1ULVQtVC2YsZn93LGZvZgtmCmYLZhxVPVVfVU9ET0Q/Mz8zLyIvIj8zLzMvIi8iHxEfEQp3C1UfER8RDEQMMy4zPzMvIi8iPzM/My8iLyIfER8RDDMMMx8RHxEMRAtVf3d/d29mb2YsZgtmLGYsVV9VX1VPRE9EHFU+VQtVPkQ8d393b2ZvZn93f3dvZm9mX1VfVU9ET0RfVS1VPkQLVT8zLjMvIgxVC1UuMwtVDTMMVQtVC1ULVQtVC1ULVQtVPzM/My8iLyI/My8zLyIvIg0iHxELVQtVHxEfEQwzDDN/d393b2ZvZn93TWZvZj5VPlVfVT5ET0RfVU9ET0Q/RAtmCncLVQtmf3d/d29mb2YMRAtVDEQLVV9VX1U/RE9EPzM/My8iLyI/My8zLyIfIh8RHxENMw0iHxEOEQ0iDDMMRAtEDEQLRC4zPzMeIi8iDEQLRAxEC1UOIh8RC1QNIn93LGZvZhxVC1ULVQtVC1VfVRxVT0QtRAtVC1ULVQtVC1U8ZixVb2Z/d393b2ZvZk9VX1VPRE9EX1VPVU9EPkQ/My4zLyIvIgtVC2YLVQtmHxENMwtlC2YLVQtmC2YLZi8zPzMdMy8iPzM/My8iLyIKdg0zCnYKdx8RHxEKZgxEf3d/d29mb2Z/d393b2ZvZhtmTlUKZj9EX1VfVU9ET0RNZgp2PVULVQqICakKdgmYLkQLVC5DDEQLZgqIC1UKdy8zPzMvIi8iPzM/My8iLyIfER8RDEMNMx8RHxENIg0iHjMMRB4iDEQLVQp3C1UKdw4iDEQMMwxEC1UKdwtVCncIywjtCLoI3Af+ObsH7im6CaoIzAmpCMsI7QjcCO0I7X93f3dvZm9mf3cLZm9mLGZfVV9VT0RPRF9VHGVPRC1UCZkIywmZCMsI7QjtCO0I7QmZCMsJmQjLCO0I7QjtCO0/Mz8zLyIvIj8zLjMvIh8iHiIfEQmpCnYfER8RC1ULVAtEf3cLVF9Vf3d/d29mb2YLVC1EC1UMRF9VX1U+RD9Eb2YMMz5VDDMtRH93PkRvZi1EDDMMRAxDLkRfVS5DT0QLVQtUC1ULVQtUC1QLVQtVC1QLVQtlC2ULZQtlC2UKdgtUC1QLZQtlLzM/My8iLyIKdgxUCocKhx8RHxELVQtUf3d/d29mb2ZOVU5lPlU+VV9VX1VPRE9ELkQuRB1DHUN/d393b2ZvZk12CnY9ZQtlX1VfVU9ET0Q+VAtUT0QtRD8zPzMvIi8iDUMMQwxDDEMfER8RDEQMRAxEDEQLVAtULzM/Mx4yLyI/Mz8zLyIvIgxDDiIMRAtEHxEfEQwzDSIKdgplC2ULZW53f3dfZm9mC1ULZQxUPkRfVV9VT0RPRH93LHZvZixlf3d/d05lb2ZfVQxUP0QLVC1UX1UMVE9EPzM/My8iLyI/Mz8zLyIvIh8RHxEOEQ0iHxEMQwxDC1QuQwtUC1QLVAtULjMLVAxDC2QLVAtUC1QLVAtUC1QLZH93PHZvZk5lCnZNdgtlTmZfVU9VT0RPRBxUX1VPRE9Ef3d/d29mb2ZNd012PGY9ZV9VX1VPRC5EC2U9VAtUHUQ/Mz8zLyIvIj8zPzMvIi8iDTIfEQtlDEMfER8RDSIMQz8zDEMeMgtTC1QMUwtTC1MMQwxDDEMMQwxDC1MLQwtUf3d/d29mb2Z/d393b2ZvZl9VX1VPRE9EX1VOVE9EHUN/d393b2ZvZn93f3dOVRxDLUQMQwxDDEMMQx1DDDM/Qz8zPzMeMi8iPzM/My8iLyILUx4hC2QLZB8RHxEMMg0hLzMuMy8iLyIvMz8zLyIvIh8RHxEOEQ4hHxEOIQ0yDEMcVAtkDEMLU393f3dvZm9mHUMMQy5DC0NfVV9VT0RPRH93HGVvZgtTC2QLVAtTC1NfVQtTT0QMQwtDC0MLQwtTLjMLUw1DC1Q/Mz8zLyIvIgtTC2QLVAtkHxEfEQxDDEM/MwxDLyIdMgtTC1QLVAtkHxEOIQxDC1MLVAtkC2QKZAtUC2QLUwtUCnQKhQpkCoULUwtkC2QKdAp1CZYKhQmnCacIyAmmCMgI2Qf6CNkH+gmnCMgIyAjZCOkH+gjpB/oKZAqFCnUJlgmmCLgItwjZCoUJpgqFCacIyAjpCMgI6QjZCOkH6Qf6B/kH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+Qf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf5B/oH+Qf6B/oH+gf5B/kH+Qf5B/kH+gf5B/oH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf4B/kH+Af5B/kH+Qf5B/gH+Af4B/gH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af5B/gH+Af4B/gH+Af5B/kH+Qf4B/gH+Af4B/kH+Qf5B/kH+Af5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf6B/kH+Qf5B/kH+Qf6B/oH+gf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B+kH+gf6CNgItwjpCMgH+gf6B/oH+gfpCNkH+gfpB/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gmWCnUJpwqFC2QLUwp0C2QIyAmnCNkIyAqFCnUJpwmWC0MLQwtTC1MLUwtTC1MLUwtkC2QKhQp1C2QLZAp1CoUH6QjZB/oH6gjICLgI6QjZB/oH+gf6B/oH+gfqB/sH+wmnCacIyQjICacJpwjICMkH6gjqB/sH+wjqCOoH+wf7C2QKdQtkCnUKhgmXCoYJpwp1CoUKhgmXCZcIuAm4CMkJpwmnCLgJuAmXCoYJpwqGCMkIyQjZCNkJuAmXCMkIuAmnCLgIyQjZCMkI6gjqB/sH6gf6B/sH+wf7B/sH+wf7COoI6gf7B/sI2gjJB+sI6gf7B/sH+wf7B/sH+wf7B/sLZAtkCnUKZQtlCoYKdQqGCoYKhgmnCZcKhgmXCacJqAmXCbgJpwi4CbgJlwi5CagJuAjJCMkI2gjJCLkI2gjJCMkIuQjaCNoIyQjJCNoI6gf7B+sH/Af8B/sH+wf8B/wI2gjqCOsH6wjrCNsH+wfrB/wH/Af8B/wH/Af8B/wH/AqGC2UJhgp1C1QLVAp1CnUJqAqGCLkJqAqGCoYJqAmoC2UKZQp2CoYKZQtlCoYKdgmHCZcJqAm5CZcJhwm5CagI2gjJCOsI6wjJCMkI2wjbB/wH/Af8B/wH/Af8B/wH/AjKCMoI6wjrCMoIygjrCOsH/Af8B/wH/Qf8B/wH/Qf9C2QLZQp1CmUKZQqHCnYKhwqGCoYJqAmoCocJmAmoCbkJqAjKCakIygjsCOwI7AjsCLkI2wjKCNsI7AfsB+wH/QjKCMoI2wjbCMoIygjbCOwH/Af8B/0H/Qf8B/0H/Qf9CNsH7AfsB/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0IywmpCNsIugmXCnYJmAqHCOwIygfsCNwJqQmYCMoJqQtlC1UKZgtlC1QLVAtUC1QKdgpmCZgKhwtlC2UKhwp2B/0H7Af9B/0I3AjLB+0I7Af9B/0H/Qf+B/0H/Qf+B/4IugmpCNwIywmpCZgIywjLB/0H7Qf+B/4I7AjsB/0H/QtEDEQLVAtUC0QLVAtVC2ULZQtlCncKhwp2CncJmAmZC1ULZQpmCnYLVQtVCnYLZgqHCZgJqQm6CYgKhwm6CakJqQmpCMsIywm6CMsI3AjcCOwI7Qf+B/4H7Qf9B/4H/gjLCNsI7QftCMwIywjtCO0H/gf+B/4H/gf+B/4H/gf+C0QMRAtVC1QMQwxDC0QLVAp2CmYJmAmIC2ULZQqHCocMRAtVC1ULZQtlCnYKdgqHCmYKdwqICZkKiAmZCakIugi7CboI3AjcCakJqgjMCMwH/gfuB/4H/gftB+0H/gf+CaoIuwjcCNwIywjcCO0I7QfuB+4H/gf/B/4H/gf/B/8Kdwp2CogKhwtlC1UKdgtmCakJmQi7CLsJiAqHCaoJqQtUC1ULZQtmC2UKZgp3CogKdwqHCZkJqQmICakJqgi7CNwI3AfuCO0IzAjLCO0I7Qf+B/4H/wf/B/4H/gf/B/8IywjLCN0I7QjMCN0I7QfuB/4H/gf/B/8H/wf/B/8H/wp3CncJiAqIC2YLVQp3CmYJqgmqCMwIzAmZCogIuwmqC1QMRAtVC1UMRAtVC1ULVQp3CmYJmQqIC2YKZgqICogI7QjdB/4H/gjcCMwI7gjtB/8H/wf/B/8H/wf+B/8H/wm7CaoI3QjMCaoJqgjMCMwH7gjuB/8H/wjuCO4H/wf/C2YKdwpmCocJmQm7CZkIuwp3CYgJmQmqCaoIzAi7CNwIzAjuCN0H7gfuCN0H7gjdCN0H7gjuB/8H/gjuB/8H7gm7CMsI3AjdCNwI7gjuB/4H7gf+B/8H/wf/B/8H/wf/B/4H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8IuwmZCMsJmQp3C1UKdwtmCMwJqgjdCMwJiAp3CaoJmQtVC1ULVQtVC1ULVQtVC1UKZgtmCogKiAtmC2YKiAqICO4I3Qf/B+4IzAi7CO4I3Qf/B/8H/wf/B/8H7gf/B/8JqgmqCMwIzAmqCaoIzAjMB+4H7gf/B/8I7gfuB/8H/wtVC1ULVQtVC1ULVQtmCmYLZgp3CogJmQp3CogJmQmqC2YLZgp3CncLZQtVCncLZgmZCZkJuwi7CZkKiAm7CaoJqgm7CMwI3QjLCMwI3QjuB+4H7gf/B/8H/wf/B/8H/wjdCN0H7gfuCMwIzAjuCO4H/wf/B/8H/wf/B/8H/wf/C0QMRAtVC1UMRAxEC0QLVQp3CmYJmQmIC2YLZgqICogMRAtVC1ULZgtmCnYKdwp3CmYKdwmICZkKiAmYCaoJqgi7CbsI3QjdCaoJqgjMCMwH/gfuB/8H/wfuB+4H/wf/CbsIuwjdCN0IywjMCN0I7QfuB+4H/wf/B/4H/gf/B/8KdgpmCncKdwpmCmYKdwp3CZgJiAmqCaoJiAmYCaoJqgp3CncKhwqICncKZgqICncJmQmZCboIuwmZCZgIuwm6CMwIzAjtCO0IzAjMCO0I7Qf+B/4H/wf/B/4H/gf/B/8IzAjcCO0I7QjcCMwI7QjtB/4H/gf/B/8H/gf+B/8H/wtVC1QKZgtVDEQMQwtUC0QKiAp3CaoJmQtmC2UKiAqIDEQLRAtUC1ULZQp3CmYKiAtmCnYKiAmYCocJmQmZCboIywi7CO0I3Qm6CaoI3AjMB/4H/gf/B/8H7gfuB/4H/gmqCboIzAjcCLsIzAjcCO0H7QftB/4H/gf+B/4H/gf+CakIywmqCMsI7QftCO0H7Qi6CNwIywjtB+0H/Qf9B/4I3Am6CNwIugmYCnYJmQqHCO0IywftCNwJqgmYCMsJugjcB+0H7Qf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/0I7Qf+B/0I3AjLB+0I7Af+B/4H/gf+B/4H/Qf+B/4LZgtlCnYKdgp2CocKhwmYCocKhwmpCakJmAmpCakIygmYCakJqQi6CagJmAi6CakIygjLCNsI7AjLCLoI7AjbCMsIywjcCNwIywjbCOwI7Af9B/0H/gf+B/0H/Qf+B/0I7AftB/0H/QftCOwH/Qf9B/0H/Qf9B/4H/Qf9B/0H/QqHC2UJlwp2C1ULVAplC2UJqQmHCLoJqQqHCnYJqAmYC1QLVAtlCnULZQtVCnYKdQqGCocJqAmpCYcKhwmpCagI2wjKCOwI7AjKCLoI2wjbB/0H/Af9B/0H/Af8B/0H/QjKCMoI2wjrCMoIygjsCOsH/Af8B/0H/Qf8B/wH/Qf9C1QLVAtlC1ULVAtUC1QLVAp2CnUJmAmXC2ULZQqGCoYLVAtUC1QLZQtlCnUKdQqGCmUKdgqGCZcKhwmXCagIuQi5CbkI2wjaCagJqAjKCMoH/AfsB/wH/AjrCOsH/Af8CagIuQjKCNoIygjaCOsH6wfrB+wH/Af8B/wH/Af8B/wKdQp1CYcJhwplC1QKhgp1CagJqAjJCMkJlwqGCLkJqAtUC1QLZAtkC1QLZAtlCnUKdgp1CZcJlwqGCZcJpwm4COsI6wf7B/sI2gjJB+sI6wf8B/wH/Af8B/wH+wf8B/wIyQjJCOoI2gjJCMkI6gjqB/sH+wf7B/sH+wf7B/sH+wp1CnUKhgmWCnULZAqGCnUJpwmoCMkIyQmnCZYIyQm4C1QLQwtkC1QMQwtDC1MLVAqFCnUJpwmWC2QLZAqGCoUI2gjqB+sH+wjaCMkH6wjqB/sH+wf7B/sH+wf7B/sH+wjICbgI2gjZCacJpwjJCMgH+gfqB/sH+wjqCOoH+wf7C1QLZAtkCmQLZApkCnUKdQp1CnUKhgmWCoUKhQmWCacKZAtkCnUKdAtkCnUKdQqFCoUKhQmnCaYKhQmWCacJpwmnCbcIyQjZCLgIyAjZCNkI6gfqB/sH+wfqB/oH+wf6CMgIyAjZCNkIyAjICNkI6Qf6B/oH+gf6B/oH+gf6B/oJhgmnCZYJtwjIB+kI2AfpCaYItwi3CMgI2QfpCOkH+Qf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6CMgI2QjpB+kH6Qf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+Qf6B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+gf6B/oH+gf6B/kH+gf5B/oH+gf6B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/gH+Qf4B/kH+Qf5B/kH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/kH+Af4B/gH+Af4B/gH+Af5B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af5B/kH+Qf5B/gH+Qf4B/kH+Qf5B/kH+Qf4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/oH+Qf5B/kH+Qf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+Qf5B/kH+Qf6B/oH+gf6B/kH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf7B/oH+wf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf7B/sH+wf6B/sH+gf7B/sH+wf7B/sH+gf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH/Af7B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH+wf7B/sH+wf7B/wH+wf8B/sH+wf7B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Qf8B/0H/Af8B/wH/Qf9B/0H/Qf9B/wH/Qf8B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/gf9B/4H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/gf+B/4H/Qf+B/0H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf/B/4H/gf+B/4H/wf/B/8H/wf+B/8H/gf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/4H/gf+B/4H/gf+B/4H/wf+B/4H/gf+B/4H/gf+B/8H/wf/B/8H/wf+B/8H/gf/B/8H/wf/B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/0H/gf9B/4H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf+B/4H/gf+B/4H/Qf9B/0H/gf+B/4H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf8B/0H/Af9B/0H/Qf9B/0H/Af8B/wH/Qf9B/0H/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af7B/sH+wf7B/wH/Af8B/sH+wf7B/sH+wf8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/sH/Af7B/wH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+gf7B/oH+wf7B/sH+wf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+wf7B/sH+gf6B/oH+gf6B/sH+gf7B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf5B/oH+Qf6B/oH+gf6B/kH+Qf5B/kH+gf5B/oH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf4B/kH+Af5B/kH+Qf5B/kH+Af4B/gH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/gH+Qf4B/gH+Af4B/gH+Qf4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/cH+Af4B/gH+Af4B/cH9wf3B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf4B/gH+Af4B/kH+Qf5B/kH+Af5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf6B/kH+Qf5B/kH+Qf6B/oH+gf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+gf6B/oH+gf5B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+gf6B/oH+gf6B/sH+wf7B/oH+wf6B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH/Af7B/sH+wf7B/sH/Af8B/wH+wf8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Qf9B/0H/Qf8B/0H/Qf9B/0H/Qf9B/0H/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af9B/wH/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/0H/Qf9B/4H/gf+B/4H/gf9B/4H/Qf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/8H/gf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf+B/4H/gf+B/4H/wf+B/8H/gf+B/4H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/4H/wf/B/8H/wf+B/4H/gf+B/8H/gf/B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf9B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/0H/gf9B/4H/gf+B/0H/Qf9B/0H/Qf+B/0H/gf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf8B/wH/Af8B/0H/Af9B/wH/Af8B/wH/Af9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/wH/Qf8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af7B/wH+wf8B/wH/Af8B/wH+wf7B/sH/Af7B/wH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH/Af7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf6B/sH+wf7B/sH+wf6B/sH+gf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+gf6B/oH+gf7B/oH+wf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+Qf6B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+gf6B/oH+gf6B/kH+gf5B/oH+gf6B/oH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Af4B/kH+Qf5B/kH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/kH+Af5B/gH+Af4B/gH+Af5B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH9wf4B/gH+Af4B/gH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf4B/gH+Af3B/cH9wf3B/cH+Af3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+Qf5B/kH+gf6B/oH+gf6B/kH+gf5B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+wf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf7B/sH+wf6B/oH+gf7B/sH+wf7B/sH+gf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH/Af7B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH+wf7B/sH+wf7B/sH+wf8B/sH+wf7B/sH+wf8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Qf8B/0H/Af8B/wH/Af8B/0H/Qf9B/wH/Qf8B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/4H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/4H/gf+B/4H/Qf+B/0H/gf+B/4H/gf+B/0H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf/B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf/B/4H/gf+B/4H/wf/B/8H/wf+B/8H/gf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf+B/4H/gf+B/4H/wf+B/4H/gf+B/4H/gf+B/8H/wf/B/8H/wf+B/4H/gf/B/8H/wf/B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf9B/4H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf+B/4H/gf+B/4H/Qf+B/0H/gf+B/4H/gf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Af9B/0H/Qf9B/wH/Af8B/wH/Qf9B/0H/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Qf8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af7B/sH+wf7B/wH/Af8B/sH+wf7B/sH+wf8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/sH/Af7B/wH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+wf7B/sH+gf6B/oH+gf6B/sH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf5B/oH+Qf6B/oH+gf6B/kH+Qf5B/kH+gf5B/oH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Af5B/kH+Qf5B/kH+Af4B/gH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/gH+Qf4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/cH+Af4B/gH+Af3B/cH9wf3B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH9wf3B/cH9wf3B/gH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf6B/kH+Qf5B/kH+Qf6B/kH+gf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/oH+gf6B/oH+gf5B/oH+Qf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf7B/oH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+gf6B/oH+gf7B/sH+wf7B/oH+gf6B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf8B/sH/Af7B/sH+wf7B/wH/Af8B/wH+wf8B/sH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Qf9B/0H/Qf8B/wH/Af9B/0H/Qf9B/0H/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af9B/wH/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf+B/0H/gf9B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/0H/Qf9B/0H/gf+B/4H/gf9B/4H/Qf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf/B/4H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf+B/4H/gf+B/4H/wf+B/8H/gf+B/4H/gf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/gf/B/4H/wf/B/8H/wf+B/4H/gf+B/8H/gf/B/4H/gf+B/4H/gf/B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf9B/4H/gf+B/4H/Qf9B/0H/Qf+B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/wH/Af8B/0H/Af9B/wH/Af8B/wH/Af9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf8B/0H/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af7B/wH+wf8B/wH/Af8B/sH+wf7B/sH/Af8B/wH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf6B/sH+gf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/oH+gf6B/oH+gf7B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+Qf6B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+gf6B/oH+gf6B/kH+gf5B/oH+gf6B/oH+gf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf4B/kH+Qf5B/kH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/kH+Af5B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH9wf4B/gH+Af4B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf4B/gH+Af3B/cH9wf3B/cH+Af3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/oH+Qf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+Qf5B/kH+gf6B/oH+gf6B/kH+gf5B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+wf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf7B/oH+wf6B/oH+gf7B/sH+wf7B/sH+gf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH/Af7B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH+wf7B/sH+wf7B/sH+wf8B/sH+wf7B/sH+wf8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Qf8B/0H/Af8B/wH/Af9B/0H/Qf9B/wH/Af9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/4H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/4H/gf+B/4H/Qf+B/0H/gf+B/4H/gf+B/0H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf/B/4H/gf+B/4H/gf/B/8H/wf+B/8H/gf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/gf/B/4H/wf+B/4H/gf+B/4H/wf+B/4H/gf+B/4H/gf+B/8H/wf/B/8H/wf+B/8H/gf/B/8H/wf/B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf9B/4H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf+B/4H/gf+B/4H/Qf+B/0H/gf+B/4H/gf+B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Af9B/0H/Qf9B/0H/Af8B/wH/Qf9B/0H/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/sH+wf7B/wH/Af8B/sH+wf7B/sH+wf8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/oH+wf7B/sH+wf7B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+wf7B/sH+wf6B/oH+gf6B/sH+gf7B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+Qf6B/oH+gf6B/kH+Qf5B/kH+gf6B/oH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf4B/kH+Af5B/kH+Qf5B/kH+Af4B/gH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf4B/gH+Af4B/gH+Qf4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/cH+Af4B/gH+Af3B/cH+Af3B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af3B/cH9wf3B/gH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+gf6B/oH+gf6B/sH+wf7B/oH+gf6B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf8B/sH/Af7B/sH+wf7B/wH/Af8B/wH+wf7B/sH/Af8B/wH/Af8B/sH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af9B/0H/Qf8B/0H/Af9B/0H/Qf9B/0H/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf+B/0H/gf9B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/0H/Qf9B/0H/Qf+B/4H/gf9B/0H/Qf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf+B/4H/gf+B/4H/wf+B/8H/gf+B/4H/gf+B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/4H/wf/B/8H/wf+B/4H/gf+B/8H/wf/B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/0H/gf9B/4H/gf+B/4H/gf9B/0H/Qf+B/0H/gf9B/0H/Qf9B/0H/gf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/wH/Af8B/0H/Af9B/wH/Af8B/wH/Af9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/wH/Qf8B/0H/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH+wf8B/sH/Af8B/wH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH/Af7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf6B/oH+gf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/oH+gf6B/oH+gf7B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+gf6B/oH+gf6B/oH+gf5B/oH+gf6B/oH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf4B/kH+Qf5B/kH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/kH+Af5B/gH+Af4B/gH+Af5B/gH+Qf4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf4B/gH+Af4B/cH9wf3B/cH9wf3B/gH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/YH9wf3B/cH9wf2B/cH9wf2B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf7B/sH+wf6B/oH+gf6B/sH+wf7B/sH+gf7B/oH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH+wf7B/sH+wf7B/wH+wf8B/sH+wf7B/sH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/0H/Af8B/wH/Af9B/0H/Qf9B/wH/Af8B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/4H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/gf+B/4H/Qf9B/0H/gf+B/4H/gf+B/0H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/8H/gf/B/4H/gf+B/4H/gf/B/4H/wf+B/8H/gf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/4H/wf/B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/8H/wf/B/8H/wf/B/8H/gf/B/8H/wf/B/8H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/Qf9B/0H/Qf9B/4H/Qf9B/0H/Qf9B/0H/Qf+B/4H/gf+B/4H/gf+B/0H/gf+B/4H/gf+B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Af9B/0H/Qf9B/0H/Af8B/wH/Qf9B/0H/Qf8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Qf8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/sH+wf7B/wH/Af8B/sH+wf7B/sH+wf8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/oH+wf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+wf7B/sH+wf6B/oH+gf6B/sH+gf7B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf5B/oH+Qf6B/oH+gf6B/oH+Qf5B/kH+gf6B/oH+Qf5B/kH+Qf5B/oH+Qf6B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf4B/kH+Af5B/kH+Qf5B/gH+Af4B/gH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/gH+Qf5B/gH+Af4B/gH+Qf4B/kH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/cH+Af3B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af3B/cH9wf3B/gH9wf4B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/YH9gf2B/YH9wf2B/cH9gf2B/YH9gf2B/cH9wf3B/cH9wf2B/cH9wf3B/cH9wf3B/cH9gf3B/YH9wf2B/YH9gf2B/YH9gf2B/YH9gf2B/YH9gf2B/YH9g==
+
+
+
+
+
diff --git a/trunk/CardSaveData/ToSD/body/banner/banner.cbmd b/trunk/CardSaveData/ToSD/body/banner/banner.cbmd
new file mode 100644
index 0000000..2364568
Binary files /dev/null and b/trunk/CardSaveData/ToSD/body/banner/banner.cbmd differ
diff --git a/trunk/CardSaveData/ToSD/body/banner/banner_dummy.bcwav b/trunk/CardSaveData/ToSD/body/banner/banner_dummy.bcwav
new file mode 100644
index 0000000..d579907
Binary files /dev/null and b/trunk/CardSaveData/ToSD/body/banner/banner_dummy.bcwav differ
diff --git a/trunk/CardSaveData/ToSD/body/banner/icon_24.ctpk b/trunk/CardSaveData/ToSD/body/banner/icon_24.ctpk
new file mode 100644
index 0000000..cc54fe7
--- /dev/null
+++ b/trunk/CardSaveData/ToSD/body/banner/icon_24.ctpk
@@ -0,0 +1 @@
+MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMUUMMMMMMMMMMMMMUUUMUUUU]]]U]]]]eemMMMUUUU]UU]]]eee]]]eemmnemmvv,v,v-~]eeeemmvennvv,~-~Mv,~,~-~-~NNoM~NNoopn,v,v-~-~NNo-~NNooppnopӦҦӮӮopӦӦӦԮӦԮ7778XYφMUUUU]]]U]]e]eem]eej]mkeK*!m2vk+;-~LmNeeemmvv,vmvv,~,v-~-~Nv!-~K
moK*.uNoS:v-~!dM}K*!NnuopkNdl2oL2ktrҍk.Kl2kpO}nKtd
CtӦԮ
KB:kB.KB|77cXyӦ|k7m:!kXkY7XXYYzzzYzzכߛߛm:[kV:WJOSzzߛtxߛ,~-~M~NNooNooӦӦӮӮҦӮӮӮԮ77X77XXYyzԮ77X77XXYYz8YYyyzzߛzךߚߛXYyzzכߛߛzߛߛߜߜ
\ No newline at end of file
diff --git a/trunk/CardSaveData/ToSD/body/banner/icon_48.ctpk b/trunk/CardSaveData/ToSD/body/banner/icon_48.ctpk
new file mode 100644
index 0000000..24fd5a8
--- /dev/null
+++ b/trunk/CardSaveData/ToSD/body/banner/icon_48.ctpk
@@ -0,0 +1,2 @@
+MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMUUMUUUUUUUMMMMMMMUMUUUUUUUUUUUUUU]UUU]]]]]UUUUUU]]U]]]]]]]]]]]]eee]eeeeeem]]]]]]ee]]eeeeemeeeeemmnmmmnnnvveeemmmmnmmmnnvvvnvvvv,v,v,~v,v,v-~-~-~-~Mmnnvvv,v,~v,vv,~,~-~-~M~,~-~-~-~M~NNN-~NNNNooo,~-~-~M~M~NNNMNNNNoooNooooppopNNooooopoppӦӦӦӮӦӦӮӮӮԮԮMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMUMMMMMMMMMMMMMMMUMMMUUUUUUUUUUUUUMMMMMUUUMUUUUUUUUUUUU]]]U]]]]]]]UUUUU]]]U]]]]]]e]]]eeeeeeeeeemmm]]]]]eee]eeeeeemeeemmmnnmmmnnvv,veemmmmnvmnnvvvv,vnvv,v,v,~,~-~v,~,~-~-~M~MNnvvvv,v,v-~v,~,~-~-~-~-~N-~-~-~NMNNoNNNONoop-~M~M~NNNNoNNNoooopOoopppnoooopopӦӦӮҦҦӦӮӮҦӦӦӮӮӮӦӦӮӮԮԮӮԮ777777777778X78XXXYYy׆MMMUUUUUUUUUUUU]UUU]]]]]]]]]]]]eUUU]]]]]]]]]]eee]]]eeeeeeeememmm]]]eeeeeeeeeemmTemmm
+nnn+e+]2kkkk2Kemmne!Lknnvv2k2kkKT+;,~,~-~-~-~d-~u-~-~NNNvvm,v,v-~-~-~kk+;K*l\N
e~-~MMNNNnumm*!kkkKK-~NNNN\OdNoooo/pkKkBp!k}*:P}kkoooppkS*NdӦl2kkktӮ
CӦ:rӦ2Ӯkkk!kk|knSk0dk.Km:kӦӦӮԮӮԮt*kBkB777kckնS*2kck2!k7XXXBkBkXYYy7777XXX7XXXXYYyXYYyYyzzyzzzzߚzߛXYYyyzzzyzzzzߚߛߛzzߚߛߛߛߛ]eeeeeemeeemmmnnemmnnvvvnvvvv,v,v-~mmmnnvvvnvvvv,~,~-~v,v,~-~-~-~-~M-~-~-~NNNNov,v,v,~2kCk-~-~-~M
ekN:
eNm\NNooo*k*opd/uNNNNNoonoopopLCkpkkNd\oppt\ul*r
ColӦԮq/dkk\p\SӦӮӦӦӮӮԮԮkkҕplkk0d2k:*kl2kk*0l0lk0lkttkukkk7m:7Dz|!Pl7u677777XkԝԝXϗXYXXXYYyyz[.S!k6,2Ykkkkyzא[krtkzr|kr|kk:zzzߚzzzߚߚߛߛߛr|k:Uμzߛߛߛ,v,~,~-~-~M~M~N-~M~M~NNNNoNNNoOoopoooppNNNoooopoooppӦpӦӦӮӦӦӮӮӦӦӮӮԮӦӮӮԮԮԮӮԮ777777788X77777778XX7XXXXYYyXYYyyzzz788XXXXYXYYYYyyzYyyzzzzߛzzzߛߛߛYyzzzߚߚߛzߚߚߛߛߛߛߛߛpҦҦӦӦӦӮӮԮӦӮӮԮԮӦӦӮӮӮԮԮ67Ԯ77777877788XXX7777X777XXXXY8XXYYYyyYYyyyzzߚ7XXXXYYyXYyyyzzzyzzzzߚߛߛzߛߛߛߛߛyzzzzߛߛߛzߛߛߛߛ
\ No newline at end of file
diff --git a/trunk/CardSaveData/ToSD/body/banner_null_icon.bsf b/trunk/CardSaveData/ToSD/body/banner_null_icon.bsf
new file mode 100644
index 0000000..cfca06c
Binary files /dev/null and b/trunk/CardSaveData/ToSD/body/banner_null_icon.bsf differ
diff --git a/trunk/CardSaveData/ToSD/body/body.rsf b/trunk/CardSaveData/ToSD/body/body.rsf
new file mode 100644
index 0000000..e0d0e65
--- /dev/null
+++ b/trunk/CardSaveData/ToSD/body/body.rsf
@@ -0,0 +1,30 @@
+# AvP[ṼftHgl
+BasicInfo:
+ # vÕ^Cgw肵܂B
+ Title : $(TITLE)
+# BackupMemoryType: 128KB
+ BackupMemoryType: None
+ Logo : Nintendo
+# CompanyCode: "00"
+ ProductCode : "CTR-N-23AA"
+
+TitleInfo:
+# Category: 0x0010
+# Category: SystemApplication
+ UniqueId: 0xf8030
+ Version: 0
+
+Rom:
+ HostRoot : romfiles
+# SaveDataSize: 512K
+
+AccessControlInfo:
+ UseExtSaveData : false
+
+ FileSystemAccess:
+ - CategoryFileSystemTool
+ - DirectSdmcWrite
+
+SystemControlInfo:
+ RemasterVersion: 1
+
diff --git a/trunk/CardSaveData/ToSD/body/romfiles/banner.icn b/trunk/CardSaveData/ToSD/body/romfiles/banner.icn
new file mode 100644
index 0000000..eb780b9
Binary files /dev/null and b/trunk/CardSaveData/ToSD/body/romfiles/banner.icn differ
diff --git a/trunk/CardSaveData/ToSD/body/romfiles/nnfont_RectDrawerShader.shbin b/trunk/CardSaveData/ToSD/body/romfiles/nnfont_RectDrawerShader.shbin
new file mode 100644
index 0000000..4290c2c
Binary files /dev/null and b/trunk/CardSaveData/ToSD/body/romfiles/nnfont_RectDrawerShader.shbin differ
diff --git a/trunk/CardSaveData/ToSD/body/source/main.cpp b/trunk/CardSaveData/ToSD/body/source/main.cpp
new file mode 100644
index 0000000..48fd456
--- /dev/null
+++ b/trunk/CardSaveData/ToSD/body/source/main.cpp
@@ -0,0 +1,691 @@
+/*---------------------------------------------------------------------------*
+ Project: Horizon
+ File: main.cpp
+
+ Copyright (C)2010 Nintendo Co., Ltd. All rights reserved.
+
+ These coded instructions, statements, and computer programs contain
+ proprietary information of Nintendo of America Inc. and/or Nintendo
+ Company Ltd., and are protected by Federal copyright law. They may
+ not be disclosed to third parties or copied or duplicated in any form,
+ in whole or in part, without the prior written consent of Nintendo.
+
+ *---------------------------------------------------------------------------*/
+
+#include
+#include
+#include
+#include
+#include
+//#include
+#include
+#include
+//#include
+#include
+#include
+#include "../../../common/savefile/savefile.h"
+#include "../../../common/savefile/savedata.h"
+#include "../../../common/savefile/sdmc.h"
+#include "../../../common/common.h"
+#include "./screen/screen.h"
+
+
+nn::fnd::ExpHeap appHeap;
+uptr heapForGx;
+
+myResult errRes;
+
+SaveData savedata;
+nn::os::LightEvent ejectEvnt(false);
+nn::os::LightEvent insEvnt(false);
+Sdmc exsave;
+nn::os::LightEvent ejectEvntSd(false);
+nn::os::LightEvent insEvntSd(false);
+
+//バックアップの状態
+bool Active,Formatted;
+bool exActive;
+tArcInfo arcInfo,arcInfo_ex;//アーカイブ情報
+
+//Top画面エラー表示
+int tmerr;
+
+//結果
+typedef enum {
+ SUCCESS
+ ,ERROR
+ ,CANCEL
+ ,INSEXIT
+}RetCode;
+
+//挿抜イベント時に設定
+typedef enum {
+ InEx_None
+ ,InEx_InsCard
+ ,InEx_EjcCard
+ ,InEx_InsSd
+ ,InEx_EjcSd
+}tIsInsEject;
+
+tIsInsEject isInsEject;
+
+extern u8 scr_evnt;
+void WaitUI();
+void PutError(ErcDev dev,int cd=0);
+bool CheckInsExit();
+
+
+//終了処理
+void endfunc()
+{
+
+ nn::fs::UnregisterCardEjectedEvent();
+ nn::fs::UnregisterCardInsertedEvent();
+ ejectEvnt.Finalize();
+ insEvnt.Finalize();
+ nn::fs::UnregisterSdmcEjectedEvent();
+ nn::fs::UnregisterSdmcInsertedEvent();
+ ejectEvntSd.Finalize();
+ insEvntSd.Finalize();
+
+ savedata.Finalize();
+ exsave.Finalize();
+
+ ScrFinalize();
+
+}
+
+//エラー停止
+void failstop()
+{
+ NN_LOG("fail %d,stop\n",errRes);
+ finish();
+}
+
+
+char sts[128];
+//エラー表示
+void PutError(ErcDev dev,int cd)
+{
+ int desc,code;
+ nn::Result res;
+ switch (dev)
+ {
+ case ERC_DEV_CARD: res = savedata.LastNnResult;break;
+ case ERC_DEV_OUT: res = exsave.LastNnResult;break;
+ }
+ if ((cd ==0 ) && (dev != ERC_DEV_OTHER))
+ {
+ desc = res.GetDescription();
+ if (desc < 100 ) code = ERC_UNKNOWN;//キー検索完了 .. ありえない
+ else if (desc < 180 ) code = ERC_READ;//ファイルが見つからないか不正
+ else if (desc < 200 ) code = ERC_WRITE_OW;//ファイルが存在 .. 削除失敗?
+ else if (desc < 220 ) code = ERC_WRITE_NS;//空きが無い
+ else if (desc < 260 ) code = ERC_ACCESS;//操作拒否
+ else if (desc < 280 ) code = ERC_WRITE_PROTECT;//書き込み禁止
+ else if (desc < 340 ) code = ERC_ACCESS;//アクセスエラー
+ else if (desc < 390 ) code = ERC_FORMAT;//フォーマットエラー
+ else if (desc < 400 ) code = ERC_SDK_VERIFI;//改竄
+ else if (desc < 580 ) code = ERC_ROM;//ROM情報エラー
+ else if (desc < 590 ) code = ERC_RETRY;//リトライ要求
+ else if (desc < 600 ) code = ERC_UNKNOWN;//CCI,CXI不正 .. ありえない
+ else if (desc < 900 ) code = ERC_EXEC;//実行時エラー、ソフトバグ
+ else code = ERC_FATAL;//本体に問題の可能性
+ }else code = cd;
+ if (desc>=600){
+ sprintf(sts,"desc %d",desc);
+ }else{
+ sprintf(sts,"ERROR %d",dev+code);
+ }
+ scr_Status(sts,COLOR_RED);
+}
+
+wchar_t file_pathw[MAX_PATH_LENGTH];
+char file_path[MAX_PATH_LENGTH];
+//ドライバの仕様で速度的に4バイトアラインした方がいい(SDK 0.14.23 時点)
+char fileBuffer[512] NN_ATTRIBUTE_ALIGN(4);//検証が512単位なので
+char fileBuffer_ex[512] NN_ATTRIBUTE_ALIGN(4);
+#define FILEBUFF_SIZE sizeof(fileBuffer)
+
+//デバグ用ウエイト
+void waitSec(int sec)
+{
+ nn::os::Tick tm,tn;
+ tm = nn::os::Tick::GetSystemCurrent();
+ while(1)
+ {
+ tn = nn::os::Tick::GetSystemCurrent()-tm;
+ if(tn.ToTimeSpan().GetSeconds() > sec)break;
+ }
+}
+
+
+//保存先のディレクトリ削除
+bool TryDeleteDir()
+{
+ nn::Result resbk = exsave.LastNnResult;
+ if(exsave.Delete()==false)
+ {
+ //フォルダ削除に失敗したら手削除
+ strcpy(sts,"Please delete folder[ ");
+ strcat(sts,exsave.DirName);//フォルダ名
+ strcat(sts," ]");
+ scr_Status(sts,COLOR_RED);
+ return false;
+ }
+ exsave.LastNnResult = resbk;
+ return true;
+}
+
+//------------------------------------------------------------- Verifi
+bool Verifi()
+{
+ myResult res;
+ int ct=0,msize,rsize,i;
+ s64 total=0;
+
+
+ if (arcInfo.FileCount == 0)return true;//ファイル無し
+
+ //セーブデータのマウント
+ scr_Status("Mount SaveData",COLOR_YELLO);
+ res = savedata.Mount();
+ if(res != RESULT_OK)return false;
+ scr_Status("Mount SD",COLOR_YELLO);
+ res = exsave.Mount();
+ if(res != RESULT_OK)return false;
+
+ //ファイル比較
+ scr_Status("file compairing",COLOR_YELLO);
+ savedata.ResetPath();
+ s64 fsize;
+ res = RESULT_OK;
+ while(res==RESULT_OK){
+ if(CheckInsExit())break;//挿抜による中断
+ res = savedata.GetPath(file_pathw);
+ if (res != RESULT_OK)break;
+ if (file_pathw[0] == 0)break;//root then end
+ if (ct>=arcInfo.FileCount)
+ {
+ res = RESULT_FAIL;
+ break;
+ }
+ if(CheckInsExit())break;//挿抜による中断
+ scr_CountPerMax(ct,arcInfo.FileCount);
+ if (savedata.Open(file_pathw)==false)
+ {
+ res = RESULT_FAIL_OPEN;
+ break;
+ }
+ fsize = savedata.FileSize;
+ total += fsize;
+ if(CheckInsExit())break;//挿抜による中断
+ if (exsave.Open(file_pathw)==false)
+ {
+ res = RESULT_FAIL_OPEN;
+ break;
+ }
+ msize=fsize;
+ while(fsize)
+ {
+ if(msize > FILEBUFF_SIZE * 2){//サイズが大きい場合にゲージ表示
+ scr_CountPerMax2(msize-fsize,msize,0);
+ }
+ if (fsize>FILEBUFF_SIZE)
+ {
+ rsize = FILEBUFF_SIZE;
+ fsize -= FILEBUFF_SIZE;
+ }else{
+ rsize = fsize;
+ fsize = 0;
+ }
+ if(CheckInsExit())break;//挿抜による中断
+ if(savedata.Read(fileBuffer,rsize) != rsize )
+ {
+ if(nn::fs::ResultVerificationFailed::Includes(savedata.LastNnResult))
+ {
+ for ( i = 0; i < rsize; i++)
+ {
+ fileBuffer[i] = 0;//0埋め
+ }
+ }else{
+ res = RESULT_FAIL_READ;
+ break;
+ }
+ }
+ if(CheckInsExit())break;//挿抜による中断
+ if(exsave.Read(fileBuffer_ex,rsize) != rsize )
+ {
+ res = RESULT_FAIL_READ;
+ break;
+ }
+ }
+ savedata.Close();
+ exsave.Close();
+ if (res != RESULT_OK)break;
+ if(isInsEject != InEx_None )break;//挿抜による中断
+ for (i=0;i=arcInfo.FileCount)
+ {
+ res = RESULT_FAIL;
+ break;
+ }
+
+ if(CheckInsExit())break;//挿抜による中断
+ scr_CountPerMax(ct,arcInfo.FileCount);
+ if (savedata.Open(file_pathw)==false)
+ {
+ res = RESULT_FAIL_OPEN;
+ break;
+ }
+ fsize = savedata.FileSize;
+ total += fsize;
+ if(CheckInsExit())break;//挿抜による中断
+ if (exsave.OpenW(file_pathw,fsize)==false)
+ {
+ res = RESULT_FAIL_OPENW;
+ break;
+ }
+
+ msize=fsize;
+ while(fsize)
+ {
+ if(msize > FILEBUFF_SIZE * 2){//サイズが大きい場合にゲージ表示
+ scr_CountPerMax2(msize-fsize,msize,0);
+ }
+ if (fsize>FILEBUFF_SIZE)
+ {
+ rsize = FILEBUFF_SIZE;
+ fsize -= FILEBUFF_SIZE;
+ }else{
+ rsize = fsize;
+ fsize = 0;
+ }
+ if(CheckInsExit())break;//挿抜による中断
+ if(savedata.Read(fileBuffer,rsize) != rsize )
+ {
+ //中身のデータが作成サイズに満たない場合に検証エラーとなる対策
+ //読めないブロックは置き換える
+ //検証は512単位でされるので読めてるとこまで置き換えないよう
+ //リードサイズは512にしておく
+ if(nn::fs::ResultVerificationFailed::Includes(savedata.LastNnResult))
+ {
+ for (int i = 0; i < rsize; i++)
+ {
+ fileBuffer[i] = 0;//0埋め
+ }
+ }else{
+ res = RESULT_FAIL_READ;
+ break;
+ }
+ }
+ if(CheckInsExit())break;//挿抜による中断
+ if(exsave.Write(fileBuffer,rsize) != rsize )
+ {
+ res = RESULT_FAIL_WRITE;
+ break;
+ }
+ }
+ savedata.Close();
+ exsave.CloseW();
+ if(isInsEject != InEx_None )break;//挿抜による中断
+ ct++;
+ }
+ savedata.Close();
+ exsave.CloseW();
+ }
+
+ savedata.Unmount();
+ exsave.Unmount();
+
+//結果
+ if(isInsEject != InEx_None )
+ {//挿抜による中断
+ TryDeleteDir();
+ return INSEXIT;
+ }else{
+ if (res == RESULT_OK)
+ {
+ if(Verifi())
+ {
+ if (exsave.WriteSys(&arcInfo))
+ {//フォーマットパラメータなど情報ファイル
+ if(CheckInsExit()==false)
+ {
+ if (exsave.GetInfo(&arcInfo_ex))
+ { //リードチェック
+ if ((arcInfo.DirEntry != arcInfo_ex.DirEntry) ||
+ (arcInfo.FileEntry != arcInfo_ex.FileEntry) ||
+ (arcInfo.DirCount != arcInfo_ex.DirCount) ||
+ (arcInfo.FileCount != arcInfo_ex.FileCount) ||
+ (arcInfo.Dup != arcInfo_ex.Dup))res = RESULT_FAIL_WRITE;
+ }else res = RESULT_FAIL_WRITE;
+ }else res = RESULT_FAIL_WRITE;
+ }else res = RESULT_FAIL_WRITE;
+ }else res = RESULT_FAIL_VERIFI;
+ }
+ if (res != RESULT_OK)
+ {
+ if (TryDeleteDir())
+ {
+ if ((res == RESULT_FAIL_WRITE) || (res== RESULT_FAIL_OPENW)) PutError(ERC_DEV_OUT);
+ else if ((res == RESULT_FAIL_READ) || (res== RESULT_FAIL_OPEN)) PutError(ERC_DEV_CARD);
+ else if (res == RESULT_FAIL_VERIFI) PutError(ERC_DEV_OUT,ERC_VERIFI);
+ else PutError(ERC_DEV_OTHER);
+ }
+ }else
+ {
+ strcpy(sts,"output folder [ ");
+ strcat(sts,exsave.DirName);//保存先
+ strcat(sts," ]");
+ scr_Status(sts,COLOR_WHITE);
+
+ scr_CountPerMax(ct,arcInfo.FileCount);//ファイル数
+ scr_CountPerMax2(0,0,total);//総サイズ
+ return SUCCESS;
+
+ }
+ }
+ return ERROR;
+
+}
+
+bool mkdir;
+
+//--------------------------------------------------------------- セーブデータの情報取得
+//呼ぶ前に tmerr のクリアを忘れない事
+void CheckSaveDataState()
+{
+ myResult myres;
+
+
+ Formatted = false;//フォーマット
+ Active = false;
+ //failveri = false;
+
+
+ if (savedata.GetPrdCode())
+ {
+ myres = savedata.IsExist();
+ if (myres != RESULT_FAIL)
+ {
+ Active = true;//アクセス可能
+ switch(myres){
+ case RESULT_OK:
+ Formatted=true;
+ break;
+ case RESULT_NO_MEDIA:
+ tmerr |= SDATA_ERRPUT_MEDIA;
+ break;
+ case RESULT_NOT_FAUND:
+ break;
+ case RESULT_SDK_VERIFI:
+ //failveri = true;
+ tmerr |= SDATA_ERRPUT_VERIFI;
+ break;
+ default:
+ break;
+ }
+ }
+ }
+ scr_PrdCode(savedata.PrdCode);
+}
+
+void CheckExSaveState()
+{
+ exActive = nn::fs::IsSdmcInserted();
+}
+
+//------------------------------------------------------------ 挿抜チェック
+bool CheckInsExit()
+{
+
+ if (ejectEvnt.TryWait()){
+ //CARD抜け
+ CheckSaveDataState();
+ isInsEject = InEx_EjcCard;
+ return true;
+ }
+ if (insEvnt.TryWait()){
+ //CARD挿入
+ CheckSaveDataState();
+ isInsEject = InEx_InsCard;
+ return true;
+ }
+ if (ejectEvntSd.TryWait()){
+ //SD抜け
+ CheckExSaveState();
+ isInsEject = InEx_EjcSd;
+ return true;
+ }
+ if (insEvntSd.TryWait()){
+ //SD挿入
+ CheckExSaveState();
+ isInsEject = InEx_InsSd;
+ return true;
+ }
+ return false;
+}
+
+
+//---------------------------------------------------------------- 入力待ち
+void WaitUI()
+{
+ tmerr = 0;
+ scr_Draw();//画面更新
+ scr_evnt = EVNT_NONE;
+ while(scr_evnt == EVNT_NONE)
+ {
+ nn::os::Thread::Yield();//スレッド実行
+ //scr_GetEvnt();//入力イベント
+
+ CheckSysBreak();//中断処理
+
+// int i = nn::ndm::GetDaemonStatus( nn::ndm::DN_CEC );
+// if (i !=3 )NN_LOG("DN_CEC %d\n",i);
+// i = nn::ndm::GetDaemonStatus( nn::ndm::DN_BOSS );
+// if (i !=3 )NN_LOG("DN_BOSS %d\n",i);
+// i = nn::ndm::GetDaemonStatus( nn::ndm::DN_NIM );
+// if (i !=3 )NN_LOG("DN_NIM %d\n",i);
+// i = nn::ndm::GetDaemonStatus( nn::ndm::DN_FRIENDS );
+// if (i !=3 )NN_LOG("DN_FRIENDS %d\n",i);
+
+ //挿抜を検知したら中断して抜ける
+ //トップ以外ではトップメニューへ戻るようする
+ if (CheckInsExit())return;
+ }
+ ScrClr();//画面消去
+ nn::os::Thread::Sleep(nn::fnd::TimeSpan::FromMilliSeconds(500));//チャタ対策
+}
+
+
+//---------------------- main loop --------------------------
+void nnMain()
+{
+
+ RetCode retc;
+ isInsEject = InEx_None;
+
+ //NN_LOG("Start\n");
+ nn::os::Initialize();
+ nn::fs::Initialize();
+
+ //DEA-SUPにて推奨のフリーズ暫定対策:無線デーモンを停止 (2011.3.1 現在)
+ //ただし、スリープ時は止まらない
+ //心配なら本体スイッチで切っとく
+ nn::ndm::Initialize();
+ nn::ndm::SuspendScheduler();
+
+ //中断処理の準備
+ InitSysBreak((uptr)endfunc);
+ // グラフィックスライブラリの初期化は、以降で行わなければならない
+ // 他、アプリケーションの初期化処理
+
+ nn::applet::DisableSleep();//スリープ非対応
+
+ //Heap
+ appHeap.Initialize(nn::os::GetDeviceMemoryAddress(),
+ nn::os::GetDeviceMemorySize(), nn::os::ALLOCATE_OPTION_LINEAR);
+ const u32 GxHeapSize = 0x800000;
+ heapForGx = reinterpret_cast(appHeap.Allocate(GxHeapSize));
+ //画面初期化
+ if (ScrInitialize(heapForGx,GxHeapSize) == false)failstop();
+ ejectEvnt.ClearSignal();
+ insEvnt.ClearSignal();
+ nn::fs::RegisterCardEjectedEvent(&ejectEvnt);
+ nn::fs::RegisterCardInsertedEvent(&insEvnt);
+ ejectEvntSd.ClearSignal();
+ insEvntSd.ClearSignal();
+ nn::fs::RegisterSdmcEjectedEvent(&ejectEvntSd);
+ nn::fs::RegisterSdmcInsertedEvent(&insEvntSd);
+
+ // スリープ要求に対する返答を有効にする
+ // また、蓋の状態チェックを行い蓋が閉じられているならスリープ要求が発生する
+ //nn::applet::EnableSleep(true);
+
+ extern u8 scr_evnt;
+ while(1)
+ {
+ tmerr = 0;
+ CheckSaveDataState(); //セーブデータの状態取得
+ CheckExSaveState(); //SD挿入状態
+ scr_TopMenu(Formatted,Active,exActive,tmerr);
+
+ WaitUI();//入力待ち
+ if (isInsEject != InEx_None){
+ ScrClr();//画面消去
+ isInsEject= InEx_None;
+ }else
+ switch(scr_evnt)
+ {
+ case EVNT_SEL_READ://リード
+ NN_LOG("select read\n");
+ retc = Card2Sd();
+ switch (retc)
+ {
+ case SUCCESS:
+ //CheckExSaveState(); //状態の更新
+ scr_ResultQuit("Success",COLOR_GREEN);//成功とQuitボタン
+ break;
+ case INSEXIT:
+ //scr_InsExitQuit();//挿抜検知表示 & Quit
+ ScrClr();//画面消去
+ scr_Backup();
+ if (isInsEject == InEx_EjcCard)PutError(ERC_DEV_CARD,ERC_DEVICE);
+ else if (isInsEject == InEx_EjcSd)PutError(ERC_DEV_OUT,ERC_DEVICE);
+ else PutError(ERC_DEV_OTHER);
+ scr_ResultQuit("Break",COLOR_RED);//エラーとQuitボタン
+ break;
+ default://errors
+ scr_ResultQuit("Failed",COLOR_RED);//エラーとQuitボタン
+ break;
+ }
+ if (retc == CANCEL)break;
+ while(1){
+ WaitUI();
+ if (isInsEject != InEx_None){
+ isInsEject = InEx_None;
+ }
+ if(scr_evnt==EVNT_QUIT)break;
+ if(scr_evnt==EVNT_PUSH_B)break;
+ }
+ break;
+
+ case EVNT_PUSH_LEFT_X:// ------------------------------------- LEFT + X
+ //バックアップ削除
+ scr_DelConf();//実行確認
+ WaitUI();
+ if (scr_evnt != EVNT_YES)break;
+ exsave.DeleteAll();//全削除
+ //CheckExSaveState(); //状態更新
+ break;
+
+ }
+ }//while()
+
+}
+
+/*---------------------------------------------------------------------------*
+ End of file
+ *---------------------------------------------------------------------------*/
+
diff --git a/trunk/CardSaveData/ToSD/body/source/screen/screen.cpp b/trunk/CardSaveData/ToSD/body/source/screen/screen.cpp
new file mode 100644
index 0000000..38c73f6
--- /dev/null
+++ b/trunk/CardSaveData/ToSD/body/source/screen/screen.cpp
@@ -0,0 +1,769 @@
+#include
+#include
+#include "screen.h"
+#include "../../../../common/my_defs.h"
+#include "../../ver.h"
+
+
+Gui gui;
+u8 scr_evnt;
+
+enum{
+//PANEL_END,
+PANEL_ERROR,
+PANEL_SUCCESS,
+PANEL_TOPMENU,
+PANEL_TITLE,
+PANEL_QUIT,
+PANEL_READ,
+PANEL_WRITE,
+PANEL_YES,
+PANEL_NO,
+PANEL_CONFIRM,
+PANEL_DELCONF,
+PANEL_MENU,
+PANEL_BKUP,
+PANEL_INSEXIT,
+PANEL_DBGLOG
+};
+
+enum{
+MESSAGE_VERSION,
+MESSAGE_PRODUCT,
+MESSAGE_PRODUCT2,
+MESSAGE_ERROR_TITLE,
+MESSAGE_ERROR_INFO,
+MESSAGE_ERROR_INFO2,
+MESSAGE_ERROR_INFO3,
+MESSAGE_SUCCESS_TITLE,
+MESSAGE_SUCCESS_INFO,
+MESSAGE_SUCCESS_INFO2,
+MESSAGE_CONFIRM_TITLE,
+MESSAGE_CONFIRM_MSG,
+MESSAGE_DELCONF_TITLE,
+MESSAGE_DELCONF_MSG,
+MESSAGE_DELCONF_MSG2,
+MESSAGE_DELCONF_MSG3,
+//MESSAGE_TOPMENU_HELP_TITLE,
+MESSAGE_TOPMENU_HELP_READ,
+MESSAGE_TOPMENU_HELP_WRITE,
+MESSAGE_TOPMENU_HELP_END,
+MESSAGE_TOPMENU_HELP_OPERATE,
+MESSAGE_TITLE,
+MESSAGE_MENU_READ,
+MESSAGE_MENU_WRITE,
+//MESSAGE_MENU_END,
+MESSAGE_MENU_OPERATE,
+MESSAGE_MENU_CAUTION,
+MESSAGE_MENU_ERROR,
+MESSAGE_MENU_DEBUG,
+MESSAGE_INSEXT_1,
+MESSAGE_INSEXT_2,
+MESSAGE_INSEXT_3,
+MESSAGE_OPERATE,
+MESSAGE_RESULT,
+MESSAGE_QUIT_OPERATE,
+MESSAGE_CONF,
+MESSAGE_COUNT,
+MESSAGE_COUNT2,
+MESSAGE_STATUS
+};
+
+enum{
+MEMO_DBGLOG
+};
+
+
+//ʏAR|[lgfBZ[u
+void ScrClr()
+{
+ gui.ButtonMask(0);
+ gui.DisableAll();
+ gui.Draw();
+}
+
+nn::os::Tick holdTck;
+u32 holdVal;
+//---------------------------------CxgR[obN
+//----------------PAD{^
+void pushButton(u32 sts)
+{
+ //NN_LOG("button > %4x\n",button);
+ u32 trg = sts & 0x0ffff;
+ u32 hld = sts >> 16;
+/*
+ if (holdVal)//P\
+ {
+ if (nn::fnd::TimeSpan::FromMilliSeconds(100) > (nn::os::Tick::GetSystemCurrent()-holdTck)){
+ holdVal |= trg;
+ if (holdVal == nn::hid::BUTTON_LEFT | holdVal & nn::hid::BUTTON_X ){
+ holdVal = 0;
+ scr_evnt = EVNT_PUSH_LEFT_X;
+ }
+ }else holdVal = 0;
+ }else if( (holdVal = trg & (nn::hid::BUTTON_LEFT | nn::hid::BUTTON_X ))>0)
+ {//莞Ԃǂ̃{^ێ
+ holdTck = nn::os::Tick::GetSystemCurrent();
+ }
+*/
+
+ if( holdVal )//
+ {
+ if (hld != holdVal)
+ {
+ holdVal = 0;
+ }else
+ if (nn::fnd::TimeSpan::FromMilliSeconds(4000) < (nn::os::Tick::GetSystemCurrent()-holdTck))
+ {
+ holdVal = 0;
+ scr_evnt = EVNT_PUSH_LEFT_X;
+ }
+ }else if (hld == ( nn::hid::BUTTON_LEFT | nn::hid::BUTTON_X ))
+ {
+ holdVal = hld;
+ holdTck = nn::os::Tick::GetSystemCurrent();
+ }
+
+
+#ifdef DEBUG_ENABLE
+ else if (hld & nn::hid::BUTTON_DOWN)//
+ {
+ if (hld & nn::hid::BUTTON_Y)
+ if (hld & nn::hid::BUTTON_X)
+ scr_evnt = EVNT_PUSH_DOWN_Y;
+ }
+ else if (trg & nn::hid::BUTTON_R)scr_evnt = EVNT_PUSH_R;
+ else if (trg & nn::hid::BUTTON_L)scr_evnt = EVNT_PUSH_L;
+#endif
+#ifdef ENABLE_CRUSH
+ else if (trg & nn::hid::BUTTON_Y)scr_evnt = EVNT_PUSH_Y;
+#endif
+ else if (trg & nn::hid::BUTTON_B)scr_evnt = EVNT_PUSH_B;
+}
+
+//-----------------pl^b`
+// ---- Top Menu :READ
+void touchRead(u32 pos NN_IS_UNUSED_VAR)
+{
+ scr_evnt = EVNT_SEL_READ;
+}
+// ---- Top Menu :WRITE
+void touchWrite(u32 pos NN_IS_UNUSED_VAR)
+{
+ scr_evnt = EVNT_SEL_WRITE;
+}
+
+//---- Top Menu :END
+//void touchEnd(u32 pos NN_IS_UNUSED_VAR)
+//{
+// scr_evnt = EVNT_SEL_END;
+//}
+
+//---- YES
+void touchYes(u32 pos NN_IS_UNUSED_VAR)
+{
+ scr_evnt = EVNT_YES;
+}
+
+//---- NO
+void touchNo(u32 pos NN_IS_UNUSED_VAR)
+{
+ scr_evnt = EVNT_NO;
+}
+
+void touchQuit(u32 pos NN_IS_UNUSED_VAR)
+{
+ scr_evnt = EVNT_QUIT;
+}
+
+#define NULL_PTR 0
+#define NULL_STR 0
+#define SCREEN_UPPER 0
+#define SCREEN_LOWER 1
+#define LOC_CONF_X 60
+#define LOC_CONF_Y 20
+#define LOC_CONF_W (400 - LOC_CONF_X*2)
+#define LOC_CONF_H 70
+#define LOC_LOG_X 50
+#define LOC_LOG_W (400 - LOC_LOG_X*2)
+#define LOC_LOG_Y (LOC_CONF_Y + LOC_CONF_H + 10)
+#define LOC_LOG_H (240 - LOC_LOG_Y - 10)
+#define LOG_MAX 10
+
+// -------------------------------------------------- R|[lgv
+//
+
+//Top Menu
+const tPanel panel_Read = {(uptr)touchRead,"to SD",80+20,30,160,80,PANEL_READ,SCREEN_LOWER};
+//const tPanel panel_Write = {(uptr)touchWrite,"Restore",80+20,130,160,80,PANEL_WRITE,SCREEN_LOWER};
+//const tPanel panel_End = {(uptr)touchEnd,"End",80,180,160,30,PANEL_END,SCREEN_LOWER};
+
+//Yes No
+const tPanel panel_Yes = {(uptr)touchYes,"YES",40+10,60,80,120,PANEL_YES,SCREEN_LOWER};
+const tPanel panel_No = {(uptr)touchNo,"NO",200+30,60,80,120,PANEL_NO,SCREEN_LOWER};
+
+//Quit
+const tPanel panel_Quit = {(uptr)touchQuit,"Quit",80+20,60,160,120,PANEL_QUIT,SCREEN_LOWER};
+
+//
+//foOp
+//G[\
+const tPanel panel_Error = {NULL_PTR,NULL_STR,LOC_CONF_X,LOC_CONF_Y,LOC_CONF_W,LOC_CONF_H,PANEL_ERROR,SCREEN_UPPER};
+const tMessage mess_Title_Err = {"title",10,10,COLOR_RED,8,MESSAGE_ERROR_TITLE,PANEL_ERROR};
+const tMessage mess_Info_Err = {"info",10,22,COLOR_RED,8,MESSAGE_ERROR_INFO,PANEL_ERROR};
+const tMessage mess_Info2_Err = {"info2",10,40,COLOR_RED,8,MESSAGE_ERROR_INFO2,PANEL_ERROR};
+const tMessage mess_Info3_Err = {"info3",10,50,COLOR_RED,8,MESSAGE_ERROR_INFO3,PANEL_ERROR};
+
+//
+const tPanel panel_Success = {NULL_PTR,NULL_STR,LOC_CONF_X,LOC_CONF_Y,LOC_CONF_W,LOC_CONF_H,PANEL_SUCCESS,SCREEN_UPPER};
+const tMessage mess_Title_Suc = {"title",10,10,COLOR_GREEN,8,MESSAGE_SUCCESS_TITLE,PANEL_SUCCESS};
+const tMessage mess_Info_Suc = {"info",10,40,COLOR_WHITE,8,MESSAGE_SUCCESS_INFO,PANEL_SUCCESS};
+const tMessage mess_Info2_Suc = {"info2",10,50,COLOR_WHITE,8,MESSAGE_SUCCESS_INFO2,PANEL_SUCCESS};
+
+//smF
+const tPanel panel_Confirm = {NULL_PTR,NULL_STR,LOC_CONF_X,LOC_CONF_Y,LOC_CONF_W,LOC_CONF_H,PANEL_CONFIRM,SCREEN_UPPER};
+const tMessage mess_conf_Title = {"title",10,10,COLOR_YELLO,8,MESSAGE_CONFIRM_TITLE,PANEL_CONFIRM};
+const tMessage mess_conf_Msg = {"Do you execute?",10,40,COLOR_WHITE,8,MESSAGE_CONFIRM_MSG,PANEL_CONFIRM};
+
+//gbvj[
+const tPanel panel_topmenu_help = {NULL_PTR,NULL_STR,LOC_CONF_X,LOC_CONF_Y,LOC_CONF_W,LOC_CONF_H,PANEL_TOPMENU,SCREEN_UPPER};
+const tMessage mess_topmenu_help_read = {"[Backup] Card -> SD",10,4,COLOR_WHITE,8,MESSAGE_TOPMENU_HELP_READ,PANEL_TOPMENU};
+const tMessage mess_topmenu_help_notread = {"[Backup] is Invalid",10,4,COLOR_RED,8,MESSAGE_TOPMENU_HELP_READ,PANEL_TOPMENU};
+//const tMessage mess_topmenu_help_write = {"[Restore] bkup -> Card",10,16,COLOR_WHITE,8,MESSAGE_TOPMENU_HELP_WRITE,PANEL_TOPMENU};
+//const tMessage mess_topmenu_help_notwrite = {"[Restore] is Invalid",10,16,COLOR_RED,8,MESSAGE_TOPMENU_HELP_WRITE,PANEL_TOPMENU};
+//const tMessage mess_topmenu_help_end = {"[End] return to SystemMenu",10,28,COLOR_WHITE,8,MESSAGE_TOPMENU_HELP_END,PANEL_TOPMENU};
+const tMessage mess_topmenu_help_operate = {"touch below",10,48,COLOR_GREEN,8,MESSAGE_TOPMENU_HELP_OPERATE,PANEL_TOPMENU};
+
+//O\
+const tPanel panel_dbglog = {NULL_PTR,NULL_STR,LOC_LOG_X,LOC_LOG_Y,LOC_LOG_W,LOC_LOG_H,PANEL_DBGLOG,SCREEN_UPPER};
+const tMemo memo_dbglog = {LOG_MAX,10,10,COLOR_WHITE,8,MEMO_DBGLOG,PANEL_DBGLOG};
+
+
+//ʏ펞
+//^Cg
+#define FONT_SIZE_TITLE 12
+#define LOC_TITL_X (40-FONT_SIZE_TITLE*2)
+#define LOC_TITL_Y 20
+#define LOC_TITL_W (400 - LOC_CONF_X*2)
+#define LOC_TITL_H 50
+#define FONT_SIZE_PRODUCT 10
+const tPanel panel_title = {NULL_PTR,NULL_STR,LOC_TITL_X,LOC_TITL_Y,LOC_TITL_W,LOC_TITL_H,PANEL_TITLE,SCREEN_UPPER};
+const tMessage mess_title = {"title",0,0,COLOR_WHITE,FONT_SIZE_TITLE,MESSAGE_TITLE,PANEL_TITLE};
+const tMessage mess_product = {"product",0,LOC_TITL_H - 22,COLOR_WHITE,FONT_SIZE_PRODUCT,MESSAGE_PRODUCT,PANEL_TITLE};
+//const tMessage mess_product2 = {"product2",0,LOC_TITL_H - 10,COLOR_WHITE,FONT_SIZE_PRODUCT,MESSAGE_PRODUCT2,PANEL_TITLE};
+const tMessage mess_version = {"version",LOC_TITL_W-FONT_SIZE_PRODUCT*6,FONT_SIZE_TITLE+2,COLOR_WHITE,FONT_SIZE_PRODUCT,MESSAGE_VERSION,PANEL_TITLE};
+
+#define LOC_MESS_X 20
+#define LOC_MESS_W (400 - LOC_MESS_X*2)
+#define LOC_MESS_Y (LOC_TITL_Y + LOC_TITL_H + 10)
+#define LOC_MESS_H (240 - LOC_MESS_Y - 10)
+//TOPj[
+//\̓OƔr
+#define FONT_SIZE 10
+#define STR_LINE(ln) (FONT_SIZE + 2)*ln
+const tPanel panel_menu = {NULL_PTR,NULL_STR,LOC_MESS_X,LOC_MESS_Y,LOC_MESS_W,LOC_MESS_H,PANEL_MENU,SCREEN_UPPER};
+const tMessage mess_menu_read = {"[to SD] Write to SD",10,STR_LINE(1),COLOR_WHITE,FONT_SIZE,MESSAGE_MENU_READ,PANEL_MENU};
+//const tMessage mess_menu_write = {"[Restore] restore to Card",10,STR_LINE(2),COLOR_WHITE,FONT_SIZE,MESSAGE_MENU_WRITE,PANEL_MENU};
+//const tMessage mess_menu_end = {"[End] close this apprication",10,STR_LINE(3),COLOR_WHITE,FONT_SIZE,MESSAGE_MENU_END,PANEL_MENU};
+const tMessage mess_menu_operate = {"touch below",10,STR_LINE(4),COLOR_GREEN,FONT_SIZE,MESSAGE_MENU_OPERATE,PANEL_MENU};
+const tMessage mess_bkuperr = {"SD error",10,STR_LINE(6),COLOR_RED,FONT_SIZE,MESSAGE_MENU_ERROR,PANEL_MENU};
+const tMessage mess_carderr = {"CARD error",10,STR_LINE(7),COLOR_YELLO,FONT_SIZE,MESSAGE_MENU_CAUTION,PANEL_MENU};
+//const tMessage mess_debug = {"Crush Mode",10,STR_LINE(3),COLOR_YELLO,FONT_SIZE,MESSAGE_MENU_DEBUG,PANEL_MENU};
+
+//Backup
+//const tPanel panel_bkup = {NULL_PTR,NULL_STR,LOC_LOG_X,LOC_LOG_Y,LOC_LOG_W,LOC_LOG_H,PANEL_BKUP,SCREEN_UPPER};
+const tPanel panel_bkup = {NULL_PTR,NULL_STR,LOC_MESS_X,LOC_MESS_Y,LOC_MESS_W,LOC_MESS_H,PANEL_BKUP,SCREEN_UPPER};
+const tMessage mess_quit_operate = {"touch [Quit],or Push B",10,STR_LINE(4),COLOR_SKY,FONT_SIZE,MESSAGE_QUIT_OPERATE,PANEL_BKUP};
+const tMessage mess_conf = {"Do you execute?",10,STR_LINE(2),COLOR_WHITE,FONT_SIZE,MESSAGE_CONF,PANEL_BKUP};
+const tMessage mess_result = {"result",10,STR_LINE(2),COLOR_WHITE,FONT_SIZE,MESSAGE_RESULT,PANEL_BKUP};
+const tMessage mess_operate = {"touch below",10,STR_LINE(4),COLOR_GREEN,FONT_SIZE,MESSAGE_OPERATE,PANEL_BKUP};
+const tMessage mess_status = {"status",10,STR_LINE(7),COLOR_WHITE,FONT_SIZE,MESSAGE_STATUS,PANEL_BKUP};
+const tMessage mess_count = {"count",10,STR_LINE(8),COLOR_WHITE,FONT_SIZE,MESSAGE_COUNT,PANEL_BKUP};
+const tMessage mess_count2 = {"count2",10,STR_LINE(9),COLOR_GREEN,FONT_SIZE,MESSAGE_COUNT2,PANEL_BKUP};
+
+
+//}
+//const tPanel panel_insexit = {NULL_PTR,NULL_STR,LOC_LOG_X,LOC_LOG_Y,LOC_LOG_W,LOC_LOG_H,PANEL_INSEXIT,SCREEN_UPPER};
+const tPanel panel_insexit = {NULL_PTR,NULL_STR,LOC_MESS_X,LOC_MESS_Y,LOC_MESS_W,LOC_MESS_H,PANEL_INSEXIT,SCREEN_UPPER};
+const tMessage mess_insexit = {"device insert or pull out is detected",10,STR_LINE(3),COLOR_RED,8,MESSAGE_INSEXT_1,PANEL_INSEXIT};
+const tMessage mess_insexit2 = {"return to top menu",10,STR_LINE(5),COLOR_WHITE,8,MESSAGE_INSEXT_2,PANEL_INSEXIT};
+const tMessage mess_insexit3 = {"please touch or push B",10,STR_LINE(6),COLOR_WHITE,8,MESSAGE_INSEXT_3,PANEL_INSEXIT};
+
+//폜mF
+//const tPanel panel_delconf = {NULL_PTR,NULL_STR,LOC_CONF_X-10,LOC_CONF_Y,LOC_CONF_W+10,LOC_CONF_H*2,PANEL_DELCONF,SCREEN_UPPER};
+const tPanel panel_delconf = {NULL_PTR,NULL_STR,LOC_MESS_X,LOC_MESS_Y-36,LOC_MESS_W,LOC_MESS_H,PANEL_DELCONF,SCREEN_UPPER};
+const tMessage mess_delconf_Title = {" *** DELETE *** ",10,10,COLOR_YELLO,16,MESSAGE_DELCONF_TITLE,PANEL_DELCONF};
+const tMessage mess_delconf_Msg = {" caution!",10,50,COLOR_YELLO,12,MESSAGE_DELCONF_MSG,PANEL_DELCONF};
+const tMessage mess_delconf_Msg2 = {"this is delete data on SD",10,70,COLOR_YELLO,12,MESSAGE_DELCONF_MSG2,PANEL_DELCONF};
+const tMessage mess_delconf_Msg3 = {"Do you execute?",10,90,COLOR_YELLO,12,MESSAGE_DELCONF_MSG3,PANEL_DELCONF};
+
+
+
+nn::os::LightEvent stopEvnt(true);
+
+char scr_ver[16];
+char scr_err[32];
+char scr_debug[32];
+//menu
+bool ScrInitialize(uptr heap,u32 size)
+{
+ scr_evnt = EVNT_NONE;
+ holdVal = 0;
+ holdTck = nn::fnd::TimeSpan(0);
+
+ if (gui.Initialize(heap,size,&stopEvnt)==false)return false;
+
+ gui.ButtonCallback((uptr)pushButton);
+ //R|[lgo^
+ gui.PanelSet(&panel_Read);
+// gui.PanelSet(&panel_Write);
+// gui.PanelSet(&panel_End);
+ gui.PanelSet(&panel_Yes);
+ gui.PanelSet(&panel_No);
+ gui.PanelSet(&panel_Quit);
+ gui.PanelSet(&panel_Error);
+ gui.PanelSet(&panel_Success);
+ gui.PanelSet(&panel_Confirm);
+ gui.PanelSet(&panel_delconf);
+ gui.PanelSet(&panel_topmenu_help);
+ gui.PanelSet(&panel_title);
+ gui.PanelSet(&panel_menu);
+ gui.PanelSet(&panel_bkup);
+ gui.PanelSet(&panel_dbglog);
+ gui.PanelSet(&panel_insexit);
+
+ gui.PanelLineStyle(PANEL_TITLE,COLOR_BLACK);
+
+
+ gui.MessSet(&mess_Title_Err);
+ gui.MessSet(&mess_Info_Err);
+ gui.MessSet(&mess_Info2_Err);
+ gui.MessSet(&mess_Info3_Err);
+ gui.MessSet(&mess_Title_Suc);
+ gui.MessSet(&mess_Info_Suc);
+ gui.MessSet(&mess_Info2_Suc);
+ gui.MessSet(&mess_conf_Title);
+ gui.MessSet(&mess_conf_Msg);
+ gui.MessSet(&mess_delconf_Title);
+ gui.MessSet(&mess_delconf_Msg);
+ gui.MessSet(&mess_delconf_Msg2);
+ gui.MessSet(&mess_delconf_Msg3);
+
+ gui.MessSet(&mess_topmenu_help_read);
+// gui.MessSet(&mess_topmenu_help_write);
+// gui.MessSet(&mess_topmenu_help_end);
+ gui.MessSet(&mess_topmenu_help_operate);
+
+ gui.MessSet(&mess_title);
+ gui.MessSet(&mess_version);
+ gui.MessSet(&mess_product);
+// gui.MessSet(&mess_product2);
+ gui.MessSet(&mess_menu_read);
+// gui.MessSet(&mess_menu_write);
+// gui.MessSet(&mess_menu_end);
+ gui.MessSet(&mess_menu_operate);
+ gui.MessSet(&mess_quit_operate);
+ gui.MessSet(&mess_conf);
+ gui.MessSet(&mess_operate);
+ gui.MessSet(&mess_bkuperr);
+ gui.MessSet(&mess_carderr);
+// gui.MessSet(&mess_debug);
+ gui.MessSet(&mess_result);
+ gui.MessSet(&mess_status);
+ gui.MessSet(&mess_count);
+ gui.MessSet(&mess_count2);
+
+ gui.MessSet(&mess_insexit);
+ gui.MessSet(&mess_insexit2);
+ gui.MessSet(&mess_insexit3);
+
+ gui.MemoSet(&memo_dbglog);
+
+ gui.MemoEffective(MESSAGE_PRODUCT);
+ gui.MessEffective(MESSAGE_ERROR_TITLE);
+ gui.MessEffective(MESSAGE_ERROR_INFO);
+ gui.MessEffective(MESSAGE_ERROR_INFO2);
+ gui.MessEffective(MESSAGE_ERROR_INFO3);
+ gui.MessEffective(MESSAGE_SUCCESS_TITLE);
+ gui.MessEffective(MESSAGE_SUCCESS_INFO);
+ gui.MessEffective(MESSAGE_SUCCESS_INFO2);
+ gui.MessEffective(MESSAGE_CONFIRM_TITLE);
+ gui.MessEffective(MESSAGE_CONFIRM_MSG);
+ gui.MessEffective(MESSAGE_DELCONF_TITLE);
+ gui.MessEffective(MESSAGE_DELCONF_MSG);
+ gui.MessEffective(MESSAGE_DELCONF_MSG2);
+ gui.MessEffective(MESSAGE_DELCONF_MSG3);
+ gui.MessEffective(MESSAGE_TOPMENU_HELP_READ);
+ gui.MessEffective(MESSAGE_TOPMENU_HELP_WRITE);
+ gui.MessEffective(MESSAGE_TOPMENU_HELP_END);
+ gui.MessEffective(MESSAGE_TOPMENU_HELP_OPERATE);
+ gui.MessEffective(MESSAGE_MENU_READ);
+ gui.MessEffective(MESSAGE_MENU_WRITE);
+// gui.MessEffective(MESSAGE_MENU_END);
+ gui.MessEffective(MESSAGE_MENU_OPERATE);
+ gui.MessEffective(MESSAGE_INSEXT_1);
+ gui.MessEffective(MESSAGE_INSEXT_2);
+ gui.MessEffective(MESSAGE_INSEXT_3);
+ gui.MessEffective(MESSAGE_TITLE);
+ gui.MessEffective(MESSAGE_VERSION);
+ gui.MemoEffective(MEMO_DBGLOG);
+
+ gui.PanelLineStyle(PANEL_DELCONF,COLOR_YELLO);
+
+ sprintf(scr_ver,"ver %.2f",VERSION);
+ gui.MessStr(MESSAGE_VERSION,scr_ver);
+ gui.MessStr(MESSAGE_MENU_CAUTION,scr_err);
+ gui.MessStr(MESSAGE_MENU_ERROR,scr_err);
+ gui.MessStr(MESSAGE_MENU_DEBUG,scr_debug);
+
+ return true;
+
+}
+
+void ScrFinalize()
+{
+ stopEvnt.Signal();
+ while(stopEvnt.TryWait()){
+ nn::os::Thread::Yield();
+
+ };
+ gui.Finalize();
+}
+
+//YES-NO {^
+void YesNo()
+{
+ gui.ButtonMask(nn::hid::BUTTON_A | nn::hid::BUTTON_B);
+ gui.PanelEffective(PANEL_YES);
+ gui.PanelEffective(PANEL_NO);
+ gui.Draw();
+}
+
+void Quit()
+{
+ gui.ButtonMask(nn::hid::BUTTON_A | nn::hid::BUTTON_B);
+ gui.PanelEffective(PANEL_QUIT);
+ gui.Draw();
+}
+
+
+//gbvj[
+//:J[h
+void scr_TopMenuDbg(bool formatted,bool insertted)//fobOp
+{
+ NN_UNUSED_VAR(insertted);
+
+ scr_evnt = EVNT_NONE;
+ gui.ButtonMask(nn::hid::BUTTON_A | nn::hid::BUTTON_R | nn::hid::BUTTON_L);
+
+ if (formatted)
+ {//[h\
+ gui.MessSet(&mess_topmenu_help_read);
+ gui.PanelEffective(PANEL_READ);
+ }else{//[hs
+ gui.MessSet(&mess_topmenu_help_notread);
+ gui.PanelEffective(PANEL_READ,false);
+ }
+// if (insertted)
+// {//݉
+// gui.MessSet(&mess_topmenu_help_write);
+// gui.PanelEffective(PANEL_WRITE);
+// }else{//ݕs
+// gui.MessSet(&mess_topmenu_help_notwrite);
+// gui.PanelEffective(PANEL_WRITE,false);
+// }
+
+ gui.MessEffective(MESSAGE_TOPMENU_HELP_READ);
+// gui.MessEffective(MESSAGE_TOPMENU_HELP_WRITE);
+// gui.PanelEffective(PANEL_END);
+ gui.PanelEffective(PANEL_TOPMENU);
+ gui.Draw();
+}
+
+//ʏ펞
+
+//v_NgR[h
+//:J[hAgZ[uɋL^ꂽ
+char scr_pcode[32];
+void scr_PrdCode(char *s)
+{
+ strcpy(scr_pcode,"CARD : ");
+ if (s[0]==0) strcat(scr_pcode,"----");
+ else strcat(scr_pcode,s);
+ gui.MessStr(MESSAGE_PRODUCT,scr_pcode);
+}
+
+/*
+char scr_pcode2[64];
+void scr_PrdCodeEx(char *s)
+{
+ strcpy(scr_pcode2,"BKUP : ");
+ if (s[0]==0) strcat(scr_pcode2,"----");
+ else strcat(scr_pcode2,s);
+ gui.MessStr(MESSAGE_PRODUCT2,scr_pcode2);
+}
+*/
+
+//폜̎smF
+void scr_DelConf()
+{
+ scr_evnt = EVNT_NONE;
+ gui.PanelEffective(PANEL_DELCONF);
+ YesNo();
+}
+
+
+//Top menu
+//:foCX
+//arg : v_NgR[hv
+void scr_TopMenu(bool formatted,bool inserted,bool sdins,int err)
+{
+
+ int i;
+ scr_evnt = EVNT_NONE;
+
+ u32 mask = 0;
+ mask |= (nn::hid::BUTTON_LEFT | nn::hid::BUTTON_X);//LEFT+X = Delete L
+#ifdef DEBUG_ENABLE
+ mask | = ( nn::hid::BUTTON_DOWN | nn::hid::BUTTON_Y | nn::hid::BUTTON_L | nn::hid::BUTTON_R);
+#endif
+
+ gui.MessStr(MESSAGE_TITLE," < CTR Card Savedata to SD >");
+
+ gui.MessEffective(MESSAGE_MENU_ERROR,false,false);
+ gui.MessEffective(MESSAGE_MENU_CAUTION,false,false);
+ gui.MessEffective(MESSAGE_MENU_OPERATE,false,false);
+
+ if (formatted && sdins)
+ {//obNAbv\
+ gui.MessEffective(MESSAGE_MENU_OPERATE);
+ gui.PanelEffective(PANEL_READ);
+ }else
+ {
+ gui.PanelEffective(PANEL_READ,false,false);
+
+ if (inserted == false)
+ {
+ strcpy(scr_err,"Please Insert Card");
+ gui.MessEffective(MESSAGE_MENU_CAUTION);
+
+ }else{
+ if (err & SDATA_ERRPUT_MEDIA) i = ERC_MEDIA + ERC_DEV_CARD;//obNAbvȂ
+ else
+ if (err & SDATA_ERRPUT_VERIFI) i = ERC_SDK_VERIFI + ERC_DEV_CARD;//f[^Ă
+ else if (sdins == false) i = ERC_DEVICE + ERC_DEV_OUT;//ofoCX
+ else i = ERC_FORMAT + ERC_DEV_CARD;//tH[}bgG[
+ sprintf(scr_err,"ERROR %d",i);
+ gui.MessEffective(MESSAGE_MENU_ERROR);
+ }
+ }
+
+ gui.ButtonMask(mask);
+
+ gui.MessEffective(MESSAGE_PRODUCT);
+ //gui.MessEffective(MESSAGE_PRODUCT2);
+
+ gui.PanelEffective(PANEL_TITLE);
+ gui.PanelEffective(PANEL_MENU);
+
+ gui.Draw();
+}
+
+//fobOpA{^҂
+void ScrStep()
+{
+ scr_evnt = EVNT_NONE;
+ gui.ButtonMask(nn::hid::BUTTON_B);
+}
+
+
+void ClearBkupMess()
+{
+ gui.MessEffective(MESSAGE_CONF,false,false);
+ gui.MessEffective(MESSAGE_RESULT,false,false);
+ gui.MessEffective(MESSAGE_OPERATE,false,false);
+ gui.MessEffective(MESSAGE_QUIT_OPERATE,false,false);
+ gui.MessEffective(MESSAGE_STATUS,false,false);
+ gui.MessEffective(MESSAGE_COUNT,false,false);
+ gui.MessEffective(MESSAGE_COUNT2,false,false);
+ gui.PanelEffective(PANEL_BKUP);
+}
+
+//Backup
+void scr_Backup()
+{
+ scr_evnt = EVNT_NONE;
+ gui.PanelLineStyle(PANEL_BKUP,COLOR_SKY);
+ gui.MessStr(MESSAGE_TITLE," --- Backup Card Savedata ---");
+ gui.PanelEffective(PANEL_TITLE);
+ ClearBkupMess();
+ gui.Draw();
+
+}
+void scr_BackupYesNo()
+{
+ scr_Backup();
+ gui.MessEffective(MESSAGE_CONF);
+ gui.MessEffective(MESSAGE_OPERATE);
+ YesNo();
+}
+
+//restore
+void scr_Restore()
+{
+ scr_evnt = EVNT_NONE;
+ gui.PanelLineStyle(PANEL_BKUP,COLOR_PARPL);
+ gui.MessStr(MESSAGE_TITLE,"--- Restore Card Savedata ---");
+ gui.PanelEffective(PANEL_TITLE);
+ ClearBkupMess();//backupƓplg
+ gui.Draw();
+
+}
+void scr_RestoreYesNo()
+{
+ scr_Restore();
+ gui.MessEffective(MESSAGE_CONF);
+ gui.MessEffective(MESSAGE_OPERATE);
+ YesNo();
+}
+
+
+void scr_Status(char *s,eColor col)
+{
+ gui.MessCol(MESSAGE_STATUS,col);
+ gui.MessStr(MESSAGE_STATUS,s);
+ gui.MessEffective(MESSAGE_STATUS);
+ gui.Draw();
+}
+
+void scr_ResultQuit(char *s,eColor col)
+{
+ gui.MessCol(MESSAGE_RESULT,col);
+ gui.MessStr(MESSAGE_RESULT,s);
+ gui.MessEffective(MESSAGE_RESULT);
+ gui.MessEffective(MESSAGE_QUIT_OPERATE);
+ Quit();
+}
+
+
+void scr_InsExitQuit()
+{
+ ClearBkupMess();
+ gui.PanelLineStyle(PANEL_INSEXIT,COLOR_RED);
+ gui.PanelEffective(PANEL_INSEXIT);
+ Quit();
+}
+
+// JEg/MAX \
+char str_Counter[128];
+char str_Counter2[128];
+void scr_CountPerMax(int ct,int max)
+{
+ sprintf(str_Counter,"%d / %d",ct,max);
+ gui.MessStr(MESSAGE_COUNT,str_Counter);
+ gui.MessEffective(MESSAGE_COUNT);
+ gui.Draw();
+}
+
+//Q[Wtotal
+void scr_CountPerMax2(int ct,int max,int total)
+{
+ if (total == -1) str_Counter2[0]=0;
+ else if (total != 0){
+// gui.MessCol(MESSAGE_COUNT2,COLOR_WHITE);
+ sprintf(str_Counter2,"total size %d",total);
+ }else{
+// gui.MessCol(MESSAGE_COUNT2,COLOR_YELLO);
+ int i;
+ int lv = ct/(max/25);
+ for (i =0;i';
+ while ( i < 25 )str_Counter2[i++] = '|';
+ str_Counter2[i] = 0;
+ }
+ //sprintf(str_Counter2,"%d / %d",ct,max);
+ gui.MessStr(MESSAGE_COUNT2,str_Counter2);
+ gui.MessEffective(MESSAGE_COUNT2);
+ gui.Draw();
+
+}
+
+void scr_MessOnCount2(char *str)
+{
+// gui.MessCol(MESSAGE_COUNT2,COLOR_YELLO);
+ gui.MessStr(MESSAGE_COUNT2,str);
+ gui.MessEffective(MESSAGE_COUNT2);
+ gui.Draw();
+}
+
+
+//smF
+void scr_ConfirmDbg(char *str)
+{
+ scr_evnt = EVNT_NONE;
+ gui.MessStr(MESSAGE_CONFIRM_TITLE,str);
+ gui.PanelEffective(PANEL_CONFIRM);
+ YesNo();
+}
+
+
+//G[\Quit{^
+void scr_ErrorQuitDbg(tColStr **s)
+{
+ scr_evnt = EVNT_NONE;
+ gui.MessStr(MESSAGE_ERROR_TITLE,s[0]->str);
+ gui.MessCol(MESSAGE_ERROR_TITLE,s[0]->color);
+ gui.MessStr(MESSAGE_ERROR_INFO,s[1]->str);
+ gui.MessCol(MESSAGE_ERROR_INFO,s[1]->color);
+ gui.MessStr(MESSAGE_ERROR_INFO2,s[2]->str);
+ gui.MessCol(MESSAGE_ERROR_INFO2,s[2]->color);
+ gui.MessStr(MESSAGE_ERROR_INFO3,s[3]->str);
+ gui.MessCol(MESSAGE_ERROR_INFO3,s[3]->color);
+ gui.PanelEffective(PANEL_ERROR);
+ Quit();
+}
+
+//\Quit{^
+void scr_SuccessQuitDbg(tColStr **s)
+{
+ scr_evnt = EVNT_NONE;
+ gui.MessStr(MESSAGE_SUCCESS_TITLE,s[0]->str);
+ gui.MessCol(MESSAGE_SUCCESS_TITLE,s[0]->color);
+ gui.MessStr(MESSAGE_SUCCESS_INFO,s[1]->str);
+ gui.MessCol(MESSAGE_SUCCESS_INFO,s[1]->color);
+ gui.MessStr(MESSAGE_SUCCESS_INFO2,s[2]->str);
+ gui.MessCol(MESSAGE_SUCCESS_INFO2,s[2]->color);
+ gui.PanelEffective(PANEL_SUCCESS);
+ Quit();
+}
+
+
+//fobOO
+void scr_DgbLog(cStrLst *p)
+{
+ gui.PanelLineStyle(PANEL_DBGLOG,COLOR_BLUE);
+
+ for (int i=0;igetpos()+1;i++)gui.MemoStr(MEMO_DBGLOG,p->line(i),i);
+
+ gui.PanelEffective(PANEL_DBGLOG);
+ gui.Draw();
+}
+
+
+
+int ScrDbgLogGetMax()
+{
+ return LOG_MAX;
+}
+
+
+void scr_Draw()
+{
+ gui.Draw();
+}
+
+void scr_GetEvnt()
+{
+// gui.thUpdate();
+}
+
+
diff --git a/trunk/CardSaveData/ToSD/body/source/screen/screen.h b/trunk/CardSaveData/ToSD/body/source/screen/screen.h
new file mode 100644
index 0000000..a44ebe4
--- /dev/null
+++ b/trunk/CardSaveData/ToSD/body/source/screen/screen.h
@@ -0,0 +1,115 @@
+#ifndef SCREEN_H_
+#define SCREEN_H_
+
+#include
+#include
+#include "../../../../common/gui/gui.h"
+
+//plID
+enum {
+ EVNT_NONE,
+ EVNT_YES,
+ EVNT_NO,
+ EVNT_QUIT,
+ EVNT_PUSH_A,
+ EVNT_PUSH_B,
+ EVNT_PUSH_R,
+ EVNT_PUSH_L,
+ EVNT_PUSH_X,
+ EVNT_PUSH_Y,
+ EVNT_PUSH_LEFT_X,
+ EVNT_PUSH_DOWN_Y,
+ EVNT_SEL_READ,
+ EVNT_SEL_WRITE,
+ EVNT_SEL_END,
+ EVNT_ERROR,
+ EVNT_FATAL
+};
+
+typedef struct{
+ char *str;
+ eColor color;
+ u8 pad[3];
+}tColStr;
+
+
+#define LST_MAX 30
+#define LST_LENGTH 128
+class cStrLst {
+private:
+ int pos;
+ int buttom;
+ char str[LST_MAX][LST_LENGTH];
+public:
+ cStrLst():pos(0){};
+ void add(char *p){
+ if (pos>=LST_MAX)return;
+ //char *s = &str[pos][0];
+ int i;
+ if (pos == buttom)
+ {
+ i =0;
+ while(i < buttom){ strcpy(str[i],str[i+1]);i++;}
+ }else pos++;
+ i=0;
+ while(i < (LST_LENGTH-1)){ //I[o[[h
+ if (p[i]!=0){
+ str[pos][i] = p[i];
+ i++;
+ }else break;
+ }
+ str[pos][i] = 0;
+ //strcpy(str[pos],p);
+ //for (i =0;i=LST_MAX))return false;
+ buttom = btm;
+ return true;
+ }
+};
+
+
+//Topj[ł̃G[\p̃tO
+//bit`FbN
+#define SDATA_ERRPUT_PCODE 1
+#define SDATA_ERRPUT_MEDIA 2
+#define SDATA_ERRPUT_VERIFI 4
+
+
+bool ScrInitialize(uptr heap,u32 size);
+void ScrFinalize();
+void ScrClr();
+int ScrDbgLogGetMax();
+void ScrStep();
+void scr_TopMenuDbg(bool formatted,bool insertted);
+void scr_TopMenu(bool formatted,bool inserted,bool sdins,int err);
+void scr_ErrorQuitDbg(tColStr **s);
+void scr_SuccessQuitDbg(tColStr **s);
+void scr_ConfirmDbg(char *str);
+void scr_DgbLog(cStrLst *p);
+void scr_BackupYesNo();
+void scr_Backup();
+void scr_RestoreYesNo();
+void scr_Restore();
+void scr_InsExitQuit();
+void scr_Status(char *s,eColor col);
+void scr_ResultQuit(char *s,eColor col);
+void scr_CountPerMax(int ct,int max);
+void scr_CountPerMax2(int ct,int max,int total);
+void scr_PrdCode(char *s);
+void scr_PrdCodeEx(char *s);
+void scr_DelConf();
+void scr_MessOnCount2(char *str);
+void scr_Draw();
+void scr_GetEvnt();
+
+#endif
+
diff --git a/trunk/CardSaveData/ToSD/body/ver.h b/trunk/CardSaveData/ToSD/body/ver.h
new file mode 100644
index 0000000..75c8563
--- /dev/null
+++ b/trunk/CardSaveData/ToSD/body/ver.h
@@ -0,0 +1,22 @@
+/*---------------------------------------------------------------------------*
+ Project: Horizon
+ File: irp.h
+
+ Copyright (C)2009 Nintendo Co., Ltd. All rights reserved.
+
+ These coded instructions, statements, and computer programs contain
+ proprietary information of Nintendo of America Inc. and/or Nintendo
+ Company Ltd., and are protected by Federal copyright law. They may
+ not be disclosed to third parties or copied or duplicated in any form,
+ in whole or in part, without the prior written consent of Nintendo.
+
+ $Rev$
+ *---------------------------------------------------------------------------*/
+
+#ifndef VER_H_
+#define VER_H_
+
+#define VERSION 0.01
+
+
+#endif
diff --git a/trunk/CardSaveData/ToSD/docs/Error_code.txt b/trunk/CardSaveData/ToSD/docs/Error_code.txt
new file mode 100644
index 0000000..0920809
--- /dev/null
+++ b/trunk/CardSaveData/ToSD/docs/Error_code.txt
@@ -0,0 +1,37 @@
+
+//エラー表示コードの下位2桁
+0, //不明
+1, //デバイスが見つからない
+2,//プロダクトコード不一致
+3,//ベリファイエラー
+4,//パスが長すぎ
+5,//ディレクトリ深すぎ
+6, //メディアが見つからない(サブ基盤外れなど)
+10, //ファイルが見つからない
+20, //既に存在
+21, //空き容量がない
+22, //書込み禁止
+30, //アクセスエラー
+50, //フォーマットエラー
+60, //検証に失敗、改竄
+70, //ROM情報エラー
+80, //リトライ要求
+90, //実行時エラー
+99 //深刻なエラー
+
+
+//上位
+CARD = 100,
+BKUP DEVICE = 200,
+OTHER = 300
+
+
+これらの合成で表示される
+例えば、カードが刺さっていない場合は 101 となる
+
+
+通常時に発生しやすいと思われるもの
+
+302 .. プロダクトコードが一致しない
+101 .. カードが見つからない
+
diff --git a/trunk/CardSaveData/ToSD/docs/HowToビルド.txt b/trunk/CardSaveData/ToSD/docs/HowToビルド.txt
new file mode 100644
index 0000000..3614a99
--- /dev/null
+++ b/trunk/CardSaveData/ToSD/docs/HowToビルド.txt
@@ -0,0 +1,57 @@
+mFF
+ARM RVC_Nintendo 4.1
+omake 0.9.8.5
+CTR SDK2.0 + RepairtoolvCx[gpb`
+v1.03ȍ~ ps_api.h libnn_ps(SystemProgramKitɓĂ)
+
+vFSDK2.31ȍ~̃VXe{
+
+)
+SDKSampledemos common,gxrhĂ
+omakeroot̂fBNgɂomaket@C
+SAMPLED_DEMOS_COMMON_INCLUDE_DIR Ɂ@
+sampledemos/common/includëʒuw肵Ă
+Jpubkeyimp/omakeŎw
+
+rh)
+omakeroot̂fBNgomakes
+bodyŃrhocia AImpomake(SRC_IMPORTEE_PATH)Ŏw
+(ʎY@Ŏgɂ́A}X^Ociaw)
+rhNANDC|[gpccił
+
+
+C|[g:
+ciaSDC|[g -> SD .. DevMenugp,DevMenufullȂnandɂ
+J[hNC|[g -> NAND
+
+ʎY@ł̎sɂ̓}X^OK{
+bodyō쐬cia OLStŃ}X^O
+ciagč쐬cci}X^O
+
+}X^O̗F
+Ebody/imagesɏocia}X^OOLSt
+EciaImpomakeŎwA͎wꏊɒu
+ibodỹrhŏ㏑Ȃ悤ꏊt@CςقSj
+Eimp/omakesAcci쐬
+Ecci}X^O
+
+OLSƃ}X^o[WXVKv
+common/ver.h͕\o[WAύXĂ_
+body/omekẽRgQl
+
+NANDC|[gŎsꍇcia`FbN
+SDC|[g
+J@œ- }X^OĂȂ
+ʎY@œ- OLStĂȂ
+
+C|[g{̂VAԍŐĂ܂
+"imp/imp_lis/"ɃXgƏTv
+OpenSSL0.9.6k,r 1.0.0d œmF
+imp/imp_list ɃR}hCc[(win32)pob`
+gcygwinł
+[UɂomakewpubkeyƑgprivatekeyōn
+
+
+{c[J̃}X^O͐iG()Ɉ˗
+}X^OςDevMenu(full)
+CUP쐬͔ѓɕ
diff --git a/trunk/CardSaveData/ToSD/docs/option.txt b/trunk/CardSaveData/ToSD/docs/option.txt
new file mode 100644
index 0000000..64a334f
--- /dev/null
+++ b/trunk/CardSaveData/ToSD/docs/option.txt
@@ -0,0 +1,10 @@
+C|[^̃IvVL
+
+cms_inf.txt̖OŃt@C쐬
+ȉ̋LqŃIvVLɂȂ
+
+-t: eXgj[
+@@@J[h̃Z[uɃeXgp^[݁xt@C
+
+-p: {̃VA\
+
diff --git a/trunk/CardSaveData/ToSD/docs/release.txt b/trunk/CardSaveData/ToSD/docs/release.txt
new file mode 100644
index 0000000..c6aa8d3
--- /dev/null
+++ b/trunk/CardSaveData/ToSD/docs/release.txt
@@ -0,0 +1,31 @@
+////////////////////////////////////////////////////////////////
+J[h̃Z[uf[^SDփ_CNgo
+
+{c[ uNintendo for 3DSvѐpJ[hpł
+s͈ȊO̎gp͋ւ܂
+
+oe
+CTR_SDK\tools\TargetTools\CTR-TS\Release\NandFiler
+ŊJJ[hփCgł܂
+////////////////////////////////////////////////////////////////
+
+NANDC|[gĂAAvl̎菇ŋN
+{̃VXe2.31(1stNup)ȍ~ɂĂ
+
+(C|[g菇)
+EfobK̓C^"cci"J[hɏ
+EHomej[J[hNj[Inports
+Ej[ImportI
+EId{^Z ->"d"^b`
+
+
+(NAND폜)
+N܂ł̓C|[gƓl
+Ej[Deletes
+I̓j[ɖ߂܂
+
+
+c[{̂̑͑}jAQ
+
+
+[Histry]
diff --git a/trunk/CardSaveData/ToSD/docs/マスタリング.txt b/trunk/CardSaveData/ToSD/docs/マスタリング.txt
new file mode 100644
index 0000000..3009e14
--- /dev/null
+++ b/trunk/CardSaveData/ToSD/docs/マスタリング.txt
@@ -0,0 +1,10 @@
+ʎY@ł̓ɂ̓}X^OKv
+
+cia̓T[oFiOLSjK{
+OLS͑O擾烊}X^o[WグKv(2011/2)
+(ႦAO 1.0.0 Ȃ@1.0.1 )
+W[rsfŎw(Remasterversion)
+}Ciƃ}CNOmakefile
+MAKECIAFLAGS = -minor 0 -micro 1
+̏ꍇ *.0.1 (*rsfRemasterversion)
+
diff --git a/trunk/CardSaveData/ToSD/docs/操作説明.txt b/trunk/CardSaveData/ToSD/docs/操作説明.txt
new file mode 100644
index 0000000..1b2b382
--- /dev/null
+++ b/trunk/CardSaveData/ToSD/docs/操作説明.txt
@@ -0,0 +1,16 @@
+
+<상j[>
+
+삪oԂ̂ƂʂɃ{^\
+
+EJ[hƉʂɎs{^\
+
+
+(obNAbv)
+^b`Ďs
+J[hSD֏o
+
+(obNAbvf[g)
+擪ʂ L[ LEFT + X Sb
+
+
diff --git a/trunk/CardSaveData/ToSD/docs/署名に関する覚え書.txt b/trunk/CardSaveData/ToSD/docs/署名に関する覚え書.txt
new file mode 100644
index 0000000..484e487
--- /dev/null
+++ b/trunk/CardSaveData/ToSD/docs/署名に関する覚え書.txt
@@ -0,0 +1,34 @@
+
+rhɑgݍJ̃yAƂȂvCx[ggďs
+
+o[WŌʂ
+ύX̏ꍇło[Wς邱
+
+Openssl.exe : cygwiñCXgAWinł
+RSAArbg͂QOSŴ
+SHA256̃_CWFXgɏ
+Openssl0.9.6.k(r),1.0.0d쐬̏œmF
+
+(쐬)
+openssl genrsa -out private_key.pem 2048
+openssl enc -d -base64 -in private_key.pem -out private_key.der
+openssl rsa -pubout -inform DER -outform DER -in private_key.der -out public_key.der
+
+(1.0.0̏ꍇ)
+openssl genpkey -out private_key.der -outform DER -algorithm rsa -pkeyopt rsa_keygen_bits:2048 -pkeyopt rsa_keygen_pubexp:65537
+openssl rsa -pubout -inform DER -outform DER -in private_key.der -out public_key.der
+
+()
+openssl dgst -sha256 -binary -keyform DER -sign private_key.der -out csm_sign.dat csm_list.txt
+
+vCx[g̃oCisvȂ
+openssl genrsa -out private_key.pem 2048
+openssl rsa -pubout -outform DER -in private_key.pem -out public_key.der
+
+openssl dgst -sha256 -binary -sign private_key.pem -out csm_sign.dat csm_list.txt
+
+쐬pubC|[gAvomakeŎw
+OBJECTS[] =
+ $`(ObjectFromBinary $(TARGET), ./Imp_list/Public_Key.der)
+
+XgvCx[gŏ쐬AXgƏC|[gSDǂ
diff --git a/trunk/CardSaveData/ToSD/見分けつかんのでバナー変更する b/trunk/CardSaveData/ToSD/見分けつかんのでバナー変更する
new file mode 100644
index 0000000..e69de29
diff --git a/trunk/CardSaveData/common/common.cpp b/trunk/CardSaveData/common/common.cpp
new file mode 100644
index 0000000..059e87f
--- /dev/null
+++ b/trunk/CardSaveData/common/common.cpp
@@ -0,0 +1,191 @@
+#include
+#include
+#include "common.h"
+#include "sleep.h"
+#include "demo.h"
+
+
+extern demo::RenderSystemDrawing s_RenderSystem;
+extern nn::fnd::ExpHeap appHeap;
+extern uptr heapForGx;
+
+bool prohibitHome = false;// HOME {^֎~
+
+// t@CVXeƑJڂX[vƂ̔rɗp
+//nn::os::CriticalSection g_SleepCS;
+// HOME {^Jڂƃt@CVXe̔rɗpi蓮Zbgj
+nn::os::LightEvent g_TransitionEvent;
+// X[vƃt@CVXe̔rɗpi蓮Zbgj
+nn::os::LightEvent g_AwakeEvent;
+
+void restoreGraphicSetting()
+{
+ // GPU WX^ݒ̕A
+ // AL DMPGL API gpĐݒ肵Ԃ̕Â
+ // WX^ݒR}h͑SčĔsׂ
+ nngxUpdateState(NN_GX_STATE_ALL);
+ nngxValidateState(NN_GX_STATE_ALL,GL_TRUE);
+}
+
+FUNCP end_func;
+void InitSysBreak(uptr adrs){
+ end_func = (FUNCP)adrs;
+
+ SleepHandler::Initialize();
+
+ //g_SleepCS.Initialize();
+ g_AwakeEvent.Initialize(true);
+ g_TransitionEvent.Initialize(true);
+
+ // N͏ Signal ԂɂĂ
+ g_AwakeEvent.Signal();
+ g_TransitionEvent.Signal();
+
+ // AvbgCuɊւ@\Lɂ
+ nn::applet::Enable(false);
+ // gx, snd, dsp eCu Initialize applet::Enable() ̌ɌĂȂȂȂ
+ // ɁAgx ̏ł nngxInitialize ́AEnable() ̏Ǐɍsׂ
+
+ // S\ɓd{^ꂽȂǁAɏIĂꍇAŃAvI
+ if ( nn::applet::IsExpectedToCloseApplication() )
+ {
+ SleepHandler::Finalize();
+ nn::Result result = nn::applet::PrepareToCloseApplication();
+ NN_UTIL_PANIC_IF_FAILED( result );
+ nn::applet::CloseApplication();
+ }
+ // OtBbNXCȕ́Aȍ~ōsȂȂȂ
+ // AAvP[V̏
+
+}
+
+
+//I
+void finish()
+{
+
+ SleepHandler::Finalize();//SLEEP
+ //g_SleepCS.Finalize();
+
+ (*end_func)();
+
+ g_AwakeEvent.Finalize();
+ g_TransitionEvent.Finalize();
+
+ nn::fs::Finalize();
+
+
+ appHeap.Free(reinterpret_cast(heapForGx));
+ appHeap.Finalize();
+
+ nn::os::SetDeviceMemorySize(0);
+ nn::os::SetHeapSize(0);
+
+ NN_LOG("End\n");
+ nn::applet::PrepareToCloseApplication();
+ nn::applet::CloseApplication();
+}
+
+
+void CheckSysBreak(){
+ // X[v̋ŃA1t[̕`抮҂Ă LCD Lɂ
+ if ( SleepHandler::s_IsAfterWakeUp ) {
+ nn::gx::StartLcdDisplay();
+ SleepHandler::s_IsAfterWakeUp = false;
+ }
+
+ // GPU ̃WX^ݒ̐lꍇA
+ // eJځAX[vvւ̕ԓ͕`Iɍsׂ
+
+ // {̃X[v
+ if ( SleepHandler::IsSleepRequested() )
+ {
+ SleepHandler::SleepSystem();
+ }
+
+ // Iv`FbN
+ if ( nn::applet::IsExpectedToCloseApplication() )
+ {
+ finish();
+ }
+
+ // AvP[V̑Jڏs
+
+ // HOME{^iOtBbNXCuς݂łȂȂȂj
+ if ( nn::applet::IsExpectedToProcessHomeButton() )
+ {
+ if (prohibitHome){ // HOME {^֎~
+ nn::applet::ClearHomeButtonState();//HOME {^tO폜
+ }else
+ {
+ g_TransitionEvent.ClearSignal();
+
+ // t@CVXe͑Jڂ҂
+ //if ( g_SleepCS.TryEnter() )
+ {
+ // X[vv REJECT 悤
+ nn::applet::DisableSleep();
+
+ //nngxWaitCmdlistDone();
+ nn::applet::ProcessHomeButton();
+ nn::applet::AppletWakeupState wState = nn::applet::WaitForStarting();
+ NN_UNUSED_VAR(wState);
+
+ //g_SleepCS.Leave();
+ g_TransitionEvent.Signal();
+
+ // HOME j[̒fobe[s̗vɂ
+ // AvIƔfꂽꍇAAṽC[vďI
+ if ( nn::applet::IsExpectedToCloseApplication() )
+ {
+ // `挠͓nĂȂ
+ finish();
+ }
+
+ nn::applet::EnableSleep(true);
+
+ // OtBbN̐ݒ߂
+ restoreGraphicSetting();
+ }
+ }
+
+ }
+
+
+ // d{^iOtBbNXCuς݂łȂȂȂj
+ if ( nn::applet::IsExpectedToProcessPowerButton() )
+ {
+ g_TransitionEvent.ClearSignal();
+
+ // t@CVXe͑Jڂ҂
+ //if ( g_SleepCS.TryEnter() )
+ {
+ nn::applet::DisableSleep();
+ //nngxWaitCmdlistDone();
+ nn::applet::ProcessPowerButton();
+ nn::applet::AppletWakeupState wState = nn::applet::WaitForStarting();
+
+ NN_UNUSED_VAR(wState);
+
+ //g_SleepCS.Leave();
+ g_TransitionEvent.Signal();
+
+ // AvIƔfꂽꍇAAṽC[vďI
+ if ( nn::applet::IsExpectedToCloseApplication() )
+ {
+ // `挠͓nĂȂ
+ finish();
+ }
+
+ nn::applet::EnableSleep(true);
+
+ // OtBbN̐ݒ߂
+ restoreGraphicSetting();
+ }
+
+ }
+
+
+
+
+}
diff --git a/trunk/CardSaveData/common/common.h b/trunk/CardSaveData/common/common.h
new file mode 100644
index 0000000..730fb6c
--- /dev/null
+++ b/trunk/CardSaveData/common/common.h
@@ -0,0 +1,11 @@
+#ifndef COMMON_H_
+#define COMMON_H_
+
+typedef void (*FUNCP)();
+
+void finish();
+void CheckSysBreak();
+void InitSysBreak(uptr adrs);
+
+
+#endif
diff --git a/trunk/CardSaveData/common/gui/gui.cpp b/trunk/CardSaveData/common/gui/gui.cpp
new file mode 100644
index 0000000..c39d534
--- /dev/null
+++ b/trunk/CardSaveData/common/gui/gui.cpp
@@ -0,0 +1,654 @@
+/*---------------------------------------------------------------------------*
+ Project: Horizon
+ File: main.cpp
+
+ Copyright (C)2010 Nintendo Co., Ltd. All rights reserved.
+
+ These coded instructions, statements, and computer programs contain
+ proprietary information of Nintendo of America Inc. and/or Nintendo
+ Company Ltd., and are protected by Federal copyright law. They may
+ not be disclosed to third parties or copied or duplicated in any form,
+ in whole or in part, without the prior written consent of Nintendo.
+
+ *---------------------------------------------------------------------------*/
+
+#include
+#include
+#include
+#include
+#include "demo.h"
+#include "gui.h"
+#include "../shfnt.h"
+
+//----------- types etc ---------------
+typedef struct{
+ u16 x,y;
+}tU16xy;
+
+typedef struct{
+ f32 r;
+ f32 g;
+ f32 b;
+ f32 a;
+}tCol;
+
+typedef struct{
+ uptr image;
+ tCol color;
+ f32 width;
+}tStyle;
+
+typedef void (*FUNCPTR)(u32 value);
+
+
+//------------------ コンポーネントクラス
+class cmBase{
+public:
+ FUNCPTR callback;
+ tU16xy pos;
+ tU16xy size;
+ bool enable;
+ bool visible;
+ u8 scr;
+ u8 padding[1];
+public:
+ cmBase():enable(false),visible(false){callback = 0;};
+ virtual ~cmBase(){};
+ void SetCallback(uptr adrs){ callback = (FUNCPTR)adrs;};
+};
+
+//PADボタン
+class cmButton: public cmBase
+{
+public:
+ u32 mask;//PadStatus.Trigger のマスク
+public:
+ cmButton(){mask=0;};
+
+};
+
+//パネル
+class cmPanel: public cmBase
+{
+public:
+ tStyle style;
+ char *caption;
+public:
+ cmPanel(){
+ caption="None";
+ style.image = 0;
+ style.color.r = 1.0f;
+ style.color.g = 1.0f;
+ style.color.b = 1.0f;
+ style.color.a = 1.0f;
+ style.width = 2.0f;
+ }
+};
+
+//メッセージ
+class cmMessage: public cmPanel
+{
+public:
+ u32 parent;//親コンポーネントID
+public:
+ cmMessage(){style.width = 8.0f;}
+};
+
+
+#define LINES_MAX 20
+#define CHARS_MAX 128
+//メモ
+class cmMemo: public cmBase
+{
+private:
+ char strlst[LINES_MAX][CHARS_MAX];
+public:
+ tStyle style;
+ u32 lines;//行サイズ:strlen配列数以下であること
+ u32 parent;//親コンポーネントID
+public:
+ cmMemo();
+ bool setline(char *p,u16 ln);
+ char* line(u16 ln);
+ void clr(){
+ for (int i=0;i 80 )
+ {
+ if (x < 160) return -10;
+ else if (x <230) return -30;
+ else return -50;
+ }
+ return 0;
+}
+
+//PANEL上の座標かチェック
+bool onPanel(u16 x,u16 y,cmPanel *p)
+{
+ int px = pos2tpx(p->pos.x);
+ int pw = pos2tpx(p->size.x);
+ int py = 20;
+
+ if (x <= (p->pos.x + px))return false;
+ if (x >= (p->pos.x + p->size.x + pw))return false;
+ if (y <= p->pos.y + py )return false;
+ if (y >= (p->pos.y + p->size.y))return false;
+ return true;
+}
+
+
+#define setText(x,y,s) shf_DrawText_0(x,y,s)
+#define setSize(sz) shf_SetSize(sz)
+
+void setColor(tCol *col)
+{
+ //s_RenderSystem.SetColor(col->r, col->g, col->b,col->a);
+ shf_SetColor(col->r,col->g,col->b,col->a);
+}
+
+//void setSize(f32 sz)
+//{
+// s_RenderSystem.SetFontSize(sz);
+//}
+
+/*
+#define FONT_CAPTION_SIZE 12
+//caption付きBox描画
+void drawBox(tU16xy top,tU16xy size,tStyle *st,char* str = 0)
+{
+ u16 xe = top.x + size.x -1;
+ u16 ye = top.y + size.y -1;
+ setColor(&st->color);
+ s_RenderSystem.SetLineWidth(st->width);
+ s_RenderSystem.DrawLine(top.x, top.y, xe, top.y);
+ s_RenderSystem.DrawLine(xe, top.y, xe, ye);
+ s_RenderSystem.DrawLine(xe, ye, top.x, ye);
+ s_RenderSystem.DrawLine(top.x, ye, top.x, top.y);
+ if (str != 0){
+ int w = (size.x - strlen(str)*FONT_CAPTION_SIZE) >> 1;
+ int h = (size.y - FONT_CAPTION_SIZE) >> 1;
+ if ((w>0) && (h>0)){
+ setSize(FONT_CAPTION_SIZE);
+ s_RenderSystem.DrawText(top.x + w,top.y + h,str);
+ }
+ }
+}
+*/
+
+//上画面、メッセージ枠表示
+void drawBox(tU16xy top,tU16xy size,tStyle *st,char* str = 0)
+{
+ int i;
+ shf_SetScale(2.0f,2.0f);
+ setColor(&st->color);
+ for (i=0;i> 1;
+ h = (size.y - h) >> 1;
+ if ((w>0) && (h>0)){
+ setText(top.x + w+10,top.y + h,str);
+ }
+ }
+
+}
+
+//下画面ボタン表示
+void drawBox2(tU16xy top,tU16xy size,tStyle *st,char* str = 0)
+{
+ int i;
+ setColor(&st->color);
+ shf_SetScale(2.0f,2.0f);
+ for (i=0;i> 1;
+ h = (size.y - h) >> 1;
+ if ((w>0) && (h>0)){
+ setText(top.x + w+10,top.y + h+10,str);
+ }
+ }
+
+}
+
+
+
+//描画
+void drawDisp()
+{
+ //NN_LOG("draw\n");
+ //上
+ s_RenderSystem.SetRenderTarget(NN_GX_DISPLAY0);
+ s_RenderSystem.Clear();
+ int i,j;
+
+ for (i=0;ir = 0.0;
+ col->g = 0.0;
+ col->b = 0.0;
+ break;
+ case COLOR_GRAY:
+ col->r = 0.5f;
+ col->g = 0.5f;
+ col->b = 0.5f;
+ break;
+ case COLOR_RED:
+ col->r = 1.0f;
+ col->g = 0.0f;
+ col->b = 0.0f;
+ break;
+ case COLOR_BLUE:
+ col->r = 0.0f;
+ col->g = 0.0f;
+ col->b = 1.0f;
+ break;
+ case COLOR_GREEN:
+ col->r = 0.0f;
+ col->g = 1.0f;
+ col->b = 0.0f;
+ break;
+ case COLOR_YELLO:
+ col->r = 1.0f;
+ col->g = 1.0f;
+ col->b = 0.0f;
+ break;
+ case COLOR_WHITE:
+ col->r = 1.0f;
+ col->g = 1.0f;
+ col->b = 1.0f;
+ break;
+ case COLOR_PARPL:
+ col->r = 1.0f;
+ col->g = 0.0f;
+ col->b = 1.0f;
+ break;
+ case COLOR_SKY:
+ col->r = 0.5f;
+ col->g = 1.0f;
+ col->b = 1.0f;
+ break;
+ default:
+ col->r = 1.0f;
+ col->g = 1.0f;
+ col->b = 1.0f;
+ break;
+ }
+ col->a = 1.0f;
+}
+
+//------------------ class code ----------------------------
+
+nn::os::Thread s_thread;
+
+//thread
+//void Gui::thUpdate()
+void thUpdate(nn::os::LightEvent* pEvnt)
+{
+ nn::hid::PadReader padReader;
+ nn::hid::PadStatus padStatus;
+ nn::hid::TouchPanelStatus tpStatus;
+ tU16xy tpOld = {0,0};
+ nn::hid::TouchPanelReader tpReader;
+ u32 value;
+ int i;
+
+ while(1)
+ {
+ if (pEvnt->TryWait())break;
+
+ if (s_Button.enable && (s_Button.callback !=0))//PADボタン
+ {
+ padReader.ReadLatest(&padStatus);
+ value = (padStatus.trigger & s_Button.mask) | ((padStatus.hold & s_Button.mask) << 16);
+ if (value)(*s_Button.callback)(value);
+ }
+
+ tpReader.ReadLatest(&tpStatus);//タッチ
+ if((tpStatus.x != tpOld.x) || (tpStatus.y != tpOld.y))
+ {
+ tpOld.x = tpStatus.x;
+ tpOld.y = tpStatus.y;
+ if (tpStatus.touch)
+ {
+ NN_LOG("x =%d , y=%d\n",tpStatus.x,tpStatus.y);
+ for (i=0;iClearSignal();
+}
+
+
+Gui::~Gui()
+{
+ Finalize();
+}
+
+
+//初期化、終了
+bool Gui::Initialize(uptr pHeap,u32 size,nn::os::LightEvent* pEvnt)
+{
+ if (Initialized)return false;
+ Initialized = true;
+
+ //コンポーネントの初期化
+ int i;
+ for (i=0;i< PANEL_MAX;i++)PanelEffective(i,false,false);
+ for (i=0;i< MEMO_MAX;i++)MemoEffective(i,false,false);
+ for (i=0;i< MESS_MAX;i++)MessEffective(i,false,false);
+
+ //Render
+ s_RenderSystem.Initialize(pHeap, size);
+
+ SharedFontInit();
+
+ //HID
+ nn::hid::Initialize();
+
+ //Thread
+ NN_LOG("Thread Start\n");
+ nn::Result res =s_thread.TryStartUsingAutoStack(thUpdate,pEvnt,8192);
+ if (res.IsFailure()){
+ NN_LOG("failed :res.desc = %d\n",res.GetDescription());
+ return false;
+ }
+
+
+
+ return true;
+}
+
+void Gui::Finalize()
+{
+ if (Initialized != true) return;
+ if (s_thread.IsAlive())
+ {
+ s_thread.Join();
+ s_thread.Finalize();
+ }
+ Initialized = false;
+ //nn::hid::Finalize();
+ // nngxFinalize 関数呼び出しと VSync 割り込みが同時に発生すると
+ // 画面が暗転したまま止まる不具合を回避するために VSync 待ちを行う
+ nngxWaitVSync(NN_GX_DISPLAY_BOTH);
+ SharedFontFinalize();
+ nngxWaitVSync(NN_GX_DISPLAY_BOTH);
+ s_RenderSystem.Finalize();
+
+}
+
+void Gui::ButtonCallback(uptr adrs)
+{
+ s_Button.SetCallback(adrs);
+}
+
+void Gui::ButtonMask(u32 mask)
+{
+ s_Button.mask = mask;
+ s_Button.enable = true;
+}
+
+myResult Gui::PanelSet(const tPanel *panel)
+{
+ if (panel->id >= PANEL_MAX)return RESULT_BAD_PARAM;
+ s_Panel[panel->id].pos.x = panel->x;
+ s_Panel[panel->id].pos.y = panel->y;
+ s_Panel[panel->id].size.x = panel->width;
+ s_Panel[panel->id].size.y = panel->height;
+ //if (panel->caption[0] != 0 )
+ s_Panel[panel->id].caption = panel->caption;
+ s_Panel[panel->id].SetCallback(panel->callback);
+ s_Panel[panel->id].scr = panel->scr;
+ s_Panel[panel->id].visible = false;
+ s_Panel[panel->id].enable = false;
+ return RESULT_OK;
+}
+
+myResult Gui::PanelEffective(u8 id,bool enable,bool visible)
+{
+ if (id >= PANEL_MAX)return RESULT_BAD_PARAM;
+ s_Panel[id].enable = enable;
+ s_Panel[id].visible = visible;
+ return RESULT_OK;
+}
+
+myResult Gui::PanelLineStyle(u8 id,eColor col,u8 width)
+{
+ if (id >= PANEL_MAX)return RESULT_BAD_PARAM;
+ ColorFromCode(col,&s_Panel[id].style.color);
+ s_Panel[id].style.width = width;
+ return RESULT_OK;
+}
+
+
+myResult Gui::MessEffective(u8 id,bool enable,bool visible)
+{
+ if (id >= MESS_MAX)return RESULT_BAD_PARAM;
+ s_Message[id].enable = enable;
+ s_Message[id].visible = visible;
+ return RESULT_OK;
+}
+
+
+myResult Gui::MessSet(const tMessage *mes)
+{
+ if ((mes->parent >= PANEL_MAX) || (mes->id >= MESS_MAX))return RESULT_BAD_PARAM;
+ s_Message[mes->id].pos.x = mes->x;
+ s_Message[mes->id].pos.y = mes->y;
+ s_Message[mes->id].caption = mes->str;
+ s_Message[mes->id].parent = mes->parent;
+ s_Message[mes->id].style.width = mes->size;
+ ColorFromCode(mes->color,&s_Message[mes->id].style.color);
+ s_Message[mes->id].visible = false;
+ s_Message[mes->id].enable = false;
+ return RESULT_OK;
+}
+
+myResult Gui::MessStr(u8 id,char *str)
+{
+ if (id >= MESS_MAX)return RESULT_BAD_PARAM;
+ s_Message[id].caption = str;
+ return RESULT_OK;
+}
+
+myResult Gui::MessCol(u8 id,eColor col)
+{
+ if (id >= MESS_MAX)return RESULT_BAD_PARAM;
+ ColorFromCode(col,&s_Message[id].style.color);
+ return RESULT_OK;
+}
+
+myResult Gui::MemoSet(const tMemo *m)
+{
+ if ((m->parent >= PANEL_MAX) || (m->id >= MEMO_MAX))return RESULT_BAD_PARAM;
+ if (m->lines > LINES_MAX)return RESULT_BAD_PARAM;
+ s_Memo[m->id].lines = m->lines;
+ s_Memo[m->id].pos.x = m->x;
+ s_Memo[m->id].pos.y = m->y;
+ s_Memo[m->id].parent = m->parent;
+ s_Memo[m->id].style.width = m->size;
+ ColorFromCode(m->color,&s_Memo[m->id].style.color);
+ s_Memo[m->id].clr();
+ s_Memo[m->id].visible = false;
+ s_Memo[m->id].enable = false;
+ return RESULT_OK;
+}
+
+myResult Gui::MemoStr(u8 id,char *str,u16 ln)
+{
+ if ((id < MEMO_MAX) && s_Memo[id].setline(str,ln) )return RESULT_OK;
+ return RESULT_BAD_PARAM;
+}
+
+
+myResult Gui::MemoEffective(u8 id,bool enable,bool visible)
+{
+ if (id >= MEMO_MAX)return RESULT_BAD_PARAM;
+ s_Memo[id].enable = enable;
+ s_Memo[id].visible = visible;
+ return RESULT_OK;
+}
+
+
+
+void Gui::Draw()
+{
+ //s_drawFlag = true;
+ drawDisp();
+}
+
+
+void Gui::DisableAll()
+{
+ for (int i=0;i
+#include
+#include "../my_defs.h"
+
+typedef struct
+{
+ uptr callback;
+ char* caption;
+ u16 x,y;
+ u16 width,height;
+ u16 id;
+ u16 scr;//0:up,else down screen
+}tPanel;
+
+typedef enum {
+ COLOR_BLACK,
+ COLOR_GRAY,
+ COLOR_RED,
+ COLOR_GREEN,
+ COLOR_BLUE,
+ COLOR_YELLO,
+ COLOR_WHITE,
+ COLOR_PARPL,
+ COLOR_SKY
+}eColor;
+
+typedef struct
+{
+ char* str;
+ u16 x,y;//親の始点との相対
+ eColor color;//
+ u8 size;//文字サイズ
+ u8 id;
+ u8 parent;//親コンポーネント指定
+}tMessage;
+
+typedef struct
+{
+ u16 lines;//表示行数
+ u16 x,y;//親の始点との相対
+ eColor color;//文字色
+ u8 size;//文字サイズ
+ u8 id;
+ u8 parent;//親コンポーネント指定
+}tMemo;
+
+
+
+class Gui
+{
+private:
+ bool Initialized;
+
+public:
+ Gui(){};
+ ~Gui();
+ bool Initialize(uptr pHeap,u32 size,nn::os::LightEvent* pEvnt);
+ void Finalize();
+ void ButtonCallback(uptr adrs);
+ void ButtonMask(u32 mask);
+ myResult PanelSet(const tPanel *panel);
+ myResult MessSet(const tMessage *mes);
+ myResult MemoSet(const tMemo *m);
+ void Draw();
+ void DisableAll();
+ myResult PanelEffective(u8 id,bool enable=true,bool visible=true);
+ myResult MessEffective(u8 id,bool enable=true,bool visible=true);
+ myResult MemoEffective(u8 id,bool enable=true,bool visible=true);
+ myResult MessStr(u8 id,char *str);
+ myResult MessCol(u8 id,eColor col);
+ myResult MemoStr(u8 id,char *str,u16 ln);
+ myResult PanelLineStyle(u8 id,eColor col=COLOR_WHITE,u8 width = 2);
+ //void thUpdate();
+};
+
+
+#endif
diff --git a/trunk/CardSaveData/common/my_defs.h b/trunk/CardSaveData/common/my_defs.h
new file mode 100644
index 0000000..b6a9ee7
--- /dev/null
+++ b/trunk/CardSaveData/common/my_defs.h
@@ -0,0 +1,93 @@
+/*---------------------------------------------------------------------------*
+ Project: Horizon
+ File: irp.h
+
+ Copyright (C)2009 Nintendo Co., Ltd. All rights reserved.
+
+ These coded instructions, statements, and computer programs contain
+ proprietary information of Nintendo of America Inc. and/or Nintendo
+ Company Ltd., and are protected by Federal copyright law. They may
+ not be disclosed to third parties or copied or duplicated in any form,
+ in whole or in part, without the prior written consent of Nintendo.
+
+ $Rev$
+ *---------------------------------------------------------------------------*/
+
+#ifndef MYDEFS_H_
+#define MYDEFS_H_
+
+//デバグモード有効化
+//#define DEBUG_ENABLE 1
+
+//リストア成功時消去
+#define SUCCESS_DELETE 1
+
+//SD使用時
+//#define BKUP_NOTMEM 1
+
+//データ壊すモード有効
+//#define CRUSH_ENABLE 1
+
+
+//エラー表示コード
+enum {
+ERC_UNKNOWN = 0, //不明
+ERC_DEVICE, //デバイスが見つからない(カード抜け)
+ERC_PRODCODE,//プロダクトコード不一致
+ERC_VERIFI,//ベリファイエラー
+ERC_PATH,//パスが長すぎ
+ERC_DIRDEPTH,//ディレクトリ深すぎ
+ERC_MEDIA, //メディアが見つからない(サブ基盤外れなど)
+//ERC_PULLOUT,//抜け検出
+ERC_READ = 10, //ファイルが見つからない
+ERC_WRITE_OW = 20, //既に存在
+ERC_WRITE_NS, //空き容量がない
+ERC_WRITE_PROTECT, //書込み禁止
+ERC_ACCESS = 30, //アクセスエラー
+ERC_FORMAT = 50, //フォーマットエラー
+ERC_SDK_VERIFI = 60, //検証に失敗、改竄
+ERC_ROM = 70, //ROM情報エラー
+ERC_RETRY = 80, //リトライ要求
+ERC_EXEC = 90, //実行時エラー
+ERC_FATAL = 99 //深刻なエラー
+};
+
+typedef enum{
+ERC_DEV_CARD = 100,
+ERC_DEV_OUT = 200,
+ERC_DEV_OTHER = 300
+}ErcDev;
+
+
+//内部使用のエラー
+typedef enum {
+ RESULT_OK,
+ RESULT_FAIL,
+ RESULT_FAIL_OPEN,
+ RESULT_FAIL_OPENW,
+ RESULT_FAIL_DELETE,
+ RESULT_FAIL_CREATE,
+ RESULT_FAIL_READ,
+ RESULT_FAIL_WRITE,
+ RESULT_FAIL_MOUNT,
+ RESULT_FAIL_FORMAT,
+ RESULT_FAIL_GETDIR,
+ RESULT_FAIL_VERIFI,
+ RESULT_NOT_FAUND,
+ RESULT_NO_MEDIA,
+ RESULT_NOT_FORMAT,
+ RESULT_BAD_FORMAT,
+ RESULT_SDK_VERIFI,
+ RESULT_FILE_EXIST,
+ RESULT_NO_EXSAVE,
+ RESULT_ALREADY_MOUNT,
+ RESULT_INVALID_FILE,
+ RESULT_BAD_PARAM,
+ RESULT_DIR_LEVEL_OVER,
+ RESULT_PATH_LENGTH_OVER,
+ RESULT_MAX
+}myResult;
+
+
+
+#endif
diff --git a/trunk/CardSaveData/common/null_banner/model.cbmd b/trunk/CardSaveData/common/null_banner/model.cbmd
new file mode 100644
index 0000000..f1c7b62
Binary files /dev/null and b/trunk/CardSaveData/common/null_banner/model.cbmd differ
diff --git a/trunk/CardSaveData/common/null_banner/sound.cbsd b/trunk/CardSaveData/common/null_banner/sound.cbsd
new file mode 100644
index 0000000..f1c7b62
Binary files /dev/null and b/trunk/CardSaveData/common/null_banner/sound.cbsd differ
diff --git a/trunk/CardSaveData/common/null_banner/unknown24x24.ctpk b/trunk/CardSaveData/common/null_banner/unknown24x24.ctpk
new file mode 100644
index 0000000..794b136
--- /dev/null
+++ b/trunk/CardSaveData/common/null_banner/unknown24x24.ctpk
@@ -0,0 +1 @@
+888yyYyYyyyYyyYyyyyYyYy8
\ No newline at end of file
diff --git a/trunk/CardSaveData/common/null_banner/unknown48x48.ctpk b/trunk/CardSaveData/common/null_banner/unknown48x48.ctpk
new file mode 100644
index 0000000..8c7da16
--- /dev/null
+++ b/trunk/CardSaveData/common/null_banner/unknown48x48.ctpk
@@ -0,0 +1 @@
+Y8888ƺ8888YYyyYYޚyY8YyYYޚyY8ޚ8
\ No newline at end of file
diff --git a/trunk/CardSaveData/common/savefile/exsave.cpp b/trunk/CardSaveData/common/savefile/exsave.cpp
new file mode 100644
index 0000000..6cf769a
--- /dev/null
+++ b/trunk/CardSaveData/common/savefile/exsave.cpp
@@ -0,0 +1,299 @@
+#include
+#include
+#include
+#include <../fs/fs_ResultPrivate.h>
+#include "exsave.h"
+
+#define OWN_UID 0xf8014
+const char *exsaveName = "exsave:";
+const wchar_t *exsaveRoot_w = L"exsave:/save/";
+const char *exsaveRoot = "exsave:/save/";
+#define ROOTLENGTH_EX 8
+const wchar_t *exsaveSys_w = L"exsave:/ncl_sysdata.ncl";//暫定
+wchar_t expath_w[PATHLENGTH_MAX];//パス名
+wchar_t expathu_w[100][PATHLENGTH_MAX];//上層パス名
+wchar_t expathw_w[PATHLENGTH_MAX];//パス名ワーク
+static nn::fs::DirectoryEntry exdcEntry[MAX_LEVEL];
+static nn::fs::Directory exdc[MAX_LEVEL];
+
+
+//拡張セーブデータ
+//存在確認
+bool ExSave::IsExist()
+{
+ LastNnResult = nn::fs::MountExtSaveData(exsaveName,OWN_UID);
+ nn::fs::Unmount(exsaveName);
+ return LastNnResult.IsSuccess();
+}
+
+//パス検索位置のリセット
+void ExSave::ResetPath()
+{
+ s_lv=0;
+ s_serch = false;
+ wcscpy(expath_w,exsaveRoot_w);
+ //wcscpy(expathu_w,expath_w);
+}
+
+
+myResult ExSave::GetPath(wchar_t *path)
+{
+ int n;
+ while(1){
+ if (s_serch==false){
+ LastNnResult = exdc[s_lv].TryInitialize(expath_w);//Open
+ if (LastNnResult.IsFailure()){
+ return RESULT_FAIL;
+ }
+ }
+ while(1){
+ n = (exdc[s_lv].Read(&exdcEntry[s_lv],1));
+ if ( n==0 )//終端
+ {
+ exdc[s_lv].Finalize();
+ if (s_lv == 0){path[0]=0;return RESULT_OK;}// ---- rootなら終了
+ s_lv--;//上の層に戻る
+ wcscpy(expath_w,expathu_w[s_lv]);//パス戻す
+ }else{
+ if(exdcEntry[s_lv].attributes.isDirectory){//ディレクトリ
+ //m_info.DirCount++;
+ wcscpy(expathu_w[s_lv],expath_w);//パス保存
+ wcscat(expath_w,exdcEntry[s_lv].entryName);//次のディレクトリパス
+ wcscat(expath_w,L"/");
+ if (++s_lv == MAX_LEVEL)return RESULT_DIR_LEVEL_OVER;
+ s_serch = false;
+ break;
+ }else{//ファイル
+ //m_info.FileCount++;
+ s_serch = true;
+ wcscpy(path,pPathTop);
+ wcscat(path,exdcEntry[s_lv].entryName);
+ return RESULT_OK;
+ }
+ }
+ }
+ }
+
+}
+
+
+//削除
+bool ExSave::Delete()
+{
+ LastNnResult = nn::fs::DeleteExtSaveData(OWN_UID);
+ //if (nn::fs::ResultNotFound().Includes(LastNnResult))return RESULT_NOT_FOUND;
+ return LastNnResult.IsSuccess();
+}
+
+//セーブ作成、成功時はマウント状態
+myResult ExSave::Create(const void* icon,size_t iconSize,u32 entryDir,u32 entryFile)
+{
+ if ( IsMounted )return RESULT_ALREADY_MOUNT;
+ LastNnResult = nn::fs::CreateExtSaveData(OWN_UID,icon,iconSize,entryDir,entryFile);
+ if (LastNnResult.IsFailure())return RESULT_FAIL_CREATE;
+ LastNnResult = nn::fs::MountExtSaveData(exsaveName,OWN_UID);
+ if (LastNnResult.IsFailure())return RESULT_FAIL_MOUNT;
+ LastNnResult = nn::fs::TryCreateDirectory(exsaveRoot_w);
+ if (LastNnResult.IsFailure()){
+ nn::fs::Unmount(exsaveName);
+ return RESULT_FAIL_MOUNT;
+ }
+ IsMounted = true;
+ return RESULT_OK;
+}
+//マウント
+myResult ExSave::Mount()
+{
+ if ( IsMounted )return RESULT_ALREADY_MOUNT;
+ LastNnResult = nn::fs::MountExtSaveData(exsaveName,OWN_UID);
+ if (LastNnResult.IsFailure()){
+ return RESULT_FAIL_MOUNT;
+ }
+ IsMounted = true;
+ return RESULT_OK;
+}
+void ExSave::Unmount()
+{
+ IsMounted = false;
+ nn::fs::Unmount(exsaveName);
+}
+//ライト属性ファイルを閉じる
+void ExSave::CloseW()
+{
+ writer.Finalize();
+}
+
+//ファイルライト
+s32 ExSave::Write(char *buffer,size_t size)
+{
+ s32 ct;
+ LastNnResult = writer.TryWrite(&ct,(void*)buffer,size);
+ if(LastNnResult.IsFailure())ct=0;
+ return ct;
+}
+
+
+//管理用ファイル
+//ライト属性で開く
+bool ExSave::OpenSysW()
+{
+ LastNnResult = nn::fs::TryCreateFile(exsaveSys_w,sizeof(tArcInfo));
+ LastNnResult = writerSys.TryInitialize(exsaveSys_w,false);
+ return LastNnResult.IsSuccess();
+}
+//ライト属性ファイルを閉じる
+void ExSave::CloseSysW()
+{
+ writerSys.Finalize();
+}
+//システムファイルライト
+bool ExSave::WriteSys(tArcInfo *pinfo)
+{
+ s32 ct;
+ pinfo->Ver = INFO_VERSION;
+ LastNnResult = writerSys.TryWrite(&ct,(void*)pinfo,sizeof(tArcInfo));
+ return LastNnResult.IsSuccess();
+}
+//リード属性で開く
+bool ExSave::OpenSysR()
+{
+ LastNnResult = readerSys.TryInitialize(exsaveSys_w);
+ return LastNnResult.IsSuccess();
+}
+//ライト属性ファイルを閉じる
+void ExSave::CloseSysR()
+{
+ readerSys.Finalize();
+}
+//ファイルリード
+bool ExSave::ReadSys(tArcInfo *pinfo)
+{
+ s32 ct;
+ LastNnResult = readerSys.TryRead(&ct,(void*)pinfo,sizeof(tArcInfo));
+ return LastNnResult.IsSuccess();
+}
+
+
+
+
+//ライト属性ファイルを開く
+bool ExSave::OpenW(wchar_t *path,s64 size)
+{
+ int pos,pos2;
+
+ wcscpy(expath_w,exsaveRoot_w);
+ wcscat(expath_w,path);
+ while(1){
+ LastNnResult = nn::fs::TryCreateFile(expath_w,size);
+ if(LastNnResult.IsSuccess())break;
+ //ディレクトリがなければディレクトリを作成
+ pos = GetPosDelmLast(expath_w,ROOTLENGTH_EX);//ファイルが存在するディレクトリ
+ if (pos <= 0)return false;//rootかパスが不正
+ //while (1){
+ wcscpy(expathw_w,expath_w);//ワークにコピー
+ while (LastNnResult.IsFailure()){//ディレクトリ作成できるまで遡る
+ if(LastNnResult.GetDescription()!=nn::fs::DESCRIPTION_DBM_DIRECTORY_NOT_FOUND)return false;
+ pos2 = GetPosDelmLast(expathw_w,ROOTLENGTH_EX);//境界位置を探す
+ if (pos2 == 0)return false;//root到達
+ expathw_w[pos2] = 0;//境界まで削除 (例) dir1/dir2/file -> dir1/dir2 -> dir1
+ LastNnResult = nn::fs::TryCreateDirectory(expathw_w);
+ }
+ //if (pos2 == pos)break;//配置ディレクトリなら抜ける
+ //todo:ディレクトリが深いとき時間がかかるなら、無駄なTryCreateを省く
+ //案)直上から最初の成功までのデリミタ位置を記録
+ //先に全ディレクトリ作っておくのがよさげ
+ //}
+ }
+ LastNnResult = writer.TryInitialize(expath_w,false);
+ return LastNnResult.IsSuccess();
+}
+
+//ファイルリード
+s32 ExSave::Read(char *buffer,size_t size)
+{
+// if (IsMounted==false)return 0;
+ s32 ct;
+ LastNnResult = reader.TryRead(&ct,(void*)buffer,size);
+ if(LastNnResult.IsFailure())ct=0;
+ return ct;
+}
+
+
+void ExSave::Close()
+{
+ reader.Finalize();
+}
+
+
+//ファイルを開く
+//パス指定はルート以降
+//(ex)data:/dir/file -> dir/file
+bool ExSave::Open(wchar_t *path)
+{
+ wcscpy(expathw_w,exsaveRoot_w);
+ wcscat(expathw_w,path);
+ LastNnResult = reader.TryInitialize(expathw_w);
+ if (LastNnResult.IsSuccess())
+ {
+ LastNnResult = reader.TryGetSize(&FileSize);
+ if (LastNnResult.IsSuccess())return true;
+ else Close();
+ }
+ return false;
+}
+
+//アーカイブ情報の取得
+bool ExSave::GetInfo(tArcInfo *pinfo)
+{
+ if(Mount()==RESULT_FAIL_MOUNT)return false;
+ //システムデータからフォーマット情報
+ if (OpenSysR())
+ {
+ if(ReadSys(pinfo) == false){
+ pinfo->Pcode[0]=0;
+ CloseSysR();//クローズ
+ Unmount();
+ return false;
+ }
+ }else{
+ Unmount();
+ return false;
+ }
+ CloseSysR();//クローズ
+// Unmount();
+//#ifdef INFO_API_USE
+//API情報と比較
+// LastNnResult = nn::fs::GetExtSaveDataFormatInfo(OWN_UID,&m_info.FileEntry,&m_info.DirEntry);
+// if (m_info.FileEntry != pinfo->FileEntry)return false;
+// if (m_info.DirEntry != pinfo->DirEntry)return false;
+// //if (m_info.Dup != pinfo->Dup)return false; //ExSaveには無い
+//#endif
+ return true;
+}
+
+
+//コンストラクタ
+ExSave::ExSave()
+{
+ IsMounted = false;
+ s_lv=0;
+ m_info.DirCount = 0;
+ m_info.FileCount = 0;
+ m_info.DirEntry = 0;
+ m_info.FileEntry = 0;
+ wcscpy(expath_w,exsaveRoot_w);
+ //wcscpy(expathu_w,expath_w);
+ pPathTop = (wchar_t*)((u32)&expath_w+strlen(exsaveRoot)*2);
+}
+
+void ExSave::Finalize()
+{
+ Close();
+ Unmount();
+}
+//デストラクタ
+ExSave::~ExSave()
+{
+ Finalize();
+}
+
diff --git a/trunk/CardSaveData/common/savefile/exsave.h b/trunk/CardSaveData/common/savefile/exsave.h
new file mode 100644
index 0000000..0806d88
--- /dev/null
+++ b/trunk/CardSaveData/common/savefile/exsave.h
@@ -0,0 +1,70 @@
+/*---------------------------------------------------------------------------*
+ Project: Horizon
+ File: irp.h
+
+ Copyright (C)2009 Nintendo Co., Ltd. All rights reserved.
+
+ These coded instructions, statements, and computer programs contain
+ proprietary information of Nintendo of America Inc. and/or Nintendo
+ Company Ltd., and are protected by Federal copyright law. They may
+ not be disclosed to third parties or copied or duplicated in any form,
+ in whole or in part, without the prior written consent of Nintendo.
+
+ $Rev$
+ *---------------------------------------------------------------------------*/
+
+#ifndef EXSAVE_H_
+#define EXSAVE_H_
+
+#include
+#include
+#include "../my_defs.h"
+#include "savefile.h"
+
+class ExSave
+{
+public:
+ s64 FileSize;
+ nn::Result LastNnResult;
+private:
+ nn::fs::FileReader reader;
+ nn::fs::FileWriter writer;
+ nn::fs::FileReader readerSys;
+ nn::fs::FileWriter writerSys;
+ wchar_t *pPathTop;
+ tArcInfo m_info;
+ int s_lv;
+ int exrootlen;
+ bool IsMounted;
+ bool s_serch;
+public:
+ ExSave();
+ ~ExSave();
+ void Finalize();
+ myResult Create(const void* icon,size_t iconSize,u32 entryDir,u32 entryFile);
+ myResult CreateSys(const void* icon,size_t iconSize);
+ myResult Mount();
+ myResult MountSys();
+ bool IsExist();
+ void Unmount();
+ bool Delete();
+ void CloseW();
+ bool OpenW(wchar_t *path,s64 size);
+ bool OpenSysW();//暫定
+ void CloseSysW();//暫定
+ bool OpenSysR();//暫定
+ void CloseSysR();//暫定
+ s32 Write(char *buffer,size_t size);
+ bool WriteSys(tArcInfo *pinfo);
+ bool ReadSys(tArcInfo *pinfo);
+ void ResetPath();
+ s32 Read(char *buffer,size_t size);
+ void Close();
+ bool Open(wchar_t *path);
+ myResult GetPath(wchar_t *path);
+ bool GetInfo(tArcInfo *pinfo);
+};
+
+
+
+#endif
diff --git a/trunk/CardSaveData/common/savefile/membak.cpp b/trunk/CardSaveData/common/savefile/membak.cpp
new file mode 100644
index 0000000..cc54973
--- /dev/null
+++ b/trunk/CardSaveData/common/savefile/membak.cpp
@@ -0,0 +1,228 @@
+#include
+#include
+#include
+#include
+#include "membak.h"
+
+using namespace nn;
+
+namespace
+{
+ const size_t BUFFER_SIZE = 10 * 1024 * 1024;
+ bit8 s_Buffer[BUFFER_SIZE] NN_ATTRIBUTE_ALIGN(32);
+}
+
+bool info_alive;
+
+//--------------------------------------------------------------------
+//
+
+
+//RXgN^
+MemBak::MemBak()
+{
+ m_Exists = false;
+ m_pBuffer = s_Buffer;
+ m_pBufferPos = s_Buffer;
+ m_pBufferSize = sizeof(s_Buffer);
+ LastNnResult = ResultSuccess();
+ ResetPath();
+
+ info_alive = false;
+}
+
+void MemBak::Finalize()
+{
+}
+//fXgN^
+MemBak::~MemBak()
+{
+}
+
+
+
+
+
+//--------------------------------------------------------------------
+// mount, unmount, create, delete
+
+//gZ[uf[^
+//݊mF
+bool MemBak::IsExist()
+{
+ return m_Exists;
+}
+
+//Z[u쐬A̓}Eg
+myResult MemBak::Create(const void* icon,size_t iconSize,u32 entryDir,u32 entryFile)
+{
+ NN_UNUSED_VAR(icon);
+ NN_UNUSED_VAR(iconSize);
+
+ if ( m_IsMounted )
+ {
+ return RESULT_ALREADY_MOUNT;
+ }
+
+ m_NumDirEntry = entryDir;
+ m_NumFileEntry = entryFile;
+
+ m_Exists = true;
+ m_IsMounted = true;
+ return RESULT_OK;
+}
+
+//폜
+bool MemBak::Delete()
+{
+ m_Exists = false;
+ info_alive = false;
+ m_pBufferPos = m_pBuffer;
+ return true;
+}
+
+//}Eg
+myResult MemBak::Mount()
+{
+ if ( m_IsMounted )
+ {
+ return RESULT_ALREADY_MOUNT;
+ }
+
+ m_IsMounted = true;
+ return RESULT_OK;
+}
+void MemBak::Unmount()
+{
+ m_IsMounted = false;
+}
+
+
+
+
+//--------------------------------------------------------------------
+// SetInfo, GetInfo
+
+//A[JCu̎擾
+bool MemBak::GetInfo(tArcInfo *pinfo)
+{
+ if (info_alive==false)return false;
+ *pinfo = m_ArcInfo;
+ return true;
+}
+
+
+//Ǘpt@C
+//CgŊJ
+bool MemBak::OpenSysW()
+{
+ return true;
+}
+//Cgt@C
+void MemBak::CloseSysW()
+{
+}
+
+//VXet@CCg
+bool MemBak::WriteSys(tArcInfo *pinfo)
+{
+ info_alive = true;
+ pinfo->Ver = INFO_VERSION;
+ m_ArcInfo = *pinfo;
+ return true;
+}
+
+
+
+
+//--------------------------------------------------------------------
+// Traverse
+
+//pXʒũZbg
+void MemBak::ResetPath()
+{
+ m_pFind = reinterpret_cast(m_pBuffer);
+}
+
+
+myResult MemBak::GetPath(wchar_t *path)
+{
+ if( m_pFind->IsEnd() )
+ {
+ path[0] = '\0';
+ return RESULT_OK;
+ }
+
+ std::wcscpy(path, m_pFind->GetName());
+ m_pFind = m_pFind->GetNext();
+
+ return RESULT_OK;
+}
+
+
+
+
+//--------------------------------------------------------------------
+// Write
+
+//Cgt@C
+void MemBak::CloseW()
+{
+}
+
+//t@CCg
+s32 MemBak::Write(char *buffer,size_t size)
+{
+ return m_ForWrite.Write(buffer, size);
+}
+
+
+
+//Cgt@CJ
+bool MemBak::OpenW(wchar_t *path,s64 size)
+{
+ m_ForWrite.Init(reinterpret_cast(m_pBufferPos));
+ m_ForWrite.Set(path, size);
+ m_pBufferPos = reinterpret_cast(m_ForWrite.GetNext());
+ return true;
+}
+
+//--------------------------------------------------------------------
+// Read
+
+//t@C[h
+s32 MemBak::Read(char *buffer,size_t size)
+{
+ return m_ForRead.Read(buffer, size);
+}
+
+
+void MemBak::Close()
+{
+}
+
+
+//t@CJ
+//pXw̓[gȍ~
+//(ex)data:/dir/file -> dir/file
+bool MemBak::Open(wchar_t *path)
+{
+ EntryHeader* pE = reinterpret_cast(m_pBuffer);
+
+ while( ! pE->IsEnd() )
+ {
+ if( pE->Match(path) )
+ {
+ m_ForRead.Init(pE);
+ FileSize = m_ForRead.GetSize();
+ return true;
+ }
+
+ pE = pE->GetNext();
+ }
+
+ return false;
+}
+
+//--------------------------------------------------------------------
+
diff --git a/trunk/CardSaveData/common/savefile/membak.h b/trunk/CardSaveData/common/savefile/membak.h
new file mode 100644
index 0000000..d3c8677
--- /dev/null
+++ b/trunk/CardSaveData/common/savefile/membak.h
@@ -0,0 +1,189 @@
+/*---------------------------------------------------------------------------*
+ Project: Horizon
+ File: irp.h
+
+ Copyright (C)2009 Nintendo Co., Ltd. All rights reserved.
+
+ These coded instructions, statements, and computer programs contain
+ proprietary information of Nintendo of America Inc. and/or Nintendo
+ Company Ltd., and are protected by Federal copyright law. They may
+ not be disclosed to third parties or copied or duplicated in any form,
+ in whole or in part, without the prior written consent of Nintendo.
+
+ $Rev$
+ *---------------------------------------------------------------------------*/
+
+#ifndef MEMBAK_H_
+#define MEMBAK_H_
+
+#include
+#include
+#include "../my_defs.h"
+#include "savefile.h"
+#include
+
+class MemBak
+{
+public:
+ s64 FileSize;
+ NN_PADDING4;
+ nn::Result LastNnResult;
+private:
+ struct EntryHeader
+ {
+ s16 nameSize;
+ NN_PADDING2;
+ s32 dataSize;
+ s32 nextOffset;
+
+ EntryHeader* GetNext()
+ {
+ return reinterpret_cast(
+ reinterpret_cast(this) + nextOffset);
+ }
+ bit8* GetDataPointer()
+ {
+ return reinterpret_cast(this + 1) + nameSize;
+ }
+ const wchar_t* GetName() const
+ {
+ return reinterpret_cast(
+ reinterpret_cast(this + 1));
+ }
+ void SetName(const wchar_t* name)
+ {
+ s32 len = std::wcslen(name);
+ nameSize = len * 2 + 2;
+ std::memcpy(this + 1, name, nameSize);
+ }
+ void SetSize(size_t size)
+ {
+ dataSize = size;
+ }
+ s32 GetSize() const
+ {
+ return dataSize;
+ }
+ void SetNext()
+ {
+ nextOffset = nn::math::RoundUp(sizeof(*this) + nameSize + dataSize, 4);
+ }
+ bool Match(const wchar_t* p)
+ {
+ return std::wcscmp(p, GetName()) == 0;
+ }
+ bool IsEnd() const
+ {
+ return nameSize == 0;
+ }
+ };
+ struct FileState
+ {
+ EntryHeader* pE;
+ s32 pos;
+
+ void Init(EntryHeader* p)
+ {
+ pE = p;
+ pos = 0;
+ }
+ void Set(const wchar_t* name, size_t size)
+ {
+ pE->SetName(name);
+ pE->SetSize(size);
+ pE->SetNext();
+ pE->GetNext()->nameSize = 0;
+ }
+ s32 GetSize() const { return pE->GetSize(); }
+ EntryHeader* GetNext()
+ {
+ return pE->GetNext();
+ }
+ bit8* GetCurrentPointer()
+ {
+ return pE->GetDataPointer() + pos;
+ }
+ s32 GetRemain() const
+ {
+ return pE->dataSize - pos;
+ }
+ void Advance(s32 size)
+ {
+ pos += size;
+ }
+ s32 Write(const void* p, size_t size)
+ {
+ s32 remain = GetRemain();
+ if( remain <= 0 )
+ {
+ return 0;
+ }
+
+ s32 copySize = nn::math::Min(remain, size);
+ std::memcpy(GetCurrentPointer(), p, copySize);
+ Advance(copySize);
+
+ return copySize;
+ }
+ s32 Read(void* p, size_t size)
+ {
+ s32 remain = GetRemain();
+ if( remain <= 0 )
+ {
+ return 0;
+ }
+
+ s32 copySize = nn::math::Min(remain, size);
+ std::memcpy(p, GetCurrentPointer(), copySize);
+ Advance(copySize);
+
+ return copySize;
+ }
+ };
+
+ tArcInfo m_ArcInfo;
+ FileState m_ForRead;
+ FileState m_ForWrite;
+
+ bool m_Exists;
+ bool m_IsMounted;
+ NN_PADDING2;
+ bit8* m_pBuffer;
+ size_t m_pBufferSize;
+ bit8* m_pBufferPos;
+ EntryHeader* m_pFind;
+
+ u32 m_NumDirEntry;
+ u32 m_NumFileEntry;
+
+public:
+ MemBak();
+ ~MemBak();
+ void Finalize();
+ myResult Create(const void* icon,size_t iconSize,u32 entryDir,u32 entryFile);
+ myResult CreateSys(const void* icon,size_t iconSize);
+ myResult Mount();
+// myResult MountSys();
+ bool IsExist();
+ void Unmount();
+ bool Delete();
+ void CloseW();
+ bool OpenW(wchar_t *path,s64 size);
+ bool OpenSysW();//b
+ void CloseSysW();//b
+// bool OpenSysR();//b
+// void CloseSysR();//b
+ s32 Write(char *buffer,size_t size);
+ bool WriteSys(tArcInfo *pinfo);
+// bool ReadSys(tArcInfo *pinfo);
+ void ResetPath();
+ s32 Read(char *buffer,size_t size);
+ void Close();
+ bool Open(wchar_t *path);
+ myResult GetPath(wchar_t *path);
+ bool GetInfo(tArcInfo *pinfo);
+};
+
+
+
+#endif
diff --git a/trunk/CardSaveData/common/savefile/savedata.cpp b/trunk/CardSaveData/common/savefile/savedata.cpp
new file mode 100644
index 0000000..550fb94
--- /dev/null
+++ b/trunk/CardSaveData/common/savefile/savedata.cpp
@@ -0,0 +1,309 @@
+#include
+#include
+#include
+#include "savedata.h"
+#include
+#include
+#include
+#include
+
+int dc_readed[MAX_LEVEL];//リード済みエントリ数
+
+const wchar_t *sdataRoot_w = L"data:/";
+#define ROOTLENGTH 6
+const char *sdataName = "data:";
+static bool IsMounted;
+wchar_t path_w[MAX_PATH_LENGTH];//パス名
+wchar_t pathu_w[MAX_LEVEL][MAX_PATH_LENGTH];//パス名履歴
+wchar_t pathw_w[MAX_PATH_LENGTH];//パス名ワーク
+
+//セーブ作成、成功時はマウント状態
+myResult SaveData::Format(tArcInfo *pinfo)
+{
+ if ( IsMounted )return RESULT_ALREADY_MOUNT;
+ LastNnResult = nn::fs::FormatCtrCardSaveData(pinfo->FileEntry,pinfo->DirEntry,pinfo->Dup);
+ if (LastNnResult.IsFailure())return RESULT_FAIL_FORMAT;
+ if ( Mount() != RESULT_OK )return RESULT_FAIL_MOUNT;
+ IsMounted = true;
+ return RESULT_OK;
+}
+
+void SaveData::ResetPath()
+{
+ s_lv=0;
+ s_serch = false;
+ wcscpy(path_w,sdataRoot_w);
+ for (int n = 0;nMAX_PATH_LENGTH - 1)return RESULT_PATH_LENGTH_OVER;
+ wcscat(path,dcEntryl.entryName);
+ return RESULT_OK;
+ }
+ }
+ }
+
+}
+
+//アンマウント
+void SaveData::Unmount()
+{
+ if(IsMounted){
+ IsMounted = false;
+ nn::fs::Unmount(sdataName);
+ }
+}
+
+//バックアップの存在チェック
+myResult SaveData::IsExist(){
+ myResult res;
+ res = Mount();
+ Unmount();
+ return res;
+}
+
+//アーカイブ情報の取得
+bool SaveData::GetInfo(tArcInfo *pinfo)
+{
+static nn::fs::DirectoryEntry dcEntryl;
+static nn::fs::Directory dcl;
+
+ if(IsMounted==false){NN_LOG("GetInfo: Not Mounted\n");return false;};
+
+ s_lv=0;
+ m_info.DirCount = 0;
+ m_info.FileCount = 0;
+ m_info.DirEntry = 0;
+ m_info.FileEntry = 0;
+ m_info.Dup = false;
+ wcscpy(path_w,sdataRoot_w);
+
+ int n;
+ int lv = 0;
+ for (n = 0;n dir/file
+bool SaveData::Open(wchar_t *path)
+{
+ wcscpy(pathw_w,sdataRoot_w);
+ wcscat(pathw_w,path);
+ LastNnResult = reader.TryInitialize(pathw_w);
+ if (LastNnResult.IsSuccess())
+ {
+ LastNnResult = reader.TryGetSize(&FileSize);
+ if (LastNnResult.IsSuccess())return true;
+ else Close();
+ }
+ return false;
+}
+
+bool SaveData::OpenW(wchar_t *path,s64 size,bool *mkdir)
+{
+ int pos,pos2;
+
+ wcscpy(path_w,sdataRoot_w);
+ wcscat(path_w,path);
+ *mkdir = false;
+ LastNnResult = nn::fs::TryCreateFile(path_w,size);
+ if(LastNnResult.IsSuccess())
+ {
+ LastNnResult = writer.TryInitialize(path_w,false);
+ return LastNnResult.IsSuccess();
+ }
+ //ディレクトリがなければディレクトリを作成
+ pos = GetPosDelmLast(path_w,ROOTLENGTH);//ファイルが存在するディレクトリ
+ if (pos <= 0)return false;//rootかパスが不正
+ wcscpy(pathw_w,path_w);//ワークにコピー
+ while (LastNnResult.IsFailure()){//ディレクトリ作成できるまで遡る
+ if(LastNnResult.GetDescription()!=nn::fs::DESCRIPTION_DBM_DIRECTORY_NOT_FOUND)return false;
+ pos2 = GetPosDelmLast(pathw_w,ROOTLENGTH);//境界位置を探す
+ if (pos2 == 0)return false;//root到達
+ pathw_w[pos2] = 0;//境界まで削除 (例) dir1/dir2/file -> dir1/dir2 -> dir1
+ LastNnResult = nn::fs::TryCreateDirectory(pathw_w);
+ }
+ //作成ディレクトリ多いと画面止まるので、作成ごとに抜ける
+ *mkdir = true; // 帰値:false で mkdir=true ならディレクトリ作成のみ
+ return false;
+}
+
+
+//ファイルライト
+s32 SaveData::Write(char *buffer,size_t size)
+{
+ s32 ct;
+ LastNnResult = writer.TryWrite(&ct,(void*)buffer,size);
+ if(LastNnResult.IsFailure())ct=0;
+ return ct;
+}
+
+//コミット
+bool SaveData::Commit()
+{
+ LastNnResult=nn::fs::CommitSaveData(sdataName);
+ return LastNnResult.IsSuccess();
+}
+
+
+
+//コンストラクタ
+SaveData::SaveData()
+{
+ IsMounted = false;
+ s_lv=0;
+ PrdCode[0] = 0;
+ m_info.DirCount = 0;
+ m_info.FileCount = 0;
+ m_info.DirEntry = 0;
+ m_info.FileEntry = 0;
+ wcscpy(path_w,sdataRoot_w);
+ pPathTop = (wchar_t*)((u32)&path_w+strlen(sdataName)*2+2);
+
+}
+
+void SaveData::Finalize()
+{
+ Close();
+ Unmount();
+}
+//デストラクタ
+SaveData::~SaveData()
+{
+ Finalize();
+}
+
+
+
diff --git a/trunk/CardSaveData/common/savefile/savedata.h b/trunk/CardSaveData/common/savefile/savedata.h
new file mode 100644
index 0000000..4b15aaa
--- /dev/null
+++ b/trunk/CardSaveData/common/savefile/savedata.h
@@ -0,0 +1,65 @@
+/*---------------------------------------------------------------------------*
+ Project: Horizon
+ File: irp.h
+
+ Copyright (C)2009 Nintendo Co., Ltd. All rights reserved.
+
+ These coded instructions, statements, and computer programs contain
+ proprietary information of Nintendo of America Inc. and/or Nintendo
+ Company Ltd., and are protected by Federal copyright law. They may
+ not be disclosed to third parties or copied or duplicated in any form,
+ in whole or in part, without the prior written consent of Nintendo.
+
+ $Rev$
+ *---------------------------------------------------------------------------*/
+
+#ifndef SAVEDATA_H_
+#define SAVEDATA_H_
+
+#include
+#include
+//#include
+#include "../my_defs.h"
+#include "savefile.h"
+
+
+class SaveData
+{
+public:
+ s64 FileSize;
+ nn::Result LastNnResult;
+ char PrdCode[20];
+private:
+ nn::fs::FileReader reader;
+ nn::fs::FileWriter writer;
+ int s_lv;
+ wchar_t *pPathTop;
+ tArcInfo m_info;
+ bool s_serch;
+ u8 pad[3];//padding
+public:
+ SaveData();
+ ~SaveData();
+ myResult Mount();
+ void Unmount();
+ myResult GetPath(wchar_t *path);
+ void ResetPath();
+ bool Open(wchar_t *path);
+ void Finalize();
+ void Close();
+ void CloseW();
+ s32 Read(char *buffer,size_t size);
+ myResult IsExist();
+ bool GetInfo(tArcInfo *pinfo);
+ myResult Format(tArcInfo *pinfo);
+ bool OpenW(wchar_t *path,s64 size,bool *mkdir);
+ s32 Write(char *buffer,size_t size);
+ bool Commit();
+ bool GetPrdCode();
+#ifdef USE_SYS_SAVE
+ void Delete();
+#endif
+};
+
+
+#endif
diff --git a/trunk/CardSaveData/common/savefile/savefile.cpp b/trunk/CardSaveData/common/savefile/savefile.cpp
new file mode 100644
index 0000000..8b050d2
--- /dev/null
+++ b/trunk/CardSaveData/common/savefile/savefile.cpp
@@ -0,0 +1,18 @@
+//ʊ
+
+#include "savefile.h"
+
+//I[OŌE("/"=0x2f)ʒuԂ
+//top :͈͂̐擪w
+int GetPosDelmLast(wchar_t *s,int top)
+{
+ size_t i = wcslen(s);
+ if (i < top)return -1;
+ if (i ==top)return 0;
+ i--;
+ while(i > top-1){
+ if (s[i]==L'/')return i;
+ i--;
+ }
+ return -1;
+}
diff --git a/trunk/CardSaveData/common/savefile/savefile.h b/trunk/CardSaveData/common/savefile/savefile.h
new file mode 100644
index 0000000..7bc069c
--- /dev/null
+++ b/trunk/CardSaveData/common/savefile/savefile.h
@@ -0,0 +1,41 @@
+#ifndef SAVEFILE_H_
+#define SAVEFILE_H_
+
+#include
+#include
+#include
+
+//APIgpăA[JCu擾
+#define INFO_API_USE 1
+
+//J[h̕ςɃVXeZ[ugp(APIΉ܂ł̎b)
+//#define USE_SYS_SAVE 1
+
+//SDۑ
+//#define BKUP_NOTMEM 1
+
+int GetPosDelmLast(wchar_t *s,int top);
+
+//t@C̃o[W
+#define INFO_VERSION 1
+
+//SDobNAbvɓ
+//ύX̍ۂ͌݊Ƃ悤lĵ݂Ƃ
+typedef struct{
+ u32 DirEntry,FileEntry;
+ u32 DirCount,FileCount;
+ bool Dup;
+ u8 Ver;//o[W
+ char Pcode[20];//product code save,exsaveNXPrdCodeTCYȂ
+ u8 padding[3];//pfBO
+}tArcInfo;
+
+//pX :SDK̓A[JCu253
+//őI[oĂSzȂ悤傫ƂĂ
+#define MAX_PATH_LENGTH 512
+//pX擾̊Kw
+//ĤŖʂɑ傫ȂAŒZ(Ⴆ"/a")Q128ő
+#define MAX_LEVEL 128
+
+
+#endif
diff --git a/trunk/CardSaveData/common/savefile/sdmc.cpp b/trunk/CardSaveData/common/savefile/sdmc.cpp
new file mode 100644
index 0000000..fe27b8b
--- /dev/null
+++ b/trunk/CardSaveData/common/savefile/sdmc.cpp
@@ -0,0 +1,355 @@
+/*
+
+ Horizon/tools/SaveDataFiler で読めるファイルを作成
+
+*/
+
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+//#include <../fs/fs_ResultPrivate.h>
+#include "sdmc.h"
+
+const char *sdmcName = "sdmc:";
+#define PATHLENGTH_MAX_SD 512
+
+wchar_t sdmcRoot_w[PATHLENGTH_MAX_SD];//sdmc:/filer/UserSaveData/YearMtDtHrMtSc/00000000
+#define ROOTLENGTH_SD 49
+wchar_t fp_path[PATHLENGTH_MAX_SD];
+wchar_t ti_path[PATHLENGTH_MAX_SD];
+wchar_t expath_w[PATHLENGTH_MAX_SD];//パス名
+//wchar_t expathu_w[100][PATHLENGTH_MAX_SD];//上層パス名
+wchar_t expathw_w[PATHLENGTH_MAX_SD];//パス名ワーク
+wchar_t latestPath_w[PATHLENGTH_MAX_SD];//sdmc:/filer/UserSaveData/YearMtDtHrMtSc
+bool created;
+
+//SDKツールのSaveFilerのフォーマットに合わせる
+//------------ sources\tools\NandFiler\nandf_Dialog.h 参照
+const wchar_t SDMC_ROOT_DIR_NAME[] = L"sdmc:/filer";
+
+struct FormatParameters
+{
+ size_t m_LimitSize;
+ size_t m_MaxDir;
+ size_t m_MaxFile;
+ s32 m_IconSize;
+ bit8 *m_pIconData;
+ bool m_Duplicate;
+
+ FormatParameters()
+ : m_LimitSize(0),m_IconSize(0), m_pIconData(0) {}
+ //オリジナルはLinitSize不定
+};
+
+struct AdditionalInfo
+{
+ bit64 m_Version;
+ bit64 m_Id;
+ bit64 m_Reserved[128];//オリジナルは乱数埋
+ AdditionalInfo()
+ : m_Version(0), m_Id(0) {}
+};
+//--------------------------- nandf_util.cpp 参照
+std::wstring Sdmc::GetDateName()
+{
+ nn::fnd::DateTime tm = nn::fnd::DateTime::GetNow();
+
+ std::wostringstream name;
+ name << std::setw(4) << std::setfill(L'0') << tm.GetYear()
+ << std::setw(2) << std::setfill(L'0') << tm.GetMonth()
+ << std::setw(2) << std::setfill(L'0') << tm.GetDay()
+ << std::setw(2) << std::setfill(L'0') << tm.GetHour()
+ << std::setw(2) << std::setfill(L'0') << tm.GetMinute()
+ << std::setw(2) << std::setfill(L'0') << tm.GetSecond();
+
+
+ //char型 :表示で使う
+ wcstombs(DirName, name.str().c_str(), 14);
+ DirName[14] = 0;
+ return name.str();
+}
+
+nn::Result CreateDirIfNotExists(const wchar_t *dirName)
+{
+ nn::fs::Directory dir;
+ nn::Result result = dir.TryInitialize(dirName);
+ NN_LOG("%d",result.GetDescription());
+ if (!nn::fs::ResultAlreadyExists::Includes(result) && result.IsFailure())
+ {
+ result = nn::fs::TryCreateDirectory(dirName);
+ }
+ dir.Finalize();
+ return result;
+}
+
+bit64 ChangeId(bit64 id, bit64 key)
+{
+ return id ^ key ^ 0xce8a4d52f7105339;
+}
+
+//-----------------------------
+
+
+//SDMCにライト専用アーカイブ
+//ディレクトリもファイルも読めない
+
+//直前のCreateで作成したDateTimeフォルダ削除
+bool Sdmc::Delete()
+{
+ if (created==false)return true;
+ if (Mount() == RESULT_FAIL_MOUNT)return false;
+ LastNnResult = nn::fs::TryDeleteDirectoryRecursively(latestPath_w);
+ Unmount();
+ return LastNnResult.IsSuccess();
+}
+
+//全削除
+bool Sdmc::DeleteAll()
+{
+ if (Mount() == RESULT_FAIL_MOUNT)return false;
+ LastNnResult = nn::fs::TryDeleteDirectoryRecursively(SDMC_ROOT_DIR_NAME);
+ Unmount();
+ return LastNnResult.IsSuccess();
+}
+
+
+//保存先のディレクトリ作成
+//成功時はマウント状態
+bool Sdmc::Create()
+{
+ std::wostringstream woss;
+ created = false;
+ if (Mount() == RESULT_FAIL_MOUNT)return false;
+
+ LastNnResult = CreateDirIfNotExists(SDMC_ROOT_DIR_NAME);//sdmc:/filer
+ if (LastNnResult.IsSuccess())
+ {
+ woss << SDMC_ROOT_DIR_NAME << L"/" << L"UserSaveData";//sdmc:/filer/UserSaveData
+ LastNnResult = CreateDirIfNotExists(woss.str().c_str());
+ if (LastNnResult.IsSuccess())
+ {
+ DateDirName = GetDateName();
+ woss << L"/" << DateDirName;//sdmc:/filer/UserSaveData/YearMtDtHrMtSc
+ LastNnResult = nn::fs::TryCreateDirectory(woss.str().c_str());
+ if (LastNnResult.IsSuccess())
+ {
+ wcscpy(latestPath_w,woss.str().c_str());
+ created = true;//日時ディレクトリ作成フラグ
+ //コピー先ルート
+ woss << L"/" << "00000000";//sdmc:/filer/UserSaveData/YearMtDtHrMtSc/00000000
+ LastNnResult = nn::fs::TryCreateDirectory(woss.str().c_str());
+ if (LastNnResult.IsSuccess())
+ {
+ woss << L"/";//sdmc:/filer/UserSaveData/YearMtDtHrMtSc/00000000/
+ wcscpy(sdmcRoot_w,woss.str().c_str());
+ return true;
+ }
+ }
+ }
+ }
+ Unmount();
+ return false;
+}
+//マウント
+myResult Sdmc::Mount()
+{
+ if ( IsMounted )return RESULT_ALREADY_MOUNT;
+ LastNnResult = nn::fs::MountSdmc(sdmcName);
+ if (LastNnResult.IsFailure()){
+ return RESULT_FAIL_MOUNT;
+ }
+ IsMounted = true;
+ return RESULT_OK;
+}
+void Sdmc::Unmount()
+{
+ IsMounted = false;
+ nn::fs::Unmount(sdmcName);
+}
+//ライト属性ファイルを閉じる
+void Sdmc::CloseW()
+{
+ writer.Finalize();
+}
+
+//ファイルライト
+s32 Sdmc::Write(char *buffer,size_t size)
+{
+ s32 ct;
+ LastNnResult = writer.TryWrite(&ct,(void*)buffer,size);
+ if(LastNnResult.IsFailure())ct=0;
+ return ct;
+}
+
+
+
+//ライト属性ファイルを開く
+bool Sdmc::OpenW(wchar_t *path,s64 size)
+{
+ int pos,pos2;
+
+ wcscpy(expath_w,sdmcRoot_w);
+ wcscat(expath_w,path);
+ while(1){
+ LastNnResult = nn::fs::TryCreateFile(expath_w,size);
+ if(LastNnResult.IsSuccess())break;
+ NN_LOG("%d\n",LastNnResult.GetDescription());
+ //ディレクトリがなければディレクトリを作成
+ pos = GetPosDelmLast(expath_w,ROOTLENGTH_SD);//ファイルが存在するディレクトリ
+ if (pos <= 0)return false;//rootかパスが不正
+ wcscpy(expathw_w,expath_w);//ワークにコピー
+ while (LastNnResult.IsFailure())
+ {//ディレクトリ作成できるまで遡る
+ // if(LastNnResult.GetDescription()!=nn::fs::DESCRIPTION_DBM_DIRECTORY_NOT_FOUND)return false;
+ pos2 = GetPosDelmLast(expathw_w,ROOTLENGTH_SD);//境界位置を探す
+ if (pos2 == 0)return false;//root到達
+ expathw_w[pos2] = 0;//境界まで削除 (例) dir1/dir2/file -> dir1/dir2 -> dir1
+ LastNnResult = nn::fs::TryCreateDirectory(expathw_w);
+ }
+ }
+ LastNnResult = writer.TryInitialize(expath_w,false);
+ return LastNnResult.IsSuccess();
+}
+
+
+//情報ファイル
+//
+bool Sdmc::WriteSys(tArcInfo *ifo)
+{//SaveFilerで読むためのファイル
+ std::wostringstream woss;
+ if (Mount() == RESULT_FAIL_MOUNT)return false;
+ woss << latestPath_w << L"/00000000";
+ // FormatParameter を保存
+ LastNnResult = writer.TryInitialize( (woss.str() + L".dat").c_str(), true);
+ if (LastNnResult.IsFailure()){Unmount();return false;}
+ s32 size;
+ FormatParameters Fparam;
+ Fparam.m_MaxDir = ifo->DirEntry;
+ Fparam.m_MaxFile = ifo->FileEntry;
+ Fparam.m_Duplicate = ifo->Dup;
+ LastNnResult = writer.TryWrite(&size, &Fparam, sizeof(FormatParameters));
+ if (LastNnResult.IsFailure()){Unmount();return false;}
+ LastNnResult = writer.TryFlush();
+ if (LastNnResult.IsFailure()){Unmount();return false;}
+ writer.Finalize();
+ //AdditionalInfoを保存
+ AdditionalInfo Ainfo;
+ LastNnResult = writer.TryInitialize((woss.str() + L"_.dat").c_str(), true);
+ if (LastNnResult.IsFailure()){ Unmount();return false;}
+ Ainfo.m_Version = 0;
+ Ainfo.m_Id = ChangeId(Ainfo.m_Id, static_cast(std::wcstoll(DateDirName.c_str(), NULL, 10)));
+ LastNnResult = writer.TryWrite(&size, &Ainfo, sizeof(AdditionalInfo));
+ if (LastNnResult.IsFailure()){ Unmount();return false;}
+ LastNnResult = writer.TryFlush();
+ if (LastNnResult.IsFailure()){ Unmount();return false;}
+ writer.Finalize();
+//ツールが使うファイル
+ std::wostringstream woss2;
+ woss2 << latestPath_w << L"/toolinfo.dat";
+ LastNnResult = writer.TryInitialize(woss2.str().c_str(), true);
+ if (LastNnResult.IsFailure()){ Unmount();return false;}
+ LastNnResult = writer.TryWrite(&size, ifo, sizeof(tArcInfo));
+ if (LastNnResult.IsFailure()){ Unmount();return false;}
+ LastNnResult = writer.TryFlush();
+ if (LastNnResult.IsFailure()){ Unmount();return false;}
+ writer.Finalize();
+ Unmount();
+
+ woss << L".dat";
+ wcscpy(fp_path,woss.str().c_str());
+ wcscpy(ti_path,woss2.str().c_str());
+
+ return true;
+}
+
+
+//アーカイブ情報の取得
+bool Sdmc::GetInfo(tArcInfo *pinfo)
+{
+ s32 size;
+
+ if (Mount() == RESULT_FAIL_MOUNT)return false;
+
+ // FormatParameter .. SaveFiler用ファイル
+ // FormatParameter を保存
+ LastNnResult = reader.TryInitialize( fp_path);
+ if (LastNnResult.IsFailure()){Unmount();return false;}
+ FormatParameters Fparam;
+ LastNnResult = reader.TryRead(&size, &Fparam, sizeof(FormatParameters));
+ if (LastNnResult.IsFailure()){Unmount();return false;}
+ reader.Finalize();
+
+ //ツール情報
+ LastNnResult = reader.TryInitialize( ti_path);
+ if (LastNnResult.IsFailure()){ Unmount();return false;}
+ LastNnResult = reader.TryRead(&size, &m_info, sizeof(tArcInfo));
+ if (LastNnResult.IsFailure()){ Unmount();return false;}
+ reader.Finalize();
+
+ //両ファイル共通パラメータのチェック
+ if((Fparam.m_MaxDir != m_info.DirEntry) ||
+ (Fparam.m_MaxFile != m_info.FileEntry) ||
+ (Fparam.m_Duplicate != m_info.Dup))return false;
+
+ *pinfo = m_info;
+ return true;
+
+}
+
+
+//ファイルを開く
+//パス指定はルート以降
+//(ex)data:/dir/file -> dir/file
+bool Sdmc::Open(wchar_t *path)
+{
+ wcscpy(expathw_w,sdmcRoot_w);
+ wcscat(expathw_w,path);
+ LastNnResult = reader.TryInitialize(expathw_w);
+ if (LastNnResult.IsSuccess())
+ {
+ LastNnResult = reader.TryGetSize(&FileSize);
+ if (LastNnResult.IsSuccess())return true;
+ else Close();
+ }
+ return false;
+}
+
+
+void Sdmc::Close()
+{
+ reader.Finalize();
+}
+
+//ファイルリード
+s32 Sdmc::Read(char *buffer,size_t size)
+{
+ //if (IsMounted==false)return 0;
+ s32 ct;
+ LastNnResult = reader.TryRead(&ct,(void*)buffer,size);
+ if(LastNnResult.IsFailure())ct=0;
+ return ct;
+}
+
+
+//コンストラクタ
+Sdmc::Sdmc()
+{
+ IsMounted = false;
+}
+
+void Sdmc::Finalize()
+{
+ CloseW();
+ Unmount();
+}
+//デストラクタ
+Sdmc::~Sdmc()
+{
+ Finalize();
+}
+
diff --git a/trunk/CardSaveData/common/savefile/sdmc.h b/trunk/CardSaveData/common/savefile/sdmc.h
new file mode 100644
index 0000000..bb55b90
--- /dev/null
+++ b/trunk/CardSaveData/common/savefile/sdmc.h
@@ -0,0 +1,72 @@
+/*---------------------------------------------------------------------------*
+ Project: Horizon
+ File: irp.h
+
+ Copyright (C)2009 Nintendo Co., Ltd. All rights reserved.
+
+ These coded instructions, statements, and computer programs contain
+ proprietary information of Nintendo of America Inc. and/or Nintendo
+ Company Ltd., and are protected by Federal copyright law. They may
+ not be disclosed to third parties or copied or duplicated in any form,
+ in whole or in part, without the prior written consent of Nintendo.
+
+ $Rev$
+ *---------------------------------------------------------------------------*/
+
+#ifndef sdmc_H_
+#define sdmc_H_
+
+#include
+#include
+#include
+#include "../my_defs.h"
+#include "savefile.h"
+
+class Sdmc
+{
+public:
+ s64 FileSize;
+ nn::Result LastNnResult;
+ //std::wstring DateDirName;
+ char DirName[16];
+private:
+ std::wstring GetDateName();
+ std::wstring DateDirName;
+ nn::fs::FileReader reader;
+ nn::fs::FileWriter writer;
+ //wchar_t *pPathTop;
+ tArcInfo m_info;
+ //int s_lv;
+ int exrootlen;
+ bool IsMounted;
+ //bool s_serch;
+public:
+ Sdmc();
+ ~Sdmc();
+ void Finalize();
+ bool Create();
+ myResult Mount();
+ myResult MountSys();
+ void Unmount();
+ bool Delete();
+ bool DeleteAll();
+ void CloseW();
+ bool OpenW(wchar_t *path,s64 size);
+// bool OpenSysW();//暫定
+// void CloseSysW();//暫定
+// bool OpenSysR();//暫定
+// void CloseSysR();//暫定
+ s32 Write(char *buffer,size_t size);
+ bool WriteSys(tArcInfo *ifo);
+// bool ReadSys(tArcInfo *pinfo);
+ //void ResetPath();
+ s32 Read(char *buffer,size_t size);
+ void Close();
+ bool Open(wchar_t *path);
+ //myResult GetPath(wchar_t *path);
+ bool GetInfo(tArcInfo *pinfo);
+};
+
+
+
+#endif
diff --git a/trunk/CardSaveData/common/shfnt.cpp b/trunk/CardSaveData/common/shfnt.cpp
new file mode 100644
index 0000000..65ca877
--- /dev/null
+++ b/trunk/CardSaveData/common/shfnt.cpp
@@ -0,0 +1,368 @@
+
+#include
+#include
+#include
+#include
+#include
+#include
+
+#include "demo.h"
+
+const char s_ShaderBinaryFilePath[] = "rom:/nnfont_RectDrawerShader.shbin";
+
+extern nn::fnd::ExpHeap appHeap;
+
+//---------------------------------------------------------------------------
+//! @brief シェーダの初期化を行います。
+//!
+//! @param[in,out] pResource 描画用リソースを管理するオブジェクトへのポインタ。
+//---------------------------------------------------------------------------
+void*
+InitShaders(nn::font::RectDrawer* pDrawer)
+{
+ const size_t ROMFS_BUFFER_SIZE = 1024 * 64;
+ static char buffer[ROMFS_BUFFER_SIZE];
+
+ nn::fs::MountRom(16, 16, buffer, ROMFS_BUFFER_SIZE);
+ nn::fs::FileReader shaderReader(s_ShaderBinaryFilePath);
+
+ const u32 fileSize = (u32)shaderReader.GetSize();
+
+ void* shaderBinary = appHeap.Allocate(fileSize);
+ NN_NULL_ASSERT(shaderBinary);
+
+ shaderReader.Read(shaderBinary, fileSize);
+
+ const u32 vtxBufCmdBufSize =
+ nn::font::RectDrawer::GetVertexBufferCommandBufferSize(shaderBinary, fileSize);
+ void *const vtxBufCmdBuf = appHeap.Allocate(vtxBufCmdBufSize);
+ NN_NULL_ASSERT(vtxBufCmdBuf);
+ pDrawer->Initialize(vtxBufCmdBuf, shaderBinary, fileSize);
+
+ appHeap.Free(shaderBinary);
+
+ shaderReader.Finalize();
+ nn::fs::Unmount("rom:");
+ return vtxBufCmdBuf;
+}
+/*---------------------------------------------------------------------------*
+ @brief グラフィックスの初期設定を行います。
+ *---------------------------------------------------------------------------*/
+void
+InitGX()
+{
+ glClearColor(0.3f, 0.3f, 0.3f, 1.0f);
+}
+
+
+//---------------------------------------------------------------------------
+//! @brief 描画の初期設定を行います。
+//!
+//! @param[in] width 画面の幅。
+//! @param[in] height 画面の高さ。
+//---------------------------------------------------------------------------
+void
+InitDraw(
+ int width,
+ int height
+)
+{
+ // カラーバッファ情報
+ // LCDの向きに合わせて、幅と高さを入れ替えています。
+ const nn::font::ColorBufferInfo colBufInfo = { width, height, PICA_DATA_DEPTH24_STENCIL8_EXT };
+
+ const u32 screenSettingCommands[] =
+ {
+
+ // ビューポートの設定
+ NN_FONT_CMD_SET_VIEWPORT( 0, 0, colBufInfo.width, colBufInfo.height ),
+
+ // シザー処理を無効
+ NN_FONT_CMD_SET_DISABLE_SCISSOR( colBufInfo ),
+
+ // wバッファの無効化
+ // デプスレンジの設定
+ // ポリゴンオフセットの無効化
+ NN_FONT_CMD_SET_WBUFFER_DEPTHRANGE_POLYGONOFFSET(
+ 0.0f, // wScale : 0.0 でWバッファが無効
+ 0.0f, // depth range near
+ 1.0f, // depth range far
+ 0, // polygon offset units : 0.0 で ポリゴンオフセットが無効
+ colBufInfo),
+ };
+
+ nngxAdd3DCommand(screenSettingCommands, sizeof(screenSettingCommands), true);
+
+ static const u32 s_InitCommands[] =
+ {
+ // カリングを無効
+ NN_FONT_CMD_SET_CULL_FACE( NN_FONT_CMD_CULL_FACE_DISABLE ),
+
+ // ステンシルテストを無効
+ NN_FONT_CMD_SET_DISABLE_STENCIL_TEST(),
+
+ // デプステストを無効
+ // カラーバッファの全ての成分を書き込み可
+ NN_FONT_CMD_SET_DEPTH_FUNC_COLOR_MASK(
+ false, // isDepthTestEnabled
+ 0, // depthFunc
+ true, // depthMask
+ true, // red
+ true, // green
+ true, // blue
+ true), // alpha
+
+ // アーリーデプステストを無効
+ NN_FONT_CMD_SET_ENABLE_EARLY_DEPTH_TEST( false ),
+
+ // フレームバッファアクセス制御
+ NN_FONT_CMD_SET_FBACCESS(
+ true, // colorRead
+ true, // colorWrite
+ false, // depthRead
+ false, // depthWrite
+ false, // stencilRead
+ false), // stencilWrite
+ };
+
+ nngxAdd3DCommand(s_InitCommands, sizeof(s_InitCommands), true);
+}
+
+//---------------------------------------------------------------------------
+//! @brief ResFontを構築します。
+//!
+//! @param[out] pFont 構築するフォントへのポインタ。
+//! @param[in] filePath ロードするフォントリソースファイル名。
+//!
+//! @return ResFont構築の成否を返します。
+//---------------------------------------------------------------------------
+bool
+InitFont(
+ nn::font::ResFont* pFont,
+ void* pBuffer
+)
+{
+ // フォントリソースをセットします
+ bool bSuccess = pFont->SetResource(pBuffer);
+
+ // 描画用バッファを設定します。
+ const u32 drawBufferSize = nn::font::ResFont::GetDrawBufferSize(pBuffer);
+ void* drawBuffer = appHeap.Allocate(drawBufferSize, 4);
+ pFont->SetDrawBuffer(drawBuffer);
+ NN_NULL_ASSERT(drawBuffer);
+
+ return bSuccess;
+}
+
+//---------------------------------------------------------------------------
+//! @brief ResFontを破棄します。
+//!
+//! @param[in] pFont 破棄するフォントへのポインタ。
+//---------------------------------------------------------------------------
+void
+CleanupFont(nn::font::ResFont* pFont)
+{
+ // 描画用バッファの無効化
+ // 描画用バッファがセットされているなら 構築時に SetDrawBuffer に渡したバッファへの
+ // ポインタが返ってきます。
+ void *const drawBuffer = pFont->SetDrawBuffer(NULL);
+ if (drawBuffer != NULL)
+ {
+ appHeap.Free(drawBuffer);
+ }
+}
+
+//---------------------------------------------------------------------------
+//! @brief 表示文字列用バッファを確保します。
+//!
+//! @param[in] charMax 表示する文字列の最大文字数。
+//!
+//! @return 確保した表示文字列用バッファへのポインタを返します。
+//---------------------------------------------------------------------------
+nn::font::DispStringBuffer*
+AllocDispStringBuffer(int charMax)
+{
+ const u32 DrawBufferSize = nn::font::CharWriter::GetDispStringBufferSize(charMax);
+ void *const bufMem = appHeap.Allocate(DrawBufferSize);
+ NN_NULL_ASSERT(bufMem);
+
+ return nn::font::CharWriter::InitDispStringBuffer(bufMem, charMax);
+}
+
+//---------------------------------------------------------------------------
+//! @brief 文字列表示用にモデルビュー行列と射影行列を設定します。
+//!
+//! @param[in] pDrawer RectDrawerオブジェクトへのポインタ。
+//! @param[in] width 画面の幅。
+//! @param[in] height 画面の高さ。
+//---------------------------------------------------------------------------
+void
+SetupTextCamera(
+ nn::font::RectDrawer* pDrawer,
+ int width,
+ int height
+)
+{
+ // 射影行列を正射影に設定
+ {
+ // 左上原点とし、Y軸とZ軸の向きが逆になるように設定します。
+ nn::math::MTX44 proj;
+ f32 znear = 0.0f;
+ f32 zfar = -1.0f;
+ f32 t = 0;
+ f32 b = static_cast(width);
+ f32 l = 0;
+ f32 r = static_cast(height);
+ nn::math::MTX44OrthoPivot(&proj, l, r, b, t, znear, zfar, nn::math::PIVOT_UPSIDE_TO_TOP);
+ pDrawer->SetProjectionMtx(proj);
+ }
+
+ // モデルビュー行列を単位行列に設定
+ {
+ nn::math::MTX34 mv;
+ nn::math::MTX34Identity(&mv);
+ pDrawer->SetViewMtxForText(mv);
+ }
+}
+
+nn::font::RectDrawer drawer;
+void *drawerBuf;
+nn::font::DispStringBuffer *pDrawStringBuf0;
+nn::font::DispStringBuffer *pDrawStringBuf1;
+nn::font::ResFont font;
+nn::font::TextWriter writer;
+//---------------------------------------------------------------------------
+//! @brief ASCII文字列を描画します。
+//---------------------------------------------------------------------------
+void shf_DrawText_0( u16 x,u16 y,char *s)
+{
+ writer.SetCursor(x, y);
+
+ writer.StartPrint();
+ (void)writer.Print(s);
+ writer.EndPrint();
+ drawer.BuildTextCommand(&writer);
+
+
+ drawer.DrawBegin();
+
+ SetupTextCamera(&drawer, NN_GX_DISPLAY0_WIDTH, NN_GX_DISPLAY0_HEIGHT);
+ writer.UseCommandBuffer();
+
+ drawer.DrawEnd();
+}
+
+void shf_DrawText_1( u16 x,u16 y,char *s)
+{
+ writer.SetCursor(x, y);
+
+ writer.StartPrint();
+ (void)writer.Print(s);
+ writer.EndPrint();
+ drawer.BuildTextCommand(&writer);
+
+
+ drawer.DrawBegin();
+
+ SetupTextCamera(&drawer, NN_GX_DISPLAY1_WIDTH, NN_GX_DISPLAY1_HEIGHT);
+ writer.UseCommandBuffer();
+
+ drawer.DrawEnd();
+}
+
+
+void shf_SetSize(f32 sz)
+{
+ writer.SetScale(sz/14,sz/20);
+}
+
+void shf_SetScale(f32 h,f32 v)
+{
+ writer.SetScale(h,v);
+}
+
+
+void shf_SetFontSize(f32 sz)
+{
+ writer.SetFontSize(sz);
+}
+
+f32 shf_GetFontWidth()
+{
+ return writer.GetFontWidth();
+}
+
+f32 shf_GetFontHeight()
+{
+ return writer.GetFontHeight();
+}
+
+
+void shf_SetColor(f32 r,f32 g,f32 b,f32 a)
+{
+ writer.SetTextColor(nn::util::FloatColor(r,g,b,a));
+}
+
+//初期化
+//AppHeap確保、RenderSystem.Inititの後に呼ぶ
+void SharedFontInit()
+{
+
+ InitGX();
+
+ // 共有フォントの初期化
+ NN_UTIL_PANIC_IF_FAILED(nn::pl::InitializeSharedFont());
+
+ // 共有フォントのロードが完了するまで待機
+ while (nn::pl::GetSharedFontLoadState() != nn::pl::SHARED_FONT_LOAD_STATE_LOADED)
+ {
+ // 共有フォントのロードに失敗していないか確認
+ if (nn::pl::GetSharedFontLoadState() == nn::pl::SHARED_FONT_LOAD_STATE_FAILED)
+ {
+ NN_TPANIC_("failed to load shared font!\n");
+ }
+ nn::os::Thread::Sleep(nn::fnd::TimeSpan::FromMilliSeconds(1));
+ }
+
+ // 共有フォントの種類を取得
+ //nn::pl::SharedFontType sharedFontType = nn::pl::GetSharedFontType();
+
+ // 共有フォントデータのアドレスを取得
+ void* pFontBuffer = nn::pl::GetSharedFontAddress();
+
+ InitFont(&font, pFontBuffer);
+
+ // 描画リソースの構築
+ drawerBuf = InitShaders(&drawer);
+
+ // 描画文字列用バッファの確保
+ pDrawStringBuf0 = AllocDispStringBuffer(1024);
+ pDrawStringBuf1 = AllocDispStringBuffer(512);
+
+ writer.SetDispStringBuffer(pDrawStringBuf0);
+ writer.SetFont(&font);
+ SetupTextCamera(&drawer, NN_GX_DISPLAY0_WIDTH, NN_GX_DISPLAY0_HEIGHT);
+
+}
+
+
+void SharedFontFinalize()
+{
+ drawer.Finalize();
+
+ // 描画リソースの破棄
+ appHeap.Free(drawerBuf);
+
+ // フォントの破棄
+ CleanupFont(&font);
+
+ // 描画文字列用バッファの解放
+ appHeap.Free(pDrawStringBuf1);
+ appHeap.Free(pDrawStringBuf0);
+
+}
+
+
+/*---------------------------------------------------------------------------*
+ End of file
+ *---------------------------------------------------------------------------*/
diff --git a/trunk/CardSaveData/common/shfnt.h b/trunk/CardSaveData/common/shfnt.h
new file mode 100644
index 0000000..e168087
--- /dev/null
+++ b/trunk/CardSaveData/common/shfnt.h
@@ -0,0 +1,30 @@
+/*---------------------------------------------------------------------------*
+ Project: Horizon
+ File: irp.h
+
+ Copyright (C)2009 Nintendo Co., Ltd. All rights reserved.
+
+ These coded instructions, statements, and computer programs contain
+ proprietary information of Nintendo of America Inc. and/or Nintendo
+ Company Ltd., and are protected by Federal copyright law. They may
+ not be disclosed to third parties or copied or duplicated in any form,
+ in whole or in part, without the prior written consent of Nintendo.
+
+ $Rev$
+ *---------------------------------------------------------------------------*/
+
+#ifndef GUI_SHFNT_H_
+#define GUI_SHFNT_H_
+
+void SharedFontInit();
+void SharedFontFinalize();
+void shf_DrawText_0(u16 x,u16 y,char* s);
+void shf_DrawText_1(u16 x,u16 y,char* s);
+void shf_SetSize(f32 sz);
+void shf_SetScale(f32 h,f32 v);
+void shf_SetColor(f32 r,f32 g,f32 b,f32 a);
+void shf_SetFontSize(f32 sz);
+f32 shf_GetFontWidth();
+f32 shf_GetFontHeight();
+
+#endif
diff --git a/trunk/CardSaveData/common/sleep.cpp b/trunk/CardSaveData/common/sleep.cpp
new file mode 100644
index 0000000..67d32cc
--- /dev/null
+++ b/trunk/CardSaveData/common/sleep.cpp
@@ -0,0 +1,110 @@
+/*---------------------------------------------------------------------------*
+ Project: Horizon
+ File: sleep.cpp
+
+ Copyright (C)2010 Nintendo Co., Ltd. All rights reserved.
+
+ These coded instructions, statements, and computer programs contain
+ proprietary information of Nintendo of America Inc. and/or Nintendo
+ Company Ltd., and are protected by Federal copyright law. They may
+ not be disclosed to third parties or copied or duplicated in any form,
+ in whole or in part, without the prior written consent of Nintendo.
+
+ $Rev$
+ *---------------------------------------------------------------------------*/
+
+#include
+
+#include "sleep.h"
+
+//extern nn::os::CriticalSection g_SleepCS;
+extern nn::os::LightEvent g_TransitionEvent;
+extern nn::os::LightEvent g_AwakeEvent;
+
+volatile bool SleepHandler::s_IsAfterWakeUp = false;
+
+/*------------------------------------------------------------------------*/
+void SleepHandler::Initialize( void )
+{
+ nn::applet::SetSleepQueryCallback(SleepQueryCallback, 0);
+ nn::applet::SetAwakeCallback(AwakeCallback, 0);
+// nn::applet::SetSleepCancelCallback(NULL, 0); // CancelCallback は使わないことを推奨します
+}
+
+/*------------------------------------------------------------------------*/
+void SleepHandler::Finalize( void )
+{
+ nn::applet::SetSleepQueryCallback(NULL, 0);
+ nn::applet::SetAwakeCallback(NULL, 0);
+
+ nn::applet::DisableSleep();
+}
+
+/*------------------------------------------------------------------------*
+ システムスリープの指示が来ているかどうかを返します。
+ *------------------------------------------------------------------------*/
+bool SleepHandler::IsSleepRequested( void )
+{
+ if ( nn::applet::IsExpectedToReplySleepQuery() )
+ return true;
+
+ return false;
+}
+
+/*------------------------------------------------------------------------*
+ 本体スリープ状態に移行させるための処理を行います。
+ グラフィックスなどの処理がスリープに入っても問題ない
+ 適切なタイミングで呼び出す必要があります。
+ *------------------------------------------------------------------------*/
+void SleepHandler::SleepSystem( void )
+{
+ // SleepHandler::IsSleepRequested() == true における呼び出しが前提
+
+ // 何らかの理由で SleepQuery に対して REJECT を返す場合は、ここで判定して
+ // REJECT を返し、この関数を抜ける
+
+ // ファイルシステム処理中はスリープをしない
+ //if ( g_SleepCS.TryEnter() )
+ {
+ // スリープ前処理
+
+ nn::applet::ReplySleepQuery(nn::applet::REPLY_ACCEPT);
+
+ g_AwakeEvent.Wait();
+
+ // スリープ復帰時の処理
+
+ // g_SleepCS.Leave();
+ }
+}
+
+/*------------------------------------------------------------------------*
+ スリープ問い合わせ時に呼ばれるコールバック
+ *------------------------------------------------------------------------*/
+AppletQueryReply SleepHandler::SleepQueryCallback( uptr arg )
+{
+ NN_UNUSED_VAR(arg);
+ g_AwakeEvent.ClearSignal();
+
+ if ( !nn::applet::IsActive() )
+ {
+ // Inactive なとき、メインスレッドは applet::WaitForStarting() で停止状態であり、
+ // 他のスレッドも停止状態になっているはず(アプリケーション側の実装依存)
+ return nn::applet::REPLY_ACCEPT;
+ }
+ else
+ {
+ return nn::applet::REPLY_LATER;
+ }
+}
+
+/*------------------------------------------------------------------------*
+ スリープ復帰時に呼ばれるコールバック
+ *------------------------------------------------------------------------*/
+void SleepHandler::AwakeCallback( uptr arg )
+{
+ NN_UNUSED_VAR(arg);
+ g_AwakeEvent.Signal();
+
+ s_IsAfterWakeUp = true;
+}
diff --git a/trunk/CardSaveData/common/sleep.h b/trunk/CardSaveData/common/sleep.h
new file mode 100644
index 0000000..15a14f1
--- /dev/null
+++ b/trunk/CardSaveData/common/sleep.h
@@ -0,0 +1,46 @@
+/*---------------------------------------------------------------------------*
+ Project: Horizon
+ File: sleep.h
+
+ Copyright (C)2010 Nintendo Co., Ltd. All rights reserved.
+
+ These coded instructions, statements, and computer programs contain
+ proprietary information of Nintendo of America Inc. and/or Nintendo
+ Company Ltd., and are protected by Federal copyright law. They may
+ not be disclosed to third parties or copied or duplicated in any form,
+ in whole or in part, without the prior written consent of Nintendo.
+
+ $Rev$
+ *---------------------------------------------------------------------------*/
+
+#ifndef NN_SAMPLE_DEMOS_DEMO2_SLEEP_H_
+#define NN_SAMPLE_DEMOS_DEMO2_SLEEP_H_
+
+/*------------------------------------------------------------------------*
+ 本体スリープに関連する処理
+ *------------------------------------------------------------------------*/
+ class SleepHandler
+ {
+ public:
+ SleepHandler() {}
+ ~SleepHandler() {}
+
+ static void Initialize( void );
+ static void Finalize( void );
+ static bool IsSleepRequested( void );
+ static void SleepSystem( void );
+
+ static AppletQueryReply SleepQueryCallback( uptr arg );
+ static void AwakeCallback( uptr arg );
+ static void CancelCallback( uptr arg );
+
+ // スリープからの復帰後、1フレーム分描画を待ってから LCD を有効にするためのフラグ
+ static volatile bool s_IsAfterWakeUp;
+
+ private:
+ static nn::os::LightEvent s_AwakeEvent;
+ static bool s_IsInitialized;
+ };
+
+
+#endif // NN_SAMPLE_DEMOS_DEMO2_SLEEP_H_