Merge cherrypicks of [15679207, 15679169, 15679170, 15679208, 15679209, 15679262, 15679171, 15679210, 15679244, 15679211, 15679245, 15679246, 15679212, 15679213, 15678855, 15679214, 15679215] into sc-d1-release
Change-Id: I80db94bb9344254abb034314a4bc1259a1532da6
diff --git a/.clang-format b/.clang-format
new file mode 100644
index 0000000..361ce94
--- /dev/null
+++ b/.clang-format
@@ -0,0 +1,13 @@
+BasedOnStyle: Google
+AccessModifierOffset: -2
+AllowShortFunctionsOnASingleLine: Inline
+ColumnLimit: 100
+CommentPragmas: NOLINT:.*
+DerivePointerAlignment: false
+IndentWidth: 4
+ContinuationIndentWidth: 8
+PointerAlignment: Right
+TabWidth: 4
+UseTab: Never
+AllowShortIfStatementsOnASingleLine: false
+SpacesBeforeTrailingComments: 2
diff --git a/Android.bp b/Android.bp
new file mode 100644
index 0000000..57ebe85
--- /dev/null
+++ b/Android.bp
@@ -0,0 +1,36 @@
+soong_namespace {
+ imports: [
+ "hardware/google/interfaces",
+ "hardware/google/pixel",
+ ],
+}
+
+package {
+ default_applicable_licenses: ["device_google_gs101_license"],
+}
+
+// Added automatically by a large-scale-change that took the approach of
+// 'apply every license found to every target'. While this makes sure we respect
+// every license restriction, it may not be entirely correct.
+//
+// e.g. GPL in an MIT project might only apply to the contrib/ directory.
+//
+// Please consider splitting the single license below into multiple licenses,
+// taking care not to lose any license_kind information, and overriding the
+// default license using the 'licenses: [...]' property on targets as needed.
+//
+// For unused files, consider creating a 'fileGroup' with "//visibility:private"
+// to attach the license to, and including a comment whether the files may be
+// used in the current project.
+// See: http://go/android-license-faq
+license {
+ name: "device_google_gs101_license",
+ visibility: [":__subpackages__"],
+ license_kinds: [
+ "SPDX-license-identifier-Apache-2.0",
+ "SPDX-license-identifier-BSD",
+ ],
+ license_text: [
+ "NOTICE",
+ ],
+}
diff --git a/Android.mk b/Android.mk
new file mode 100644
index 0000000..e6a9462
--- /dev/null
+++ b/Android.mk
@@ -0,0 +1,30 @@
+#
+# Copyright (C) 2011 The Android Open-Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+# WARNING: Everything listed here will be built on ALL platforms,
+# including x86, the universal, and the SDK. Modules must be uniquely
+# named (liblights.panda), and must build everywhere, or limit themselves
+# to only building on ARM if they include assembly. Individual makefiles
+# are responsible for having their own logic, for fine-grained control.
+
+LOCAL_PATH := $(call my-dir)
+
+# if some modules are built directly from this directory (not subdirectories),
+# their rules should be written here.
+
+ifeq ($(USES_DEVICE_GOOGLE_GS101),true)
+ include $(call first-makefiles-under,$(LOCAL_PATH))
+endif
diff --git a/BoardConfig-common.mk b/BoardConfig-common.mk
new file mode 100644
index 0000000..4689c68
--- /dev/null
+++ b/BoardConfig-common.mk
@@ -0,0 +1,412 @@
+#
+# Copyright (C) 2019 The Android Open-Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+include build/make/target/board/BoardConfigMainlineCommon.mk
+include build/make/target/board/BoardConfigPixelCommon.mk
+
+# Should be uncommented after fixing vndk-sp violation is fixed.
+PRODUCT_FULL_TREBLE_OVERRIDE := true
+
+# This prop, when set to 1, will prevent OTA tooling from generating a VABC OTA,
+# even if device actually supports it.
+# Remove this once P21 decides to use VABC OTA
+BOARD_DONT_USE_VABC_OTA := true
+
+# HACK : To fix up after bring up multimedia devices.
+TARGET_SOC := gs101
+
+TARGET_SOC_NAME := google
+
+USES_DEVICE_GOOGLE_GS101 := true
+
+TARGET_ARCH := arm64
+TARGET_ARCH_VARIANT := armv8-2a
+TARGET_CPU_ABI := arm64-v8a
+TARGET_CPU_VARIANT := cortex-a55
+TARGET_CPU_VARIANT_RUNTIME := cortex-a55
+
+ifeq (,$(filter %_64,$(TARGET_PRODUCT)))
+TARGET_2ND_ARCH := arm
+TARGET_2ND_ARCH_VARIANT := armv8-a
+TARGET_2ND_CPU_ABI := armeabi-v7a
+TARGET_2ND_CPU_ABI2 := armeabi
+TARGET_2ND_CPU_VARIANT := generic
+TARGET_2ND_CPU_VARIANT_RUNTIME := cortex-a53
+endif
+
+BOARD_KERNEL_CMDLINE += dyndbg=\"func alloc_contig_dump_pages +p\"
+BOARD_KERNEL_CMDLINE += earlycon=exynos4210,0x10A00000 console=ttySAC0,115200 androidboot.console=ttySAC0 printk.devkmsg=on
+BOARD_KERNEL_CMDLINE += cma_sysfs.experimental=Y
+BOARD_KERNEL_CMDLINE += stack_depot_disable=off page_pinner=on
+BOARD_BOOTCONFIG += androidboot.boot_devices=14700000.ufs
+
+TARGET_NO_BOOTLOADER := true
+TARGET_NO_RADIOIMAGE := true
+ifeq (,$(TARGET_PREBUILT_KERNEL))
+TARGET_NO_KERNEL := true
+ifneq (,$(filter userdebug eng,$(TARGET_BUILD_VARIANT)))
+BOARD_PREBUILT_BOOTIMAGE := $(TARGET_KERNEL_DIR)/boot.img
+else
+BOARD_PREBUILT_BOOTIMAGE := $(TARGET_KERNEL_DIR)/boot-user.img
+endif
+else
+TARGET_NO_KERNEL := false
+endif
+BOARD_USES_GENERIC_KERNEL_IMAGE := true
+BOARD_MOVE_RECOVERY_RESOURCES_TO_VENDOR_BOOT := true
+BOARD_MOVE_GSI_AVB_KEYS_TO_VENDOR_BOOT := true
+TARGET_RECOVERY_WIPE := device/google/gs101/conf/recovery.wipe
+TARGET_RECOVERY_FSTAB := device/google/gs101/conf/fstab.gs101
+TARGET_RECOVERY_PIXEL_FORMAT := ABGR_8888
+TARGET_RECOVERY_UI_MARGIN_HEIGHT := 165
+TARGET_RECOVERY_UI_LIB := \
+ librecovery_ui_pixel \
+ libfstab
+
+AB_OTA_UPDATER := true
+
+AB_OTA_PARTITIONS += \
+ system \
+ system_ext \
+ product \
+ vbmeta_system
+
+ifneq ($(PRODUCT_BUILD_BOOT_IMAGE),false)
+AB_OTA_PARTITIONS += boot
+endif
+ifneq ($(PRODUCT_BUILD_VENDOR_BOOT_IMAGE),false)
+AB_OTA_PARTITIONS += vendor_boot
+AB_OTA_PARTITIONS += dtbo
+endif
+ifneq ($(PRODUCT_BUILD_VBMETA_IMAGE),false)
+AB_OTA_PARTITIONS += vbmeta
+endif
+
+# EMULATOR common modules
+BOARD_EMULATOR_COMMON_MODULES := liblight
+
+OVERRIDE_RS_DRIVER := libRSDriverArm.so
+BOARD_EGL_CFG := device/google/gs101/conf/egl.cfg
+#BOARD_USES_HGL := true
+USE_OPENGL_RENDERER := true
+NUM_FRAMEBUFFER_SURFACE_BUFFERS := 3
+BOARD_USES_EXYNOS5_COMMON_GRALLOC := true
+BOARD_USES_ALIGN_RESTRICTION := false
+BOARD_USES_GRALLOC_ION_SYNC := true
+
+# This should be the same value as USE_SWIFTSHADER in device.mk
+BOARD_USES_SWIFTSHADER := false
+
+# Gralloc4
+SOONG_CONFIG_NAMESPACES += arm_gralloc
+SOONG_CONFIG_arm_gralloc := \
+ gralloc_arm_no_external_afbc \
+ mali_gpu_support_afbc_basic \
+ mali_gpu_support_afbc_wideblk \
+ gralloc_init_afbc \
+ gralloc_ion_sync_on_lock \
+ dpu_support_1010102_afbc
+
+ifeq ($(BOARD_USES_SWIFTSHADER),true)
+SOONG_CONFIG_arm_gralloc_gralloc_arm_no_external_afbc := true
+SOONG_CONFIG_arm_gralloc_mali_gpu_support_afbc_basic := false
+SOONG_CONFIG_arm_gralloc_mali_gpu_support_afbc_wideblk := false
+SOONG_CONFIG_arm_gralloc_gralloc_init_afbc := false
+SOONG_CONFIG_arm_gralloc_dpu_support_1010102_afbc := false
+else
+SOONG_CONFIG_arm_gralloc_gralloc_arm_no_external_afbc := false
+SOONG_CONFIG_arm_gralloc_mali_gpu_support_afbc_basic := true
+SOONG_CONFIG_arm_gralloc_mali_gpu_support_afbc_wideblk := true
+SOONG_CONFIG_arm_gralloc_gralloc_init_afbc := true
+SOONG_CONFIG_arm_gralloc_dpu_support_1010102_afbc := true
+endif # ifeq ($(BOARD_USES_SWIFTSHADER),true)
+SOONG_CONFIG_arm_gralloc_gralloc_ion_sync_on_lock := $(BOARD_USES_GRALLOC_ION_SYNC)
+
+# Graphics
+#BOARD_USES_EXYNOS_DATASPACE_FEATURE := true
+
+# Enable chain partition for system.
+BOARD_AVB_VBMETA_SYSTEM := system system_ext product
+BOARD_AVB_VBMETA_SYSTEM_KEY_PATH := external/avb/test/data/testkey_rsa2048.pem
+BOARD_AVB_VBMETA_SYSTEM_ALGORITHM := SHA256_RSA2048
+BOARD_AVB_VBMETA_SYSTEM_ROLLBACK_INDEX := $(PLATFORM_SECURITY_PATCH_TIMESTAMP)
+BOARD_AVB_VBMETA_SYSTEM_ROLLBACK_INDEX_LOCATION := 1
+
+# Enable chained vbmeta for boot images
+BOARD_AVB_BOOT_KEY_PATH := external/avb/test/data/testkey_rsa2048.pem
+BOARD_AVB_BOOT_ALGORITHM := SHA256_RSA2048
+BOARD_AVB_BOOT_ROLLBACK_INDEX := $(PLATFORM_SECURITY_PATCH_TIMESTAMP)
+BOARD_AVB_BOOT_ROLLBACK_INDEX_LOCATION := 2
+
+TARGET_USERIMAGES_USE_EXT4 := true
+TARGET_USERIMAGES_USE_F2FS := true
+BOARD_USERDATAIMAGE_PARTITION_SIZE := 11796480000
+BOARD_USERDATAIMAGE_FILE_SYSTEM_TYPE := f2fs
+PRODUCT_FS_COMPRESSION := 1
+BOARD_FLASH_BLOCK_SIZE := 4096
+BOARD_MOUNT_SDCARD_RW := true
+
+# product.img
+BOARD_PRODUCTIMAGE_FILE_SYSTEM_TYPE := ext4
+TARGET_COPY_OUT_PRODUCT := product
+
+# system_ext.img
+BOARD_SYSTEM_EXTIMAGE_FILE_SYSTEM_TYPE := ext4
+TARGET_COPY_OUT_SYSTEM_EXT := system_ext
+
+########################
+# Video Codec
+########################
+# 1. Exynos C2
+BOARD_USE_CSC_FILTER := false
+BOARD_USE_DEC_SW_CSC := true
+BOARD_USE_ENC_SW_CSC := true
+BOARD_SUPPORT_MFC_ENC_RGB := true
+BOARD_USE_BLOB_ALLOCATOR := false
+########################
+
+BOARD_SUPER_PARTITION_SIZE := 8531214336
+BOARD_SUPER_PARTITION_GROUPS := google_dynamic_partitions
+# Set size to BOARD_SUPER_PARTITION_SIZE - overhead (4MiB) (b/182237294)
+BOARD_GOOGLE_DYNAMIC_PARTITIONS_SIZE := 8527020032
+BOARD_GOOGLE_DYNAMIC_PARTITIONS_PARTITION_LIST := \
+ system \
+ system_ext \
+ product \
+ vendor \
+ vendor_dlkm
+
+# Set error limit to BOARD_SUPER_PARTITON_SIZE - 500MB
+BOARD_SUPER_PARTITION_ERROR_LIMIT := 8006926336
+
+#
+# AUDIO & VOICE
+#
+BOARD_USES_GENERIC_AUDIO := true
+
+SOONG_CONFIG_NAMESPACES += aoc_audio_func
+
+SOONG_CONFIG_aoc_audio_func += \
+ ext_hidl
+
+SOONG_CONFIG_aoc_audio_func_ext_hidl := true
+
+ifneq (,$(filter userdebug eng, $(TARGET_BUILD_VARIANT)))
+SOONG_CONFIG_aoc_audio_func += \
+ dump_usecase_data \
+ hal_socket_control \
+ record_tunning_keys
+
+SOONG_CONFIG_aoc_audio_func_dump_usecase_data := true
+SOONG_CONFIG_aoc_audio_func_hal_socket_control := true
+SOONG_CONFIG_aoc_audio_func_record_tunning_keys := true
+endif
+
+ifneq (,$(filter aosp_%,$(TARGET_PRODUCT)))
+SOONG_CONFIG_aoc_audio_func += aosp_build
+
+SOONG_CONFIG_aoc_audio_func_aosp_build := true
+endif
+
+# Primary AudioHAL Configuration
+#BOARD_USE_COMMON_AUDIOHAL := true
+#BOARD_USE_CALLIOPE_AUDIOHAL := false
+#BOARD_USE_AUDIOHAL := true
+
+# Compress Offload Configuration
+#BOARD_USE_OFFLOAD_AUDIO := true
+#BOARD_USE_OFFLOAD_EFFECT := false
+
+# SoundTriggerHAL Configuration
+#BOARD_USE_SOUNDTRIGGER_HAL := false
+
+# HWComposer
+BOARD_HWC_VERSION := libhwc2.1
+TARGET_RUNNING_WITHOUT_SYNC_FRAMEWORK := false
+BOARD_HDMI_INCAPABLE := true
+TARGET_USES_HWC2 := true
+HWC_SKIP_VALIDATE := true
+HWC_SUPPORT_RENDER_INTENT := true
+HWC_SUPPORT_COLOR_TRANSFORM := true
+#BOARD_USES_DISPLAYPORT := true
+# if AFBC is enabled, must set ro.vendor.ddk.set.afbc=1
+BOARD_USES_EXYNOS_AFBC_FEATURE := true
+#BOARD_USES_HDRUI_GLES_CONVERSION := true
+
+BOARD_LIBACRYL_DEFAULT_COMPOSITOR := fimg2d_gs101
+BOARD_LIBACRYL_G2D_HDR_PLUGIN := libacryl_hdr_plugin
+
+# HWCServices
+BOARD_USES_HWC_SERVICES := true
+
+# WiFiDisplay
+# BOARD_USES_VIRTUAL_DISPLAY := true
+# BOARD_USES_VDS_EXYNOS_HWC := true
+# BOARD_USES_WIFI_DISPLAY:= true
+# BOARD_USES_EGL_SURFACE_FOR_COMPOSITION_MIXED := true
+# BOARD_USES_VDS_YUV420SPM := true
+# BOARD_USES_VDS_OTHERFORMAT := true
+# BOARD_USES_VDS_DEBUG_FLAG := true
+# BOARD_USES_DISABLE_COMPOSITIONTYPE_GLES := true
+# BOARD_USES_SECURE_ENCODER_ONLY := true
+# BOARD_USES_TSMUX := true
+
+# SCALER
+BOARD_USES_DEFAULT_CSC_HW_SCALER := true
+BOARD_DEFAULT_CSC_HW_SCALER := 4
+BOARD_USES_SCALER_M2M1SHOT := true
+
+# Device Tree
+BOARD_USES_DT := true
+BOARD_INCLUDE_DTB_IN_BOOTIMG := true
+BOARD_PREBUILT_DTBIMAGE_DIR := $(TARGET_KERNEL_DIR)
+BOARD_PREBUILT_DTBOIMAGE := $(BOARD_PREBUILT_DTBIMAGE_DIR)/dtbo.img
+
+# PLATFORM LOG
+TARGET_USES_LOGD := true
+
+# LIBHWJPEG
+#TARGET_USES_UNIVERSAL_LIBHWJPEG := true
+#LIBHWJPEG_HWSCALER_ID := 0
+
+#Keymaster
+#BOARD_USES_KEYMASTER_VER1 := true
+
+#FMP
+#BOARD_USES_FMP_DM_CRYPT := true
+#BOARD_USES_FMP_FSCRYPTO := true
+BOARD_USES_METADATA_PARTITION := true
+
+# SKIA
+#BOARD_USES_SKIA_MULTITHREADING := true
+#BOARD_USES_FIMGAPI_V5X := true
+
+# SECCOMP Policy
+BOARD_SECCOMP_POLICY = device/google/gs101/seccomp_policy
+
+#CURL
+BOARD_USES_CURL := true
+
+# Sensor HAL
+BOARD_USES_EXYNOS_SENSORS_DUMMY := true
+
+# VISION
+# Exynos vision framework (EVF)
+#TARGET_USES_EVF := true
+# HW acceleration
+#TARGET_USES_VPU_KERNEL := true
+#TARGET_USES_SCORE_KERNEL := true
+#TARGET_USES_CL_KERNEL := false
+
+# exynos RIL
+TARGET_EXYNOS_RIL_SOURCE := true
+ENABLE_VENDOR_RIL_SERVICE := true
+
+# GNSS
+# BOARD_USES_EXYNOS_GNSS_DUMMY := true
+
+# Bluetooth defines
+# TODO(b/123695868): Remove the need for this
+BOARD_BLUETOOTH_BDROID_BUILDCFG_INCLUDE_DIR := \
+ build/make/target/board/mainline_arm64/bluetooth
+
+TARGET_BOARD_KERNEL_HEADERS := $(TARGET_KERNEL_DIR)/kernel-headers
+
+#VNDK
+BOARD_PROPERTY_OVERRIDES_SPLIT_ENABLED := true
+BOARD_VNDK_VERSION := current
+
+# H/W align restriction of MM IPs
+BOARD_EXYNOS_S10B_FORMAT_ALIGN := 64
+
+# WiFi
+BOARD_WLAN_DEVICE := bcmdhd
+BOARD_WPA_SUPPLICANT_PRIVATE_LIB := lib_driver_cmd_bcmdhd
+BOARD_HOSTAPD_PRIVATE_LIB := lib_driver_cmd_bcmdhd
+WPA_SUPPLICANT_VERSION := VER_0_8_X
+BOARD_WPA_SUPPLICANT_DRIVER := NL80211
+BOARD_HOSTAPD_DRIVER := NL80211
+# Wifi interface combination - {1 STA + 1 AP (bridged or single)} or {1 STA + 1 P2P}
+# or {1 STA + 1 NAN} or {2 STA}
+WIFI_HAL_INTERFACE_COMBINATIONS := {{{STA}, 1}, {{P2P, NAN, AP}, 1}}, {{{STA}, 2}}
+WIFI_FEATURE_WIFI_EXT_HAL := true
+WIFI_FEATURE_IMU_DETECTION := true
+# Avoid Wifi reset on MAC Address change
+WIFI_AVOID_IFACE_RESET_MAC_CHANGE := true
+WIFI_FEATURE_HOSTAPD_11AX := true
+
+# NeuralNetworks
+GPU_SOURCE_PRESENT := $(wildcard vendor/arm/mali/valhall)
+GPU_PREBUILD_PRESENT := $(wildcard vendor/google_devices/gs101/prebuilts/gpu/libs)
+ifneq "$(or $(GPU_SOURCE_PRESENT),$(GPU_PREBUILD_PRESENT))" ""
+ARMNN_COMPUTE_CL_ENABLE := 1
+else
+ARMNN_COMPUTE_CL_ENABLE := 0
+endif
+ARMNN_COMPUTE_NEON_ENABLE := 1
+
+# Boot.img
+BOARD_RAMDISK_USE_LZ4 := true
+#BOARD_KERNEL_BASE := 0x80000000
+#BOARD_KERNEL_PAGESIZE := 2048
+#BOARD_KERNEL_OFFSET := 0x80000
+#BOARD_RAMDISK_OFFSET := 0x4000000
+BOARD_BOOT_HEADER_VERSION := 4
+BOARD_MKBOOTIMG_ARGS += --header_version $(BOARD_BOOT_HEADER_VERSION)
+
+BOARD_VENDOR_RAMDISK_FRAGMENTS := dlkm
+BOARD_VENDOR_RAMDISK_FRAGMENT.dlkm.KERNEL_MODULE_DIRS := top
+
+# Enable AVB2.0
+BOARD_AVB_ENABLE := true
+BOARD_BOOTIMAGE_PARTITION_SIZE := 0x04000000
+BOARD_VENDOR_BOOTIMAGE_PARTITION_SIZE := 0x04000000
+BOARD_DTBOIMG_PARTITION_SIZE := 0x01000000
+
+# System As Root
+BOARD_BUILD_SYSTEM_ROOT_IMAGE := false
+
+# Vendor ramdisk image for kernel development
+BOARD_BUILD_VENDOR_RAMDISK_IMAGE := true
+
+BOARD_VENDOR_KERNEL_MODULES_BLOCKLIST_FILE := device/google/gs101/vendor_dlkm.blocklist
+
+KERNEL_MODULE_DIR := $(TARGET_KERNEL_DIR)
+KERNEL_MODULES := $(wildcard $(KERNEL_MODULE_DIR)/*.ko)
+
+BOARD_VENDOR_RAMDISK_KERNEL_MODULES_LOAD := $(strip $(shell cat $(KERNEL_MODULE_DIR)/vendor_boot.modules.load))
+ifndef BOARD_VENDOR_RAMDISK_KERNEL_MODULES_LOAD
+$(error vendor_boot.modules.load not found or empty)
+endif
+BOARD_VENDOR_RAMDISK_KERNEL_MODULES := $(addprefix $(KERNEL_MODULE_DIR)/, $(notdir $(BOARD_VENDOR_RAMDISK_KERNEL_MODULES_LOAD)))
+
+BOARD_VENDOR_KERNEL_MODULES_LOAD := $(strip $(shell cat $(KERNEL_MODULE_DIR)/vendor_dlkm.modules.load))
+ifndef BOARD_VENDOR_KERNEL_MODULES_LOAD
+$(error vendor_dlkm.modules.load not found or empty)
+endif
+BOARD_VENDOR_KERNEL_MODULES := $(KERNEL_MODULES)
+
+# Using BUILD_COPY_HEADERS
+BUILD_BROKEN_USES_BUILD_COPY_HEADERS := true
+
+include device/google/gs101-sepolicy/gs101-sepolicy.mk
+
+# Battery options
+BOARD_KERNEL_CMDLINE += at24.write_timeout=100
+
+# Enable larger logbuf
+BOARD_KERNEL_CMDLINE += log_buf_len=1024K
+
+-include vendor/google_devices/gs101/proprietary/BoardConfigVendor.mk
diff --git a/CleanSpec.mk b/CleanSpec.mk
new file mode 100644
index 0000000..12538be
--- /dev/null
+++ b/CleanSpec.mk
@@ -0,0 +1,85 @@
+# Copyright (C) 2012 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+# If you don't need to do a full clean build but would like to touch
+# a file or delete some intermediate files, add a clean step to the end
+# of the list. These steps will only be run once, if they haven't been
+# run before.
+#
+# E.g.:
+# $(call add-clean-step, touch -c external/sqlite/sqlite3.h)
+# $(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/STATIC_LIBRARIES/libz_intermediates)
+#
+# Always use "touch -c" and "rm -f" or "rm -rf" to gracefully deal with
+# files that are missing or have been moved.
+#
+# Use $(PRODUCT_OUT) to get to the "out/target/product/blah/" directory.
+# Use $(OUT_DIR) to refer to the "out" directory.
+#
+# If you need to re-do something that's already mentioned, just copy
+# the command and add it to the bottom of the list. E.g., if a change
+# that you made last week required touching a file and a change you
+# made today requires touching the same file, just copy the old
+# touch step and add it to the end of the list.
+#
+# ************************************************
+# NEWER CLEAN STEPS MUST BE AT THE END OF THE LIST
+# ************************************************
+
+# For example:
+#$(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/APPS/AndroidTests_intermediates)
+#$(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/JAVA_LIBRARIES/core_intermediates)
+#$(call add-clean-step, find $(OUT_DIR) -type f -name "IGTalkSession*" -print0 | xargs -0 rm -f)
+#$(call add-clean-step, rm -rf $(PRODUCT_OUT)/data/*)
+$(call add-clean-step, find $(PRODUCT_OUT) -name "*.apk" | xargs rm)
+
+# ************************************************
+# NEWER CLEAN STEPS MUST BE AT THE END OF THE LIST
+# ************************************************
+$(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/SHARED_LIBRARIES/libsurfaceflinger_intermediates)
+$(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/SHARED_LIBRARIES/libui_intermediates)
+$(call add-clean-step, rm -f $(PRODUCT_OUT)/root/default.prop)
+$(call add-clean-step, rm -f $(TARGET_OUT)/build.prop)
+$(call add-clean-step, rm -f $(PRODUCT_OUT)/system/etc/mixer_paths_lb.xml)
+$(call add-clean-step, rm -f $(PRODUCT_OUT)/system/etc/permissions/android.hardware.camera.xml)
+
+$(call add-clean-step, rm -f $(PRODUCT_OUT)/root/*)
+# Power HAL 1.0
+$(call add-clean-step, rm -f $(PRODUCT_OUT)/vendor/init/android.hardware.power@1.0-service.rc)
+$(call add-clean-step, rm -f $(PRODUCT_OUT)/vendor/bin/hw/android.hardware.power@1.0-service)
+# Power HAL HIDL
+$(call add-clean-step, rm -f $(PRODUCT_OUT)/vendor/etc/init/android.hardware.power@1.3-service.pixel-libperfmgr.rc)
+
+# Health storage HAL
+$(call add-clean-step, find $(PRODUCT_OUT) -type f -name "*android.hardware.health.storage@1.0*" -print0 | xargs -0 rm -f)
+
+# Update to USB HAL 1.3
+$(call add-clean-step, rm -rf $(PRODUCT_OUT)/vendor/bin/hw/android.hardware.usb@1.2-service.slider)
+$(call add-clean-step, rm -rf $(PRODUCT_OUT)/vendor/etc/init/android.hardware.usb@1.2-service.slider.rc)
+$(call add-clean-step, rm -rf $(PRODUCT_OUT)/vendor/etc/vintf/manifest/android.hardware.usb@1.2-service.slider.xml)
+$(call add-clean-step, rm -rf $(PRODUCT_OUT)/vendor/bin/hw/android.hardware.usb@1.3-service.slider)
+$(call add-clean-step, rm -rf $(PRODUCT_OUT)/vendor/etc/init/android.hardware.usb@1.3-service.slider.rc)
+$(call add-clean-step, rm -rf $(PRODUCT_OUT)/vendor/etc/vintf/manifest/android.hardware.usb@1.3-service.slider.xml)
+
+# Power Stats HAL 1.0 to AIDL
+$(call add-clean-step, rm -f $(PRODUCT_OUT)/vendor/bin/hw/android.hardware.power.stats@1.0-service.gs101)
+$(call add-clean-step, rm -f $(PRODUCT_OUT)/vendor/etc/init/android.hardware.power.stats@1.0-service.gs101.rc)
+$(call add-clean-step, rm -f $(PRODUCT_OUT)/vendor/etc/vintf/manifest/android.hardware.power.stats@1.0-service.gs101.xml)
+
+# Keymaster to KeyMint
+$(call add-clean-step, rm -f $(PRODUCT_OUT)/vendor/bin/hw/android.hardware.keymaster@4.0-service.trusty)
+$(call add-clean-step, rm -f $(PRODUCT_OUT)/vendor/etc/init/android.hardware.keymaster@4.0-service.trusty.rc)
+$(call add-clean-step, rm -f $(PRODUCT_OUT)/vendor/etc/vintf/manifest/android.hardware.keymaster@4.0-service.trusty.xml)
+$(call add-clean-step, rm -f $(PRODUCT_OUT)/vendor/bin/hw/wait_for_strongbox)
diff --git a/NOTICE b/NOTICE
new file mode 100644
index 0000000..316b4eb
--- /dev/null
+++ b/NOTICE
@@ -0,0 +1,190 @@
+
+ Copyright (c) 2014, The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
diff --git a/aosp_common.mk b/aosp_common.mk
new file mode 100644
index 0000000..1ad6eb7
--- /dev/null
+++ b/aosp_common.mk
@@ -0,0 +1,52 @@
+#
+# Copyright 2020 The Android Open-Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+#
+# All components inherited here go to system image
+#
+ifeq (,$(filter %_64,$(TARGET_PRODUCT)))
+$(call inherit-product, $(SRC_TARGET_DIR)/product/core_64_bit.mk)
+else
+$(call inherit-product, $(SRC_TARGET_DIR)/product/core_64_bit_only.mk)
+endif
+$(call inherit-product, $(SRC_TARGET_DIR)/product/generic_system.mk)
+
+# Enable CSI checking
+PRODUCT_ENFORCE_ARTIFACT_PATH_REQUIREMENTS := relaxed
+
+#
+# All components inherited here go to system_ext image
+#
+$(call inherit-product, $(SRC_TARGET_DIR)/product/handheld_system_ext.mk)
+$(call inherit-product, $(SRC_TARGET_DIR)/product/telephony_system_ext.mk)
+
+#
+# All components inherited here go to product image
+#
+$(call inherit-product, $(SRC_TARGET_DIR)/product/aosp_product.mk)
+
+#
+# All components inherited here go to vendor image
+#
+# TODO(b/136525499): move *_vendor.mk into the vendor makefile later
+$(call inherit-product, $(SRC_TARGET_DIR)/product/handheld_vendor.mk)
+$(call inherit-product, $(SRC_TARGET_DIR)/product/telephony_vendor.mk)
+
+#$(call inherit-product, device/google/gs101/device.mk)
+#$(call inherit-product-if-exists, vendor/google_devices/gs101/proprietary/device-vendor.mk)
+
+# TODO: fix
+# PRODUCT_RESTRICT_VENDOR_FILES := all
diff --git a/compatibility_matrix.xml b/compatibility_matrix.xml
new file mode 100644
index 0000000..264e854
--- /dev/null
+++ b/compatibility_matrix.xml
@@ -0,0 +1,84 @@
+<!--
+ Autogenerated skeleton compatibility matrix.
+ Use with caution. Modify it to suit your needs.
+ All HALs are set to optional.
+ Many entries other than HALs are zero-filled and
+ require human attention.
+-->
+<compatibility-matrix version="1.0" type="device">
+ <hal format="hidl" optional="true">
+ <name>android.frameworks.displayservice</name>
+ <version>1.0</version>
+ <interface>
+ <name>IDisplayService</name>
+ <instance>default</instance>
+ </interface>
+ </hal>
+ <hal format="hidl" optional="true">
+ <name>android.frameworks.schedulerservice</name>
+ <version>1.0</version>
+ <interface>
+ <name>ISchedulingPolicyService</name>
+ <instance>default</instance>
+ </interface>
+ </hal>
+ <hal format="hidl" optional="true">
+ <name>android.frameworks.sensorservice</name>
+ <version>1.0</version>
+ <interface>
+ <name>ISensorManager</name>
+ <instance>default</instance>
+ </interface>
+ </hal>
+ <hal format="hidl" optional="true">
+ <name>android.hardware.graphics.composer</name>
+ <version>2.1</version>
+ <interface>
+ <name>IComposer</name>
+ <instance>vr</instance>
+ </interface>
+ </hal>
+ <hal format="hidl" optional="true">
+ <name>android.hidl.allocator</name>
+ <version>1.0</version>
+ <interface>
+ <name>IAllocator</name>
+ <instance>ashmem</instance>
+ </interface>
+ </hal>
+ <hal format="hidl" optional="true">
+ <name>android.hidl.manager</name>
+ <version>1.0</version>
+ <interface>
+ <name>IServiceManager</name>
+ <instance>default</instance>
+ </interface>
+ </hal>
+ <hal format="hidl" optional="true">
+ <name>android.hidl.memory</name>
+ <version>1.0</version>
+ <interface>
+ <name>IMapper</name>
+ <instance>ashmem</instance>
+ </interface>
+ </hal>
+ <hal format="hidl" optional="true">
+ <name>android.hidl.token</name>
+ <version>1.0</version>
+ <interface>
+ <name>ITokenManager</name>
+ <instance>default</instance>
+ </interface>
+ </hal>
+ <hal format="hidl" optional="true">
+ <name>android.system.wifi.keystore</name>
+ <version>1.0</version>
+ <interface>
+ <name>IKeystore</name>
+ <instance>default</instance>
+ </interface>
+ </hal>
+ <vndk>
+ <version>0.0.0</version>
+ </vndk>
+</compatibility-matrix>
diff --git a/component-overrides.xml b/component-overrides.xml
new file mode 100644
index 0000000..9aa38e7
--- /dev/null
+++ b/component-overrides.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright 2020 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<config>
+ <component-override package="com.android.bluetooth" >
+ <component class=".sap.SapService" enabled="true" />
+ </component-override>
+ <component-override package="com.google.android.apps.tips" >
+ <component class=".TipsMain" enabled="true" />
+ </component-override>
+</config>
diff --git a/conf/egl.cfg b/conf/egl.cfg
new file mode 100644
index 0000000..4515dfd
--- /dev/null
+++ b/conf/egl.cfg
@@ -0,0 +1 @@
+0 1 mali
diff --git a/conf/fstab.gs101 b/conf/fstab.gs101
new file mode 100644
index 0000000..ef56f87
--- /dev/null
+++ b/conf/fstab.gs101
@@ -0,0 +1,23 @@
+# Android fstab file.
+#
+# The filesystem that contains the filesystem checker binary (typically /system) cannot
+# specify MF_CHECK, and must come before any filesystems that do specify MF_CHECK
+#
+#<src> <mnt_point> <type> <mnt_flags and options> <fs_mgr_flags>
+system /system ext4 ro,barrier=1 wait,slotselect,avb=vbmeta_system,logical,first_stage_mount,readahead_size_kb=128
+system_ext /system_ext ext4 ro,barrier=1 wait,slotselect,avb=vbmeta_system,logical,first_stage_mount
+product /product ext4 ro,barrier=1 wait,slotselect,avb=vbmeta_system,logical,first_stage_mount
+vendor /vendor ext4 ro,barrier=1 wait,slotselect,avb=vbmeta_vendor,logical,first_stage_mount
+vendor_dlkm /vendor_dlkm ext4 ro,barrier=1 wait,slotselect,avb=vbmeta,logical,first_stage_mount
+/dev/block/platform/14700000.ufs/by-name/boot /boot emmc defaults slotselect,avb=boot,first_stage_mount
+/dev/block/platform/14700000.ufs/by-name/efs /mnt/vendor/efs ext4 defaults,noatime,rw wait,check,formattable
+/dev/block/platform/14700000.ufs/by-name/efs_backup /mnt/vendor/efs_backup ext4 defaults,noatime,rw wait,check,formattable
+/dev/block/platform/14700000.ufs/by-name/modem_userdata /mnt/vendor/modem_userdata ext4 defaults,noatime,rw wait,check,formattable
+/dev/block/platform/14700000.ufs/by-name/modem /mnt/vendor/modem_img ext4 ro,defaults,context=u:object_r:modem_img_file:s0,barrier=1 wait,slotselect
+/dev/block/platform/14700000.ufs/by-name/misc /misc emmc defaults wait
+/dev/block/platform/14700000.ufs/by-name/metadata /metadata ext4 noatime,nosuid,nodev,data=journal,commit=1 wait,check,formattable,first_stage_mount,metadata_csum
+/dev/block/platform/14700000.ufs/by-name/pvmfw /pvmfw emmc defaults wait,slotselect,avb=pvmfw,first_stage_mount
+/dev/block/platform/14700000.ufs/by-name/userdata /data f2fs noatime,nosuid,nodev,discard,reserve_root=32768,resgid=1065,fsync_mode=nobarrier,inlinecrypt,compress_extension=apk,compress_extension=apex,compress_extension=so,atgc,checkpoint_merge latemount,wait,check,quota,formattable,sysfs_path=/dev/sys/block/bootdevice,checkpoint=fs,reservedsize=128M,fileencryption=::inlinecrypt_optimized+wrappedkey_v0,metadata_encryption=:wrappedkey_v0,keydirectory=/metadata/vold/metadata_encryption,fscompress,readahead_size_kb=128
+/dev/block/platform/14700000.ufs/by-name/vbmeta /vbmeta emmc defaults slotselect,first_stage_mount
+/dev/block/zram0 none swap defaults zramsize=3221225472,max_comp_streams=8,zram_backingdev_size=512M
+/devices/platform/11110000.usb* auto vfat defaults voldmanaged=usb:auto
diff --git a/conf/fstab.persist b/conf/fstab.persist
new file mode 100644
index 0000000..779a05d
--- /dev/null
+++ b/conf/fstab.persist
@@ -0,0 +1,4 @@
+# Android fstab file.
+# <src> <mnt_point> <type> <mnt_flags and options> <fs_mgr_flags>
+# Keep persist in an fstab file, since we need to run fsck on it after abnormal shutdown.
+/dev/block/platform/14700000.ufs/by-name/persist /mnt/vendor/persist ext4 noatime,nosuid,nodev,data=journal,commit=1 wait,check,formattable,metadata_csum
diff --git a/conf/fstab.postinstall b/conf/fstab.postinstall
new file mode 100644
index 0000000..955fba7
--- /dev/null
+++ b/conf/fstab.postinstall
@@ -0,0 +1,4 @@
+# Android fstab file.
+#
+#<src> <mnt_point> <type> <mnt_flags and options> <fs_mgr_flags>
+system /postinstall ext4 ro,nosuid,nodev,noexec slotselect_other,logical,avb_keys=/product/etc/security/avb/system_other.avbpubkey
diff --git a/conf/init.aoc.daemon.rc b/conf/init.aoc.daemon.rc
new file mode 100644
index 0000000..1cf204e
--- /dev/null
+++ b/conf/init.aoc.daemon.rc
@@ -0,0 +1 @@
+# AoC firmware will be loaded by Daemon
\ No newline at end of file
diff --git a/conf/init.aoc.nodaemon.rc b/conf/init.aoc.nodaemon.rc
new file mode 100644
index 0000000..329d7d3
--- /dev/null
+++ b/conf/init.aoc.nodaemon.rc
@@ -0,0 +1,3 @@
+# Load AoC firmware and boot
+on property:vendor.all.modules.ready=1
+ write /sys/devices/platform/19000000.aoc/firmware aoc.bin
\ No newline at end of file
diff --git a/conf/init.debug.rc b/conf/init.debug.rc
new file mode 100644
index 0000000..e8039e0
--- /dev/null
+++ b/conf/init.debug.rc
@@ -0,0 +1,30 @@
+# SJTAG
+on init
+ chown system system /sys/devices/platform/sjtag_ap/interface/access_lvl
+ chown system system /sys/devices/platform/sjtag_ap/interface/auth
+ chown system system /sys/devices/platform/sjtag_ap/interface/begin
+ chown system system /sys/devices/platform/sjtag_ap/interface/dbg_domain
+ chown system system /sys/devices/platform/sjtag_ap/interface/dbg_itvl
+ chown system system /sys/devices/platform/sjtag_ap/interface/end
+ chown system system /sys/devices/platform/sjtag_ap/interface/pubkey
+ chown system system /sys/devices/platform/sjtag_gsa/interface/access_lvl
+ chown system system /sys/devices/platform/sjtag_gsa/interface/auth
+ chown system system /sys/devices/platform/sjtag_gsa/interface/begin
+ chown system system /sys/devices/platform/sjtag_gsa/interface/dbg_domain
+ chown system system /sys/devices/platform/sjtag_gsa/interface/dbg_itvl
+ chown system system /sys/devices/platform/sjtag_gsa/interface/end
+ chown system system /sys/devices/platform/sjtag_gsa/interface/pubkey
+
+# Bluetooth
+on post-fs-data
+ chown bluetooth system /dev/logbuffer_btlpm
+ chown bluetooth system /dev/logbuffer_tty16
+
+on property:vendor.debug.ramdump.force_crash=true
+ write /sys/kernel/pixel_debug/trigger "null"
+
+on property:power.battery_input.suspended=true
+ write /sys/kernel/debug/google_charger/input_suspend 1
+
+on property:power.battery_input.suspended=false
+ write /sys/kernel/debug/google_charger/input_suspend 0
diff --git a/conf/init.exynos.nanohub.rc b/conf/init.exynos.nanohub.rc
new file mode 100644
index 0000000..9a58229
--- /dev/null
+++ b/conf/init.exynos.nanohub.rc
@@ -0,0 +1,20 @@
+on post-fs
+## ensure correct calibration file permissions
+ chown root system /mnt/vendor/persist/sensorcal.json
+ chmod 0640 /mnt/vendor/persist/sensorcal.json
+ start vendor.flash-nanohub-fw
+
+on post-fs-data
+ mkdir /data/vendor/sensor
+ chown root system /data/vendor/sensor
+ chmod 0770 /data/vendor/sensor
+
+service vendor.flash-nanohub-fw /vendor/bin/nanoapp_cmd download
+ oneshot
+ disabled
+ user root
+ group system
+
+on post-fs-data
+ mkdir /data/system/nanohub_lock/
+ restorecon /data/system/nanohub_lock
diff --git a/conf/init.factory.rc b/conf/init.factory.rc
new file mode 100644
index 0000000..1eba34c
--- /dev/null
+++ b/conf/init.factory.rc
@@ -0,0 +1,25 @@
+# Factory specific init.rc
+
+on early-init
+ mount debugfs /sys/kernel/debug /sys/kernel/debug
+
+on init
+ export PATH /product/bin:/apex/com.android.runtime/bin:/apex/com.android.art/bin:/system_ext/bin:/system/bin:/system/xbin:/odm/bin:/vendor/bin:/vendor/xbin:/vendor/bin/factory
+
+ # Set UDFPS default calibration to LHBM
+ setprop persist.vendor.sensors.fingerprint.ghbm 0
+
+on post-fs-data
+ # HBM mode for UDFPS factory apk
+ chmod 666 /d/dri/0/DSI-1/panel/reg/payload
+ chmod 666 /d/dri/0/DSI-1/panel/hbm_mode
+ chmod 666 /sys/class/backlight/panel0-backlight/local_hbm_max_timeout
+ chmod 666 /sys/class/backlight/panel0-backlight/local_hbm_mode
+ chmod 666 /sys/class/backlight/panel0-backlight/hbm_mode
+
+on boot
+ # FTM log folder
+ mkdir /data/ftmlog 0775 system system
+
+ # Audio test folder
+ mkdir /data/AudioTest 0775 system system
diff --git a/conf/init.gs101.rc b/conf/init.gs101.rc
new file mode 100644
index 0000000..7cef09b
--- /dev/null
+++ b/conf/init.gs101.rc
@@ -0,0 +1,926 @@
+import /vendor/etc/init/hw/init.gs101.usb.rc
+import android.hardware.drm@1.2-service.widevine.rc
+import init.exynos.sensorhub.rc
+import /vendor/etc/init/hw/init.aoc.rc
+
+service vendor.charger /system/bin/charger
+ class charger
+ seclabel u:r:charger:s0
+ user system
+ group system wakelock input
+ capabilities SYS_BOOT
+ file /dev/kmsg w
+ file /sys/fs/pstore/console-ramoops-0 r
+ file /sys/fs/pstore/console-ramoops r
+ file /proc/last_kmsg r
+
+on early-init
+ mount_all /vendor/etc/fstab.persist --early
+
+on init
+ # CPU0 cannot be offline
+ chmod 0444 /sys/devices/system/cpu/cpu0/online
+
+ # Boot time fs tuning
+ write /sys/block/sda/queue/iostats 0
+ write /sys/block/sda/queue/scheduler bfq
+ write /sys/block/sda/queue/iosched/slice_idle 0
+ write /sys/block/sda/queue/nr_requests 256
+ write /dev/sys/fs/by-name/userdata/data_io_flag 56
+ write /dev/sys/fs/by-name/userdata/node_io_flag 56
+
+ chown system system /sys/kernel/vendor_sched/set_task_group_bg
+ chown system system /sys/kernel/vendor_sched/set_task_group_cam
+ chown system system /sys/kernel/vendor_sched/set_task_group_fg
+ chown system system /sys/kernel/vendor_sched/set_task_group_nnapi
+ chown system system /sys/kernel/vendor_sched/set_task_group_sys
+ chown system system /sys/kernel/vendor_sched/set_task_group_sysbg
+ chown system system /sys/kernel/vendor_sched/set_task_group_ta
+ chown system system /sys/kernel/vendor_sched/set_task_group_rt
+ chown system system /sys/kernel/vendor_sched/set_task_group_sf
+ chown system system /sys/kernel/vendor_sched/set_task_group_dex2oat
+ chown system system /sys/kernel/vendor_sched/clear_group
+
+ chmod 0220 /sys/kernel/vendor_sched/set_task_group_bg
+ chmod 0220 /sys/kernel/vendor_sched/set_task_group_cam
+ chmod 0220 /sys/kernel/vendor_sched/set_task_group_fg
+ chmod 0220 /sys/kernel/vendor_sched/set_task_group_nnapi
+ chmod 0220 /sys/kernel/vendor_sched/set_task_group_sys
+ chmod 0220 /sys/kernel/vendor_sched/set_task_group_sysbg
+ chmod 0220 /sys/kernel/vendor_sched/set_task_group_ta
+ chmod 0220 /sys/kernel/vendor_sched/set_task_group_rt
+ chmod 0220 /sys/kernel/vendor_sched/set_task_group_sf
+ chmod 0220 /sys/kernel/vendor_sched/set_task_group_dex2oat
+ chmod 0220 /sys/kernel/vendor_sched/clear_group
+
+ wait /dev/block/platform/${ro.boot.boot_devices}
+ symlink /dev/block/platform/${ro.boot.boot_devices} /dev/block/bootdevice
+
+ # to access UFS/eMMC sysfs directly
+ symlink /sys/devices/platform/${ro.boot.boot_devices} /dev/sys/block/bootdevice
+
+ # Disable UFS powersaving
+ write /dev/sys/block/bootdevice/clkgate_enable 0
+
+ start vendor.keymaster-3-0
+
+ # ZRAM setup
+ write /sys/block/zram0/comp_algorithm lz77eh
+ write /proc/sys/vm/page-cluster 0
+
+ # Page Pinner dumping at bugreport
+ chown system system /sys/kernel/debug/page_pinner/longterm_pinner
+ chown system system /sys/kernel/debug/page_pinner/alloc_contig_failed
+
+ # Some user code relies on ro.boot.hardware.revision
+ setprop ro.boot.hardware.revision ${ro.revision}
+
+ # Allow PAI targeting per hardware SKU
+ setprop ro.oem.key1 ${ro.boot.hardware.sku}
+
+ # Property used by vintf for sku specific manifests
+ # Property used by NFC for sku specific configurations
+ setprop ro.boot.product.hardware.sku ${ro.boot.hardware.sku}
+
+ # NFC streset tool name
+ setprop persist.vendor.nfc.streset libstreset21
+ setprop persist.vendor.se.streset libstreset21
+
+ # Support legacy paths
+ symlink /data/app /factory
+
+ # Apply network parameters for high data performance.
+ write /proc/sys/net/core/rmem_default 327680
+ write /proc/sys/net/core/rmem_max 8388608
+ write /proc/sys/net/core/wmem_default 327680
+ write /proc/sys/net/core/wmem_max 8388608
+ write /proc/sys/net/core/optmem_max 20480
+ write /proc/sys/net/core/netdev_max_backlog 10000
+ write /proc/sys/net/ipv4/tcp_rmem "2097152 4194304 8388608"
+ write /proc/sys/net/ipv4/tcp_wmem "262144 524288 1048576"
+ write /proc/sys/net/ipv4/tcp_mem "44259 59012 88518"
+ write /proc/sys/net/ipv4/udp_mem "88518 118025 177036"
+
+ write /sys/class/net/rmnet0/queues/rx-0/rps_cpus fe
+ write /sys/class/net/rmnet1/queues/rx-0/rps_cpus fe
+ write /sys/class/net/rmnet2/queues/rx-0/rps_cpus fe
+ write /sys/class/net/rmnet3/queues/rx-0/rps_cpus fe
+ write /sys/class/net/rmnet4/queues/rx-0/rps_cpus fe
+ write /sys/class/net/rmnet5/queues/rx-0/rps_cpus fe
+ write /sys/class/net/rmnet6/queues/rx-0/rps_cpus fe
+ write /sys/class/net/rmnet7/queues/rx-0/rps_cpus fe
+
+ # Create UDS structure for base VR services.
+ mkdir /dev/socket/pdx 0775 system system
+ mkdir /dev/socket/pdx/system 0775 system system
+ mkdir /dev/socket/pdx/system/buffer_hub 0775 system system
+ mkdir /dev/socket/pdx/system/performance 0775 system system
+ mkdir /dev/socket/pdx/system/vr 0775 system system
+ mkdir /dev/socket/pdx/system/vr/display 0775 system system
+ mkdir /dev/socket/pdx/system/vr/pose 0775 system system
+ mkdir /dev/socket/pdx/system/vr/sensors 0775 system system
+
+ # Boot time 183626384
+ write /sys/kernel/vendor_sched/ta_uclamp_min 308
+ write /sys/kernel/vendor_sched/ta_prefer_idle 1
+ write /sys/kernel/vendor_sched/fg_uclamp_min 308
+ write /sys/kernel/vendor_sched/fg_prefer_idle 1
+ write /sys/kernel/vendor_sched/sys_uclamp_min 308
+ write /sys/kernel/vendor_sched/sys_prefer_idle 1
+
+ # governor setting
+ write /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor sched_pixel
+ write /sys/devices/system/cpu/cpu0/cpufreq/sched_pixel/up_rate_limit_us 500
+ write /sys/devices/system/cpu/cpu0/cpufreq/sched_pixel/down_rate_limit_us 5000
+ write /sys/devices/system/cpu/cpu0/cpufreq/sched_pixel/down_rate_limit_scale_pow 2
+ write /sys/devices/system/cpu/cpu4/cpufreq/scaling_governor sched_pixel
+ write /sys/devices/system/cpu/cpu4/cpufreq/sched_pixel/up_rate_limit_us 500
+ write /sys/devices/system/cpu/cpu4/cpufreq/sched_pixel/down_rate_limit_us 20000
+ write /sys/devices/system/cpu/cpu6/cpufreq/scaling_governor sched_pixel
+ write /sys/devices/system/cpu/cpu6/cpufreq/sched_pixel/up_rate_limit_us 500
+ write /sys/devices/system/cpu/cpu6/cpufreq/sched_pixel/down_rate_limit_us 20000
+
+ # RT uclamp setting
+ write /proc/sys/kernel/sched_util_clamp_min_rt_default 0
+
+ # change permissions and default values for camera-daemon cpu controller
+ chown system system /dev/cpuctl/camera-daemon/cpu.uclamp.min
+ chown system system /dev/cpuctl/camera-daemon/cpu.uclamp.max
+ chown root root /dev/cpuctl/camera-daemon/cpu.uclamp.latency_sensitive
+ chown system system /dev/cpuctl/camera-daemon/cgroup.procs
+
+ mkdir /dev/cpuset/camera-daemon-high-group
+ write /dev/cpuset/camera-daemon-high-group/cpus 0-7
+ write /dev/cpuset/camera-daemon-high-group/mems 0
+ chown system system /dev/cpuset/camera-daemon-high-group/tasks
+ chmod 0664 /dev/cpuset/camera-daemon-high-group/tasks
+
+ mkdir /dev/cpuset/camera-daemon-mid-group
+ write /dev/cpuset/camera-daemon-mid-group/cpus 0-7
+ write /dev/cpuset/camera-daemon-mid-group/mems 0
+ chown system system /dev/cpuset/camera-daemon-mid-group/tasks
+ chmod 0664 /dev/cpuset/camera-daemon-mid-group/tasks
+
+ mkdir /dev/cpuset/camera-daemon-mid-high-group
+ write /dev/cpuset/camera-daemon-mid-high-group/cpus 0-7
+ write /dev/cpuset/camera-daemon-mid-high-group/mems 0
+ chown system system /dev/cpuset/camera-daemon-mid-high-group/tasks
+ chmod 0664 /dev/cpuset/camera-daemon-mid-high-group/tasks
+
+ write /sys/kernel/vendor_sched/cam_prefer_idle 1
+ write /sys/kernel/vendor_sched/cam_uclamp_min 1
+
+ chown system system /dev/cpuset/cgroup.procs
+
+ # nanohub sensor
+ chmod 0664 /dev/nanohub
+ chmod 0664 /dev/nanohub_comms
+ chown system system /dev/nanohub
+ chown system system /dev/nanohub_comms
+
+ # logbuffer
+ chown system system /dev/logbuffer_maxfg
+ chown system system /dev/logbuffer_maxfg_base
+ chown system system /dev/logbuffer_maxfg_flip
+ chown system system /dev/logbuffer_maxq
+ chown system system /dev/logbuffer_google,cpm
+ chown system system /dev/logbuffer_rtx
+ chown system system /dev/logbuffer_ssoc
+ chown system system /dev/logbuffer_ttf
+ chown system system /dev/logbuffer_tcpm
+ chown system system /dev/logbuffer_usbpd
+ chown system system /dev/logbuffer_wireless
+ chown system system /dev/logbuffer_pca9468
+ chown system system /dev/logbuffer_cpm
+
+ # Dump maxfg
+ chown system system /sys/class/power_supply/maxfg/m5_model_state
+ chown system system /sys/class/power_supply/maxfg_base/m5_model_state
+
+ # Dump eeprom
+ chown system system /sys/devices/platform/10970000.hsi2c/i2c-5/5-0050/eeprom
+ chown system system /sys/devices/platform/10970000.hsi2c/i2c-4/4-0050/eeprom
+ chown system system /dev/battery_history
+
+ # Modem temperature driver
+ chown radio system /sys/devices/platform/cp-tm1/cp_temp
+
+ # Loading common kernel modules in background
+ start insmod_sh_common
+
+ # Charge stats (write 0)
+ chown system system /sys/class/power_supply/battery/charge_stats
+
+ # Pca Charge stats (write 0)
+ chown system system /sys/class/power_supply/pca9468-mains/device/chg_stats
+
+ # Wireless Charge stats (write 0)
+ chown system system /sys/class/power_supply/wireless/device/charge_stats
+
+ # Permission for wireless charging
+ chown system system /sys/class/power_supply/wireless/capacity
+ chown system system /sys/class/power_supply/wireless/device/rtx
+ chown system system /sys/class/power_supply/wireless/device/rxdata
+ chown system system /sys/class/power_supply/wireless/device/txdata
+ chown system system /sys/class/power_supply/wireless/device/rxlen
+ chown system system /sys/class/power_supply/wireless/device/txlen
+ chown system system /sys/class/power_supply/wireless/device/ccreset
+ chown system system /sys/class/power_supply/wireless/device/status
+ chown system system /sys/class/power_supply/wireless/device/version
+ chown system system /sys/class/power_supply/wireless/device/features
+ chown system system /sys/class/power_supply/wireless/device/authtype
+
+ # Adaptive charge
+ chown system system /sys/class/power_supply/battery/charge_deadline
+
+ # Battery Defender
+ chown system system /sys/devices/platform/google,battery/power_supply/battery/bd_trickle_cnt
+ chown system system /sys/devices/platform/google,battery/power_supply/battery/bd_trickle_dry_run
+ chown system system /sys/devices/platform/google,battery/power_supply/battery/bd_trickle_enable
+ chown system system /sys/devices/platform/google,battery/power_supply/battery/bd_trickle_recharge_soc
+ chown system system /sys/devices/platform/google,battery/power_supply/battery/bd_trickle_reset_sec
+ chown system system /sys/devices/platform/google,battery/power_supply/battery/bd_clear
+ chown system system /sys/devices/platform/google,battery/power_supply/battery/health_safety_margin
+ chown system system /sys/devices/platform/google,charger/bd_drainto_soc
+ chown system system /sys/devices/platform/google,charger/bd_recharge_soc
+ chown system system /sys/devices/platform/google,charger/bd_recharge_voltage
+ chown system system /sys/devices/platform/google,charger/bd_resume_abs_temp
+ chown system system /sys/devices/platform/google,charger/bd_resume_soc
+ chown system system /sys/devices/platform/google,charger/bd_resume_temp
+ chown system system /sys/devices/platform/google,charger/bd_resume_time
+ chown system system /sys/devices/platform/google,charger/bd_temp_dry_run
+ chown system system /sys/devices/platform/google,charger/bd_temp_enable
+ chown system system /sys/devices/platform/google,charger/bd_trigger_temp
+ chown system system /sys/devices/platform/google,charger/bd_trigger_time
+ chown system system /sys/devices/platform/google,charger/bd_trigger_voltage
+ chown system system /sys/devices/platform/google,charger/bd_clear
+ chown system system /sys/devices/platform/google,charger/charge_start_level
+ chown system system /sys/devices/platform/google,charger/charge_stop_level
+ chown system system /sys/devices/platform/google,cpm/dc_ctl
+
+ # Power Stats HAL
+ chown system system /dev/bbd_pwrstat
+
+ # start watchdogd
+ start watchdogd
+
+ # Add a boost for NNAPI HAL
+ write /sys/kernel/vendor_sched/nnapi_prefer_idle 0
+ write /sys/kernel/vendor_sched/nnapi_uclamp_min 512
+
+ # Add memlat governor settings
+ write /sys/class/devfreq/gs_memlat_devfreq:devfreq_mif_cpu0_memlat@17000010/polling_interval 10
+ write /sys/class/devfreq/gs_memlat_devfreq:devfreq_mif_cpu1_memlat@17000010/polling_interval 10
+ write /sys/class/devfreq/gs_memlat_devfreq:devfreq_mif_cpu2_memlat@17000010/polling_interval 10
+ write /sys/class/devfreq/gs_memlat_devfreq:devfreq_mif_cpu3_memlat@17000010/polling_interval 10
+ write /sys/class/devfreq/gs_memlat_devfreq:devfreq_mif_cpu4_memlat@17000010/polling_interval 10
+ write /sys/class/devfreq/gs_memlat_devfreq:devfreq_mif_cpu5_memlat@17000010/polling_interval 10
+ write /sys/class/devfreq/gs_memlat_devfreq:devfreq_mif_cpu6_memlat@17000010/polling_interval 10
+ write /sys/class/devfreq/gs_memlat_devfreq:devfreq_mif_cpu7_memlat@17000010/polling_interval 10
+ write /sys/class/devfreq/gs_memlat_devfreq:devfreq_mif_cpu0_memlat@17000010/mem_latency/ratio_ceil 400
+ write /sys/class/devfreq/gs_memlat_devfreq:devfreq_mif_cpu1_memlat@17000010/mem_latency/ratio_ceil 400
+ write /sys/class/devfreq/gs_memlat_devfreq:devfreq_mif_cpu2_memlat@17000010/mem_latency/ratio_ceil 400
+ write /sys/class/devfreq/gs_memlat_devfreq:devfreq_mif_cpu3_memlat@17000010/mem_latency/ratio_ceil 400
+ write /sys/class/devfreq/gs_memlat_devfreq:devfreq_mif_cpu4_memlat@17000010/mem_latency/ratio_ceil 400
+ write /sys/class/devfreq/gs_memlat_devfreq:devfreq_mif_cpu5_memlat@17000010/mem_latency/ratio_ceil 400
+ write /sys/class/devfreq/gs_memlat_devfreq:devfreq_mif_cpu6_memlat@17000010/mem_latency/ratio_ceil 800
+ write /sys/class/devfreq/gs_memlat_devfreq:devfreq_mif_cpu7_memlat@17000010/mem_latency/ratio_ceil 800
+
+# For GKI kernel, no device specific modules
+on init
+ setprop vendor.device.modules.ready 1
+
+on init && property:ro.boot.hw.soc.rev=0
+ setprop vendor.powerhal.config powerhint_a0.json
+
+on init && property:ro.boot.hw.soc.rev=1
+ setprop vendor.powerhal.config powerhint_a1.json
+
+on init && property:ro.boot.hw.soc.rev=0
+ # STOPSHIP b/177967147 disable SICD
+ write /sys/devices/platform/cpupm/cpupm/sicd 0
+
+on init && property:ro.boot.hw.soc.rev=1
+ # STOPSHIP b/177967147 disable SICD
+ write /sys/devices/platform/cpupm/cpupm/sicd 0
+
+on late-fs
+ # Start bootanimation class before mount
+ start bootanim
+ class_start animation
+
+ # Mount RW partitions which need run fsck
+ mount_all /vendor/etc/fstab.gs101 --late
+
+on post-fs-data
+ # Log data folder
+ mkdir /data/vendor 0771 radio system
+ mkdir /data/vendor/log 0771 radio system
+ mkdir /data/vendor/log/cbd 0771 radio system
+ mkdir /data/vendor/log/rfsd 0771 radio system
+
+ mkdir /data/exynos/log 0771 radio system
+ mkdir /data/vendor/rild 0771 radio system
+ mkdir /data/vendor/dump 0771 radio system
+ mkdir /data/vendor/slog 0771 system system
+
+ # PixelLogger log paths.
+ mkdir /data/vendor/radio 773 system radio
+ mkdir /data/vendor/radio/logs 773 system radio
+ mkdir /data/vendor/radio/logs/always-on 777 system radio
+
+ # Modem extended log folder
+ mkdir /data/vendor/radio/extended_logs 0770 radio system
+
+ # Modem MDS log folder
+ mkdir /data/vendor/radio/mds 0771 radio system
+
+ # Unzipped modem images folder
+ mkdir /data/vendor/radio/image 0771 radio system
+
+ # Modem stat folder
+ mkdir /data/vendor/modem_stat 0771 radio system
+ write /data/vendor/modem_stat/debug.txt ""
+ chown radio system /data/vendor/modem_stat/debug.txt
+ chmod 0664 /data/vendor/modem_stat/debug.txt
+
+ # Modem replay folder
+ mkdir /mnt/vendor/modem_userdata/replay 0775 radio system
+
+ # Write display MIPI frequency from Modem
+ chown system system /sys/devices/platform/1c2c0000.drmdsim/hs_clock
+ chown system system /sys/devices/platform/1c2d0000.drmdsim/hs_clock
+ chmod 0664 /sys/devices/platform/1c2c0000.drmdsim/hs_clock
+ chmod 0664 /sys/devices/platform/1c2d0000.drmdsim/hs_clock
+
+ setprop vold.post_fs_data_done 1
+ setprop wifi.direct.interface p2p-dev-wlan0
+ setprop wifi.aware.interface aware_nmi0
+
+# IPSEC PIDDIR for VoWiFi
+ mkdir /data/vendor/misc 0771 root system
+ mkdir /data/vendor/misc/vpn 0771 root system
+
+# Permissions Camera
+ mkdir /data/vendor/camera 0770 system camera
+ chmod 0755 /sys/kernel/debug/tracing
+ restorecon /sys/kernel/debug/tracing/trace_marker
+
+ # ranging sensor
+ chown system system /dev/stmvl53l1_ranging
+ chmod 0660 /dev/stmvl53l1_ranging
+
+ # Factory calibration files
+ chmod 0771 /mnt/vendor/persist/camera
+ chmod 0771 /mnt/vendor/persist/camera/OTP_calibration
+ chmod 0771 /mnt/vendor/persist/camera/pdaf_calibration_data
+ chmod 0771 /mnt/vendor/persist/camera/rear
+
+# Audio dump and debug
+ mkdir /data/vendor/audio 0770 audio audio
+
+# Create the directories for Darwinn HAL.
+ mkdir /data/vendor/hal_neuralnetworks_darwinn 0770 system system
+ mkdir /data/vendor/hal_neuralnetworks_darwinn/checksum_cache 0770 system system
+ mkdir /data/vendor/edgetpu 0770 system system
+ mkdir /data/vendor/edgetpu/cache 0770 system system
+
+# Compatibility path for TPU
+ symlink /dev/abrolhos /dev/edgetpu
+
+on zygote-start
+ # For PixelLogger configuration file.
+ chmod 0771 /data/vendor/wifi
+ write /sys/kernel/vendor_sched/sys_uclamp_min 0
+
+on post-fs-data
+ # Create the directories used by the Wireless subsystem
+ mkdir /data/vendor/wifi 0771 wifi wifi
+ mkdir /data/vendor/wifi/wpa 0770 wifi wifi
+ mkdir /data/vendor/wifi/wpa/sockets 0770 wifi wifi
+
+# Gatekeeper data
+ mkdir /data/vendor/gk 0771 system system
+
+# HWC data
+ mkdir /data/vendor/log/hwc 0771 system graphics
+
+# Video data
+ mkdir /data/vendor/media 0700 mediacodec mediacodec
+
+on post-fs-data
+ # GPS
+ mkdir /data/vendor/gps 0771 system system
+ chown system system /data/vendor/gps
+ rm /data/vendor/gps/gps_started
+ rm /data/vendor/gps/glonass_started
+ rm /data/vendor/gps/beidou_started
+ rm /data/vendor/gps/smd_started
+ rm /data/vendor/gps/sv_cno.info
+
+ chown gps system /sys/devices/platform/10940000.spi/spi_master/spi5/spi5.0/nstandby
+ chmod 0664 /dev/ttyBCM
+ chown gps system /dev/ttyBCM
+ chmod 0664 /dev/bbd_control
+ chown gps system /dev/bbd_control
+ chmod 0664 /dev/bbd_patch
+ chown gps system /dev/bbd_patch
+ chmod 0664 /dev/bbd_sensor
+ chown gps system /dev/bbd_sensor
+
+on early-boot
+ # Wait for insmod_sh to finish all common modules
+ wait_for_prop vendor.common.modules.ready 1
+
+ # Wait for insmod_sh to finish all device specific modules
+ wait_for_prop vendor.device.modules.ready 1
+
+ # Other services depend on the properties
+ setprop vendor.all.modules.ready 1
+ setprop vendor.all.devices.ready 1
+
+ # Update dm-verity state and set partition.*.verified properties
+ verity_update_state
+
+ # Permission for Health Storage HAL
+ chown system system /dev/sys/block/bootdevice/manual_gc
+
+ # Permission for Pixelstats
+ chown system system /dev/sys/block/bootdevice/slowio_read_cnt
+ chown system system /dev/sys/block/bootdevice/slowio_write_cnt
+ chown system system /dev/sys/block/bootdevice/slowio_unmap_cnt
+ chown system system /dev/sys/block/bootdevice/slowio_sync_cnt
+
+on boot
+
+ # Allow to access debugfs for system:system
+ chmod 0755 /sys/kernel/debug
+ chown system system /sys/kernel/debug
+
+ #setprop ro.radio.noril no
+
+ # default country code
+ setprop ro.boot.wificountrycode 00
+
+ # Set up kernel tracing, but disable it by default
+ chmod 0222 /sys/kernel/debug/tracing/trace_marker
+ write /sys/kernel/debug/tracing/tracing_on 0
+
+ # Change permission for A-Box firmware logs file & GPR dump
+ chown audioserver system /sys/devices/platform/17c50000.abox/reset
+ chown audioserver system /sys/devices/platform/17c50000.abox/service
+ chown audioserver system /sys/devices/platform/17c50000.abox/0.abox_debug/gpr
+ chown audioserver system /sys/devices/platform/17c50000.abox/0.abox_debug/calliope_sram
+ chown audioserver system /sys/devices/platform/17c50000.abox/0.abox_debug/calliope_dram
+ chown audioserver system /sys/devices/platform/17c50000.abox/0.abox_debug/calliope_iva
+ chown audioserver system /sys/kernel/debug/abox/log-00
+
+# Permission for USB SELECT
+ chown system system /sys/class/android_usb/android0/enable
+ chmod 0660 /sys/class/android_usb/android0/enable
+ chown system system /sys/class/android_usb/android0/idVendor
+ chmod 0660 /sys/class/android_usb/android0/idVendor
+ chown system system /sys/class/android_usb/android0/idProduct
+ chmod 0660 /sys/class/android_usb/android0/idProduct
+ chown system system /sys/class/android_usb/android0/f_diag/clients
+ chmod 0660 /sys/class/android_usb/android0/f_diag/clients
+ chown system system /sys/class/android_usb/android0/functions
+ chmod 0660 /sys/class/android_usb/android0/functions
+ chown system system /sys/class/android_usb/android0/bDeviceClass
+ chmod 0660 /sys/class/android_usb/android0/bDeviceClass
+
+# Permission for UART SWITCH
+ chmod 0660 /sys/class/sec/switch/uart_sel
+ chown system system /sys/class/sec/switch/uart_sel
+
+# VTS sysfs file permission
+ chown audioserver system /sys/devices/platform/13810000.vts/vts_svoice_model
+ chown audioserver system /sys/devices/platform/13810000.vts/vts_google_model
+ chmod 0660 /sys/devices/platform/13810000.vts/vts_svoice_model
+ chmod 0660 /sys/devices/platform/13810000.vts/vts_google_model
+
+# WLAN firmware/driver path
+ chown wifi wifi /sys/module/bcmdhd/parameters/nvram_path
+ chown wifi wifi /sys/module/bcmdhd/parameters/firmware_path
+
+on property:persist.vendor.radio.no_modem_board=1
+ setprop ro.radio.noril yes
+
+on fs
+ mount_all /vendor/etc/fstab.gs101 --early
+ restorecon_recursive /mnt/vendor/efs
+ chown radio system /mnt/vendor/efs
+ restorecon_recursive /mnt/vendor/efs_backup
+ chown radio system /mnt/vendor/efs_backup
+ restorecon_recursive /mnt/vendor/modem_userdata
+ chown radio system /mnt/vendor/modem_userdata
+
+ # for cycle count backup
+ mkdir /mnt/vendor/persist/battery 0700 system system
+
+ restorecon_recursive /mnt/vendor/persist
+ restorecon_recursive /mnt/vendor/persist/aoc
+ restorecon_recursive /mnt/vendor/persist/audio
+ restorecon_recursive /mnt/vendor/persist/sensors
+ restorecon_recursive /mnt/vendor/persist/battery
+ # Set up display-related directories and permissions
+ # Add restorecon_recursive command to make sure the restorecon label is persist_display_file.
+ restorecon_recursive /mnt/vendor/persist/display
+ mkdir /mnt/vendor/persist/data/sfs 0700 system system
+ mkdir /mnt/vendor/persist/data/tz 0700 system system
+ mkdir /mnt/vendor/persist/touch 0770 system system
+ mkdir /mnt/vendor/persist/audio 0770 system system
+ chown media audio /mnt/vendor/persist/audio
+
+# Permissions for ION
+ chmod 0660 /sys/class/ion_cma/ion_video_ext/isolated
+ chown system system /sys/class/ion_cma/ion_video_ext/isolated
+
+# Permissions for hwcomposer
+ chown system system /sys/class/backlight/panel0-backlight/als_table
+ chown system system /sys/class/backlight/panel0-backlight/brightness
+ chown system system /sys/class/backlight/panel0-backlight/dimming_on
+ chown system system /sys/class/backlight/panel0-backlight/hbm_mode
+ chown system system /sys/class/backlight/panel0-backlight/local_hbm_mode
+ chown system system /sys/devices/platform/exynos-drm/primary-panel/gamma
+ chown system system /sys/module/drm/parameters/vblankoffdelay
+ chown system system /sys/class/dqe/atc/ambient_light
+ chown system system /sys/class/dqe/atc/st
+ chown system system /sys/class/dqe/atc/en
+ chown system system /sys/class/dqe/atc/lt
+ chown system system /sys/class/dqe/atc/ns
+ chown system system /sys/class/dqe/atc/dither
+ chown system system /sys/class/dqe/atc/pl_w1
+ chown system system /sys/class/dqe/atc/pl_w2
+ chown system system /sys/class/dqe/atc/ctmode
+ chown system system /sys/class/dqe/atc/pp_en
+ chown system system /sys/class/dqe/atc/upgrade_on
+ chown system system /sys/class/dqe/atc/tdr_max
+ chown system system /sys/class/dqe/atc/tdr_min
+ chown system system /sys/class/dqe/atc/back_light
+ chown system system /sys/class/dqe/atc/dstep
+ chown system system /sys/class/dqe/atc/scale_mode
+ chown system system /sys/class/dqe/atc/threshold_1
+ chown system system /sys/class/dqe/atc/threshold_2
+ chown system system /sys/class/dqe/atc/threshold_3
+ chown system system /sys/class/dqe/atc/gain_limit
+ chown system system /sys/class/dqe/atc/lt_calc_ab_shift
+ chown system system /sys/devices/platform/1c300000.drmdecon/early_wakeup
+ chmod 0220 /sys/devices/platform/1c300000.drmdecon/early_wakeup
+ chown system system /sys/devices/platform/1c302000.drmdecon/early_wakeup
+ chmod 0220 /sys/devices/platform/1c302000.drmdecon/early_wakeup
+
+# Copy DRM Key
+# copy /system/app/wv.keys /factory/wv.keys
+
+# Permission for DRM Key
+# chmod 0644 /factory/wv.keys
+
+# Permission for flashlight control for HAL3.3
+# The Istor espresso board does not have the flash led h/w, So the below permission line are blocked.
+# If you want to test the flashlight in board which have the flash led h/w, Enable the below blocked lines.
+ chmod 0660 /sys/class/camera/flash/rear_torch_flash
+ chown system camera /sys/class/camera/flash/rear_torch_flash
+#load ecd firmware
+ write /proc/ecd/load_firmware 1
+
+service abox /vendor/bin/main_abox 17c50000.abox
+ class late_start
+ user audioserver
+ group audioserver
+ seclabel u:r:abox:s0
+
+service wpa_supplicant /vendor/bin/hw/wpa_supplicant \
+ -O/data/vendor/wifi/wpa/sockets -puse_p2p_group_interface=1p2p_device=1 \
+ -m/vendor/etc/wifi/p2p_supplicant.conf \
+ -g@android:wpa_wlan0 -dd
+ interface android.hardware.wifi.supplicant@1.0::ISupplicant default
+ interface android.hardware.wifi.supplicant@1.1::ISupplicant default
+ interface android.hardware.wifi.supplicant@1.2::ISupplicant default
+ interface android.hardware.wifi.supplicant@1.3::ISupplicant default
+ interface android.hardware.wifi.supplicant@1.4::ISupplicant default
+ socket wpa_wlan0 dgram 660 wifi wifi
+ class main
+ disabled
+ oneshot
+
+
+# GPS
+service lhd /vendor/bin/hw/lhd /vendor/etc/gnss/lhd.conf
+ class main
+ user gps
+ group system inet net_raw sdcard_rw
+ ioprio be 0
+
+service gpsd /vendor/bin/hw/gpsd -c /vendor/etc/gnss/gps.xml
+ class main
+ user gps
+ group system gps radio inet wakelock sdcard_rw net_raw
+ ioprio be 0
+
+service scd /vendor/bin/hw/scd /vendor/etc/gnss/scd.conf
+ class main
+ user gps
+ group system inet net_raw wakelock
+ ioprio be 0
+
+service gnss_service /vendor/bin/hw/android.hardware.gnss@2.1-service-brcm
+ class hal
+ user gps
+ group system gps radio
+
+# disable gps service if no gps h/w
+on property:vendor.ril.cbd.svc=0
+ stop gpsd
+ stop lhd
+ stop scd
+
+# on userdebug and eng builds, enable kgdb on the serial console
+on property:ro.debuggable=1
+ write /sys/module/kgdboc/parameters/kgdboc ttyFIQ1
+ write /sys/module/fiq_debugger/parameters/kgdb_enable 1
+
+# Touch
+on property:vendor.device.modules.ready=1
+ chown system system /sys/class/spi_master/spi11/spi11.0/stm_fts_cmd
+ chown system system /sys/class/spi_master/spi11/spi11.0/glove_mode
+ chown system system /sys/class/spi_master/spi6/spi6.0/stm_fts_cmd
+ chown system system /sys/class/spi_master/spi6/spi6.0/glove_mode
+ chown system system /sys/devices/virtual/sec/tsp/fw_version
+ chown system system /sys/devices/virtual/sec/tsp/cmd
+ chown system system /sys/devices/virtual/sec/tsp/cmd_result
+ chown system system /sys/devices/virtual/sec/tsp/status
+ # Allow access to touch
+ chown system input /dev/touch_offload
+ chmod 660 /dev/touch_offload
+
+# Route touch_sensitivity_mode to persist
+on property:debug.touch_sensitivity_mode=0
+ setprop persist.vendor.touch_sensitivity_mode 0
+
+on property:debug.touch_sensitivity_mode=1
+ setprop persist.vendor.touch_sensitivity_mode 1
+
+on property:init.svc.vendor.charger=running
+ stop keymaster-4-0
+
+ setprop sys.usb.configfs 1
+ setprop vendor.setup.power 1
+
+ # keep one little and one big
+ write /sys/devices/system/cpu/cpu1/online 0
+ write /sys/devices/system/cpu/cpu2/online 0
+ write /sys/devices/system/cpu/cpu3/online 0
+ write /sys/devices/system/cpu/cpu5/online 0
+ write /sys/devices/system/cpu/cpu6/online 0
+ write /sys/devices/system/cpu/cpu7/online 0
+
+on property:sys.boot_completed=1
+
+ # Runtime fs tuning
+ write /sys/block/sda/queue/nr_requests 64
+ write /sys/block/sda/queue/iostats 1
+ write /dev/sys/fs/by-name/userdata/data_io_flag 8
+ write /dev/sys/fs/by-name/userdata/node_io_flag 8
+
+ # Permission for Pixelstats
+ chown system system /dev/sys/fs/by-name/userdata/compr_written_block
+ chown system system /dev/sys/fs/by-name/userdata/compr_saved_block
+ chown system system /dev/sys/fs/by-name/userdata/compr_new_inode
+
+ # Block layer tuning: discard chunk size up to 128MB
+ # Otherwise, contiguous discards can be merged
+ write /sys/block/sda/queue/discard_max_bytes 134217728
+
+ # Enable ZRAM on boot_complete
+ swapon_all /vendor/etc/fstab.${ro.board.platform}
+ write /proc/sys/vm/swappiness 100
+
+ # Back to default VM settings
+ write /proc/sys/vm/dirty_expire_centisecs 3000
+ write /proc/sys/vm/dirty_background_ratio 10
+
+ # Enable UFS powersaving
+ write /dev/sys/block/bootdevice/clkgate_enable 1
+
+ # Setup final cpuset
+ write /dev/cpuset/top-app/cpus 0-7
+ write /dev/cpuset/foreground/cpus 0-3,4-5
+ write /dev/cpuset/background/cpus 0-1
+ write /dev/cpuset/system-background/cpus 0-3
+ write /dev/cpuset/restricted/cpus 0-3
+ write /dev/cpuset/camera-daemon/cpus 0-7
+ setprop vendor.powerhal.init 1
+
+ # Setup final cpu.uclamp
+ write /sys/kernel/vendor_sched/ta_uclamp_min 1
+ write /sys/kernel/vendor_sched/fg_uclamp_min 0
+ write /sys/kernel/vendor_sched/bg_uclamp_max 615
+ write /sys/kernel/vendor_sched/sys_prefer_idle 0
+ # cfs_rq clamp is using tg->uclamp setting
+ # align it with the vendor_group setting
+ write /dev/cpuctl/background/cpu.uclamp.max 60
+ write /sys/kernel/vendor_sched/bg_group_throttle 615
+
+ # Setup groups for SF (RT used for SF RE, SF used for SF main)
+ write /sys/kernel/vendor_sched/rt_uclamp_min 125
+ write /sys/kernel/vendor_sched/rt_prefer_idle 1
+ write /sys/kernel/vendor_sched/sf_uclamp_min 30
+ write /sys/kernel/vendor_sched/sf_prefer_idle 1
+
+ # Setup cpu.shares to throttle background group at 5%
+ write /dev/cpuctl/background/cpu.shares 1024
+ write /dev/cpuctl/system/cpu.shares 20480
+ # We only have system and background groups holding tasks and the groups below are empty
+ write /dev/cpuctl/camera-daemon/cpu.shares 20480
+ write /dev/cpuctl/foreground/cpu.shares 20480
+ write /dev/cpuctl/nnapi-hal/cpu.shares 20480
+ write /dev/cpuctl/rt/cpu.shares 20480
+ write /dev/cpuctl/system-background/cpu.shares 20480
+ write /dev/cpuctl/top-app/cpu.shares 20480
+
+ # gvotables for dumpstate
+ chown system system /sys/kernel/debug/gvotables
+
+ # AOC reset permission
+ chown root system /sys/devices/platform/19000000.aoc/reset
+ chmod 0220 /sys/devices/platform/19000000.aoc/reset
+
+# charger driver exposes now finer grain control, map demo mode to those properties
+# NOTE: demo mode can only be exit wiping data (which reset the persist properties)
+on property:sys.retaildemo.enabled=1
+ setprop persist.vendor.charge.stop.level 35
+ setprop persist.vendor.charge.start.level 30
+
+# Test Harness Mode default battery profile.
+on property:persist.sys.test_harness=1 && property:persist.vendor.testing_battery_profile=0
+ setprop persist.vendor.charge.stop.level 70
+ setprop persist.vendor.charge.start.level 35
+ setprop vendor.battery.defender.disable 1
+
+# Extremely restricted battery profile.
+on property:persist.sys.test_harness=1 && property:persist.vendor.testing_battery_profile=1
+ setprop persist.vendor.charge.stop.level 50
+ setprop persist.vendor.charge.start.level 35
+ setprop vendor.battery.defender.disable 1
+
+# Normal behavior (as if the device was a regular device)
+on property:persist.sys.test_harness=1 && property:persist.vendor.testing_battery_profile=2
+ setprop persist.vendor.charge.stop.level 100
+ setprop persist.vendor.charge.start.level 0
+
+# Unrestricted, allows charging to 100%
+on property:persist.sys.test_harness=1 && property:persist.vendor.testing_battery_profile=3
+ setprop persist.vendor.charge.stop.level 100
+ setprop persist.vendor.charge.start.level 0
+ setprop vendor.battery.defender.disable 1
+
+service insmod_sh_common /vendor/bin/init.insmod.sh /vendor/etc/init.insmod.gs101.cfg
+ class main
+ user root
+ group root system
+ disabled
+ oneshot
+
+# Set watchdog timer to 30 seconds and pet it every 10 seconds to get a 20 second margin
+service watchdogd /system/bin/watchdogd 10 20
+ class core
+ oneshot
+ seclabel u:r:watchdogd:s0
+
+# bugreport is triggered by holding down volume down, volume up and power
+service bugreport /system/bin/dumpstate -d -p -z
+ class main
+ disabled
+ oneshot
+ keycodes 114 115 116
+
+# Proxy for Secure Storage
+on post-fs-data
+ mkdir /data/vendor/rebootescrow 0770 hsm hsm
+ start vendor.rebootescrow-citadel
+ mkdir /data/vendor/ss 0770 root system
+ mkdir /mnt/vendor/persist/ss 0770 root system
+ restorecon_recursive /mnt/vendor/persist/ss
+ symlink /mnt/vendor/persist/ss /data/vendor/ss/persist
+ chown root system /data/vendor/ss/persist
+ chmod 0770 /data/vendor/ss/persist
+
+ restart storageproxyd
+
+service storageproxyd /vendor/bin/storageproxyd -d /dev/trusty-ipc-dev0 \
+ -r /dev/sg1 -p /data/vendor/ss -t ufs
+ class early_hal
+ user root
+
+# Write build info to kdebuginfo
+on property:ro.build.fingerprint=*
+ write /sys/module/debug_kinfo/parameters/build_info ${ro.build.fingerprint}
+
+# Bluetooth
+on post-fs-data
+ chown bluetooth system /sys/devices/platform/175b0000.serial/serial0/serial0-0/bluetooth/hci0/rfkill0/state
+ chown bluetooth system /sys/devices/platform/odm/odm:btbcm/rfkill/rfkill0/state
+ chown bluetooth system /sys/devices/platform/odm/odm:btbcm/rfkill/rfkill2/state
+ chown bluetooth system /proc/bluetooth/sleep/btwake
+ chown bluetooth system /proc/bluetooth/sleep/lpm
+ chown bluetooth system /proc/bluetooth/sleep/btwrite
+
+# ODPM
+on fs
+ chown system system /sys/devices/platform/acpm_mfd_bus@17500000/i2c-6/i2c-s2mpg10mfd/s2mpg10-meter/s2mpg10-odpm/iio:device0/enabled_rails
+ chown system system /sys/devices/platform/acpm_mfd_bus@17510000/i2c-7/i2c-s2mpg11mfd/s2mpg11-meter/s2mpg11-odpm/iio:device1/enabled_rails
+
+ chown system system /sys/devices/platform/acpm_mfd_bus@17500000/i2c-7/i2c-s2mpg10mfd/s2mpg10-meter/s2mpg10-odpm/iio:device0/enabled_rails
+ chown system system /sys/devices/platform/acpm_mfd_bus@17510000/i2c-8/i2c-s2mpg11mfd/s2mpg11-meter/s2mpg11-odpm/iio:device1/enabled_rails
+
+on post-fs-data
+ mkdir /data/vendor/powerstats 0771 system system
+ chown system system /data/vendor/powerstats
+
+on property:vendor.thermal.link_ready=1
+ # BCL
+ write /dev/thermal/tz-by-name/smpl_gm/policy user_space
+ write /dev/thermal/tz-by-name/vdroop1/policy user_space
+ write /dev/thermal/tz-by-name/vdroop2/policy user_space
+ write /dev/thermal/tz-by-name/ocp_cpu1/policy user_space
+ write /dev/thermal/tz-by-name/ocp_cpu2/policy user_space
+ write /dev/thermal/tz-by-name/ocp_tpu/policy user_space
+ write /dev/thermal/tz-by-name/ocp_gpu/policy user_space
+ write /dev/thermal/tz-by-name/soft_ocp_cpu1/policy user_space
+ write /dev/thermal/tz-by-name/soft_ocp_cpu2/policy user_space
+ write /dev/thermal/tz-by-name/soft_ocp_tpu/policy user_space
+ write /dev/thermal/tz-by-name/soft_ocp_gpu/policy user_space
+ write /dev/thermal/tz-by-name/soc/policy user_space
+ write /dev/thermal/tz-by-name/batoilo/policy user_space
+ write /sys/devices/virtual/pmic/mitigation/triggered_lvl/soft_ocp_cpu2_lvl 9000
+ write /sys/devices/virtual/pmic/mitigation/triggered_lvl/soft_ocp_gpu_lvl 9000
+ write /sys/devices/virtual/pmic/mitigation/triggered_lvl/soft_ocp_tpu_lvl 8500
+ chown system system /dev/thermal/tz-by-name/soc/mode
+ chown system system /dev/thermal/tz-by-name/batoilo/trip_point_0_temp
+ chown system system /dev/thermal/tz-by-name/batoilo/trip_point_0_hyst
+ chown system system /dev/thermal/tz-by-name/vdroop2/trip_point_0_temp
+ chown system system /dev/thermal/tz-by-name/vdroop2/trip_point_0_hyst
+ chown system system /dev/thermal/tz-by-name/vdroop1/trip_point_0_temp
+ chown system system /dev/thermal/tz-by-name/vdroop1/trip_point_0_hyst
+ chown system system /dev/thermal/tz-by-name/smpl_gm/trip_point_0_temp
+ chown system system /dev/thermal/tz-by-name/smpl_gm/trip_point_0_hyst
+ chown system system /dev/thermal/tz-by-name/ocp_cpu1/trip_point_0_temp
+ chown system system /dev/thermal/tz-by-name/ocp_cpu1/trip_point_0_hyst
+ chown system system /dev/thermal/tz-by-name/ocp_cpu2/trip_point_0_temp
+ chown system system /dev/thermal/tz-by-name/ocp_cpu2/trip_point_0_hyst
+ chown system system /dev/thermal/tz-by-name/ocp_tpu/trip_point_0_temp
+ chown system system /dev/thermal/tz-by-name/ocp_tpu/trip_point_0_hyst
+ chown system system /dev/thermal/tz-by-name/ocp_gpu/trip_point_0_temp
+ chown system system /dev/thermal/tz-by-name/ocp_gpu/trip_point_0_hyst
+ chown system system /dev/thermal/tz-by-name/soft_ocp_cpu1/trip_point_0_temp
+ chown system system /dev/thermal/tz-by-name/soft_ocp_cpu1/trip_point_0_hyst
+ chown system system /dev/thermal/tz-by-name/soft_ocp_cpu2/trip_point_0_temp
+ chown system system /dev/thermal/tz-by-name/soft_ocp_cpu2/trip_point_0_hyst
+ chown system system /dev/thermal/tz-by-name/soft_ocp_tpu/trip_point_0_temp
+ chown system system /dev/thermal/tz-by-name/soft_ocp_tpu/trip_point_0_hyst
+ chown system system /dev/thermal/tz-by-name/soft_ocp_gpu/trip_point_0_temp
+ chown system system /dev/thermal/tz-by-name/soft_ocp_gpu/trip_point_0_hyst
+ chown system system /dev/thermal/tz-by-name/soc/trip_point_0_temp
+ chown system system /dev/thermal/tz-by-name/soc/trip_point_0_hyst
+ # Thermal
+ chown system system /dev/thermal/tz-by-name/quiet_therm/trip_point_0_temp
+ chown system system /dev/thermal/tz-by-name/quiet_therm/trip_point_0_hyst
+ chown system system /dev/thermal/tz-by-name/neutral_therm/trip_point_0_temp
+ chown system system /dev/thermal/tz-by-name/neutral_therm/trip_point_0_hyst
+ chown system system /dev/thermal/tz-by-name/usb_pwr_therm2/trip_point_0_temp
+ chown system system /dev/thermal/tz-by-name/usb_pwr_therm2/trip_point_0_hyst
+ chown system system /dev/thermal/tz-by-name/usb_pwr_therm2/emul_temp
+ chown system system /dev/thermal/cdev-by-name/thermal-cpufreq-0/user_vote
+ chown system system /dev/thermal/cdev-by-name/thermal-cpufreq-1/user_vote
+ chown system system /dev/thermal/cdev-by-name/thermal-cpufreq-2/user_vote
+ chown system system /dev/thermal/cdev-by-name/thermal-gpufreq-0/user_vote
+ chown system system /dev/thermal/cdev-by-name/tpu_cooling/user_vote
+ chown system system /dev/thermal/cdev-by-name/fcc/cur_state
+ chown system system /dev/thermal/cdev-by-name/dc_icl/cur_state
+ chown system system /dev/thermal/cdev-by-name/wlc_fcc/cur_state
+ chown system system /dev/thermal/cdev-by-name/usbc-port/cur_state
+
+# Create thermal symlink in off charging mode
+on charger
+ mkdir /dev/thermal 0750 system system
+ mkdir /dev/thermal/tz-by-name 0750 system system
+ mkdir /dev/thermal/cdev-by-name 0750 system system
+ start vendor.thermal.symlinks
+ write /sys/kernel/vendor_sched/sys_uclamp_min 0
+ write /sys/kernel/vendor_sched/sys_prefer_idle 0
+
+# Launch thermal hal in off charging mode
+on charger && property:vendor.thermal.link_ready=1
+ start vendor.thermal-hal-2-0
+
+on property:vendor.disable.bcl.control=1
+ write /sys/devices/virtual/pmic/mitigation/instruction/enable_mitigation 0
+
+on property:vendor.disable.bcl.control=0
+ write /sys/devices/virtual/pmic/mitigation/instruction/enable_mitigation 1
+
+# UFS
+on property:ro.boot.mode=charger && property:init.svc.vendor.charger=running
+ # Enable UFS powersaving in Off Mode Charger
+ write /dev/sys/block/bootdevice/clkgate_enable 1
diff --git a/conf/init.gs101.usb.rc b/conf/init.gs101.usb.rc
new file mode 100644
index 0000000..7c76381
--- /dev/null
+++ b/conf/init.gs101.usb.rc
@@ -0,0 +1,122 @@
+on early-boot
+ mkdir /config/usb_gadget/g1
+ mkdir /config/usb_gadget/g1/strings/0x409
+ mkdir /config/usb_gadget/g1/configs/b.1
+ write /config/usb_gadget/g1/idVendor 0x18d1
+ write /config/usb_gadget/g1/strings/0x409/serialnumber ${ro.serialno}
+ write /config/usb_gadget/g1/strings/0x409/manufacturer ${ro.product.manufacturer}
+ write /config/usb_gadget/g1/strings/0x409/product ${ro.product.model}
+ write /config/usb_gadget/g1/configs/b.1/MaxPower 0x384
+ write /config/usb_gadget/g1/os_desc/b_vendor_code 0x1
+ write /config/usb_gadget/g1/os_desc/qw_sign "MSFT100"
+
+ # ffs function
+ mkdir /config/usb_gadget/g1/functions/ffs.adb 0770 shell shell
+ mkdir /config/usb_gadget/g1/functions/ffs.mtp
+ mkdir /config/usb_gadget/g1/functions/ffs.ptp
+ mkdir /dev/usb-ffs 0775 shell shell
+ mkdir /dev/usb-ffs/adb 0770 shell shell
+ mkdir /dev/usb-ffs/mtp 0770 mtp mtp
+ mkdir /dev/usb-ffs/ptp 0770 mtp mtp
+ mount functionfs adb /dev/usb-ffs/adb rmode=0770,fmode=0660,uid=2000,gid=2000,no_disconnect=1
+ mount functionfs mtp /dev/usb-ffs/mtp rmode=0770,fmode=0660,uid=1024,gid=1024,no_disconnect=1
+ mount functionfs ptp /dev/usb-ffs/ptp rmode=0770,fmode=0660,uid=1024,gid=1024,no_disconnect=1
+ setprop sys.usb.mtp.device_type 3
+ setprop sys.usb.mtp.batchcancel true
+ symlink /config/usb_gadget/g1/configs/b.1 /config/usb_gadget/g1/os_desc/b.1
+
+ # mtp function
+ mkdir /config/usb_gadget/g1/functions/mtp.gs0
+
+ # ptp function
+ mkdir /config/usb_gadget/g1/functions/ptp.gs1
+
+ # accessory function
+ mkdir /config/usb_gadget/g1/functions/accessory.gs2
+
+ # audio_source function
+ mkdir /config/usb_gadget/g1/functions/audio_source.gs3
+
+ # rndis function
+ mkdir /config/usb_gadget/g1/functions/rndis.gs4
+ # Modify class/subclass/protocol for rndis.gs4
+ # Remote NDIS: Class: Wireless Controller (0xe0), Subclass: 0x1, Protocol: 0x3
+ write /config/usb_gadget/g1/functions/rndis.gs4/class e0
+ write /config/usb_gadget/g1/functions/rndis.gs4/subclass 01
+ write /config/usb_gadget/g1/functions/rndis.gs4/protocol 03
+ write /config/usb_gadget/g1/functions/rndis.gs4/os_desc/interface.ncm/compatible_id RNDIS
+ write /config/usb_gadget/g1/functions/rndis.gs4/ifname rndis%d
+ setprop vendor.usb.rndis.config rndis.gs4
+
+ # midi function
+ mkdir /config/usb_gadget/g1/functions/midi.gs5
+
+ # acm function
+ mkdir /config/usb_gadget/g1/functions/acm.gs6
+
+ # dm function
+ mkdir /config/usb_gadget/g1/functions/dm.gs7
+
+ # uts function
+ mkdir /config/usb_gadget/g1/functions/uts.gs8
+
+ # ncm function
+ mkdir /config/usb_gadget/g1/functions/ncm.gs9
+ write /config/usb_gadget/g1/functions/ncm.gs9/os_desc/interface.ncm/compatible_id WINNCM
+ write /config/usb_gadget/g1/functions/ncm.gs9/ifname ncm%d
+
+ # etr_miu function
+ mkdir /config/usb_gadget/g1/functions/etr_miu.gs11
+
+ setprop vendor.usb.functions.ready 1
+
+on boot
+ write /config/usb_gadget/g1/bcdDevice 0x0510
+ # Use USB Gadget HAL
+ setprop sys.usb.configfs 2
+
+on property:sys.usb.ffs.ready=1 && property:sys.usb.config=adb && property:sys.usb.configfs=1
+ write /config/usb_gadget/g1/idProduct 0x4EE7
+ write /config/usb_gadget/g1/idVendor 0x18D1
+
+on property:vendor.usb.config=*
+ start usbd
+
+on property:persist.vendor.usb.usbradio.config=*
+ start usbd
+
+on property:vendor.usb.dwc3_irq=medium
+ exec /vendor/bin/hw/set_usb_irq.sh medium
+
+on property:vendor.usb.dwc3_irq=big
+ exec /vendor/bin/hw/set_usb_irq.sh big
+
+on charger
+ mkdir /config/usb_gadget/g1
+ mkdir /config/usb_gadget/g1/strings/0x409
+ mkdir /config/usb_gadget/g1/configs/b.1
+ write /config/usb_gadget/g1/strings/0x409/serialnumber ${ro.serialno}
+ write /config/usb_gadget/g1/strings/0x409/manufacturer ${ro.product.manufacturer}
+ write /config/usb_gadget/g1/strings/0x409/product ${ro.product.model}
+ write /config/usb_gadget/g1/configs/b.1/MaxPower 0x384
+ write /config/usb_gadget/g1/os_desc/b_vendor_code 0x1
+ write /config/usb_gadget/g1/os_desc/qw_sign "MSFT100"
+ write /config/usb_gadget/g1/bcdDevice 0x0510
+ mkdir /config/usb_gadget/g1/functions/midi.gs5
+ symlink /config/usb_gadget/g1/configs/b.1 /config/usb_gadget/g1/os_desc/b.1
+ setprop sys.usb.controller "11110000.dwc3"
+ setprop sys.usb.configfs 1
+
+on property:ro.bootmode=charger
+ setprop sys.usb.config charger
+
+on property:sys.usb.config=charger && property:sys.usb.configfs=1
+ write /config/usb_gadget/g1/idVendor 0x18d1
+ write /config/usb_gadget/g1/idProduct 0x4eea
+ write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "midi"
+ symlink /config/usb_gadget/g1/functions/midi.gs5 /config/usb_gadget/g1/configs/b.1/f1
+ write /config/usb_gadget/g1/UDC ${sys.usb.controller}
+ setprop sys.usb.state ${sys.usb.config}
+
+on property:vendor.usb.contaminantdisable=true
+ exec /vendor/bin/hw/disable_contaminant_detection.sh
diff --git a/conf/init.recovery.device.rc b/conf/init.recovery.device.rc
new file mode 100644
index 0000000..7b34120
--- /dev/null
+++ b/conf/init.recovery.device.rc
@@ -0,0 +1,18 @@
+on init
+ setprop sys.usb.controller "11110000.dwc3"
+ setprop sys.usb.configfs 1
+
+on init && property:ro.debuggable=1 && property:ro.boot.mode=recovery
+ start recovery-console
+
+service recovery-console /system/bin/sh
+ class core
+ console
+ disabled
+ user root
+ group root shell log readproc
+ seclabel u:r:su:s0
+ setenv HOSTNAME console
+
+on fs && property:sys.usb.configfs=1
+ write /config/usb_gadget/g1/configs/b.1/MaxPower 900
diff --git a/conf/recovery.wipe b/conf/recovery.wipe
new file mode 100644
index 0000000..9ee7a1e
--- /dev/null
+++ b/conf/recovery.wipe
@@ -0,0 +1,3 @@
+# All the partitions to be wiped (in order) under recovery.
+/dev/block/by-name/userdata
+/dev/block/by-name/metadata
diff --git a/conf/soundtrigger_conf.h b/conf/soundtrigger_conf.h
new file mode 100644
index 0000000..1263c60
--- /dev/null
+++ b/conf/soundtrigger_conf.h
@@ -0,0 +1,109 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+#ifndef __EXYNOS_SOUNDTRIGGERCONF_H__
+#define __EXYNOS_SOUNDTRIGGERCONF_H__
+
+/********************************************************************/
+/** ALSA Framework Sound Card & Sound Device Information */
+/** */
+/** You can find Sound Device Name from /dev/snd. */
+/** Sound Device Name consist of Card Number & Device Number. */
+/** */
+/********************************************************************/
+
+/* Sound Card and Mixer card Numbers based on Target Device */
+/* You have to match this number with real kernel information */
+#define VTS_SOUND_CARD 0
+#define VTS_MIXER_CARD 0
+
+/* PCM Nodes number for seamless and normal recording*/
+#define VTS_TRICAP_DEVICE_NODE 13
+#define VTS_RECORD_DEVICE_NODE 14
+
+/* sysfs file paths for loading model binaries into VTS kernel driver */
+#define VTS_HOTWORD_MODEL "/sys/devices/platform/13810000.vts/vts_google_model"
+#define VTS_SVOICE_MODEL "/sys/devices/platform/13810000.vts/vts_svoice_model"
+
+#define AUDIO_PRIMARY_HAL_LIBRARY_PATH "/vendor/lib/libaudioproxy.so"
+
+// VTS Capture(Input) PCM Configuration
+#define DEFAULT_VTS_CHANNELS 1 // Mono
+#define DEFAULT_VTS_SAMPLING_RATE 16000 // 16KHz
+
+#define PRIMARY_VTS_PERIOD_SIZE 160 // 160 frames, 10ms in case of 16KHz Stream
+#define PRIMARY_VTS_PERIOD_COUNT 1024 // Buffer count => Total 327680 Bytes = 160 * 1(Mono) * 2(16bit PCM) * 1024(Buffer count)
+
+/* VTS mixer controls */
+#define VTS_ACTIVE_KEYPHRASE_CTL_NAME "VTS Active Keyphrase" /* default: 0-"SVOICE", 1-"GOOGLE", 2-"SENSORY" */
+#define VTS_EXECUTION_MODE_CTL_NAME "VTS Execution Mode" /* 0-"OFF-MODE", 1-"VOICE-TRIG-MODE", 2-"SOUND-DECTECT-MODE", 3-"VT-ALWAYS-MODE" 4-"GOOGLE-TRI-MODE */
+#define VTS_VOICERECOGNIZE_START_CTL_NAME "VTS VoiceRecognize Start" /* 0-"Off", 1-On" */
+#define VTS_VOICETRIGGER_VALUE_CTL_NAME "VTS VoiceTrigger Value" /* 0 ~ 2000 ms*/
+
+#define MAIN_MIC_CONTROL_COUNT 8
+#define HEADSET_MIC_CONTROL_COUNT 8
+#define MODEL_RECOGNIZE_CONTROL_COUNT 4
+
+/* MIC Mixer controls for VTS */
+char *main_mic_ctlname[] = {
+ "VTS DMIC SEL",
+ "VTS DMIC IF RCH EN",
+ "VTS DMIC IF LCH EN",
+ "VTS SYS SEL",
+ "VTS HPF EN",
+ "VTS HPF SEL",
+ "DMIC1 Switch",
+ "VTS Virtual Output Mux",
+};
+
+char *headset_mic_ctlname[] = {
+ "AUXPDM1 Rate",
+ "AUXPDM1 Input",
+ "AUXPDM1 Output Switch",
+ "AUXPDM Switch",
+ "VTS DMIC SEL",
+ "VTS DMIC IF RCH EN",
+ "VTS DMIC IF LCH EN",
+ "VTS SYS SEL",
+ "VTS HPF EN",
+ "VTS HPF SEL",
+};
+
+/* MIC Mixer control values */
+/* FIXME : Double check this values */
+int main_mic_ctlvalue[] = {
+ 0, //"VTS DMIC SEL",
+ 1, //"VTS DMIC IF RCH EN",
+ 1, //"VTS DMIC IF LCH EN",
+ 1, //"VTS SYS SEL",
+ 1, //"VTS HPF EN",
+ 1, //"VTS HPF SEL",
+ 1, //"DMIC1 Switch",
+ 1, //"VTS Virtual Output Mux",
+};
+
+int headset_mic_ctlvalue[] = {
+ 3, //"AUXPDM1 Rate",
+ 0, //"AUXPDM1 Input",
+ 1, //"AUXPDM1 Output Switch",
+ 1, //"AUXPDM Switch",
+ 1, //"VTS DMIC SEL",
+ 1, //"VTS DMIC IF RCH EN",
+ 1, //"VTS DMIC IF LCH EN",
+ 1, //"VTS SYS SEL",
+ 1, //"VTS HPF EN",
+ 1, //"VTS HPF SEL",
+};
+#endif // __EXYNOS_SOUNDTRIGGERCONF_H__
diff --git a/conf/ueventd.gs101.rc b/conf/ueventd.gs101.rc
new file mode 100644
index 0000000..88ee00b
--- /dev/null
+++ b/conf/ueventd.gs101.rc
@@ -0,0 +1,211 @@
+/dev/mali0 0666 system system
+/dev/ion 0666 system system
+/dev/ump 0666 system graphics
+/dev/exynos-mem 0660 system graphics
+/dev/video0 0660 system camera
+/dev/video1 0660 system camera
+/dev/video2 0660 system camera
+/dev/video3 0660 system camera
+/dev/video20 0660 system system
+# media0 is used for GSC, DECON, etc
+/dev/media0 0660 system camera
+# media1 is used for DECON Ext WB
+/dev/media1 0660 system graphics
+# Various devices use the v4l-subdev interface
+# We declare all such nodes simultaneously here
+/dev/v4l-subdev0 0660 system camera
+/dev/v4l-subdev1 0660 system camera
+/dev/v4l-subdev2 0660 system camera
+/dev/v4l-subdev3 0660 system camera
+/dev/v4l-subdev4 0660 system camera
+/dev/v4l-subdev5 0660 system camera
+/dev/v4l-subdev6 0660 system camera
+/dev/v4l-subdev7 0660 system camera
+/dev/v4l-subdev8 0660 system camera
+/dev/v4l-subdev9 0660 system camera
+/dev/v4l-subdev10 0660 system camera
+/dev/v4l-subdev11 0660 system camera
+/dev/v4l-subdev12 0660 system camera
+/dev/v4l-subdev13 0660 system camera
+/dev/v4l-subdev14 0660 system camera
+/dev/v4l-subdev15 0660 system camera
+/dev/v4l-subdev16 0660 system camera
+/dev/v4l-subdev17 0660 system camera
+/dev/v4l-subdev18 0660 system camera
+/dev/v4l-subdev19 0660 system camera
+# v4l-subdev20 is used for DECON Ext WB
+/dev/v4l-subdev20 0660 system graphics
+/dev/v4l-subdev21 0660 system graphics
+/dev/v4l-subdev32 0660 system graphics
+
+# gscalers
+/dev/video23 0660 media graphics
+/dev/video26 0660 media graphics
+/dev/video24 0660 media graphics
+/dev/video27 0660 media graphics
+/dev/video29 0660 media graphics
+/dev/video30 0660 media graphics
+# video31 is used for DECON Ext WB
+/dev/video31 0660 media graphics
+
+# mscalers
+/dev/video50 0660 mediacodec drmrpc
+/dev/m2m1shot_scaler0 0660 mediacodec drmrpc
+
+/dev/video55 0666 system graphics
+/dev/g2d 0660 system graphics
+/dev/fimg2d 0666 system graphics
+/dev/i2c-2 0660 system system
+/dev/HPD 0660 system system
+
+# wfd
+/dev/tsmux 0660 media graphics
+/dev/repeater 0660 media graphics
+
+# mfc
+/dev/video6 0660 mediacodec mediadrm
+/dev/video7 0660 mediacodec mediadrm
+/dev/video8 0660 mediacodec mediadrm
+/dev/video9 0660 mediacodec mediadrm
+/dev/video10 0660 mediacodec mediadrm
+/dev/video11 0660 mediacodec mediadrm
+
+# camera
+/dev/media2 0660 media media
+/dev/hdcp2 0660 media media
+
+# jpeg
+/dev/m2m1shot_jpeg 0660 media media
+/dev/video12 0660 cameraserver media
+
+# audio
+/dev/seiren 0660 system audio
+/dev/acd-audio_output_tuning 0660 system audio
+/dev/acd-audio_bulk_tx 0660 system audio
+/dev/acd-audio_bulk_rx 0660 system audio
+/dev/acd-audio_input_tuning 0660 system audio
+/dev/acd-audio_input_bulk_tx 0660 system audio
+/dev/acd-audio_input_bulk_rx 0660 system audio
+/dev/acd-sound_trigger 0660 system audio
+/dev/acd-hotword_notification 0660 system audio
+/dev/acd-hotword_pcm 0660 system audio
+/dev/acd-ambient_pcm 0660 system audio
+/dev/acd-model_data 0660 system audio
+/dev/acd-debug 0660 system audio
+/dev/acd-audio_tap* 0660 system audio
+/dev/acd-audio_dcdoff_ref 0660 system audio
+/dev/amcs 0660 system audio
+
+# Secure MEM driver
+/dev/s5p-smem 0660 drm drmrpc
+
+# cbd
+/dev/block/by-name/modem 0640 root radio
+/dev/block/by-name/modem_a 0640 root radio
+/dev/block/by-name/modem_b 0640 root radio
+
+# DM tools
+/dev/umts_dm0 0660 system system
+/dev/umts_router 0660 system system
+/dev/ttyGS0 0660 system system
+/dev/ttyGS1 0660 system system
+/dev/ttyGS2 0660 system system
+
+# IPC RIL
+/dev/umts_boot0 0660 radio system
+/dev/umts_ipc0 0660 radio radio
+/dev/umts_ipc1 0660 radio radio
+/dev/umts_rfs0 0660 radio radio
+
+# IPC OEM
+/dev/oem_ipc* 0660 radio radio
+
+# interactive governor parameters
+/sys/devices/system/cpu/cpu* cpufreq/interactive/timer_rate 0660 system system
+/sys/devices/system/cpu/cpu* cpufreq/interactive/timer_slack 0660 system system
+/sys/devices/system/cpu/cpu* cpufreq/interactive/min_sample_time 0660 system system
+/sys/devices/system/cpu/cpu* cpufreq/interactive/hispeed_freq 0660 system system
+/sys/devices/system/cpu/cpu* cpufreq/interactive/target_loads 0660 system system
+/sys/devices/system/cpu/cpu* cpufreq/interactive/go_hispeed_load 0660 system system
+/sys/devices/system/cpu/cpu* cpufreq/interactive/above_hispeed_delay 0660 system system
+/sys/devices/system/cpu/cpu* cpufreq/interactive/boost 0660 system system
+/sys/devices/system/cpu/cpu* cpufreq/interactive/boostpulse 0200 system system
+/sys/devices/system/cpu/cpu* cpufreq/interactive/input_boost 0660 system system
+/sys/devices/system/cpu/cpu* cpufreq/interactive/boostpulse_duration 0660 system system
+/sys/devices/system/cpu/cpu* cpufreq/interactive/io_is_busy 0660 system system
+
+# Vision (VPU, SCORE)
+/dev/vertex0 0660 media media
+/dev/vertex1 0660 media media
+
+# AoC
+/dev/aoc 0660 system system
+
+# Sensors (USF)
+/dev/acd-com.google.usf 0660 system system
+
+# LWIS
+/dev/lwis* 0660 system system
+
+# NFC
+/dev/st21nfc 0660 nfc nfc
+
+# SecureElement
+/dev/st54j_se 0660 secure_element secure_element
+/dev/st54spi 0660 secure_element secure_element
+/dev/st33spi 0660 secure_element secure_element
+
+#bigocean
+/dev/bigocean 0660 mediacodec mediadrm
+
+# Trusty
+/dev/trusty-ipc-dev0 0660 system drmrpc
+/dev/trusty-log0 0660 system system
+
+# RPMB
+/dev/sg1 0660 system system
+
+# Citadel
+/dev/gsc0 0660 hsm hsm
+
+# Storage: for factory reset protection feature
+/dev/block/by-name/frp 0660 system system
+
+# Storage: for calibration data sideload feature
+/dev/block/by-name/mfg_data 0660 system system
+
+# TPU
+/dev/abrolhos 0660 system system
+
+# TOE
+/dev/dit2 0660 radio radio
+
+# Bluetooth
+/dev/ttySAC16 0660 bluetooth system
+
+# BT Wifi Coexistence
+/dev/wbrc 0660 system system
+
+# TUI
+/dev/tui-driver 0660 system system
+
+# DMA-BUF heaps
+/dev/dma_heap/crypto 0444 system graphics
+/dev/dma_heap/crypto-uncached 0444 system graphics
+/dev/dma_heap/faceauth_tpu-secure 0444 system graphics
+/dev/dma_heap/faimg-secure 0444 system graphics
+/dev/dma_heap/famodel-secure 0444 system graphics
+/dev/dma_heap/faprev-secure 0444 system graphics
+/dev/dma_heap/farawimg-secure 0444 system graphics
+/dev/dma_heap/tui-secure 0444 system graphics
+/dev/dma_heap/vframe-secure 0444 system drmrpc
+/dev/dma_heap/video_system 0444 system drmrpc
+/dev/dma_heap/video_system-uncached 0444 system drmrpc
+/dev/dma_heap/vscaler-secure 0444 system graphics
+/dev/dma_heap/vstream-secure 0444 system drmrpc
+/dev/dma_heap/sensor_direct_heap 0444 system graphics
+/dev/dma_heap/aaudio_playback_heap 0444 system audio
+/dev/dma_heap/aaudio_capture_heap 0444 system audio
+
+# Direct Charging
+/dev/logbuffer_pca9468_tcpm 0600 system system
diff --git a/confirmationui/confirmationui.mk b/confirmationui/confirmationui.mk
new file mode 100644
index 0000000..85f77c9
--- /dev/null
+++ b/confirmationui/confirmationui.mk
@@ -0,0 +1,9 @@
+# Trusty ConfirmationUI HAL
+PRODUCT_PACKAGES += \
+ android.hardware.confirmationui@1.0-service.trusty.vendor
+
+# Trusty Secure DPU Daemon
+PRODUCT_PACKAGES += \
+ securedpud.slider
+
+BOARD_VENDOR_SEPOLICY_DIRS += device/google/gs101-sepolicy/confirmationui/
diff --git a/default-permissions.xml b/default-permissions.xml
new file mode 100644
index 0000000..cd4ea09
--- /dev/null
+++ b/default-permissions.xml
@@ -0,0 +1,121 @@
+<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
+
+<!-- Copyright (C) 2019 Google Inc.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<!--
+ This file contains permissions to be granted by default. Default
+ permissions are granted to special platform components and to apps
+ that are approved to get default grants. The special components
+ are apps that are expected tto work out-of-the-box as they provide
+ core use cases such as default dialer, default email, etc. These
+ grants are managed by the platform. The apps that are additionally
+ approved for default grants are ones that provide carrier specific
+ functionality, ones legally required at some location, ones providing
+ alternative disclosure and opt-out UI, ones providing highlight features
+ of a dedicated device, etc. This file contains only the latter exceptions.
+ Fixed permissions cannot be controlled by the user and need a special
+ approval. Typically these are to ensure either legally mandated functions
+ or the app is considered a part of the OS.
+-->
+
+<exceptions>
+
+ <!-- This is an example of an exception:
+ <exception
+ package="foo.bar.permission"
+ <permission name="android.permission.READ_CONTACTS" fixed="true"/>
+ <permission name="android.permission.READ_CALENDAR" fixed="false"/>
+ </exception>
+ -->
+
+ <exception package="com.google.android.settings.intelligence">
+ <!-- Calendar -->
+ <permission name="android.permission.READ_CALENDAR" fixed="true"/>
+ <!-- Location -->
+ <permission name="android.permission.ACCESS_FINE_LOCATION" fixed="false"/>
+ <permission name="android.permission.ACCESS_BACKGROUND_LOCATION" fixed="false"/>
+ </exception>
+
+ <exception package="com.google.android.apps.camera.services">
+ <!-- Camera -->
+ <permission name="android.permission.CAMERA" fixed="false"/>
+ </exception>
+
+ <exception package="com.google.android.apps.cbrsnetworkmonitor">
+ <!-- Location access to create CBRS geofences-->
+ <permission name="android.permission.ACCESS_FINE_LOCATION" fixed="true"/>
+ <permission name="android.permission.ACCESS_BACKGROUND_LOCATION" fixed="true"/>
+ </exception>
+
+ <exception package="com.google.android.apps.scone">
+ <!-- Used to call ActivityTransition API for Smart PNO -->
+ <permission name="android.permission.ACTIVITY_RECOGNITION" fixed="false"/>
+ </exception>
+
+ <exception
+ package="com.google.android.apps.restore">
+ <!-- External storage -->
+ <permission name="android.permission.READ_EXTERNAL_STORAGE" fixed="false"/>
+ <permission name="android.permission.WRITE_EXTERNAL_STORAGE" fixed="false"/>
+ <!-- Contacts -->
+ <permission name="android.permission.READ_CONTACTS" fixed="false"/>
+ <permission name="android.permission.WRITE_CONTACTS" fixed="false"/>
+ <!-- Call logs -->
+ <permission name="android.permission.READ_CALL_LOG" fixed="false"/>
+ <permission name="android.permission.WRITE_CALL_LOG" fixed="false"/>
+ <!-- Used to set up a Wi-Fi P2P network -->
+ <permission name="android.permission.ACCESS_FINE_LOCATION" fixed="false"/>
+ </exception>
+
+ <exception
+ package="com.verizon.mips.services">
+ <!-- Call -->
+ <permission name="android.permission.PROCESS_OUTGOING_CALLS" fixed="false"/>
+ <!-- Phone -->
+ <permission name="android.permission.READ_PHONE_STATE" fixed="false"/>
+ <!-- SMS -->
+ <permission name="android.permission.RECEIVE_SMS" fixed="false"/>
+ </exception>
+
+ <exception
+ package="com.google.android.factorytest">
+ <!-- Camera -->
+ <permission name="android.permission.CAMERA" fixed="false"/>
+ <!-- Microphone -->
+ <permission name="android.permission.RECORD_AUDIO" fixed="false"/>
+ <!-- Storage -->
+ <permission name="android.permission.READ_EXTERNAL_STORAGE" fixed="false"/>
+ <permission name="android.permission.WRITE_EXTERNAL_STORAGE" fixed="false"/>
+ </exception>
+
+ <exception package="com.google.android.wfcactivation">
+ <!-- SMS -->
+ <permission name="android.permission.RECEIVE_WAP_PUSH" fixed="false"/>
+ </exception>
+
+ <exception package="com.google.android.apps.accessibility.voiceaccess">
+ <!-- Voice Access: A11y app to allow users to setup & control their devices with voice -->
+ <!-- Approved android bug for pregrant permissions: b/182307492 -->
+
+ <!-- Phone state to turn off Voice Access when user is in a phone call -->
+ <permission name="android.permission.READ_PHONE_STATE" fixed="false"/>
+
+ <!-- Microphone: To hear user's voice commands -->
+ <permission name="android.permission.RECORD_AUDIO" fixed="false"/>
+ </exception>
+
+</exceptions>
+
diff --git a/device-common.mk b/device-common.mk
new file mode 100644
index 0000000..864cc3c
--- /dev/null
+++ b/device-common.mk
@@ -0,0 +1,43 @@
+#
+# Copyright (C) 2020 The Android Open-Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+include device/google/gs101/device.mk
+
+# Telephony
+PRODUCT_COPY_FILES += \
+ frameworks/native/data/etc/android.hardware.telephony.carrierlock.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.telephony.carrierlock.xml
+
+# Android Verified Boot
+PRODUCT_COPY_FILES += \
+ frameworks/native/data/etc/android.software.verified_boot.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.software.verified_boot.xml
+
+# Factory OTA
+-include vendor/google/factoryota/client/factoryota.mk
+
+# Set system properties identifying the chipset
+PRODUCT_VENDOR_PROPERTIES += ro.soc.manufacturer=Google
+PRODUCT_VENDOR_PROPERTIES += ro.soc.model=Tensor
+
+PRODUCT_PRODUCT_PROPERTIES += \
+ persist.vendor.testing_battery_profile=2
+
+# The default value of this variable is false and should only be set to true when
+# the device allows users to retain eSIM profiles after factory reset of user data.
+PRODUCT_PRODUCT_PROPERTIES += \
+ masterclear.allow_retain_esim_profiles_after_fdr=true
+
+# ZramWriteback
+-include hardware/google/pixel/mm/device_gki.mk
diff --git a/device-shipping-common.mk b/device-shipping-common.mk
new file mode 100644
index 0000000..c305a7b
--- /dev/null
+++ b/device-shipping-common.mk
@@ -0,0 +1,29 @@
+#
+# Copyright (C) 2020 The Android Open-Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+include device/google/gs101/device-common.mk
+
+PRODUCT_PROPERTY_OVERRIDES += \
+ ro.bluetooth.a2dp_offload.supported=true \
+ persist.bluetooth.a2dp_offload.disabled=false \
+ persist.bluetooth.a2dp_offload.cap=sbc-aac-aptx-aptxhd-ldac
+
+# SecureElement
+PRODUCT_PACKAGES += \
+ android.hardware.secure_element@1.2-service-gto
+
+PRODUCT_COPY_FILES += \
+ device/google/gs101/nfc/libse-gto-hal.conf:$(TARGET_COPY_OUT_VENDOR)/etc/libse-gto-hal.conf \
+ device/google/gs101/nfc/libse-gto-hal2.conf:$(TARGET_COPY_OUT_VENDOR)/etc/libse-gto-hal2.conf
diff --git a/device.mk b/device.mk
new file mode 100644
index 0000000..982ecb6
--- /dev/null
+++ b/device.mk
@@ -0,0 +1,1142 @@
+#
+# Copyright (C) 2011 The Android Open-Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+TARGET_BOARD_PLATFORM := gs101
+
+ifneq (,$(filter %_64,$(TARGET_PRODUCT)))
+LOCAL_64ONLY := _64
+endif
+
+AB_OTA_POSTINSTALL_CONFIG += \
+ RUN_POSTINSTALL_system=true \
+ POSTINSTALL_PATH_system=system/bin/otapreopt_script \
+ FILESYSTEM_TYPE_system=ext4 \
+POSTINSTALL_OPTIONAL_system=true
+
+# Set Vendor SPL to match platform
+VENDOR_SECURITY_PATCH = $(PLATFORM_SECURITY_PATCH)
+
+# Set boot SPL
+BOOT_SECURITY_PATCH = $(PLATFORM_SECURITY_PATCH)
+
+PRODUCT_SOONG_NAMESPACES += \
+ hardware/google/av \
+ hardware/google/gchips \
+ hardware/google/graphics/common \
+ hardware/google/graphics/gs101 \
+ hardware/google/interfaces \
+ hardware/google/pixel \
+ device/google/gs101 \
+ vendor/google/whitechapel/tools \
+ vendor/broadcom/bluetooth \
+ vendor/google/camera \
+ vendor/google/interfaces \
+ vendor/google_devices/common/proprietary/confirmatioui_hal \
+ vendor/google_nos/host/android \
+ vendor/google_nos/test/system-test-harness
+
+ifeq ($(TARGET_PREBUILT_KERNEL),)
+LOCAL_KERNEL := $(TARGET_KERNEL_DIR)/Image.lz4
+else
+LOCAL_KERNEL := $(TARGET_PREBUILT_KERNEL)
+endif
+
+# OEM Unlock reporting
+PRODUCT_DEFAULT_PROPERTY_OVERRIDES += \
+ ro.oem_unlock_supported=1
+
+ifneq (,$(filter userdebug eng, $(TARGET_BUILD_VARIANT)))
+#Set IKE logs to verbose for WFC
+PRODUCT_PROPERTY_OVERRIDES += log.tag.IKE=VERBOSE
+
+#Set Shannon IMS logs to debug
+PRODUCT_PROPERTY_OVERRIDES += log.tag.SHANNON_IMS=DEBUG
+
+#Set Shannon QNS logs to debug
+PRODUCT_PROPERTY_OVERRIDES += log.tag.ShannonQNS=DEBUG
+PRODUCT_PROPERTY_OVERRIDES += log.tag.ShannonQNS-ims=DEBUG
+PRODUCT_PROPERTY_OVERRIDES += log.tag.ShannonQNS-emergency=DEBUG
+PRODUCT_PROPERTY_OVERRIDES += log.tag.ShannonQNS-mms=DEBUG
+PRODUCT_PROPERTY_OVERRIDES += log.tag.ShannonQNS-xcap=DEBUG
+PRODUCT_PROPERTY_OVERRIDES += log.tag.ShannonQNS-HC=DEBUG
+
+# Modem userdebug
+include device/google/gs101/modem/userdebug.mk
+endif
+
+include device/google/gs101/modem/user.mk
+
+ifneq (,$(filter userdebug eng, $(TARGET_BUILD_VARIANT)))
+# b/36703476: Set default log size to 1M
+PRODUCT_PROPERTY_OVERRIDES += \
+ ro.logd.size=1M
+# b/114766334: persist all logs by default rotating on 30 files of 1MiB
+PRODUCT_PROPERTY_OVERRIDES += \
+ logd.logpersistd=logcatd \
+ logd.logpersistd.size=30
+endif
+
+# From system.property
+PRODUCT_PROPERTY_OVERRIDES += \
+ dev.usbsetting.embedded=on \
+ ro.telephony.default_network=27 \
+ persist.vendor.ril.use.iccid_to_plmn=1 \
+ persist.vendor.ril.emergencynumber.mode=5
+ #rild.libpath=/system/lib64/libsec-ril.so \
+ #rild.libargs=-d /dev/umts_ipc0
+
+# SIT-RIL Logging setting
+PRODUCT_PROPERTY_OVERRIDES += \
+ persist.vendor.ril.log_mask=3 \
+ persist.vendor.ril.log.base_dir=/data/vendor/radio/sit-ril \
+ persist.vendor.ril.log.chunk_size=5242880 \
+ persist.vendor.ril.log.num_file=3
+
+# Enable reboot free DSDS
+PRODUCT_PRODUCT_PROPERTIES += \
+ persist.radio.reboot_on_modem_change=false
+
+# Enable Early Camping
+PRODUCT_PRODUCT_PROPERTIES += \
+ persist.vendor.ril.camp_on_earlier=1
+
+# Carrier configuration default location
+PRODUCT_PROPERTY_OVERRIDES += \
+ persist.vendor.radio.config.carrier_config_dir=/mnt/vendor/modem_img/images/default/confpack
+
+
+PRODUCT_PROPERTY_OVERRIDES += \
+ telephony.active_modems.max_count=2
+
+USE_LASSEN_OEMHOOK := true
+
+# Use for GRIL
+USES_LASSEN_MODEM := true
+
+ifeq ($(USES_GOOGLE_DIALER_CARRIER_SETTINGS),true)
+USE_GOOGLE_DIALER := true
+USE_GOOGLE_CARRIER_SETTINGS := true
+endif
+
+ifeq (,$(filter aosp_%,$(TARGET_PRODUCT)))
+# Audio client implementation for RIL
+USES_GAUDIO := true
+endif
+
+# ######################
+# GRAPHICS - GPU (begin)
+
+# Must match BOARD_USES_SWIFTSHADER in BoardConfig.mk
+USE_SWIFTSHADER := false
+
+# HWUI
+TARGET_USES_VULKAN = true
+
+PRODUCT_SOONG_NAMESPACES += \
+ vendor/arm/mali/valhall \
+ vendor/arm/mali/valhall/cl \
+ vendor/arm/mali/valhall/libmali \
+ vendor/arm/mali/valhall/cinstr/production/gpu-hwc-reader
+
+include device/google/gs101/neuralnetwork/neuralnetwork.mk
+
+PRODUCT_PACKAGES += \
+ libGLES_mali \
+ vulkan.gs101 \
+ libOpenCL \
+ libgpudataproducer
+PRODUCT_DEFAULT_PROPERTY_OVERRIDES += \
+ debug.mali.disable_backend_affinity=true
+
+ifeq ($(USE_SWIFTSHADER),true)
+PRODUCT_PACKAGES += \
+ libGLESv1_CM_swiftshader \
+ libEGL_swiftshader \
+ libGLESv2_swiftshader
+endif
+
+PRODUCT_COPY_FILES += \
+ frameworks/native/data/etc/android.hardware.opengles.aep.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.opengles.aep.xml \
+ frameworks/native/data/etc/android.hardware.vulkan.version-1_1.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.vulkan.version.xml \
+ frameworks/native/data/etc/android.hardware.vulkan.level-1.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.vulkan.level.xml \
+ frameworks/native/data/etc/android.hardware.vulkan.compute-0.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.vulkan.compute.xml \
+ frameworks/native/data/etc/android.software.vulkan.deqp.level-2021-03-01.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.software.vulkan.deqp.level.xml \
+ frameworks/native/data/etc/android.software.opengles.deqp.level-2021-03-01.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.software.opengles.deqp.level.xml
+
+ifeq ($(USE_SWIFTSHADER),true)
+PRODUCT_VENDOR_PROPERTIES += \
+ ro.hardware.egl = swiftshader
+else
+PRODUCT_VENDOR_PROPERTIES += \
+ ro.hardware.egl = mali
+endif
+
+PRODUCT_VENDOR_PROPERTIES += \
+ ro.opengles.version=196610 \
+ graphics.gpu.profiler.support=true \
+ debug.renderengine.backend=skiaglthreaded
+
+# GRAPHICS - GPU (end)
+# ####################
+
+# Device Manifest, Device Compatibility Matrix for Treble
+DEVICE_MANIFEST_FILE := \
+ device/google/gs101/manifest$(LOCAL_64ONLY).xml
+
+ifneq (,$(filter aosp_%,$(TARGET_PRODUCT)))
+DEVICE_MANIFEST_FILE += \
+ device/google/gs101/manifest_media_aosp.xml
+
+PRODUCT_COPY_FILES += \
+ device/google/gs101/media_codecs_aosp_c2.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs_c2.xml
+else
+DEVICE_MANIFEST_FILE += \
+ device/google/gs101/manifest_media.xml
+
+PRODUCT_COPY_FILES += \
+ device/google/gs101/media_codecs_bo_c2.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs_c2.xml \
+ device/google/gs101/media_codecs_aosp_c2.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs_aosp_c2.xml
+endif
+
+DEVICE_MATRIX_FILE := \
+ device/google/gs101/compatibility_matrix.xml
+
+DEVICE_PACKAGE_OVERLAYS += device/google/gs101/overlay
+
+# This device is shipped with 31 (Android S)
+PRODUCT_SHIPPING_API_LEVEL := 31
+
+# Enforce the Product interface
+PRODUCT_PRODUCT_VNDK_VERSION := current
+PRODUCT_ENFORCE_PRODUCT_PARTITION_INTERFACE := true
+
+# Init files
+PRODUCT_COPY_FILES += \
+ $(LOCAL_KERNEL):kernel \
+ device/google/gs101/conf/init.gs101.usb.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/hw/init.gs101.usb.rc \
+ device/google/gs101/conf/ueventd.gs101.rc:$(TARGET_COPY_OUT_VENDOR)/ueventd.rc
+
+PRODUCT_COPY_FILES += \
+ device/google/gs101/conf/init.gs101.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/hw/init.gs101.rc
+
+ifneq (,$(filter userdebug eng, $(TARGET_BUILD_VARIANT)))
+PRODUCT_COPY_FILES += \
+ device/google/gs101/conf/init.debug.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/init.debug.rc
+endif
+
+# If AoC Daemon is not present on this build, load firmware at boot via rc
+ifeq ($(wildcard vendor/google/whitechapel/aoc/aocd),)
+PRODUCT_COPY_FILES += \
+ device/google/gs101/conf/init.aoc.nodaemon.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/hw/init.aoc.rc
+else
+PRODUCT_COPY_FILES += \
+ device/google/gs101/conf/init.aoc.daemon.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/hw/init.aoc.rc
+endif
+
+# Recovery files
+PRODUCT_COPY_FILES += \
+ device/google/gs101/conf/init.recovery.device.rc:$(TARGET_COPY_OUT_RECOVERY)/root/init.recovery.gs101.rc
+
+# Fstab files
+PRODUCT_COPY_FILES += \
+ device/google/gs101/conf/fstab.gs101:$(TARGET_COPY_OUT_VENDOR)/etc/fstab.gs101 \
+ device/google/gs101/conf/fstab.persist:$(TARGET_COPY_OUT_VENDOR)/etc/fstab.persist \
+ device/google/gs101/conf/fstab.gs101:$(TARGET_COPY_OUT_VENDOR_RAMDISK)/first_stage_ramdisk/fstab.gs101
+
+# Shell scripts
+PRODUCT_COPY_FILES += \
+ device/google/gs101/init.insmod.sh:$(TARGET_COPY_OUT_VENDOR)/bin/init.insmod.sh \
+ device/google/gs101/set_usb_irq.sh:$(TARGET_COPY_OUT_VENDOR)/bin/hw/set_usb_irq.sh \
+ device/google/gs101/disable_contaminant_detection.sh:$(TARGET_COPY_OUT_VENDOR)/bin/hw/disable_contaminant_detection.sh
+
+# insmod files
+PRODUCT_COPY_FILES += \
+ device/google/gs101/init.insmod.gs101.cfg:$(TARGET_COPY_OUT_VENDOR)/etc/init.insmod.gs101.cfg
+
+# For creating dtbo image
+PRODUCT_HOST_PACKAGES += \
+ mkdtimg
+
+PRODUCT_PACKAGES += \
+ messaging
+
+# Contexthub HAL
+PRODUCT_PACKAGES += \
+ android.hardware.contexthub@1.2-service.generic
+
+# CHRE tools
+ifneq (,$(filter userdebug eng, $(TARGET_BUILD_VARIANT)))
+PRODUCT_PACKAGES += \
+ chre_power_test_client \
+ chre_test_client
+endif
+
+PRODUCT_COPY_FILES += \
+ frameworks/native/data/etc/android.hardware.context_hub.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.context_hub.xml
+
+# Enable the CHRE Daemon
+CHRE_USF_DAEMON_ENABLED := true
+PRODUCT_PACKAGES += \
+ chre \
+ preloaded_nanoapps.json
+
+# Filesystem management tools
+PRODUCT_PACKAGES += \
+ linker.vendor_ramdisk \
+ tune2fs.vendor_ramdisk \
+ resize2fs.vendor_ramdisk
+
+# Userdata Checkpointing OTA GC
+PRODUCT_PACKAGES += \
+ checkpoint_gc
+
+# Vendor verbose logging default property
+ifneq (,$(filter userdebug eng, $(TARGET_BUILD_VARIANT)))
+PRODUCT_PROPERTY_OVERRIDES += \
+ persist.vendor.verbose_logging_enabled=true
+else
+PRODUCT_PROPERTY_OVERRIDES += \
+ persist.vendor.verbose_logging_enabled=false
+endif
+
+# CP Logging properties
+PRODUCT_PROPERTY_OVERRIDES += \
+ ro.vendor.sys.modem.logging.loc = /data/vendor/slog \
+ persist.vendor.sys.silentlog.tcp = "On" \
+ ro.vendor.cbd.modem_removable = "1" \
+ ro.vendor.cbd.modem_type = "s5100sit" \
+ persist.vendor.sys.modem.logging.br_num=5 \
+ persist.vendor.sys.modem.logging.enable=true
+
+# Enable silent CP crash handling
+ifneq (,$(filter userdebug eng, $(TARGET_BUILD_VARIANT)))
+PRODUCT_PROPERTY_OVERRIDES += \
+ persist.vendor.ril.crash_handling_mode=1
+else
+PRODUCT_PROPERTY_OVERRIDES += \
+ persist.vendor.ril.crash_handling_mode=2
+endif
+
+# Add support dual SIM mode
+PRODUCT_PROPERTY_OVERRIDES += \
+ persist.vendor.radio.multisim_switch_support=true
+
+# RPMB TA
+PRODUCT_PACKAGES += \
+ tlrpmb
+
+# Touch firmware
+#PRODUCT_COPY_FILES += \
+ device/google/gs101/firmware/touch/s6sy761.bin:$(TARGET_COPY_OUT_VENDOR)/firmware/s6sy761.fw
+# Touch
+PRODUCT_COPY_FILES += \
+ frameworks/native/data/etc/android.hardware.touchscreen.multitouch.jazzhand.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.touchscreen.multitouch.jazzhand.xml
+
+# Sensors
+PRODUCT_COPY_FILES += \
+ frameworks/native/data/etc/android.hardware.sensor.accelerometer.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.sensor.accelerometer.xml \
+ frameworks/native/data/etc/android.hardware.sensor.barometer.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.sensor.barometer.xml \
+ frameworks/native/data/etc/android.hardware.sensor.compass.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.sensor.compass.xml \
+ frameworks/native/data/etc/android.hardware.sensor.gyroscope.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.sensor.gyroscope.xml \
+ frameworks/native/data/etc/android.hardware.sensor.hifi_sensors.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.sensor.hifi_sensors.xml \
+ frameworks/native/data/etc/android.hardware.sensor.light.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.sensor.light.xml\
+ frameworks/native/data/etc/android.hardware.sensor.proximity.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.sensor.proximity.xml \
+ frameworks/native/data/etc/android.hardware.sensor.stepcounter.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.sensor.stepcounter.xml \
+ frameworks/native/data/etc/android.hardware.sensor.stepdetector.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.sensor.stepdetector.xml
+
+# Add sensor HAL 2.1 product packages
+PRODUCT_PACKAGES += android.hardware.sensors@2.1-service.multihal
+
+# Debug property for sensor.
+ifneq (,$(filter userdebug eng, $(TARGET_BUILD_VARIANT)))
+PRODUCT_PROPERTY_OVERRIDES += \
+ vendor.debug.sensor.hal.event_logger=true
+endif
+
+# USB HAL
+PRODUCT_PACKAGES += \
+ android.hardware.usb@1.3-service.gs101
+
+# MIDI feature
+PRODUCT_COPY_FILES += \
+ frameworks/native/data/etc/android.software.midi.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.software.midi.xml
+
+# default usb debug functions
+ifneq (,$(filter userdebug eng, $(TARGET_BUILD_VARIANT)))
+PRODUCT_PROPERTY_OVERRIDES += \
+ persist.vendor.usb.usbradio.config=dm
+endif
+
+# Power HAL
+PRODUCT_COPY_FILES += \
+ device/google/gs101/powerhint.json:$(TARGET_COPY_OUT_VENDOR)/etc/powerhint.json
+
+PRODUCT_COPY_FILES += \
+ device/google/gs101/task_profiles.json:$(TARGET_COPY_OUT_VENDOR)/etc/task_profiles.json
+
+PRODUCT_COPY_FILES += \
+ device/google/gs101/powerhint_a0.json:$(TARGET_COPY_OUT_VENDOR)/etc/powerhint_a0.json
+
+PRODUCT_COPY_FILES += \
+ device/google/gs101/powerhint_a1.json:$(TARGET_COPY_OUT_VENDOR)/etc/powerhint_a1.json
+-include hardware/google/pixel/power-libperfmgr/aidl/device.mk
+
+# IRQ rebalancing.
+include hardware/google/pixel/rebalance_interrupts/rebalance_interrupts.mk
+
+# PowerStats HAL
+PRODUCT_PACKAGES += \
+ android.hardware.power.stats-service.pixel
+
+# dumpstate HAL
+PRODUCT_PACKAGES += \
+ android.hardware.dumpstate@1.1-service.gs101
+
+# AoC support
+PRODUCT_PACKAGES += \
+ aocd
+
+# AoC debug support
+PRODUCT_PACKAGES_DEBUG += \
+ aocdump \
+ aocutil \
+ aoc_audio_cfg \
+ vp_util
+
+#
+# Audio HALs
+#
+
+# Audio Configurations
+USE_LEGACY_LOCAL_AUDIO_HAL := false
+USE_XML_AUDIO_POLICY_CONF := 1
+
+# Enable AAudio MMAP/NOIRQ data path.
+PRODUCT_PROPERTY_OVERRIDES += aaudio.mmap_policy=2
+PRODUCT_PROPERTY_OVERRIDES += aaudio.mmap_exclusive_policy=2
+PRODUCT_PROPERTY_OVERRIDES += aaudio.hw_burst_min_usec=2000
+
+# Calliope firmware overwrite
+#PRODUCT_COPY_FILES += \
+ device/google/gs101/firmware/calliope_dram.bin:$(TARGET_COPY_OUT_VENDOR)/firmware/calliope_dram.bin \
+ device/google/gs101/firmware/calliope_sram.bin:$(TARGET_COPY_OUT_VENDOR)/firmware/calliope_sram.bin \
+ device/google/gs101/firmware/calliope_dram_2.bin:$(TARGET_COPY_OUT_VENDOR)/firmware/calliope_dram_2.bin \
+ device/google/gs101/firmware/calliope_sram_2.bin:$(TARGET_COPY_OUT_VENDOR)/firmware/calliope_sram_2.bin \
+ device/google/gs101/firmware/calliope2.dt:$(TARGET_COPY_OUT_VENDOR)/firmware/calliope2.dt \
+
+# Cannot reference variables defined in BoardConfig.mk, uncomment this if
+# BOARD_USE_OFFLOAD_AUDIO and BOARD_USE_OFFLOAD_EFFECT are true
+## AudioEffectHAL library
+#PRODUCT_PACKAGES += \
+# libexynospostprocbundle
+
+# Cannot reference variables defined in BoardConfig.mk, uncomment this if
+# BOARD_USE_SOUNDTRIGGER_HAL is true
+#PRODUCT_PACKAGES += \
+# sound_trigger.primary.maran9820
+
+# A-Box Service Daemon
+#PRODUCT_PACKAGES += main_abox
+
+# Libs
+PRODUCT_PACKAGES += \
+ com.android.future.usb.accessory
+
+# for now include gralloc here. should come from hardware/google_devices/exynos5
+PRODUCT_PACKAGES += \
+ android.hardware.graphics.mapper@4.0-impl \
+ android.hardware.graphics.allocator@4.0-service \
+ android.hardware.graphics.allocator@4.0-impl
+
+PRODUCT_PACKAGES += \
+ android.hardware.memtrack-service.pixel \
+ libion_exynos \
+ libion
+
+PRODUCT_PACKAGES += \
+ libhwjpeg
+
+# Video Editor
+PRODUCT_PACKAGES += \
+ VideoEditorGoogle
+
+# WideVine modules
+PRODUCT_PACKAGES += \
+ android.hardware.drm@1.4-service.clearkey \
+ android.hardware.drm@1.4-service.widevine \
+ liboemcrypto \
+
+ORIOLE_PRODUCT := %oriole
+RAVEN_PRODUCT := %raven
+ifneq (,$(filter $(ORIOLE_PRODUCT), $(TARGET_PRODUCT)))
+ LOCAL_TARGET_PRODUCT := oriole
+else ifneq (,$(filter $(RAVEN_PRODUCT), $(TARGET_PRODUCT)))
+ LOCAL_TARGET_PRODUCT := raven
+else
+ LOCAL_TARGET_PRODUCT := slider
+endif
+
+
+SOONG_CONFIG_NAMESPACES += google3a_config
+SOONG_CONFIG_google3a_config += \
+ soc \
+ gcam_awb \
+ ghawb_truetone \
+ target_device
+
+SOONG_CONFIG_google3a_config_soc := gs101
+SOONG_CONFIG_google3a_config_gcam_awb := true
+SOONG_CONFIG_google3a_config_ghawb_truetone := true
+SOONG_CONFIG_google3a_config_target_device := $(LOCAL_TARGET_PRODUCT)
+
+# Determine if Lyric is in the tree, and only have GCH build against it
+# if it is. Cases when Lyric isn't going to be in the tree:
+# - Non-pixel gs101 devices that exclude vendor/google/services/LyricCameraHAL/src (none as of now)
+# - master-without-vendor and other types of AOSP builds (those won't built GCH either, but need this to actually start building)
+#
+# Builds that will have it are
+# - Regular gs101 builds
+# - PDK gs101 builds because they still have vendor/google/services/LyricCameraHAL/src
+
+ifneq ($(wildcard vendor/google/services/LyricCameraHAL/src),)
+SOONG_CONFIG_NAMESPACES += lyric
+SOONG_CONFIG_lyric += use_lyric_camera_hal
+SOONG_CONFIG_lyric_use_lyric_camera_hal := true
+
+# Camera HAL library selection
+SOONG_CONFIG_NAMESPACES += gch
+SOONG_CONFIG_gch += hwl_library
+SOONG_CONFIG_gch_hwl_library := lyric
+endif
+
+# WiFi
+PRODUCT_PACKAGES += \
+ android.hardware.wifi@1.0-service \
+ wificond \
+ libwpa_client \
+ WifiOverlay \
+
+# Connectivity
+PRODUCT_PACKAGES += \
+ ConnectivityOverlay
+
+PRODUCT_PACKAGES_DEBUG += \
+ sg_write_buffer \
+ f2fs_io \
+ check_f2fs \
+ f2fsstat \
+ f2fs.fibmap \
+ dump.f2fs
+
+# Storage health HAL
+PRODUCT_PACKAGES += \
+ android.hardware.health.storage-service.default
+
+# storage pixelstats
+-include hardware/google/pixel/pixelstats/device.mk
+
+# Enable project quotas and casefolding for emulated storage without sdcardfs
+$(call inherit-product, $(SRC_TARGET_DIR)/product/emulated_storage.mk)
+
+$(call inherit-product, $(SRC_TARGET_DIR)/product/virtual_ab_ota/compression.mk)
+# Enforce generic ramdisk allow list
+$(call inherit-product, $(SRC_TARGET_DIR)/product/generic_ramdisk.mk)
+
+# Titan-M
+ifeq (,$(filter true, $(BOARD_WITHOUT_DTLS)))
+include hardware/google/pixel/dauntless/dauntless.mk
+endif
+
+# Copy Camera HFD Setfiles
+#PRODUCT_COPY_FILES += \
+ device/google/gs101/firmware/camera/libhfd/default_configuration.hfd.cfg.json:$(TARGET_COPY_OUT_VENDOR)/firmware/default_configuration.hfd.cfg.json \
+ device/google/gs101/firmware/camera/libhfd/pp_cfg.json:$(TARGET_COPY_OUT_VENDOR)/firmware/pp_cfg.json \
+ device/google/gs101/firmware/camera/libhfd/tracker_cfg.json:$(TARGET_COPY_OUT_VENDOR)/firmware/tracker_cfg.json \
+ device/google/gs101/firmware/camera/libhfd/WithLightFixNoBN.SDNNmodel:$(TARGET_COPY_OUT_VENDOR)/firmware/WithLightFixNoBN.SDNNmodel
+
+PRODUCT_COPY_FILES += \
+ frameworks/native/data/etc/android.hardware.wifi.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.wifi.xml \
+ frameworks/native/data/etc/android.hardware.wifi.direct.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.wifi.direct.xml \
+ frameworks/native/data/etc/android.hardware.wifi.aware.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.wifi.aware.xml \
+ frameworks/native/data/etc/android.hardware.wifi.passpoint.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.wifi.passpoint.xml \
+ frameworks/native/data/etc/android.hardware.wifi.rtt.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.wifi.rtt.xml \
+ frameworks/native/data/etc/android.hardware.usb.host.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.usb.host.xml \
+ frameworks/native/data/etc/android.hardware.usb.accessory.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.usb.accessory.xml
+
+PRODUCT_COPY_FILES += \
+ frameworks/native/data/etc/android.hardware.camera.flash-autofocus.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.camera.flash-autofocus.xml \
+ frameworks/native/data/etc/android.hardware.camera.front.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.camera.front.xml \
+ frameworks/native/data/etc/android.hardware.camera.concurrent.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.camera.concurrent.xml \
+ frameworks/native/data/etc/android.hardware.camera.full.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.camera.full.xml\
+ frameworks/native/data/etc/android.hardware.camera.raw.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.camera.raw.xml\
+ vendor/google/services/LyricCameraHAL/src/vendor.android.hardware.camera.preview-dis.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/vendor.android.hardware.camera.preview-dis.xml\
+
+#PRODUCT_COPY_FILES += \
+ frameworks/native/data/etc/handheld_core_hardware.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/handheld_core_hardware.xml \
+ frameworks/native/data/etc/android.hardware.wifi.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.wifi.xml \
+ frameworks/native/data/etc/android.hardware.wifi.direct.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.wifi.direct.xml \
+ frameworks/native/data/etc/android.hardware.wifi.passpoint.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.wifi.passpoint.xml \
+ frameworks/native/data/etc/android.hardware.usb.host.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.usb.host.xml \
+ frameworks/native/data/etc/android.hardware.usb.accessory.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.usb.accessory.xml \
+
+PRODUCT_COPY_FILES += \
+ frameworks/native/data/etc/android.hardware.audio.low_latency.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.audio.low_latency.xml \
+ frameworks/native/data/etc/android.hardware.audio.pro.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.audio.pro.xml \
+
+PRODUCT_COPY_FILES += \
+ frameworks/native/data/etc/android.software.ipsec_tunnels.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.software.ipsec_tunnels.xml \
+
+PRODUCT_PROPERTY_OVERRIDES += \
+ debug.slsi_platform=1 \
+ debug.hwc.winupdate=1
+
+# hw composer HAL
+PRODUCT_PACKAGES += \
+ libdisplaycolor \
+ hwcomposer.$(TARGET_BOARD_PLATFORM)
+
+ifneq (,$(filter userdebug eng, $(TARGET_BUILD_VARIANT)))
+PRODUCT_PACKAGES += displaycolor_service
+endif
+
+PRODUCT_PROPERTY_OVERRIDES += \
+ debug.sf.disable_backpressure=0 \
+ debug.sf.enable_gl_backpressure=1
+
+PRODUCT_DEFAULT_PROPERTY_OVERRIDES += debug.sf.use_phase_offsets_as_durations=1
+PRODUCT_DEFAULT_PROPERTY_OVERRIDES += debug.sf.late.sf.duration=10500000
+PRODUCT_DEFAULT_PROPERTY_OVERRIDES += debug.sf.late.app.duration=16600000
+PRODUCT_DEFAULT_PROPERTY_OVERRIDES += debug.sf.early.sf.duration=16600000
+PRODUCT_DEFAULT_PROPERTY_OVERRIDES += debug.sf.early.app.duration=16600000
+PRODUCT_DEFAULT_PROPERTY_OVERRIDES += debug.sf.earlyGl.sf.duration=16600000
+PRODUCT_DEFAULT_PROPERTY_OVERRIDES += debug.sf.earlyGl.app.duration=16600000
+PRODUCT_DEFAULT_PROPERTY_OVERRIDES += debug.sf.frame_rate_multiple_threshold=120
+PRODUCT_DEFAULT_PROPERTY_OVERRIDES += debug.sf.layer_caching_active_layer_timeout_ms=1000
+
+PRODUCT_DEFAULT_PROPERTY_OVERRIDES += ro.surface_flinger.enable_layer_caching=true
+PRODUCT_DEFAULT_PROPERTY_OVERRIDES += ro.surface_flinger.set_idle_timer_ms?=80
+PRODUCT_DEFAULT_PROPERTY_OVERRIDES += ro.surface_flinger.set_touch_timer_ms=200
+PRODUCT_DEFAULT_PROPERTY_OVERRIDES += ro.surface_flinger.set_display_power_timer_ms=1000
+PRODUCT_DEFAULT_PROPERTY_OVERRIDES += ro.surface_flinger.use_content_detection_for_refresh_rate=true
+PRODUCT_DEFAULT_PROPERTY_OVERRIDES += ro.surface_flinger.max_frame_buffer_acquired_buffers=3
+
+PRODUCT_DEFAULT_PROPERTY_OVERRIDES += ro.surface_flinger.supports_background_blur=1
+PRODUCT_SYSTEM_PROPERTIES += ro.launcher.blur.appLaunch=0
+
+# Must align with HAL types Dataspace
+# The data space of wide color gamut composition preference is Dataspace::DISPLAY_P3
+PRODUCT_DEFAULT_PROPERTY_OVERRIDES += ro.surface_flinger.wcg_composition_dataspace=143261696
+
+# Display
+PRODUCT_DEFAULT_PROPERTY_OVERRIDES += ro.surface_flinger.has_wide_color_display=true
+PRODUCT_DEFAULT_PROPERTY_OVERRIDES += ro.surface_flinger.has_HDR_display=true
+PRODUCT_DEFAULT_PROPERTY_OVERRIDES += ro.surface_flinger.use_color_management=true
+PRODUCT_DEFAULT_PROPERTY_OVERRIDES += ro.surface_flinger.protected_contents=true
+PRODUCT_DEFAULT_PROPERTY_OVERRIDES += ro.surface_flinger.display_update_imminent_timeout_ms=50
+
+# force to blend in P3 mode
+PRODUCT_PROPERTY_OVERRIDES += \
+ persist.sys.sf.native_mode=2 \
+ persist.sys.sf.color_mode=9
+PRODUCT_COPY_FILES += \
+ device/google/gs101/display/display_colordata_cal0.pb:$(TARGET_COPY_OUT_VENDOR)/etc/display_colordata_cal0.pb
+
+# limit DPP downscale ratio
+PRODUCT_DEFAULT_PROPERTY_OVERRIDES += vendor.hwc.dpp.downscale=2
+
+# Cannot reference variables defined in BoardConfig.mk, uncomment this if
+# BOARD_USES_EXYNOS_DSS_FEATURE is true
+## set the dss enable status setup
+#PRODUCT_PROPERTY_OVERRIDES += \
+# ro.exynos.dss=1
+
+# Cannot reference variables defined in BoardConfig.mk, uncomment this if
+# BOARD_USES_EXYNOS_AFBC_FEATURE is true
+# set the dss enable status setup
+PRODUCT_PROPERTY_OVERRIDES += \
+ ro.vendor.ddk.set.afbc=1
+
+PRODUCT_CHARACTERISTICS := nosdcard
+
+# WPA SUPPLICANT
+PRODUCT_COPY_FILES += \
+ device/google/gs101/wifi/p2p_supplicant.conf:$(TARGET_COPY_OUT_VENDOR)/etc/wifi/p2p_supplicant.conf \
+ device/google/gs101/wifi/wpa_supplicant_overlay.conf:$(TARGET_COPY_OUT_VENDOR)/etc/wifi/wpa_supplicant_overlay.conf
+
+# WIFI COEX
+PRODUCT_COPY_FILES += \
+ device/google/gs101/wifi/coex_table.xml:$(TARGET_COPY_OUT_VENDOR)/etc/wifi/coex_table.xml
+
+PRODUCT_PACKAGES += hostapd
+PRODUCT_PACKAGES += wpa_supplicant
+PRODUCT_PACKAGES += wpa_supplicant.conf
+
+WIFI_PRIV_CMD_UPDATE_MBO_CELL_STATUS := enabled
+
+ifneq (,$(filter userdebug eng, $(TARGET_BUILD_VARIANT)))
+PRODUCT_PACKAGES += wpa_cli
+PRODUCT_PACKAGES += hostapd_cli
+endif
+
+####################################
+## VIDEO
+####################################
+
+SOONG_CONFIG_NAMESPACES += bigo
+SOONG_CONFIG_bigo += soc
+SOONG_CONFIG_bigo_soc := gs101
+
+# MFC firmware
+PRODUCT_COPY_FILES += \
+ device/google/gs101/firmware/mfc/mfc_fw.bin:$(TARGET_COPY_OUT_VENDOR)/firmware/mfc_fw.bin
+
+# 1. Codec 2.0
+# exynos service
+PRODUCT_SOONG_NAMESPACES += vendor/samsung_slsi/codec2
+
+PRODUCT_COPY_FILES += \
+ device/google/gs101/media_codecs_performance_c2.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs_performance_c2.xml \
+
+PRODUCT_PACKAGES += \
+ samsung.hardware.media.c2@1.0-service \
+ codec2.vendor.base.policy \
+ codec2.vendor.ext.policy \
+ libExynosC2ComponentStore \
+ libExynosC2H264Dec \
+ libExynosC2H264Enc \
+ libExynosC2HevcDec \
+ libExynosC2HevcEnc \
+ libExynosC2Mpeg4Dec \
+ libExynosC2Mpeg4Enc \
+ libExynosC2H263Dec \
+ libExynosC2H263Enc \
+ libExynosC2Vp8Dec \
+ libExynosC2Vp8Enc \
+ libExynosC2Vp9Dec \
+ libExynosC2Vp9Enc
+
+PRODUCT_PROPERTY_OVERRIDES += \
+ debug.c2.use_dmabufheaps=1 \
+ media.c2.dmabuf.padding=512 \
+ debug.stagefright.ccodec_delayed_params=1 \
+ ro.vendor.gpu.dataspace=1
+
+# Create input surface on the framework side
+PRODUCT_PROPERTY_OVERRIDES += \
+ debug.stagefright.c2inputsurface=-1 \
+
+# 2. OpenMAX IL
+PRODUCT_COPY_FILES += \
+ device/google/gs101/media_codecs.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs.xml \
+ device/google/gs101/media_codecs_performance.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs_performance.xml
+####################################
+
+# Telephony
+#PRODUCT_COPY_FILES += \
+ frameworks/av/media/libstagefright/data/media_codecs_google_telephony.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs_google_telephony.xml
+
+# CBD (CP booting deamon)
+CBD_USE_V2 := true
+CBD_PROTOCOL_SIT := true
+
+# setup dalvik vm configs.
+$(call inherit-product, frameworks/native/build/phone-xhdpi-6144-dalvik-heap.mk)
+
+PRODUCT_TAGS += dalvik.gc.type-precise
+
+# Exynos OpenVX framework
+PRODUCT_PACKAGES += \
+ libexynosvision
+
+ifeq ($(TARGET_USES_CL_KERNEL),true)
+PRODUCT_PACKAGES += \
+ libopenvx-opencl
+endif
+
+# GPS HAL
+include device/google/gs101/gnss/device-gnss.mk
+
+# Trusty (KM, GK, Storage)
+$(call inherit-product, system/core/trusty/trusty-storage.mk)
+$(call inherit-product, system/core/trusty/trusty-base.mk)
+
+# Trusty unit test tool
+PRODUCT_PACKAGES_DEBUG += trusty-ut-ctrl
+
+include device/google/gs101/confirmationui/confirmationui.mk
+
+include device/google/gs101/trusty_metricsd/trusty_metricsd.mk
+
+PRODUCT_PACKAGES += \
+ android.hardware.graphics.composer@2.4-impl \
+ android.hardware.graphics.composer@2.4-service
+
+# Storage: for factory reset protection feature
+PRODUCT_PROPERTY_OVERRIDES += \
+ ro.frp.pst=/dev/block/by-name/frp
+
+# Bluetooth HAL
+PRODUCT_PACKAGES += \
+ android.hardware.bluetooth@1.1-service.bcmbtlinux \
+ bt_vendor.conf
+PRODUCT_COPY_FILES += \
+ frameworks/native/data/etc/android.hardware.bluetooth.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.bluetooth.xml \
+ frameworks/native/data/etc/android.hardware.bluetooth_le.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.bluetooth_le.xml
+
+# System props to enable Bluetooth Quality Report (BQR) feature
+ifneq (,$(filter userdebug eng, $(TARGET_BUILD_VARIANT)))
+PRODUCT_PRODUCT_PROPERTIES += \
+ persist.bluetooth.bqr.event_mask=262174 \
+ persist.bluetooth.bqr.min_interval_ms=500
+else
+PRODUCT_PRODUCT_PROPERTIES += \
+ persist.bluetooth.bqr.event_mask=30 \
+ persist.bluetooth.bqr.min_interval_ms=500
+endif
+
+#VNDK
+PRODUCT_PACKAGES += \
+ vndk-libs
+
+PRODUCT_ENFORCE_RRO_TARGETS := \
+ framework-res
+
+# Dynamic Partitions
+PRODUCT_USE_DYNAMIC_PARTITIONS := true
+
+# Use FUSE passthrough
+PRODUCT_PRODUCT_PROPERTIES += \
+ persist.sys.fuse.passthrough.enable=true
+
+# Use /product/etc/fstab.postinstall to mount system_other
+PRODUCT_PRODUCT_PROPERTIES += \
+ ro.postinstall.fstab.prefix=/product
+
+PRODUCT_COPY_FILES += \
+ device/google/gs101/conf/fstab.postinstall:$(TARGET_COPY_OUT_PRODUCT)/etc/fstab.postinstall
+
+# fastbootd
+PRODUCT_PACKAGES += \
+ android.hardware.fastboot@1.1-impl.pixel \
+ fastbootd
+
+#google iwlan
+PRODUCT_PACKAGES += \
+ Iwlan
+
+#Iwlan test app for userdebug/eng builds
+ifneq (,$(filter userdebug eng, $(TARGET_BUILD_VARIANT)))
+PRODUCT_PACKAGES += \
+ IwlanTestApp
+endif
+
+PRODUCT_PACKAGES += \
+ whitelist \
+ libstagefright_hdcp \
+ libskia_opt
+
+#PRODUCT_PACKAGES += \
+ mfc_fw.bin \
+ calliope_sram.bin \
+ calliope_dram.bin \
+ calliope_iva.bin \
+ vts.bin
+
+# This will be called only if IMSService is building with source code for dev branches.
+$(call inherit-product-if-exists, vendor/samsung_slsi/telephony/shannon-ims/device-vendor.mk)
+
+PRODUCT_PACKAGES += ShannonIms
+
+$(call inherit-product-if-exists, vendor/samsung_slsi/telephony/shannon-iwlan/device-vendor.mk)
+include device/google/gs101/telephony/pktrouter.mk
+
+#RCS Test Messaging App
+PRODUCT_PACKAGES_DEBUG += \
+ TestRcsApp
+
+PRODUCT_PACKAGES += ShannonRcs
+
+# Boot Control HAL
+PRODUCT_PACKAGES += \
+ android.hardware.boot@1.2-impl-gs101 \
+ android.hardware.boot@1.2-service-gs101
+
+# Exynos RIL and telephony
+# Multi SIM(DSDS)
+SIM_COUNT := 2
+SUPPORT_MULTI_SIM := true
+# Support NR
+SUPPORT_NR := true
+# Using IRadio 1.6
+USE_RADIO_HAL_1_6 := true
+
+#$(call inherit-product, vendor/google_devices/telephony/common/device-vendor.mk)
+#$(call inherit-product, vendor/google_devices/gs101/proprietary/device-vendor.mk)
+
+ifneq ($(BOARD_WITHOUT_RADIO),true)
+$(call inherit-product-if-exists, vendor/samsung_slsi/telephony/common/device-vendor.mk)
+PRODUCT_COPY_FILES += frameworks/native/data/etc/android.hardware.telephony.cdma.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.telephony.cdma.xml
+endif
+
+ifeq (,$(filter %_64,$(TARGET_PRODUCT)))
+$(call inherit-product, $(SRC_TARGET_DIR)/product/core_64_bit.mk)
+else
+$(call inherit-product, $(SRC_TARGET_DIR)/product/core_64_bit_only.mk)
+endif
+#$(call inherit-product, hardware/google_devices/exynos5/exynos5.mk)
+#$(call inherit-product-if-exists, hardware/google_devices/gs101/gs101.mk)
+#$(call inherit-product-if-exists, vendor/google_devices/common/exynos-vendor.mk)
+#$(call inherit-product-if-exists, hardware/broadcom/wlan/bcmdhd/firmware/bcm4375/device-bcm.mk)
+$(call inherit-product-if-exists, vendor/google/sensors/usf/android/usf_efw_product.mk)
+$(call inherit-product-if-exists, vendor/google/services/LyricCameraHAL/src/build/device-vendor.mk)
+$(call inherit-product-if-exists, vendor/google/camera/devices/whi/device-vendor.mk)
+
+PRODUCT_COPY_FILES += \
+ device/google/gs101/default-permissions.xml:$(TARGET_COPY_OUT_PRODUCT)/etc/default-permissions/default-permissions.xml \
+ device/google/gs101/component-overrides.xml:$(TARGET_COPY_OUT_VENDOR)/etc/sysconfig/component-overrides.xml \
+ frameworks/native/data/etc/handheld_core_hardware.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/handheld_core_hardware.xml \
+
+# modem_svc_sit daemon
+PRODUCT_PACKAGES += modem_svc_sit
+
+# modem logging binary/configs
+PRODUCT_PACKAGES += modem_logging_control
+
+PRODUCT_COPY_FILES += \
+ device/google/gs101/radio/gnss_blanking.csv:$(TARGET_COPY_OUT_VENDOR)/etc/modem/gnss_blanking.csv
+
+# ARM NN files
+ARM_COMPUTE_CL_ENABLE := 1
+
+# Vibrator Diag
+PRODUCT_PACKAGES_DEBUG += \
+ diag-vibrator \
+ diag-vibrator-cs40l25a \
+ diag-vibrator-drv2624 \
+ $(NULL)
+
+# NFC
+PRODUCT_COPY_FILES += \
+ frameworks/native/data/etc/android.hardware.nfc.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.nfc.xml \
+ frameworks/native/data/etc/android.hardware.nfc.hce.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.nfc.hce.xml \
+ frameworks/native/data/etc/android.hardware.nfc.hcef.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.nfc.hcef.xml \
+ frameworks/native/data/etc/com.nxp.mifare.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/com.nxp.mifare.xml \
+ frameworks/native/data/etc/android.hardware.nfc.uicc.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.nfc.uicc.xml \
+ frameworks/native/data/etc/android.hardware.nfc.ese.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.nfc.ese.xml
+
+PRODUCT_PACKAGES += \
+ NfcNci \
+ Tag \
+ android.hardware.nfc@1.2-service.st
+
+# SecureElement
+PRODUCT_COPY_FILES += \
+ frameworks/native/data/etc/android.hardware.se.omapi.ese.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.se.omapi.ese.xml \
+ frameworks/native/data/etc/android.hardware.se.omapi.uicc.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.se.omapi.uicc.xml
+
+PRODUCT_PACKAGES += \
+ android.hardware.health@2.1-impl-gs101 \
+ android.hardware.health@2.1-service
+
+# Audio
+# Audio HAL Server & Default Implementations
+PRODUCT_PACKAGES += \
+ android.hardware.audio.service \
+ android.hardware.audio@7.0-impl \
+ android.hardware.audio.effect@7.0-impl \
+ android.hardware.bluetooth.audio@2.1-impl \
+ android.hardware.soundtrigger@2.3-impl \
+ vendor.google.whitechapel.audio.audioext@2.0-impl
+
+#Audio HAL libraries
+PRODUCT_PACKAGES += \
+ audio.primary.$(TARGET_BOARD_PLATFORM) \
+ audio.platform.aoc \
+ sound_trigger.primary.$(TARGET_BOARD_PLATFORM) \
+ audio_bt_aoc \
+ audio_tunnel_aoc \
+ aoc_aud_ext \
+ libaoctuningdecoder \
+ libaoc_waves \
+ liboffloadeffect \
+ audio_waves_aoc \
+ audio_fortemedia_aoc \
+ audio_bluenote_aoc \
+ audio_usb_aoc \
+ audio_spk_35l41 \
+ audio.usb.default \
+ audio.usbv2.default \
+ audio.a2dp.default \
+ audio.bluetooth.default \
+ audio.r_submix.default \
+ libamcsextfile \
+ audio_amcs_ext \
+
+
+#Audio Vendor libraries
+PRODUCT_PACKAGES += \
+ libfvsam_prm_parser \
+ libmahalcontroller \
+ libAlgFx_HiFi3z
+
+# AudioHAL Configurations
+PRODUCT_COPY_FILES += \
+ frameworks/av/services/audiopolicy/config/a2dp_audio_policy_configuration_7_0.xml:$(TARGET_COPY_OUT_VENDOR)/etc/a2dp_audio_policy_configuration_7_0.xml \
+ frameworks/av/services/audiopolicy/config/a2dp_in_audio_policy_configuration_7_0.xml:$(TARGET_COPY_OUT_VENDOR)/etc/a2dp_in_audio_policy_configuration_7_0.xml \
+ frameworks/av/services/audiopolicy/config/bluetooth_audio_policy_configuration_7_0.xml:$(TARGET_COPY_OUT_VENDOR)/etc/bluetooth_audio_policy_configuration_7_0.xml \
+ frameworks/av/services/audiopolicy/config/hearing_aid_audio_policy_configuration_7_0.xml:$(TARGET_COPY_OUT_VENDOR)/etc/hearing_aid_audio_policy_configuration_7_0.xml \
+ frameworks/av/services/audiopolicy/config/r_submix_audio_policy_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/r_submix_audio_policy_configuration.xml \
+ frameworks/av/services/audiopolicy/config/usb_audio_policy_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/usb_audio_policy_configuration.xml \
+ frameworks/av/services/audiopolicy/config/audio_policy_volumes.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_policy_volumes.xml \
+ frameworks/av/services/audiopolicy/config/default_volume_tables.xml:$(TARGET_COPY_OUT_VENDOR)/etc/default_volume_tables.xml \
+
+#Audio soong
+PRODUCT_SOONG_NAMESPACES += \
+ vendor/google/whitechapel/audio/hal \
+ vendor/google/whitechapel/audio/interfaces
+
+SOONG_CONFIG_NAMESPACES += aoc_audio_board
+SOONG_CONFIG_aoc_audio_board += \
+ platform
+
+SOONG_CONFIG_aoc_audio_board_platform := $(TARGET_BOARD_PLATFORM)
+
+# Audio properties
+PRODUCT_PROPERTY_OVERRIDES += \
+ ro.config.vc_call_vol_steps=7 \
+ ro.config.media_vol_steps=25 \
+ ro.audio.monitorRotation = true \
+ ro.audio.offload_wakelock=false
+
+ifeq (,$(filter aosp_%,$(TARGET_PRODUCT)))
+# IAudioMetricExt HIDL
+PRODUCT_PACKAGES += \
+ vendor.google.audiometricext@1.0-service-vendor
+endif
+
+# vndservicemanager and vndservice no longer included in API 30+, however needed by vendor code.
+# See b/148807371 for reference
+PRODUCT_PACKAGES += vndservicemanager
+PRODUCT_PACKAGES += vndservice
+
+# TinyTools, debug tool and cs35l41 speaker calibration tool for Audio
+ifneq (,$(filter userdebug eng, $(TARGET_BUILD_VARIANT)))
+PRODUCT_PACKAGES += \
+ tinyplay \
+ tinycap \
+ tinymix \
+ tinypcminfo \
+ tinyhostless \
+ cplay \
+ aoc_hal \
+ aoc_tuning_inft \
+ crus_sp_cal \
+ mahal_test \
+ ma_aoc_tuning_test
+endif
+
+PRODUCT_PACKAGES += \
+ google.hardware.media.c2@1.0-service \
+ libgc2_store \
+ libgc2_base \
+ libgc2_av1_dec \
+ libbo_av1 \
+ libgc2_cwl \
+ libgc2_utils
+
+# Thermal HAL
+include hardware/google/pixel/thermal/device.mk
+PRODUCT_PROPERTY_OVERRIDES += persist.vendor.enable.thermal.genl=true
+
+include device/google/gs101/edgetpu/edgetpu.mk
+
+# Connectivity Thermal Power Manager
+PRODUCT_PACKAGES += \
+ ConnectivityThermalPowerManager
+
+# A/B support
+PRODUCT_PACKAGES += \
+ otapreopt_script \
+ cppreopts.sh \
+ update_engine \
+ update_engine_sideload \
+ update_verifier
+
+# tetheroffload HAL
+PRODUCT_PACKAGES += \
+ vendor.samsung_slsi.hardware.tetheroffload@1.1-service
+
+# pKVM
+ifeq ($(TARGET_PKVM_ENABLED),true)
+ $(call inherit-product, packages/modules/Virtualization/apex/product_packages.mk)
+endif
+
+# Enable watchdog timeout loop breaker.
+PRODUCT_PROPERTY_OVERRIDES += \
+ framework_watchdog.fatal_window.second=600 \
+ framework_watchdog.fatal_count=3
+
+# Enable zygote critical window.
+PRODUCT_PROPERTY_OVERRIDES += \
+ zygote.critical_window.minute=10
+
+# Suspend properties
+# (b/171433995): Enable short suspend backoffs and reduce max backoff time
+PRODUCT_PROPERTY_OVERRIDES += \
+ suspend.short_suspend_threshold_millis=2000 \
+ suspend.short_suspend_backoff_enabled=true \
+ suspend.max_sleep_time_millis=40000
+
+# (b/183612348): Enable skia reduceOpsTaskSplitting
+PRODUCT_PROPERTY_OVERRIDES += \
+ renderthread.skia.reduceopstasksplitting=true
+
+# Enable Incremental on the device
+PRODUCT_PROPERTY_OVERRIDES += \
+ ro.incremental.enable=true
+
+# Project
+include hardware/google/pixel/common/pixel-common-device.mk
+
+# Pixel Logger
+include hardware/google/pixel/PixelLogger/PixelLogger.mk
+
+# Telephony
+include device/google/gs101/telephony/user.mk
+
+# Battery Stats Viewer
+PRODUCT_PACKAGES_DEBUG += BatteryStatsViewer
+
+# Install product specific framework compatibility matrix
+# (TODO: b/169535506) This includes the FCM for system_ext and product partition.
+# It must be split into the FCM of each partition.
+DEVICE_PRODUCT_COMPATIBILITY_MATRIX_FILE := device/google/gs101/device_framework_matrix_product.xml
+
+# Preopt SystemUI
+PRODUCT_DEXPREOPT_SPEED_APPS += \
+ SystemUIGoogle
+
+# Keymaster configuration
+PRODUCT_COPY_FILES += \
+ frameworks/native/data/etc/android.software.device_id_attestation.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.software.device_id_attestation.xml \
+ frameworks/native/data/etc/android.hardware.device_unique_attestation.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.device_unique_attestation.xml
+
+# Use 64-bit dex2oat for better dexopt time.
+PRODUCT_PROPERTY_OVERRIDES += \
+ dalvik.vm.dex2oat64.enabled=true
+
+# Call deleteAllKeys if vold detects a factory reset
+PRODUCT_VENDOR_PROPERTIES += ro.crypto.metadata_init_delete_all_keys.enabled=true
diff --git a/device_framework_matrix_product.xml b/device_framework_matrix_product.xml
new file mode 100644
index 0000000..0637c13
--- /dev/null
+++ b/device_framework_matrix_product.xml
@@ -0,0 +1,194 @@
+<compatibility-matrix version="1.0" type="framework" level="6">
+ <hal format="hidl" optional="true">
+ <name>android.hardware.radio</name>
+ <version>1.2</version>
+ <interface>
+ <name>ISap</name>
+ <instance>slot2</instance>
+ </interface>
+ </hal>
+ <hal format="aidl" optional="true">
+ <name>android.hardware.vibrator</name>
+ <version>2</version>
+ <interface>
+ <name>IVibrator</name>
+ <instance>dual</instance>
+ </interface>
+ </hal>
+ <hal format="hidl" optional="true">
+ <name>android.vendor.samsung_slsi.telephony.hardware.radio</name>
+ <version>1.1</version>
+ <interface>
+ <name>IOemSamsungslsi</name>
+ <instance>slot1</instance>
+ <instance>slot2</instance>
+ </interface>
+ </hal>
+ <hal format="hidl" optional="true">
+ <name>com.fingerprints33.extension</name>
+ <version>1.0</version>
+ <interface>
+ <name>IFingerprintAuthenticator</name>
+ <instance>default</instance>
+ </interface>
+ <interface>
+ <name>IFingerprintCalibration</name>
+ <instance>default</instance>
+ </interface>
+ <interface>
+ <name>IFingerprintEngineering</name>
+ <instance>default</instance>
+ </interface>
+ <interface>
+ <name>IFingerprintNavigation</name>
+ <instance>default</instance>
+ </interface>
+ <interface>
+ <name>IFingerprintRecalibration</name>
+ <instance>default</instance>
+ </interface>
+ <interface>
+ <name>IFingerprintSenseTouch</name>
+ <instance>default</instance>
+ </interface>
+ <interface>
+ <name>IFingerprintSensorTest</name>
+ <instance>default</instance>
+ </interface>
+ </hal>
+ <hal format="aidl" optional="true">
+ <name>com.google.face.debug</name>
+ <interface>
+ <name>IDebugHost</name>
+ <instance>default</instance>
+ </interface>
+ </hal>
+ <hal format="aidl" optional="true">
+ <name>com.google.edgetpu</name>
+ <interface>
+ <name>IEdgeTpuVendorService</name>
+ <instance>default</instance>
+ </interface>
+ </hal>
+ <hal format="aidl" optional="true">
+ <name>com.google.hardware.pixel.display</name>
+ <version>3</version>
+ <interface>
+ <name>IDisplay</name>
+ <instance>default</instance>
+ </interface>
+ </hal>
+ <hal format="aidl" optional="true">
+ <name>com.google.input</name>
+ <interface>
+ <name>ITouchContextService</name>
+ <instance>default</instance>
+ </interface>
+ </hal>
+ <hal format="hidl" optional="true">
+ <name>hardware.google.bluetooth.bt_channel_avoidance</name>
+ <version>1.0</version>
+ <interface>
+ <name>IBTChannelAvoidance</name>
+ <instance>default</instance>
+ </interface>
+ </hal>
+ <hal format="hidl" optional="true">
+ <name>hardware.google.bluetooth.sar</name>
+ <version>1.1</version>
+ <interface>
+ <name>IBluetoothSar</name>
+ <instance>default</instance>
+ </interface>
+ </hal>
+ <hal format="hidl" optional="true">
+ <name>hardware.google.bluetooth.ccc</name>
+ <transport>hwbinder</transport>
+ <version>1.0</version>
+ <interface>
+ <name>IBluetoothCcc</name>
+ <instance>default</instance>
+ </interface>
+ </hal>
+ <hal format="aidl" optional="true">
+ <name>hardware.qorvo.uwb</name>
+ <interface>
+ <name>IUwb</name>
+ <instance>default</instance>
+ </interface>
+ </hal>
+ <hal format="hidl" optional="true">
+ <name>vendor.goodix.hardware.biometrics.fingerprint</name>
+ <version>2.1</version>
+ <interface>
+ <name>IGoodixFingerprintDaemon</name>
+ <instance>default</instance>
+ </interface>
+ </hal>
+ <hal format="hidl" optional="true">
+ <name>vendor.google.google_battery</name>
+ <version>1.1</version>
+ <interface>
+ <name>IGoogleBattery</name>
+ <instance>default</instance>
+ </interface>
+ </hal>
+ <hal format="hidl" optional="true">
+ <name>vendor.google.radioext</name>
+ <version>1.3</version>
+ <interface>
+ <name>IRadioExt</name>
+ <instance>default</instance>
+ </interface>
+ </hal>
+ <hal format="hidl">
+ <name>vendor.google.whitechapel.audio.audioext</name>
+ <version>2.0</version>
+ <interface>
+ <name>IAudioExt</name>
+ <instance>default</instance>
+ </interface>
+ </hal>
+ <hal format="hidl" optional="true">
+ <name>vendor.google.wifi_ext</name>
+ <version>1.2</version>
+ <interface>
+ <name>IWifiExt</name>
+ <instance>default</instance>
+ </interface>
+ </hal>
+ <hal format="hidl" optional="true">
+ <name>vendor.google.wireless_charger</name>
+ <version>1.3</version>
+ <interface>
+ <name>IWirelessCharger</name>
+ <instance>default</instance>
+ </interface>
+ </hal>
+ <hal format="hidl" optional="true">
+ <name>vendor.samsung_slsi.telephony.hardware.oemservice</name>
+ <version>1.0</version>
+ <interface>
+ <name>IOemService</name>
+ <instance>dm0</instance>
+ <instance>dm1</instance>
+ <instance>sced0</instance>
+ </interface>
+ </hal>
+ <hal format="hidl" optional="true">
+ <name>vendor.samsung_slsi.telephony.hardware.radioExternal</name>
+ <version>1.1</version>
+ <interface>
+ <name>IOemSlsiRadioExternal</name>
+ <instance>rilExternal</instance>
+ </interface>
+ </hal>
+ <hal format="hidl">
+ <name>vendor.google.audiometricext</name>
+ <version>1.0</version>
+ <interface>
+ <name>IAudioMetricExt</name>
+ <instance>default</instance>
+ </interface>
+ </hal>
+</compatibility-matrix>
diff --git a/disable_contaminant_detection.sh b/disable_contaminant_detection.sh
new file mode 100755
index 0000000..97ae794
--- /dev/null
+++ b/disable_contaminant_detection.sh
@@ -0,0 +1,3 @@
+#!/vendor/bin/sh
+
+echo 0 > "$(find /sys/devices/platform/10d50000.hsi2c -name contaminant_detection)"
diff --git a/display/display_colordata_cal0.pb b/display/display_colordata_cal0.pb
new file mode 100644
index 0000000..1bef374
--- /dev/null
+++ b/display/display_colordata_cal0.pb
Binary files differ
diff --git a/dumpstate/Android.mk b/dumpstate/Android.mk
new file mode 100644
index 0000000..d9fee2c
--- /dev/null
+++ b/dumpstate/Android.mk
@@ -0,0 +1,47 @@
+#
+# Copyright 2016 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+LOCAL_PATH:= $(call my-dir)
+include $(CLEAR_VARS)
+LOCAL_MODULE := android.hardware.dumpstate@1.1-service.gs101
+LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0
+LOCAL_LICENSE_CONDITIONS := notice
+LOCAL_NOTICE_FILE := $(LOCAL_PATH)/../NOTICE
+LOCAL_INIT_RC := android.hardware.dumpstate@1.1-service.gs101.rc
+LOCAL_MODULE_RELATIVE_PATH := hw
+
+LOCAL_SRC_FILES := \
+ DumpstateDevice.cpp \
+ service.cpp
+
+LOCAL_SHARED_LIBRARIES := \
+ android.hardware.dumpstate@1.0 \
+ android.hardware.dumpstate@1.1 \
+ libbase \
+ libcutils \
+ libdumpstateutil \
+ libhidlbase \
+ libhidltransport \
+ libhwbinder \
+ liblog \
+ libutils
+
+LOCAL_CFLAGS := -Werror -Wall
+
+LOCAL_MODULE_TAGS := optional
+LOCAL_PROPRIETARY_MODULE := true
+
+include $(BUILD_EXECUTABLE)
diff --git a/dumpstate/DumpstateDevice.cpp b/dumpstate/DumpstateDevice.cpp
new file mode 100644
index 0000000..620df1a
--- /dev/null
+++ b/dumpstate/DumpstateDevice.cpp
@@ -0,0 +1,1190 @@
+/*
+ * Copyright 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#define LOG_TAG "dumpstate_device"
+
+#include <inttypes.h>
+
+#include <android-base/file.h>
+#include <android-base/stringprintf.h>
+#include <android-base/properties.h>
+#include <android-base/unique_fd.h>
+#include <hidl/HidlBinderSupport.h>
+#include <log/log.h>
+#include <pthread.h>
+#include <sys/stat.h>
+
+#include "DumpstateDevice.h"
+
+#include "DumpstateUtil.h"
+
+#define MODEM_LOG_DIRECTORY "/data/vendor/radio/logs/always-on"
+#define MODEM_EXTENDED_LOG_DIRECTORY "/data/vendor/radio/extended_logs"
+#define RIL_LOG_DIRECTORY "/data/vendor/radio"
+#define RIL_LOG_DIRECTORY_PROPERTY "persist.vendor.ril.log.base_dir"
+#define RIL_LOG_NUMBER_PROPERTY "persist.vendor.ril.log.num_file"
+#define MODEM_LOGGING_PERSIST_PROPERTY "persist.vendor.sys.modem.logging.enable"
+#define MODEM_LOGGING_PROPERTY "vendor.sys.modem.logging.enable"
+#define MODEM_LOGGING_STATUS_PROPERTY "vendor.sys.modem.logging.status"
+#define MODEM_LOGGING_NUMBER_BUGREPORT_PROPERTY "persist.vendor.sys.modem.logging.br_num"
+#define MODEM_LOGGING_PATH_PROPERTY "vendor.sys.modem.logging.log_path"
+#define GPS_LOG_DIRECTORY "/data/vendor/gps/logs"
+#define GPS_LOG_NUMBER_PROPERTY "persist.vendor.gps.aol.log_num"
+#define GPS_LOGGING_STATUS_PROPERTY "vendor.gps.aol.enabled"
+
+#define UFS_BOOTDEVICE "ro.boot.bootdevice"
+
+#define TCPDUMP_LOG_DIRECTORY "/data/vendor/tcpdump_logger/logs"
+#define TCPDUMP_NUMBER_BUGREPORT "persist.vendor.tcpdump.log.br_num"
+#define TCPDUMP_PERSIST_PROPERTY "persist.vendor.tcpdump.log.alwayson"
+
+#define HW_REVISION "ro.boot.hardware.revision"
+
+using android::os::dumpstate::CommandOptions;
+using android::os::dumpstate::DumpFileToFd;
+using android::os::dumpstate::PropertiesHelper;
+using android::os::dumpstate::RunCommandToFd;
+
+namespace android {
+namespace hardware {
+namespace dumpstate {
+namespace V1_1 {
+namespace implementation {
+
+#define GPS_LOG_PREFIX "gl-"
+#define GPS_MCU_LOG_PREFIX "esw-"
+#define MODEM_LOG_PREFIX "sbuff_"
+#define EXTENDED_LOG_PREFIX "extended_log_"
+#define RIL_LOG_PREFIX "rild.log."
+#define BUFSIZE 65536
+#define TCPDUMP_LOG_PREFIX "tcpdump"
+
+typedef std::chrono::time_point<std::chrono::steady_clock> timepoint_t;
+
+const char kVerboseLoggingProperty[] = "persist.vendor.verbose_logging_enabled";
+
+void copyFile(std::string srcFile, std::string destFile) {
+ uint8_t buffer[BUFSIZE];
+ ssize_t size;
+
+ int fdSrc = open(srcFile.c_str(), O_RDONLY);
+ if (fdSrc < 0) {
+ ALOGD("Failed to open source file %s\n", srcFile.c_str());
+ return;
+ }
+
+ int fdDest = open(destFile.c_str(), O_WRONLY | O_CREAT, 0666);
+ if (fdDest < 0) {
+ ALOGD("Failed to open destination file %s\n", destFile.c_str());
+ close(fdSrc);
+ return;
+ }
+
+ ALOGD("Copying %s to %s\n", srcFile.c_str(), destFile.c_str());
+ while ((size = TEMP_FAILURE_RETRY(read(fdSrc, buffer, BUFSIZE))) > 0) {
+ TEMP_FAILURE_RETRY(write(fdDest, buffer, size));
+ }
+
+ close(fdDest);
+ close(fdSrc);
+}
+
+void dumpLogs(int fd, std::string srcDir, std::string destDir, int maxFileNum,
+ const char *logPrefix) {
+ (void) fd;
+ struct dirent **dirent_list = NULL;
+ int num_entries = scandir(srcDir.c_str(),
+ &dirent_list,
+ 0,
+ (int (*)(const struct dirent **, const struct dirent **)) alphasort);
+ if (!dirent_list) {
+ return;
+ } else if (num_entries <= 0) {
+ return;
+ }
+
+ int copiedFiles = 0;
+
+ for (int i = num_entries - 1; i >= 0; i--) {
+ ALOGD("Found %s\n", dirent_list[i]->d_name);
+
+ if (0 != strncmp(dirent_list[i]->d_name, logPrefix, strlen(logPrefix))) {
+ continue;
+ }
+
+ if ((copiedFiles >= maxFileNum) && (maxFileNum != -1)) {
+ ALOGD("Skipped %s\n", dirent_list[i]->d_name);
+ continue;
+ }
+
+ copiedFiles++;
+
+ std::string srcLogFile = srcDir + "/" + dirent_list[i]->d_name;
+ std::string destLogFile = destDir + "/" + dirent_list[i]->d_name;
+ copyFile(srcLogFile, destLogFile);
+
+ ALOGD("Copying %s to %s\n", srcLogFile.c_str(), destLogFile.c_str());
+ }
+
+ while (num_entries--) {
+ free(dirent_list[num_entries]);
+ }
+
+ free(dirent_list);
+}
+
+void dumpRilLogs(int fd, std::string destDir) {
+ std::string rilLogDir =
+ android::base::GetProperty(RIL_LOG_DIRECTORY_PROPERTY, RIL_LOG_DIRECTORY);
+
+ int maxFileNum = android::base::GetIntProperty(RIL_LOG_NUMBER_PROPERTY, 50);
+
+ const std::string currentLogDir = rilLogDir + "/cur";
+ const std::string previousLogDir = rilLogDir + "/prev";
+ const std::string currentDestDir = destDir + "/cur";
+ const std::string previousDestDir = destDir + "/prev";
+
+ RunCommandToFd(fd, "MKDIR RIL CUR LOG", {"/vendor/bin/mkdir", "-p", currentDestDir.c_str()},
+ CommandOptions::WithTimeout(2).Build());
+ RunCommandToFd(fd, "MKDIR RIL PREV LOG", {"/vendor/bin/mkdir", "-p", previousDestDir.c_str()},
+ CommandOptions::WithTimeout(2).Build());
+
+ dumpLogs(fd, currentLogDir, currentDestDir, maxFileNum, RIL_LOG_PREFIX);
+ dumpLogs(fd, previousLogDir, previousDestDir, maxFileNum, RIL_LOG_PREFIX);
+}
+
+void dumpNetmgrLogs(std::string destDir) {
+ const std::vector <std::string> netmgrLogs
+ {
+ "/data/vendor/radio/metrics_data",
+ "/data/vendor/radio/omadm_logs.txt",
+ "/data/vendor/radio/power_anomaly_data.txt",
+ };
+ for (const auto& logFile : netmgrLogs) {
+ copyFile(logFile, destDir + "/" + basename(logFile.c_str()));
+ }
+}
+
+/** Dumps last synced NV data into bugreports */
+void dumpModemEFS(std::string destDir) {
+ const std::string EFS_DIRECTORY = "/mnt/vendor/efs/";
+ const std::vector <std::string> nv_files
+ {
+ EFS_DIRECTORY+"nv_normal.bin",
+ EFS_DIRECTORY+"nv_protected.bin",
+ };
+ for (const auto& logFile : nv_files) {
+ copyFile(logFile, destDir + "/" + basename(logFile.c_str()));
+ }
+}
+
+void dumpGpsLogs(int fd, std::string destDir) {
+ const std::string gpsLogDir = GPS_LOG_DIRECTORY;
+ const std::string gpsTmpLogDir = gpsLogDir + "/.tmp";
+ const std::string gpsDestDir = destDir + "/gps";
+ int maxFileNum = android::base::GetIntProperty(GPS_LOG_NUMBER_PROPERTY, 30);
+
+ RunCommandToFd(fd, "MKDIR GPS LOG", {"/vendor/bin/mkdir", "-p", gpsDestDir.c_str()},
+ CommandOptions::WithTimeout(2).Build());
+
+ dumpLogs(fd, gpsTmpLogDir, gpsDestDir, 1, GPS_LOG_PREFIX);
+ dumpLogs(fd, gpsLogDir, gpsDestDir, 3, GPS_MCU_LOG_PREFIX);
+ dumpLogs(fd, gpsLogDir, gpsDestDir, maxFileNum, GPS_LOG_PREFIX);
+}
+
+void dumpCameraLogs(int fd, const std::string &destDir) {
+ static const std::string kCameraLogDir = "/data/vendor/camera/profiler";
+ const std::string cameraDestDir = destDir + "/camera";
+ RunCommandToFd(fd, "MKDIR CAMERA LOG", {"/vendor/bin/mkdir", "-p", cameraDestDir.c_str()},
+ CommandOptions::WithTimeout(2).Build());
+ // Attach multiple latest sessions (in case the user is running concurrent
+ // sessions or starts a new session after the one with performance issues).
+ dumpLogs(fd, kCameraLogDir, cameraDestDir, 10, "session-ended-");
+ dumpLogs(fd, kCameraLogDir, cameraDestDir, 5, "high-drop-rate-");
+}
+
+timepoint_t startSection(int fd, const std::string §ionName) {
+ android::base::WriteStringToFd(
+ "\n"
+ "------ Section start: " + sectionName + " ------\n"
+ "\n", fd);
+ return std::chrono::steady_clock::now();
+}
+
+void endSection(int fd, const std::string §ionName, timepoint_t startTime) {
+ auto endTime = std::chrono::steady_clock::now();
+ auto elapsedMsec = std::chrono::duration_cast<std::chrono::milliseconds>
+ (endTime - startTime).count();
+
+ android::base::WriteStringToFd(
+ "\n"
+ "------ Section end: " + sectionName + " ------\n"
+ "Elapsed msec: " + std::to_string(elapsedMsec) + "\n"
+ "\n", fd);
+}
+
+// If you are adding a single RunCommandToFd() or DumpFileToFd() call, please
+// add it to dumpMiscSection(). But if you are adding multiple items that are
+// related to each other - for instance, for a Foo peripheral - please add them
+// to a new dump function and include it in this table so it can be accessed from the
+// command line, e.g.:
+// lshal debug android.hardware.dumpstate@1.0::IDumpstateDevice/default foo
+//
+// However, if your addition generates attachments and/or binary data for the
+// bugreport (i.e. if it requires two file descriptors to execute), it must not be
+// added to this table and should instead be added to dumpstateBoard() below.
+
+DumpstateDevice::DumpstateDevice()
+ : mTextSections{
+ { "wlan", [this](int fd) { dumpWlanSection(fd); } },
+ { "soc", [this](int fd) { dumpSocSection(fd); } },
+ { "storage", [this](int fd) { dumpStorageSection(fd); } },
+ { "memory", [this](int fd) { dumpMemorySection(fd); } },
+ { "Devfreq", [this](int fd) { dumpDevfreqSection(fd); } },
+ { "cpu", [this](int fd) { dumpCpuSection(fd); } },
+ { "power", [this](int fd) { dumpPowerSection(fd); } },
+ { "thermal", [this](int fd) { dumpThermalSection(fd); } },
+ { "touch", [this](int fd) { dumpTouchSection(fd); } },
+ { "display", [this](int fd) { dumpDisplaySection(fd); } },
+ { "sensors-usf", [this](int fd) { dumpSensorsUSFSection(fd); } },
+ { "aoc", [this](int fd) { dumpAoCSection(fd); } },
+ { "ramdump", [this](int fd) { dumpRamdumpSection(fd); } },
+ { "misc", [this](int fd) { dumpMiscSection(fd); } },
+ { "gsc", [this](int fd) { dumpGscSection(fd); } },
+ { "camera", [this](int fd) { dumpCameraSection(fd); } },
+ { "trusty", [this](int fd) { dumpTrustySection(fd); } },
+ { "modem", [this](int fd) { dumpModemSection(fd); } },
+ } {
+}
+
+// Dump data requested by an argument to the "debug" HAL interface, or help info
+// if the specified section is not supported.
+void DumpstateDevice::dumpTextSection(int fd, const std::string §ionName) {
+ bool dumpAll = (sectionName == kAllSections);
+
+ for (const auto §ion : mTextSections) {
+ if (dumpAll || sectionName == section.first) {
+ auto startTime = startSection(fd, section.first);
+ section.second(fd);
+ endSection(fd, section.first, startTime);
+
+ if (!dumpAll) {
+ return;
+ }
+ }
+ }
+
+ if (dumpAll) {
+ return;
+ }
+
+ // An unsupported section was requested on the command line
+ android::base::WriteStringToFd("Unrecognized text section: " + sectionName + "\n", fd);
+ android::base::WriteStringToFd("Try \"" + kAllSections + "\" or one of the following:", fd);
+ for (const auto §ion : mTextSections) {
+ android::base::WriteStringToFd(" " + section.first, fd);
+ }
+ android::base::WriteStringToFd("\nNote: sections with attachments (e.g. modem) are"
+ "not avalable from the command line.\n", fd);
+}
+
+// Dump items related to wlan
+void DumpstateDevice::dumpWlanSection(int fd) {
+ RunCommandToFd(fd, "WLAN Debug Dump", {"/vendor/bin/sh", "-c",
+ "cat /sys/wifi/dump_start"});
+}
+
+// Dump items related to power and battery
+void DumpstateDevice::dumpPowerSection(int fd) {
+ struct stat buffer;
+
+ RunCommandToFd(fd, "Power Stats Times", {"/vendor/bin/sh", "-c",
+ "echo -n \"Boot: \" && /vendor/bin/uptime -s && "
+ "echo -n \"Now: \" && date"});
+
+ RunCommandToFd(fd, "ACPM stats", {"/vendor/bin/sh", "-c",
+ "for f in /sys/devices/platform/acpm_stats/*_stats ; do "
+ "echo \"\\n\\n$f\" ; cat $f ; "
+ "done"});
+
+ DumpFileToFd(fd, "CPU PM stats", "/sys/devices/system/cpu/cpupm/cpupm/time_in_state");
+
+ DumpFileToFd(fd, "GENPD summary", "/d/pm_genpd/pm_genpd_summary");
+
+ DumpFileToFd(fd, "Power supply property battery", "/sys/class/power_supply/battery/uevent");
+ DumpFileToFd(fd, "Power supply property dc", "/sys/class/power_supply/dc/uevent");
+ DumpFileToFd(fd, "Power supply property gcpm", "/sys/class/power_supply/gcpm/uevent");
+ DumpFileToFd(fd, "Power supply property gcpm_pps", "/sys/class/power_supply/gcpm_pps/uevent");
+ DumpFileToFd(fd, "Power supply property main-charger", "/sys/class/power_supply/main-charger/uevent");
+ DumpFileToFd(fd, "Power supply property pca9486-mains", "/sys/class/power_supply/pca9468-mains/uevent");
+ DumpFileToFd(fd, "Power supply property tcpm", "/sys/class/power_supply/tcpm-source-psy-i2c-max77759tcpc/uevent");
+ DumpFileToFd(fd, "Power supply property usb", "/sys/class/power_supply/usb/uevent");
+ DumpFileToFd(fd, "Power supply property wireless", "/sys/class/power_supply/wireless/uevent");
+ if (!stat("/sys/class/power_supply/maxfg", &buffer)) {
+ DumpFileToFd(fd, "Power supply property maxfg", "/sys/class/power_supply/maxfg/uevent");
+ DumpFileToFd(fd, "m5_state", "/sys/class/power_supply/maxfg/m5_model_state");
+ DumpFileToFd(fd, "maxfg", "/dev/logbuffer_maxfg");
+ } else {
+ DumpFileToFd(fd, "Power supply property maxfg_base", "/sys/class/power_supply/maxfg_base/uevent");
+ DumpFileToFd(fd, "Power supply property maxfg_flip", "/sys/class/power_supply/maxfg_flip/uevent");
+ DumpFileToFd(fd, "m5_state", "/sys/class/power_supply/maxfg_base/m5_model_state");
+ DumpFileToFd(fd, "maxfg_base", "/dev/logbuffer_maxfg_base");
+ DumpFileToFd(fd, "maxfg_flip", "/dev/logbuffer_maxfg_flip");
+ }
+
+ if (!stat("/dev/logbuffer_tcpm", &buffer)) {
+ DumpFileToFd(fd, "Logbuffer TCPM", "/dev/logbuffer_tcpm");
+ } else if (!PropertiesHelper::IsUserBuild()) {
+ if (!stat("/sys/kernel/debug/tcpm", &buffer)) {
+ RunCommandToFd(fd, "TCPM logs", {"/vendor/bin/sh", "-c", "cat /sys/kernel/debug/tcpm/*"});
+ } else {
+ RunCommandToFd(fd, "TCPM logs", {"/vendor/bin/sh", "-c", "cat /sys/kernel/debug/usb/tcpm*"});
+ }
+ }
+
+ DumpFileToFd(fd, "PD Engine", "/dev/logbuffer_usbpd");
+ DumpFileToFd(fd, "PPS-google_cpm", "/dev/logbuffer_cpm");
+ DumpFileToFd(fd, "PPS-dc", "/dev/logbuffer_pca9468");
+
+ DumpFileToFd(fd, "BMS", "/dev/logbuffer_ssoc");
+ DumpFileToFd(fd, "TTF", "/dev/logbuffer_ttf");
+ DumpFileToFd(fd, "TTF details", "/sys/class/power_supply/battery/ttf_details");
+ DumpFileToFd(fd, "TTF stats", "/sys/class/power_supply/battery/ttf_stats");
+ DumpFileToFd(fd, "maxq", "/dev/logbuffer_maxq");
+
+ RunCommandToFd(fd, "TRICKLE-DEFEND Config", {"/vendor/bin/sh", "-c",
+ " cd /sys/devices/platform/google,battery/power_supply/battery/;"
+ " for f in `ls bd_*` ; do echo \"$f: `cat $f`\" ; done"});
+
+ RunCommandToFd(fd, "DWELL-DEFEND Config", {"/vendor/bin/sh", "-c",
+ " cd /sys/devices/platform/google,charger/;"
+ " for f in `ls charge_s*` ; do echo \"$f: `cat $f`\" ; done"});
+
+ RunCommandToFd(fd, "TEMP-DEFEND Config", {"/vendor/bin/sh", "-c",
+ " cd /sys/devices/platform/google,charger/;"
+ " for f in `ls bd_*` ; do echo \"$f: `cat $f`\" ; done"});
+ if (!PropertiesHelper::IsUserBuild()) {
+
+ RunCommandToFd(fd, "DC_registers dump", {"/vendor/bin/sh", "-c",
+ "for f in /d/regmap/*-0057-pca9468-mains ; do "
+ "regs=`cat $f/registers`; echo $f: ;"
+ "echo \"$regs\"; done"});
+
+ RunCommandToFd(fd, "fg_model", {"/vendor/bin/sh", "-c",
+ "for f in /d/maxfg* ; do "
+ "regs=`cat $f/fg_model`; echo $f: ;"
+ "echo \"$regs\"; done"});
+
+ RunCommandToFd(fd, "fg_alo_ver", {"/vendor/bin/sh", "-c",
+ "for f in /d/maxfg* ; do "
+ "regs=`cat $f/algo_ver`; echo $f: ;"
+ "echo \"$regs\"; done"});
+
+ RunCommandToFd(fd, "fg_model_ok", {"/vendor/bin/sh", "-c",
+ "for f in /d/maxfg* ; do "
+ "regs=`cat $f/model_ok`; echo $f: ;"
+ "echo \"$regs\"; done"});
+
+
+ /* FG Registers */
+ RunCommandToFd(fd, "fg registers", {"/vendor/bin/sh", "-c",
+ "for f in /d/regmap/*-0036 ; do "
+ "regs=`cat $f/registers`; echo $f: ;"
+ "echo \"$regs\"; done"});
+ }
+
+ /* EEPROM State */
+ if (!stat("/sys/devices/platform/10970000.hsi2c/i2c-4/4-0050/eeprom", &buffer)) {
+ RunCommandToFd(fd, "Battery EEPROM", {"/vendor/bin/sh", "-c", "xxd /sys/devices/platform/10970000.hsi2c/i2c-4/4-0050/eeprom"});
+ } else {
+ RunCommandToFd(fd, "Battery EEPROM", {"/vendor/bin/sh", "-c", "xxd /sys/devices/platform/10970000.hsi2c/i2c-5/5-0050/eeprom"});
+ }
+
+ DumpFileToFd(fd, "Charger Stats", "/sys/class/power_supply/battery/charge_details");
+ if (!PropertiesHelper::IsUserBuild()) {
+ RunCommandToFd(fd, "Google Charger", {"/vendor/bin/sh", "-c", "cd /sys/kernel/debug/google_charger/; "
+ "for f in `ls pps_*` ; do echo \"$f: `cat $f`\" ; done"});
+ RunCommandToFd(fd, "Google Battery", {"/vendor/bin/sh", "-c", "cd /sys/kernel/debug/google_battery/; "
+ "for f in `ls ssoc_*` ; do echo \"$f: `cat $f`\" ; done"});
+ }
+
+ DumpFileToFd(fd, "WLC logs", "/dev/logbuffer_wireless");
+ DumpFileToFd(fd, "WLC VER", "/sys/class/power_supply/wireless/device/version");
+ DumpFileToFd(fd, "WLC STATUS", "/sys/class/power_supply/wireless/device/status");
+ DumpFileToFd(fd, "WLC FW Version", "/sys/class/power_supply/wireless/device/fw_rev");
+ DumpFileToFd(fd, "RTX", "/dev/logbuffer_rtx");
+
+ if (!PropertiesHelper::IsUserBuild()) {
+ RunCommandToFd(fd, "gvotables", {"/vendor/bin/sh", "-c", "cat /sys/kernel/debug/gvotables/*/status"});
+ }
+ RunCommandToFd(fd, "Mitigation Stats", {"/vendor/bin/sh", "-c", "echo \"Source\\t\\tCount\\tSOC\\tTime\\tVoltage\"; "
+ "for f in `ls /sys/devices/virtual/pmic/mitigation/last_triggered_count/*` ; "
+ "do count=`cat $f`; "
+ "a=${f/\\/sys\\/devices\\/virtual\\/pmic\\/mitigation\\/last_triggered_count\\//}; "
+ "b=${f/last_triggered_count/last_triggered_capacity}; "
+ "c=${f/last_triggered_count/last_triggered_timestamp/}; "
+ "d=${f/last_triggered_count/last_triggered_voltage/}; "
+ "cnt=`cat $f`; "
+ "cap=`cat ${b/count/cap}`; "
+ "ti=`cat ${c/count/time}`; "
+ "volt=`cat ${d/count/volt}`; "
+ "echo \"${a/_count/} "
+ "\\t$cnt\\t$cap\\t$ti\\t$volt\" ; done"});
+ RunCommandToFd(fd, "Clock Divider Ratio", {"/vendor/bin/sh", "-c", "echo \"Source\\t\\tRatio\"; "
+ "for f in `ls /sys/devices/virtual/pmic/mitigation/clock_ratio/*` ; "
+ "do ratio=`cat $f`; "
+ "a=${f/\\/sys\\/devices\\/virtual\\/pmic\\/mitigation\\/clock_ratio\\//}; "
+ "echo \"${a/_ratio/} \\t$ratio\" ; done"});
+ RunCommandToFd(fd, "Clock Stats", {"/vendor/bin/sh", "-c", "echo \"Source\\t\\tStats\"; "
+ "for f in `ls /sys/devices/virtual/pmic/mitigation/clock_stats/*` ; "
+ "do stats=`cat $f`; "
+ "a=${f/\\/sys\\/devices\\/virtual\\/pmic\\/mitigation\\/clock_stats\\//}; "
+ "echo \"${a/_stats/} \\t$stats\" ; done"});
+ RunCommandToFd(fd, "Triggered Level", {"/vendor/bin/sh", "-c", "echo \"Source\\t\\tLevel\"; "
+ "for f in `ls /sys/devices/virtual/pmic/mitigation/triggered_lvl/*` ; "
+ "do lvl=`cat $f`; "
+ "a=${f/\\/sys\\/devices\\/virtual\\/pmic\\/mitigation\\/triggered_lvl\\//}; "
+ "echo \"${a/_lvl/} \\t$lvl\" ; done"});
+ RunCommandToFd(fd, "Instruction", {"/vendor/bin/sh", "-c",
+ "for f in `ls /sys/devices/virtual/pmic/mitigation/instruction/*` ; "
+ "do val=`cat $f` ; "
+ "a=${f/\\/sys\\/devices\\/virtual\\/pmic\\/mitigation\\/instruction\\//}; "
+ "echo \"$a=$val\" ; done"});
+
+}
+
+// Dump items related to thermal
+void DumpstateDevice::dumpThermalSection(int fd) {
+ RunCommandToFd(fd, "Temperatures", {"/vendor/bin/sh", "-c",
+ "for f in /sys/class/thermal/thermal* ; do "
+ "type=`cat $f/type` ; temp=`cat $f/temp` ; echo \"$type: $temp\" ; "
+ "done"});
+ RunCommandToFd(fd, "Cooling Device Current State", {"/vendor/bin/sh", "-c",
+ "for f in /sys/class/thermal/cooling* ; do "
+ "type=`cat $f/type` ; temp=`cat $f/cur_state` ; echo \"$type: $temp\" ; "
+ "done"});
+ RunCommandToFd(fd, "Cooling Device State2Power Table", {"/vendor/bin/sh", "-c",
+ "for f in /sys/class/thermal/cooling* ; do "
+ "type=`cat $f/type` ; state2power_table=`cat $f/state2power_table` ; echo \"$type: $state2power_table\" ; "
+ "done"});
+}
+
+// Dump items related to touch
+void DumpstateDevice::dumpTouchSection(int fd) {
+ const char stm_cmd_path[4][50] = {"/sys/class/spi_master/spi11/spi11.0",
+ "/proc/fts/driver_test",
+ "/sys/class/spi_master/spi6/spi6.0",
+ "/proc/fts_ext/driver_test"};
+ const char lsi_spi_path[] = "/sys/devices/virtual/sec/tsp";
+ char cmd[256];
+
+ for (int i = 0; i < 4; i+=2) {
+ snprintf(cmd, sizeof(cmd), "%s", stm_cmd_path[i + 1]);
+ if (!access(cmd, R_OK)) {
+ snprintf(cmd, sizeof(cmd), "echo A0 01 01 > %s", stm_cmd_path[i + 1]);
+ RunCommandToFd(fd, "Force Set AP as Bus Owner with Bugreport Flag",
+ {"/vendor/bin/sh", "-c", cmd});
+ }
+
+ snprintf(cmd, sizeof(cmd), "%s/appid", stm_cmd_path[i]);
+ if (!access(cmd, R_OK)) {
+ // Touch firmware version
+ DumpFileToFd(fd, "STM touch firmware version", cmd);
+
+ // Touch controller status
+ snprintf(cmd, sizeof(cmd), "%s/status", stm_cmd_path[i]);
+ DumpFileToFd(fd, "STM touch status", cmd);
+
+ // Mutual raw data
+ snprintf(cmd, sizeof(cmd),
+ "echo 13 00 01 > %s/stm_fts_cmd && cat %s/stm_fts_cmd",
+ stm_cmd_path[i], stm_cmd_path[i]);
+ RunCommandToFd(fd, "Mutual Raw", {"/vendor/bin/sh", "-c", cmd});
+
+ // Mutual strength data
+ snprintf(cmd, sizeof(cmd),
+ "echo 17 01 > %s/stm_fts_cmd && cat %s/stm_fts_cmd",
+ stm_cmd_path[i], stm_cmd_path[i]);
+ RunCommandToFd(fd, "Mutual Strength", {"/vendor/bin/sh", "-c", cmd});
+
+ // Self raw data
+ snprintf(cmd, sizeof(cmd),
+ "echo 15 00 01 > %s/stm_fts_cmd && cat %s/stm_fts_cmd",
+ stm_cmd_path[i], stm_cmd_path[i]);
+ RunCommandToFd(fd, "Self Raw", {"/vendor/bin/sh", "-c", cmd});
+ }
+
+ snprintf(cmd, sizeof(cmd), "%s", stm_cmd_path[i + 1]);
+ if (!access(cmd, R_OK)) {
+ snprintf(cmd, sizeof(cmd), "echo 23 00 > %s && cat %s",
+ stm_cmd_path[i + 1], stm_cmd_path[i + 1]);
+ RunCommandToFd(fd, "Mutual Raw Data",
+ {"/vendor/bin/sh", "-c", cmd});
+
+ snprintf(cmd, sizeof(cmd), "echo 23 03 > %s && cat %s",
+ stm_cmd_path[i + 1], stm_cmd_path[i + 1]);
+ RunCommandToFd(fd, "Mutual Baseline Data",
+ {"/vendor/bin/sh", "-c", cmd});
+
+ snprintf(cmd, sizeof(cmd), "echo 23 02 > %s && cat %s",
+ stm_cmd_path[i + 1], stm_cmd_path[i + 1]);
+ RunCommandToFd(fd, "Mutual Strength Data",
+ {"/vendor/bin/sh", "-c", cmd});
+
+ snprintf(cmd, sizeof(cmd), "echo 24 00 > %s && cat %s",
+ stm_cmd_path[i + 1], stm_cmd_path[i + 1]);
+ RunCommandToFd(fd, "Self Raw Data",
+ {"/vendor/bin/sh", "-c", cmd});
+
+ snprintf(cmd, sizeof(cmd), "echo 24 03 > %s && cat %s",
+ stm_cmd_path[i + 1], stm_cmd_path[i + 1]);
+ RunCommandToFd(fd, "Self Baseline Data",
+ {"/vendor/bin/sh", "-c", cmd});
+
+ snprintf(cmd, sizeof(cmd), "echo 24 02 > %s && cat %s",
+ stm_cmd_path[i + 1], stm_cmd_path[i + 1]);
+ RunCommandToFd(fd, "Self Strength Data",
+ {"/vendor/bin/sh", "-c", cmd});
+
+ snprintf(cmd, sizeof(cmd), "echo 32 10 > %s && cat %s",
+ stm_cmd_path[i + 1], stm_cmd_path[i + 1]);
+ RunCommandToFd(fd, "Mutual Compensation",
+ {"/vendor/bin/sh", "-c", cmd});
+
+ snprintf(cmd, sizeof(cmd), "echo 32 11 > %s && cat %s",
+ stm_cmd_path[i + 1], stm_cmd_path[i + 1]);
+ RunCommandToFd(fd, "Mutual Low Power Compensation",
+ {"/vendor/bin/sh", "-c", cmd});
+
+ snprintf(cmd, sizeof(cmd), "echo 33 12 > %s && cat %s",
+ stm_cmd_path[i + 1], stm_cmd_path[i + 1]);
+ RunCommandToFd(fd, "Self Compensation",
+ {"/vendor/bin/sh", "-c", cmd});
+
+ snprintf(cmd, sizeof(cmd), "echo 34 > %s && cat %s",
+ stm_cmd_path[i + 1], stm_cmd_path[i + 1]);
+ RunCommandToFd(fd, "Golden Mutual Raw Data",
+ {"/vendor/bin/sh", "-c", cmd});
+
+ snprintf(cmd, sizeof(cmd), "echo 01 FA 20 00 00 24 80 > %s",
+ stm_cmd_path[i + 1]);
+ RunCommandToFd(fd, "Packaging Plant - HW reset",
+ {"/vendor/bin/sh", "-c", cmd});
+ snprintf(cmd, sizeof(cmd), "echo 01 FA 20 00 00 68 08 > %s",
+ stm_cmd_path[i + 1]);
+ RunCommandToFd(fd, "Packaging Plant - Hibernate Memory",
+ {"/vendor/bin/sh", "-c", cmd});
+ snprintf(cmd, sizeof(cmd),
+ "echo 02 FB 00 04 3F D8 00 10 01 > %s && cat %s",
+ stm_cmd_path[i + 1], stm_cmd_path[i + 1]);
+ RunCommandToFd(fd, "Packaging Plant - Read 16 bytes from Address 0x00041FD8",
+ {"/vendor/bin/sh", "-c", cmd});
+
+ snprintf(cmd, sizeof(cmd),
+ "echo 01 A4 06 C3 > %s; echo 02 A7 00 00 00 20 00 > %s && cat %s",
+ stm_cmd_path[i + 1], stm_cmd_path[i + 1], stm_cmd_path[i + 1]);
+ RunCommandToFd(fd, "HDM debug information (32 bytes)",
+ {"/vendor/bin/sh", "-c", cmd});
+ }
+
+ snprintf(cmd, sizeof(cmd), "%s/stm_fts_cmd", stm_cmd_path[i]);
+ if (!access(cmd, R_OK)) {
+ // ITO raw data
+ snprintf(cmd, sizeof(cmd),
+ "echo 01 > %s/stm_fts_cmd && cat %s/stm_fts_cmd",
+ stm_cmd_path[i], stm_cmd_path[i]);
+ RunCommandToFd(fd, "ITO Raw", {"/vendor/bin/sh", "-c", cmd});
+ }
+
+ snprintf(cmd, sizeof(cmd), "%s", stm_cmd_path[i + 1]);
+ if (!access(cmd, R_OK)) {
+ snprintf(cmd, sizeof(cmd), "echo A0 00 01 > %s", stm_cmd_path[i + 1]);
+ RunCommandToFd(fd, "Restore Bus Owner",
+ {"/vendor/bin/sh", "-c", cmd});
+ }
+ }
+
+ if (!access(lsi_spi_path, R_OK)) {
+ // Enable: force touch active
+ snprintf(cmd, sizeof(cmd),
+ "echo %s > %s/cmd && cat %s/cmd_result",
+ "force_touch_active,2,1",
+ lsi_spi_path, lsi_spi_path);
+ RunCommandToFd(fd, "Force Touch Active", {"/vendor/bin/sh", "-c", cmd});
+
+ // Firmware info
+ snprintf(cmd, sizeof(cmd), "%s/fw_version", lsi_spi_path);
+ DumpFileToFd(fd, "LSI firmware version", cmd);
+
+ // Touch status
+ snprintf(cmd, sizeof(cmd), "%s/status", lsi_spi_path);
+ DumpFileToFd(fd, "LSI touch status", cmd);
+
+ // Calibration info
+ snprintf(cmd, sizeof(cmd),
+ "echo %s > %s/cmd && cat %s/cmd_result",
+ "get_mis_cal_info",
+ lsi_spi_path, lsi_spi_path);
+ RunCommandToFd(fd, "Calibration info", {"/vendor/bin/sh", "-c", cmd});
+
+ // Mutual strength
+ snprintf(cmd, sizeof(cmd),
+ "echo %s > %s/cmd && cat %s/cmd_result",
+ "run_delta_read_all",
+ lsi_spi_path, lsi_spi_path);
+ RunCommandToFd(fd, "Mutual Strength", {"/vendor/bin/sh", "-c", cmd});
+
+ // Self strength
+ snprintf(cmd, sizeof(cmd),
+ "echo %s > %s/cmd && cat %s/cmd_result",
+ "run_self_delta_read_all",
+ lsi_spi_path, lsi_spi_path);
+ RunCommandToFd(fd, "Self Strength", {"/vendor/bin/sh", "-c", cmd});
+
+ // TYPE_AMBIENT_DATA
+ snprintf(cmd, sizeof(cmd),
+ "echo %s > %s/cmd && cat %s/cmd_result",
+ "run_rawdata_read_type,3",
+ lsi_spi_path, lsi_spi_path);
+ RunCommandToFd(fd, "TYPE_AMBIENT_DATA", {"/vendor/bin/sh", "-c", cmd});
+
+ // TYPE_DECODED_DATA
+ snprintf(cmd, sizeof(cmd),
+ "echo %s > %s/cmd && cat %s/cmd_result",
+ "run_rawdata_read_type,5",
+ lsi_spi_path, lsi_spi_path);
+ RunCommandToFd(fd, "TYPE_DECODED_DATA", {"/vendor/bin/sh", "-c", cmd});
+
+ // TYPE_OFFSET_DATA_SEC
+ snprintf(cmd, sizeof(cmd),
+ "echo %s > %s/cmd && cat %s/cmd_result",
+ "run_rawdata_read_type,19",
+ lsi_spi_path, lsi_spi_path);
+ RunCommandToFd(fd, "TYPE_OFFSET_DATA_SEC", {"/vendor/bin/sh", "-c", cmd});
+
+ // TYPE_NOI_P2P_MIN
+ snprintf(cmd, sizeof(cmd),
+ "echo %s > %s/cmd && cat %s/cmd_result",
+ "run_rawdata_read_type,30",
+ lsi_spi_path, lsi_spi_path);
+ RunCommandToFd(fd, "TYPE_NOI_P2P_MIN", {"/vendor/bin/sh", "-c", cmd});
+
+ // TYPE_NOI_P2P_MAX
+ snprintf(cmd, sizeof(cmd),
+ "echo %s > %s/cmd && cat %s/cmd_result",
+ "run_rawdata_read_type,31",
+ lsi_spi_path, lsi_spi_path);
+ RunCommandToFd(fd, "TYPE_NOI_P2P_MAX", {"/vendor/bin/sh", "-c", cmd});
+
+ // Raw cap
+ snprintf(cmd, sizeof(cmd),
+ "echo %s > %s/cmd && cat %s/cmd_result",
+ "run_rawcap_read_all",
+ lsi_spi_path, lsi_spi_path);
+ RunCommandToFd(fd, "Mutual Raw Cap", {"/vendor/bin/sh", "-c", cmd});
+
+ // Self raw cap
+ snprintf(cmd, sizeof(cmd),
+ "echo %s > %s/cmd && cat %s/cmd_result",
+ "run_self_rawcap_read_all",
+ lsi_spi_path, lsi_spi_path);
+ RunCommandToFd(fd, "Self Raw Cap", {"/vendor/bin/sh", "-c", cmd});
+
+ // CM2
+ snprintf(cmd, sizeof(cmd),
+ "echo %s > %s/cmd && cat %s/cmd_result",
+ "run_rawcap_high_freq_read_all",
+ lsi_spi_path, lsi_spi_path);
+ RunCommandToFd(fd, "CM2", {"/vendor/bin/sh", "-c", cmd});
+
+ // Disable: force touch active
+ snprintf(cmd, sizeof(cmd),
+ "echo %s > %s/cmd && cat %s/cmd_result",
+ "force_touch_active,2,0",
+ lsi_spi_path, lsi_spi_path);
+ RunCommandToFd(fd, "Force Touch Active", {"/vendor/bin/sh", "-c", cmd});
+ }
+}
+
+// Dump items related to SoC
+void DumpstateDevice::dumpSocSection(int fd) {
+ DumpFileToFd(fd, "AP HW TUNE", "/sys/devices/system/chip-id/ap_hw_tune_str");
+ DumpFileToFd(fd, "EVT VERSION", "/sys/devices/system/chip-id/evt_ver");
+ DumpFileToFd(fd, "LOT ID", "/sys/devices/system/chip-id/lot_id");
+ DumpFileToFd(fd, "PRODUCT ID", "/sys/devices/system/chip-id/product_id");
+ DumpFileToFd(fd, "REVISION", "/sys/devices/system/chip-id/revision");
+ DumpFileToFd(fd, "RAW STR", "/sys/devices/system/chip-id/raw_str");
+}
+
+// Dump items related to CPUs
+void DumpstateDevice::dumpCpuSection(int fd) {
+ DumpFileToFd(fd, "CPU present", "/sys/devices/system/cpu/present");
+ DumpFileToFd(fd, "CPU online", "/sys/devices/system/cpu/online");
+ RunCommandToFd(fd, "CPU time-in-state", {"/vendor/bin/sh", "-c",
+ "for cpu in /sys/devices/system/cpu/cpu*; do "
+ "f=$cpu/cpufreq/stats/time_in_state; "
+ "if [ ! -f $f ]; then continue; fi; "
+ "echo $f:; cat $f; "
+ "done"});
+ RunCommandToFd(fd, "CPU cpuidle", {"/vendor/bin/sh", "-c",
+ "for cpu in /sys/devices/system/cpu/cpu*; do "
+ "for d in $cpu/cpuidle/state*; do "
+ "if [ ! -d $d ]; then continue; fi; "
+ "echo \"$d: `cat $d/name` `cat $d/desc` `cat $d/time` `cat $d/usage`\"; "
+ "done; "
+ "done"});
+ DumpFileToFd(fd, "INTERRUPTS", "/proc/interrupts");
+}
+
+// Dump items related to Devfreq & BTS
+void DumpstateDevice::dumpDevfreqSection(int fd) {
+ DumpFileToFd(fd, "MIF DVFS",
+ "/sys/devices/platform/17000010.devfreq_mif/devfreq/17000010.devfreq_mif/time_in_state");
+ DumpFileToFd(fd, "INT DVFS",
+ "/sys/devices/platform/17000020.devfreq_int/devfreq/17000020.devfreq_int/time_in_state");
+ DumpFileToFd(fd, "INTCAM DVFS",
+ "/sys/devices/platform/17000030.devfreq_intcam/devfreq/17000030.devfreq_intcam/time_in_state");
+ DumpFileToFd(fd, "DISP DVFS",
+ "/sys/devices/platform/17000040.devfreq_disp/devfreq/17000040.devfreq_disp/time_in_state");
+ DumpFileToFd(fd, "CAM DVFS",
+ "/sys/devices/platform/17000050.devfreq_cam/devfreq/17000050.devfreq_cam/time_in_state");
+ DumpFileToFd(fd, "TNR DVFS",
+ "/sys/devices/platform/17000060.devfreq_tnr/devfreq/17000060.devfreq_tnr/time_in_state");
+ DumpFileToFd(fd, "MFC DVFS",
+ "/sys/devices/platform/17000070.devfreq_mfc/devfreq/17000070.devfreq_mfc/time_in_state");
+ DumpFileToFd(fd, "BO DVFS",
+ "/sys/devices/platform/17000080.devfreq_bo/devfreq/17000080.devfreq_bo/time_in_state");
+ DumpFileToFd(fd, "BTS stats", "/sys/devices/platform/exynos-bts/bts_stats");
+}
+
+// Dump items related to memory
+void DumpstateDevice::dumpMemorySection(int fd) {
+ RunCommandToFd(fd, "ION HEAPS", {"/vendor/bin/sh", "-c",
+ "for d in $(ls -d /d/ion/*); do "
+ "if [ -f $d ]; then "
+ "echo --- $d; cat $d; "
+ "else "
+ "for f in $(ls $d); do "
+ "echo --- $d/$f; cat $d/$f; "
+ "done; "
+ "fi; "
+ "done"});
+ DumpFileToFd(fd, "dmabuf info", "/d/dma_buf/bufinfo");
+ DumpFileToFd(fd, "Page Pinner - longterm pin", "/sys/kernel/debug/page_pinner/longterm_pinner");
+ DumpFileToFd(fd, "Page Pinner - alloc_contig_failed", "/sys/kernel/debug/page_pinner/alloc_contig_failed");
+ RunCommandToFd(fd, "Pixel CMA stat", {"/vendor/bin/sh", "-c",
+ "for d in $(ls -d /sys/kernel/pixel_stat/mm/cma/*); do "
+ "if [ -f $d ]; then "
+ "echo --- $d; cat $d; "
+ "else "
+ "for f in $(ls $d); do "
+ "echo --- $d/$f; cat $d/$f; "
+ "done; "
+ "fi; "
+ "done"});
+}
+
+static void DumpF2FS(int fd) {
+ DumpFileToFd(fd, "F2FS", "/sys/kernel/debug/f2fs/status");
+ RunCommandToFd(fd, "F2FS - fsck time (ms)", {"/vendor/bin/sh", "-c", "getprop ro.boottime.init.fsck.data"});
+ RunCommandToFd(fd, "F2FS - checkpoint=disable time (ms)", {"/vendor/bin/sh", "-c", "getprop ro.boottime.init.mount.data"});
+}
+
+static void DumpUFS(int fd) {
+ DumpFileToFd(fd, "UFS model", "/sys/block/sda/device/model");
+ DumpFileToFd(fd, "UFS rev", "/sys/block/sda/device/rev");
+ DumpFileToFd(fd, "UFS size", "/sys/block/sda/size");
+
+ DumpFileToFd(fd, "UFS Slow IO Read", "/dev/sys/block/bootdevice/slowio_read_cnt");
+ DumpFileToFd(fd, "UFS Slow IO Write", "/dev/sys/block/bootdevice/slowio_write_cnt");
+ DumpFileToFd(fd, "UFS Slow IO Unmap", "/dev/sys/block/bootdevice/slowio_unmap_cnt");
+ DumpFileToFd(fd, "UFS Slow IO Sync", "/dev/sys/block/bootdevice/slowio_sync_cnt");
+
+ RunCommandToFd(fd, "UFS err_stats", {"/vendor/bin/sh", "-c",
+ "path=\"/dev/sys/block/bootdevice/err_stats\"; "
+ "for node in `ls $path/* | grep -v reset_err_status`; do "
+ "printf \"%s:%d\\n\" $(basename $node) $(cat $node); done;"});
+
+
+ RunCommandToFd(fd, "UFS io_stats", {"/vendor/bin/sh", "-c",
+ "path=\"/dev/sys/block/bootdevice/io_stats\"; "
+ "printf \"\\t\\t%-10s %-10s %-10s %-10s %-10s %-10s\\n\" "
+ "ReadCnt ReadBytes WriteCnt WriteBytes RWCnt RWBytes; "
+ "str=$(cat $path/*_start); arr=($str); "
+ "printf \"Started: \\t%-10s %-10s %-10s %-10s %-10s %-10s\\n\" "
+ "${arr[1]} ${arr[0]} ${arr[5]} ${arr[4]} ${arr[3]} ${arr[2]}; "
+ "str=$(cat $path/*_complete); arr=($str); "
+ "printf \"Completed: \\t%-10s %-10s %-10s %-10s %-10s %-10s\\n\" "
+ "${arr[1]} ${arr[0]} ${arr[5]} ${arr[4]} ${arr[3]} ${arr[2]}; "
+ "str=$(cat $path/*_maxdiff); arr=($str); "
+ "printf \"MaxDiff: \\t%-10s %-10s %-10s %-10s %-10s %-10s\\n\\n\" "
+ "${arr[1]} ${arr[0]} ${arr[5]} ${arr[4]} ${arr[3]} ${arr[2]}; "});
+
+ RunCommandToFd(fd, "UFS req_stats", {"/vendor/bin/sh", "-c",
+ "path=\"/dev/sys/block/bootdevice/req_stats\"; "
+ "printf \"\\t%-10s %-10s %-10s %-10s %-10s %-10s\\n\" "
+ "All Write Read Security Flush Discard; "
+ "str=$(cat $path/*_min); arr=($str); "
+ "printf \"Min:\\t%-10s %-10s %-10s %-10s %-10s %-10s\\n\" "
+ "${arr[0]} ${arr[5]} ${arr[3]} ${arr[4]} ${arr[2]} ${arr[1]}; "
+ "str=$(cat $path/*_max); arr=($str); "
+ "printf \"Max:\\t%-10s %-10s %-10s %-10s %-10s %-10s\\n\" "
+ "${arr[0]} ${arr[5]} ${arr[3]} ${arr[4]} ${arr[2]} ${arr[1]}; "
+ "str=$(cat $path/*_avg); arr=($str); "
+ "printf \"Avg.:\\t%-10s %-10s %-10s %-10s %-10s %-10s\\n\" "
+ "${arr[0]} ${arr[5]} ${arr[3]} ${arr[4]} ${arr[2]} ${arr[1]}; "
+ "str=$(cat $path/*_sum); arr=($str); "
+ "printf \"Count:\\t%-10s %-10s %-10s %-10s %-10s %-10s\\n\\n\" "
+ "${arr[0]} ${arr[5]} ${arr[3]} ${arr[4]} ${arr[2]} ${arr[1]};"});
+
+ std::string ufs_health = "for f in $(find /dev/sys/block/bootdevice/health_descriptor -type f); do if [[ -r $f && -f $f ]]; then echo --- $f; cat $f; echo ''; fi; done";
+ RunCommandToFd(fd, "UFS health", {"/vendor/bin/sh", "-c", ufs_health.c_str()});
+}
+
+// Dump items related to storage
+void DumpstateDevice::dumpStorageSection(int fd) {
+ DumpF2FS(fd);
+ DumpUFS(fd);
+}
+
+// Dump items related to display
+void DumpstateDevice::dumpDisplaySection(int fd) {
+ DumpFileToFd(fd, "CRTC-0 underrun count", "/sys/kernel/debug/dri/0/crtc-0/underrun_cnt");
+ DumpFileToFd(fd, "CRTC-0 crc count", "/sys/kernel/debug/dri/0/crtc-0/crc_cnt");
+ DumpFileToFd(fd, "CRTC-0 ecc count", "/sys/kernel/debug/dri/0/crtc-0/ecc_cnt");
+ DumpFileToFd(fd, "CRTC-0 idma err count", "/sys/kernel/debug/dri/0/crtc-0/idma_err_cnt");
+ DumpFileToFd(fd, "CRTC-0 event log", "/sys/kernel/debug/dri/0/crtc-0/event");
+ DumpFileToFd(fd, "CRTC-1 underrun count", "/sys/kernel/debug/dri/0/crtc-1/underrun_cnt");
+ DumpFileToFd(fd, "CRTC-1 crc count", "/sys/kernel/debug/dri/0/crtc-1/crc_cnt");
+ DumpFileToFd(fd, "CRTC-1 ecc count", "/sys/kernel/debug/dri/0/crtc-1/ecc_cnt");
+ DumpFileToFd(fd, "CRTC-1 idma err count", "/sys/kernel/debug/dri/0/crtc-1/idma_err_cnt");
+ DumpFileToFd(fd, "CRTC-1 event log", "/sys/kernel/debug/dri/0/crtc-1/event");
+ RunCommandToFd(fd, "libdisplaycolor", {"/vendor/bin/dumpsys", "displaycolor", "-v"},
+ CommandOptions::WithTimeout(2).Build());
+ DumpFileToFd(fd, "Primary panel extra info", "/sys/devices/platform/exynos-drm/primary-panel/panel_extinfo");
+ DumpFileToFd(fd, "secondary panel extra info", "/sys/devices/platform/exynos-drm/secondary-panel/panel_extinfo");
+}
+
+// Dump items related to AoC
+void DumpstateDevice::dumpAoCSection(int fd) {
+ DumpFileToFd(fd, "AoC Service Status", "/sys/devices/platform/19000000.aoc/services");
+ DumpFileToFd(fd, "AoC Restarts", "/sys/devices/platform/19000000.aoc/restart_count");
+ DumpFileToFd(fd, "AoC Coredumps", "/sys/devices/platform/19000000.aoc/coredump_count");
+ DumpFileToFd(fd, "AoC ring buf wake", "/sys/devices/platform/19000000.aoc/control/ring_buffer_wakeup");
+ DumpFileToFd(fd, "AoC host ipc wake", "/sys/devices/platform/19000000.aoc/control/host_ipc_wakeup");
+ DumpFileToFd(fd, "AoC usf wake", "/sys/devices/platform/19000000.aoc/control/usf_wakeup");
+ DumpFileToFd(fd, "AoC audio wake", "/sys/devices/platform/19000000.aoc/control/audio_wakeup");
+ DumpFileToFd(fd, "AoC logging wake", "/sys/devices/platform/19000000.aoc/control/logging_wakeup");
+ DumpFileToFd(fd, "AoC hotword wake", "/sys/devices/platform/19000000.aoc/control/hotword_wakeup");
+ DumpFileToFd(fd, "AoC memory exception wake", "/sys/devices/platform/19000000.aoc/control/memory_exception");
+}
+
+// Dump items related to sensors usf.
+void DumpstateDevice::dumpSensorsUSFSection(int fd) {
+ CommandOptions options = CommandOptions::WithTimeout(2).Build();
+ RunCommandToFd(fd, "USF statistics",
+ {"/vendor/bin/sh", "-c", "usf_stats get --all"},
+ options);
+ if (!PropertiesHelper::IsUserBuild()) {
+ // Not a user build, if this is also not a production device dump the USF registry.
+ std::string hwRev = android::base::GetProperty(HW_REVISION, "");
+ if (hwRev.find("PROTO") != std::string::npos ||
+ hwRev.find("EVT") != std::string::npos ||
+ hwRev.find("DVT") != std::string::npos) {
+ RunCommandToFd(fd, "USF Registry",
+ {"/vendor/bin/sh", "-c", "usf_reg_edit save -"},
+ options);
+ }
+ }
+}
+
+// Gzip binary data and dump to fd in base64 format. Cmd to decode is also attached.
+void dumpGzippedFileInBase64ToFd(int fd, const char* title, const char* file_path) {
+ auto cmd = android::base::StringPrintf("echo 'base64 -d <<EOF | gunzip' ; "
+ "/vendor/bin/gzip < \"%s\" | /vendor/bin/base64 ; "
+ "echo 'EOF'", file_path);
+ RunCommandToFd(fd, title,
+ {"/vendor/bin/sh", "-c", cmd.c_str()},
+ CommandOptions::WithTimeout(10).Build());
+}
+
+struct abl_log_header {
+ uint64_t i;
+ uint64_t size;
+ char buf[];
+} __attribute__((packed));
+
+// Dump items related to ramdump.
+void DumpstateDevice::dumpRamdumpSection(int fd) {
+ std::string abl_log;
+ if (android::base::ReadFileToString("/mnt/vendor/ramdump/abl.log", &abl_log)) {
+ const struct abl_log_header *header = (const struct abl_log_header*) abl_log.c_str();
+ android::base::WriteStringToFd(android::base::StringPrintf(
+ "------ Ramdump misc file: abl.log (i:0x%" PRIx64 " size:0x%" PRIx64 ") ------\n%s\n",
+ header->i, header->size, std::string(header->buf, header->i).c_str()), fd);
+ } else {
+ android::base::WriteStringToFd("*** Ramdump misc file: abl.log: File not found\n", fd);
+ }
+ dumpGzippedFileInBase64ToFd(
+ fd, "Ramdump misc file: acpm.lst (gzipped in base64)", "/mnt/vendor/ramdump/acpm.lst");
+ dumpGzippedFileInBase64ToFd(
+ fd, "Ramdump misc file: s2d.lst (gzipped in base64)", "/mnt/vendor/ramdump/s2d.lst");
+}
+
+// Dump items that don't fit well into any other section
+void DumpstateDevice::dumpMiscSection(int fd) {
+ RunCommandToFd(fd, "VENDOR PROPERTIES", {"/vendor/bin/getprop"});
+ DumpFileToFd(fd, "VENDOR PROC DUMP", "/proc/vendor_sched/dump_task");
+}
+
+// Dump items related to GSC
+void DumpstateDevice::dumpGscSection(int fd) {
+ RunCommandToFd(fd, "Citadel VERSION", {"vendor/bin/hw/citadel_updater", "-lv"});
+ RunCommandToFd(fd, "Citadel STATS", {"vendor/bin/hw/citadel_updater", "--stats"});
+}
+
+// Dump essential camera debugging logs
+void DumpstateDevice::dumpCameraSection(int fd) {
+ RunCommandToFd(fd, "Camera HAL Graph State Dump", {"/vendor/bin/sh", "-c",
+ "for f in $(ls -t /data/vendor/camera/hal_graph_state*.txt |head -1); do "
+ "echo $f ; cat $f ; done"},
+ CommandOptions::WithTimeout(4).Build());
+}
+
+void DumpstateDevice::dumpTrustySection(int fd) {
+ DumpFileToFd(fd, "Trusty TEE0 Logs", "/dev/trusty-log0");
+}
+
+// Dump items related to modem
+void DumpstateDevice::dumpModemSection(int fd) {
+ DumpFileToFd(fd, "Modem Stat", "/data/vendor/modem_stat/debug.txt");
+ RunCommandToFd(fd, "Modem SSR history", {"/vendor/bin/sh", "-c",
+ "for f in $(ls /data/vendor/ssrdump/crashinfo_modem*); do "
+ "echo $f ; cat $f ; done"},
+ CommandOptions::WithTimeout(2).Build());
+ RunCommandToFd(fd, "RFSD error log", {"/vendor/bin/sh", "-c",
+ "for f in $(ls /data/vendor/log/rfsd/rfslog_*); do "
+ "echo $f ; cat $f ; done"},
+ CommandOptions::WithTimeout(2).Build());
+}
+
+static void *dumpModemThread(void *data) {
+ std::string modemLogDir = MODEM_LOG_DIRECTORY;
+ std::string extendedLogDir = MODEM_EXTENDED_LOG_DIRECTORY;
+ std::string tcpdumpLogDir = TCPDUMP_LOG_DIRECTORY;
+ static const std::string sectionName = "modem";
+
+ const std::string modemLogCombined = modemLogDir + "/modem_log_all.tar";
+ const std::string modemLogAllDir = modemLogDir + "/modem_log";
+
+ long fdModem = (long)data;
+
+ ALOGD("dumpModemThread started\n");
+
+ RunCommandToFd(STDOUT_FILENO, "MKDIR MODEM LOG", {"/vendor/bin/mkdir", "-p", modemLogAllDir.c_str()}, CommandOptions::WithTimeout(2).Build());
+
+ bool modemLogEnabled = android::base::GetBoolProperty(MODEM_LOGGING_PERSIST_PROPERTY, false);
+ if (modemLogEnabled && android::base::GetProperty(MODEM_LOGGING_PATH_PROPERTY, "") == MODEM_LOG_DIRECTORY) {
+ bool modemLogStarted = android::base::GetBoolProperty(MODEM_LOGGING_STATUS_PROPERTY, false);
+ int maxFileNum = android::base::GetIntProperty(MODEM_LOGGING_NUMBER_BUGREPORT_PROPERTY, 100);
+
+ if (modemLogStarted) {
+ android::base::SetProperty(MODEM_LOGGING_PROPERTY, "false");
+ ALOGD("Stopping modem logging...\n");
+ } else {
+ ALOGD("modem logging is not running\n");
+ }
+
+ for (int i = 0; i < 15; i++) {
+ if (!android::base::GetBoolProperty(MODEM_LOGGING_STATUS_PROPERTY, false)) {
+ ALOGD("modem logging stopped\n");
+ sleep(1);
+ break;
+ }
+ sleep(1);
+ }
+
+ dumpLogs(STDOUT_FILENO, modemLogDir, modemLogAllDir, maxFileNum, MODEM_LOG_PREFIX);
+
+ if (modemLogStarted) {
+ ALOGD("Restarting modem logging...\n");
+ android::base::SetProperty(MODEM_LOGGING_PROPERTY, "true");
+ }
+ }
+
+ if (!PropertiesHelper::IsUserBuild()) {
+ bool gpsLogEnabled = android::base::GetBoolProperty(GPS_LOGGING_STATUS_PROPERTY, false);
+ bool tcpdumpEnabled = android::base::GetBoolProperty(TCPDUMP_PERSIST_PROPERTY, false);
+ bool cameraLogsEnabled = android::base::GetBoolProperty(
+ "vendor.camera.debug.camera_performance_analyzer.attach_to_bugreport", true);
+
+ if (tcpdumpEnabled) {
+ dumpLogs(STDOUT_FILENO, tcpdumpLogDir, modemLogAllDir, android::base::GetIntProperty(TCPDUMP_NUMBER_BUGREPORT, 5), TCPDUMP_LOG_PREFIX);
+ }
+
+ if (gpsLogEnabled) {
+ dumpGpsLogs(STDOUT_FILENO, modemLogAllDir);
+ } else {
+ ALOGD("gps logging is not running\n");
+ }
+
+ if (cameraLogsEnabled) {
+ dumpCameraLogs(STDOUT_FILENO, modemLogAllDir);
+ }
+
+ dumpLogs(STDOUT_FILENO, extendedLogDir, modemLogAllDir, 50, EXTENDED_LOG_PREFIX);
+ dumpRilLogs(STDOUT_FILENO, modemLogAllDir);
+ dumpNetmgrLogs(modemLogAllDir);
+ dumpModemEFS(modemLogAllDir);
+ }
+
+ ALOGD("Going to compress logs\n");
+
+ RunCommandToFd(STDOUT_FILENO, "TAR LOG", {"/vendor/bin/tar", "cvf", modemLogCombined.c_str(), "-C", modemLogAllDir.c_str(), "."}, CommandOptions::WithTimeout(25).Build());
+ RunCommandToFd(STDOUT_FILENO, "CHG PERM", {"/vendor/bin/chmod", "a+w", modemLogCombined.c_str()}, CommandOptions::WithTimeout(2).Build());
+
+ std::vector<uint8_t> buffer(65536);
+ android::base::unique_fd fdLog(TEMP_FAILURE_RETRY(open(modemLogCombined.c_str(), O_RDONLY | O_CLOEXEC | O_NONBLOCK)));
+
+ ALOGD("Going to write to dumpstate board binary\n");
+ if (fdLog >= 0) {
+ while (1) {
+ ssize_t bytes_read = TEMP_FAILURE_RETRY(read(fdLog, buffer.data(), buffer.size()));
+
+ if (bytes_read == 0) {
+ break;
+ } else if (bytes_read < 0) {
+ ALOGD("read(%s): %s\n", modemLogCombined.c_str(), strerror(errno));
+ break;
+ }
+
+ ssize_t result = TEMP_FAILURE_RETRY(write(fdModem, buffer.data(), bytes_read));
+
+ if (result != bytes_read) {
+ ALOGD("Failed to write %ld bytes, actually written: %ld", bytes_read, result);
+ break;
+ }
+ }
+ }
+
+ ALOGD("Going to remove logs\n");
+
+ RunCommandToFd(STDOUT_FILENO, "RM MODEM DIR", { "/vendor/bin/rm", "-r", modemLogAllDir.c_str()}, CommandOptions::WithTimeout(2).Build());
+ RunCommandToFd(STDOUT_FILENO, "RM LOG", { "/vendor/bin/rm", modemLogCombined.c_str()}, CommandOptions::WithTimeout(2).Build());
+
+ ALOGD("dumpModemThread finished\n");
+
+ return NULL;
+}
+
+// Methods from ::android::hardware::dumpstate::V1_0::IDumpstateDevice follow.
+Return<void> DumpstateDevice::dumpstateBoard(const hidl_handle &handle) {
+// Ignore return value, just return an empty status.
+ dumpstateBoard_1_1(handle, DumpstateMode::DEFAULT, 30 * 1000 /* timeoutMillis */);
+ return Void();
+}
+
+// Methods from ::android::hardware::dumpstate::V1_1::IDumpstateDevice follow.
+Return<DumpstateStatus> DumpstateDevice::dumpstateBoard_1_1(const hidl_handle& handle,
+ const DumpstateMode mode,
+ const uint64_t timeoutMillis) {
+ // Unused arguments.
+ (void) timeoutMillis;
+
+ if (handle == nullptr || handle->numFds < 1) {
+ ALOGE("no FDs\n");
+ return DumpstateStatus::ILLEGAL_ARGUMENT;
+ }
+
+ int fd = handle->data[0];
+ if (fd < 0) {
+ ALOGE("invalid FD: %d\n", handle->data[0]);
+ return DumpstateStatus::ILLEGAL_ARGUMENT;
+ }
+
+ if (mode == DumpstateMode::WEAR) {
+ // We aren't a Wear device.
+ ALOGE("Unsupported mode: %d\n", mode);
+ return DumpstateStatus::UNSUPPORTED_MODE;
+ } else if (mode < DumpstateMode::FULL || mode > DumpstateMode::PROTO) {
+ ALOGE("Invalid mode: %d\n", mode);
+ return DumpstateStatus::ILLEGAL_ARGUMENT;
+ }
+
+ // Create thread to collect modem related logs
+ pthread_t modemThreadHandle = 0;
+ if (getVerboseLoggingEnabled()) {
+ if (handle->numFds < 2) {
+ ALOGE("no FD for modem\n");
+ } else {
+ int fdModem = handle->data[1];
+ if (pthread_create(&modemThreadHandle, NULL, dumpModemThread, (void *)((long)fdModem)) != 0) {
+ ALOGE("could not create thread for dumpModem\n");
+ }
+ }
+ } else {
+ ALOGD("Verbose logging is not enabled\n");
+ }
+
+ dumpTextSection(fd, kAllSections);
+
+ if (modemThreadHandle) {
+ pthread_join(modemThreadHandle, NULL);
+ }
+
+ return DumpstateStatus::OK;
+}
+
+Return<void> DumpstateDevice::setVerboseLoggingEnabled(const bool enable) {
+ ::android::base::SetProperty(kVerboseLoggingProperty, enable ? "true" : "false");
+ return Void();
+}
+
+Return<bool> DumpstateDevice::getVerboseLoggingEnabled() {
+ return ::android::base::GetBoolProperty(kVerboseLoggingProperty, false);
+}
+
+// Since HALs that support the debug() interface are automatically invoked during
+// bugreport generation and we don't want to generate a second copy of the same
+// data that will go into dumpstate_board.txt, this function will only do
+// something if it is called with an option, e.g.
+// lshal debug android.hardware.dumpstate@1.0::IDumpstateDevice/default all
+//
+// Also, note that sections which generate attachments and/or binary data when
+// included in a bugreport are not available through the debug() interface.
+Return<void> DumpstateDevice::debug(const hidl_handle &handle, const hidl_vec<hidl_string> &args) {
+ // Exit when dump is completed since this is a lazy HAL.
+ addPostCommandTask([]() {
+ exit(0);
+ });
+
+ if (handle == nullptr || handle->numFds < 1 || args.size() != 1) {
+ return Void();
+ }
+
+ int fd = handle->data[0];
+ dumpTextSection(fd, static_cast<std::string>(args[0]));
+
+ fsync(fd);
+ return Void();
+}
+
+
+} // namespace implementation
+} // namespace V1_1
+} // namespace dumpstate
+} // namespace hardware
+} // namespace android
diff --git a/dumpstate/DumpstateDevice.h b/dumpstate/DumpstateDevice.h
new file mode 100644
index 0000000..74d0ce1
--- /dev/null
+++ b/dumpstate/DumpstateDevice.h
@@ -0,0 +1,90 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+#ifndef ANDROID_HARDWARE_DUMPSTATE_V1_1_DUMPSTATEDEVICE_H
+#define ANDROID_HARDWARE_DUMPSTATE_V1_1_DUMPSTATEDEVICE_H
+
+#include <android/hardware/dumpstate/1.1/IDumpstateDevice.h>
+#include <hidl/MQDescriptor.h>
+#include <hidl/Status.h>
+#include <string>
+
+namespace android {
+namespace hardware {
+namespace dumpstate {
+namespace V1_1 {
+namespace implementation {
+
+using ::android::hardware::dumpstate::V1_1::DumpstateMode;
+using ::android::hardware::dumpstate::V1_1::DumpstateStatus;
+using ::android::hardware::dumpstate::V1_1::IDumpstateDevice;
+using ::android::hardware::hidl_handle;
+using ::android::hardware::hidl_string;
+using ::android::hardware::hidl_vec;
+using ::android::hardware::Return;
+
+struct DumpstateDevice : public IDumpstateDevice {
+ public:
+ DumpstateDevice();
+
+ // Methods from ::android::hardware::dumpstate::V1_0::IDumpstateDevice follow.
+ Return<void> dumpstateBoard(const hidl_handle& h) override;
+
+ // Methods from ::android::hardware::dumpstate::V1_1::IDumpstateDevice follow.
+ Return<DumpstateStatus> dumpstateBoard_1_1(const hidl_handle& h,
+ const DumpstateMode mode,
+ const uint64_t timeoutMillis) override;
+ Return<void> setVerboseLoggingEnabled(const bool enable) override;
+ Return<bool> getVerboseLoggingEnabled() override;
+
+ // Methods from ::android::hidl::base::V1_0::IBase follow.
+ Return<void> debug(const hidl_handle &fd, const hidl_vec<hidl_string> &args) override;
+
+ private:
+ const std::string kAllSections = "all";
+
+ std::vector<std::pair<std::string, std::function<void(int)>>> mTextSections;
+
+ void dumpTextSection(int fd, std::string const& sectionName);
+
+ // Text sections that can be dumped individually on the command line in
+ // addition to being included in full dumps
+ void dumpWlanSection(int fd);
+ void dumpPowerSection(int fd);
+ void dumpThermalSection(int fd);
+ void dumpTouchSection(int fd);
+ void dumpSocSection(int fd);
+ void dumpCpuSection(int fd);
+ void dumpDevfreqSection(int fd);
+ void dumpMemorySection(int fd);
+ void dumpStorageSection(int fd);
+ void dumpDisplaySection(int fd);
+ void dumpSensorsUSFSection(int fd);
+ void dumpAoCSection(int fd);
+ void dumpRamdumpSection(int fd);
+ void dumpMiscSection(int fd);
+ void dumpGscSection(int fd);
+ void dumpCameraSection(int fd);
+ void dumpTrustySection(int fd);
+ void dumpModemSection(int fd);
+};
+
+} // namespace implementation
+} // namespace V1_0
+} // namespace dumpstate
+} // namespace hardware
+} // namespace android
+
+#endif // ANDROID_HARDWARE_DUMPSTATE_V1_1_DUMPSTATEDEVICE_H
diff --git a/dumpstate/android.hardware.dumpstate@1.1-service.gs101.rc b/dumpstate/android.hardware.dumpstate@1.1-service.gs101.rc
new file mode 100644
index 0000000..6be0278
--- /dev/null
+++ b/dumpstate/android.hardware.dumpstate@1.1-service.gs101.rc
@@ -0,0 +1,6 @@
+service vendor.dumpstate-1-1 /vendor/bin/hw/android.hardware.dumpstate@1.1-service.gs101
+ class hal
+ user system
+ group system
+ interface android.hardware.dumpstate@1.0::IDumpstateDevice default
+ interface android.hardware.dumpstate@1.1::IDumpstateDevice default
diff --git a/dumpstate/service.cpp b/dumpstate/service.cpp
new file mode 100644
index 0000000..4717231
--- /dev/null
+++ b/dumpstate/service.cpp
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+#define LOG_TAG "android.hardware.dumpstate@1.0-service.gs101"
+
+#include <hidl/HidlSupport.h>
+#include <hidl/HidlTransportSupport.h>
+
+#include "DumpstateDevice.h"
+
+using ::android::hardware::configureRpcThreadpool;
+using ::android::hardware::dumpstate::V1_1::IDumpstateDevice;
+using ::android::hardware::dumpstate::V1_1::implementation::DumpstateDevice;
+using ::android::hardware::joinRpcThreadpool;
+using ::android::sp;
+
+
+int main(int /* argc */, char* /* argv */ []) {
+ sp<IDumpstateDevice> dumpstate = new DumpstateDevice;
+ configureRpcThreadpool(1, true);
+
+ android::status_t status = dumpstate->registerAsService();
+
+ if (status != android::OK)
+ {
+ ALOGE("Could not register DumpstateDevice service (%d).", status);
+ return -1;
+ }
+
+ joinRpcThreadpool();
+}
diff --git a/edgetpu/edgetpu.mk b/edgetpu/edgetpu.mk
new file mode 100644
index 0000000..426dfa9
--- /dev/null
+++ b/edgetpu/edgetpu.mk
@@ -0,0 +1,35 @@
+# Config variables for TPU chip on device.
+SOONG_CONFIG_NAMESPACES += edgetpu_config
+SOONG_CONFIG_edgetpu_config += chip
+
+SOONG_CONFIG_edgetpu_config_chip := abrolhos
+
+# TPU logging service
+PRODUCT_PACKAGES += \
+ android.hardware.edgetpu.logging@service-edgetpu-logging
+
+# TPU firmware
+PRODUCT_PACKAGES += \
+ edgetpu-abrolhos.fw
+
+# TPU NN AIDL HAL
+PRODUCT_PACKAGES += \
+ android.hardware.neuralnetworks@service-darwinn-aidl
+
+# TPU application service
+PRODUCT_PACKAGES += \
+ vendor.google.edgetpu_app_service@1.0-service
+
+# TPU vendor service
+PRODUCT_PACKAGES += \
+ vendor.google.edgetpu_vendor_service@1.0-service
+
+# TPU HAL client library
+PRODUCT_PACKAGES += \
+ libedgetpu_client.google
+
+# TPU metrics logger library
+PRODUCT_PACKAGES += \
+ libmetrics_logger
+
+BOARD_VENDOR_SEPOLICY_DIRS += device/google/gs101-sepolicy/edgetpu/
diff --git a/factory/framework/Android.bp b/factory/framework/Android.bp
new file mode 100644
index 0000000..54b5b68
--- /dev/null
+++ b/factory/framework/Android.bp
@@ -0,0 +1,15 @@
+package {
+ // See: http://go/android-license-faq
+ // A large-scale-change added 'default_applicable_licenses' to import
+ // all of the 'license_kinds' from "//device/google/gs101:device_google_gs101_license"
+ // to get the below license kinds:
+ // SPDX-license-identifier-Apache-2.0
+ default_applicable_licenses: [
+ "//device/google/gs101:device_google_gs101_license",
+ ],
+}
+
+runtime_resource_overlay {
+ name: "FactoryOverlayFrameworkRes",
+ product_specific: true,
+}
diff --git a/factory/framework/AndroidManifest.xml b/factory/framework/AndroidManifest.xml
new file mode 100644
index 0000000..73875be
--- /dev/null
+++ b/factory/framework/AndroidManifest.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2020 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<!-- Pixel specific factory overlays -->
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ package="com.android.frameworkres.overlay.factory">
+ <application android:hasCode="false" />
+ <overlay
+ android:targetPackage="android"
+ android:isStatic="true"
+ android:priority="2"/>
+</manifest>
diff --git a/factory/framework/res/drawable-nodpi/default_wallpaper.png b/factory/framework/res/drawable-nodpi/default_wallpaper.png
new file mode 100644
index 0000000..93b787e
--- /dev/null
+++ b/factory/framework/res/drawable-nodpi/default_wallpaper.png
Binary files differ
diff --git a/factory/launcher3/Android.bp b/factory/launcher3/Android.bp
new file mode 100644
index 0000000..31ee56a
--- /dev/null
+++ b/factory/launcher3/Android.bp
@@ -0,0 +1,15 @@
+package {
+ // See: http://go/android-license-faq
+ // A large-scale-change added 'default_applicable_licenses' to import
+ // all of the 'license_kinds' from "//device/google/gs101:device_google_gs101_license"
+ // to get the below license kinds:
+ // SPDX-license-identifier-Apache-2.0
+ default_applicable_licenses: [
+ "//device/google/gs101:device_google_gs101_license",
+ ],
+}
+
+runtime_resource_overlay {
+ name: "FactoryOverlayLauncher3",
+ product_specific: true,
+}
diff --git a/factory/launcher3/AndroidManifest.xml b/factory/launcher3/AndroidManifest.xml
new file mode 100644
index 0000000..3f28585
--- /dev/null
+++ b/factory/launcher3/AndroidManifest.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2020 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<!-- Pixel specific factory overlays -->
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ package="com.android.launcher3.overlay.factory">
+ <application android:hasCode="false" />
+ <overlay
+ android:targetPackage="com.android.launcher3"
+ android:targetName="favorites"
+ android:isStatic="true"
+ android:priority="2"/>
+</manifest>
diff --git a/factory/launcher3/res/xml/default_workspace_5x5.xml b/factory/launcher3/res/xml/default_workspace_5x5.xml
new file mode 100644
index 0000000..ba1427a
--- /dev/null
+++ b/factory/launcher3/res/xml/default_workspace_5x5.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2009 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<favorites xmlns:launcher="http://schemas.android.com/apk/res-auto/com.android.launcher3">
+
+ <!-- Hotseat (We use the screen as the position of the item in the hotseat) -->
+ <!-- Dialer, Capacity, ELabel, Language, Barcode -->
+ <resolve
+ launcher:container="-101"
+ launcher:screen="0"
+ launcher:x="0"
+ launcher:y="0" >
+ <favorite launcher:uri="#Intent;action=android.intent.action.DIAL;end" />
+ <favorite launcher:uri="tel:123" />
+ <favorite launcher:uri="#Intent;action=android.intent.action.CALL_BUTTON;end" />
+ </resolve>
+
+ <resolve
+ launcher:container="-101"
+ launcher:screen="4"
+ launcher:x="4"
+ launcher:y="0" >
+ <favorite
+ launcher:packageName="com.google_cte.barcodescanner"
+ launcher:className="com.google_cte.barcodescanner.MainActivity" />
+ </resolve>
+
+</favorites>
diff --git a/factory/settings/Android.bp b/factory/settings/Android.bp
new file mode 100644
index 0000000..adc3ea4
--- /dev/null
+++ b/factory/settings/Android.bp
@@ -0,0 +1,15 @@
+package {
+ // See: http://go/android-license-faq
+ // A large-scale-change added 'default_applicable_licenses' to import
+ // all of the 'license_kinds' from "//device/google/gs101:device_google_gs101_license"
+ // to get the below license kinds:
+ // SPDX-license-identifier-Apache-2.0
+ default_applicable_licenses: [
+ "//device/google/gs101:device_google_gs101_license",
+ ],
+}
+
+runtime_resource_overlay {
+ name: "FactoryOverlaySettings",
+ product_specific: true,
+}
diff --git a/factory/settings/AndroidManifest.xml b/factory/settings/AndroidManifest.xml
new file mode 100644
index 0000000..72e7838
--- /dev/null
+++ b/factory/settings/AndroidManifest.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2020 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<!-- Pixel specific factory overlays -->
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ package="com.android.providers.settings.overlay.factory">
+ <application android:hasCode="false" />
+ <overlay
+ android:targetPackage="com.android.providers.settings"
+ android:targetName="resources"
+ android:isStatic="true"
+ android:priority="2"/>
+</manifest>
diff --git a/factory/settings/res/values/defaults.xml b/factory/settings/res/values/defaults.xml
new file mode 100644
index 0000000..b7febd9
--- /dev/null
+++ b/factory/settings/res/values/defaults.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/**
+ * Copyright (c) 2009, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+-->
+<resources>
+ <integer name="def_lockscreen_sounds_enabled">0</integer>
+ <bool name="def_lockscreen_disabled">true</bool>
+ <bool name="def_dtmf_tones_enabled">false</bool>
+ <bool name="def_sound_effects_enabled">false</bool>
+ <bool name="def_charging_sounds_enabled">false</bool>
+ <string name="def_immersive_mode_confirmations" translatable="false">confirmed</string>
+</resources>
diff --git a/factory_common.mk b/factory_common.mk
new file mode 100644
index 0000000..342ae46
--- /dev/null
+++ b/factory_common.mk
@@ -0,0 +1,81 @@
+#
+# Copyright 2020 The Android Open-Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+$(call inherit-product, device/google/gs101/aosp_common.mk)
+$(call inherit-product-if-exists, vendor/google_devices/gs101/factory/pixel/device-factory.mk)
+
+PRODUCT_PROPERTY_OVERRIDES += service.adb.root=1 \
+ ro.vendor.factory=1 \
+ ro.adb.secure=0
+
+# Factory Libraries of Audio
+PRODUCT_PACKAGES += audioroute libaudioroutelite
+
+# Enable fatp by default for factory builds
+PRODUCT_SYSTEM_DEFAULT_PROPERTIES += \
+ persist.vendor.camera.fatp.enable=1
+
+# Disable camera related features for factory builds
+PRODUCT_PROPERTY_OVERRIDES += \
+ persist.vendor.camera.partial_result_count=1 \
+ vendor.camera.debug.bypass_face_ssd_processor=1 \
+ vendor.camera.debug.csi_ebuf_enable=0 \
+ vendor.camera.debug.enable_face_detection=0 \
+ vendor.camera.debug.force_dpm_on=0 \
+ vendor.camera.debug.force_eis_on=0 \
+ vendor.camera.debug.force_eaf_on=0 \
+ vendor.camera.debug.force_local_tone_mapping_on=0 \
+ vendor.camera.debug.force_mesh_warp_on=0 \
+ vendor.camera.debug.force_rectiface_node_on=0 \
+ vendor.camera.debug.force_steadiface_on=0 \
+ vendor.camera.debug.force_tnr_on=0 \
+ vendor.camera.debug.local_tone_mapping_controller_v1.mode=0
+
+# Disable ScreenDecorations for factory builds
+PRODUCT_PROPERTY_OVERRIDES += \
+ debug.disable_screen_decorations=true
+
+PRODUCT_DEFAULT_PROPERTY_OVERRIDES += ro.surface_flinger.set_idle_timer_ms=80
+PRODUCT_DEFAULT_PROPERTY_OVERRIDES += ro.surface_flinger.set_touch_timer_ms=200
+PRODUCT_DEFAULT_PROPERTY_OVERRIDES += ro.surface_flinger.set_display_power_timer_ms=1000
+PRODUCT_DEFAULT_PROPERTY_OVERRIDES += ro.surface_flinger.use_content_detection_for_refresh_rate=true
+
+# factory should always has SELinux permissive
+BOARD_BOOTCONFIG += androidboot.selinux=permissive
+BOARD_KERNEL_CMDLINE += androidboot.selinux=permissive
+
+# Disable Bluetooth as default in factory build
+DEVICE_PACKAGE_OVERLAYS += device/google/gs101/overlay-factory
+
+PRODUCT_COPY_FILES += \
+ device/google/gs101/conf/init.factory.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/hw/init.factory.rc
+
+# Add factory-friendly changes
+PRODUCT_PACKAGES += \
+ FactoryOverlaySettings \
+ FactoryOverlayLauncher3 \
+ FactoryOverlayFrameworkRes
+
+# Disable DebugFS restrictions in factory builds
+PRODUCT_SET_DEBUGFS_RESTRICTIONS := false
+
+# PixelLogger for RF testing
+PRODUCT_PACKAGES_DEBUG += \
+ PixelLogger
+
+# Tool for installing Widevine keybox
+PRODUCT_PACKAGES_DEBUG += \
+ WvInstallKeybox
diff --git a/fingerprint/fpc1540/fingerprint_config.mk b/fingerprint/fpc1540/fingerprint_config.mk
new file mode 100644
index 0000000..1584e11
--- /dev/null
+++ b/fingerprint/fpc1540/fingerprint_config.mk
@@ -0,0 +1,18 @@
+# ----------------------------
+# Add feature flags below
+# ----------------------------
+FPC_CONFIG_BUILD_VERSION=33
+FPC_CONFIG_CAPACITIVE=1
+FPC_CONFIG_MAX_NR_TEMPLATES=5
+FPC_CONFIG_SENSE_TOUCH_CALIBRATION_PATH=/data/fpc/calibration_sense_touch.dat
+FPC_CONFIG_TA_FS=1
+FPC_DEFECTIVE_PIXEL_LIST_SIZE=5000
+FPC_SENSOR_SDK_LOG_LEVEL=3
+FPC_TEE_RUNTIME=TRUSTY
+LIBFPC_NAME=libfpc1541_S_nav_debug.a
+FPC_CONFIG_DEBUG=1
+FPC_CONFIG_PRODUCT_DEFAULT=FPC_PRODUCT_TYPE1541_S
+
+#
+# File included from device/<manufacture>/<>/<device>.mk
+# Packages to include into the build
diff --git a/fingerprint/fpc1540/fingerprint_config_factory.mk b/fingerprint/fpc1540/fingerprint_config_factory.mk
new file mode 100644
index 0000000..85b1064
--- /dev/null
+++ b/fingerprint/fpc1540/fingerprint_config_factory.mk
@@ -0,0 +1,21 @@
+# ----------------------------
+# Add feature flags below
+# ----------------------------
+FPC_CONFIG_BUILD_VERSION=33
+FPC_CONFIG_CAPACITIVE=1
+FPC_CONFIG_MAX_NR_TEMPLATES=5
+FPC_CONFIG_NAVIGATION=0
+FPC_CONFIG_SENSE_TOUCH_CALIBRATION_PATH=/data/fpc/calibration_sense_touch.dat
+FPC_CONFIG_SENSORTEST=1
+FPC_CONFIG_TA_FS=1
+FPC_DEFECTIVE_PIXEL_LIST_SIZE=5000
+FPC_SENSOR_SDK_LOG_LEVEL=3
+FPC_TEE_RUNTIME=TRUSTY
+LIBFPC_NAME=libfpc1541_S_nav_debug.a
+FPC_CONFIG_DEBUG=1
+FPC_CONFIG_ENGINEERING=1
+FPC_CONFIG_PRODUCT_DEFAULT=FPC_PRODUCT_TYPE1541_S
+
+#
+# File included from device/<manufacture>/<>/<device>.mk
+# Packages to include into the build
diff --git a/fingerprint/fpc1540/fpc1540.mk b/fingerprint/fpc1540/fpc1540.mk
new file mode 100644
index 0000000..7fdcb12
--- /dev/null
+++ b/fingerprint/fpc1540/fpc1540.mk
@@ -0,0 +1,8 @@
+# Fingerprint
+include device/google/gs101/fingerprint/fpc1540/fingerprint_config.mk
+
+PRODUCT_PACKAGES += \
+ android.hardware.biometrics.fingerprint@2.1-service.fpc \
+
+PRODUCT_COPY_FILES += \
+ frameworks/native/data/etc/android.hardware.fingerprint.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.fingerprint.xml
diff --git a/fingerprint/fpc1540/fpc1540_factory.mk b/fingerprint/fpc1540/fpc1540_factory.mk
new file mode 100644
index 0000000..e868c5e
--- /dev/null
+++ b/fingerprint/fpc1540/fpc1540_factory.mk
@@ -0,0 +1,10 @@
+# Fingerprint
+include device/google/gs101/fingerprint/fpc1540/fingerprint_config_factory.mk
+
+PRODUCT_PACKAGES += \
+ fpc_tee_test\
+ SensorTestTool \
+
+PRODUCT_PACKAGES += \
+ com.fingerprints.extension.xml \
+ com.fingerprints.extension \
diff --git a/fingerprint/udfps_common.mk b/fingerprint/udfps_common.mk
new file mode 100644
index 0000000..51ce07f
--- /dev/null
+++ b/fingerprint/udfps_common.mk
@@ -0,0 +1,32 @@
+#
+# Copyright (C) 2020 The Android Open-Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+PRODUCT_COPY_FILES += \
+ frameworks/native/data/etc/android.hardware.fingerprint.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.fingerprint.xml
+
+# Fingerprint manifest
+ifneq (,$(filter userdebug eng, $(TARGET_BUILD_VARIANT)))
+DEVICE_MANIFEST_FILE += \
+ device/google/gs101/fingerprint/vendor.goodix.hardware.biometrics.fingerprint@2.1-service.xml
+endif
+
+# Include the Goodix AIDL HAL namespaces.
+PRODUCT_SOONG_NAMESPACES += vendor/goodix/udfps/g6_trusty
+PRODUCT_SOONG_NAMESPACES += vendor/goodix/udfps/g6_aidl_trusty
+
+SOONG_CONFIG_NAMESPACES += fp_hal_feature
+SOONG_CONFIG_fp_hal_feature += biometric_suez_support
+SOONG_CONFIG_fp_hal_feature_biometric_suez_support := true
diff --git a/fingerprint/udfps_factory.mk b/fingerprint/udfps_factory.mk
new file mode 100644
index 0000000..40993fb
--- /dev/null
+++ b/fingerprint/udfps_factory.mk
@@ -0,0 +1,23 @@
+#
+# Copyright (C) 2020 The Android Open-Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+PRODUCT_PACKAGES += \
+ android.hardware.biometrics.fingerprint@2.1-service.goodix \
+ GF_delmar_factory \
+ udfps_test
+
+PRODUCT_PROPERTY_OVERRIDES += \
+ gf.debug.dump_data=1
diff --git a/fingerprint/udfps_shipping.mk b/fingerprint/udfps_shipping.mk
new file mode 100644
index 0000000..ed88f66
--- /dev/null
+++ b/fingerprint/udfps_shipping.mk
@@ -0,0 +1,18 @@
+#
+# Copyright (C) 2021 The Android Open-Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+PRODUCT_PACKAGES += \
+ android.hardware.biometrics.fingerprint-service.goodix
diff --git a/fingerprint/vendor.goodix.hardware.biometrics.fingerprint@2.1-service.xml b/fingerprint/vendor.goodix.hardware.biometrics.fingerprint@2.1-service.xml
new file mode 100644
index 0000000..e42448f
--- /dev/null
+++ b/fingerprint/vendor.goodix.hardware.biometrics.fingerprint@2.1-service.xml
@@ -0,0 +1,11 @@
+<manifest version="1.0" type="device">
+ <hal format="hidl">
+ <name>vendor.goodix.hardware.biometrics.fingerprint</name>
+ <transport>hwbinder</transport>
+ <version>2.1</version>
+ <interface>
+ <name>IGoodixFingerprintDaemon</name>
+ <instance>default</instance>
+ </interface>
+ </hal>
+</manifest>
diff --git a/firmware/BCM.btaddr b/firmware/BCM.btaddr
new file mode 100644
index 0000000..4bf70eb
--- /dev/null
+++ b/firmware/BCM.btaddr
@@ -0,0 +1 @@
+22:22:3b:ff:0d:50
diff --git a/firmware/BCM4362A2_001.003.006.0027.0033.hcd b/firmware/BCM4362A2_001.003.006.0027.0033.hcd
new file mode 100644
index 0000000..27b0dbc
--- /dev/null
+++ b/firmware/BCM4362A2_001.003.006.0027.0033.hcd
Binary files differ
diff --git a/firmware/BCM4389C0_003.001.010.0101.0000_Google_eval_USI_ES10.hcd b/firmware/BCM4389C0_003.001.010.0101.0000_Google_eval_USI_ES10.hcd
new file mode 100644
index 0000000..8e73e47
--- /dev/null
+++ b/firmware/BCM4389C0_003.001.010.0101.0000_Google_eval_USI_ES10.hcd
Binary files differ
diff --git a/firmware/BCM4389C1_003.002.009.0050.0000_Google_eval_USI_ES10_ePA_Updated.hcd b/firmware/BCM4389C1_003.002.009.0050.0000_Google_eval_USI_ES10_ePA_Updated.hcd
new file mode 100644
index 0000000..47120b3
--- /dev/null
+++ b/firmware/BCM4389C1_003.002.009.0050.0000_Google_eval_USI_ES10_ePA_Updated.hcd
Binary files differ
diff --git a/firmware/mfc/mfc_fw.bin b/firmware/mfc/mfc_fw.bin
new file mode 100644
index 0000000..4a5c070
--- /dev/null
+++ b/firmware/mfc/mfc_fw.bin
Binary files differ
diff --git a/firmware/mfc/signed/mfc_fw.bin b/firmware/mfc/signed/mfc_fw.bin
new file mode 100644
index 0000000..6f60c16
--- /dev/null
+++ b/firmware/mfc/signed/mfc_fw.bin
Binary files differ
diff --git a/gnss/47765/Android.bp b/gnss/47765/Android.bp
new file mode 100644
index 0000000..f4a2902
--- /dev/null
+++ b/gnss/47765/Android.bp
@@ -0,0 +1,231 @@
+// Copyright (C) 2020 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+soong_namespace {
+}
+
+package {
+ // See: http://go/android-license-faq
+ // A large-scale-change added 'default_applicable_licenses' to import
+ // all of the 'license_kinds' from "//device/google/gs101:device_google_gs101_license"
+ // to get the below license kinds:
+ // SPDX-license-identifier-Apache-2.0
+ default_applicable_licenses: [
+ "//device/google/gs101:device_google_gs101_license",
+ ],
+}
+
+cc_prebuilt_library_shared {
+ name: "android.hardware.gnss@2.1-impl-google",
+ arch: {
+ arm64: {
+ srcs: ["bin/android.hardware.gnss@2.1-impl-google.so"],
+ shared_libs: [
+ "liblog",
+ "libhidlbase",
+ // "libhidltransport",
+ "libutils",
+ "android.hardware.gnss@1.0",
+ "android.hardware.gnss@1.1",
+ "android.hardware.gnss@2.0",
+ "android.hardware.gnss@2.1",
+ "android.hardware.gnss.measurement_corrections@1.0",
+ "android.hardware.gnss.visibility_control@1.0",
+ "android.hardware.gnss-V1-ndk_platform",
+ "libhardware",
+ "libc++",
+ "libc",
+ "libm",
+ "libdl",
+ ],
+ },
+ },
+ compile_multilib: "64",
+ vendor: true,
+ relative_install_path: "hw",
+ strip: {
+ none: true,
+ },
+ // Bypass because libhidltransport is deprecated
+ check_elf_files: false,
+}
+
+cc_prebuilt_binary {
+ name: "android.hardware.gnss@2.1-service-brcm",
+ arch: {
+ arm64: {
+ srcs: ["bin/android.hardware.gnss@2.1-service-brcm"],
+ shared_libs: [
+ "liblog",
+ "libutils",
+ "libhardware",
+ "android.hardware.gnss@1.0",
+ "libhidlbase",
+ // "libhidltransport",
+ // "libhwbinder",
+ "android.hardware.gnss@1.1",
+ "android.hardware.gnss@2.0",
+ "android.hardware.gnss@2.1",
+ "libc++",
+ "libc",
+ "libm",
+ "libdl",
+ ],
+ },
+ },
+ compile_multilib: "64",
+ vendor: true,
+ relative_install_path: "hw",
+ strip: {
+ none: true,
+ },
+ // Bypass because libhidltransport is deprecated
+ // Bypass because libhwbinder is deprecated
+ check_elf_files: false,
+ vintf_fragments: ["android.hardware.gnss@2.1-service-brcm.xml"]
+}
+
+cc_prebuilt_library_shared {
+ name: "flp.default",
+ arch: {
+ arm64: {
+ srcs: ["bin/flp.default.so"],
+ shared_libs: [
+ "liblog",
+ "libcutils",
+ "libutils",
+ "libc++",
+ "libc",
+ "libm",
+ "libdl",
+ ],
+ },
+ },
+ compile_multilib: "64",
+ vendor: true,
+ relative_install_path: "hw",
+ strip: {
+ none: true,
+ },
+ // Bypass because soname mismatch
+ check_elf_files: false,
+}
+
+cc_prebuilt_binary {
+ name: "gpsd",
+ arch: {
+ arm64: {
+ srcs: ["bin/gpsd"],
+ shared_libs: [
+ "liblog",
+ "libutils",
+ "libhardware_legacy",
+ "libcutils",
+ "libssl",
+ "libcrypto",
+ // "libsitril-gps",
+ "android.frameworks.sensorservice@1.0",
+ "libhidlbase",
+ "libandroid_net",
+ "libc++",
+ "libc",
+ "libm",
+ "libdl",
+ ],
+ },
+ },
+ compile_multilib: "64",
+ vendor: true,
+ relative_install_path: "hw",
+ strip: {
+ none: true,
+ },
+ // Bypass because libsitril-gps is Android.mk module
+ check_elf_files: false,
+}
+
+cc_prebuilt_library_shared {
+ name: "gps.default",
+ arch: {
+ arm64: {
+ srcs: ["bin/gps.default.so"],
+ shared_libs: [
+ "liblog",
+ "libcutils",
+ "libutils",
+ "libc++",
+ "libc",
+ "libm",
+ "libdl",
+ ],
+ },
+ },
+ compile_multilib: "64",
+ vendor: true,
+ relative_install_path: "hw",
+ strip: {
+ none: true,
+ },
+ // Bypass because soname mismatch
+ check_elf_files: false,
+}
+
+cc_prebuilt_binary {
+ name: "lhd",
+ arch: {
+ arm64: {
+ srcs: ["bin/lhd"],
+ shared_libs: [
+ "liblog",
+ "libutils",
+ "libhardware_legacy",
+ "libc++",
+ "libc",
+ "libm",
+ "libz",
+ "android.hardware.contexthub@1.0",
+ "libhidlbase",
+ "libdl",
+ ],
+ },
+ },
+ compile_multilib: "64",
+ vendor: true,
+ relative_install_path: "hw",
+ strip: {
+ none: true,
+ },
+}
+
+cc_prebuilt_binary {
+ name: "scd",
+ arch: {
+ arm64: {
+ srcs: ["bin/scd"],
+ shared_libs: [
+ "liblog",
+ "libutils",
+ "libssl",
+ "libcrypto",
+ "libandroid_net",
+ ],
+ },
+ },
+ compile_multilib: "64",
+ vendor: true,
+ relative_install_path: "hw",
+ strip: {
+ none: true,
+ },
+}
diff --git a/gnss/47765/android.hardware.gnss@2.1-service-brcm.xml b/gnss/47765/android.hardware.gnss@2.1-service-brcm.xml
new file mode 100644
index 0000000..1eb3509
--- /dev/null
+++ b/gnss/47765/android.hardware.gnss@2.1-service-brcm.xml
@@ -0,0 +1,16 @@
+<manifest version="1.0" type="device">
+ <hal format="hidl">
+ <name>android.hardware.gnss</name>
+ <transport>hwbinder</transport>
+ <version>2.1</version>
+ <version>1.1</version>
+ <interface>
+ <name>IGnss</name>
+ <instance>default</instance>
+ </interface>
+ </hal>
+ <hal format="aidl">
+ <name>android.hardware.gnss</name>
+ <fqname>IGnss/default</fqname>
+ </hal>
+</manifest>
diff --git a/gnss/47765/bin/android.hardware.gnss@2.1-impl-google.so b/gnss/47765/bin/android.hardware.gnss@2.1-impl-google.so
new file mode 100755
index 0000000..de24363
--- /dev/null
+++ b/gnss/47765/bin/android.hardware.gnss@2.1-impl-google.so
Binary files differ
diff --git a/gnss/47765/bin/android.hardware.gnss@2.1-service-brcm b/gnss/47765/bin/android.hardware.gnss@2.1-service-brcm
new file mode 100755
index 0000000..7ce2d8b
--- /dev/null
+++ b/gnss/47765/bin/android.hardware.gnss@2.1-service-brcm
Binary files differ
diff --git a/gnss/47765/bin/flp.default.so b/gnss/47765/bin/flp.default.so
new file mode 100755
index 0000000..3b92bdb
--- /dev/null
+++ b/gnss/47765/bin/flp.default.so
Binary files differ
diff --git a/gnss/47765/bin/gps.default.so b/gnss/47765/bin/gps.default.so
new file mode 100755
index 0000000..11a13cb
--- /dev/null
+++ b/gnss/47765/bin/gps.default.so
Binary files differ
diff --git a/gnss/47765/bin/gpsd b/gnss/47765/bin/gpsd
new file mode 100755
index 0000000..711eb25
--- /dev/null
+++ b/gnss/47765/bin/gpsd
Binary files differ
diff --git a/gnss/47765/bin/lhd b/gnss/47765/bin/lhd
new file mode 100755
index 0000000..00dbdb1
--- /dev/null
+++ b/gnss/47765/bin/lhd
Binary files differ
diff --git a/gnss/47765/bin/scd b/gnss/47765/bin/scd
new file mode 100755
index 0000000..0041af3
--- /dev/null
+++ b/gnss/47765/bin/scd
Binary files differ
diff --git a/gnss/47765/config/gps.cer b/gnss/47765/config/gps.cer
new file mode 100644
index 0000000..934e0c5
--- /dev/null
+++ b/gnss/47765/config/gps.cer
@@ -0,0 +1,161 @@
+-----BEGIN CERTIFICATE-----
+MIIE0zCCA7ugAwIBAgIQGNrRniZ96LtKIVjNzGs7SjANBgkqhkiG9w0BAQUFADCB
+yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL
+ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJp
+U2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxW
+ZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0
+aG9yaXR5IC0gRzUwHhcNMDYxMTA4MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCByjEL
+MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZW
+ZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2ln
+biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJp
+U2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9y
+aXR5IC0gRzUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvJAgIKXo1
+nmAMqudLO07cfLw8RRy7K+D+KQL5VwijZIUVJ/XxrcgxiV0i6CqqpkKzj/i5Vbex
+t0uz/o9+B1fs70PbZmIVYc9gDaTY3vjgw2IIPVQT60nKWVSFJuUrjxuf6/WhkcIz
+SdhDY2pSS9KP6HBRTdGJaXvHcPaz3BJ023tdS1bTlr8Vd6Gw9KIl8q8ckmcY5fQG
+BO+QueQA5N06tRn/Arr0PO7gi+s3i+z016zy9vA9r911kTMZHRxAy3QkGSGT2RT+
+rCpSx4/VBEnkjWNHiDxpg8v+R70rfk/Fla4OndTRQ8Bnc+MUCH7lP59zuDMKz10/
+NIeWiu5T6CUVAgMBAAGjgbIwga8wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8E
+BAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2UvZ2lmMCEwHzAH
+BgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVy
+aXNpZ24uY29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFH/TZafC3ey78DAJ80M5+gKv
+MzEzMA0GCSqGSIb3DQEBBQUAA4IBAQCTJEowX2LP2BqYLz3q3JktvXf2pXkiOOzE
+p6B4Eq1iDkVwZMXnl2YtmAl+X6/WzChl8gGqCBpH3vn5fJJaCGkgDdk+bW48DW7Y
+5gaRQBi5+MHt39tBquCWIMnNZBU4gcmU7qKEKQsTb47bDN0lAtukixlE0kF6BWlK
+WE9gyn6CagsCqiUXObXbf+eEZSqVir2G3l6BFoMtEMze/aiCKm0oHw0LxOXnGiYZ
+4fQRbxC1lfznQgUy286dUV4otp6F01vvpX1FQHKOtw5rDgb7MzVIcbidJ4vEZV8N
+hnacRHr2lVz2XTIIM6RUthg/aFzyQkqFOFSDX9HoLPKsEdao7WNq
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIDdzCCAl+gAwIBAgIEAgAAuTANBgkqhkiG9w0BAQUFADBaMQswCQYDVQQGEwJJ
+RTESMBAGA1UEChMJQmFsdGltb3JlMRMwEQYDVQQLEwpDeWJlclRydXN0MSIwIAYD
+VQQDExlCYWx0aW1vcmUgQ3liZXJUcnVzdCBSb290MB4XDTAwMDUxMjE4NDYwMFoX
+DTI1MDUxMjIzNTkwMFowWjELMAkGA1UEBhMCSUUxEjAQBgNVBAoTCUJhbHRpbW9y
+ZTETMBEGA1UECxMKQ3liZXJUcnVzdDEiMCAGA1UEAxMZQmFsdGltb3JlIEN5YmVy
+VHJ1c3QgUm9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKMEuyKr
+mD1X6CZymrV51Cni4eiVgLGw41uOKymaZN+hXe2wCQVt2yguzmKiYv60iNoS6zjr
+IZ3AQSsBUnuId9Mcj8e6uYi1agnnc+gRQKfRzMpijS3ljwumUNKoUMMo6vWrJYeK
+mpYcqWe4PwzV9/lSEy/CG9VwcPCPwBLKBsua4dnKM3p31vjsufFoREJIE9LAwqSu
+XmD+tqYF/LTdB1kC1FkYmGP1pWPgkAx9XbIGevOF6uvUA65ehD5f/xXtabz5OTZy
+dc93Uk3zyZAsuT3lySNTPx8kmCFcB5kpvcY67Oduhjprl3RjM71oGDHweI12v/ye
+jl0qhqdNkNwnGjkCAwEAAaNFMEMwHQYDVR0OBBYEFOWdWTCCR1jMrPoIVDaGezq1
+BE3wMBIGA1UdEwEB/wQIMAYBAf8CAQMwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3
+DQEBBQUAA4IBAQCFDF2O5G9RaEIFoN27TyclhAO992T9Ldcw46QQF+vaKSm2eT92
+9hkTI7gQCvlYpNRhcL0EYWoSihfVCr3FvDB81ukMJY2GQE/szKN+OMY3EU/t3Wgx
+jkzSswF07r51XgdIGn9w/xZchMB5hbgF/X++ZRGjD8ACtPhSNzkE1akxehi/oCr0
+Epn3o0WC4zxe9Z2etciefC7IpJ5OCBRLbf1wbWsaY71k5h+3zvDyny67G7fyUIhz
+ksLi4xaNmjICq44Y3ekQEe5+NauQrz4wlHrQMz2nZQ/1/I6eYs9HRCwBXbsdtTLS
+R9I4LtD+gdwyah617jzV/OeBHRnDJELqYzmp
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIDjjCCAnagAwIBAgIQAzrx5qcRqaC7KGSxHQn65TANBgkqhkiG9w0BAQsFADBh
+MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
+d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBH
+MjAeFw0xMzA4MDExMjAwMDBaFw0zODAxMTUxMjAwMDBaMGExCzAJBgNVBAYTAlVT
+MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j
+b20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IEcyMIIBIjANBgkqhkiG
+9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuzfNNNx7a8myaJCtSnX/RrohCgiN9RlUyfuI
+2/Ou8jqJkTx65qsGGmvPrC3oXgkkRLpimn7Wo6h+4FR1IAWsULecYxpsMNzaHxmx
+1x7e/dfgy5SDN67sH0NO3Xss0r0upS/kqbitOtSZpLYl6ZtrAGCSYP9PIUkY92eQ
+q2EGnI/yuum06ZIya7XzV+hdG82MHauVBJVJ8zUtluNJbd134/tJS7SsVQepj5Wz
+tCO7TG1F8PapspUwtP1MVYwnSlcUfIKdzXOS0xZKBgyMUNGPHgm+F6HmIcr9g+UQ
+vIOlCsRnKPZzFBQ9RnbDhxSJITRNrw9FDKZJobq7nMWxM4MphQIDAQABo0IwQDAP
+BgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjAdBgNVHQ4EFgQUTiJUIBiV
+5uNu5g/6+rkS7QYXjzkwDQYJKoZIhvcNAQELBQADggEBAGBnKJRvDkhj6zHd6mcY
+1Yl9PMWLSn/pvtsrF9+wX3N3KjITOYFnQoQj8kVnNeyIv/iPsGEMNKSuIEyExtv4
+NeF22d+mQrvHRAiGfzZ0JFrabA0UWTW98kndth/Jsw1HKj2ZL7tcu7XUIOGZX1NG
+Fdtom/DzMNU+MeKNhJ7jitralj41E6Vf8PlwUHBHQRFXGU7Aj64GxJUTFy8bJZ91
+8rGOmaFvE7FBcf6IKshPECBV1/MUReXgRPTqh5Uykw7+U0b6LJ3/iyK5S9kJRaTe
+pLiaWN0bfVKfjllDiIGknibVb63dDcY3fe0Dkhvld1927jyNxF1WW6LZZm6zNTfl
+MrY=
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIE0zCCA7ugAwIBAgIQGNrRniZ96LtKIVjNzGs7SjANBgkqhkiG9w0BAQUFADCB
+yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL
+ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJp
+U2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxW
+ZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0
+aG9yaXR5IC0gRzUwHhcNMDYxMTA4MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCByjEL
+MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZW
+ZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2ln
+biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJp
+U2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9y
+aXR5IC0gRzUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvJAgIKXo1
+nmAMqudLO07cfLw8RRy7K+D+KQL5VwijZIUVJ/XxrcgxiV0i6CqqpkKzj/i5Vbex
+t0uz/o9+B1fs70PbZmIVYc9gDaTY3vjgw2IIPVQT60nKWVSFJuUrjxuf6/WhkcIz
+SdhDY2pSS9KP6HBRTdGJaXvHcPaz3BJ023tdS1bTlr8Vd6Gw9KIl8q8ckmcY5fQG
+BO+QueQA5N06tRn/Arr0PO7gi+s3i+z016zy9vA9r911kTMZHRxAy3QkGSGT2RT+
+rCpSx4/VBEnkjWNHiDxpg8v+R70rfk/Fla4OndTRQ8Bnc+MUCH7lP59zuDMKz10/
+NIeWiu5T6CUVAgMBAAGjgbIwga8wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8E
+BAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2UvZ2lmMCEwHzAH
+BgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVy
+aXNpZ24uY29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFH/TZafC3ey78DAJ80M5+gKv
+MzEzMA0GCSqGSIb3DQEBBQUAA4IBAQCTJEowX2LP2BqYLz3q3JktvXf2pXkiOOzE
+p6B4Eq1iDkVwZMXnl2YtmAl+X6/WzChl8gGqCBpH3vn5fJJaCGkgDdk+bW48DW7Y
+5gaRQBi5+MHt39tBquCWIMnNZBU4gcmU7qKEKQsTb47bDN0lAtukixlE0kF6BWlK
+WE9gyn6CagsCqiUXObXbf+eEZSqVir2G3l6BFoMtEMze/aiCKm0oHw0LxOXnGiYZ
+4fQRbxC1lfznQgUy286dUV4otp6F01vvpX1FQHKOtw5rDgb7MzVIcbidJ4vEZV8N
+hnacRHr2lVz2XTIIM6RUthg/aFzyQkqFOFSDX9HoLPKsEdao7WNq
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIFZTCCA02gAwIBAgIPAWv6o5fPZQ5hxva1vuNrMA0GCSqGSIb3DQEBCwUAMDgx
+CzAJBgNVBAYTAkpQMRcwFQYDVQQKDA5SYWt1dGVuIE1vYmlsZTEQMA4GA1UEAwwH
+Um9vdCBDQTAeFw0xOTA3MTYxMTU1NDJaFw0yOTA3MTMxMTU1NDJaMD4xCzAJBgNV
+BAYTAkpQMRcwFQYDVQQKEw5SYWt1dGVuIE1vYmlsZTEWMBQGA1UEAxMNREMgSXNz
+dWluZyBDQTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAObjAbQ8TkzF
+A+/WvSE6fzDf+rlvBKY1dJJbiJ2/j0lc+tj56dE7+BhZ2JVmAYIYfEoUw69dwxTR
+44EdZln3ZVFmMuOdfxvF9A46pMKzH1skr8ErDgjNyJ9f/JOuQ29p/7BvLC55aRzk
+yj99BYdzJWKs+5W7jQlv7/HyJ/PQ+rUEBOx4o/YiTucDFduWdV6/x5mcEbKD3ufL
+66vUEf3MHGegDkOWAMTchl1RmaYDlf3IMsXC7M2bFPFa/9y/vzaaY6EhnJ861co6
+rkOhTZe/kJZwqQYFmWczBPZK/9zRy3C1zA09tCBk+CDNBrNXe+3dMLFmnW4npxUQ
+oceTPhaaDo5lA6HkkARwVWLrporFZ2B/th2Bqtu6uObLSB6JMA2jxmKwKukM8/jp
+C9tKV9X03rHQIQultc63rivPdgQvqYgW1PVdzV1a3pZEMk5zv257+fxgfUGzfUh7
+tx0OY+BkykSP6ZK/BsbI/BY+rsS0L/0lmC22NU1p+qVeN3ZRHoqntB+FymaBfQ3/
+yfKkDNfnMua5GzLyyYGYUDDx71rtfrs3hGDiwjvE4B0IvsU0E7Oerk5gLqx8t0q/
+MmhI+CJJS1bH2sRBMcqfRAv+eyByFsvLY7Er/ztveaabX9xEwyPNFOcU+SZMhipv
+EUKmUcOAHxzx4HbYEFyM0Z7WgUdlTd1xAgMBAAGjZjBkMB8GA1UdIwQYMBaAFPUI
+BlLFno+y5xdHlCX349iVyS75MB0GA1UdDgQWBBQzVhTSCf8F31Zf0Bu661qymMko
+JzAOBgNVHQ8BAf8EBAMCAQYwEgYDVR0TAQH/BAgwBgEB/wIBADANBgkqhkiG9w0B
+AQsFAAOCAgEADQEufjma/6fT/Do4Fh13lZhsowHSsGv5sFYly6224GsciE80ZwYg
+R4EK/TAR0jorBXsu6sQc51pZ5SSHhIxfo2frfprTPaaWN6cZwfrb6UcnD/FaZ1jP
+HzWrI3kRxG9JCDffzE8uMf8Rnc69n1j+TBerk4Ix3Zui2TaaF6LVceJ4RgeNkZl0
+OFkGGFruHz/d83q7A6YjgN0iwMEabdtKH7Sq27LqGPeCS8NuGlrziNAxktdwaYlN
+D5t6ntM/1nHYPmVqdioEU9vAnyB3BiXOlITPHEEMOSlItcUsJ6rN5DZJaJgkBxvN
+Qdi6wmaDlxy8XFyy4KGFKWAl17FlfpqW5VtYQJ4aDpibGlGqamg0vm+IJDIGPlOs
+KQcxG17cOw4MCflAtnzHKHBn52DegQKwxev2ZpqdwVw/NqPq0yTNEbCRqEyiq7+H
+ljKEFiEjEjeXTcqR4DoCseA5UgcriuriV0OCvr8KTlviV4FEUu+IA9ut8YIvf2of
+Zz0z8rO4H+Rb4tMi/yBRM09x3rEW4hXwO0qpCBNBa0wEJBxufF3f6l9efEle+YTR
+XS92gutaoVluqMfRSJckjwWokToi32/FvF79guZymD0qHkOSi5dewsIW7zsdobvv
+t2CWLfTAb9cx222ELBpVPkfcgUKfF4RCGWPzuAlK6OueuDrInOiz8ag=
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIFUjCCAzqgAwIBAgICBpAwDQYJKoZIhvcNAQELBQAwODELMAkGA1UEBhMCSlAx
+FzAVBgNVBAoMDlJha3V0ZW4gTW9iaWxlMRAwDgYDVQQDDAdSb290IENBMB4XDTE5
+MDcxNjEwNTkwMVoXDTM5MDcxNTEwNTkwMVowODELMAkGA1UEBhMCSlAxFzAVBgNV
+BAoMDlJha3V0ZW4gTW9iaWxlMRAwDgYDVQQDDAdSb290IENBMIICIjANBgkqhkiG
+9w0BAQEFAAOCAg8AMIICCgKCAgEAqiPMbNudotG8afkk5Fwo2QdDcFFmC+qGpGjw
+yQs57QtGPRk1HsIhZFfr6zn8t1tZw6Zo+A0biFA7d2N93nYsseHBy/bZlhhOL+Js
+Jb907UM09L5xaJIgnbFYVT1QjtB7ksLAy3rHpdSKiggfT1ynwM/u6wIdWRSx24QU
+Vxpq5iFpVj041+/RnpCPASL5pSnbYZKQyOb/XsOaR+hz7aSjwiUzk2cRjAmRqYxY
+qYVe135IAy377inJRtUPvi3IhtmUHJToiMLBH5tChkjkIpdRG1lVIj4vGdzrIb+Q
+Kvg/k7BDVZ3sstsLvJ8evNonBzrqcr80ek/X+HFrgY/3M1VEru4ohLAiA877CuuG
+UAfrxFh9qjP1yue+dlrQWk+WHMbGMzKI1zCKEMphJatyNHfpRtD8LUWtLV96DD78
+qLwQwrSYrEMd2u/akeBFKINYWqpqkVBhSsV3eukXVIdSbtSAxZNv+4m6QddEcUvG
+2ZLf+yCf2tl+LPGXNL08vwMVbQqcDw8m+nDP4vu0VUixddyoqnnDlWOoQESuQFQ1
+IqYFQhRPs2dFRf5TJzkmbqRUXbaPxsrKGjTtVpPgENbv40nyRGyBbl1CzqpBFEp5
+7w4MPYDIzWKYbRyCnUE5WScRBFmym7242KA3SOfkylzGMb8KGJxohVME+7oMbNf5
+EjLWVgECAwEAAaNmMGQwHwYDVR0jBBgwFoAU9QgGUsWej7LnF0eUJffj2JXJLvkw
+HQYDVR0OBBYEFPUIBlLFno+y5xdHlCX349iVyS75MA4GA1UdDwEB/wQEAwIBBjAS
+BgNVHRMBAf8ECDAGAQH/AgEBMA0GCSqGSIb3DQEBCwUAA4ICAQCDGIeYrtivFt3p
+8k5vXKFUT072C7wMvfrAGYCYgIdUthWCqJoMwnG3Fsg7Ngu70La7ESBzEKpnpPWz
+eIdnREJkNP9iqiKHXnaUV2P/21AS1q6enVKBFOl7dYiVjqOZ+vac3a1UjLWkvm0g
+x4sg/f3PpiEzZM7ecnQYk2wfMSq8Jw0w1Lf0SEeoYZTkf12cqSJVSa/G7gEdL/Cn
+LO3yyBq0KPNdd87eIfvCLJj55UJ5dCr0JXRTUteBvJwflbPXmOqfI8fA05fwlJZS
+o1SBpMI9cEBwaPXQM9CPNKaWLvyOR1KpviRzbCnaKf44Fs2OuZboo3avZrC9eUoU
+HU2HKXRj8UMRlFeCdNugbOdGyK+CpXwMHVtIrtpf0iOUqo0rOekgnUSNi9qyjD1g
+IV3Y/NLVl9fqe8q66IWUn8NYndxigMKWcMCBFUjfP0yMZeqSHFiIv7zk9PuV/62k
+Yele7cK9iHnEUwWBj6VCEs6pZBS1QSmhRw3GWlSDc/gHXd38PG20zH7xg4z2H9Rc
+Op9P1ZW2kjqv5D2+q/qtaePAyHn3B05UZrQYUmx7LaHNO7op6dZgCdoR0sVsR+Fc
+Zyr0AhgiuTWrjtUEOGx2qJVwAsHkpqtlN+DaGT08dT64LvIf0bfGvmtm++/WEDWJ
+HInwg85pGm+sEkYbYFRBD0woPBsL3g==
+-----END CERTIFICATE-----
diff --git a/gnss/47765/config/gps.xml b/gnss/47765/config/gps.xml
new file mode 100644
index 0000000..7bf272d
--- /dev/null
+++ b/gnss/47765/config/gps.xml
@@ -0,0 +1,87 @@
+<?xml version="1.0" encoding="utf-8"?>
+<glgps xmlns="http://www.glpals.com/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.glpals.com/ glconfig.xsd" >
+ <hal
+ PortName="/dev/ttyBCM"
+ BaudRate="921600"
+ GpioNStdbyPath="/sys/devices/platform/10940000.spi/spi_master/spi5/spi5.0/nstandby"
+ CustGpioDelayMs="250"
+ LogEnabled="false"
+ Log="JAVA"
+ SecondaryConfigPath="/vendor/etc/gnss/gps2.xml"
+ LogDirectory="/sdcard/gps/broadcom/storage/"
+ CtrlPipe="/data/vendor/gps/glgpsctrl"
+ NmeaOutName="/data/vendor/gps/nmea_out"
+
+ acSuplServer="supl.google.com"
+ SuplPort="7275"
+ SuplLogEnable="true"
+ SuplLogFullName="/data/vendor/gps/suplflow.txt"
+ tlsEnable="true"
+
+ SuplSslMethod="SSLv23_NO_TLSv1_2"
+ SuplEnable="true"
+ SuplUseApn="true"
+ SuplTlsCertDirPath="/etc/security/cacerts"
+ SuplTlsCertPath="/vendor/etc/gnss/gps.cer"
+ SuplUT1Seconds="20"
+ SuplUT2Seconds="20"
+ SuplUT3Seconds="20"
+ TcpConnectionTimeout="20"
+ SuplLppCapable="true"
+ SuplEcidCapable="true"
+ SuplVersion="2"
+ SuplMinorVersion="0"
+ SuplOtdoaCapable="true"
+ SuplGlonassCapable = "true"
+ SuplGalileoCapable = "true"
+ SuplBdsCapable = "true"
+ SuplMgpsCapable = "true"
+
+ RtoEnable="true"
+ RtiEnable="true"
+ HttpSyncLto="true"
+ LtoFileName="lto2.dat"
+ LtoDir="/data/vendor/gps/"
+ LtoSyncThresholdDays="1"
+
+ GnssYearOfHardware="2020"
+ CpGuardTimeSec="1"
+ CpLppGuardTimeSec="1"
+ IgnoreInjectedSystemTime="true"
+
+ AttributionAppPkgName="com.google.android.carrierlocation"
+
+ AssertEnabled="false"
+ />
+
+ <gll
+ LogPriMask="LOG_INFO"
+ LogFacMask="LOG_NMEA | LOG_GLLIOS | LOG_GLLAPI"
+ FrqPlan="FRQ_PLAN_26MHZ_2PPM_49_152MHZ_300PPB"
+ MultiCarrRFMode="GL_MULTI_CARR_RF_MODE_L1_L5"
+ MultiCarrLnaMask="L1_EXT_ON|L5_EXT_ON"
+ RfType="GL_RF_4776_BRCM"
+ ExtL5Bias="13.0"
+ EnableFilteringForLTEB13="true"
+
+ WarmStandbyTimeout1Seconds="10"
+ WarmStandbyTimeout2Seconds="15"
+
+ EnableGnssPropagateInStandby="true"
+
+ RfPathLossDb_Ap="3.5"
+ RfPathLossDb_Cp="3.5"
+ RfPathLossDb_Ap_L5="3.5"
+ RfPathLossDb_Cp_L5="3.5"
+ OnChipGpsCarrierType="3,2,3,3,2,3,2,3,3,3,1,2,1,3,2,1,2,3,1,1,1,1,3,3,3,3,3,1,2,3,2,3"
+
+ />
+
+ <gll_features
+ EnableLowPowerPmm="true"
+ EnableNicAutoSwitch="true"
+ EnableNavic="true"
+ />
+
+</glgps>
+
diff --git a/gnss/47765/config/gps.xml.oriole b/gnss/47765/config/gps.xml.oriole
new file mode 100644
index 0000000..b381988
--- /dev/null
+++ b/gnss/47765/config/gps.xml.oriole
@@ -0,0 +1,87 @@
+<?xml version="1.0" encoding="utf-8"?>
+<glgps xmlns="http://www.glpals.com/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.glpals.com/ glconfig.xsd" >
+ <hal
+ PortName="/dev/ttyBCM"
+ BaudRate="921600"
+ GpioNStdbyPath="/sys/devices/platform/10940000.spi/spi_master/spi5/spi5.0/nstandby"
+ CustGpioDelayMs="250"
+ LogEnabled="false"
+ Log="JAVA"
+ SecondaryConfigPath="/vendor/etc/gnss/gps2.xml"
+ LogDirectory="/sdcard/gps/broadcom/storage/"
+ CtrlPipe="/data/vendor/gps/glgpsctrl"
+ NmeaOutName="/data/vendor/gps/nmea_out"
+
+ acSuplServer="supl.google.com"
+ SuplPort="7275"
+ SuplLogEnable="true"
+ SuplLogFullName="/data/vendor/gps/suplflow.txt"
+ tlsEnable="true"
+
+ SuplSslMethod="SSLv23_NO_TLSv1_2"
+ SuplEnable="true"
+ SuplUseApn="true"
+ SuplTlsCertDirPath="/etc/security/cacerts"
+ SuplTlsCertPath="/vendor/etc/gnss/gps.cer"
+ SuplUT1Seconds="20"
+ SuplUT2Seconds="20"
+ SuplUT3Seconds="20"
+ TcpConnectionTimeout="20"
+ SuplLppCapable="true"
+ SuplEcidCapable="true"
+ SuplVersion="2"
+ SuplMinorVersion="0"
+ SuplOtdoaCapable="true"
+ SuplGlonassCapable = "true"
+ SuplGalileoCapable = "true"
+ SuplBdsCapable = "true"
+ SuplMgpsCapable = "true"
+
+ RtoEnable="true"
+ RtiEnable="true"
+ HttpSyncLto="true"
+ LtoFileName="lto2.dat"
+ LtoDir="/data/vendor/gps/"
+ LtoSyncThresholdDays="1"
+
+ GnssYearOfHardware="2020"
+ CpGuardTimeSec="1"
+ CpLppGuardTimeSec="1"
+ IgnoreInjectedSystemTime="true"
+
+ AttributionAppPkgName="com.google.android.carrierlocation"
+
+ AssertEnabled="false"
+ />
+
+ <gll
+ LogPriMask="LOG_INFO"
+ LogFacMask="LOG_NMEA | LOG_GLLIOS | LOG_GLLAPI"
+ FrqPlan="FRQ_PLAN_26MHZ_2PPM_49_152MHZ_300PPB"
+ MultiCarrRFMode="GL_MULTI_CARR_RF_MODE_L1_L5"
+ MultiCarrLnaMask="L1_EXT_ON|L5_EXT_ON"
+ RfType="GL_RF_4776_BRCM"
+ ExtL5Bias="9.3"
+ EnableFilteringForLTEB13="true"
+
+ WarmStandbyTimeout1Seconds="10"
+ WarmStandbyTimeout2Seconds="15"
+
+ EnableGnssPropagateInStandby="true"
+
+ RfPathLossDb_Ap="4.2"
+ RfPathLossDb_Cp="4.2"
+ RfPathLossDb_Ap_L5="4.1"
+ RfPathLossDb_Cp_L5="4.1"
+ OnChipGpsCarrierType="3,2,3,3,2,3,2,3,3,3,1,2,1,3,2,1,2,3,1,1,1,1,3,3,3,3,3,1,2,3,2,3"
+
+ />
+
+ <gll_features
+ EnableLowPowerPmm="true"
+ EnableNicAutoSwitch="true"
+ EnableNavic="true"
+ />
+
+</glgps>
+
diff --git a/gnss/47765/config/gps.xml.raven b/gnss/47765/config/gps.xml.raven
new file mode 100644
index 0000000..4f1a214
--- /dev/null
+++ b/gnss/47765/config/gps.xml.raven
@@ -0,0 +1,87 @@
+<?xml version="1.0" encoding="utf-8"?>
+<glgps xmlns="http://www.glpals.com/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.glpals.com/ glconfig.xsd" >
+ <hal
+ PortName="/dev/ttyBCM"
+ BaudRate="921600"
+ GpioNStdbyPath="/sys/devices/platform/10940000.spi/spi_master/spi5/spi5.0/nstandby"
+ CustGpioDelayMs="250"
+ LogEnabled="false"
+ Log="JAVA"
+ SecondaryConfigPath="/vendor/etc/gnss/gps2.xml"
+ LogDirectory="/sdcard/gps/broadcom/storage/"
+ CtrlPipe="/data/vendor/gps/glgpsctrl"
+ NmeaOutName="/data/vendor/gps/nmea_out"
+
+ acSuplServer="supl.google.com"
+ SuplPort="7275"
+ SuplLogEnable="true"
+ SuplLogFullName="/data/vendor/gps/suplflow.txt"
+ tlsEnable="true"
+
+ SuplSslMethod="SSLv23_NO_TLSv1_2"
+ SuplEnable="true"
+ SuplUseApn="true"
+ SuplTlsCertDirPath="/etc/security/cacerts"
+ SuplTlsCertPath="/vendor/etc/gnss/gps.cer"
+ SuplUT1Seconds="20"
+ SuplUT2Seconds="20"
+ SuplUT3Seconds="20"
+ TcpConnectionTimeout="20"
+ SuplLppCapable="true"
+ SuplEcidCapable="true"
+ SuplVersion="2"
+ SuplMinorVersion="0"
+ SuplOtdoaCapable="true"
+ SuplGlonassCapable = "true"
+ SuplGalileoCapable = "true"
+ SuplBdsCapable = "true"
+ SuplMgpsCapable = "true"
+
+ RtoEnable="true"
+ RtiEnable="true"
+ HttpSyncLto="true"
+ LtoFileName="lto2.dat"
+ LtoDir="/data/vendor/gps/"
+ LtoSyncThresholdDays="1"
+
+ GnssYearOfHardware="2020"
+ CpGuardTimeSec="1"
+ CpLppGuardTimeSec="1"
+ IgnoreInjectedSystemTime="true"
+
+ AttributionAppPkgName="com.google.android.carrierlocation"
+
+ AssertEnabled="false"
+ />
+
+ <gll
+ LogPriMask="LOG_INFO"
+ LogFacMask="LOG_NMEA | LOG_GLLIOS | LOG_GLLAPI"
+ FrqPlan="FRQ_PLAN_26MHZ_2PPM_49_152MHZ_300PPB"
+ MultiCarrRFMode="GL_MULTI_CARR_RF_MODE_L1_L5"
+ MultiCarrLnaMask="L1_EXT_ON|L5_EXT_ON"
+ RfType="GL_RF_4776_BRCM"
+ ExtL5Bias="10.6"
+ EnableFilteringForLTEB13="true"
+
+ WarmStandbyTimeout1Seconds="10"
+ WarmStandbyTimeout2Seconds="15"
+
+ EnableGnssPropagateInStandby="true"
+
+ RfPathLossDb_Ap="4.1"
+ RfPathLossDb_Cp="4.1"
+ RfPathLossDb_Ap_L5="4"
+ RfPathLossDb_Cp_L5="4"
+ OnChipGpsCarrierType="3,2,3,3,2,3,2,3,3,3,1,2,1,3,2,1,2,3,1,1,1,1,3,3,3,3,3,1,2,3,2,3"
+
+ />
+
+ <gll_features
+ EnableLowPowerPmm="true"
+ EnableNicAutoSwitch="true"
+ EnableNavic="true"
+ />
+
+</glgps>
+
diff --git a/gnss/47765/config/gps2.xml b/gnss/47765/config/gps2.xml
new file mode 100644
index 0000000..93fb3ed
--- /dev/null
+++ b/gnss/47765/config/gps2.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<glgps xmlns="http://www.glpals.com/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.glpals.com/ glconfig.xsd" >
+ <hal
+ LogEnabled="true"
+ Log="JAVA"
+ AssertEnabled="true"
+ />
+ <gll
+ EnableOnChipStopNotification="false"
+ />
+</glgps>
+
diff --git a/gnss/47765/config/lhd.conf b/gnss/47765/config/lhd.conf
new file mode 100644
index 0000000..8b7f1c7
--- /dev/null
+++ b/gnss/47765/config/lhd.conf
@@ -0,0 +1,32 @@
+LheName=bbd
+
+LheRsmResetTimeoutMS=10000
+GpioNStdbyPath=/sys/devices/platform/10940000.spi/spi_master/spi5/spi5.0/nstandby
+
+LhePatch=/vendor/firmware/SensorHub.patch
+Lhe477xDebugFlags=RPC:FACILITY=65535-dKP+CUST+LHE:STDOUT_PUTS:STDOUT_LOG
+# LheConsole=/data/vendor/gps/LheConsole
+
+LogEnabled=false
+Log=JAVA
+LogDirectory=/sdcard/gps/broadcom/storage
+
+LheBbdPacket=/dev/ttyBCM
+
+LheBbdControl=/dev/bbd_control
+
+# LheBbdSensor=/dev/bbd_sensor
+
+# LheFailSafe=/data/vendor/gps/esw-crash-dump.txt
+
+NvStorageDir=/data/vendor/gps/
+
+# Enable BBD debugging at these stages:
+# LheDriverDebugFlags=PATCH_BBD:LHE_BBD:FSC_BBD
+
+LheAutoBaudDelayMS=10
+TrafficLogEnabled=false
+SecondaryConfigPath=/vendor/etc/gnss/lhd2.conf
+
+SkipSensorWakeLock=true
+LoggerWakeLockEnable=false
diff --git a/gnss/47765/config/lhd2.conf b/gnss/47765/config/lhd2.conf
new file mode 100644
index 0000000..b9e638c
--- /dev/null
+++ b/gnss/47765/config/lhd2.conf
@@ -0,0 +1,5 @@
+LheConsole=/data/vendor/gps/LheConsole
+LogEnabled=true
+Log=JAVA
+LheFailSafe=/data/vendor/gps/logs/esw-crash-dump.txt
+LogLevel=*:I
diff --git a/gnss/47765/config/scd.conf b/gnss/47765/config/scd.conf
new file mode 100644
index 0000000..b7c9b75
--- /dev/null
+++ b/gnss/47765/config/scd.conf
@@ -0,0 +1,6 @@
+LogEnabled=false
+Log=JAVA
+LogDirectory=/sdcard/gps/broadcom/storage
+NvStorageDir=/data/vendor/gps/
+TcpConnectionTimeout=20
+SecondaryConfigPath=/vendor/etc/gnss/scd2.conf
diff --git a/gnss/47765/config/scd2.conf b/gnss/47765/config/scd2.conf
new file mode 100644
index 0000000..65e6ffb
--- /dev/null
+++ b/gnss/47765/config/scd2.conf
@@ -0,0 +1,2 @@
+LogEnabled=true
+Log=JAVA
diff --git a/gnss/47765/firmware/SensorHub.patch b/gnss/47765/firmware/SensorHub.patch
new file mode 100644
index 0000000..541f412
--- /dev/null
+++ b/gnss/47765/firmware/SensorHub.patch
@@ -0,0 +1,6960 @@
+<FormatVersion=0x00010003>
+
+<Crc=111>
+<BlobLength=159770>
+<AsicVersion=0x004776A0>
+<ChangeList=512827>
+<PatchLevel=0>
+<PostPatchLevel=1>
+<CustomerVersion=None>
+<Name=./bin/SensorHub_A0>
+<Type=Application>
+<PatchAddress=0x00800141>
+<Blob=F1940300008000000E890041018000B9010100BF010100
+C5010100CB010100D10101000000000000000000000000
+0000000000B1030200B903020000000000050780001DBB
+0100C9030200190402003D8F0100498F01005D8F010069
+8F0100758F0100818F01008D8F0100998F0100A58F0100
+B18F0100D9030200E1030200C1B58100EDC00100FDC001
+0019C1010079E90100B161010011620100ADE10100591D
+010045FF0000E9030200D9D80100E9D801001D84010071
+B3010075B30100FDDB01005946010069460100E1950100
+F1030200F9C5010019C60100ADB8810000000000000000
+0000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000
+000000000072B60D494FF0E020C0F8081D0B4880F30888
+4FF0000080F31488BFF36F8FC046C0462FF4B9F32AF4D9
+F34FF002001BF431F400F005F8000000008000000E8900
+2AF4C9F3002801D000F008F80020C046C04600F097F82A
+F4D5F3000010B5074979441831064C7C44163404E00A68
+081D511888470146A142F8D110BDC8450200F445020000
+B587B04FF4B07000904FF4C07102914B48019000F5B071
+039100F5387070210590049168461EF4B7F707B000BD00
+0010B5444C0FF49EF5C4E90201207808B114F44EF7A078
+48B1022019F461F4282011F4AEF3292011F4ABF307E019
+F458F4282011F495F3292011F492F3607810B1052019F4
+2DF5BDE8104012F465B30000314830B1FF30020A120230
+4900201AF43BB1704738B512F453F200240546A80F0328
+08D1002C18BF032C04D10121204600F05EF806E0A4F128
+00022824BF204600F078F8641C322CE9D331BD00B583B0
+18F480F01BF4C2F3FFF7DCFF1C4882B00CC869460CC10C
+C80CC10CBC19491A4826F490F5022000F0F3F8BDE80740
+BFE780B514F447F514F447F5FFF779FFFFF7DDFF1BF41F
+F300F063F9FFF789FF10F45DF70E49884204D0E6210FF2
+380000F0D5F90B490120087000F055FA002002BD0CC591
+0070D79100D25002000000800068938900188F89006886
+8900A0764700A1D19100696E69745F6D61696E2E630038
+B50446322C0D4605D3224627210FF2A81000F0B6F96648
+50F8241040F20112114315B921F0020109E041F0020101
+2D0CBF0122002221F0040141EA820140F8241031BD0828
+16BF0B2802210021D7E7584AD2E900017047F8B50446F1
+940390038000322C0D4604D357210FF2501000F080F900
+F074F82A78DFF840C112B1012A07D02CE0DCE9002347F0
+01071043194303E0DCE9002300F05AF8CCE90001687848
+B1022803D01AD247F0060705E0012060F3420701E027F0
+0207A87807280ED8000127F0780100F070000843E97840
+EAC100297920F4C07040EAC11747E00020F2BDF8B50446
+322C0D4604D3A0210FF2CC0000F03EF900F032F8DFF8BC
+C095F800E0DCE90023BEF1000F03D0BEF1010F05D019E0
+47F001071043194301E000F016F8CCE90001687858B102
+2805D00BD247F0060727F4807719E0012060F34207F8E7
+27F00207F5E70020F2BD00007F087F0022EA000023EA01
+0170470000154E56F824700120002122462AF468B246F8
+24700120F2BD2DE9F0438146002400250027DFF8308058
+F82760F00706D5012000213A462AF453F204430D4369F3
+061648F827607F1C322FEDD30348C0E900450120BDE8F0
+8300015040C8CF890070617463685F6770696F2E630000
+000000B585B000F0BAF94FF42041384826F437F3012107
+2011F4BDF00121082011F4B9F001210B2011F4B5F00121
+252011F4B1F0062019F44CF3012019F421F30120049001
+232A200390012201200290012100200190012000904FF4
+A04000F016FA05B05DF804EB00201BF446B210B54FF47A
+7000F449F00FF2A0040FF280017E2322468F2013F476F0
+1A48006801F0FAFC802322460FF2E8018F2013F46BF0BD
+E81040002001F4CFB330B583B0114CFFF7A7FF04F50055
+C8352146284601F040FB2946204602F020FB022002904F
+F40050019004F1C80000905B22074B03A104F1900001F4
+3BF703B030BD00004170700088E8890040948900690580
+0025643A25640953746172742063687070417070546173
+6B0A00000000633A5C77735C626F645F34373736303831
+34395F3531323832375C637573746F6D6572735C676F6F
+676C655C503231466C61677461696C6D63755C64656C69
+766572795C53656E736F724875625F5032315C7372635C
+6875625F636F6E74726F6C6C65722E63000025643A2564
+09456E6420636870704170705461736B0A000000000000
+000000000000000072B600B50FF4E4F45DF804EB4FF000
+0011490FF4EBB472B600B50FF4D9F45DF804EB4FF00100
+0D490FF4E0B472B600B50FF4CEF45DF804EB4FF0020008
+490FF4D5B472B600B50FF4C3F45DF804EB4FF0FF300FF4
+CBB40000A1068000B7068000CD0680004848816861B971
+4611F0100F1CBF08B016E045490A6822F001020A60F194
+03200780001AB00FE0EFF309821EF0100F03D1A2F14002
+82EC108AA2F12802036882E8F84F83685A60FFF7A7DD81
+68B9B14A6892E8F84F036002F128021EF0100F01D1B2EC
+108A82F3098890693149324A884201DB904202DB13F47F
+4F51D070472E482F490968401A80F308884FF08071C161
+2C4981617FF0060E7047FFF74EDF01BC2046DFF8A0E000
+BDFFF7DCDE2748006823490968401A20F0070080F30888
+4FF000011948417081F3118862B600F020F8FEE703680C
+B44FF0000141704FF0000181F311881A491A4A0A60BFF3
+4F8FBFF36F8F4FF0800181F311880CBC03607047134913
+4A0A60BFF34F8FBFF36F8F70470F490F4A0A60BFF34F8F
+BFF36F8F70474FF0000181F31188704760D0910034EF00
+E0D1078000FD078000E00D8900C8E50F00FDBB0100A707
+80000000800004ED00E000000010C0F3C041002914BF4F
+F048614FF0C861C0F34532C004C00C02EB8010B1FBF0F0
+7047000030B585B00121002002F03AFD0121012002F036
+FD0121022002F032FD0121032002F02EFD0121042002F0
+2AFD14F46CF3840F05D0022C09D004D3032C10D016E001
+2004E002208DF80C0015E003208DF80C0000208DF81000
+6920ADF812000BE004218DF80C10FFF7B9FF049004E075
+210FF27400FFF7D8FE4FF0FF300290012001904FF40050
+164D009005F5105338334FF4C05205F6384103A822F493
+F421F499F3022002904FF44060019005F1380000905A22
+0B4B0FF24801284601F490F5032C0AD16946032011F478
+F000208DF8010069460320FFF75FFD05B030BD00002477
+9100A5050300696E69745F686F73745F696E7465726661
+63652E630000005472616E73706F72744C617965720000
+7FB5204C204E606000250120207425606174A274E37408
+981C4D2075099860750A98A0750B98A0612046FBF433F5
+2860E66004F5D2401C30A0600C9802F018FD2B68134883
+4205D3324698210FF27000FFF778FE4FF4006002900394
+4FF4807001904FF4C05304F5C0401C30009004F11C0204
+F5C0504FF490411C3002F034FD7FBD000098888A007085
+0600A0F891007185060000B585B00020049001232A2003
+90012201200290012100200190012000904FF4F040FFF7
+A3FF05B000BD00007076745F636F6E74726F6C6C65722E
+6370700000012100F435B100F452B1012101F4D8B401F4
+5EB501F4C0B502F05CBD02F065BD02F06BBD02F082BD02
+F0C2BD10B517F469F502460B464FF47A74A4FB020104FB
+031110BD30B5044683B0E06802900D4601956C23F19403
+B00A8000207ADFF8942B0FF2140100908F2012F4D7F500
+20E060257203B030BD25643A2564094368616E67696E67
+205258207472616E73706F72742073746174652066726F
+6D202568687520746F202568687520616674657220257A
+752062797465730A0000000038B50446002502E0E0606D
+1C491C95423CBFE068022811D2030008D10B78682B0AD0
+087868280CBF01200020ECE7012804BF0B78432BF4D140
+1CE5E7E068022807D1FFF797FFC4E9060101212046FFF7
+9DFF284632BD7CB504460E46E0680828154606D3002300
+22B121DFF8C80AFFF7A3FDE068C0F108018D4288BF0D46
+00192A463146303028F43BF5E06828180828E06033D120
+4600F07FFB30B100F00F01204600F077FC002125E0A08E
+08B9032121E0E26B12B902F031FD03E08118206C02F030
+FD80B9D720DFF8682ADFF8641D01900092D7238B2012F4
+40F50221204600F058FC002106E02064A18EE06B10FA81
+F0E06302212046FFF748FF284676BD70B504460E46E068
+A18E8842154606D300230022F221DFF81C0AFFF74DFDA0
+8EE168401A854288BF0546206C236A2A463146181828F4
+E4F4206AA18E28182062E06828188842E06003D1032120
+46FFF71DFF284670BDF0B5044685B0E06804280E461546
+07D3002300224FF48871DFF8C409FFF721FDE068C0F104
+018D4288BF0D4600192A463146383028F4B9F4E0682818
+0428E06040F0858004F13006707800F0F000302818BF40
+2877D0204600F0AEFADFF8807998B9B0880FF2F0010190
+4FF49473F07800903A468B2012F4C6F4204600F005F901
+21204600F0DBFB5DE07078F27800F0F001102919D100F0
+0F00019000924FF498733A460FF2D8018E2012F4ACF404
+F20C563046FFF7A2FE00222021204600F0B1FE3046FFF7
+98FE3DE094F82935022B08D1B0880FF2D4010092019040
+F239133A4617E020290CD100924FF49F733A460FF2EC01
+8E2012F486F4204600F024F921E0B1886BB90191009240
+F243133A460FF2F4018B2012F476F4204600F0B5F811E0
+049040F24B1330780390B0780290019200913A460FF2FC
+018F2012F463F4204600F01CF900212046FFF774FE2846
+05B0F0BD000025643A25640942616420636865636B7375
+6D2E207365713D25686875206C656E3D2568750A000000
+25643A2564095258205245534554207061636B65742073
+65713D25686875206572723D256868750A000000002564
+3A25640952582064697363617264656420696E20706572
+6D206661696C2E207365713D25686875206C65F1940340
+0E80006E3D2568750A000025643A256409525820524553
+45542D41434B207061636B65742E207365713D25686875
+0A0000000025643A256409525820646973636172646564
+20696E2072657365742E207365713D25686875206C656E
+3D2568750A000025643A256409525820676F6F64207061
+636B65742E206C656E3D2568752C207365713D25686875
+2C2061636B5365713D256868752C20666C6167733D3078
+256868782C20636F64653D3078256868780A000000007C
+B504460025207A002638B1022803D004D3032827D029E0
+A58EE668002D40D0E06BA84207D2002300224FF4BD71DF
+F82407FFF7D1FB206AB04207D20023002240F27B11DFF8
+0C07FFF7C6FBE06B401BE063206AE16B801B2062206C79
+B902F06FFB00201CE0A58E2E46D7E70023002240F27311
+DFF8DC06FFF7AEFB11E06A1802F060FB60B94FF4C570DF
+F8C826DFF8C4190190009203468B2012F46FF300E02064
+2046BDE87C4000217FE5012180F829150021A0F82A1500
+F5A7605EE510B50446FFF7F3FF04F1310104F110000A78
+42708978491C0170204600F0A7F9216C204601F0A2F820
+4600F01CF92046BDE81040A7E0F0B583B00446FFF74BFD
+DFF85026002304F1100528F4F4F3E86104F13106002730
+786870204600F087F9A08E00281FBFB078297888420527
+02D194F86800C8B13946204600F03CFA052F13D1A08EDF
+F810260FF23401029040F2332328780190B07800908B20
+12F40FF3204603B0BDE8F0404BE7A08E20B1204603B0BD
+E8F04022E003B0F0BD000025643A2564094F7574206F66
+206F72646572205258206469736361726465642E207365
+713D256868756578706563743D25686875206C656E3D25
+68750A000000F0B5044685B0207C401C04F13005207429
+78DFF88465C90710D5C0B2039040F24D23E8680FF26401
+02903246A8880190E87800908F2012F4C3F221E004F20C
+573846FFF7B8FCEA682969206801F0BAFD3846FFF7AEFC
+287E0FF29001049040F25F23207C03903246A8880290E8
+780190E86800908F2012F4A3F2204600F074F8204605B0
+BDE8F0400021B5E125643A2564095258207061636B6574
+20666F7220756E66696E69736865642064617461677261
+6D2E205365713D25686875206C656E3D2568752E204461
+74616772616D206C656E3D257A752E2053656E64696E67
+2041434B3D256868750A000025643A256409417070206C
+617965722070726F63657373656420646174616772616D
+2077697468206C656E3D257A752C20656E64F19403D011
+8000696E67207061636B6574207365713D256868752C20
+6C656E3D2568752E2053656E64696E672041434B3D2568
+6875202870726576696F75736C792073656E743D256868
+75290A000000210162C1630164704730B5044683B00822
+04F13001002002F004FAA28E236A216C9B1A591802F0FD
+F90546A06BA8420DD0A18EDFF8F8230090083102910195
+4FF424730FF214018B2012F405F2A06BA8420CBF012000
+2003B030BD25643A25640952782042414420636865636B
+73756D3A20666F6F7465723D307825782C2063616C633D
+307825782C206C656E3D257A750A0010B584B0818E0024
+40F2F34291420FDB04240291039440F2AA23017CDF4A01
+9190F833000FF2100100908B2012F4CAF1204604B010BD
+000025643A256409426164206865616465722E20736571
+3D25686875206578706563743D25686875206C656E3D25
+6875206572723D256868750A000000002DE9F041044604
+F1320586B0A07C2E780146B1424AD0401CC0B2B042DFF8
+08830AD00196009140F2BE2342460FF284018B2012F48D
+F139E004F14C074FF43273787F04EBC002126F05923A69
+039004924246387F0290019600918F200FF2800112F476
+F1A674386802280BD3401E019040F2CD2368780FF2E801
+009042468C2012F466F100203860797F386900F5806004
+EBC1013861096F884207D300203861F860204600F042F9
+00B9287606B0BDE8F081000025643A2564094F7574206F
+66206F726465722041434B3A206C6173743D2568687520
+72783D256868750A000025643A25640941434B20726563
+656976656420286C61737420726567697374657265643D
+256868752C2072656365697665643D25686875292E2050
+72696F722071756575652064657074683D256868752C20
+66726F6E7420646174616772616D3D2568687520617420
+6C6F633D257A75206F66206C656E3D257A750A00000000
+25643A256409536571202568687541434B207263762764
+20616674657220257A75726574780A000010B5044604F1
+4A0082B001220270417000914FF44073624A0FF214018F
+2012F4D3F004F21450BDE81C400221FFF7D6BA25643A25
+640963687070456E717565756554785061636B65742063
+616C6C65642077697468207061636B657420636F64653D
+3078256868780A000000682101704321417002207047D0
+F8F02011180832C0F8F020F43100F14802D3784B70D378
+03F0F003D370007C8870107008467047F0B583B0044604
+F1580604F1F605707C7168DFF8702704EBF19403601580
+00C00040F23B33006F471A307C0FF2440102900197E878
+00908F2012F479F0B7F5806F86BF01204FF48067002028
+70AF80707C7168AA8804EBC000406F091804F1F00000F0
+9AF97068A98810FA81F0306003B0F0BD25643A25640941
+6464696E67207061796C6F616420746F207365713D2568
+68752C2072656D61696E696E6742797465733D257A7520
+6F662070656E64696E6720646174616772616D733D2568
+68750A0010B5044684B02068821EA11D002002F013F803
+904FF4587320680FF6B8320190011D0398029100908F20
+DFF8981A12F41DF0042203A9204600F04DF904B010BD40
+420F00D821800030B5054605F1680485B020780FF67C32
+38B940F26E330FF260018B2012F402F027E06178029043
+1E05EBC100039340F27733006F019000918F200FF27401
+11F4F1F7607805EBC000406F01F0CDFF607805EBC00000
+214167607805EBC00001672078401E20706078401C6070
+00F00F006070207805B030BD25643A25640943616E206E
+6F74206465717565756520646174616772616D20626563
+6175736520717565756520697320656D7074790A000025
+643A256409446571756575696E672066726F6E74206461
+74616772616D207769746820696E6465783D256868752C
+206C656E3D257A752E2051756575652064657074683A20
+256868752D3E25640A0038B5044604F14A0502E02046FF
+F778FFA87F0028F9D1287031BD2DE9F043044604F20C58
+04F1490987B04046FFF773F904F14C0699F80110002500
+27307D00294AD0002848D101253575C4F8F07040F20E41
+04F1F407384627F414F73846FFF7B3FED4F8F0104018C4
+F8F0002046FFF7B1FE0746307F40B3A07CF87089F80000
+306805281AD394F82905B8B1042000904FF471730FF6F4
+120FF66C218B2011F441F74046FFF739F9072210212046
+00F048F94046FFF72FF9002508E02046FFF79DFE306840
+1C306001E089F8010004F1F000FFF7F1FE13E0227A0592
+40F2DE3399F800200492A27C0392327F0292019000918C
+200FF694120FF6302111F412F74046FFF70AF92DB3307F
+0FF680120FF69021069040F2E933B888059004F5A865F8
+780490B87803907878029038780190D4F8F00000908F20
+11F4F4F6D4F8F02004F1F401284601F0A7FF01001CBF28
+4600F01EFC204600F039F9050016D0A8780FF628120FF6
+9C21029040F2FA33A8880190287800908B2011F4D4F620
+68294607B0BDE8F043062201F0CEB94FE370B504460E46
+20681546281840F20F41884207D30023F19403F0188000
+002240F20A410FF6E000FEF7E7FE206800192A46314600
+1D27F484F620682818206070BD00F0F000102806D02028
+07D0302808D0402809D00BE00FF6542070470FF6542070
+470FF65C2070470FF66020704702A07047000040228000
+000000002DE9F04788B08046894617461D4600248DB90F
+F674050FF6442140F237432A468B2011F47DF600230022
+4FF487612846FEF7A4FE62E0062D08F1680603D3F02019
+EA000F11D04846FFF7BCFF31780FF63802491CC9B20391
+02950190CDF800904FF488630FF6142114E030780FF618
+020FF64021401CC0B2069040F24743B8880590F8780490
+B8780390787802903878019000958E2011F443F608F20C
+5A5046FFF737F830780146102909DB40F24D430FF2D472
+0FF654218B2011F431F61AE0727851FA82F150FA82F0CA
+1001EB12710911A0EB011080B208EBC000056747673078
+401C3070C0B2012803D149464046FFF732FD01245046FF
+F70DF8204608B0BDE8F08710B50446282104F1080027F4
+B7F504F13C000021002206C0202104F1480027F4ADF588
+2104F1680027F4A8F5FF2084F84900002084F8290510BD
+2DE9F047044604F20C5A884691465046FEF7E0FF256800
+2084F8290594F8600018B104F5A86001F0D2FE04F13C06
+306830B100203060706801F0B5FD0020706004F1740610
+2756F8040C20B1306801F0AAFD0020306008367F1EF4D1
+2046FFF7B2FF04F13100017861748078401C20745046FE
+F7B1FF4A464146204600F00BFB2846BDE8F04701F002B9
+2DE9F04F044604F20C5983B04846FEF79CFFFEF7ADFFD4
+F800C00025DCE918239942A84679D301D8904276D34FF0
+FF300146AE4625E0D26A07EB470302EBC30B9BF8102001
+2A10D1DBE90223002B08BF002A0AD08B4208D828BF8242
+05D210461946F2463E464FF001087F1C0CEB8E02BFB292
+6B138E9F42DDD30EF101025FFA82FE9CF834209645B8BF
+0027EEDBB8F1000F0FF22C670FD1DCE91801CDE9000140
+F2DF433A460FF6C0018B2011F454F5206801F0C3FE30E0
+B6B25FFA8AFA0196CDF800A040F2E6433A460FF6C4018B
+2011F442F5062001F01FFD05000AD140F2E94301930097
+3A460FF23C618B2011F433F512E00AF11000287006EB46
+0101206870206800EB8A00806BC06A00EBC100407CA870
+0620E870AE804846FEF717FF2846E7E0F8B504000D460F
+F2945606D10023002240F201513046FEF73BFD35B90023
+002240F202513046FEF733FD94F8280570B140F204573B
+4632460FF658018B2011F4F9F40023F19403801C800000
+2239463046FEF721FD40F2065332460FF668018F2011F4
+EBF42046FFF7DAFE04F20C50FEF7DAFE04F21450FEF7E2
+FE04F5A760FEF7DAFE2560012084F8280504F5A860BDE8
+F24001F037BDD82180002DE9F04F0D0083B0044616460F
+F2F84806D10023002240F231514046FEF7EEFC34B90023
+002240F232514046FEF7E6FC04F20C50FEF7ADFE207AC8
+B1FEF7BCFED4E90679DFF8B8230023BA1849EB03038B42
+0DD828BF82420AD24FF4A76342460FF2EC718B2011F49B
+F42046FFF7DAF804F20C50FEF78FFE207A0FF2F0710FF6
+0C0A0190009640F23E5342468F2011F487F4FEF791FEDF
+F86423002327F43CF5A0620027606A3018606240F25F59
+40F25E5B14E000905B46424651468B2011F46FF4002300
+2249464046FEF797FC00212046FEF77DFE04F20C50FEF7
+5CFEB74224D204F20C50FEF754FE207A28B1022810D009
+D3032813D0DCE7F21B79192046FEF7A0FEC719E6E7F21B
+79192046FEF7C4FEF7E7F21B79192046FEF713FFF1E7F2
+1B79192046FEF738FFEBE7207A20B9E068401E8041C00F
+00E0002003B0BDE8F08FF0B583B00C4690F8291500264F
+1EBF411546FF0F8DB90FF2AC340FF24C7140F27D532246
+8B2011F41AF40023002240F27E512046FEF741FC18E02F
+B92B4622460021FFF77CFD80B920780FF278320FF23871
+02900195009740F284538B2011F4FEF3204601F0DDFB00
+E00126304603B0F0BD70B50D46022D82B0044602D00F2D
+07D010E040F293530FF23C320FF2347105E040F297530F
+F22C320FF25C718F2011F4DDF311E00FF21C360FF28871
+009540F29C5332468B2011F4D1F30023002240F29D5130
+46FEF7F8FB05F00F012046BDE87C40FFF7DFBA2DE9F043
+87B00746FEF7C9FD044638680D46D0E9186897F84A0010
+B997F8290598B9D7E91401002902BF0028204629466E4A
+0023871841EB0309C84505D301D8BE4202D3861841EB03
+08371B68EB0509CDE90479CDE90245CDE9006840F2B353
+0FF28C220FF220718F2011F48CF34FF0FF300146884508
+BF864209D0454505D301D8B44202D30020002101E03846
+494607B0BDE8F08338B504460022102100F0CCF840F2C1
+530FF244220FF20C718F2011F469F304F214552046FFF7
+A1FF002908BF002803D12846FEF761FD0EE04FF0FF3291
+4208BF904203D12846FEF759FD04E002460B462846FEF7
+55FD0146204600F003F80028DFD131BDF8B504460D46E8
+070AD540F2D4530FF2E4120FF2CC618F2011F438F30020
+F2BDA80744BF2046FFF7ACFB002DF19403102080004ED1
+FEF739FDD4E91423801A9941002399422C4A01D890420B
+D340F2E1530FF2A8120FF2B4618B2011F41AF32046FFF7
+92FB94F8290598BBFEF71EFD04F5A662D2E90067801BB9
+41002399421E4A01D8904225D3B4F82A050FF26C12401C
+032811DA40F2E9530FF284618B2011F4F8F2B4F82A0540
+1CA4F82A05062210212046FFF7FDFC0CE040F2EE530FF2
+84618B2011F4E6F2022084F829052046FFF74EFB280C00
+0405D0290C090404F5A86001F0ACFB0120F2BD000050A9
+810040420F0000B4C40400E1F505002F685938B5012904
+4609D0009140F204630FF2EC020FF254618B2011F4BCF2
+A4F5A86404F20C552846FEF7AEFC5034FEF7BEFCC4E900
+01002020742846BDE83240FEF7A4BC084601F088BA2DE9
+F041044604F168000D460178002904BF40780028164610
+D00FF298080FF2206140F271673B4642468B2011F48EF2
+0023002239464046FEF7B6FA0A2001F065FA0746012038
+700020787078804FF4A060B8800120F880202D4FF47A70
+38810FF250000BD1024640F286630FF2F0518F2011F46B
+F22046FEF700FF07E002464FF4D1630FF2F4518F2011F4
+5FF2FEF769FC04F5A6620A23C2E9000105F0F00006F00F
+0101433A462046BDE8F041FFF7BDBB0000633A5C77735C
+626F645F3437373630383134395F3531323832375C6375
+73746F6D6572735C676F6F676C655C503231466C616774
+61696C6D63755C64656C69766572795C53656E736F7248
+75625F5032315C7372635C636870705C7472616E73706F
+72742E63000025643A2564094F4F4D2061742025733A25
+640A0025643A256409526573657474696E672061667465
+7220256420726574726965730A00000025643A25640944
+6F576F726B206E6F7468696E6720746F2073656E642E20
+6861735061636B6574733D25642C206C696E6B42757379
+3D25642C2070656E64696E673D256868752C2052782041
+434B3D256868752C205478207365713D256868752C2052
+582073746174653D256868750A0000000025643A256409
+54582D3E4C696E6B3A206C656E3D257A7520666C616773
+3D30782568687820636F64653D3078256868782061636B
+5365713D25686875207365713D25686875207061796C6F
+61644C656E3D2568752070656E64696E673D256868750A
+000025643A256409526573706F6E73652074696D656F75
+742048232568687520636D643D2568752049443D256868
+750A000028524553455429002852455345542D41434B29
+00284C4F4F502D524551290000F19403A0238000284C4F
+4F502D52455329000025643A256409456E717565756520
+74782077697468206C656E20300A0000000025643A2564
+09456E71756575652054583A20636F64653D3078256868
+782573206C656E3D257A752070656E64696E673D256868
+750A00000025643A256409456E71756575652054583A20
+6C656E3D257A752048232568687520747970653D307825
+6868782049443D25686875206572723D2568687520636D
+643D30782568782070656E64696E673D256868750A0000
+0025643A25640943616E6E6F7420656E71756575652054
+5820646174616772616D0A00000025643A25640954696D
+656F757420617420256C6C7520627574206E6F20636C69
+656E740A0000000025643A256409436C69656E743D2568
+687520636D643D2568752074696D6564206F75740A0000
+000025643A25640943485050207472616E73706F727420
+616C726561647920696E697469616C697A65640A000000
+25643A256409496E697469616C697A696E672043485050
+207472616E73706F72740A000025643A2564095061636B
+65742052582074696D656F75740A0000000025643A2564
+09525820257A752062797465733A2073746174653D2568
+68750A0025643A256409496E76616C6964205258207374
+61746520256868750A0000000025643A256409456E7175
+65756520646174616772616D206C656E20300A00000025
+643A256409526573657474696E673D25642E2044697363
+617264696E6720257A7520627974657320666F72204823
+256868750A0000000025643A256409417070206C617965
+7220656E7175657565696E6720434850505F5452414E53
+504F52545F4552524F525F4F4F4D0A0000000025643A25
+6409417070206C6179657220656E7175657565696E6720
+434850505F5452414E53504F52545F4552524F525F4150
+504C415945520A00000025643A25640941707020656E71
+75657565696E6720696E76616C6964206572723D256868
+750A000025643A2564094E657874446F576F726B3D256C
+6C752063757272656E7454696D653D256C6C752064656C
+74613D256C6C640A000025643A2564094348505020576F
+726B2054687265616420737461727465640A0025643A25
+64094348505020576F726B20546872656164207465726D
+696E617465640A000025643A25640941434B2074696D65
+6F75740A000025643A25640952455345542D41434B2074
+696D656F75743B207265747279696E670A000025643A25
+640952455345542D41434B20F194033027800074696D65
+6F75743B20676976696E672075700A0025643A25640941
+73796E632073656E64206661696C7572653A2025686875
+0A0025643A2564094E6F7420696E697420746F2073656E
+642072657365740A00000025643A25640953656E64696E
+672052455345542D41434B0A0000000025643A25640953
+656E64696E672052455345540A00000000FEF7A79A0121
+FFF72D9EFFF7179F30B50C4683B021780125012904D002
+2906D00F2908D01CE0214601F038F906E0214601F0E5F9
+02E0214601F08BFA68B9A0780FF200620FF2CC5102907F
+23A0880190207800908B2010F42FF7284603B030BD0025
+FAE700207047002070470020704770B584B00D78102D14
+464FF0FF3616DA280006D0012D06D0022D18BF0F2D04D0
+05E0012629E0022627E0062625E0009540F20F130FF29C
+520FF2FC511AE0497811F00F0118BF022903D007D30329
+05D009E0294600F068F8066B0EE0294600F078F8466B09
+E0009140F221130FF264520FF2EC518B2010F4E7F6B442
+0ED20296019400954FF495730FF248520FF2F0518B2010
+F4D9F6002004B070BD012004B070BD38B5044612F00F00
+0D4605D002281ED007D3032820D012E0204600F034F880
+6A32BD204600F088F8C07950B94FF4A4730FF200520FF2
+DC518B2010F4B4F6002032BD2946204600F033F8C06932
+BD204600F019F8C06A32BD204600F06DF8C07930B94FF4
+AC730FF2C8420FF2D451E3E72946204600F01CF8006A32
+BD00EB8100C068406A704738B504460D46217AA5F11000
+884207DB002300224FF4C7710FF29040FDF7AEFE04EB85
+0050F8340C32BD38B504460D1994F8341095F858008842
+07D30023002240F29F110FF26440FDF798FE95F8580004
+EB8000806B32BD38B504460D46217AA5F11000884207DB
+002300224FF4D8710FF23840FDF782FE04EB850050F820
+0C32BD38B504460D4694F83410A5F11000884207DB0023
+002240F2C1110FF20C40FDF76CFE281990F8580004EB80
+00C06C32BD12F00F0308BFFFF7CEBF00B5022B83B003D0
+06D3032B04D007E003B05DF804EBC1E703B05DF804EBD2
+E7019100924FF4F0730FF2C4320FF204518B2010F417F6
+002003B000BD70B50D4684B00446687810F00F00164605
+D0022807D00AD303280CD00FE02046FFF7ADFE0AE02046
+FFF7D6FE06E02046FFF7D0FE02E02046FFF7D0FEA0B9A8
+780FF270320FF2D441039002964FF40373687801902878
+00908B2010F4E5F5206804B0BDE87040A6E004B070BD2D
+E9F0430D4687B004466878F19403C02A80002978164600
+F00F0842462046FFF799FF07001ED1A8780FF224370FF2
+C441039002964FF40973687801903A46287800908B2010
+F4BDF520680F21FFF7C3F9384607B0BDE8F04300230022
+40F22721FDF7DDBD297842462046FFF7D7FE030014D1A8
+780FF2D8220FF2B0410390029640F22F23687801902878
+00908B2010F498F5206807B0BDE8F04359E03246294638
+4698475FEA000931D005964FF40F73A8880FF298270FF2
+A84104903A46A87803906878029028780190CDF800908B
+2010F477F5B8F1000F37D10621284601F07EF950B940F2
+4323019300973A460FF2BC418B2010F465F527E080F803
+900146206807B0BDE8F0430622FFF72BB9B8F1010F1AD1
+07F10C00FFF7F7FD387A0FF22C220FF29C4140F0040038
+724FF415738F2010F446F507F11400FFF7EBFD07F10C00
+07B0BDE8F043E1E507B0BDE8F0830F21FFF740B938B504
+460D46FF220121684626F4E2F4009A2946204600F001F8
+31BD76B504000D460FF2D41606D10023002240F26D2130
+46FDF749FD40F26F2332460FF288418F2010F413F59021
+204626F4BFF49DF8040084F86D0025604FF0FF30C4E918
+00204601F0C9FA2046BDE8764001F0A4B8F0B5160087B0
+04460D460FF27C170FD14FF426733A460FF250418B2010
+F4EEF40023002240F299213846FDF715FD1CE02878062E
+07D20190009640F29E233A460FF23C410EE0A988059140
+F2A523E97804913A46A978039169780291019000960FF2
+50418F2010F4C9F4324629462046FFF7A0FD88B1287828
+B932462946204601F0D0FA09E0102832462946204602DA
+FFF7A0FE01E0FFF7D3FE2068294607B0BDE8F040FFF701
+BA2DE9F04383B0044600250FF26C460FF2D00940F2D728
+11E00290009505F11000019043464A4631468F2010F493
+F41FB104EB8500006AB8476D1CEDB2207A854208DA2946
+2046FFF7F0FD00280746E3D00120E1E703B0BDE8F08310
+B590B00C46C17B0FF248420E91817B0D91417B0C91017B
+0B91C17A0A91817A0991417A0891017A0791C179069181
+7905914179049101790391C17802918178019141780091
+25210378204626F4F1F510B010BD000025643A25640948
+232568687520756E6B6E6F776E20726571756573742E20
+636D643D2523782C2049443D256868750A00633A5C7773
+5C626F645F3437373630383134395F3531323832375C63
+7573746F6D6572735C676F6F676C655C503231466C6167
+7461696C6D63755C64656C69766572795C53656E736F72
+4875625F5032315C7372F19403502E8000635C63687070
+5C6170702E630000000025643A256409496E76616C6964
+20707265646566696E65642068616E646C652025686875
+0A00000025643A256409496E76616C6964206D65737361
+676520747970652025640A000025643A25640944617461
+6772616D20746F6F2073686F72743A204823256868752C
+206C656E3D257A75203C20257A750A0000000025643A25
+64095278207365727669636520726573706F6E73652062
+757420636C69656E7420636C6F7365640A000000002564
+3A25640952782073657276696365206E6F746966696361
+74696F6E2062757420636C69656E7420636C6F7365640A
+0000000025643A256409556E6B6E6F776E20747970653D
+3078256868782028482325686875290A0025643A256409
+48232568687520756E646566696E6564206D7367207479
+70653D30782568687820286C656E3D257A752C2049443D
+25686875290A000025643A256409482325686875206D69
+7373696E672063747820286D73673D307825686878206C
+656E3D257A752C2049443D25686875290A0025643A2564
+0948232568687520756E737570706F72746564206D7367
+3D30782568687820286C656E3D257A752C2049443D2568
+6875290A0025643A256409525820646973706174636820
+6572723D30782568782048232568687520747970653D30
+78256868782049443D2568687520636D643D3078256878
+206C656E3D257A750A00000025643A2564094F4F4D2061
+742025733A25640A0025643A25640946696E6973686564
+206469737061746368696E672061207365727669636520
+726573706F6E73652E204E6F74696679696E6720612070
+6F74656E7469616C2073796E6368726F6E6F757320636C
+69656E740A0000000025643A25640941707020496E6974
+0A0025643A25640941707020727820772F206C656E2030
+0A000025643A256409417070206C617965722052582064
+6174616772616D20286C656E3D257A752920666F722048
+23256868750A00000025643A256409417070206C617965
+7220525820646174616772616D20286C656E3D257A7529
+20666F722048232568687520747970653D307825686878
+207472616E73616374696F6E2049443D25686875206572
+723D2568687520636F6D6D616E643D30782568780A0000
+000025643A256409536572766963652023256868752028
+4823256429207265736574206E6F74696669657220666F
+756E643D25640A00253032782530327825303278253032
+782D25303278253032F19403E0318000782D2530327825
+3032782D25303278253032782D25303278253032782530
+3278253032782530327825303278000000005248704752
+490028086812BF40F00100400840000860704770470000
+38B50446FFF7EEFF0025322C0AD2E10800EB810004F007
+01D0F8F0008900C84000F00F05444800781A2C04D01B2C
+08BF0509284632BD00F00F05FAE72DE9F0470446884691
+46FFF7CDFF00F1EC0A00200125322C38D2384801781A2C
+2CD01B2C08D101F00F0141EA0811B8F1010F04BF0025A8
+46314F01702046396888470646796820468847EFF31087
+72B60F213268814008FA00F08A4308401043B9F1000F30
+6003D0E1080AEB81014860002D204605D00EF449F304E0
+68F30301D5E70EF433F387F310880120BDE8F0870122B5
+E7F8B504460D46FFF785FFEC30184900221BE05FEAC67C
+05D54FF00F0C0CFA07FC4CEA03033F1DFFB27608F2D13B
+B100EB82070E687F689E433B4033430B60240A44EA0564
+521C091D2D0A002D08BF002C04D00023E6B20027002EE6
+E7F1BD0000007E4040E40F414068F59100588689000004
+414070B594B004464FF4C0500990002300200890079006
+9005900022012004900021A7200390A069029000200190
+00900AA8D6F404F1DDF4DEF00546DDF4E7F06168C91D40
+19C90800EBC1050AA832F4DCF0064600200490A07D0390
+E07C0290A07C0190607D0090237D627C217CA06900F0A9
+FF80190830441900F00AF808B104F6A844204614B070BD
+03490870704700000148007870470000E4CB9100F8E700
+00DDF410B07047000038B5FAF4AFF00FF2BC01294C9720
+10F423F1216E04F16400DDF442F005460FF2BC01972010
+F418F12968096928468847A06704F170012A68926C2846
+90471D491D48C8614FF41662BDE838401B4800F12401FE
+F7C59800003EB5154C04F51B75E9602A606B60A860089B
+079A069904F51170FAF429F209982066F9F481F0E968A8
+68FF2226F44EF16A68296804F13800FEF7A6D800200290
+3222E868084B0FF258010190A86800902046FEF7C9DF37
+BDF4F89100A4F8910045B2810088BB9100ADC20F004372
+656174652053797374656D204F626A656374730A000043
+72656174652047756C704D654368696E6F6F6B456E6769
+6E650A00466C61677461696C5461736B000000000121FD
+F7D39BFDF7F09B0121FEF7769F10B5044604F10800FFF7
+F2FF2046BDE81040FEF7F39F38B5044604F10800FFF7EA
+FF256910E038B5044606E004F10800FFF7E3FF2046FFF7
+B3D804F10800FFF7F1940370358000DAFF2569002DF1D0
+0020206104F10800FFF7D3FF284632BDF8B506461D464F
+F0FF301446854208BF844203D13046BDE8F240D8E706F1
+0800FFF7BDFF14F4DCF7074620462946144A002326F415
+F1C4190BE006F10800FFF7B0FF29463046FFF7A3D806F1
+0800FFF7A6FF14F4C5F7251A012DB8BF0125306918B914
+F4BDF7A042E7D334690020306106F10800FFF795FF2046
+F2BD0000000040420F0038B504460D4604F10800FFF786
+FF2069284320612046FEF7E7DF04F10800BDE832407CE7
+28F45EB528F4B7B629F4D9B530B4C043AAB10FF2300311
+F8014B84EA000505F00F0553F8255085EA101080EA2414
+04F00F0453F82440521E84EA1010EBD130BCC043704700
+0000006410B71DC8206E3BAC30D9269041DC76F4516B6B
+5861B24D3C7105502083B8ED44930FF0E8A3D6D68CB361
+CBB0C2649BD4D2D38678E20AA01CF2BDBDFFF7AABF38B5
+0C46A0F5A865200407D00023002240F27F210FF29010FC
+F7FCFF05F21450210CBDE834400904E8E738B53D4CE068
+30B90023002297210FF2E010FCF7EAFFE0684FF0FF324F
+F4807100F65C4001F013F80546012D06DA00232A469D21
+0FF2BC10FCF7D7FFE06800F65C412A4600F65C50FFF7ED
+DCE0684FF48031FFF7C0FFDEE730B5040083B006D10023
+0022A5210FF28810FCF7BEFF224DE86800283FD1012020
+60207101210C200DF495F701210D200DF491F701210E20
+0DF48DF701210F200DF489F7002028704FF44810686011
+20288110206881284600F061FF30B100230022B6210FF2
+3410FCF793FF4FF4006204F5586104F65C50FDF721DF02
+200290EC604FF48060019004F65C0000905A22054B0FF2
+7C1104F62400FEF740DE03B030BD88888A00E336800070
+B50C461546002600E08619AE4210D22946204600F067FF
+0028F6D510F1040F01D1022070BD10F1020F0CBF0320FF
+2070BD012070BD70B5C90382B0A0F5A86419D500F65C55
+2846FDF798DF060012D00020009069462846FDF7B4DF76
+1E012804DB024600992046FEF740FA2846FDF711DF002E
+ECD173BD70470000633A5C77735C626F645F3437373630
+383134395F3531323832375C637573746F6D6572735C67
+6F6F676C655C503231466C61677461696C6D63755C6465
+6C69766572795C53656E736F724875625F5032315C7372
+635C636870705C696E636C7564655C636870702F747261
+6E73706F72742E6800633A5C77735C626F645F34373736
+30383134395F3531323832375C637573746F6D6572735C
+676F6F676C655CF1940300398000503231466C61677461
+696C6D63755C64656C69766572795C53656E736F724875
+625F5032315C7372635C636870705C706C6174666F726D
+5C62636D5C42434D343737785C6C696E6B2E6300004C69
+6E6B20527800F0B583B04FF0FF32C0E91822002101E049
+1CC9B290F8342091421FDA002400EB810504E016461F46
+C0E91867641CAA6B138EA4B29C42EBD2D26A04EB440302
+EBC306327C012AF1D1D6E90223D0E918679F42E7D8E8D3
+9642E4D2E5E7D0E91823CDE900230FF27C010FF2100240
+F21E238F200FF453F603B0F0BD0000633A5C77735C626F
+645F3437373630383134395F3531323832375C63757374
+6F6D6572735C676F6F676C655C503231466C6167746169
+6C6D63755C64656C69766572795C53656E736F72487562
+5F5032315C7372635C636870705C636C69656E74732E63
+0000000025643A2564096E65787452657154696D656F75
+743D256C6C750A0000F0B50446164683B00D463046FFF7
+E6FD07000FD125200FF24C020FF234010190009225238B
+200FF4F9F520680221FEF7FFF90AE03246294625F4C2F5
+01207870324620683946FEF7BAF9012003B0F0BD25643A
+2564094F4F4D2061742025733A25640A00633A5C77735C
+626F645F3437373630383134395F3531323832375C6375
+73746F6D6572735C676F6F676C655C503231466C616774
+61696C6D63755C64656C69766572795C53656E736F7248
+75625F5032315C7372635C636870705C73657276696365
+735C6C6F6F706261636B2E63000010B514F419F502460B
+464FF47A74A4FB020104FB031110BD70B50546084684B0
+0E2100F09FF906000FF28C0412D1322001900094322322
+460FF268018B200FF483F5204604B0BDE8704000230022
+3321FCF7A8BDFFF7D4FFC6F80600C6F80A103923D6F806
+00D6F80A10CDE9020122460E2000908F200FF2B0010FF4
+65F52868314604B0BDE870400E22FEF72EB910B58B8801
+24012B02D1FFF7BEFF00E00024204610BD25643A256409
+4F4F4D2061742025733A25640A00633A5C77735C626F64
+5F3437373630383134395F3531323832375C637573746F
+6D6572735C676F6F676C655C503231466C61677461696C
+6D63755C64656C69766572795C53656E736F724875625F
+5032315C7372635C636870705C73657276696365735C74
+696D6573796E632E63000025643A256409636870705469
+6D6573796E6347657454696D652072657475726E696E67
+20257A752062797465732061742074696D653D256C6C75
+0A002DE9F043F19403903C8000044683B00846217A01EB
+C10291008D1D294600F0F3F8060014D13B2001903B230F
+F280040FF26801009422468B200FF4D7F4204603B0BDE8
+F043002300223C21FCF7FCBC0020F070814604F10C08B7
+1D08E058F8041B3846242225F493F409F101092437207A
+8145F3D320682A46314603B0BDE8F043FEF784B810B58A
+880124012A02D1FFF7BAFF00E00024204610BD25643A25
+64094F4F4D2061742025733A25640A00633A5C77735C62
+6F645F3437373630383134395F3531323832375C637573
+746F6D6572735C676F6F676C655C503231466C61677461
+696C6D63755C64656C69766572795C53656E736F724875
+625F5032315C7372635C636870705C7365727669636573
+5C646973636F766572792E630010B514F4DBF302460B46
+4FF47A74A4FB020104FB031110BD90F86D10890748BF00
+F081BF7047F0B5150093B004460F460FF2CC1605D10023
+00225A213046FCF773FC207A05280ADB00905E2332460F
+F218218B200FF43AF4002013B0F0BD04EB800008A9C560
+207A04EB800007622846FEF7AFFF207A296B0791722369
+8C0691324695F82110059195F820100491009008A90391
+05F11001029100F1100101918F200FF2EC110FF411F420
+7A411C21721030C0B213B0F0BD10B50446062C06D20023
+002279210FF23810FCF72DFC2046FFF7DCFB38B1002101
+700321417000218170C170818010BD38B50D46062D0446
+06D20023002288210FF20410FCF714FC2846FFF7C3FB05
+0007D02146062225F4AFF3012068700020E870284632BD
+30B5044683B00D46D4E90201002908BF00280FD1D4E900
+01002908BF002809D0CDE9000197230FF2B8020FF2B011
+8B200FF4BDF3FFF755FFC4E900010020C4E90200A87860
+7403B030BD2DE97043064686B0D6E90245FFF744FFC6E9
+0201D6E90089B9F1000F08BFB8F1000F0FF2740206D1CD
+E90001A3230FF28C118B201AE0002D08BF002C08D0CDE9
+0201CDE90001A7230FF294118C200DE0B0EB0804CDE902
+01CDE9000161EB0905CDE90445AD230FF2AC118F200FF4
+7AF306B0BDE8708370B50446084615461E46FFF7BEFF32
+46294620680068BDE87040FDF739BF00000000633A5C77
+735C626F645F3437373630383134395F3531323832375C
+637573746F6D6572735C676F6F676C655C503231466C61
+677461696C6D63755C64656C69766572795C53656E736F
+724875625F5032315C7372635C636870705C7365727669
+6365732E6300000025643A2564094D6178207365727669
+6365732072F19403204080006567697374657265643A20
+2320256868750A000025643A2564095265676973746572
+6564207365727669636520232025686875206F6E206861
+6E646C652025642077697468206E616D653D25732C2055
+5549443D25732C2076657273696F6E3D256868752E2568
+68752E2568752C206D696E5F6C656E3D257A75200A0000
+000025643A2564094475706C6963617465207265717565
+737420727820617420256C6C75206E730A000025643A25
+6409547820726573706F6E736520772F206E6F20726571
+20743D256C6C750A0025643A256409526573656E642072
+6573706F6E736520743D256C6C7520666F722072657175
+65737420617420743D256C6C750A0025643A2564095365
+6E64696E6720696E697469616C20726573706F6E736520
+617420743D256C6C7520666F7220726571756573742061
+7420743D256C6C7520285254543D256C6C75290A000010
+B514F4F7F102460B464FF47A74A4FB020104FB031110BD
+F2E70CB410B5ADF5027D04460A4684AB4FF4007101A826
+F423F41CB1022C13D009D31AE001A8009038230FF26402
+0FF250018B2019E001A800903B230FF250020FF23C018C
+2010E001A800903E230FF240020FF22C018E2007E001A8
+009042230FF22C020FF218018F200FF43FF20DF5027D10
+BC5DF80CFB0FF284014160704725643A25640950414C3A
+2025730A0000633A5C77735C626F645F34373736303831
+34395F3531323832375C637573746F6D6572735C676F6F
+676C655C503231466C61677461696C6D63755C64656C69
+766572795C53656E736F724875625F5032315C7372635C
+636870705C706C6174666F726D5C70616C5F6170692E63
+0000000000000185418000874180003136800035368000
+704700002DE9F04788B08946139E90F87D1014461D4609
+B900203CE000F10C074FF4C471FA6D0FF2E40A302033F4
+9EF6B9F1080F804603DB2D215046FCF7E4F90F2C03DB2E
+215046FCF7DEF9FA6D4FF42071312033F48AF6B8606020
+FA6D10FB04F1322033F482F6B8F1000F786011D0149906
+9105960195009023461299049140461199039110990291
+0821BA689FF4DDF73860386808B0BDE8F08730B5049900
+2409B148F27814069909B104F6481468254FF4B8714543
+41436F3501F27711ED0805EBD10145000935ED0801EB45
+0100EB500058256843C01D01EBD000C00000F5D5600019
+0BB100F6780012B100F5D850D830059900F5B47011B100
+F5A850C830079909B100F5B15030BD70617463685F676C
+70656F62F19403B04380006A666163742E637070000000
+10B582B0044601208DF80000002100208DF8010020460D
+F465F369462046FCF719F813BD80B50021ADF800106946
+FCF711F801BD10B5DFF84C4342F6540000590DF4DCF304
+F52051BDE8104014318020FCF7689D10B5DFF82C4304F5
+20511431022005E010B5C74C04F5205114310420FCF758
+DD2089BDE810400DF4BFB338B5044600210220FCF7E5DD
+802080F3118800BF00BFBB4DBC4A288901210DF43CF328
+890DF47BF36CB928890DF405F3012808D105F520511431
+0220FCF733DD28890DF49CF3002080F3118831BD10B500
+210420FCF7BFDD802080F3118800BF00BFA84CAA4A2089
+00210DF416F320890DF455F320890DF4E0F240B904F520
+5114310420FCF70FDD20890DF478F3002080F3118810BD
+80B500218020FCF79BDD9C480068BDE802400DF439B397
+4A01212DE9F843944C974E20890DF4EEF2208904F52055
+4C350DF42AF3A868934A00210DF4E3F215F441F3002707
+E0608900210DF4C1F229681020FCF7DDDC3846FFF787FF
+64212320FCF76EDD00275FEA000807D115F434F32320FC
+F73BDD804615F424F35FEA886005D56968BDE8F4434020
+FCF7C19C306A00F57A79FFF7B4FF608901210DF498F25F
+EA887005D464210220FCF749DD0028C9D05FEAC87004D4
+00210120FCF740DD98B12269E16820784FF0FF3310F4B0
+F2804620780FF4AAF42069296880450CBF08201020FCF7
+94DC09E0306AA9EB00018020FCF725DD10B16420FDF775
+DFA8680DF4F2F2FFF758FF608900210DF460F2306AA9EB
+00010129B8BF00210420FCF70FDD002897D120890DF4DE
+F2012792E700B54F4889B04168029100F1140200218DF8
+0610ADF804100692FF218DF80C104FF48051ADF81C10AD
+F8141000F58051143104910D210278012A42F6540208BF
+112111500121009106AB007804AA01A910F4FAF009B000
+BD10B584B020B10178012918BF002903D04FF0FF3004B0
+10BD334C2178042918BF6FF0010023D10EC80EC4FFF7BD
+FF0C3CE8B92089FFF7A8FE6089FFF793FE42F654000059
+FFF7A0FE022002904FF40060019004F500501430009004
+F52050284B0FF2A00150221430FDF7CADE002004B010BD
+38B50C461C490A78012A18BF002A02D06FF0060032BD08
+B1002C02D54FF0FF3032BDC8600C6142F64C0216488068
+505001F5205114310120FCF7EDDB4FF4FA611820FCF780
+DC050007D1002300224FF4CC710FF24C00FBF7D4FF2807
+4CBF20466FF0070032BD13460A4601460248007810F40B
+B20000F1940340478000005E8900114480002144800054
+86890060D09100F1438000E7448000436870704C696E6B
+5461736B00000000633A5C77735C626F645F3437373630
+383134395F3531323832375C637573746F6D6572735C67
+6F6F676C655C503231466C61677461696C6D63755C6465
+6C69766572795C53656E736F724875625F5032315C7372
+635C636870705C706C6174666F726D5C62636D5C42434D
+343737785C706C6174666F726D5F636870705F6C696E6B
+2E63000000002DE9F04104460D46AE1DA888971F05284D
+D8DFE800F003141E28344004F110084046FFF754FB2946
+204600F042F8044610B14046FFF770FB2046BDE8F08104
+F128084046FFF743FB2946204600F086F8EDE704F14008
+4046FFF739FB2946204600F0C9F8E3E704F158084046FF
+F72FFB3B4632462946204600F0EFF8D7E704F170084046
+FFF723FB3B4632462946204600F0F7F8CBE704F1880840
+46FFF717FB3B4632462946204600F0FCF8BFE70124C2E7
+F0B5054683B068790FF2A047002404280E460ED1F7233A
+460FF26C418B200EF4D4F600230022F8213846FBF7FCFE
+012438E02868AA68406852680FF2D461904770B9FE233A
+460FF2CC418B200EF4BDF600230022FF213846FBF7E5FE
+0C2421E040F203133A460FF2C8418E200EF4ADF6042068
+7106213046FFF7B5FA58B940F20B13019300973A460FF2
+C4418B200EF49CF6042406E00246062305F110012846FF
+F71CFB204603B0F0BDF0B5044683B0A0680FF2F4378068
+0D4680470026667140F227133A460FF298418E200EF47D
+F606212846FFF787FA60B94FF497700190034600973A46
+0FF264418B200EF46DF6042606E00246062304F1280120
+46FFF7EDFA304603B0F0BD10B504460FF29C3260790428
+08D0BDE8104040F243130FF25C418C200EF451B640F245
+130FF27C418E200EF44AF600206071A0688068BDE81040
+0047F0B50446084683B00A21FFF74AFA002506000FF250
+370BD140F25F13019300973A460FF2E4318B200EF42DF6
+042516E0A068C0688047C6F806000A21019100904FF4B3
+733A460FF240418F200EF41BF60A23324604F140012046
+FFF79DFA284603B0F0BD38B500250446092B104638BF02
+2509D3A368D0F80520D0F8011000781B69984700B9FF25
+284632BD38B50025052B044638BF022507D3D2F8011010
+78A2689269904700B9FF25284632BD7CB504460D460026
+0BB902261FE0A1681078096A884708B9FF2618E0062128
+46FFF7E8F960B90FF290220FF23031009240F2E1130193
+8B20F19403D04A80000EF4CEF5042606E00246062304F1
+88012046FFF74EFA304676BD1CB50620FFF7B5F9A8B940
+F2F9130FF254240FF2F4210193009422468B200EF4B2F5
+204602B0BDE81040002300224FF4FD71FBF7D6BD814B19
+79017006220621818001461868006802B0BDE81040FDF7
+6BB970B504460FF28840784E84B0D0E90023CDE9022330
+798DF808000D4696F869008DF80A00082102A8FFF792F9
+80B940F219230FF2E0140FF280210193009422468B200E
+F477F50023002240F21A2162E08471C5710246082306F1
+580160E030B583B0044601AA694600F0F5FA5F4D48B940
+F22F230FF29C120FF2FC218B200EF459F513E000992879
+08700320009948700020009988700099C8700720009988
+802868019A00990068FDF715F9A96849692046884703B0
+30BD70B504460FF2D8304A4E84B0D0E90023CDE9022330
+798DF808000D4696F881008DF80A00082102A8FFF736F9
+80B940F256230FF228140FF2C8110193009422468B200E
+F41BF50023002240F2572106E08471C5710246082306F1
+700104E02046FBF73AFD04B070BD3046FFF790F904B070
+BD30B583B0044602AA01A900F063FA2C4D60B995F88100
+0FF2D0020FF26421009040F26F238B200EF4F0F415E001
+9928790870032001994870019995F88100887000200199
+C8700820019988802868029A01990068FDF7AAF8A968C9
+692046884703B030BD38B504464FF0827000F097FC144D
+A86078B90FF270040FF24C214FF4237322468B200EF4C0
+F40023002240F28D2120460EE02C6029460FF280222046
+FFF760F8287150B90023002240F293210FF2380001B0BD
+E83040FBF7D4BC31BD0000A093890025643A256409474E
+5353207365727669636520616C7265616479206F70656E
+0A00000000633A5C77735C626F645F3437373630383134
+395F3531323832375C637573746F6D6572735C676F6F67
+6C655C503231466C61677461696C6D63755C64656C6976
+6572795C53656E736F724875625F5032315C7372635C63
+6870705C73657276696365735C676E73732E6300002564
+3A256409474E53532050414C206F70656E206661696C65
+640A0025643A256409474E53532073657276696365206F
+70656E65640A000025643A2564094F4F4D206174202573
+3A25640A0025643A256409474E53532073657276696365
+20636C6F7365640A000025643A256409474E5353207365
+727669636520726573657420627574207761736E277420
+6F70656E0A00000025643A256409474E53532073657276
+69F19403604E800063652072657365742E20436C6F7369
+6E670A000025643A25640963687070476E737353657276
+6963654765744361706162696C69746965732072657475
+726E696E6720307825782C20257A752062797465730A00
+25643A25640963687070476E73734C6F636174696F6E45
+76656E7446726F6D43687265206661696C656420284F4F
+4D3F290A000025643A25640963687070476E7373446174
+614576656E7446726F6D43687265206661696C65642028
+4F4F4D3F292E205472616E73616374696F6E204944203D
+20256868750A00000025643A256409474E53532050414C
+204150492076657273696F6E206E6F7420636F6D706174
+69626C65207769746820434850502E2043616E6E6F7420
+726567697374657220474E535320736572766963650A00
+003A6411A2505B4442AFDB418E3A74FAF4474E53530000
+0000000000000000000001000000AF498000F547800000
+00000006000000EB4A80003D4B80009B4B8000F54B8000
+674C800000000000030000000000000004000000407880
+013A307047D0E900230A604B60D0E902238A60CB600269
+0A6142694A6182698A61C269CA61026A0A62808C888401
+F126000021017041707047D0E900230A604B60D0E90223
+8A60CB60D0E904230A614B61D0E906238A61CB61026A41
+F8202F426A4A60826A8A60C26ACA60026B0A61828E8A82
+C28ECA82028F0A8300F13A0213788B765278CA76C06BC8
+6170472DE9F84304460D46002028709046607868701F46
+0621A81C25F4CCF405F1080104F10800FFF7A8FF089E30
+888044607880016886318810FA81F0874206D200230022
+5F210FF22010FBF70AFB688EE0B1318810FA81F0874217
+D30027B94609E0206B41464844FFF7A1FF7F1C08F14008
+09F1400960788742F2D33088698E2886308808183080BD
+E8F18300202886BDE8F183D0E900230A604B6000238268
+8A60C268CA6002690A6142694A6182698A61C269CA6102
+8C0A8401F1220213705370426A4A62826A8A62C06AC862
+7047F0B50D0083B00446164606D10023002282210FF284
+00FBF7BCFA36B90023002283210FF27400FBF7B4FA2046
+FFF739FF0746FEF760FA286060B13421ADF80410821D01
+A900913B46811D2046FFF771FF3760012003B0F0BD70B5
+0D000446164606D10023002295210FF23000FBF791FA36
+B90023002296210FF22000FBF789FA3620FEF738FA2860
+30B1811D2046FFF799FF36203060012070BD633A5C7773
+5C626F645F3437373630383134395F3531323832375C63
+F19403F05180007573746F6D6572735C676F6F676C655C
+503231466C61677461696C6D63755C64656C6976657279
+5C53656E736F724875625F5032315C7372635C63687070
+5C636F6D6D6F6E5C676E73735F636F6E766572742E6300
+0000002DE9FC410446312360780FF230420FF2EC31DFF8
+8C5301900FF2CC3000908F200EF402F2696800291CBF60
+7800281DD0C9683820884706463822214624F4C6F10020
+306369686078C968870138468847216B80463A4624F4B9
+F1C6F83080A96821B13046BDE8FC4109690847BDE8F381
+0FB42DE9F0412DED028B84B00FF2BC389DF878600FF240
+440FF2504101960094452342468F200EF4C7F1C14D6968
+00295CD0F0075AD5C968302088470646DDE90C012AF42D
+F0C6E900019FEDBA8B0EA806F10807D0E9062351EC180B
+23F4A0F023F4E4F138600EA8D0E9082351EC180B23F496
+F023F4DAF178600EA8C16A806A25F470F2B860DDE90E01
+AC4AAD4B23F4D1F225F467F2F8600EA8C168806825F461
+F238610EA8C16B806B25F45BF2786184231F2038834246
+0020B876F8761EA80FF2D031C068F8611EA8006938621E
+A840697862388B0290019600948F200EF46BF1A96811B1
+89683046884704B0BDEC028BBDE8F0015DF814FB10B58C
+4C82B06060A1600020F7F487F2A06808B1006880470FF2
+A4300FF2B4220FF2A831009093238F200EF448F1012016
+BD80B50FF2A0300FF298220FF28C31009098238F200EF4
+3AF100F0BAFC00F022FCF7F468F2774800214160816001
+BD00B583B007200190A6230FF278300FF260220FF28831
+00908F200EF420F1072003B000BD70B588B0040014BF54
+204620019003920E460FF278300FF234220FF29031644D
+00900296B0238F200EF407F1B6F57A7F38BF4FF47A76B4
+B10020029000964FF4C8700390019605208DF810000020
+8DF811005D480590002006900790684600F016FC064606
+E000F06AFC0646287808B9F7F481F2AA6852B12EB90021
+601E8041C043C00F01E00121002052689047701E8041C0
+0F08B070BD1CB504460FF228300FF2AC120FF23C310090
+0194D1238F200EF4C3F03F48416821B12046BDE81C4009
+69084713BD70B50C4686B0B4F57A7F054638BF4FF47A74
+45B13948049003940020059003A800F054FB01E000F091
+FB06462F48826852B12EB90021681E8041C043C00F01E0
+01210020D2689047002D14BF5420462001900294E9230F
+F2E0200FF22C120FF2FC2100908F200EF485F0701E8041
+C00F06B070BD38B504460FF2F4200FF208120FF2FC11F1
+940380558000194D0090F1238F200EF472F0696849B120
+6B09698847696821B12046BDE834400969084731BD1CB5
+040014BF542046200190F8230FF2D8200FF2C8020FF2F8
+2100908F200EF454F0074804703CB1806800281CBF8068
+002804D0094800E00020F7F4E4F1012016BD24D0890000
+000000D0126341B4C876BE495280009F1AFF3FB9528000
+1CB504460FF2BC200FF274020FF29C110090019440F215
+138F200EF427F0200E012814BF00200FF2B02016BD6272
+636D476E73734F6E4D65617344617461000025643A2564
+095B25735D204D6561737572656D656E74206461746120
+6576656E74203A206D6561737572656D656E745F636F75
+6E74203D20282564290A000000633A5C77735C626F645F
+3437373630383134395F3531323832375C637573746F6D
+6572735C676F6F676C655C503231466C61677461696C6D
+63755C64656C69766572795C53656E736F724875625F50
+32315C7372635C636870705C706C6174666F726D5C6263
+6D5C42434D343737785C73657276696365735C706C6174
+666F726D5F676E73732E63000000006272636D476E7373
+4F6E506F736974696F6E000025643A2564095B25735D20
+706F736974696F6E56616C696469747928307825303278
+290A0000000025643A2564095B25735D206576656E7428
+307825303878292C203078253034780A000000676E7373
+50616C4F70656E0025643A2564095B25735D0A00676E73
+7350616C436C6F736500000000676E737350616C476574
+4361706162696C6974696573000025643A2564095B2573
+5D203078253038780A0000676E737350616C436F6E7472
+6F6C4C6F636174696F6E53657373696F6E00000025643A
+2564095B25735D2025632C2025642C2025640A0000676E
+737350616C52656C656173654C6F636174696F6E457665
+6E740025643A2564095B25735D206576656E7428307825
+303878290A000000676E737350616C436F6E74726F6C4D
+6561737572656D656E7453657373696F6E000000002564
+3A2564095B25735D2025632C2025640A0000676E737350
+616C52656C656173654D6561737572656D656E74446174
+614576656E740000676E737350616C436F6E6669677572
+65506173736976654C6F636174696F6E4C697374656E65
+720025643A2564095B25735D2025630A00006368726550
+616C476E737347657441706900000000000401B3538000
+E55380001354800037548000CF548000FD548000715580
+00A755800038B504460D4604F12000F6F453F685EDF194
+0310598000000BE06B24F4CAF7C5E90201A06B24F4C5F7
+C5E904010020C5E9060094ED000B85ED080B94ED020B85
+ED0A0B206924F4B5F7C5E90C01606924F4B0F7C5E90E01
+A06924F4ABF7C5E91001606B00F00101C0F3401030B120
+6BDFF84424904238BF41F0020105F148000170616C4160
+A16C8160E16CC160216D0161616D416131BD2DE9F04104
+46DFF81C04DFF81C54ADF5327D8669300004BF28680028
+70D0E4B28DED580BADF8684100204FF6807843E001EBC0
+020DF5B07C537803F00F07062343439C444FF67F0EBCF8
+3CC00EEA0C0C4CEAC7170DF5B07C9C440DF5B07EACF83C
+708644177807F03F0C8EF80AC00DF5B07E17F0C00C6746
+18BF01279E4492F806C0BEF83CE00CF03F0C08EA0E0E4C
+EA87170DF5B07C9C4447EA0E07ACF83C700DF5B07C5788
+9C44401CACF83E7058AF9288DB19A3F84020A042B9D330
+00DFF86C7307D03868569058A984B000F01CF80FBCB047
+2D68280007D03868569058A984B000F011F80FBCA84722
+460DF5327DBDE8F04132230FF2503197200DF4F0B50DF5
+327DBDE8F08168464FF4B47223F4C9B500002DE9F0470F
+00AEB002D1562100F0C6F8DFF80893D7ED060A99ED000A
+97F83400DFF8FC82BA4CB8EE400AB4EE600A00F00106F1
+EE10FA48BF002609D4002E1CBF2068002804D0D8F80000
+401CC8F8000016A93846FFF702FF002E14BF5425462560
+69DFF8C0A20690DAF800000590D9F80000DFF8A4920490
+B86924F4C5F6CDE902010095DDE916230FF2E02197200D
+F49DF56569D9F800002DB9DAF800A05FEA0A0133D029E0
+216851B1A16831B1D8F800209142BF41FF43FF0F02E001
+2700E000272EB99DF8A01001F0FE018DF8A01047B11490
+16A984B06846602223F458F50FBCA847DAF800A05FEA0A
+001CBF61698A450BD057B1D9F80000149016A984B06846
+602223F444F50FBCD047A06828B1D8F80010814228BF00
+F0DAF82EB0BDE8F087000010B5040088B002D1DC2100F0
+35F80ECC7C480EC04FF47A72B1FBF2F1514340F80C1D72
+4802686AB90020029000914FF4C870039001910020ADF8
+100005900690079009E06B4690EC080B83EC080B8A4238
+BF114601910091012000F0AFF9684600F0C4F969466848
+91EC080B80EC080B002008B010BD00000FF2B410FAF72C
+BD80B5002000F09AF95E490020086020215D4823F4B9F4
+5548016811B9F7F426F701E000F0A3F9002002BD0000F0
+B58FB004460D46164668463821524F23F4A4F43A680FF2
+CC212B4697200DF4EDF4386888B17F6838000ED0F19403
+A05C800000208DF800008DF8015002A83146282223F4C0
+F4414801680C946846B8470FB0F0BD000030B5050091B0
+03D14FF49371FFF7B6FF374C0FF2A8120FF2B41195EC08
+0B84EC080BE06923680790A069069060690590607C0490
+207C0390E0680290A06801906068009097200DF4B1F460
+69002804BFA069002807D02E48F7F454F60FF2F8119720
+0DF4A3F460684FF47A71B0FBF1F1D8B101B901214FF47A
+704843606008A894EC080B80EC080B2048006838B11E48
+21680068814238BF08460990089008A800F026F9164900
+200860002011B030BD10B51548006810B9F7F49AF602E0
+134800F016F90A4CE269100003D00A4801680020904720
+21204623F418F40FF2941197200DF463F4002010BD0000
+A125260054F8910080F8910078F8910090F6910074F891
+007CF891005CBB910068BB9100A55A80005075626C6973
+68656420736174656C6C69746520696E666F2025642F25
+640A0070617463685F676E73735F6F6E636869702E6370
+700000004F6E476E73734669785374617475732054533A
+256620563A2563204573744572724D3A256620476E7373
+4163634D61736B3A256C75206D5F6F6E5F676E73735F70
+6F733A3078253038782C206D5F7265715F706172616D73
+2E676E73734F6E506F736974696F6E3A3078253038780A
+004272636D476E73735374617274000000257320726571
+20706172616D73203A20466978496E744D7320256C752C
+20527074496E744D7320256C752C204D6178466978436E
+7420256C752C204163634D61736B4D20256C752C205077
+724D6F64652025642C20526571547970652025642C2050
+6F73436220307825702C20536174537461744362203078
+25702C2053746F70436220307825700A0000004F6E476E
+737346697853746174757320726567697374657265640A
+004F6E476E737346697853746174757320756E72656769
+7374657265640A0000004F6E4D65617344617461203A20
+25642C2075634D6561737572656D656E74436F756E7420
+3A2025640A00000030B583B00446F6F40BF1806F0168CD
+6B2CB10021019100910223022204E00021019100910223
+00224FF0FF31A84737BDF0B504469BB020684FF47A71B0
+FBF1F525B952210FF2E400FAF768FB207C0027002608B9
+304E20E00528304902D10E462F4F1AE0022804D0012804
+BF627C002A03D10E4648F208070FE0032804D0012804BF
+627C012A03D10E4644F2083704E0042804BF0E4640F608
+37E0680FF2A401019000963B462A4696200DF4F1940330
+6080001FF3E068322838BF322004D3B0F5C87F88BF4FF4
+C870E060024617480FF2A80102601148036896200DF40A
+F3324639462846F7F4D3F1114D287898B9617C0FF2AC02
+8020012908BF4FF4C070009048F6A043642101A823F48F
+F401A8F7F450F5012028701BB0F0BD6086890008000080
+08FB00800880008090F691008CF6910070617463685F67
+6E73735F736572766963652E6370700000537461727447
+6E73735265717565737420256C7520256C7520256C7520
+5265714163634D61736B20256C752000000000476E7373
+4163634D61736B20256C75204D61784E756D4368616E6E
+656C7320256C750A002470676C69726D2C7265715F6272
+6561646372756D622C7076744F6E436869702C70657269
+6F645365632C25642C62617463684F7074696F6E2C2564
+00000000676C70655F6E6176737466696C7465722E6800
+002DE9F8432DED028B04468EB0A1602BF429F30546A069
+0FF2506810B9242100F069FA1020A0876FF000413020E0
+8704F586791420A4F8400004F582776E20A063A0688842
+00F0218204F567760020DFF8501530728D421CBFDFF848
+158D4210D0DFF844158D421CBFDFF840158D4208D0DFF8
+3C158D421CBFDFF838158D4240F0FF81A069DFF8301588
+4208D0DFF82C1588422CD0DFF82815884217D03AE02079
+02280AD14FF0E040DFF81815C4E90801DFF81405DFF814
+1529E0DFF81405DFF82C15C4E90801DFF80C051EE02079
+032802D0D22100F00EFADFF8FC04DFF8FC14C4E90801DF
+F8F804DFF8F8140FE02079032802D0D82100F0FDF9DFF8
+EC04DFF8EC14C4E90801DFF8E804DFF8E814C4E90A0102
+E0DE2100F0EDF901203070294620462DF4EBF030732946
+20462DF412F184F8C5030A2104F26A3001701921417000
+2181701021C1706C20A063A18700202EF4CEF510B93220
+E0870DE000202EF4C7F52FF49DF14069E08700202EF4C0
+F52FF496F1807F00B10A20A4F840000025012038700020
+04EBC00191F8441009B1012502E0401C1828F5DB04F2EB
+16307C08B93220E0870820A4F8400038220FF2D8414846
+23F486F1DFF83C0438649FEDC98ADFF838047860204621
+68896C8847032812BF0428DFF82804786000207864B0EE
+480A2168D1F8E01120468847DFF81404386587ED138A00
+2D04BF3078002800F03B8138220FF2B841484623F45AF1
+3078A8B39FEDB48A97ED100A30EE080A87ED100A204697
+ED010A30EE080A87ED010A2168896C8847032818BF0428
+07D120462FF42FF118B94FF4A57100F052F9F19403C063
+800097ED110A30EE080A87ED110A97ED120A30EE080A87
+ED120A97ED130A30EE080A87ED130A97ED140A30EE080A
+87ED140A0DF11100039005AB0DF1160002900DF115020D
+F11200019004A90DF11300009020462DF4FDF39DF81000
+002874D0032803DB4FF4AD7100F01DF99DF81000022805
+D1307830B140F25B1100F013F9307800283BD19DF81000
+97ED100ADFED830A9FED831A01280CBF30EE010A30EE20
+0A87ED100A97ED010A0CBF30EE010A30EE200A87ED010A
+97ED110A0CBF30EE010A30EE200A87ED110A97ED120A0C
+BF30EE010A30EE200A87ED120A97ED130A0CBF30EE010A
+30EE200A87ED130A97ED140A14BF30EE200A30EE010A23
+E09FEDAE0AD7ED100A70EE800AC7ED100AD7ED010A70EE
+800AC7ED010AD7ED110A70EE800AC7ED110AD7ED120A70
+EE800AC7ED120AD7ED130A70EE800AC7ED130AD7ED140A
+30EE800A87ED140A9DF815009FED9B8ADFED9B8A88B103
+2803DB40F2731100F0A1F89DF8150097ED010A01280CBF
+30EE280A30EE080A87ED010A9DF8140088B1032803DB40
+F2791100F08CF89DF8140097ED100A01280CBF30EE280A
+30EE080A87ED100A9FED878A9DF81300DFED868A88B103
+2803DB40F2811100F073F89DF8130097ED120A01280CBF
+30EE280A30EE080A87ED120A9DF8120088B1032803DB40
+F2871100F05EF89DF8120097ED130A01280CBF30EE280A
+30EE080A87ED130A9DF8110088B1032803DB40F28D1100
+F049F89DF8110097ED140A01280CBF30EE280A30EE080A
+87ED140A0020A07421E040F2092100F036F81CE0644864
+49C4E9080164486449C4E90A0138221220A087E0870020
+A4F84000012038700FF2482168487860684623F405F038
+226946484623F400F0E08F312803DB40F21F2100F011F8
+20462CF4BAF50EB0BDEC028BBDE8F18300009A99954114
+AE41C37B140BC20AD7CBC14046FAF71BB8000038B50D46
+044601212DF454F12168896F20468847002842D0297809
+B1212907DB42290EDB512903DB762927DB9A2936DA00F0
+98F802282CD000F094F805280FD127E0212901DB3429F2
+DB342927DB0FF2E41000EBC100A0F5D07090ED000B31BD
+00F080F8012802D19FED310B31BD00F079F8042806D19F
+ED300B31BD00F072F8072802D19FED2E0B31BD00F06BF8
+082802D19FED2D0B31BD9FED2D0B31BD9FED2F0B31BD11
+0000301100003311000034110000351100003711000038
+80BA8C0100F0490200751903AA969741ABAAAAEA8D737F
+416666663FDDDDDDA9EC51B89744989741F19403506780
+00E5174BCAB0757F418FC2F51645989741BF58F273B175
+7F410000E4411F85ABC00000ACC100001AC2D8A314C17B
+140B420AD7CB41333391418FC2414100FCF8DB1AAC9741
+0030C77C15F092413F219BE18F6D4C3F560691E929A261
+BFFA49C47AF49D47BF133680DA4F965F3FCF68A6D90ED6
+473FAE4719C1000000000000000028462DF4CDB5000070
+617463685F676C6D657372645F617369635F636F6E6669
+672E637070000000F628DCBE295C0F3F0AD7233E3D0AB7
+BF14AE07BF295C0F3F8FC2753D48E13ABFC3F5283FB81E
+05BE8FC2753D8FC2753F48E13ABF8FC2753FF628DCBE29
+5C0F3F0AD7233E3D0AB7BF14AE07BF295C0F3F8FC2753D
+48E13ABFC3F5283FB81E05BE8FC2753D8FC2753F48E13A
+BF8FC2753F0000304000003040333313400000A03F3333
+B33E333333BF9A99B9BF1F85EBBF3333F3BFCDCCCCBFCD
+CC8CBFCDCC0CBF3333B33ECDCC0CBFADF3606CD08062BF
+F365376DA55B5FBF8BE4AC01AAB559BFA62103A9AF0F54
+BF7D40F17A68D34CBFB3BA9DC9738741BF8FDF22CAF3ED
+28BF9A372BFBDE41243FB6D0DF956E5C403F85D3F46C65
+A84B3F2AEB04222E7A533F0FAEAE7A2820593FF47058D3
+22C65E3F2E79711F0F36623F10B532230822DFF8801ADF
+F8800ADFF8804A29F4CFF322460FF21D01002029F47EF4
+DFF8700AA7F415F42246BDE81040DFF8941A29F473B432
+230822DFF8581ADFF8480A29F42EB42DE9F0430D00D1B0
+044690461F4600F0A580291DD9F46CF700F0AEF8D9F4DA
+F700F0B0F80FF6882918B12DF4A1F300F099F8DFF8346A
+00203070707000F09CF800F0FEF89DF8000030B100F09B
+F818B12DF48EF300F086F870780028EED0002084F82000
+00F084F805F14C012046DAF417F200F0010080F001069D
+F8000030B100F080F818B12DF473F300F06BF8002EE8D1
+00F06DF841462046DAF42BF400F071F818B12DF464F300
+F05CF800F060F839462046DAF4C6F400F064F818B12DF4
+57F300F04FF800F057F800F05FF800F059F818B12DF44C
+F300F044F800F052F8B8B100210020D9F43BF50168896A
+884700F0D0FD03464FF4A0726946204600F03BFA30B100
+F03EF818B12DF431F300F029F895F84800C00713D5589F
+D4F80401391A00F025F82046DAF498F300F02AF818B12D
+F41DF300F015F839462046DAF445F602F06FFD00F017F8
+DAF47BF000F019F818B12DF40CF300F004F851B0BDE8F0
+8300006B464A46152131F409B200004FF4A0736A467047
+4FF4A0736A46294620467047152031F4F19403E06A8000
+E7B100002DE9F041054616461F46B8192DED028B401E88
+B082423ABF801A441C00240868079001F5F078D1E90C01
+21F4E9F50690D8E902239FED1D8B51EC180B21F46CF521
+F4DEF50590D8E9002351EC180B21F463F521F4D5F50490
+DFF86C08006821F405F6DFF86828DFF8683821F483F4CD
+E90201DFF86008006821F4EEF5DFF85828DFF8743821F4
+76F4CDE900012B460FF6A8022146304632F4ADF108B03A
+46BDEC028B31462846BDE8F04185E2000000000000E03F
+2DE9FF4F87B09818401E06900120DFF83818DFF814B8DF
+F8EC8708709BF80000002840F0CE800BF10800A7F4F3F2
+002608EBC60004F0BAFA761C322EF8DB00262FE00021BA
+F1000F02D19DF80020AA802C706F7001220FF6B803AA70
+1F68009711B100218DF80110761C01981AF80D10427807
+78F809CC1CA040C7F380178C1CA7400743D0094C1CA040
+C2F38012EB88384302FA01F108431843E88002A87DF4B5
+F3089890F84C00F6B2864280F08980089800EBC6004E30
+01904FF0000A007800F03F070198407800F00F04C0F301
+190198807900F03F0100F0C00040288DF8001004D08028
+08BF4FF0020A01E04FF0010A082C05DB40F2A5310FF2F0
+70F9F703FD394603A897F4DDF42046ADF48AF0014603AA
+02A8ADF485F203A881F472F302A90BF1080004F05DFA00
+2550B3A94606E003A87DF46AF309F101005FFA80F900F0
+F6F881452EDA08EBC9000590417804A897F4B7F418F839
+00ADF463F0014604AA03A8ADF45EF204A881F44BF302A9
+03A8E5F44BF50028DBD0059D03A87DF445F30FE000F0D4
+F8054602A90BF1080004F014FA08EBC505284604F04FFA
+4FEA0910E8802DB94FF470710FF24070F9F7ABFC052C08
+BFBAF1010F7FF442AF012143E7069E09980FF24C72B042
+3ABF301A411C00210998022332F4B2F00999441800F0A6
+F8401D062190FBF1F74FF00009FFB27FB1B4423ABF301B
+411C00219BF800000FF22072401C00903B46204632F497
+F0041901A80FF62C01102222F43EF49BF80000062110FB
+01FA0AE001AA09F1010952F82020204632F482F004190A
+F1010A00F075F85FFA8AFA824555D25FFA89F9B9F1060F
+50DA08EBCA05287808B9472317E0012808BF532313D002
+2808BF52230FD0032808BF51230BD0052808BF422307D0
+062808BF452303D007280CBF4E237823B4423ABF301B41
+1C002168780FF288620090204632F44AF00419A87870B1
+B5F90430012B0ADBB4423ABF301B411C00210FF2706220
+4632F439F00419EB880020B3F5004FF19403706E8000A8
+BF032007DAB3F5006FA8BF022002DA802BA8BF0120B442
+3ABF311B491C002198E7DFF84C15BDF928200020087009
+99079800F0FBF89BF80000401CC0B2B842A6BF00200121
+00218BF801108BF800000BB0BDE8F08F00000BF10800A7
+F47AB12DE9F0412DED028B044698469AB00D4616464046
+E9F4F4F407463868002878D00FF2E4510EA891EC0C0B80
+EC0C0B4146684604F0D7F9DDE90001002908BF00282DD0
+D7E90E21101A0021CDE90E01D7E91021DDE90201101A00
+21CDE91001D7E91421DDE90401101A0021CDE91201D7E9
+1621DDE90601101A0021CDE91401D7E91821DDE9080110
+1A0021CDE91601D7E91A21DDE90A01101A0021CDE91801
+0EA9204600F03BF8386BD7ED078A0C90B0EE408AF86A0B
+90B86A0A90786A0990386A089018EE900A23F489F4CDE9
+0601059438EE880A38690490B86803903868029010EE10
+0A23F47AF4CDE9000104230FF248523146284631F487F7
+32462946204600F064F8404604F073F94046E9F47AF401
+201AB0BDEC028BBDE8F0812DE9F84FD1E90045002D04BF
+002C9FED240A42D0D1E9068B4FF41666A6FB082306FB0B
+33D1E9088B41F2040600F03AF8D1E90A8B12EB0A027B41
+42F2747600F031F8D1E9048B12EB0A027B4140F2DC5600
+F028F812EB0A02D1E9028B7B416420A0FB086900FB0B99
+901943EB090128F469F206460F462046294628F463F200
+22DD4B21F4F3F102460B463046394621F437F423F4CDF3
+00EE100ABDE8F18F000000000000A6FB08A706FB0B7770
+4700005018002200F8012D491C02E011F8013B5A400B78
+002BF9D1884224BF2A2301F8013B13061B0F0A2BB4BF30
+333733884228BF01F8013B02F00F020A2AB4BF30323732
+884228BF01F8012B884224BF0D2201F8012B884224BF0A
+2201F8012B884224BF0020087070472DE9F94F81B00C46
+2DED0A8B94B01646BDF9A810C818451E1F9920220CA822
+F487F23088ADF81C0007A97088ADF81E00B088ADF82000
+F088ADF822003089ADF824007089ADF82600B089ADF828
+00F089ADF82A0000200B901F98D9F473F320980FF20442
+A8423ABF281A411C00211F9800900023209831F4ADF620
+9946181F9820220CA922F454F2A81B471C94F834000028
+00F0EA8094ED008B51EC180B21F0004141EC190BD4E902
+0121F0004141EC1A0B51EC190B21F493F203909FED80BB
+51EC1A0B21F48CF206909FED7FCB039821F4B2F200F008
+F953EC1B2B21F43AF141EC190B21F47CF2834621F4A5F2
+00F0FBF853EC1C2B21F42DF121F4F194030072800071F2
+0490069821F499F202460B4651EC1A0B21F4ABF253EC1B
+2B21F41DF141EC190B21F45FF2824621F488F200F0DEF8
+53EC1C2B21F410F121F454F2814651EC180B0022002321
+F4C7F094BF4E205320AE4234BF394600210290CDF800B0
+0498039B0FF21C320190304631F435F68619D4E9020100
+22002321F4AEF094BF45275727AE423ABFA81B00F10108
+9046206923F40CF3CDE904010297CDF80490CDF800A041
+46069B0FF2F0220FF20838304631F412F68719AF423ABF
+E81B461C0026A06923F4F3F2CDE90201606923F4EEF200
+F092F8C719AF423ABFE81B461C0026206A23F4E3F2CDE9
+0201E06923F4DEF200F082F8C7193846291A4E1C04F134
+01497869B1A84228BF0026A06A23F4CEF2CDE90201606A
+23F4C9F200F06DF806E0A84228BF00262BA2314631F4D5
+F5C6193046291A01F1010804F13401897879B1A84228BF
+4FF00008E06A23F4AFF2CDE900010FF26C224146304631
+F4BDF50FE0A84228BF4FF000081FA2414606E0AE4234BF
+394600210FF25422304631F4ACF5BDF9A82020991F98FF
+F788FE14B0BDEC0A8BBDE8F78F0000D5B1800044CA9100
+E0CB910010E889001D1F820088C991008DEDB5A0F7C6B0
+3E84C99100FCA9F1D208E889000000000000004E400000
+000080842E412C2C0000A9E80A004D62503FEACB910000
+408F402C00000002460B4651EC190B21F4BAB1CDE90001
+42463146384631F469B500004F4E434849505F4E4D4541
+5B305D5B25730000002450474C4F522C31302C5354412C
+25732C25342E33662C25342E33662C2568642C2568752C
+256C642C302C502C442C4C2C302C432C302C532C303030
+30303030302C302C302C522C30303030303030302C7470
+65662C302C256C752C4C432C2C2C44522C302C00007061
+7463685F676C6F6E636869705F6E6D65615F67656E6572
+61746F722E637070000000000B07002450474C4F522C25
+642C5341540000002C25642C256400002C256325303264
+2C00000000253032640000000000000000000000000000
+0000000000000000000000000000000000000000000000
+0000000000000000000000000000002450474C4F522C25
+642C5057522C6D412C252E31662C52462C25752C4F7363
+2C25752C4D6561732C25752C5554432C25732C474E5353
+6D412C252E31662C4350552C25752C434F502C25752C53
+7263682C25752C54726B2C25752C5270632C2575000000
+2450474C4F522C25642C5354542C25732C000000253032
+6C642530326C642E2530366C64F19403907580002C2563
+2C000000002530336C642530326C642E2530366C642C25
+632C252E31662C000000252E31662C252E31662C000025
+2E31662C3130302E3000002C2C2C2C2C2C2C2C2C2C2C2C
+0000000090A9810098A98100A0A98100A8A9810000F504
+505830704780B5DFF8200D03F07DFEBDE80840DFF8A42D
+DFF8A41D28F410B6000010B50446DFF8980D2060DFF898
+0D04F015F94DF64200005D10B12046D7F40AF44DF2B470
+00210059D1F434F704F559403030E0F439F704F5594008
+30D7F430F604F55840A830E1F4D5F204F558404830E1F4
+D8F204F55740A430E1F4D9F200F0D1FBE1F4DBF202F0C7
+FCE1F4E9F204F5EE40E830E1F4F2F204F5EE401830DDF4
+13F004F5EA409030CBF4B0F304F5CC40F830E1F4EBF204
+F5A2409830E1F4ECF201F06CF8E1F4EEF204F578503830
+A6F43DF404F50D50E1F401F304F11000E1F40DF3204610
+BD000038B50C464DF2B47115460858D1F400F72A462146
+BDE8384004F00EBE2DE9F843DFF8B08D04460D46C8F80C
+5000220021284640F42BF53222294604F1100090F4E3F6
+04F580461036296830468AF400F741F2984104F5584749
+5D17F8D40F01290DD1401C7970387029462046D2F454F4
+3878022802D12046D2F480F38CE000B978700020387020
+462168D1F8C8108847204600F087F800F051FBDEF4DFF2
+04F11000CDF4A5F020B904F557408030E0F43BF130468D
+F476F53046A6F461F090B146F62430005D08B900F084FB
+47F2E170005D08B900F0E4FB02F022FC18B1012130468D
+F46BF2204600F084F84DF278764AF69C29305990ED0C3B
+90ED0A2B90ED081B90ED060B2046D5F404F02946204600
+F040F9286859F80410884204D204F558414FF0FF300860
+286849F80400787810B92046D2F422F301212046D5F460
+F2207B58B1E1F472F3E2F480F1B0F57A7F04D92168D1F8
+E8102046884731592046D7F442F059F804102046D5F42F
+F228B9325929462046D7F473F028B122683159D2F8DC20
+204690472046D2F4D1F22168D1F89C10204688470020C8
+F80C00BDE8F183000038B5044604F5804510352846E1F4
+3AF2E8B100F0C1FA05F0F5FC0421284607F027F82846E1
+F432F204F50D50ACF402F50168896888474DF2B4700021
+0059D1F433F600F069FF0020DFF8641D487031BD2DE9F0
+41064606F55747B4B057F8780F06F50D5880B390F84800
+C0072CD502A8A3F46EF24046ACF4A5F605463868DFF834
+1D90ED060B8DED020B90ED080B8DED040B90ED0A0B8DED
+060B90ED0C0B8DED080B0020F1940320798000CDE90A01
+2846A4F411F104463868006891F446F400200090234601
+2202A92846A3F470F606F52A44A834204606F58045E1F4
+DEF1103500284FD12846A5F47CF700284AD0F86BDBF459
+F5E2F435F1C00743D42046E2F456F40746C8F431F60446
+411E09B23846C8F445F601460AA807F017FB002C2ED4CB
+F4A9F458B30122294616A88CF4F3F316A903A889F47DF7
+002212A906A897F4D2F6024603A9684697F4AFF0684696
+F4E6F651EC100B20F48AF601280FDBDFF8641D88420BDA
+31689DED102B896F9DED0E1B9DED0C0B9FED193B304688
+470AA8CBF43DF4404607F0FAFAE8B940468FF4E4F0E2F4
+E6F0400616D54021404688F4CAF688B1012128468DF439
+F101F097FD30B12CF44EF30FF22C02152130F451F2DFF8
+F41B002048704046B1F40CF218B1012128468DF423F134
+B0BDE8F081000000000070A74053696D756C6174696F6E
+200A000000002DE9F24F2DED068B04464DF27877ADF5A0
+6D3859006818B900F04EFC395908609FEDDA8B385901F0
+19FB00F0E1FD0028385919BF50F8481F41F0200150F848
+1F21F02001002501604DF2F9713859095D50F8482F61F3
+C7120021026001710DF59160A6F449F30DF58260A6F445
+F3E6A8A6F442F303460DF5826000900DF5916204F50D51
+C8A888F4BBF4BEA82CF40EF241F2904A682010FB05FBDD
+F818055AF800000BEB000808F150005CF4DDF4002800F0
+0C81385990F84C1000EBC10000F14E0601A85CF470F402
+4600F067F902A990F850008DF8080004F50D5089F4AEF2
+814600F05BF9C06C22F4AAF600F052F920F4C2F500F03F
+00B9F1000FB07100F0DD800828C0F2DA809DF805003070
+9DF80410062913D8DFE801F00412060F0A080D00002009
+E0022007E0062005E00521717007E0072000E003207070
+09E07178052906D19DF80510891F09293CBF2030307001
+A90DF5916003F0DAFA18B1707840F0100011E001A9E6A8
+03F0D1FA18B1707840F0200008E001A90DF5826003F0C7
+FA18B1707840F0300070709DF808008DF80C0008F15000
+2FF414F301466B4603AA2046D7F450F481469DF8000040
+281BD100F0F9F8DEF465F60146B4A807F0D9FA02A9B4A8
+40F41BF608B149F0400902F0EEF90146AAA807F0CCFA02
+A9AAA840F40EF608B149F080095FEA090007D002A9BEA8
+2DF4F0F4307849EA00003070B0799DF800100843B07170
+7800F03F00707002F0F5FA08F150015FF48FF378B17078
+40F040007070DFEDD20A98ED120AB4EE600AF1EE10FA44
+BF40F08000707004F5CC40F19403B07C8000F830E1F4B7
+F0014604A8E1F4B7F002A989F4EAF1B0B102A904A884F4
+ABF08146D9F8080022F4EAF500F092F820F402F58046D9
+F8040022F4E1F500F089F820F4F9F401E04FF000087080
+A6F80480385990F84C10491C80F84C10385990F84C0032
+2803D101A87CF445F30DE0322803DB40F26D1100F0E0FF
+01A87CF43BF36D1CEDB2322DFFF6E4AEBEA83FF4FDF239
+5981F84D00385900F148010A791AB10A6842F040020A60
+02AD006820F4F9F441EC100B04F580406A46294610308C
+F424F4DDE902239FED9B9B01F092FB41EC1A0BB0EE4A0A
+F0EE6A0A32F4C6F32FF4F6F4DFF8D44B206020F4D1F403
+F0A1F900F0E7FD00F02DF801F077FD80B2B0F57A7F02D1
+2068401C2060DDE9002351EC180B20F41CF401F068FD01
+212FF4A5F26060C8A8A6F469F5E6A8A6F466F50DF58260
+A6F462F50DF59160A6F45EF50DF5A06DBDEC068BBDE8F1
+8F000000000000E03F53EC182B20F4FAB3DDF818055AF8
+00005844704704F52A40A83070472DE9F043044604F50D
+598DB00D464846E1F416F0002838D000220021284659F4
+19F003F0D5F88046687970BB484684F403F129468AF45C
+F64DF6A007385DC8B14846E0F4FDF7A979E0F4FEF760B1
+2946684640F441F04846E0F4F2F76946A2F40FF1684679
+F4DEF2484691F477F7294691F424F401203855B8F1000F
+05D13046A5F4DCF408B100F003F80DB0BDE8F0832168D1
+F8C410204608470000F8B504460025072600274DF2B470
+0059DBF4A8F23946E0F4D1F728B16D1C022D01D30020F2
+BD3E467F1CFFB2072FECDB304689F457F2020009D004F5
+80409FED771B9FED780B002110308BF4B1F50120F2BD00
+0070B5044646F6243186B00120085500F09FFB00B304F5
+0D5528468EF453F6E1F455F610F0480F11D12846B3F4FD
+F1060009D06946DFF8700403F0B0FF18B1694630469FF4
+11F6284607F0CEF9204602F089FF00F00BF82046FFF7A8
+FF4DF2B47004210059D1F4A8F206B070BD2168D1F8CC10
+20460847000070B505460024A87968B105F11000C2F4B5
+F52EF445F430B9A868401C0B28A8601AD3012418E0A879
+AC60A8B105F5804610363046A5F44EF470B13046A5F450
+F447F2E4714959401ADFF8501D884203DB0021284602F0
+98FE204670BD799488320000000000408F402DE9F04381
+4609F5804510359DB02846A5F42CF4002420B12846D9F4
+29F5804600E0A04609F52A46A8363046DEF46AF4014668
+4607F0DEF869460AA82CF412F60AA82EF4F9F308284846
+BF4109F5D645D7F43CF0F1940340808000FF0F283540B1
+2846B4F492F00078012814BF0120002007433046E0F43D
+F71F28B641F643F60F8FBB4DF2787050F8090000281EBF
+90F8481001F0010111EA080F24D0416B006BDFF8A83501
+2220F4C8F11CD247F2E07010F80900B8B9DFF8840CDFF8
+843CC1688068002220F495F10DD82846C0F41DF0007809
+2807D02846B4F457F0007803281CBF002E012420461DB0
+BDE8F083FCA9F1D24D62503F00000000000000002DE9F0
+41044604F5D640ADF5047D2830B4F43CF004F558450078
+012818BF002015F8D71F002900F0FA80E978002940F0F6
+804AF69021095D014214D0DFF8006C306910B900F0FCF8
+30612046D6F4C2F718B1012068700020A87047F2E17000
+5D10B90120E870E0E000F0EAF83169401A41F289318842
+F6D301A82BF4DBF606210BA82BF4EFF600F0D7F804210B
+A82BF4E9F600F0D1F8D6E9020104F55747B0370122DFF8
+A43B20F425F100F2808066A8A5F4E6F748A8A5F4E3F72A
+A8A5F4E0F7024666A8009048AB04F50D510CA888F45BF1
+0CA8A6F476F305212AA8A6F408F1B3F4D2F088B1052148
+A8A6F401F1B3F4CBF050B1052166A8A6F4FAF0B3F4C4F0
+00F0010080F0010801E04FF0010803212AA8A6F4EDF0B3
+F4B7F088B1032148A8A6F4E6F0B3F4B0F050B1032166A8
+A6F4DFF0B3F4A9F000F0010080F0010000E0012050EA08
+0005D002210BA82BF48AF600F072F84DF6DC00015B1020
+2FF422F04DF6A4010853D7F461F7A8B138680068D0F800
+C0DCF848C0022302220121E04738680068D0F800C0DCF8
+44C0052305220121E047012030700120E8702AA8A6F411
+F348A8A6F40EF366A8A6F40BF37868DBF4C2F0A5F40AF0
+014631A82BF440F604F55845E0350146284652F4B7F701
+A90BA852F489F70BA928462EF4ADF731A90BA82FF491F3
+04F5EE44E8340EE00BA902F031F96946284640F4CAF218
+B169462046E0F4DFF50BA82FF48CF30BA82FF48BF30028
+EBD02046E0F4D8F505E020B9E87810B1204600F00FF80D
+F5047DBDE8F081000030D089000BA901A852F490B704F1
+1000ABF4D0B4F8B50646DFF8F049002006F557452061B0
+3506F5584702F0DFFCA4F4B3F7014606F55840E03052F4
+65F7002007F8D80F3046D6F4ABF608B10020787006F5EE
+40E830E0F49FF5B8884DF6A40188530020B870207888B1
+286800680668B66C012301220121B0472868006805686D
+6C052303220121A84700202070F1BDE0CB910029DB8100
+3CF600009CC89100F0B583B004460020CDE9000004F52A
+4601F008FE6A46DFF8F19403D08380002C1DC2F473F620
+46FFF7D4FD8F360746707800284DF2B07538D1307818B1
+2046FFF7FCFD00B98FB301207070285900281CBF006800
+284DD00268D2F8B02001219047D7F47DF6002844D04DF6
+D700005D00283FD14DF640064FF47A71305B90FBF1F228
+5900680768BF6CD3B2D2B20121B847305BB0F5FA6F2CDD
+2859006805686D6C052305220121A84723E0707808B320
+46D2F4DDF387F0010108421AD0002070702046FFF75AFF
+285900281CBF006800280FD00268D2F8B02000219047D7
+F43FF638B1285900680568AD6C012301220121A8472046
+FFF71DFEF7BD8CC991002DE9F0468246BDB00E46144699
+4601F049F850B12BF400F631680FF2B002019100944B46
+15212FF4FFF430680027451CB9F1040FEDB208D10F2D43
+DBA5F1260009280DD2203D0127EDB25046D5F4E2F70AF5
+0D50A6F4CAF15FEA000A0BD131E0042102A82BF44AF431
+689DF8080051318842EAD226E09FB119A831468C2221F4
+81F0681E19904B46224619A901A895F427F001464FF0FF
+300090034600220BE04B462246314601A895F41AF04FF0
+FF3100910B46002201465046A3F4ABF501A8ABF4A0F63D
+B0BDE8F08600005365744C746F45706820476E73732825
+7529204770735765656B20282575292053617449642825
+7529200A0010B52DED088B02F0BDFD86B000F04CF8B0EE
+41AAF0EE61AAB0EE42BAF0EE62BAB0EE438AF0EE638A04
+D153EC1A2B1FF4E9F622D000F03EF8F8B100F027F86846
+88F48AF351EC180B00F07EFD38BF9FED528B04F52A4003
+22B0EE480AF0EE680A6946A830DEF4A0F0B0EE483AF0EE
+683A00F00CF82046D4F4E5F006B0BDEC088B10BD00007C
+93890000005940B0EE4B2AF0EE6B2AB0EE4A1AF0EE6A1A
+B0EE490AF0EE690A7047000053EC192B002000211FF4A8
+B604F580401030A5F4F9B000002DE9F0470446BCB00F46
+91461846ABF4A1F307281CBF3968FF2982463FD000264D
+1C0428EDB208D10F2D38DBA5F12600092810D2203D0126
+EDB204F50D58AEB101A839468C2220F4C1F7681E019024
+AB4A4601A90DE0042168462BF473F339689DF800005131
+8842E7D218E024AB4A463946504691F4FEF505000CD051
+46404687F45CF238B15146404687F457F2294602681269
+904747F2E271012008553CB0BDE8F08710B500F5804410
+342046A5F4A5F0B0F57A7F0CD22046E0F4C9F3012803D1
+0521204606F0DDF8DFF8641D0020487010BD80F4030000
+0000000000794038B5044600F01EF8A5F488F0B0F57A7F
+17D204F50D552846F194036087800087F422F62846ABF4
+A3F528B12846ABF49FF50168896888474DF63001002008
+5547F2E471085100F005F831BD04F580401030704704F5
+EE40002100F8E11F4170704700002DE9FE4F2DED068B83
+4686B0DFF88C0D02F0B8FD0BF5804042F6E06200211030
+8BF470F0039000249FED618B9FED629B0C9841F2904108
+58682101FB040505F1500A9AF800008DF8080002A85BF4
+70F6002800F09B800D9A02EB841200200021C2E9000181
+46039818B1DFF82C0DDFF8A81DCDE9040104AA2946DFF8
+200D02F0CDFDB0EE40AAF0EE60AA53EC1A2BFFF70FFF05
+D05146DFF8040D02F0D9FE81460D9853EC1A2B00EB8418
+00F027FE08F1080626F469F5C6E9000105F130074A4638
+693062291D584600F084F8F0852A1D5146584600F0E4F8
+B08502462946584600F036F9C6E9020101220023CDE900
+23386822F409F000F03BFA26F445F5DDE900232EF423F5
+4FF0FF3200232EF4DEF4C6E9040197ED050AB1EE400A00
+F024FA00F0F0FD21F4A8F7B061B86921F4ECF700F0E8FD
+21F4A0F7F061DFED210A97ED070A2EF41DF5DFED200A2E
+F4D3F40020B06286ED090A08F1380308F13A0251465846
+00F04BF89AF8040003280CBF0120002088F83B00641C50
+462BF4CBF501F061FB322CC8F83C00FFF452AF0E980470
+0C9800681FF40AF700F018F826F4F4F4189AC2E9000106
+B0BDEC068BBDE8F78F0000004A78DEB141000000008084
+2E410000000084C9910000007C4253EC192B1FF470B538
+B50846144681680025CA040AD50125490648BF05250821
+2EF4F2F100B90CB945F00205284632BD2DE9F04180460D
+4682B016461C46284662F4DAF0074628788DF800003946
+68462BF422F2411C062F218035D8DFE807F00434062024
+2F310001202BE0032131705D30208008F50D50B2F4A4F4
+40B39DF80010342905DB422903DA9DF900103B3901E06F
+F0070149B206F09EFDC0B10CE004213170C13008E05130
+C0B2801F0521092831700CD220882030208008E0062000
+E00720307003E040F22E4100F054F9BDE8F38170B51646
+0024307A80070D460BD5284659F426F430B128462EF4E8
+F310B94FF4806400E00124B068410748BF44F020040007
+08D5284667F40BF0002814BF44F4807444F00204307AC0
+061BD5284661F4E3F110B144F0400414E0284666F4F8F7
+10B144F400740DE0284659F4F9F338B1307A800654BF44
+F4006444F4805401E044F00404307A800608D5284661F4
+C4F1002814BF44F0800444F00804B068C10603D4800658
+BF44F010042046F19403F08A800070BD00002DE9F8430E
+46174600F50D5083F4AAF2012206F150018FF4DDF000F0
+FDF84FF09442DFF8943D1FF4E7F6D6E906231FF46BF500
+F0F5F826F4FFF304460D4606F150002EF47BF3814606F1
+500062F412F0062807F0020800F2B580DFE800F004B315
+0439770400380772D4780706D52046294600F0B5F800F0
+ADF877E0B8F1000F59D02046294644E038060ED5204629
+46DFF8282D44F6946320F42CF6DFF81C2DA2FB006744F6
+946360E0780665D4B8F1000F02D0204629462BE0B8063B
+D520462946DFF8FC2C00F091F8DFF8F42C72E038073DD4
+780709D5B9F1020F2046294658D000F07DF800F075F83F
+E0B80508D520462946DFF8CC2C00F078F8DFF8C42C59E0
+B8F1000F0BD0B9F1020F2046294615D0DFF8B42C00F069
+F8DFF8AC2C4AE0F80508D520462946DFF8A02C00F05EF8
+DFF8982C3FE0F80748D520462946DFF8902C00F053F8DF
+F8882C34E0380712D520462946DFF87C2CDFF87C3C20F4
+CAF5DFF8702CDFF8703CA2FB006702FB017703FB007723
+E0F80408D520462946DFF85C2C00F033F8DFF8542C14E0
+380508D520462946DFF8482C00F028F8DFF8402C09E078
+0512D520462946DFF85C2C00F01DF8DFF8542CA2FB0067
+02FB0177A41BBD4103E040F2F24100F014F820462946BD
+E8F483DFF8342CA2FB006701237047DFF8282C012320F4
+85B50000002320F481B500000FF20400F7F7D8BC706174
+63685F67756C705F6D6963726F5F6E61762E6370700000
+000010EE100A21F4CCB50022DFF8EC3B1FF49DB30000C1
+27090010D089000000364000003B402DE9F84F2DED028B
+ADF6086D044604F580400D46103004F55746A4F485F578
+3638B9306800F0B8F93068816C21F0200181640AA895ED
+0A2B95ED081B95ED060B87F4C6F704F52A4000F1A80948
+46E0F4B3F0014640F6A8506844602220F452F404F5D640
+00F128084846DFF4B9F7032834D104F5584748373846E0
+F4A1F068B300F09AF90078042813D000F095F900780528
+0ED000F090F90078062809D000F08BF90078072804D000
+F086F90078082802D13846E0F488F0D5E90C0100F080F9
+0CD205F130000090019505F1280305F1200205F1180138
+46DEF48EF70020059004F50D573846B0F421F005F5F871
+00918246D5E90A0121F4F9F40099009101EE100AD5E908
+01B0EE418A21F4EFF40099009100EE900AD5E90601B0EE
+481AB0EE608AF0EE418A21F4E1F400EE100A0DF1140B00
+9904F5584053465A46B0EE681AF0EE480AA830DFF475F0
+00F035F90146F19403808E800004F55940097808300129
+03D12946D6F41DF201E0D6F40EF229462046D3F4D6F122
+68D2F8E0202946204690474DF6A20095ED0C8B005B1FF4
+4BF402460B4651EC180B1FF4ADF20FD30022DFF80C3A1F
+F4A7F20DD24846E1F415F1042808DA4846DFF416F70228
+03D1A86C40F0030002E0A86C80088000A86400F0ECF84F
+F0000838B100F0E7F800F0E9F806A8B2F4B0F280460221
+00F0DFF848B1022100F0DBF800F0DCF806A8B2F4A3F258
+FA80F8B8F1090F0BD33846ABF483F3A2F44BF528B13846
+83F487F0A4F487F400E000208DF8080004F11000CAF441
+F22DF463F4ADF80A0004F110008FF4F7F64AF690208DED
+030A005DDFF864798DF8100029684DF804CD0DF540605D
+F804CBD0ED820A4DF804CD90ED810A5DF804CB204602F0
+2CF84DF804CD0DF5406080ED810A48465DF804CBD8F44B
+F5014640F6E8406844C1F419F2C1F48DF140F6E84087ED
+000A6844C1F48AF140F6E84087ED010A6844C3F48DF0FF
+F793FEDFF8F828DFF81C391FF433F221F413F4B860DFF4
+84F740F6A8516944009104F5EE43B03302AA2946E0F4E5
+F12268D2F8D02029462046904700208DF80500DFF46EF7
+0DF105010091A31D0022294606F0D2FC9DF80500F0B170
+6802681268294690471AA84FF4486120F4BFF210A82821
+20F4BBF200208DF8040010A8009001ABF9681AAA2046FF
+F79AFB9DF8041010AA1AA8FCF7FCFD04F5EE401830DBF4
+53F34DF642010120085529462268D2F8D820204690479D
+ED0A0B85ED060B29469DED0C0B85ED080B20469DED0E0B
+85ED0A0B2268D2F8E42090470DF6086D01F093B9000002
+68011D2046D0F423B700000021384686F464B5014606A8
+0A68D2F88C2010474046BFF401B000000022DFF8983E1F
+F493B1000018D089002DE9F845044604F52A402DED048B
+00F1890AADF5826D9AF8020000281FBF04F55746783670
+6B00280D4600F0AE814FF4D67299A968465EF47BF10222
+00215EF45FF30122012100F0BAF90822032100F0B6F9A8
+6CC0F3400100F0BAF9A86CC0F3800100F0B5F995F84800
+00F0010100F0AFF9A86CC0F3C00100F0AAF9A86CC0F340
+1100F0A5F9A86CC0F3001100F0A0F904F5EE4000F1C408
+012298F8100000F0010100F08CF99AF80000800705D530
+68806C0122C0F3801101E00122002100F07EF9A86CC0F3
+C01100F082F9A86CC0F3402100F07DF9A86CC0F3002100
+F078F9D5E90C011FF47EF281B20A2200F067F929682022
+00F063F905F5F8779FEDD18B386821F453F300F04FF91F
+F46BF200F0F19403109280004FF9786821F44AF300F046
+F91FF462F200F046F9B868DFF8B47621F43FF300F03BF9
+1FF457F200F03BF995F84800C00725D5D5E906239FEDC1
+9B00F029F91FF449F200F037F9D5E9082300F021F91FF4
+41F200F02FF9A86CC0F3400078B1D5E90A011FF437F200
+F01BF997ED000ABDEEC00A10EE101A102289B200F018F9
+A86CC0F3001090B1D5E90E2300F0F9FA1FF421F200F005
+F9786821F400F300F0FCF81FF418F281B2102200F001F9
+A86CC0F3C00090B1D5E9102300F0E2FA1FF40AF200F0EE
+F8B86821F4E9F200F0E5F81FF401F281B2102200F0EAF8
+D8F8000021F4DDF200F0D9F81FF4F5F100F0D9F8D8F808
+0021F4D3F200F0CFF81FF4EBF100F0CFF8D8F80C0021F4
+C9F20022DFF87C3C1FF49AF01FF4DEF100F0C2F8D8F804
+0021F4BCF200F0B8F81FF4D4F100F0C2F8A86CC0F34010
+00283FD02A6804F580410123103110A88AF421F710A90C
+A888F4B7F20CA909A896F467F10A9FDFF8340C97FBF0F8
+0998C0EBC00008EB000409A8A5F4F0F453EC102BDFF814
+1CDFF8140C00FB187800201FF45FF000F081FA00F07BFA
+4FF47A7707FB0807DFF8FC0B874203D3DFF8100CC71964
+1C1022A1B200F07EF82022394600F07AF8306850F8481F
+C1F3801100293FD09AF8001089073BD50079332803DB4F
+F4BB61FFF77DFC306890F84C1000F062F8306890F84D10
+00F05DF8002423E005EBC40000F14E070822397800F054
+F8797800F050F8B7F902001FF48CF100F040F81FF45CF1
+00F040F8B7F904001FF482F100F036F81FF452F100F036
+F8B97900F039F8641CE4B2306890F84C008442D6DB6846
+5EF41FF0684660F4D4F6C408002506E0082168465EF485
+F12EA968546D1CADB2A542F5D3706B03689B6A2EAAA1B2
+98470DF5826DBDEC048BBDE8F18500007C93890053EC1A
+2B51EC190B1EF4D8B753EC182B1EF4D4B701B210226846
+5EF477B00000082268465EF49EB10146202268465EF46D
+B00000012268465EF494B12DE9F041ADF5F66D044656A9
+DFF8780D0FF2D40807F094FA054600261CE056A8382101
+FB060704F58040396B01AA10308CF4DCF5D7F4F4F000F0
+60F83946FDF7F5FD00F01BF830B12AF4D2F506AB424615
+212EF4D5F4761CAE42E0DB0DF5F66DBDE8F0818DEDB5A0
+30D089000000000000005040000000000000604115202E
+F4ABB4000080B500210020D6F4A9F70168896888470068
+00281CBFBDE80240FFF7AFBF01BD00B5E5B001AA56A9DF
+F8D80C07F076FD9DF88C0188B1D7F4B1F000F01DF856A9
+FDF7B2FDF19403A0958000FFF7D8FF38B12AF48FF506AB
+0FF2100215212EF491F465B000BD0000F7C6B03E4F4E43
+4849505F4E4D45415B305D5B25730000004FF4A0710091
+06AB01AA70472DE9F24F04462DED048B4DF2B070F2B000
+5900281CBF0068002892464FF0000800F03F8104F58040
+00F1100B0122594654A88AF4BBF5DFF8442C002154A888
+F4EFF29DF8D81181F0010101EA00090122594636A88AF4
+AAF536A903A888F434F15846A4F409F10025002780B103
+A895F4BFF2054603A895F4BDF253EC102B0020DFF83C19
+1EF4F8F600F016F9074604F50D563046D9F4D8F606AA08
+A9A3F46AF322A8A1F4A3F33046AAF4DAF722A9A2F415F2
+3046AAF4D4F702A9A2F43FF25846A4F4DAF0002805D030
+46AAF4C9F7A2F491F100287AD00298B0F5616F76D20AA8
+D9F464F69DED220B8DED0A0B0CAE9DED240B8DED0C0BDD
+E908239DED260B86ED020B9FED808B9DED280B86ED040B
+00F0CFF81EF4F7F73083DDE9062300F0C8F81EF4F0F770
+83B58347F288503762005930B3E0F4C1F207469FED748B
+386821F4C5F0FFF7C1FE1EF4DDF730859FED719BB86821
+F4BBF0FFF71BF91EF4D3F7B085786821F4B3F0FFF7AFFE
+1EF4CBF77085F86821F4ABF0FFF70BF91EF4C3F7F08501
+208DF884002CA8A5F464F4014658468AF402F11DA92CA8
+A5F4EEF418A958468CF4FAF6BAF1000F05D004F5D6400A
+A92030DAF4F3F604F55740B0300AA94068E0F47EF22CA8
+B1F4CDF50EE09DF8D80158B10AA8D9F4EAF5014604F557
+40B0308DF884804068E0F46BF22168D1F8A81020468847
+002854D068460021002206C05846E0F463F220B15846E0
+F463F200040190B9F1000F42D003A895F4EBF100F0E7FB
+53EC182BDFF8A80DDFF8A81D1EF423F600F045F800F03F
+F8009040B951EC180B0122DFF8903D1EF4D6F598BF6D1C
+002154A887F486F651EC100B0022DFF87C3D1EF4EDF534
+BF4FF480400020AA04019950EA924040F4004008430190
+4DF2B070005904685846A3F4FCF70146204624689DF8D8
+31D4F8A0406A46A0474FF0010872B04046BDEC048BBDE8
+F28F000051EC180B1EF4E0B541EC100B2DF46EB70022DF
+F8C43D1EF4A9B6000078DEB14100004F91809698000046
+C323002D310180841E0040420F00000029F90F26020000
+94357700E1F505000059408CC9910000C2631A00000000
+65CDCD410000000000007040000000000000904000093D
+0000BCA06565CDCD41DCA54C402DE9FA472DED068B0446
+AEB004F52A40ADF5805DA830D8F493F0014640F6F87068
+44C0F4F194033099800061F5C1F47FF0B0EE408A16A82A
+F4ECF240F658602F230822DFF8201D684426F4B9F304F5
+58454FF00008E035CDF80880284651F467F438B100F070
+FBA3F4A0F40146284651F454F4DFF8F41C3220486047F2
+E176305D50B100F060FB07F0AEFB28B1DFF8DC1CC1F804
+80012000E000209FEDDD0ADFF8C81CB4EE408AF1EE10FA
+087040F168820DF580512046D1F8D010D3F4C2F10DF580
+50D0F8D070FEF722FAE0F4D6F3A7EB0009DFF8980C8145
+14D200F010FDC6F444F478B140F6F8706844C1F424F051
+EC100BDFF87C2CDFF87C3C1EF4EAF498BF012700D90027
+03A8E0F4BBF30598002F12BF40F0010040084000059003
+A9059840F01800059006A8E0F4B5F300F0F3FA2CF4F5F6
+034606A8009040F6F871DBB22A4669440DF56460E0F4AB
+F3014604F5EE40E83007F065FC305D28B900F0F3FA07F0
+41FB064600E0002604F5EE40E830E0F4A3F301463EA8DA
+F4CFF60DF563600025019054E0DDF8300E482101FB0507
+4AF6902007F1280A005D18B19AF80400042844D0002207
+F1200168462DF4B9F307F120004BF4E3F078B1002E37D1
+9DF800008DF81800DFF8A00B007828B100F0BAFA06A907
+F0DFFA48B340F65860684400EBC800011D6A4606A85AF4
+D2F440F658606844DAF8001040F8381016A807F120012B
+F49CF59AED000ADFED820AB4EE600AF1EE10FA08F10108
+08DB9AF80400012818BF032802D10298401C02906D1C01
+98B0F908008542A5DB40F65860DFF8383B082241466844
+A1F413F00198B0F908000B2801DB00F070FA002625E040
+F65860684400EBC60504F51940291D0830DBF4E5F4C0B1
+2979017000F1080108308A6842F002028A608A6842F004
+028A6042F008028A6042F010028A6042F040028A6042F0
+80018160761C4645D7D30DF5805004F51941D0F8D000E8
+310DF58052C86104F58041D2F8D0200123103120A88AF4
+E1F20CA894F484F7014620A887F40CF500F0F2F912A894
+F4DDF5014620A887F433F5B0EE409AF0EE609A0CA894F4
+E6F700F0FAF99FEDDDAB80ED000B53EC182B51EC1A0B1E
+F41CF420F4FCF500F0D0F9886012A894F4B0F600F0E6F9
+53EC192B80ED040B51EC1A0B1EF40AF420F4EAF500F0BE
+F90AAB886104F5804108AA10310FA88AF4FDF50DF58050
+D0F8D0001EF473F5DDE908231EF47DF5002200231EF4D3
+F341EC180B23D253EC182BDFF8FC09DFF8FC191EF4E4F3
+41EC180B20F4C2F509EE100A00F0CAF953EC182B1EF4BC
+F303D200F0A9F980ED029A00F0B9F953EC182B1EF4B1F3
+03D2F19403C09C800000F09EF980ED069ADFF8C0098145
+11D300F0B0F900F05CF900F086F900F074F9886000F0A1
+F900F053F900F07DF900F06BF988610DF580504EF66021
+D0F8D0009FEDAA8B884238BF9FEDAA8B002000909FEDAA
+9B88E000BF0150C3470100A040DDF8300E0099482202FB
+010604F5194006F120010830DBF4BDF45FEA000970D0D6
+E9000109F1180520F468F5E860B0EE481AF0EE681A96ED
+020B2DF4A5F200F043F928610127D6E9040181F00041C5
+E9000106F120002AF46BF0824604F50D508CF426F77AB2
+51468DF4AEF3C0B17AB206F1200106A82DF447F20DF580
+520146D2F8D02004F5CC40F83008F0CFFA51EC100B81F0
+004120F431F509EB8701C8627F1C032FD5DBD6E9060120
+F427F5A86096F82C00042809D1DFF8600DDFF890182861
+DFF85C0DA86001204870B06A20F45DF553EC192B1EF401
+F41EF473F46884706A20F453F553EC192B1EF4F7F3FFF7
+43FD288496F82C0089F83C000020C9F804000098401C00
+9001990098B1F908108842FFF675AF00F015FF1CBF0168
+002925D0617919BBB8F1000F11D100F0DCF8E0F4BAF1D8
+B904F5194000210830DBF495F300F0B1F80020C8614DF2
+B0700059066800F0C9F8DBF4F7F33268526F0146304690
+4703E000F0C3F800F0D9F800F0F1F910B92046D2F479F7
+00F0B9FA01460DF57D6005F09CF916A83DF445F206460D
+F57D603DF440F2864201D200F0A8F800F096F804AA06A9
+A2F444F706468FF4D5F178B300F0D4FD0DF580514FF47A
+72D1F8D010B1FBF2F10818B0F5617F08D800F07EF80021
+9DED041B9DED060BA2F4B9F600F075F8A2F4F9F6014600
+F0AAFE1CBF006800280DD042F21072914209DA03689DED
+041BD3F89C309DED060B00223146984700F060F868B100
+F04FF8C5F4CDF240B10DF5805116AAD1F8D0102046D4F4
+C0F00CE0029800900DF5805140F65863D1F8D0106B4442
+46204600F0EAFD2046D5F4C3F02EB00DF5805DBDEC068B
+BDE8F3878DEDB5A0F7C6B03E0000794041EC110B9FEDB3
+0B2DF4CCB10000904000408F4080510100005C260548AF
+BC9AF2D77A3E95D626E80B2E113E000000000000E03F00
+A4D9FA04F51941E8317047B0EE408AF0EE608A70470000
+04F5D6402830C0F4BFB7000051EC100B20F416B404F50D
+50D9F418B204F50D50AEF42EB704F51940E830704704F5
+19400830704704F5EE40E830DEF44BB7000004F52A40A8
+30DFF45DB6000004F51940E830806920F43CB404F51940
+E830806820F436B404F5194001210830DBF4A0B204F557
+40F1940350A08000B0304068D9F4E2B12DE9F84F2DED02
+8B0446B8B08846914600F000F9014607A805F0B6F807A8
+3DF45FF100260A2847F2E077B2EE0E8A80F2828007A911
+A82DF4ADF4DFF8DC5522E09DF81000022808BF0E220AD0
+0020ADF8080002AA03A900F048FA00B15646BDF8082069
+4601A8D7F4E5F4014640463EF42BF2694648462BF4B9F2
+04A87AF466F111A82DF495F411A82DF494F4002840F0B2
+8011A900F025FA00F0B8FC01466A4604A8A3F481F111A9
+01A82DF479F4002201A903A82DF48CF068464AF4B7F529
+78084210D068680B28D7D211A901A82DF467F4012201A9
+06A82DF47AF0024603A905A85AF4ADF10023002203A904
+F110008EF40CF40E21ADF80A10017B890704D490ED130A
+00F04CF9B7D4694648463EF481F30028B1D1385D761C00
+2806F1010A8ED00DF10A0203A900F0DFF900B15646BDF8
+0A2095E7B2464DF6A40501E00AF1010A3A98824556D244
+9800EBCA00011D684640F495F30E21ADF80A100146FFF7
+27FFDBF47BF28346694607A83EF456F30028E4D19BF83C
+000428E0D0449800EBCA0000F00BF9DAD400F048F81F28
+D6D2694648463EF43EF30028D0D1694648462BF424F276
+1C385D06F1010B60B10DF10A0200F099F900B15E46285B
+B04228BFBDF80A200CD216E0ADF8080002AA00F08BF900
+B15E46285BB0420CD3BDF80820694601A8D7F426F40146
+40463EF46CF1285B8642A3D338B03046BDEC028BBDE8F2
+8F000060B31E0030DA8900FA7E6ABC7493883F04F11000
+8EF47EB704F52A40A830DEF42DB600002DE9F24F2DED02
+8BA8B00446349F2A99009790469946FFF7DFFE4DF6A405
+8346285B834556D200F0B3F8014668462AF45FF4022114
+A829F43BF601460AA850F485F70AAA69461EA83DF424F0
+00F0A0F80146022268462AF479F404210AA829F427F602
+46694614A83DF414F0DFF88063B07898B94DF6D700005D
+88B914A83DF41BF000281FBF04F5EE40E0304078002806
+D01EA83DF410F00D2801DB012000E00020B07000F06EF8
+C5F4A2F738B9FDF771FDDEF4CDF541F28931884202D3B2
+EE048A01E09FEDC78A4FF0000A01E00AF1010ACA4549D2
+0E20ADF8040007EBCA00011D684640F4B8F2014640463E
+F47EF20028ECD1B07840B168464AF48BF420B107EBCA00
+00F036F8E1D4307830B168464AF478F410B170680B28D8
+D2694640462BF450F147F2E0700BF1010B005D18B96846
+5FF453F510B10020ADF8040001AA00F0BEF808B10BF101
+0B285B58450CD3BDF80420694602A8D7F458F301462A98
+F19403E0A380003EF49EF0285B8345B1D328B0BDEC028B
+BDE8F18F90ED000AB4EE480AF1EE10FA7047000004F5D6
+402830C0F42FB5000004F11000C0F474B32DE9F0410446
+CAB00D4604F50D58164641462CA886F48CF004F55841E0
+3106A82DF4D8F28C4F0EE0D8F4ECF704A906F029FE10B1
+78680B283BD303A879F4A6F706A82DF4D5F206A82DF4D4
+F2002860D106A904A82DF4C4F20E20ADF8080006A900F0
+5FF80022694601A82CF4D1F64046A3F4F0F1014601AA03
+A8A2F4B5F703A8A3F4ECF128B103A92CA800F06BFE0028
+D3D104A84AF4EAF358B14DF2B470397800590029C0D1D8
+F4ADF706F013FE0028C3D147F2E070005D30B102AA01A9
+00F034F8BDF8082010E09DF80C00022808BFBDF8082009
+D00020ADF80A000DF10A0201A900F022F8BDF80A2001A9
+6846D7F4C1F2014628463EF407F001A930462BF495F028
+46D7F4BAF2002896D003A879F43DF72CA8A4F4BCF14AB0
+BDE8F081000019A968462DF45CB26946204600E00000F8
+B50F46044638788DF8000015464DF2B47000260059D8F4
+5DF7694606F09AFDF8B12046D4F4A4F520B1288840F480
+6028800126384660F4F3F2042809D13A4841680A2905D2
+2A8842F400722A80491C41604DF6D900005D18B9288840
+F0010028803046F2BD00000BEF349377BDBB40FE742241
+0000F03FF0B505464AF68F20DDB0405D002400280E4644
+D14DF2B4704059D8F41FF70621DEF448F400283AD02148
+407805F5EE47E037002804BFB878002808D10621684629
+F4A2F46946304650F41CF601243EA8A3F4A8F520A8A3F4
+A5F50346002000903EAA05F50D5102A885F420F702A8A4
+F43BF1062120A8A3F4CDF6B0F497F640B106213EA8A3F4
+C6F6B0F490F608B10120387020A8A4F428F13EA8A4F425
+F120465DB0F0BD000034420000E03F39B70F007C938900
+C0D401009B99999999992B4065B10F00FCA9F1D24D6250
+BFC12709002DE9F04F044604F52A40ADF5257DA830DFF4
+9AF58DF8060000262046D4F4A0F18DF805000027B9468D
+F80490FFF7D6FD01469AA804F08CFD04F52A408F30B846
+407800284DF6A40014BF05250825005B18280EDB04F558
+40E0303CF425F6212807DB04F52A408F304078002814BF
+08250C257CA8A3F42EF55EA8A3F42BF540A8A3F428F500
+F0AEF902BF4DF63000005D002832D07CA800905EAB40AA
+04F50D511AA885F49BF61AA8A4F4B6F000F086FBE8B100
+F09DF9B0F5E16F13D8B0F5167F15D902217CA8A3F43DF6
+B0F489F68246022140A8A3F436F6B0F482F650FA8AF0F1
+940370A78000102804D24DF63001012601F8049000F075
+F9407808B1782001E04FF4167002909AA919A82DF42AF1
+13E04FF0010A5BEA0A0001BF7F1C08F101089DF8000002
+2808BF09F10109684679F4F4F519A82DF423F119A82DF4
+22F1002843D1FFF7B4FE00F042F900F046F900F032F968
+46A3F449F04FF0000A0028D346D6D000F02EF902998842
+D3D2694604F50D5004F03AFE00284FF0010BCAD169467C
+A800F0B6FCB8B969465EA800F0B1FC90B900F016FB78B9
+9DF800000628B9D0694640A800F0A5FC00281FBF04F5EE
+40E03040780028ADD04DF63001684601F804A079F4AAF5
+012683E0002EFCD104F55841E03119A82DF4C4F024E019
+A904A82DF4C5F004A99AA83DF4FBF7C0B9FFF75EFE00F0
+ECF800F0F0F800F0DCF86846A2F4F3F748B16846A2F4EF
+F720B100F0D8F80299884200D37F1C684679F47DF519A8
+2DF4ACF019A82DF4ABF008B9AF42D4D3A8453EBFAF4201
+208DF8040000F0D4F802BF4DF63000005D002841D07CA8
+A3F473F407465EA8A3F46FF450FA87F740A8A3F46AF457
+FA80F7072F02D3FFF77EFBE0B9182F0BD200210FA829F4
+1FF304F558400FA9E03062F467F7002846D100F097FA58
+B1002727E0022F23D100F0A0F8807808B37F1CFFB2072F
+F5DB00F098F8407868B1D5F4E6F350B1FDF789FE38B17C
+A8A3F439F418B904F5EE41E0314870FDF716FF88F4D4F7
+30BB5FEA090024D0012022E0062FDDD0394605A829F4E6
+F204F5584005A9E030DFF426F40028D1D100F06EF83946
+8078002814BF5EA87CA8A3F41AF5B0F4E4F40028C3D04D
+F63001002008550126C1E700209DF8042040EA06011143
+C9B291B1C0B200281FBF04F5EE40E0304078002823D120
+46D3F468F5F8B99DF80410204600F092F919E0FDF7CFFE
+D7F435F0A0B14AF68F209DF80610005D81F0010108409D
+F80510084208D0FDF7BEFE88F43AF700F0010080F00100
+00E0012047F2E071085540A8A3F43EF75EA8A3F43BF77C
+A8A3F438F70DF5257DBDE8F08F014603AA6846A2F4DBB4
+00000122694604F50D5085F452B60022694603A82CF4E3
+B3000004F50D50A2F400B704F5EE40E030704704F5EE40
+E03040780028704704F58040103089F447B000002DE9F8
+4305464AF6A62005F52A47405BA8370B280E46384604DB
+DEF433F1022806DB03E0DEF42EF1032801D1012400E000
+2447F2E1794DF6300819F80500002804BF18F805000028
+06D13846DEF4FEF11F28A441E443E40F0C2E07D24DF6A4
+00405B8642BF41FF43FF0F00E0012719F805000028F194
+0300AB800004BF18F80500002809D005F50D50AEF4A5F1
+08B1052E01D2380000D0012005F52A41774B11F88F2F5B
+781A433A40104306BF487800282046BDE8F28395BFD633
+FAED6B3A2DE9F043ADF53D7D04460F4690461E4624AA98
+2101A83CF457F405A829F4DAF119A829F4D7F101A8DFF4
+38F30297204604F5EE45FFF78AFDE0354DF6A409687800
+2802BF4DF63000005D00280BD1DFF88005006887423EBF
+C49839F8041088423CBF0120287041462046FFF76DFF20
+B30096434605AA01A92046FFF75FFB01A8DFF410F34045
+06D301A8DFF40BF339F80410884201DB012700E0002719
+A92046FFF7ECFC87F0010108420BD019AB05AA01A92046
+D2F4CCF404E005AA01A92046FFF708FC2EB304F52A4750
+373A4605A90FA8DFF4EBF20FA83CF48CF3002804BF2878
+00284DF6D90601D1305D88B905A9384650F4F3F200F013
+F81CBF0068002807D0207928B901A9204600F00FF80120
+305501A855F450F00DF53D7DBDE8F0834DF2B070005900
+2870470000F8B5064606F557450C4655F8B00F00281CBF
+006800283AD006F52A40A830DEF43FF0070018BF012700
+F034F80521DEF4E9F0384204D1052120463DF47FF403E0
+21463046D3F442F100F024F8012200218CF412F410B920
+463DF44CF40C48007840B900F017F806F009FA18B10421
+20463DF464F401220E2120463DF4ADF328680068026812
+6F2146BDE8F8401047F1BD7C9389006868D8F489B30000
+2DE9F843044604F580402DED068B00F11008C0B04046A2
+F49FF547F2E47604F52A473159451AA8373846DDF4EBF7
+0328ACBF47F2305041F28830A84202DB3059002877D14D
+F2B47547F2E3792859CEF4E7F30528B4BF0120002009F8
+040000F06FF838B13846DDF4CDF718B1002009F804005F
+E019F8040000285BD02859CEF4CFF3411C2859C9B2CEF4
+C6F3D5F4BAF100284FD1684693F4A1F60122414604A889
+F4EEF1694604A886F424F4FFF70AF90122414622A889F4
+E3F142F6E062002122A804F5D64586F415F720359FEDBF
+9B98B14046A2F440F58146684693F4F4F600F032F80746
+FEF753FB1DF48BF402464B46B9B22846D9F45FF3684693
+F4E4F600F022F8074600F0E7F8DFF800331DF467F51DF4
+77F48146FEF73AFB1DF472F402464B46B9B22846D9F468
+F34046A2F413F5305140B0BDEC068BBDE8F18300004DF6
+3000005D7047B0EE40AAF0EE60AA684693F4B7B6000008
+4611461A46FAF703BF00002DE9F84304462DED028B04F5
+5745BAB055F8AC0F00283AD000F0B0F8002836D0F19403
+90AE800022A8D8F47BF22A68014610461268926B904724
+AFB88B1DF453F400229E4B1DF4D3F28046386A89461DF4
+4AF48D4A8E4B1DF4CAF242464B461DF498F341EC180B01
+22314604A889F459F104A9684686F4E3F4684693F4B2F6
+51EC100B53EC182B1DF43CF441EC180B9DF8E40000286B
+D000F070F800231DF467F265D87B4B1DF487F261D2A868
+D8F481F2DEF45DF600F00106A868D8F47AF2DEF456F600
+0900F00105B86B6FF00041884214D000F052F86F4B1DF4
+6DF204D22268D26E35A92046904751EC180B00F0C9F804
+D22268126C30A9204690478EB900F03CF8654B1DF457F2
+0BD2216897ED043B896F97ED022B9DED241B9DED220B20
+46884725BBB7F91A0008B31DF4D2F305460E4653EC182B
+002059491DF458F22A4633461DF426F30122564B1DF410
+F241EC180B98BF9FED578B51EC180B1DF48DF32368B7F9
+1810DB6F02B2204698473AB0BDEC028BBDE8F183000051
+EC180B0022704704F5804610363046A2F430B42DE9F843
+2DED048BF0EE408A82B08046B0EE608A0C46B0EE080A2C
+F4E5F108F5D6462836B0EE409A3046B1F4A5F000780128
+05D03046B1F49FF00078072801D1002700E00127344E70
+6808B9002507E0201A364988428041C043C00F80F00105
+01208DF80400022201A968462CF4E0F008F50D59484680
+F4F3F7002269468CF427F630782843384370EE289A1DD1
+B5EE408AF1EE10FA18DDB4EE498AF1EE10FA13D508F52A
+4000F1A8052846DDF418F73D280AD3484680F4D3F7B0EE
+680A07F067FE7460284607F077FE02B0B0EE690ABDEC04
+8BBDE8F1830F490870704700000000000000408F400246
+0B4651EC1A0B1DF440B300220E4B1DF496B1FCA9F1D24D
+62503F401277410075524100A40F410000E03F00D07240
+7CC991007893890000408F400000000000D07240E19304
+00007522410446B0EE409AF0EE609A704700F580401030
+03F0BBBB0000082101700021417081808170C180704738
+B500F02BF840B92846A2F489F320B91D210FF25800F5F7
+99FA00F019F8BDE83440A9F461B0000038B500F017F840
+B92846A2F475F320B927210FF23000F5F785FA00F005F8
+BDE83440B0F4A9B10000206F2A78697800EB0210704704
+46024800780D4670470000EACB910070617463685F676C
+676E73732E637070000000000821017000214170817081
+80C180704738B504460D466068B5F9061040186060B5F9
+0810A0684018A060B5F90410206840182060B5F90A10E0
+684018E060B5F90E102069401820612868A061F1940320
+B28000B5F90C10206A40182062B5F91410606A40186062
+B5F91610A06A4018A062298BE06A10FA81F0E062698B20
+6B10FA81F02063606920B92868B5F90E10401A606140F2
+DC512868884203D2302121481EF4AFF1206960B1B5F90E
+1000EE101A00EE900AB8EEC00AF8EE600A80EE200A01E0
+B7EE000AD5ED040A60EE200AB7EE001A31EE400A94ED07
+1A40EE010AC4ED070A31BD00000F4991EC0C0B80EC0C0B
+7047D0E90E230B49C1E90023D0E91023C1E90223D0E914
+23C1E90423D0E91623C1E90623D0E91823C1E90823D0E9
+1A23C1E90A237047D8E7890038B504463220009004F554
+7504F519632022294620462DF4A9F532232022AA492846
+24F4D3F6204632BD000062F4B0B270B5F2B004460D465F
+A82CF46DF3002641F290406821405901FB060000F15001
+5FA82CF46FF3761C322EF1D34DA82CF45BF3214601A862
+F479F207E001A968465EF4ACF569464DA82CF45CF301A8
+5EF4A3F50028F2D15FA929A8C6F465F529AA4DA93BA8C5
+F450F63BA903A82CF418F30AE003A968462CF419F36946
+204662F47BF203A82CF408F303A82CF403F30028EFD072
+B070BD00002DE9F84F0E462DED068B06F1500982B08046
+93464946FFF7A5FF050012D14946404662F445F2494640
+4662F44DF2050004D136210FF20820F5F752F915B12846
+07F0DAFC2C6804B10124D6E90E23D6F810A0664900201D
+F41FF0DBE9002341EC180BF768002000211CF4C0F71ABF
+780800F001060026F80443BFB80900F0010080F0010700
+27E4B23CB3494605F11C0007F0C8FCE8B948462BF4EEF6
+00F0B4F81DF476F1CDE90001A8691DF471F153EC192B1D
+F43BF2DDE900231DF4BFF0CDE9000150461DF464F1DDE9
+00231CF4C8F703D22946404600F0A7F83E4208BF9FED44
+0B7DD0D5E9040153EC182B1DF45EF141EC190B28680028
+3BD1484629F430F0DBE9000153EC102B1DF410F241EC19
+0B484629F425F0B0EE40AAF0EE60AAB0EE490AF0EE690A
+2BF4D7F7064651EC180B53EC1A2B1DF4FAF141EC100B2B
+F4CCF7301A1DF41BF106460F46484629F408F051EC100B
+32463B461CF49EF7C5E90201C5F800A04A4605F11C0168
+4658F4B4F718E051EC190B01221F4B1CF44DF704D8D5E9
+022300201D4908E081F000411CF443F707D8D5E9022300
+201A491DF44EF0C5E9020185ED048B2946404600F032F8
+B0EE408AF0EE608A48462BF45DF600F023F8AAEB00001D
+F4E3F053EC192B1CF463F71DF4BDF0A861B0EE480AF0EE
+680A02B0BDEC068BBDE8F18F00000000F0BFF19403B0B5
+800000000000000000000000104100002041B92D810000
+0020C12868B0EE409AF0EE609A704780B5D1E90223D1E9
+04011DF40DF041EC100B01BD00291CBF084607F0E3BB70
+4780B5FFF795FE806902BD000070617463685F676C7065
+5F6164725F73746174652E6370700000000038B5044600
+F038F868B12078A2F450F50146684693F414F06946601C
+07F0E4FB012538B900E000251E210FF67830F5F729F815
+B168467CF4A3F62078062819D8DFE800F0150415080C15
+150000F014F877300AE000F010F8403806E06078801F09
+2804D200F008F82030C0B232BD00F003F832BD002032BD
+601CA2F4DDB0000000F1580107220A729FED670B00224A
+72028080ED020B4FF0FF32428080ED060B0022026180ED
+080B80ED0A0B80ED0C0B80ED0E0B80ED100B80ED120B80
+ED140B0A804FF0FF328A700022CA707047000038B50C46
+2DED068B0546207828809FED5C9B607868809FED5C8B60
+681DF422F04FF0FF32DFF82C3A1CF4A0F6C5E902019FED
+7CABA0682861E0681DF409F000F0B1FB00F0ABFBC5E906
+0120691DF400F053EC1A2B1CF48AF600F0A0FBC5E90801
+60691CF4FFF700224FF07B531CF47EF6C5E90A01A0691C
+F4EBF700F093FB00F08DFBC5E90C01E0691CF4E2F700F0
+8AFB00F084FBC5E90E01206A1CF4D9F700F081FB00F07B
+FBC5E91001606A1CF4D0F700F078FBC5E91201A06A1CF4
+C9F753EC1A2B1CF453F6C5E9140105F15800A178018094
+F82C108170E178C1702846BDEC068B32BD30B587B00446
+0D461146684693F486F128691CF4B5F741EC100BB5F858
+1003A893F47EF1024608236946204693F44EF207B030BD
+38B5DFF83C59044607231022294624F457F40723102229
+4604F1700024F450F4DFF8200938B1DFF8200920B9D521
+0FF68C10F4F733FF204600F006F8204632BD0000000000
+00000070B50446002504EB05163046A8F4CCF406F17000
+A8F4C8F46D1C072DF3DB70BD000000000000003E112D44
+54FB210940F8B50546002428780026062823D8DFE800F0
+0422090E13181D00DFF8BC48DFF8BC0817E0DFF8B848DF
+F8B80812E0DFF8B848DFF8B8080DE0DFF8B448DFF8B408
+08E0DFF8B448DFF8B40803E0DFF8B048DFF8B0080668DC
+B10021684692F4C0F66946681CE8F4E2F0074668467CF4
+58F577B92846FFF794FE002100E0491CB14206DA30224A
+43135D8342F7D11019F2BD0020F2BDFEFFFFFFFFFF3F3D
+F0B583B00C4615461E46294601A892F499F60246214668
+46A8F444F401A87CF431F56846FFF79EFFF1940340B980
+00070019D097F92C00022803D1DFF80008007888B92146
+384607F05CFA60B139463046FFF7C3FE06F16000047045
+70684678F418F50120FEBD684678F413F50020FEBD0000
+2DE9F043C7B004464E9E0D46904699462CA8FFF781FE00
+F03BF8024629782CAB2046FFF7B7FF002770B34046A1F4
+52F750B300234A4641460EA888F4EDF30EA906A885F46F
+F706AA2CA903A8FFF7FEFE002203A90AA893F4BFF60246
+06A9684693F49CF0684692F4D3F6002332462CA9204600
+F011F8070006D0287804EB0010691C7030A8F4B6F33846
+47B0BDE8F083681CA1F41DB70000F8B52DED108B0C462D
+ED020B98B094F86000012816460ED0DBB263B9DDE91801
+21F000410122DFF840371CF4C7F498BF002040F2C28104
+F108079FEDE2AB97ED040B2EF47DF5B0EE40DAF0EE60DA
+97ED040B2EF44BF5B0EE408AF0EE608A97ED0C0B2EF46D
+F58DED100B97ED0C0B2EF43DF5B0EE40FAF0EE60FA97ED
+080B00F0EFF941EC190B00F0F5F900F0F3F902460B4600
+F0B3F900F0C7F900F09DF900F0DDF900F0B5F900F0E5F9
+DFF8C026DFF8C0361CF4C3F400F0B7F953EC102B00F09D
+F9CDE90E0153EC1B2B00F0B1F9D7E90E231CF485F5CDE9
+0C0106AA39460CA88EF4B8F29DED060B2EF42AF500F074
+F99DED060B2EF4FAF400F074F900F0AEF900F086F900F0
+90F9D7E90023B0EE40EAF0EE60EA51EC1C0B1CF41AF641
+EC110BB0EE41CAF0EE61CA00F092F941EC100BB0EE4C1A
+F0EE6C1A2EF4D0F4D7E90C0100F050F953EC1C2B1CF44A
+F541EC1B0B00F04EF997ED00EB00F044F953EC1E2B51EC
+1E0B1CF46AF400F052F900F086F900F014FB02460B4620
+4629461CF4A8F600F078F941EC1C0BB0EE4B0AF0EE6B0A
+2EF4D6F4B0EE409AF0EE609AB0EE4B0AF0EE6B0A2EF4A2
+F4B0EE40AAF0EE60AA00F048F9CDE90A0100F03EF9CDE9
+0801D7E90623DFF8AC05DFF8AC151CF408F5CDE90401DD
+E9042300F02AF9D7E90A231CF4FEF40446B8680D461CF4
+A3F5DFF88425DFF888351CF421F400F003F941EC1C0BB0
+EE4C0AF0EE6C0A2EF499F400F0E3F800F0EDF8DDE90823
+00F0E3F851EC180B1CF40BF4DDE9082341EC1E0B51EC1D
+0B1CF403F4DDE90A2341EC120B8DED002B00F007F900F0
+19F922462B461CF4C7F4DDE90A2341EC110B9DED002B8D
+ED001B8DED022B51EC1C0B1CF4E7F304460D4600F0EDF8
+00F0C5F841EC100B9DED022B9DED001B12A883F43EF401
+46304683F494F4DDE9100197ED00EB53EC1E2B1CF4CCF3
+53EC192B1CF49AF4DDE90E231CF4C4F3F19403D0BC8000
+81F0004141EC190B53EC1E2B51EC1F0B1CF4BAF300F068
+FADDE90E231CF4B4F300F0CAF881F0004141EC1A0B3146
+08A883F456F400F070F808AA014602A8A8F4BDF200F09F
+F804460D4653EC1B2B00F0A1F822462B461CF469F400F0
+85F8014602AA68469FF416F0694606F118009FF40BF031
+4608A883F431F400F04DF8014608AA02A8A8F49AF253EC
+1B2B00F07CF804460D4600F07CF800F05AF800F064F801
+4602AA6846A8F473F2694606F120009EF4EAF753EC1A2B
+51EC1D0B1CF464F353EC182B1CF4AAF581F0004141EC10
+0B68469EF4CFF7014606F128009EF4D4F7D7E9122300F0
+4AF8D7E9102306F130041CF41CF4C4E9000197ED120B84
+ED020B0420207401201AB0BDEC108BF2BD000000000000
+0000F03F9DED040B0EA8A8F449B20000B0EE40BAF0EE60
+BA70470000B0EE40CAF0EE60CA70470000B0EE4C0AF0EE
+6C0A2EF478B3DB48DC491CF466B502460B46204629461C
+F4A0B402460B4651EC1A0B1CF49AB441EC100B0AA89EF4
+81B7000041EC100B2EF48CB3DDE918011CF402B353EC1C
+2B51EC190B1CF4FCB253EC1C2B51EC1A0B1CF4F6B253EC
+1E2B51EC1B0B1CF4F0B297ED000B53EC102B51EC100B1C
+F4E8B253EC182B1CF4E4B253EC192B1CF4E0B204460D46
+53EC1E2B51EC1C0B1CF4D8B230B5A94883B000780C4608
+B100203EBDF822182120461DF43DF40125E9B201A892F4
+C8F3024602216846A8F473F101A87CF460F26846FFF7CD
+FC20B1C1780078001900F8011C684678F458F26D1C192D
+E4DB01203EBD000070B504460D46A4B01646FFF783FD01
+46287804EB0010AFF4EDF238B30AA8FFF7BDFBFFF777FD
+024629780AAB2046FFF7F3FCD8B132460AA903A8FFF749
+FC002203A906A893F40AF402463146684692F4E7F56846
+92F41EF451EC100B1CF4C2F32BF406F28D4988428041C0
+0F24B070BDF8B52DED068BC4B0164604460D461B2100F0
+12F9002800F0D6802A68926B2946684690472846A8F4C9
+F001466A4601A8A8F40CF168467CF4F9F19DF804000228
+03D001A8FFF762FC070000F0B980314605A885F471F405
+AA01A92046FFF798FF002840F0AD8001233246294626A8
+8EF437F000233246294608A88EF431F008A926A885F45F
+F2B0EE408AF0EE608A26A902A885F451F401A8FFF708FB
+3870032100F0CAF878700F2100F0C6F8786002A892F4D8
+F52BF4AAF3B860162100F0C0F8F860192100F0BCF83861
+112100F0B4F87861142100F0B4F8B861182100F0B0F8F8
+610D2100F0ACF83862092128468DF4F1940360C080008D
+F7B0EE409AF0EE609A51EC190B6FF001024B4B1CF43AF4
+41EC100B2BF47EF3B8620A2128468DF479F7B0EE40AAF0
+EE60AA53EC192B51EC180B1CF4DDF100F08BF800223F4B
+1CF4D7F141EC100B2BF465F3786202A892F48BF5B8700D
+F10501032087F82C009DF8040004EB0010A8F453F01520
+2BF4ECF650B30DF10500A1F4B9F304469DF8040008B947
+2517E0012808BF532513D0022808BF52250FD0032808BF
+51250BD0042808BF422507D0052808BF452503D006280C
+BF4E25782527F4D3F700942B460FF2B00215212BF4D4F6
+01A878F437F144B0BDEC068BF1BD0000FFFFDF3D29E10A
+00D2500200581A0000EECB91004C6282004C688200C85D
+820048628200046A8200546B8200005182000057820004
+578200C45D820050688200006A820020FE6D4100505B93
+66A8F6425B8DCBD7A71D13BFA71D133F803A0900FFFF3F
+3D0000E0412A68126D284610472A68926D2846104753EC
+1A2B1CF41EB270617463685F676C70655F616C6D6D6772
+2E63707000000045706832416C6D2025632C2025640A00
+70B500F59854A83482B000212046A2F4D1F002212046A2
+F4CDF000250FF2BC0600F07EF8032100F077F800F04DFB
+00F04FFB6D1C042DF3D30FF2A406002500F06FF8042100
+F068F800F03EFB00F040FB6D1C212DF3D305212046A2F4
+ABF000250FF2A00600F05CF8052100F055F86946A7F482
+F700F02CFB6D1C0C2DF2D30FF29006002500F04CF80621
+00F045F800F01BFB00F01DFB6D1C082DF3D3F7F7C2F8D0
+B1DFF8C84D606810B13F2100F038FD4FF44860F7F7B8F8
+60602820F7F7B4F8A0604FF4486160681DF48EF1A06828
+211DF48AF10020207073BD000001020307010203040506
+0708090A0B0C0D0E10131415161718191A1B1C1D1E2021
+22232425000000060A10111416171C1D20222301020304
+050607092046A2F467B00000A95D684692F4A6B110B50B
+8848F29014A34202D100F014F80CE048F29114A34202D1
+00F099FE05E048F28F14A34203D100F06CFF012010BDBD
+E81040D5F404B770B504460D4600260EE000F0D5FC50B1
+00F0D2FC582101FB06510368CA6DD3F888300831984776
+1CE8888642EDDB70BD2DE9F04F884608F14805A3B00446
+288C092802DB6D2100F0BBFC08F108094FF0000AB9F81C
+00C0B2A7F40CF5064601AF11E0CDF499F060B100F0A6FC
+D0F800C0B9F81C30BBF80C20DCF884C0DBB26946E0470A
+F1010A288C824564DAA82000FB0A8000F1BC0100F59E7B
+0A68521E00924A680192002A8B68F19403F0C380007B60
+CB68BB600B69FB604B693B618B697B61CB69BB610B6AFB
+614B6A3B628B6A7B62CB6ABB620B6BFB624B6B3B638B6B
+7B63CB6BBB630B6CFB634B6C3B648B6C7B64CB6CBB640B
+6DFB644B6D3B658B6D7B65CB6DBB650B6EFB654B6E3B66
+8B6E7B66CB6EBB660B6FFB664B6F3B678B6F7B67C96FB9
+6721A9DBF80000F867DBF804002190DBF8080048602068
+95D0CDF42FF00028A1D000F03BFCD0F800C0BBF80C20DC
+F83CC033466946E04795E798F80600C0071ED502A83EF4
+34F2102208F114011DF4AFF000F023FC98B100F020FCB8
+F806100906490E01F00101019102A9009131460668D9F8
+0830D9F80420D6F838C0E04708F12806707DC00721D570
+7B8DF80D0070680190B0680290308AADF81000708AADF8
+120030788DF80000B07B8DF80E00307B8DF80C007088AD
+F8020000F0EEFB28B100F0EBFB69460268126C9047A879
+F0B1F0690190B0690090A8788DF80A0068798DF80D0028
+798DF80C0028788DF80800E8788DF80B0068788DF80900
+00F0CDFB28B100F0CAFB69460268D26E9047287EE8B1B5
+F91A00ADF80000A88BADF80200A87F8DF80400E87F8DF8
+050000F0B5FB68B100F0B2FB0746DDE900010A46014638
+463F68D9F80030D7F844C0E047A87D58B3F0690390B069
+0290A8788DF8120068798DF8150028798DF8140028788D
+F81000E8788DF8130068788DF8110000F08CFB90B100F0
+89FB0646D9F80000019002A883B00CC869460CC10CC80C
+C130463668D6F84CC00EBCE04708F19006307A80B16846
+D5F48DF430690290F0680190708900F068FB28B100F067
+FB69460268926D904708F17A07B87840B36846AEF4E0F7
+B7F804A0388AADF80A00F889ADF80800B889ADF8060078
+89ADF804003889ADF80200F88800F046FB80B100F045FB
+8346694603A8D5F44EF4DBF800C0D9F80030DCF848C002
+4651465846E04708F1750B9BF8030050B36846AEF4AAF7
+B7F800A0A86A0190686A009095F82C008DF808009BF802
+008DF80B009BF801008DF80A009BF800008DF8090000F0
+16FB70B100F013FB0546694603A8DFF460F7024628462D
+68D9F800302D6D5146A847B87C80B16846DFF461F77068
+029030680190B88A00F0F8FA28B100F0F7FA6946026852
+6D904708F1B005287880B16846DFF452F7A86802906868
+0190688800F0E3FA28B100F0E2FA69460268D26D904730
+7D80B16846DFF445F7F0690290B0690190F08A00F0D0FA
+28B100F0CFFA69460268126E904723B0BDE8F08F2DE9F0
+4F87B0CA8801EB420200231381F1940380C7800001F108
+06CA885118C91D00F59850019100F1A8080DF1080907E0
+761C30783B281CBF01988642F8D1761C019886427AD200
+273846A1F4F8F61DF490F0C4B23846A1F4F2F622463146
+23F429F6002804BFA05D3A2855D102A814211CF4F9F6A1
+190020491C04E011F8012B00F80920401C0A783B2A18BF
+002A02D0C0B21428F2D339464046A1F4E6F5A7F4F4F402
+A81DF465F00024451E21E0A0F14101062934D237385FFA
+80FA4FF0000B4AFA0BF0C0070ED50BEB8500411CC9B268
+4691F40EF739464046A1F4C6F500F032F800F034F80BF1
+010BBBF1040FE7DB6D1E6DB2002D13D4E4B214F8090064
+1CA0F130010A2938BF3038D5D3A0F161010629CCD25738
+CFE77F1CFFB2072F93DB0322314607A023F4C5F5002805
+D1F01C06F0D4FADFF8381908607AE707B0BDE8F08F574E
+3A006946A7F461B4000068467BF46FB500002DE9F0430D
+46C1B00446A868410911F0010114BFDFF804294FF0FF32
+A36893431040184304F59856A060A23609B9E889308000
+F005FA002800F067817EF450F5DDF464F1806818B94FF4
+CF7100F0FCF9288A40B17EF444F5DDF458F18168288A2A
+F4A2F404E07EF43BF5DDF44FF18068708000F0E5F93188
+D2F47CF400F0E0F97188D2F47FF400F0DBF90268217AD2
+F8942001F001019047207A00F0810081280CBF01260026
+00F0CBF93146D1F45CF700F0C6F90268A168D2F8A02089
+0801F00101904700F0BCF90268A168D2F8A420490801F0
+0101904700F0B2F90268A168D2F8B020490A01F0010190
+4700F0A8F90268A168D2F8AC20C90801F00101904700F0
+9EF90268A168D2F8B820890A01F00101904700F094F9A9
+89D0F4DBF000F08FF9A168CA09CB064CBF02230023CE03
+4CBF10260026490302F001024CBF202100211A43324311
+430268D2F89020904700F076F90268A168D2F8BC20090A
+01F00101904700F06CF9A168DFF4DBF5A068400004D500
+F064F90121DFF4D9F5A068002804D500F05CF90121D5F4
+1BF007A827F462F220680FF60409CCF441F5DFF4CBF506
+460020002159F821201043491C0729F9D3A16810EA0108
+08BF4FF49018002759F8270018EA000F51D004F5985039
+46A830A1F49EF401461BA8A0F4CEF615E08DF8000001A8
+7BF478F49DF80000512801DB562807DB684657F40BF518
+B1694607A828F4BEF51BA8A0F4BDF61BA8A0F4BCF660BB
+1BA8A0F4BAF6C1B202A891F4BCF50246394601A8A7F467
+F3024631466846A0F450F401A877F453F402A87BF44CF4
+684657F4E5F40028CED11BA8F1940310CB8000A0F49EF6
+C1B201A891F4A0F5A0F49AF69BF414F3C11D0E2934BF3B
+300020B8E77F1C072FA5D3002603A82AF4FFF1324607A9
+11A827F42AF211A91BA82AF44EF712E01BA901A82AF44F
+F73146684627F40DF19DF804009DF80010411A03A82AF4
+6BF01BA82AF448F71BA82AF447F70028E7D0761C072ED7
+DB00F0B4F807A98AF4FDF200F0B5F8D2F45FF300F0B1F8
+FBF78BF900F0ADF8D2F439F3A06880010CD500F0A0F8D6
+F436F4064600F09BF846F004010268D2F888209047A068
+010504D5DCF498F141F288311AE0C10404D5DCF491F14F
+F47A6113E0810404D5DCF48AF140F6B8310CE0410404D5
+DCF483F14FF4FA6105E0000405D5DCF47CF14FF47A71DC
+F494F700F074F850B1A079297B00F0010001F001018842
+18BF4FF0010801D14FF0000800F064F848B1A079297B00
+F0040001F00401884218BF012700D1002700F056F850B1
+A079297B00F0020001F00201884218BF4FF0010901D14F
+F0000900F046F848B1A079297B00F0100001F010018842
+18BF012600D10026A889E08000F030F828B100F02DF802
+68E188526E9047B8F1000F03D000F02AF8CEF4BEF31FB1
+00F025F8FBF729FDB9F1000F03D000F01EF8FBF740FD1E
+B100F019F8CEF4D7F300F015F848B1DFF8FC5428680128
+04DB00F00DF82968FEF726FA41B0BDE8F08300002068D6
+F491B30000ADF800002068CCF4EDB300000FF22C50F3F7
+C8BC02680A60406848607047000038B5846842F02005AC
+431140214300F59852816022F8A23F049951800021BDE8
+3440D6F461B00000F8B505462DED068B28680E46CCF4C6
+F300287AD02868D6F45FF3DCF43BF7C00706F1440456D4
+2868CCF4B8F3074606F12C00DFF493F4B0EE40AAF0EE60
+AA06F12000DFF48BF4B0EE409AF0EE609A06F11400DFF4
+83F4B0EE408AF0EE608A06F10800DFF47BF43968896FB0
+EE4A3AF0EE6A3AB0EE492AF0EE692AB0EE481AF0EE681A
+384688472868CCF488F3618901EE101ADFEDA00AB8EE41
+1AE18861EE201A01EE101A218902EE101AB8EE422AA188
+62EE200A9FED980AB8EE411A02EE101A016821EE001AB8
+EE422AD1F8801022EE000A88472868D6F4FFF2DCF4DBF6
+C00613D4B4F90200B0F5FA6F0EDA2868CCF455F3BDEC06
+8B0368B4F90220B4F90010DB6F01B0BDE8F0401847BDEC
+068BF1BDF0B5ADF5037D04460D4602A8D3F4EEF305F108
+06F06E00F44040B0F5804F03D040F28721FFF746FF3068
+029008AFB088ADF80C0003A8F1884180318981807189C1
+80B1890181F1894181318AF19403A0CE80008181718AC1
+817169016105F12000DFF4F7F38DED080B05F12C00DFF4
+F1F387ED020B05F13800DFF4EBF387ED040B05F14400DF
+F4E5F300F08BF97E9005F15000DFF4DEF387ED060B05F1
+5C00DFF4D8F387ED080B05F16800DFF4D2F314A8002187
+ED0A0B016096F86C0000F001003863F16E490801F00101
+40EA41003863F16E890801F0010140EA81003863F16EC9
+0801F0010140EA01103863F16E090901F0010140EA4110
+3863F16E490901F0010140EA8110386305F17800DFF4A1
+F300F047F99F49086005F18400DFF499F300F03FF99C49
+086005F19000DFF491F300F037F99949086095F89C0032
+28A8BF32208DF85400002014E005EBC00202A99E3201EB
+C0014E3153784B70401C13780B70C0B2B2F902304B80B2
+F904308B8092798A719DF854108842B8BF3228E4DB0020
+ADF80400DBF496F701A900910DF10503012202A902F0FA
+FC9DF8040020B9DBF489F703F033F848B32068164DCCF4
+70F2002820680ED0CCF46BF202A9D1F41CF56868D8B1FF
+F774FEAB682A786968FDF721FF13E0CCF466F280B12068
+CCF462F202A9026812689047686838B12068CCF459F2AA
+6829786868F8F714FE0DF5037DF0BD000038CA91000000
+803A0000803B2DE9F843614D68680028894600F0B28009
+F14806317AC90739D54FF448611CF4A7F2A86828211CF4
+A3F20020287009F10800A968FFF73CFEA86800F1080109
+F11000FFF735FE09F11800DFF4F9F200F09FF8A9680861
+09F12400DFF4F1F200F097F8A968486109F13000DFF4E9
+F200F08FF8A968886109F13C00DFF4E1F2AF6800F086F8
+F86130683862B088B88400276AE0702111FB0798696801
+EB801108F15800FFF705FE00F077F800F1080108F16000
+FFF7FDFD00F06FF800F1100108F16800FFF7F5FD00F067
+F800F1180108F17000FFF7EDFD08F17800DFF4B1F200F0
+61F820627F1C08F18400DFF4A9F200F059F86062FFB208
+F19000DFF4A1F200F051F8A06208F19C00DFF49AF200F0
+4AF8E06208F1A800DFF493F200F03DF800F1300400F035
+F8206008F1B4000188A1804188E180818821818179A172
+2A786968C07901EB821181F83B0008F1BC00DFF477F295
+F80080686800EB881400F018F8E06308F101002870707A
+8742BCBF287832288EDBBDE8F1839C938900F707FFFF8C
+C9910090C9910094C9910038CA910051EC100B1DF412B3
+6868297800EB8110704700006868297800EB811451EC10
+0B1DF404B300B583B0002001900090DBF471F66A4601A9
+02F021FFDBF46BF6009AF1940330D28000019902F021FF
+07BD70617463685F676C70655F6F6E636869705F706578
+5F6465636F6465722E6370700000000000020000000000
+0000100000000001000040000000080000008000DFF838
+0C05F0E8BD38B5044642F2E0710020085104F51C5500F0
+08F900F06AFB04F13000C3F416F0002084F8340142F639
+4184ED420A01200855E83504F530503C303DF42DF704F5
+305000213830E0F4EFF32846E1F45CF3E0F408F460688B
+F4C3F02846E1F4E0F70021E1F4E1F704F51455B0359FED
+6A0B42F2D85185ED040B85ED060B85ED080B00200855DF
+F8B04B20604FF4C8702AF45BF000EE100AB8EEC00A84ED
+010A04F1080002F0E9FF05F0ADFD01462A6804F10800BD
+E8384006F067B800002DE9F0472DED048B04468CB06068
+A6F4BFF4814604F59C7A5046BDF471F3B0EE409AF0EE60
+9A5046BDF48CF300F0ACFD41EC180B6846E1F45FF704F5
+145757F8B40F89F427F4E1F461F7050018BF01257868BE
+F413F380467868BAF4ABF6007809280CBF0126002648EA
+0500304380F001005DB17868BAF49DF60078012818BF00
+2048EA0000304380F001000299C0B2002812BF41F00100
+4808400002907868ADF430F400780299002814BF21F002
+0041F0020002907868ADF424F400780299012814BF21F0
+040041F00400029004F13000BDF415F351EC100BDFF874
+2ADFF8743A1AF4DBF702988CBF20F0100040F010000290
+3868ABF413F50028029814BF40F0400020F04000029050
+46C2F440F7DFED140AB4EE600A0298F1EE10FA54BF20F4
+007040F40070029000F01DF8024600F076FAF0EE690A4B
+46694604A8E1F4E9F67868BDF4F4F4626804A905F0C4FF
+0CB0BDEC048BBDE8F08700000000000000000000000048
+4204F13000BBF410B1FEB50446FFF744FF6846E1F4E9F6
+42F6B04004F514560059B036810EC00E00F0010080F001
+0501F00101B06881F00107BEF46CF20028029814BF40F0
+800020F0800002907068ABF4B3F40028029814BF40F008
+0020F008000290002F029814BF40F4804020F480400290
+002D029814BF40F4005020F400500290694604F59C7007
+F05EFF2046D8F4F7F53068A0F48EF110B1204600F0C4FC
+F7BD00002DE9F84F044604F51C502DED048B00F1E809DC
+B04846E1F413F2C5F419F782464846E1F40DF2E1F49DF6
+42F2D95700253855002814BF4FF005084FF0040804F530
+568436706870B96068BDF4B5F2014652A827F4E9F252A8
+39F4CAF618B16068A6F490F370602046D9F490F094F834
+010028DFEDE49A00F0F19403C0D58000B1816068BDF49C
+F2014648A827F4D0F248A839F4B1F64045C0F0A48104F5
+1450B4304068BDF4BEF4024604F1F00104F5F550C3F433
+F309A8E1F466F6395D0B98002912BF40F0010040084000
+0B9042F2B4500059ABF422F400280B9814BF40F0020020
+F002000B900B9840F004000B903CA88AF47DF46068A6F4
+48F37168A0EB010B04F13000BAF495F500F053FE04F130
+00C2F43BF6B0EE409AFFF723FF014616A8ADF44BF604F5
+0C5101F1E80842F210710391CDF808B042F2E031024609
+5D01913CAB09A9009100F068F9514640460AF050FA04F5
+305000F1380A4046C2F415F6B4EE690AF1EE10FA40F11B
+814046E1F414F600F006FC41EC190B4846E1F4EFF5E1F4
+0FF640B151EC190BDFF8C02BDFF8C03B1AF480F661D88D
+F81E504046E1F402F629F49EF0ADF820004846E1F491F5
+8DF81D004046E1F4F6F5014614A85CF44AF404F1F0010E
+A8ADF4F7F54846E1F4ECF5E1F4ECF5483039F40DF60428
+ACBF4FF0010BAB464046E1F4E5F500F0E1FD4046BAF4CA
+F70C904046E1F4E0F58DF81C004846E1F4ABF5BDF82010
+0C9ACDF800B049B20691B0EE481A9DF81D100591F0EE68
+1A01210491B0EE490A14A90391F0EE690A0DF11E010291
+0EA9019194F834319DF81C10E1F4F4F5002800F0BA8048
+46E1F484F50121E1F485F54046BAF494F700F0E2F84046
+C2F48FF5012084F8340184ED420A4046BDF437F1054648
+46E1F497F6014601232A460CA886F4E5F40CA9684684F4
+67F0694604F5947091F494F1385D68B14046E1F485F543
+F411F429F451F605464846E1F4C5F02946E0F47EF14146
+0CA8BCF4F4F5014604F13000BCF43DF64046E1F470F6DF
+EDB20A00F072FDACBF01250025385DB0B14046E1F45AF5
+28F4F6F70728B4BF0120002028430BD004F13000BDF4F4
+F0DFEDA70A29F468F58DED000A00F07AF84046C2F435F5
+DFEDA30A00F04FFD2CD5002D04BF385D002827D12046DC
+F444F4052822DB04F130010CA8BCF4B5F5DFF80C1A0091
+04F59C756946BDF411F30CA9284606F0F9F803215046E0
+F4FFF004F51450B4304068BDF4DBF2C4F4CBF72846DFF4
+B4F0BDF4EAF003E002215046E0F4EDF004F13000BDF4AB
+F0306042F639410020085501252CE05046E1F477F40128
+0FD06068BDF406F101460CA827F43AF10CA839F41BF507
+281BDB2046D8F496F417E0307A401C3072C0B2052811DB
+2046D8F48CF435720CE004F13000BDF484F0B4EE690AF1
+EE10FA03D5CDED009A00F009F85CB02846BDEC048BBDE8
+F28F00000000C843F1940350D98000694604F13000BDF4
+A5B20000B0EE481AF0EE681AB0EE490A70470000014604
+F1F00081F461B50000F8B504462DED028B04F514568CB0
+56F8B40F0D46ABF466F220B104F5F05038300AF0E2FD70
+68AEF4E7F30078022805D07068AEF4E1F30078032801D1
+012600E00026D5E90C010022DFF8D8381AF408F540F28A
+8004F5305717F88D0F00281EBFA86CC0F3001000280DD0
+D5E90E0100F04BFA08D87878401C7870C0B2042802DB00
+203870787029462046D9F463F2A86CC00800F001008DF8
+0400B0EE408AD5E91001F0EE608A1CF4FDF6039003AB01
+AA00F064F8D9F4C4F204F13000BCF458F429F4D2F48DED
+020A334602AA00F056F8D9F4C2F395ED060B8DED060B42
+F6B04095ED080B8DED040B005D40060BD42046DBF436F2
+332806D3009604AB06AA2946204600F043F89DF80400A9
+6C60F3C301A96403981CF40EF7CDE90A010020DFF80818
+CDE90801022208A90AA881F480F385ED100B04F530509D
+ED060B85ED060B38309DED040B85ED080BE1F489F30328
+0AD12046DBF404F230B104F5E850E830BEF452F285ED0A
+0B0CB0BDEC028BF1BD0100A040000048430000C842B0EE
+480AF0EE680A29462046704700002DE9FE4F2DED088B0C
+468EB0824694ED0A2B94ED081B94ED060B08A883F4EEF0
+A06CC0F3001020B100F08AF938BF012600D300260AF5F0
+5000F138084046E1F44DF546EA000700F07BF934BF0121
+00214046E1F447F542F2B850002550F80A00BAF4C4F242
+F68D490078012808BF0125229880F00100054207EA0506
+05D119F80A0020B100F066F901D2012500E000252EB919
+F80A0028B100F05CF902D20126002705E04046E1F4DFF4
+384080F001070AF59C70E1F41AF500F082F90022DFF8E0
+361AF419F51AF4A1F5834686F00100384360D14046E1F4
+0FF52168081AB0F5FA6F00D865B908A94046E1F407F501
+214046E1F407F521684046E1F407F552E04046E1F405F5
+21684046E1F4FFF419F80A0030B94046E1F401F50BFB00
+F01F283DD300F023F9014602A8ADF465F3DDE902230546
+9FED969B00F01CF9CDE90001D4E906239FED948B00F0F2
+F800F0F4F8CDE90201DDE9042300F00CF9CDE90001D4E9
+082300F0E4F800F0E6F8CDE90401DDE9062300F0FEF8CD
+E90001D4E90A2300F0D6F800F0D8F8CDE9060129464046
+E1F4B4F407E000214046E1F4B3F408A94046E1F4ABF437
+B108A94046E1F4BAF400F0B8F8B1E000F0D5F8074600F0
+D6F8394680F493F5F0EE609AD4E90C01F2EE040AB0EE40
+9AB0EE608A1CF4F19403E0DC80009DF500EE100AF0EE48
+0A29F4D5F2B1EE048AF0EE480A29F415F3B0EE40BA5EB1
+4046E1F48DF40BFB00F0B0F5967F34BFB0EE48BAB2EE00
+BA42F2E07757F80A003C2828BFB42851D3D4E90E0100F0
+A8F89FED5CAB98BF9FED5DAB002E46D100F093F8054600
+F094F8D4E910230646DFF85805DFF858151AF47FF32A46
+41EC130B35461646B0EE438AF0EE638A00F0A6F800F0BC
+FA324641EC120BB0EE483AF0EE683A2E46B0EE428AF0EE
+628A1546B0EE43AAF0EE63AA00F091F841EC110BB0EE4A
+3AF0EE6A3A2A463146B0EE482AF0EE682AB0EE490AF0EE
+690A4046E1F4D0F351EC100B1CF42AF50BEE100A00F076
+F853EC192B1AF424F303D357F80A00012807D100F045F8
+01464046E1F41DF400F01BF84046E1F41CF451EC100B00
+F02EF80DD200F031F8179990ED000B81ED000B00F02AF8
+90ED020B189880ED000B0EB0BDEC088BBDE8F78F94ED0C
+0B4046E1F403B4000051EC180B1AF40EB3DDE900231AF4
+DCB3D4E90E0121F00041DFF86024DFF860341AF4E4B2D4
+E90C010022DFF858341AF4DDB200004046E1F44FB30000
+4046E1F4E5B3000051EC190B1AF4ECB2DFF83824DFF838
+341AF4A6B20100008014AE1A400000808C5EF2EF3F0000
+0000E7425B3F0000000000001040000000000000144030
+DA890028DA89001BEE100A1CF4F4B410EE100A1CF4F0B4
+2DE9F84F2DED068BADF5487D04469FEDE70A29F47FF2B0
+EE408A04F59C70E1F481F3DFF8D453D5ED010A04F51457
+48EE000AB037C5ED010AB868AEF433F10078012840F0AD
+812046DAF4E0F70F28C0F0A7816068DFF8A493BCF4ECF5
+0146B6A85CF434F0012089F80000FA6A616884A8C4F448
+F1B6A95EA829F440F50026E3E05EA906A829F440F54CA8
+29F45BF506A85BF4CCF6002806D060680023002206A98A
+F4FAF4002800F0CC8090F85410012940F0C78000F13008
+DFEDC00A98ED070A00F0BCF907DB6068002206A98AF452
+F5B0F9F0001F28C0F2B48006A94CA829F43FF5D8F80000
+1CF47BF44FF09442C44B1AF44CF21CF42CF409EE100A20
+46DAF4A7F6C5F4E3F1804600F094F9BAF4CCF000F08AF9
+00F08EF9BAF472F3014608A8ADF486F1034600200590CD
+F8008001200490B0EE480A0020039002900190F0EE680A
+4CAA84A90EA8B9F49EF2B0EE490A29F4E0F1B0EE408A00
+F06CF9C2F450F129F4D8F1F0EE408A00F064F9BCF452F1
+29F4D0F1B0EE409A00F05CF9BCF456F178EE280A30EE89
+8A29F4C4F138EE008A95ED010A78EE000AC0EE208A0121
+0EA882F432F6F1940370E08000761C416800681CF4D1F3
+09EE100A01210EA882F427F695ED010A804630EE080A2C
+F46AF2FFF716FF02460B46D8E900011AF424F441EC100B
+29F474F151EC100B1CF4B4F300EE100AF0EE000A00F024
+F925D518EE900A1CF4F1F302460B4600207F491AF44BF3
+41EC1A0B28681CF4E6F300F004F9824628EE890A8B46FF
+F7EAFE52465B461AF482F21CF490F3286068681CF4D4F3
+00F0F2F81CF488F368605EA829F456F45EA829F451F400
+283FF416AF0020002E89F8000000F0A080684656F471F1
+024656208DF8040001A9786882F4B3F79DF80010386802
+AA85F42DF461486149CDE90401002204A902A881F424F0
+28688DED020B1CF4A1F300F087F8DDE902231AF443F241
+EC180B95ED010A2CF4F3F1DFED420A00F0BFF86CD553EC
+182B002052491AF460F141EC180B3868042185F41EF451
+EC100B4D4A4E4B1AF414F136D83968012210A885F4E8F7
+10A90CA883F49AF304A8A3F481F302208DF81C008DED08
+8B0C98ADF816000CA890F43EF729F4CCF20690386889F4
+42F428B1022809D004D3032804D007E0022006E0032004
+E0042002E0012000E000208DF8140004A9386800F09CFA
+04A8ADF4FDF120E095ED010A2CF4A0F17868B0EE409A7D
+F411F789F41DF4044619EE100A1CF436F300F01CF80022
+284B1AF406F141EC110B3868B0EE480AF0EE680A042221
+4685F403F400202860684676F49CF00DF5487DBDEC068B
+BDE8F18FCDCCCC3D4FF09442124B1AF433B300000100C8
+41FFDD3F40B7F3FDD4414C024100001644000079400080
+76400000E03F349D52A246DF913F14B233E5F03AE13F00
+004940CD26C0B0FC19FF3F28DA8900E8CB910078DEB141
+0000F03FFCA9F1D24D62503F0000F0BF01000040E17A84
+3F80842E4153EC1A2B1AF4B2B0B0EE408AF0EE608A7047
+00002046D3F4A3B30000B4EE600AF1EE10FA704700002D
+E9F0412DED048B0546D4B00E4617462969321D01A89FF4
+69F09DF80400012818BF042875D006289FED3A8B76D105
+F50C6431462046A5F405F12046A5F40AF210B1284687F4
+CEF12046A5F44DF210B1284687F4C5F2002F5BD005F618
+173879002856D10AAA0BA92046A5F455F200284FD000F0
+DDF9009800F57A7000900A981AF4DCF141EC100B0B9902
+A890F40EF738688AF40BF7B06BB0EE409AF0EE609A8AF4
+04F751EC190B53EC102B1AF4D4F1DDE908231AF418F153
+EC182B1AF442F0CDE90C010CA902A890F41CF7002202A9
+0EA891F4CBF1044600981AF4AFF141EC110B3868B0EE41
+8AF0EE618AF1940300E480001AF4A6F141EC100BB0EE48
+1AF0EE681A2246052118A882F423F70146331D04222846
+85F421F45CE1FCA9F1D24D62503F010018BF032804D084
+210FF66C30F2F72FF90DF105009FF405F202469DF80410
+A86800239FF47CF50028E4D006F1100108684A680B6910
+43CA6889681A437379C00FD20F012B03BF4B0B03F00103
+83F00103012301F04041491E80F0010082F00102894110
+40184010EAD17FC3D005F54A68404688F4E8F0002840F0
+F3807079012806BFB069040D0024F0681AF448F141EC10
+0B214605A890F412F300275CB30022311D684628F4A7F6
+28688AF448F6694658F461F7F8B128680023002269468A
+F438F2040017D0207B800614D52868A5F4E4F31AF424F1
+41EC190B94ED060B05A902A890F4A6F302A905A890F4F6
+F2012700F0F5F806D1B06B002805D01AF40FF141EC190B
+00F0EBF800F0D28000F001F91FB9009800F57A7000904F
+F4FA60009928F4E1F60090DDE9082351EC180B19F47AF7
+CDE90C010CA905A890F4FCF2404688F4B3F058B905A890
+F42BF3B0EE401AF0EE601A009900F0B4F888F484F17079
+012809D1404688F478F028B9009A05A900F0A7F888F4DB
+F02846A5F490F3B0EE408AF0EE608A36A882F427F64046
+88F464F0B0B14046A5F486F390B900F097F888F45DF000
+F0A1F8074617981AF4B7F000F0A5F800F09FF8404688F4
+72F0052749E0404688F471F0002826D04046A5F46EF310
+BB28469FF426F1F0B1012200F038F9294618A800F0A8F8
+18A902A883F442F102AA00F06BF888F45DF000F075F807
+4617981AF48BF000F079F800F073F8404688F486F00627
+1DE07079012820D128469FF400F1E0B9002205A90EA891
+F47CF0044600981AF472F041EC110B22460021B0EE490A
+F0EE690A18A882F4EFF500F051F80427331D3A4636A928
+4685F4EAF205A890F427F228469FF4DCF04FF0000878B1
+B26B0123294618A885F475F518A902A891F4ABF102A905
+A890F425F20DF114084246314605F11800A0F4FDF605F1
+1800A1F42BF010B1284686F4DBF701A875F45EF654B0BD
+EC048BBDE8F0810000B0EE490AF0EE690A40467047B0EE
+480AF0EE680A414612A87047000053EC192B0020002119
+F448B6002214A90EA891F41BB00000014636A882F410B6
+41EC110B3A4600219DED120B18A882F48FB500006B4608
+AA311D284685F48AB210B5044604F5FB60A3F4EEF220B1
+2046BDE8104087F4C6B010BD0000F8B50D462DED048B05
+F5156784B00446B0EE408AF0EE608A1646394682F45CF5
+3846A0F4F1940390E78000F5F39FED549BB0B984ED069B
+51EC180B0022DFF89C371AF4A1F041EC100B2BF4B3F653
+EC102B0020DFF8841719F44CF641EC100B01E000F05DF8
+204683F4FCF1F6B2002E52D02046A0F4D0F300284DD005
+F6D816304683F4D7F5002846D0D4E90601D6E9002319F4
+B9F7DFF84827DFF8483719F429F68DED029B8DED009B41
+EC180BE8686A4602A99EF49CF2DDE9020153EC182B19F4
+18F6D6E9022319F4E6F641EC100B204682F431F651EC18
+0B21F0004141EC100B53EC102B0020DFF8FC1619F402F6
+DDE9002305460F46DFF8F006DFF8101719F4CAF62A463B
+4619F4F4F5D6E9042319F4C2F6C4E9080104B0BDEC048B
+F1BDB0EE480AF0EE680A70470000B1F5806F0EDA90F998
+0C10F1010F06D16629ACBF01F5006101F5406102E080B2
+01EB802188B2704710B5A2B004469FED090B684690F414
+F101469FED061B9FED050B04A882F4D6F40146204686F4
+F8F022B010BD000000000000000070B59EB00D46044604
+F51166206882F4C9F338B1012D18BF052D03D1707808B1
+B07820B32946204688F4F2F0012D0CBF01210021204686
+F40BF04FF0FF3084F8980C012D18BF052D0BD0684682F4
+68F4014604F5216082F405F56FF07F0084F8880A307818
+B10121204687F47BF21EB070BD00002DE9F74F2DED068B
+D8B083463AA882F44DF409A890F4B8F006A890F4C9F168
+4690F4D4F203A890F417F458469EF464F70026C8B10122
+59461CA885F4F7F31CA93AA882F4D5F409A93AA882F429
+F606A93AA882F489F669463AA882F4B5F603A93AA882F4
+0DF70126584684F45DF7824600209FEDB79A9FEDB78B0C
+AC0DF1700808EBC00181ED008B04EB8001401C0F2881ED
+009AF4DBDFEDB19AC4ED059A0BF17000A2F491F39FEDAE
+AA38B10BF17000A2F482F388ED0A0B84ED05AABAF1000F
+0BF50C690BF5FB670BF508655FD0C4ED019AC4ED0A9AC4
+ED099AC4ED0B9A36B9C4ED029AC4ED039AC4ED049A94E0
+09A90BF11800A1F41CF040B109A90BF11800A1F424F088
+ED020B84ED01AA2846A5F4BFF170B106A92846A4F444F1
+00F08AFAC8E9120106A92846A4F4A0F100F07EFA606238
+46A3F4A0F370B169463846A3F49FF300F077FAC8E91401
+69463846A3F4C3F300F06BFAA0624846A5F4A3F130B9C4
+ED029A2846A5F48DF1C8B927E003A94846A4F415F700F0
+5DFAC8E9160103A94846A4F477F700F051FAE062E8E700
+2EC4ED029AE6D1C4ED039AC4ED049A9FE006A92846A4F4
+9AF000F044FAC8E9040106A92846A4F4E4F000F038FAA0
+60C4EDF1940320EB8000039A3846A3F432F270B1694638
+46A3F435F200F02FFAC8E9060169463846A3F457F200F0
+23FAE060C4ED049A4846A5F453F170B103A94846A4F46E
+F600F01AFAC8E9080103A94846A4F4B8F600F00EFA2061
+BAF1000F63D0CDED0C9AC4ED069AC4ED079A0BF17000A2
+F4F0F200283AD00BF17000A2F4D4F200F0FCF9CDE91C01
+DDE91C23D8E904018DED0CAA19F4DEF5C8E90C0194ED02
+0AD8E90601DDE91C2330EE0A0A84ED060A19F4D0F5C8E9
+0E0194ED030AD8E90801DDE91C2370EE0A9AC4ED079A19
+F4C2F594ED040A30EE0A0A84ED080A9FEDD70AC8E91001
+F4EE409AF1EE10FA1CDB3846A3F416F2C0B169463846A3
+F44FF200F0B9F909EE900A94ED070AF4EE409AF1EE10FA
+09D569463846A3F406F200F0AEF9C8E90E01C4ED079AD8
+E90601D8E9042319F490F5C8E9180194ED020AD4ED030A
+30EE200A84ED0C0A3846A3F44BF270B169463846A3F44A
+F200F090F9C8E9180169463846A3F484F200F084F92063
+0020B349D1ED009A0BEB8001D1F8082B00EE102A00F071
+F90BEBC0020FD008EBC00102F529621EE000BF0024F449
+00000000000000000000FA436F12833AD1F8301C00EE10
+1A00F058F914D004EB8001D1ED000AB4EE600AF1EE10FA
+0BD508EBC00102F6B83292ED001B81ED001B04EB800181
+ED000ADBF8B41BC140C9070DD5BAF1000F0AD104EB8001
+91ED000AB4EE490AF1EE10FA48BF81ED009A401C0F28B2
+DB9BF9600910F1010F7AD000277E1CC7F10B00354607FB
+00FA0EE051EC110B53EC102B19F40FF508EBC902C2E900
+0104EB890080ED009A6D1C062D5EDA9BF96009874218BF
+8542F6D0022F18BF022DF2D00AEBDA714910CA1BA91849
+1EC9B254F8213000F0F7F8E6D0C0B2C0F10B0343438742
+02DA8218521E05E003EBD37207EB6202521E121AD2B254
+F822C000EE90CAF4EE690AF1EE10FACDD0A84205DA03EB
+D3735B101B1AEB1807E0C5F10B036B4303EBD3735B105B
+1BC3185B1E5FFA83F954F8293030EE209A00F0C4F804D0
+B4EE409AF1EE10FAAEDA08EBC101874291ED001B08EBC2
+0191ED000BA2BF51EC100B81F0004141EC100B8FE73746
+062F85DB5846A0F4D3F019F485F441EC190BD8E9020153
+EC192B19F495F4C8E9020153EC192BDDE91C0119F48DF4
+CDE91C01D8E906239FED40AB51EC1A0B19F4CBF3C8E906
+0153EC192B51EC1A0B19F4C3F341EC1A0BD8E90E0153EC
+1A2B19F4BBF3C8E90E01D8E90C2300F087F8C8E90C01D8
+E9102300F081F8C8E9100153EC1A2BD8E9140119F4A7F3
+C8E9F19403B0EE80001401D8E9122300F073F8C8E91201
+D8E9162300F06DF8C8E9160100259DF97C014FFA85FB83
+45FFF7D5FC22D0024693459FED200B594603DA9FED200B
+58461146C0F10B02424302EBD272C0EB620040FA81F047
+1E08EBC70053EC102B4168006819F4A2F241EC100B54F8
+270001EE100A01E09FED151A6098594682F465F16D1C06
+2DCBDB58B0BDEC068BBDE8F78F000000006940FCA9F1D2
+4D62503F80842E413A8C30E20BD7A33B984A0900000000
+0000002CC0000000000000F03F000000000000F0BF8E79
+353E0000000000EE103AB4EE690AF1EE10FA7047000051
+EC100B1BF444B451EC100B81F000417047000051EC190B
+19F42AB370617463685F676C70655F74696D656D67722E
+637070000038B504460A4820600D4605F1080104F10800
+ACF493F105F1200104F120008FF485F595F82C0084F82C
+00204632BD00BF44C9000090F8B0097047000080B525F4
+B7F101460020002918BF032903D0062918BF0B2900D101
+2002BD000019B102291BD00DD31CE0022804D0042805D0
+062813D015E09FED360B70479FED370B7047002818BF03
+2802D0052803D008E09FED340B70479FED340B70479FED
+350B70479FED350B7047000010B50C4690F9011011B101
+2908D018E00078762815DB9A2813DA9FED2F0B10BD24F4
+E2F620B1032804D0042806D008E00CB106E02CB99FED2A
+0B10BD9FED2A0B10BD9FED2B0B10BD90F9011011B10129
+08D00FE0007876280CDB9A280ADABBEE080A7047007851
+2804DB762802DABBEE040A7047BBEE0E0A7047000090F9
+0110012902D0022908D00AE00078762807DB9A2805DA9F
+ED180B70479FED190B70479FED190B7047000000000020
+25DFD741000000C41D43D74100000020EC4AD241000000
+A8DFFCD141000000F4CC87D14100000018C079D741FCA9
+F1D24D62703F000000000000F83F7B14AE47E17A843FFC
+A9F1D24D62503F1CD8C6816D1CA8BF99968D69D99896BF
+000000000000000070B5A8B004460D46164628F41FF440
+BB214602A828F41CF409E00020864203D101A9284626F4
+52F202A828F40DF402A828F408F4A8B902A9684628F40F
+F4684628F43AF004009DF800008DF8040006D068465AF4
+95F50028DFD0012CDDD10120DCE728B070BD000038B504
+460D4624F497F621462846BDE838400122C0E7000038B5
+04460D4624F48BF621462846BDE838400022B4E70000C9
+48FCF7F7BA00002DE9F0412DED048B9EB0044688461646
+1F4604A855F4F2F002464146204681F437F79FEDBE9A80
+B3F1940340F280000020CDE9080006908DED059A06AB20
+6808AA414684F4A8F4384689F4B1F7DDE9082351EC100B
+19F481F241EC180B0CA881F452F5DDE908230746A568AF
+48B04919F4EAF000973346CDE90A012E6876690AAAB0EE
+480AF0EE680A04A92846B04728B904A875F47EF0B0EE49
+0A1DE0A068299B289A05A9039100210291019100910CA9
+0668B66AB0479DED050AB5EE400AF1EE10FA04D5A06802
+68D2694146904704A875F45FF09DED050A1EB0BDEC048B
+BDE8F0812DE9F0410446E8B020689EF4ABF200283ED021
+6801224AA884F43EF70025894E2946204680F444F40700
+2ED03A68D2F88C20394602A8904702A924A89EF484F20E
+E04AA906A881F483F7024641463046FCF714FE684679F4
+27F024A89EF47AF224A89EF479F280B924A89EF477F2C1
+B268468FF479F13B681B6B01460122384698475FEA0008
+DCD1E4E76D1C072DC7DB68B0BDE8F081000070B582B00C
+4615461E467CF45DF6024600962B4621466548FCF7EEFA
+76BD0000F0B5A5B004460D4616461F4612A881F4ADF45D
+48049002A890F4FCF5684690F4F9F506A890F4F6F50146
+02AB6A460CA880F4C4F006A890F4DFF512AB3246294620
+46FFF7CDFFA0B139460CA880F4EEF02A9906A880F41AF0
+A06804A9039106AB00210291019100910CAA0468A46A12
+A9A0479DED040A25B0F0BD000010B50446D4F8BC0208B1
+97F4EFF3012018E0000010B50446A068016889688847D4
+F8BC0208B197F4EBF3012084F8B30910BD000010B50446
+D4F8BC0208B197F4E3F3002084F8B10910BD0000F8B52D
+ED028B0E46A0B0054630780024052850D10E2101A88FF4
+E6F00146701CE4F408F370B9122168468FF4DDF0694670
+1CE4F4FFF2070018BF0127684678F473F700E0012701A8
+78F46EF79FB33178284680F487F370B303681B6B012271
+1C9847060027D03168C96B8847032822D12968012202A8
+84F44FF63168C96A3046884733681B6A0546012202A930
+469847B0EE408AF0EE608A680819F41FF100220B4B19F4
+71F053EC182B23F0004318F459F798BF012420B02046BD
+EC028BF2BD0000B4C29CC89100FCA9F1D24D62503F0000
+5EC02DE9F24F0446C81D0E28BEB004D317210FF25C40F1
+F7A0F820687CF477F59EF47DF180469DF9F800C01D8DF8
+12000C219DF8120011FB004000F5CA7694F85104002824
+D104F558794146484698F446F478B14846A9F43CF40546
+2168484698F447F435B94846A9F433F410B1204698F4F5
+F3B07A3268717A00281BBF707A012801200020424504D1
+F19403D0F58000002901D0002866D1A3E1C6F8008049B1
+D24B726853F82110A8EB02028A4258D30020707204F585
+6700253868CC49884205D0A8EB0000CB4A90424ED33960
+B07A0028E1D1C6F804804846A9F405F40028DAD025B900
+F090F9002084F83C029DF81000002804BF9DF811000028
+CCD02068A9F4F6F30690002504A82F5C002F73D0394668
+468FF402F00146069803681B6B012298475FEA000A63D0
+DAF80010C96B884701285DD14846A9F4DEF3014650468A
+F4CAF4002854D137725046DAF80010C96C884700281DBF
+01200021B172022039E00028A6D0307A3CE100F04DF984
+F83C5201259DF8100004F22C4A80B1F8689DF81010C840
+C0070AD59DF8110020B10146504627F450F310B19DF810
+0012E09DF81100002892D0F968C140C8078ED59DF81000
+28B10146504627F43DF3002885D09DF811000028FAD003
+2171723072C6F8048006E100F023F9707A20B1B17A0029
+18BF012801D06846E9E0347A6846EBE0684678F432F66D
+1CEDB2022D83DB4846A9F47BF3002800F0EB804846A9F4
+77F34FF496720421B0FBF2F027F484F50FF27021C0B200
+254056099004A8285C0790002800F0D080014605A88EF4
+6EF72CA881F4C9F2069803681B6B012205A9984700275F
+EA000A3BD04846A9F44CF3014650468AF438F498BB5046
+A4F4C2F401280ED1DAF80020926D04215046904710F108
+0F05D19DF9F820069805A997F435F24846A9F430F3DAF8
+00305B6B01462CAA9FED550B50469847DAF80010C96B83
+4650468847012818BF022806D1DAF80010C96C50468847
+00B10127BBF1000F32D1206887F4DCF1DAF4DEF110F048
+0F77D112A8FBF73AFF05A89EF413F0024612AB02214248
+FCF76FF8002869D0484608F092FE8246524612A90AA8FB
+F7C0FF00220AA90DA88FF481F70246514668468FF45EF1
+68468EF495F700232CAA12A93348FCF7D3F88346BBF100
+0F49D0314808902068A4F414F582464846A9F4DAF28346
+4846A9F4D8F208A90391024600210291019100915B46DA
+F800C0DCF828C02CA95046E04709A8DDED080A90F90000
+00EE100AB8EEC00AB4EE600AF1EE10FA1FD50798307247
+B14846A9F4B1F20A2803D200210120B17200E0032000F0
+38F8707A20B1B17A002918BF012803D005A878F44CF50D
+E0347A05A878F447F5204608E005A878F442F56D1CEDB2
+022DFFF625AF00203FB0BDE8F08F0000E0810A00FF2292
+FF40771B0000000000000000009CC891000000B4C20120
+84F83C020DF111039DF9F81004AA204698F4BDB00000F1
+940360F98000707241469DF81220204698F4B9B1000038
+B50C2312FB0305004C01E0FF2292FFC5F8E84113FB0103
+C3F83442BDE8384070B504460D4694F83804164628B9F8
+22182104F2394019F4C9F6012084F83804281980F83864
+70BD70617463685F676C70655F676C6F66636E6F736E6D
+67722E6370700000050A0F2D0000002DE9FC4F83B08046
+D0F494F3002840F0CF8000F0F9F901904FF47A70009000
+200E99012608704FF47A731C2101FB008101F214610A78
+3AB18988D8F88C2659438A42894106EAD176401C0328ED
+D30198DFF8C89600F5FA700127029008F5C66408F26A65
+24E0022F20D199F80000E16A0028029814BF95F800A04F
+F0000A88426BEB0B0B6FEA0B004FEAD07B287848BBD9F8
+080030B300F0B7F9D9F80810D8F88C26511881428041C0
+0F1CE0012F38D1E06810B92878002106E0029922690020
+91428941C943C90F22780843024228D00198E0604FF47A
+720198A18802FB010020611EE00020217FD9B14AEA0B01
+81F00101314303D0A6B12978084311D00198A0624FF47A
+720198218C02FB0100E06201200E990870BAF1000F1CBF
+002089F800007F1C032F9ED39DF80C1008F5C260A9BB08
+F2BC66717839B13178022902BFA97C012941F2883006D0
+A97C01291CBF0078002801D07068009008F28C610098C9
+6A88420AD008F28C60806802680099D2689047009808F2
+8C61C862A87C012804D13078012818BF012000D1002004
+990870404605B0BDE8F04F0022E8E10079002804BF207F
+002802D10E990120087005B0BDE8F08F000000F214610A
+78097F90F84C0642EA410141EA8000C0B270472DE9F047
+4FF6FD748046A14282B008F27465DFF83C650FF23C593B
+D100F0CCF80FF2605276690FF2E0540E21B0472E6A00F0
+02F903463046D8F8C4160FF2705200910E2136687669B0
+4798F869060FF28452002814BF54214621286A00910E21
+0668D8F800307669B04700260DE0182101FB0681286A09
+7F009133460768D7F814C022460E21E047761CD8F80000
+8642EDD38EE04FF6FF7C614508F21464DFF8AC742AD116
+2028F42DF10FF28C5A40B124F434F2CDF8009033465246
+162128F435F100F079F8766952460E21B0474046FFF78A
+FFF8701C21012088F8BE06E068E86320461AF4C6F61C21
+08F5C6601AF4C1F6002088F869065BE04FF6FE76B14227
+D1207850B9E06068602860286A0168096988470020B880
+0120B870F87868B14046FFF761FF0321084207D000F084
+F80546D0F40BF52946D1F41EF5404600F0D7F90020F194
+03F0FC800088F8BE0602B04046BDE8F0476EE04FF6FC76
+B14204D1BDE8FC470121D9F48EB5180507D501202077E1
+83208463840020E0621CE018061AD4012020706180A280
+E3800A9800B9032020810B9860810D9E0EB9002002E000
+F04DF830182061002E0CBFE86B0020E06066610E98A061
+BDE8F3870000286ACDF800903346066870472DE9F04180
+4682B00F461446162028F497F058B124F4A0F10FF27431
+DFF86C330FF26C420091162128F49EF008F24C65DFF854
+635FB101202870AC8000F01AF80746D0F4A1F43946D1F4
+B4F403E000202870A880F0800020286101203070404600
+F064F9404602B0BDE8F04100220121B6E000004046D9F4
+C5B500002DE9F0478046894627F4EEF04846D9F4BBF509
+F214658246E86809F5CD6630B9B17821B169694C1EA441
+E40F00E00024002804BF6869002807D0306D29695044A0
+F5FA70884228BF0124B078AF4F58B9B86848B14846D9F4
+97F5B968726A511881428041C00F00E00020A979890703
+D5B97809B1B1780C43012100224FF47A734FF01C0C0CFB
+029C0CF2146E9EF800C0BCF1000F0AD0BEF804E0D6F824
+C003FB0EFEF4456CEB0C0C01EADC71521C032AE6D32A78
+02B384F001020A4303D0D9B1B178084318D0C5F80CA0A8
+8803FB00A028614046B5F9021026F4C0F63069401C3061
+B07820B1F068401CF060002000E00120B8700020686128
+7F00281CBF3078002806D0B5F91E104046BDE8F04726F4
+A5B6BDE8F08700002DE9F843804608F26A650C46687F79
+4F84F0010630430ED14046FFF739FE38B9FFF75EFF8146
+D0F4E5F34946D1F4F8F3FFF756FFB8606C7714B9002028
+70B86032464046BDE8F8435FF000012DE9F84F82460AF2
+BC640027A0786FF0504800281646C1464ED10AF27C6531
+B92078012818BF022801D0607870B92F7000215046D9F4
+14F583465046D9F4F2F45844C345A06006D1012709E028
+780128EED10121EDE7286958453CBF0127D946287B48B3
+1EB13FBBA869012118E0E87A88B157B1A8690268926800
+2190470120A8720020C145686008D1A86901684968BDE8
+F44F084747B1C145F6D0A8694946BDE8F84F0268126810
+47A86902689268BDE8F84F01211047BDE8F18F4FF47A72
+5143C0F88C16704770B5044604F5D3660D46356024F450
+F03AF4C4F4706085B94FF4C161204619F4CBF22F480021
+8180C180816001700121817000214170C160016170BD28
+4841707047000026484078704700002448C16002617047
+2248C3680B600069106070471FB5029103920021F19403
+800081000020D0F419F20168896B884708230468A46902
+AA48F2A311A0471FBD70B500F24C6400F2146521782878
+134EE8B1C1B1A188A88827F4E8F0A988B1804FF47A73A2
+88F2804343226C9A4214D291FBF0F111FB00F1A980F188
+91FBF0F111FB00F008E0B08838B1A88070BD00291CBFF0
+88002800D0A08070BD849389003BD307002F2F6465706F
+742F636C69656E742F636F72652F72656C2F476F6F676C
+652F5032312F3530363031362F2E2E2E0000007E24247E
+5056542044756D70203A20474C4C207665722E20256C75
+20666C61677461696C3A25730A000000007E24247E5056
+542044756D70203A2054203D20256C752C204E54203D20
+256C750A0000007E24247E5056542044756D70203A2047
+656F66656E6365203A206E756D203D2025642C20496E64
+6F6F72203D2025630A000000007E24247E505654204475
+6D70203A2047656F66656E6365203A206964203D202564
+2C20737461747573203D2025640A00474C4C207665722E
+20256C7520666C61677461696C3A2025730A0000474C4C
+207665722E20256C7520666C61677461696C3A25730A00
+000070B52DED068B06469AF488F4022804D130469AF47F
+F4022802D0112100F0EAFB0122022100F0FCFC00F0F2FC
+00F0F7FCB0EE409AF0EE609A00F0F0FCB0EE40AAF0EE60
+AA53EC182B51EC190B18F4F6F004460D460222022100F0
+E2FC51EC100B00F0D2FC02460B462046294618F430F301
+22DFF83C3C18F4A1F025D9022200F0CEFCB0EE408AF0EE
+608A0122022100F0C7FC51EC180B53EC102B18F459F221
+F00041DFF8102CDFF8143C18F487F00BD900F0B4FC00F0
+0CF806D30222022100F0AFFC00F005F801D2002000E001
+2045E251EC100B0022002318F494B038B5044604F10C05
+002028726872A872204608F02FF900202860686004F555
+60DFF8B81B016000220021416004F69450002300252EC0
+04F65850BDE83440382119F44AB12DE9F84F2DED0E8B0C
+46ECB0206BDFF8881B8842154600F0678105F110009AF4
+EDF3A0B904F14C004EC84EC5606B1AF49FF2CDE9080110
+3D00F072F900F06EF900F066F900F076F900F06EF922E1
+05F19800B7EE000A90ED019AD0ED029AD0ED060A216BD4
+ED0EBA94ED0D8AD5ED26AA94ED0FCA94ED1ABA94ED1BAA
+C0EE20CAD0ED070A006A80EE20DA401A00EE100AB8EE40
+0ADFED970A60EE20DA2BEE89EAB0EE4E0A08EE2A0A00F0
+2EF9CDE92C0128EE090A0BEEA90A00F026F9CDE92A012B
+EEAA0A9FED8C8B0CEE090A8DED288B8DED268BF1940310
+04810000F018F9CDE924010CEE29EA1EEE100A1AF444F2
+CDE922016DEE8BBA2BEEAA0A8DED208B8DED1E8B00F004
+F9CDE91C012BEE890A00F0FEF8CDE91A012BEE2C0A00F0
+F8F8CDE918016DEE8AAA2AEE890A8DED168B00F0EEF8CD
+E914012AEEA90A00F0E8F8CDE912012AEE0D0A8DED108B
+00F0E0F8CDE90E0128AB0EA80C902AAA10A80B902CA912
+A80A90002614A8099016A8089018A807901AA806901CA8
+05901EA8049020A8039022A8029024A8019026A800904A
+A87BF453F706F1010B012200F0B4F88146022200F0B0F8
+8046032200F0ACF88246042200F0A8F8074604EB8600C0
+6C1AF4DAF1CDE9000128681AF4D5F102460B46D9E90001
+17F4A5F7DDE9002318F473F0CDE9000168681AF4C6F102
+460B46D8E9000117F496F7DDE9002318F464F08046A868
+89461AF4B7F1DAE9002317F489F742464B4618F457F080
+46E86889461AF4AAF1D7E9002317F47CF742464B4618F4
+4AF01AF458F102A941F826005E46042EA8DB02A84EC84E
+C5022202214AA808F042F8103D05F1A40106A808F05CF8
+06A905F110007CF4E1F028A87BF432F605F110024AA97B
+F4E1F74AAB012228A905F110007CF41EF004F1340106A8
+08F043F806A905F110007CF496F005F11000FFF722FE70
+B9606B1AF466F1CDE9080100F03AF800F036F800F02EF8
+00F03EF800F036F8206B05F19801086204F1400105F1A4
+0008F042F805F19800216E8161616EC16104F1400005F1
+980108F03CF86CB0BDEC0E8BBDE8F18F00006F12833A00
+0000000000000059464AA880F458B310EE100A1AF430B1
+CDE90401E06B1AF42BB10000CDE90601A06B1AF425B100
+000146842205F1100018F4E2B7CDE9020104AB02A80090
+06AA08A90AA87BF410B670B50C462DED068BD4E9060115
+461E461AF4C2F008EE100AD4E908011AF4BCF008EE900A
+7DB195ED020AD4ED150A30EE600A30EE088A95ED030AD4
+ED160A30EE600A70EE288A28EE080A08EEA80A06F11C05
+29F447F785ED000A94ED1A9AD4ED1B9A39EE290A29F43D
+F7F0EE000A85ED010A60EE200AB6EE000A26F411F6D5ED
+000A00F083F84CBF012000206876687E58B3F0EE480AB0
+EE680A29F4EDF6B5EE400AF1EE10FA44BFDFED5E0A30EE
+200A9FED5DAA20EE0A0A85ED020A29EEA80A20EE280A69
+EE080A00EE880A29F40AF7D5ED000A60EEA00A80EE200A
+60EE0A0A9FEDD80A26F496F502E0A8609FEDD60A85ED03
+0ABDEC068B70BD00002DE9F043154687B006466869DFF8
+44970C461AF48BF041EC120B95ED021B95EDF19403A007
+8100000B684606F6385880F4AAF206F5556605F1340731
+6849450DD1002070600020B87069467068E86234604046
+7EF434F607B0BDE8F0833978B9B195ED070ADFEDBC0A00
+F015F810DB014640467EF400F000F00AF900EE100AD6ED
+010A30EE200A86ED010A30684845D9D03878D8E70000B4
+EE600AF1EE10FA7047000030B5044604F68C50CFB00021
+0170007E002839D0204607F053FFA8B31EA807F057FF02
+A807F064FF1D252946204607F093FF014602A807F0ABFF
+1EAA02A92046FFF76EFD6D1E6DB2002DEED522A89AF465
+F100281EBF0E98DFF85C16884213D004F658552B461EAA
+02A92046FFF7FCFE009522AB1EAA02A9204600F01DF90E
+992A462046FFF76EFF4FB030BDDB0FC940E12E65422DE9
+F0412DED088B04468AB094F8A40D00280D46B0EE409A16
+4600F09480002E00F08E8000F0B0F900F096F809EE900A
+022200F0AAF900F08FF80AEE100AB1EE691AF0EE4A0AB0
+EE690A684607F084FF0322032100F07DF80646032200F0
+78F80746012200F074F88046D6E9000119F47DF701EE10
+0AD7E90001B0EE418A19F475F700EE900AD8E9000100F0
+F7FA00F017FB06A807F060FF0246694603A807F063FF01
+466A46204607F064FF0222022100F04FF80C3400F0E9FA
+08EE100A0422022100F046F800F0E1FA0AEE900A042204
+2100F03EF800F0D9FA08EE900A00F0C9FAB0EE40BA00F0
+C1FAF0EE000A6AEEA00A60EE890A60EE8A0A60EEA9AA68
+EE0B0A68EE80BA30EEEABAB0EE4A0A26F40FF50BEE80BA
+84ED00BAB0EE4A0A26F407F5B0EE40AA00F0A1FA48EE0A
+AA28EE808A00F09FFA48EE00AAC4ED01AA02E0FE2100F0
+0DF80AB0BDEC088BBDE8F081012128469AF48CB051EC10
+0B19F406B70FF24860EFF744BE2DE9F0438046CFB098F8
+A40D894618B1404607F03BFF20B14046FFF761FC002042
+E01EA807F056FE02A807F063FE404607F034FF471E0026
+7CB22FE02146404607F08CFE014602A807F0A4FE1EAA02
+A94046FFF767FC22A89AF462F000281EBF0E98DFF85814
+884217D0382000FB0490A0F138052B46324602A94046FF
+F7F6FD009522AB324602A9404600F017F80E992A464046
+FFF768FE1EAE641E012CCDDA4046FFF71DFCB8B24FB0BD
+E8F08300000000344300000000CECCCC3DF8B52DED068B
+9EB004460D4617461E4668468FF45DF2002F30D09FED43
+2B286D00F02CFA9FED42AB00F092F800F0F6F9E86C00F0
+29FA00F08BF800F07DF818A87DF4D8F2024629460CA87E
+F4F5F1786819F4C2F641EC110B386800F0F19403300B81
+0009FA00F06BF812A87DF4C6F202460CA906A87EF4E3F1
+06A968467EF475F402E029467EF471F400F06FF800F067
+F8022100F06CF853EC182B51EC100B17F446F519F454F6
+04F6385400EE100A29F4F4F42A9E286BD3493063B0EE40
+8A012086F83400A06988421CD096ED070ADFEDCA0AFFF7
+36FE15D5694620467DF4F3F551EC100B0022C94B17F433
+F40AD294ED000B86ED000B94ED020B86ED020BD4E90401
+09E09DED000B86ED000B9DED020B86ED020BDDE9040119
+F419F6706186ED048AE86DB0611EB0BDEC068BF1BD0000
+000000000000000000000000F0BF41EC100BB0EE492AF0
+EE692AB0EE481AF0EE681A7047000053EC1A2B17F416B4
+B0EE408AF0EE608A0222704701220121304699F47FB700
+002DE9F84F2DED0C8BB8B004464F9F894690469B461FB9
+4FF4A671FFF7D7FE04F69455287C002820D0DFF864A2D1
+4503D1684607F049FD1CE1204607F011FEA8B9204607F0
+15FE461E00E0761E36B2002E0CD43146204607F06BFD00
+6B5045F4D04845F2D32046FFF725FB06E19FED8B2B6868
+00F04BF900F019F9286800F04CF900F01CF901463A4616
+A87EF4E1F29FED831BA86800F034F900F010F901463A46
+10A87EF4D5F2DDE9160119F495F5099009ADDDE9180119
+F48FF56860DDE9100119F48AF5A860DDE9120119F485F5
+E86001220121384699F411F7FFF773FE09EE100A022201
+21384699F408F7FFF76AFE09EE900AB1EE491AF0EE690A
+B0EE490A06A807F05FFD4E9F0322032100F0CBF8064603
+2200F0C6F80546012200F0C2F88246D6E9000119F457F5
+01EE100AD5E90001B0EE418A19F44FF500EE900ADAE900
+0100F0D1F800F0F1F80DA807F03AFD024606A9684607F0
+3DFD014606AA03A807F038FD0222022100F09DF800F0C4
+F808EE100A0422022100F095F800F0BCF80BEE900A0422
+042100F08DF800F0B4F808EE900A9BED000B9BED02AB53
+EC102B51EC100B17F436F305460E4653EC1A2B51EC1A0B
+17F42EF32A46334617F4FCF319F40AF500EE100A29F4AC
+F3F0EE40DA00F082F8B0EE40AAB0EE6D0A26F4DEF2F0EE
+40AA00F07CF8B0EE40BA00F078F8B0EE40CAB0EE6D0A26
+F4D0F2F0EE40CA00F06AF8B0EE40DA0522052100F04BF8
+09A90291B0EE000A03A9009101942BEE800A4168006820
+EE2D0A20EE290A20EE099A19F4D1F4F0EE490A48EE0C0A
+28EEAC0A40EE0D0A04F10C0728EE0A0A02EE100A30EE49
+0A68EEAA2AD7ED011A97ED001A02EE8B0A5B4642464946
+1CA807F001FD0146204600F0A3F838B0F19403C00E8100
+BDEC0C8BBDE8F18FCDCCCC3D0000F03F8EEDB5A0FF2292
+FFF7C6B03E0000594000000000000000000121384699F4
+18B641EC110BB0EE482AF0EE682A7047000041EC100BB0
+EE492AF0EE692AB0EE481AF0EE681A684699F485B60000
+B0EE490A26F45EB2B0EE690A26F45AB2B0EE481AB0EE60
+8AF0EE418A19F470B44168006819F46CB4B0EE418AF0EE
+618A19F4AEB4B0EE428AF0EE628A19F4A8B4B0EE418AF0
+EE618AB0EE429AF0EE629A19F49EB400EE100AB0EE681A
+F0EE480A7047000070B500F694550C46287C002831D001
+2100F034F80646286819F488F400F02AF819F43CF42860
+032100F028F80646686819F47CF400F01EF819F430F468
+60022100F01CF80646A86819F470F400F012F819F424F4
+A860042100F010F80446E86819F464F4D4E9002317F408
+F319F416F4E86070BDD6E9002317F400B320467FF451B6
+000070B504460E4694F8A40DB8B1204607F063FB04F114
+05002895F90100314606D000F014F800F00CF868782870
+70BD00F00DF800F005F8A878401CA87070BD000004F115
+01204607F075BC0000702210FB0240183007F0A8BB7061
+7463685F676C70655F6E6176737466696C7465722E6370
+70000070B504460D461646284604F65851382218F4D4F2
+296BD4F8900D3246BDE8704085F414B030B58BB004460D
+4668460FF25801282218F4C2F2284622F4CDF630B10328
+12D0042809D005280ED00FE02878001990F8030E032809
+D106E029786846081810F8510C032801D1012000E00020
+0BB030BD80B5A2F4F9F6042816BF03280120002002BD00
+0002020202020303030303030303030202020303030303
+03030303030303030303030303030300000010B5044604
+F599504AF482F041F21C310020085510BD000040684968
+401A0128ACBF4FF0FF30C00F704700002DE9F04FADF284
+4D044689461546984600264FF00C0B6CA80BFB060007F0
+EAFB761C3C2EF7DB05A825F4CCF7079840F04A0007904F
+F0000A4EA89CF4E9F730A89CF4E6F703464EA800900022
+216808A87FF462F108A89DF47DF3002708AEF9B230A89D
+F40DF1AAF4D7F050B1F9B24EA89DF406F1AAF4D0F000F0
+010080F0010000E00120B8557F1C072FE8DB206885F4F5
+F4D8F4F7F410F0480018BF01208DF80C0049460AA826F4
+F7F3DDF8A89411E06CA90BFB0A119DF810200A7048600F
+720AF101005FFA80FA02A873F4C1F00AA826F4F0F30AA8
+26F4EFF3002847D1BAF13C0F44DA0AA904A826F4DCF320
+689CF413F3014604AA02A89CF4D8F0F194035012810020
+680DF1090302AA04A98DF4E3F10028DCD020689CF410F3
+9DF809209DF8081000239CF46DF60028D0D0CDF8048000
+954B46206805AA04A9FDF7C6FF26F448F29DF808109DF8
+0C20895D0027114308BF10F15A0F0AD1CDF800802B4620
+684A4602A9FEF77BF826F433F201270528A1DAACE7BAF1
+020F06DBDFF808350C2251466CA899F451F490342046FF
+F725FF002508E06CA80BFB0501087A10B92046D3F46DF5
+6D1C5545F4DB002508E06CA80BFB0501087A10B12046D3
+F460F56D1C5545F4DB30A89DF4C8F24EA89DF4C5F20DF2
+844DBDE8F08F00002DE9F84F2DED0E8BCAB00446ADF580
+5D20680D467AF48AF69CF490F204F50451064610310020
+088104F5045010304660287D00F001072868B7F4B2F128
+68B8F4CBF700F04BFA4FF09442DFF8383417F4B9F241EC
+180B29462046D3F4D3F501202074287DC00627D42868B9
+F44FF3DFED0A0A00F01FFA00D40FB1012020742868B9F4
+44F3DFED050A00F014FA08DB3FB900202074EEE100BF01
+0048420100C843207C0028F6D051EC180BDFF8DC23DFF8
+DC3316F4FDF7EDD92868B9F44DF300F00DFA41EC100B29
+F48BF000F0FFF900F0F7F941EC1D0B2868B9F43EF300F0
+FEF941EC100B29F4A6F000F0F0F900F0E8F941EC1C0B28
+68B8F46FF700F0EFF941EC180B2868B8F45CF725F4D6F7
+B0EE409A53EC182B51EC180B17F40AF00746894619EE10
+0A19F42EF23A464B4617F4D2F041EC100B29F482F053EC
+102BD448D54916F4F6F741EC1B0B287D80074CBF9FEDD2
+9B9FEDD39B0027FCA8482101FB0700DBF4CCF17F1C2F2F
+F6DB2868B8F424F700F0B4F941EC180B2868B9F4C7F200
+2700F0ACF90022C84B16F4B6F741EC1A0B12D253EC1A2B
+00204FF0804116F4C8F741EC110BB0EE480AF0EE680A25
+F4E8F6B0EE408AF0EE608A0AA879F431F72868B7F4F0F0
+01460AA87DF4A2F70AA968467CF4EEF5694610A87EF46A
+F02868B9F491F281462868B6F431F62868B0EE40EAF0EE
+60EAB7F4D4F08046A6EB090000EE100AB8EE400ADFEDAA
+0A80EE200A00F065F902460B46D8E9000116F489F753EC
+1E2B17F457F0CDE9160120687AF47EF5014608AB06AA68
+4683F47AF19DED060B25F496F717F4E6F041EC100B26F4
+14F28DED180B0097002321680022DEA87EF471F704F118
+02DEA9C0A89CF4B1F6C0AADEA9A2A89CF47AF6DEA904F1
+18009CF42BF6A2A89CF41AF600B96082608A401E608200
+B2012808DA3C20608200960AAB696810AA2046FFF7C1FD
+A0680FF2342AD7F424F4804604F5F19403E01581009851
+B0317CA826F401F204F1900912E05846DBF46FF158B959
+4634A8DBF470F1FCA8482234A917FB0200D3F4C7F07F1C
+7CA826F4F9F17CA826F4F8F1002840F096807CA903A826
+F4E7F16AA87FF474F3002102910AAB69690090C90801F0
+010101913246A06803A979F434F3C8B120689CF40CF101
+4603AA68469BF4D1F620686AAB32466946FDF791FE38B9
+03A94846D3F480F3684672F495F6C9E7684672F491F603
+A94846D3F453F35FEA000B04D140F20F115046EFF703F8
+03A940467FF4FBF458B103A940467AF4BCF38168059140
+68049004A8029005A800E002900190B0EE495A6AA80090
+F0EE695A2168B0EE4B4AF0EE6B4AB0EE483AF0EE683AB0
+EE4A2AF0EE6A2AB0EE4C1AF0EE6C1AB0EE4D0AF0EE6D0A
+0AAB32465846D3F4E4F0594658A8DBF4ECF09DED620AFE
+EE000A00F064F816D4594646A8DBF4E1F09DED460BD3F4
+7DF300287FF462AF594622A8DBF4D6F09DF8B400012803
+D1206803A97EF46CF603A94846D3F414F360E73FB217B9
+0020608218E02868B9F46FF104F5045010300025078104
+F504501030466042F2101248206843FCA9125941188018
+D3F40CF06D1C2F2DF2DBA2A89DF48CF0C0A89DF489F0DE
+A89DF486F04AB00DF5805DBDEC0E8BBDE8F18F000078DE
+B141010000E08E79453EE6ABFF8564AF0A400000000000
+0059400000000000002440000079404111810000007A44
+B4EE600AF1EE10FA7047000051EC100B53EC182B16F432
+B62868B0EE408AF0EE608AB9F41DB1000010EE100A19F4
+50B070617463685F676C70655F6E61766169642E637070
+00000010B5044624F4DAF6DFF84C0D007818B1A06820F4
+8050A060204610BD2DE9FE4F2DED108B0446ADF53A7D20
+6F40689DF8301307903022CA9812FB010808F12C000490
+20A87FF456F2E16E096A0090CA0902F00102029201F001
+01019104F10803D8F814200499204679F412F2002840F0
+DF8498A87AF4B6F476A87AF4B3F40020069005909FEDD5
+9B206F4169002914BF012700270169002914BF01250025
+E16E0A7D002A16BF012A4FF001094FF000098068002814
+BF4FF0010A4FF0000A9DF85803B0EE49AAF0EE69AA04F5
+826670B191F8200080060AD5306807687F6A002304F120
+0220A9B84700F0BEFE92E0012A07D0F0687FF4BAF300F0
+010080F0010B01E04FF0000BE06E0721183025F422F200
+EA0B0B049904F5BC707FF4ABF3E8B1BAF1000F14BF76A9
+0021B9F1000F14BF98AA00223068019100230393029300
+9200F0EAFC049900F08FFE04F5F1940370198100BC707A
+F457F281680691406805902EE05BEA05004BEA070714BF
+05A90021002F14BF06AA0022BAF1000F14BF76AB0023B9
+F1000F14BF98AF00273068009703910292019300F0C2FC
+BBF1000F00F066FE0DD09DED050AB5EE400AF1EE10FA06
+DD0499DDED060A04F5BC707AF4E9F1E06E007D002818BF
+012826D126A87FF458F300F086FCCDE9000128A87FF451
+F300F07FFCCDE902012AA87FF44AF300F078FCCDE90801
+08AB02AA694654A87AF42AF4014698AB012232A87AF460
+F6012201217FF460F190ED00AB206F016931B194F87420
+01EB8201059A41F8042C416931B194F8742001EB820106
+9A41F8042C806948B194F87430882717FB0300842276A9
+883817F4CFF503A852F4CCF40246049970687FF411F350
+B1E06E016AC9040AD52368027D04991B6A2046984718B9
+00F081FD0220D6E39DF80C10B06808AA81F47BF7DFF860
+0DDFF8601DCDE900010022694608A87DF470F3DDE92C23
+9FED4ECB8DED080B51EC1C0B16F4BEF441EC1B0B98F82E
+0050B904990022204600F0D4FD51EC100B00F052FD41EC
+1B0B049859F433F0032830D100200090706885F460F069
+4685F4A9F438B39DED000AB1EE400A00F038FDDFF8F42C
+DFF8F43C16F494F4CDE9080170687AF48DF285F499F701
+2812D170687AF486F281F4E0F660B170687AF480F281F4
+18F7DDE9080153EC102B16F404F6CDE90801DDE9082351
+EC1C0B16F472F441EC1C0B04993069002286F4A3F000F0
+07FD41EC1D0B08F12C0025F44FF3012806DB98F82E0018
+B1B0EE49DAF0EE69DA00F092FB0746D4E90E0153EC182B
+16F423F553EC1C2B16F41FF553EC1B2B16F4D3F553EC1D
+2B16F417F5C7E900019DF85803002849D0E06E90F82000
+012740062FD59DF80C0052F449F40546082D0DD1ED210F
+F62C40EEF751FD0BE000000000000000000000004A78DE
+B141002D18BF032D05D004980078562803DB762801DA14
+270EE0062D08BF04270AD0022D08BF0A2706D0012D03D0
+512802DB562800DA02270499F068002286F410F70546CA
+989DF8301301903A460798009094F87430CB987AF4F7F0
+C5F8D8000521E06E183025F480F0002800F0E8828DED10
+9BB0EE498AE06E017D0129F0EE698A00F07AFC00F09E80
+006AC00540F19A8012A887F423F1029004F1080305A801
+9003A906A800902046D8F8142079F444F0694612A887F4
+2CF120B1DDE900239DED008B1CE00EA912A887F42CF120
+B1DDE90E239DED0E8B12E00AA912A887F42CF120B1DDE9
+0A239DED0A8B08E00CA912A8F19403001D810087F42CF1
+48B1DDE90C239DED0C8B0020002116F473F441EC1B0B9D
+F80C00022810D1049BDFF8FC2C93F900303B3B5BB202EB
+C30251EC1B0BD36B926B16F48CF341EC1B0B00F0D4FA02
+280BD000F0D0FA052807D000F0CCFA0C2803D000F0C8FA
+082804D153EC1B2BDFF8F40C16E0049825F45EF2012817
+D1049858F4F5F620B953EC1B2BDFF8D00C08E0049858F4
+ECF6042809D053EC1B2BDFF8C00C4168006816F45AF341
+EC1B0B08F12C0025F440F2012804DB98F82E0008B100F0
+E5FB10A912A887F4D5F028B1DDE9100100F0E6FB41EC1B
+0B049AD8F814109DED100BB0EE481AF0EE681A204679F4
+52F1206F94F8741000687EF46EF70746D8F81C0016F49D
+F4DFF8242CDFF8243C16F425F3D8E9002316F4F3F3C7E9
+000100F057FA074651EC1B0BD7E9002316F4E8F3C7E900
+019FEDD1DB206F8768002F5DD0E06E007D03281AD100F0
+62FA00F072FA00F064FA0546022200F06EFA072200F05E
+FA052200F028FA0746032200F064FA4168006881F00041
+C7E900013EE000281AD100F045FA00F055FA00F047FA05
+46022200F051FA052200F041FA072200F00BFA05460322
+00F047FA4168006881F00041C5E9000119E001281FD100
+F028FA0546012200F01AFA022200F028FA0546022200F0
+13FA00F021FA0546032200F00DFA042200F01BFA80ED00
+DB082294F8741038467EF4E8F680ED00AB206FD0F80C90
+B9F1000F00F0A481E06E007D012809D100F0E3F9044698
+ED020B53EC102B51EC100B91E1F0680023002208F12C01
+86F41AF50546E06E006AC106B0EE49AAF0EE69AA00F022
+FB9FEDD5FB9FEDD6CB9FEDD18B2FD59FEDD6BB000548BF
+F0EE68BA059818F4A4F453EC1B2B16F45AF241EC1E0B1C
+D251EC1B0B53EC1E2B16F4F7F341EC120BB0EE42DAF0EE
+62DA53EC1B2B51EC1C0B16F433F341EC110BB0EE4D2AF0
+EE6D2A9FEDAF0B86F4EDF775E0F0EE6DBA76E0010741BF
+9DED050ADFEDAB0AB4EE600AF1EE10FA2ED5F1EE040AB4
+EE600AF1EE10FA48BF9FEDA5AB61D4059818F465F441EC
+1E0B53EC1E2B51EC1C0B16F405F30022DFF8383A16F42E
+F202460B460020DFF8381A16F4B1F341EC100B53EC102B
+16F421F20022DFF8183A16F41CF241EC1A0B3CE000043A
+D5F7EE000A9DED050A25F477F18DED050A9FED8E0B28F4
+8DF20598B0EE40CAF0EE60CA18F42EF453EC1F2B16F400
+F241EC100B28F47EF20020DFF8D41953EC102B16F43FF4
+41EC110BB0EE41BAF0EE61BA0020DFF8B81953EC1C2B16
+F432F441EC100BB0EE4B1AF1940390208100F0EE6B1A25
+F408F1B0EE40BAF0EE60BA2668D8F814200499F6680023
+2046B047B0EE40CA08F12C0057F41EF618B1B2EE040A3C
+EE00CA0026002D73D000F0FAF802280BD000F0F6F80528
+07D000F0F2F8042803D000F0EEF8082801D1012700E000
+279DED051ADFED611AB4EE611A9FED63DBF0EE6D0AF1EE
+10FAB0EE4D0AA8BFF0EE690A1ADADFED5A1AB4EE611AF1
+EE10FA13DB059818F4C1F353EC1F2B16F493F141EC100B
+28F419F253EC102B0020DFF8F81816F4D2F341EC100B95
+F85400032818BF00289FED4B9B11D19FED4B1B25F4A2F0
+E06E006A000517D5B0EE4D0AF0EE6D0A12E000BF000000
+000000F03F022817D19FED431B25F48EF0E06E006A0005
+44BFB0EE480AF0EE680A2FB153EC102B00F05FFB41EC10
+0B00F09BF816F499F2064600F090F8074698ED020B00F0
+91F805462CEE0C0A8B4600F0E3F92A465B4616F413F205
+468B46304616F4AEF22A465B4616F40AF20022002316F4
+06F2C7E90001E06E006AC1061DD4010709D500F06AF804
+4651EC1A0BD4E9002316F4F5F11AE041050DD500F05EF8
+054600F05BF89FEDD71B90ED000B25F43DF085ED000B0C
+E000040AD500F04EF8044651EC1B0BD4E9002316F407F1
+C4E9000100F0A9F900200DF53A7DBDEC108BBDE8FE8F00
+0000000000000001007041000000000088A34061732D38
+52C1D03F0100AA42010020429A9999999999B93F000000
+0000004E400000000000003E40349D52A246DF913F0000
+0000000014C0000000000000344080ED00DB384694F874
+107EF401B5000005F1500022F452B094F8741007987EF4
+FFB4000094F8741048467EF4F9B4000053EC102B51EC10
+0B16F4B4B0049822F43DB00000012198A87EF4FAB451EC
+100B81F000417047000094F87410012238467EF4D6B403
+224168006881F00041C5E9000194F8741038467EF4CAB4
+05460122012176A87EF4DCB404F108030768BF6A04F120
+0220A938472DE9F04104462DED088B04F58267C2B01646
+38690D46012285F4B0F400F014F941EC180B30A87EF4D1
+F40021029100900121019104F1080332462946204678F4
+93F410B100F0A8FAE9E00590049004F5BC78294640467E
+F479F640B12946404679F43AF5816805914068049011E0
+386804A9039104F1080305A9029104F120020021019100
+9130A9D0F800C0DCF828C0E0479FED659B8DED069B1EA8
+7EF49AF600F034FA7EF4D4F78046786879F42CF61EAA41
+46FCF7AEFA00211EA87EF4ECF6DFF80404DFF804148DED
+060BCDE9000100226946F194032024810006A87CF4C1F6
+8DED060BDDE906234FF09440DFF80C1616F40FF041EC1A
+0B8DED0E9B03A851F4E6F70246786829467EF42BF600F0
+99F820B900F0A4F89FED450B83E010A886F442F5029004
+F1080304A80190324605A8009003A9204678F464F48DED
+0C9B8DED0A9B8DED089B8DED009B694610A886F444F510
+B1DDE9002316E00CA910A886F446F510B1DDE90C230EE0
+08A910A886F448F510B1DDE9082306E00AA910A886F44A
+F538B1DDE90A230020002116F493F041EC1B0B00F0B9F9
+0128284610D158F440F320B953EC1B2BDFF8680510E000
+F0B0F9042812D053EC1B2BDFF8580507E024F493F60228
+09D153EC1B2BDFF84C054168006815F49DF741EC1B0B0E
+A910A886F423F528B1DDE90E0100F034F841EC1B0B0022
+2946204600F0ABF8B0EE409AF0EE609A00F02BF853EC18
+2B51EC1A0B16F451F000F01FF853EC192B16F403F141EC
+100B42B0BDEC088BBDE8F0810000000000000000E8CB91
+000000000000005940B0EE49BAF0EE69BA7047000010EE
+100A18F488B153EC1B2B16F42CB003A871F4FDB600002D
+E9F8432DED028B89468AB000F068F890461E4604464846
+42F45EF3002504F5826760B10122494605A824F427F6F8
+6886F4C8F505A954F4E1F600B101252A46494601A824F4
+1AF6F86886F4BBF501A986F4BAF578BBF868002201A986
+F41AF2054686F4BDF530B3284686F4C1F510B3D5F8D800
+98ED0C2B95ED081B06AA08A900F05AF979F4C2F402A824
+F46FF5049840F002000490397D11B940F04000049002AB
+38689DED060B009608AA07683F694946B84708B902200D
+E0324600F03CF9494604F17C0079F4EFF2D4F88400401C
+C4F8840000200AB0BDEC028BBDE8F283B0EE408AF0EE60
+8A7047000070B504460D4616462DED068B00F0CCF89FED
+8C9BC0B900F0D3F8A8B900F0CCF890B92EB14FF46C710F
+F26010EDF7ECFF00F0BEF800F0DAF818F4ECF000220023
+15F490F741EC190B284658F43DF29FEDCD8B60B100F0CE
+F800F0BCF841EC190BD24800F0B1F800F0BBF841EC190B
+28464FF4CCF5A8B100F09FF8012811DB00F0B9F800F0A7
+F841EC190B00F095F801280CBFCC48CC4800F097F800F0
+A1F841EC190B00F081F800282ED1284657F4D8F2002829
+D000F080F8012825DB00F09AF800F088F841EC1A0B00F0
+76F802281BD100222946204600F091F800F087F818F499
+F002460B4651EC1A0B15F4F3F741EC190B4EB100F05CF8
+00F078F818F48AF000F06EF841EC190B284621F4E5F501
+2812D100F06FF800F0F19403B02781005DF841EC180BA8
+48D0E9002300F058F802460B4651EC180B15F4D0F741EC
+190B00F036F8B8B900F03FF818B100F03CF8032810D128
+4621F4C3F502280BD100F02BF800F047F818F459F053EC
+192B15F4FDF641EC190BB0EE490AF0EE690ABDEC068B70
+BDFCA9F1D24D62503F95D626E80B2E113E70617463685F
+676C70655F636F6D707574657A72682E637070000000D4
+F81404A6F40AB33246294620464FE0284624F4EDB40000
+284658F485B10000D0E9002351EC190B15F4F6B553EC10
+2B51EC180B15F4F0B502460B4651EC190B15F474B751EC
+100B17F4C8B72946204678F412B3F8B50C46154620462D
+ED028B58F462F106462778204624F4C1F4042E08BF0228
+9FED098B0BD155B90FF2A81000EB8700A0F5A270006817
+F4EFF741EC180B00F007F8BDEC028BF1BD000000000000
+0000B0EE480AF0EE680A704700002DE9F0412DED068B80
+460E46A2B01746304658F431F105463478304624F490F4
+9FED4D8B9FED419B9FED4DAB35B1032D31D0042D64D005
+2D45D06FE098B9D8F81814012204A881F429F404A96846
+7EF4B3F768468CF444F140F2BD7188425DDB0FF2A81007
+E002280AD117B10FF2D82001E00FF2182000EB840050F8
+040C49E0304621F4FDF4012848D13146404678F49BF235
+4A23E002280AD117B10FF2283001E00FF2682000EB8400
+A0F5847030E0304621F4E5F4012830D13146404678F483
+F2294A0BE0012828DB3146404603D178F47AF2254A02E0
+78F476F2244A53681268FFF75BFE51EC1A0B15F4C7F653
+EC182B15F439F553EC192B15F435F50BE002280BD157B1
+0FF2FC2000EB8400A0F5A270006817F452F741EC180B22
+B0FFF769FFBDEC068BBDE8F08100BF0000004A78DEB141
+B09C0800B6F3FDD4414C124100001440000010400000F0
+3F0000494078DEB141989C080000000000000000000000
+00000000F03FA89C0800A09C0800209D0800002243E700
+00000000000000000000000000000000000000FAED77C0
+9E5E89C052B88CC05E4BE8BEB7D120C0143F5EC02B876A
+C0ACAD9AC08D28B7C00000000000000000000000000000
+000074B575BF5249A5BF0AD763BF3411E6BF5249A5BF21
+B0B2BF1361A1C01361A1C0A2B49FC089D2A0C0560EA3C0
+94F6A6C000000000083D1BC090A010415F079EC052B88C
+C0CA32D4BFAA604CC0F46CD6BD000000004DF38E3DA69B
+44BE62A1563DA69BC43DA60A06BEE3A5BBBE21B0B2BE21
+B032BE00000000A69BC4BD00000000000000004DF30E3D
+0000000058CAB2BDF19403402B81000000000000000000
+00000000000000000000000000000000FE437ABD645D1C
+BF7AC7A9BE0AD7E3BE00000000F5DB17BEFA7E0ABF62A1
+D63C4DF38E3DDC46FB3F000000006DC5963F0000000000
+0000002041F13E000000003E79E03FC286A73F371A5840
+0000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000
+000000000000933A713FA69B443E8A8EC43FE3A5EB3F00
+0000000000000093A9823F0000000021B0324058A8153F
+423E083F85EBD13E000000000000000000000000AC1C9A
+3F00000000000000000000000000000000000000000000
+0000000000000000000042CFF63F00000000E10B233F00
+00000000000000B7D1A03E0000000010E9C73FE86A933F
+ED0D4E4000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000
+0000000000000000000024B90C3FC7297ABE8A8EC43FB3
+7B0A4000000000000000007FD93D3F00000000764F2A40
+371A403F3789013FF46C563E0000000000000000000000
+00D7A3A83F000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000
+00000000000000000000008A8E44BF8A8E44BF6C0949BF
+8A8E44BF6C0949BF371A40BF371A40BF569F3BBF569F3B
+BF000000000000000000000000000000008A8E44BF8A8E
+44BF7E8C81BF6C0949BF8A8E44BF371A40BF6C0949BF6C
+0949BF8A8E44BF6C0949BF6C0949BF8A8E44BF00000000
+8A8E44BF371A40BFBF7D4DBF8A8E44BF8A8E44BF8A8E44
+BFF0EEC00AB2EE0E1AF4EE410AF1EE10FA09D5D0ED040A
+30EE800A80ED040A80ED070A80ED0A0A704700F59C7005
+F0CEBD10B5044600202060A0619FED060B84ED020B84ED
+040B04F11C0021F483F1204610BD00BF00000000000000
+0038B504460D4634F487F2002802BF94F9010095F90110
+884214BF0120002032BD0978027891428041C043C00F70
+47000009B93F210FE0022908BF04210BD0032908BF1021
+07D0042908BF012103D005290CBF1F21FF214078014048
+1E8041C00F70470A2200211DF4EDB0000010B5044605F0
+88FD1E237022084904F118001DF42FF104F638508DF49B
+F00020C4F8900D2046FDF73FFA204610BD00BF0D878100
+80B5CDF443F108B1002002BD0021CDF411F30168896A88
+4741F690310858C00B00F0010002BD00002DE9F0410446
+82B0A06800280F4657D0F98810F1010F18BF002951D105
+290CBF01210021F19403D02E810004F50450D030D6F4D3
+F4F888A06004F5C85555F8B80F0268F988526A9047F888
+04F5D85101F1F808C0B928680268D26F00219047286802
+68926A0021904798F8000028B1A86810B30168C96E8847
+1EE028680268D26A0921904718E00A2801461DD1286802
+68D26F904728680268926A0A21904798F8000000281CBF
+A868002802D00168C96E8847012088F8010005222368D3
+F86C31002120469847AAE0D4F804C0604550D00B2807D1
+C4F808C000231FFA8CF21FFA8CF14AE004F598566C3603
+284BD00CD3052800F08A8008D2BCF1010F18BFBCF1030F
+03D0BCF1050F2AD085E000208DF80000ADF802006A4628
+680368D3F88C300DF1020198479DF8000020B99F210FF2
+F830EDF762FB2168D1F8041120468847A86810B1016849
+6E884721F46AF0344B0FF2F832042124F46CF700203083
+5EE000203083A86820B10268126F04F16C0190476068FA
+88002381B220462468D4F83041A0474BE0BCF1040F45D1
+B0686862B0892884288FD0B1D8F808003168814215D308
+1AE96B4118E96305E01E4A5118E963298F491C2987E96B
+1B4A9142F5D26422296C5043801F4018286402E00020E8
+63288704F5C8509030DDF4AEF5A86820B10168C96E8847
+A868C0B96068FA8881B220462468D4F830410023A04728
+680268D26A0F21904709E0BCF1040F03D12046D8F496F3
+ACE74FF0FF30A060BDE8F38184F59100007CF3DB00840C
+242DE9F047044689466068042818BF052841D104F50450
+04F5985509F11006002700F1D00886350FF2D42A07E040
+F243115046EDF7CBFA708886197F1CB9F80E00874228D2
+308844F20401401A02D0401E13D0EBE701202870B07B01
+280CBF012100214046D6F4DAF428780028E3D104F50450
+1C30DDF43CF3DDE73079012818BF0020687068780028D5
+D0F18800222046D7F46EF6CFE7BDE8F08700002DE9F04F
+044687B0606800288A4600F0DC8004F5D85604F5D8570A
+F108054FF0000B361D50374FF47A780FF2342904E0B884
+688845190BF1010BBAF80600834580F0C3802888401F0D
+D00A3866D047F6F271401A7BD0801E00F09580C01E04BF
+68683864E5E7E88920B940F26B1100F0AFF806E0708004
+F50450E989D030FCF70DFFA88908B10B2804DB40F27511
+00F09FF800E03080A888642804DA4FF4BF7100F096F811
+E0414690FBF1F108FB110018B14FF4C27100F08BF8A888
+B080E888F080287A7072687A30726068052818BF0428AE
+D1684634F4C5F0297A8DF80410697A8DF80510B188ADF8
+0010F188ADF8F19403603281000210EA88718891429BD3
+717A00291FBFADF8008004F5CE510A68002A91D0014610
+461268D2F8942090478AE7A88800281CBF012802280DD1
+3880E88878802889B88041F6F830005D002802D0204605
+F003FD76E740F2B51100F042F871E7A96804F5C850D030
+DCF4EBF3A98804F5C850D030DCF4E7F320F4F7F604F5CE
+51C96A27F4CAF120F4F0F604F5CE51896AC9B227F4B6F1
+55E7A88800281CBF0128022804D040F2D51100F01BF800
+E03884E88800281CBF0128022804D04FF4F07100F00FF8
+00E07884288900281CBF012802283FF436AF40F2EB11BE
+E707B0BDE8F08F4846EDF7ADB9000070B504460D466068
+012801BFA06810F1010FE888B0F5004F1CD168880D2805
+F10C0617D3304616F4B5F269880C39884210D2304616F4
+AEF2FF280BD8304616F4A9F23146421C04F5D050BDE870
+40001D16F43CB170BD000010B5044608460022C18800EB
+410108300A810FF2480105F0D7FE38B10022002108301D
+F440F004F5D051086010BD000070617463685F676C6D65
+5F706569665F696D706C5F6465632E637070000000004D
+696E694D652025730A00007265665F636C6B3A00000000
+00F5596001750260704700002DE9F44F2DED0E8B0F46AA
+B00446D7E904010122DD4B14F4D5F704F1380B94BF0120
+0020BBF8181051FA80F0ABF818000A2100B223F40AF7AB
+F818003968097AC9070BD50A2818DA389805F085FEF3EE
+040A90ED020A00F0C3F90ED5BBF918502046BFF4EBF1AB
+F818503898A0F424F404F12C014860002047E101202070
+B4F9021019B138688068800502D50020607000E0481E60
+80F2EE0F9A3868007A800748BFDFEDCD9A0020ADF80800
+824681463898B7F41BF3014603A824F47BF20026B9EE00
+9ADFEDB28A9FEDB18A9FEDB0AA25E0B0EE4A0AB4F493F5
+F0EE40AAF0EE6A0AB0EE480A23F413F7B0EE408AF0EE6A
+0AB0EE680A23F4C5F6F0EE408A95ED130AB4EE409AF1EE
+10FA05D5B8F9F0000B28A8BFB0EE409A03A824F447F203
+A824F442F2002844D103A9684624F448F2389800230022
+694685F40AF2054603A9684624F43DF238980022694685
+F46EF2002D8046E0D095ED130ADFED8E0A00F03FF9A8BF
+0AF1010AF4EE409AF1EE10FAC5D5B8F9F010761C2E29A4
+BF01208DF80900484623F49EF6814608F1F000F6B2B0F9
+020015F4C8F07F4A804B14F452F717F432F1012E00EE90
+0A92D1B0EE60AAA5E79BED00CB5FFA8AF015F4BFF041EC
+1D0B51EC1C0B53EC1D2B14F41FF79FED74AB3ABFB0EE4A
+EAF0EE6AEAF19403F03581009FED72EB53EC1E2B14F42E
+F7CDE900019FED70BB51EC1B0B53EC1E2B15F4AEF053EC
+1D2B14F420F7DDE9002314F4EEF700226A4B14F4FCF641
+EC1C0B04D2B0EE4BCAF0EE6BCA06E00122654B14F4CCF6
+98BF9FED64CB8BED00CBDBE900234FF02040624914F400
+F753EC1A2B14F4CEF741EC100B24F48AF0C5B225B13868
+042123F482F300B10325022E0ADBA9F10100192806D238
+EE680ADFED550A00F0B2F801D4B5420CD39FED530AB4EE
+409AF1EE10FA05D59DF8090010B901208DF80800386880
+68410604D49DF8081009B1C00505D53898A0F402F304F1
+2C0148604EF66020E0603868007A800712D441F28830E0
+6038688068810608D4000709D5D7E9040101223C4B14F4
+6FF602D840F6B830E06004F12C00456875B9A079002508
+B1401EA0719DF8080084F82C0028462AB0BDEC0E8BBDE8
+F28FD7E904010022304B14F476F608D238688068010604
+D580075CBF43F69820E060B968E068491B8842DBD2A079
+002530B900212046BCF484F504200125A071607870B9B8
+68A06204F1100079687BF460F697ED060B8BED020B97ED
+040B8BED040B0120607039462046BFF462F26080A080B8
+68A060BAE700000000E03F000000000100B041349D52A2
+46DF913F000000000000E03F000000606666EE3F000000
+000000F03F0000F03F0000384000000000000038409999
+C93F20C9293F0000204200003E4000009C4100000840B4
+EE600AF1EE10FA70470000E74824F405B1000038B50446
+04F5F96304F1100204F11001B3F40CF100252068982101
+FB050008B1B3F4A4F16D1C0D2DF5DB204632BD00002DE9
+FE4F2DED028BADF5B66D804689460024A4A800EB0410B4
+F43EF7641C322CF7DB92A824F4D8F080A824F4D5F042A8
+B4F454F404A8B4F451F4D8F84C00A9EB000040F2DC51DD
+F8C0458842A4AD08F5A06780F0D080DDF8E8A5322604F1
+110050F41CF640B304F11101504653F480F5F8B104F111
+01684637F412F000F0E8F8217C012918BF0021084212D0
+D4E9020181F00041C5E9000104F1110205F10901684650
+F4DDF504F1110180A824F4A2F010351834761ED1D180A8
+22F497F7C1B2062023F4C1F40390002580A822F48EF7C1
+B2A24B1022A4A897F432F10026AA4605E01834BBF1010B
+18D10AF1010A03995FFA8AFA8A454FDAA4A901EB0A1000
+F1090102A836F4CCF70146684636F4C8F700F09EF8DDF8
+C0454FF0320B02A904F111003BF4A3F60028DBD03A689D
+F804304FF0180C1CFB032203F05AF941EC180B42A8B4F4
+1DF442A8F194038039810097F4F6F0014601F05BF880ED
+008B04A8B4F412F404A897F4EBF0014604A87DF499F194
+ED000B80ED000B51EC180B01F055FF34BF01204FF0FF30
+4519D4E9000114F40AF534BF01204FF0FF308619A8E704
+A879F4A1F668B223F4BEF4062806D170B223F4B9F40628
+08BF012000D00020387404A879F4DAF598B104A879F4D6
+F5014604A87DF466F1012241680068DFF8543E14F4E1F4
+94BF01200020397C0840387442A879F422F687ED020B01
+E00020387440F2DC51DDF8BC0588421DD2C8F84C900024
+182000FB04F5DDF8C005291838682818B4F444F64046B4
+F457F63E68A81953EC102B4168006814F47FF6AA19641C
+C2E90001322CE4D30DF5B66DBDEC028BBDE8F78F000001
+4601AA4046B4F44BB6000070B586B004460D46B6F4F8F4
+082104F5B0607BF437F7DFF8BC0D05F061FB0822082104
+F1C80078F4D7F729462046A9F4F1F1284604F21476B6F4
+AEF730602846B4F4FAF5014604F5E3607BF4ABF42846B6
+F4A6F7284686ED070AB6F4A5F751EC100B04F5CF6616F4
+8FF630602846B4F4F7F24169006981F0004116F485F670
+602846B6F4B3F786ED020A2046B0F444F4284604F29476
+B6F47FF7B0602846B4F4CBF501466846A7F4DFF3014620
+46B6F4A1F79FED140B04F65830B6F49FF704F60810DFF8
+141D016004F5E055012131604835002101716976DFF800
+0D4170017004F5C0507830B6F48DF70FF224026F212046
+B6F435F50020288006B070BD0000DDC50B000000000000
+0069409CC99100496E69744B4600002DE9F34F81B041F6
+78502DED0E8B8CB0ADF5085D17469846684496F4C3F70D
+F500500025D0F86C02ADF8385000F6C4200F9000268068
+B4F485F2F1EE04AA0078012810D10F988068A8F4BCF201
+260078022806D00F988068A8F4B4F20078032801D18DF8
+38600F98006885F437F1DFF8581C884245D0B868800440
+F115860F988068B7F41DF1B7F41DF107000AD000F093FE
+B6F4F5F6C01B4EF660218842BF41FF0F00E000270DF500
+500122D0F86C02C8300D9001217DF42FF0044600F05CFE
+024653681268D4E9000114F4C1F40122DFF8F83B14F4AA
+F30DF5005094BF01240024D0F86C02B6F409F70F28C0F0
+DC8554EA070040F0D88500F05EFEB7F4E4F0002800F0D1
+850F98006885F4E7F000EE100A9FEDDB9BB8EE400ADFED
+D80AB0EE498AF0EE698A80EE20AAB7EE00BA0EB1F0EE4B
+AA00F040FE00F5D1600090404696F414F7082840F06A81
+00F08FFE0428C0F2658100F08AFE05280DF50050B8BFF0
+EE4BAAF19403103D8100D0F86C0200F5CF6696ED010A20
+EE0A0A02F00CFA96ED000A41EC120B9FEDBF1B20EE0A0A
+00F0D0FD02F000FA00F0D6FD0DF5846096F46EF7014600
+9A02A87BF4A1F20421CAA8B7F491F08CA8B4F4DAF102F0
+F7F907460D98022202217CF4AAF7022100F095FD00F036
+FE07460D98042204217CF49FF7044696ED000A23F428F3
+02F0D4F9D4E9002314F45EF3C7E9000100F020FE06460D
+98062206217CF48AF7042101F055FF00F016FE06460D98
+082208217CF47FF7012101F04AFF00F006FE9DED020B80
+ED000B022100F0FFFD9DED040B80ED000B032100F0F8FD
+9DED060B80ED000B042100F0F1FD064600F0B8FD03F092
+FC01F028FFC6E9000100F004FE0646CBE004214EA8B7F4
+30F0042110A8B7F42CF000F0B3FD31B290ED00BB0DF500
+50D0F898027CF44DF700F0A7FD002241680068DFF8343A
+14F406F3C7E9000100F09DFD00F05AFD14F4D0F341EC18
+0B012100F0B7FD00F0DBFD012100F0BEFD0746012100F0
+B7FD044600F0D2FD00F0C3FDC7E90001022100F0A4FD07
+46042200F0C8FD022100F0A9FD0746022100F0A2FD0446
+042200F0BDFD00F0ADFDC7E90001032100F08EFD074606
+2200F0B2FD032100F093FD074600F08CFD0446062200F0
+A8FD00F098FDC7E90001042100F079FD0746082200F09D
+FD00F0D9FC042100F080FD0746042100F075FD04460822
+00F090FD00F080FDC7E9000110A94EA879F4D0F402F030
+FECAA94EA879F4CAF40DF50050B0EE40DAD0F89C02F0EE
+60DA31B27CF4CFF6024651EC1D0B5368126814F414F441
+EC1D0B21F0004141EC1E0B51EC1B0B53EC1C2B14F450F3
+02F000FA02F02AFE0022DFF8183914F435F20AD91AEE90
+0A16F49AF453EC1D2B23F0004314F44EF211D231464046
+79F463F00DF5005031B2D0F8980279F412F40DF5005031
+B2D0F89C0279F40BF4761E012EBFF631AF00F031FD14F4
+C1F302460B4651EC180B14F493F441EC180B404696F4A4
+F5082840F03F8400F01FFD0428C0F23A84404696F499F5
+082803D040F2371102F0F3FA0DF5C65096F4ABF500F00D
+FD014604220DF5C65078F431F500F005FD064600F002FD
+014641F678503246684478F425F5012639E000BF00007A
+440000000000000000012231460DF5C6507CF442F600F0
+EEFC022200F031FC0746042200F0E9FC032200F02AFC07
+46062200F0E2FC042200F023FC0746082200F0DBFC3246
+00F016FC41F67850314668447CF422F600F084FC024600
+2053681268DFF8F41714F42CF4C7E90001761C00F0BDFC
+B042F19403A0408100C8DA41F20840684496F452F50DF5
+756096F44EF540F658606844B4F42BF010A896F446F541
+F678536B440DF5C652012178F468F641F208400DF5C652
+10A9684478F47AF50DF5005240F65860D2F89C2210A968
+4479F494F341F208400DF57561684479F495F1002800F0
+A48320A878F47BF00DF55660B3F4FDF740F658626A440D
+F5756179F47CF3DFF8581700988DED1E9BCDE912518DED
+1C9B8DED1A9B8DED189B8DED169B8DED149B032203217C
+F4D1F510900222009803217CF4CBF50546009801220321
+7CF4C5F506460098032202217CF4BFF507460098022202
+217CF4B9F504460098012202217CF4B3F5814600980322
+01217CF4ADF582460098022201217CF4A7F58346009801
+2201217CF4A1F512A90C91069514A90B91059616A90A91
+039718A9099153461AA908915A46109907911CA9049102
+941EA90091CDF80490014686A878F4C3F0042204210DF5
+756078F46FF40DF5756164A878F42AF142A878F401F086
+AB012264A978F4F4F142AA86A920A878F4ABF1032100F0
+F0FB00F0ECFB0646012100F0EAFB95ED002B90ED000B96
+ED001B06A879F445F700F091FBB4F443F2014606AA6846
+7AF45EF6694600F07BFBB6F41BF6032100F0D0FB00F0CC
+FB0646012100F0CAFB03F05CFA41EC190BD5E9000102F0
+AAF941EC120BD6E90001B0EE42BAF0EE62BA02F0A0F941
+EC110BD7E90001B0EE4B2AF0EE6B2A00F01AFB02F094F9
+00F020FB684679F40BF7014600F04AFBB6F4ECF500F03E
+FBB6F4ECF500F028FB074600F02BFB044600F07AFB00F0
+F4FA0546D7E90023D4E9000114F48BF100F00DFBD5E900
+2314F485F116F493F201F065FDF7EE000A23F411F000F0
+3BFBB6F4CDF50D98052205217CF4D8F4054600F00BFB00
+F04FFB16F47DF201F04FFDF7EE000A22F4FBF700F025FB
+B6F4BBF500F047FB054600F0C1FA00F03CFB16F46AF201
+F03CFD8DED000A0DF500506946D0F87002B6F4ABF500F0
+E7FA00F0C1FE01F02DFD00F007FBB6F4A5F500F0F7FAB3
+F4FDF6B0EE40BAF0EE60BA042100F03CFB53EC1B2B4168
+006814F434F100F0D8FAB4F4E0F20D98072207217CF48F
+F4054600F090FA00F006FB16F434F201F006FD0DF50050
+0125D0F87002B6F47FF5042100F01AFB00F05CFA00F0BA
+FABDF4B6F300F078FA00F054FA16F41CF201F0EEFC00F0
+B0FAB6F46EF5012100F005FB064600F001FB96ED001B90
+ED000B26F478F002F0DAF80022002314F406F009D253EC
+192BDFF8940EDFF8941E14F4EBF041EC190B00F0CDFA00
+F0F194033044810047FA4168006800F065FA53EC182B14
+F455F216F4EBF101F0BDFC02F011F880F2F58000F08DFA
+064600F078FAB4F434F1024653681268D6E9000114F47F
+F121F0004102F0B5FB16D900F074FAB3F43AF6064600F0
+63FAB3F435F6024653691269D6E9040114F46AF121F000
+410122DFF8E43313F499F740F2C98000F0B5FA0528C0F2
+C58040F6A8000DF575620DF5C651684478F443F401460D
+F5C6530122FCA878F458F496F41CF306460DE000F0DAF9
+00F054FA024653681268D7E9000114F43DF1C7E9000176
+1E012EEFDA00F08CFA01B2BEA8B6F4BAF400F086FA01B2
+80A8B6F4B4F400F080FA064652E0042142A8B6F4ACF401
+F015FE00F07AFA022100F083FA0746042200F075FA0321
+00F07CFA0746062200F06EFA042100F075FA0746082200
+F067FA31B200F0A2F9BEA87CF4B9F307460DF5566142A8
+79F4A3F10DF50050B0EE408AD0F89C02F0EE608A31B27C
+F4A8F300F0C2F914F4F0F0C7E9000131B280A87CF49EF3
+074631B2BEA87CF499F3044600F076F9761E4168006881
+F0004101F0D5FED4E9000101F0CDFDC7E90001012EAADA
+BEA879F450F051EC100B21F00041DFF8E02CDFF8E03C13
+F4FCF698BF0025BEA879F497F0BEA879F43EF051EC100B
+DFF8C82CDFF8C83C13F4ECF69CBF01208DF8390000F006
+FA002607460FE039B280A87CF45DF3012241680068DFF8
+A43C21F0004113F4FAF638BF761C7F1E012FEDDAF6B204
+2E00DA0025012100F0DEF98346012100F0DAF9814600F0
+D6F9824600F0D3F90446032100F0D0F90646032100F0CC
+F90746DBE9000102460B46D9E9000113F4EFF6CDE90001
+D4E90023DAE9000113F4E7F6DDE9002313F4B5F7044689
+46D6E90023D7E9000113F4DBF622464B4613F4A9F716F4
+B7F001F089FB80EE0A0A01F041FD41EC180B0F988068A6
+F4BDF2007838B951EC180B0122DFF8FC3B13F480F60FD9
+0F988068A6F4AFF2007801280AD151EC180BDFF8B02EDF
+F8B03E13F470F601D8002555E0002D53D000F009F90646
+00F05EF903F00CF801F0A2FA00F0F6F8C6E9000103220D
+9803217CF4CFF200F0CBF802F0FDFF01F093FA00F0E7F8
+C6E9000105220D9805217CF4C0F2064600F0F3F802F0ED
+FF01F083FA00F0D7F8C6E9000107220D9807217CF4B0F2
+064600F0B1F802F0DDFF01F073FA00F0C7F8C6E9000100
+F0E7F8B3F4A5F700F053F9B6F483F300F0DFF8B3F4F1F4
+00F0E7F8B4F4E1F00F9800689FF495F200F043F9B6F495
+F30DF5005000F001F951EC100B0122DFF8EC3D13F40CF6
+F19403C047810033D800F0C9F800F0F1F853EC102BB0EE
+080A28EE000A16461F4601F0AFFC32463B4613F41DF620
+D200F0A8F8B6F47EF351EC190B16F412F000EE100A00F0
+A6F8B6F46CF300F0A8F800F0D0F800F066FD01F0A1FD01
+F0DCFE16F400F000EE100A00F094F8B6F45EF301E000F0
+B7F89DF8380078B100F0F0F8062802DB9DF8390040B100
+F0ABF80DF500500021D0F87002B6F424F30CB00DF5085D
+2846BDEC0E8BBDE8FE8F0000144030DA89000000C642E6
+CB9100FF2292FF0080484000002240000059400000F03F
+53EC192B4168006814F42CB032463146FCA87CF413B200
+0090ED000B87ED000B7047000090ED000B87ED000B3146
+0DF5C6507CF403B2000006460222022120A87CF414B204
+22042120A87CF40FB20000B0EE41BAF0EE61BAB0EE42CA
+F0EE62CA7047000041EC100BB0EE4C2AF0EE6C2AB0EE4B
+1AF0EE6B1A70470000D6E9002313F478B6024651EC180B
+5368126870470D98012201217CF4D1B100000D98032203
+217CF4CBB100000322032120A87CF4DDB100000DF50050
+0121D0F87002704741EC100B0DF50050D0F87002704700
+000DF50050D0F87002B5F4C2B40DF50050D0F86C027047
+00000DF50050D0F86C02B3F4A6B60DF500508DED000A69
+46D0F87002704707460DF5005031B2D0F898027CF49CB1
+0DF500500021D0F87002B6F4A1B200000DF50050B0EE40
+8AD0F87002B6F440B041680068D5E9002313F41AB60122
+012120A87CF491B100004EA87CF47DB10000CAA87CF479
+B1000003218CA87CF474B190ED000B87ED000B10A87CF4
+6DB10000054602210DF556607CF466B1024653681268D4
+E9000113F421B50000404696F479B00000074602223146
+40467CF44CB101460DF50050D0F86C02704790ED000B87
+ED000B42A87CF447B100002DE9F0472DED0E8BADF5116D
+80460C4615469A4604A8B7F497F240F6C800684422F4D2
+F70C2100910246012321464046B0F4C0F50DF5086022F4
+C6F702460C200090002321464046B0F4B4F5069840F4C8
+70069008F52C6695F82410002914BF40F0040020F00400
+069004A9069840F09000069014BF40F0040020F0040006
+9007A8B7F46BF201F04DFB044602F081FE02F082FE07A9
+DDF86C79039102940190009540F638003368726801F0A1
+F839466844B7F459F217B13846A7F4D7F3DDF8689901F0
+39FC002808F6F8249FEDCB8B9FEDCCBAF6EE00CA00F092
+801CA8FEF76FFE04A907A8B7F439F201F01BFB02F04FFE
+00F0CFFB02F053FE07A9039102970190009533687268F1
+9403504B810002F002F81CA90AA8B7F42AF21CA8FEF753
+FE0120009040F6C8010023012269440AA8B2F435F340F6
+C80169441CA8B2F467F1054601211CA8B2F494F1002D00
+F0A5FB6FD000F086FA51EC190B15F43EF600EE100A60EE
+2C0A99ED1C0A22F4BAF389ED1C0A012301220DF5086140
+4600F0F5FC00285FD008F588500021D030A7F409F430B3
+01F0C4FA007810B32046B7F421F2F0EE409A2046B7F432
+F2306BB0EE409AB7F43FF201F04BFC00EE900AB0EE490A
+B3F407F2B0EEC00ADFEDEA0A01F031FC06DBF0EE690A22
+F484F32046B7F42DF2294608A8A6F469F32046B7F4E8F1
+00F042FA00F012FA002833D02046B7F4F1F1B0EE40BA2D
+E0009040F6C80140F638000123032269446844B2F4FBF1
+40F6C80169443846B2F4F3F0050002D000F019FA9FE708
+A8B1F47DF7014600F013FA002D00F08F812046B7F4BAF1
+00F014FA00F0E4F9002804D02046B7F4C3F1B0EE40BAD5
+E02046B7F4D3F100F0D1F9F0EE409A2046B7F4F4F19FED
+C11BD9F88000B0EE40AA00F0FEF953EC182B13F4C4F300
+F0FEF900F016FA074600F017FA00F003FA00F0FDF9B0EE
+409A00F00FFAC168806815F493F500F0F3F939EE000A25
+F433F400F0D3F9044670689EF4DFF7064600F0EEF99FED
+AC5B00F0BEF900F0B4F902F003FD41EC140B00F068F9B0
+EE6A6A00F05EF9B0EE44BAF0EE64BAB0EE45AAF0EE65AA
+B0EE46CA00F04AF951EC180B15F464F503EE100A00F03A
+F9B0EE4C6AF0EE693AB0EE4B4AF0EE6B4A00F04EF9B0EE
+63BAF0EE46BA00F086F915F496F541EC120BD7E9040100
+F038F9B0EE6B6AF0EE4B3AB0EE42BAF0EE62BAB0EE63CA
+B0EE46DAF0EE66DAB0EE47EAF0EE67EA15F434F501EE90
+0AF0EE6E7AB0EE4E7AF0EE6D6AB0EE4D6AB0EE4A5AF0EE
+6A5A00F024F9B0EE4B2AF0EE6B2AB0EE491A2346D9ED1D
+0A99ED1C0A08AA31465046B5F494F301215046B6F478F0
+01215046B6F44CF04046B5F477F2DFED6B0A01F031FB15
+DB99ED200ADFED680A01F02AFB0ED5E86E15F442F541EC
+100B4046B3F495F599ED200A20EE2C0A4046B6F442F0B0
+E000BF000000000000E03FDB0F49402046B7F4FDF000F0
+FBF8B0EE40AA2046B7F41EF19FED561BD5F88000F0EE40
+9A00F028F953EC182B13F4EEF200F028F900F040F98046
+00F041F900F02DF900F027F9B0EE409A00F039F9C16880
+6815F4BDF400F01DF939EE000A25F45DF300F0FDF80746
+70689EF409F7044600F018F9B0EE6A6A9FED405BF0EE4A
+3A00F0CCF819EE900A15F4EAF441EC140B00F0A8F8F194
+03E04E8100B0EE44AAF0EE64AAF0EE639A00F0D4F8B0EE
+46CAF0EE66CAB0EE47DAF0EE67DA51EC180B15F48AF403
+EE100AF0EE6D7AB0EE4D7AF0EE6C6AB0EE4C6A00F068F8
+F0EE693AB0EE4A4AF0EE6A4A00F06EF800F09AF815F4BA
+F441EC120BD8E9040100F076F8B0EE42AAF0EE62AAB0EE
+63CA00F0A2F8F0EE46CA00F042F815F45EF401EE900A00
+F034F8B0EE6C6A00F040F800F054F8B0EE4A2AF0EE6A2A
+B0EE491A3B46D5ED1D0A95ED1C0A2A4621465046B5F4C4
+F201215046B5F4A8F701215046B5F47CF70DF5116D2846
+BDEC0E8BBDE8F08700BFDB0F493F7E36EA460F62124800
+00000000004940000000000000F03FF0EE4E7AB0EE6D7A
+F0EE4D6A70470000B0EE66DAF0EE47DAB0EE67EA704700
+00B0EE4B5AF0EE6B5A70470000F0EE6D7AB0EE4D7AF0EE
+4C6A70470000E86EF0EE439AB0EE448AF0EE648A7047F0
+EE4C3AB0EE484AF0EE684AB0EE693A70470000F0EE4D7A
+B0EE6C7AF0EE4C6AB0EE6B6AB0EE4A5AF0EE6A5AF0EE4B
+3A70470000F0EE40AA2046B7F427B00000F0EE40BA2046
+B7F425B00000B0EE63BAB0EE45AAF0EE65AAF0EE46BAB0
+EE66CAF0EE47CAB0EE67DA70470000B0EE66CAB0EE47DA
+F0EE67DA70470000B0EE45BAF0EE65BA70470000294648
+46B1F4FCB5B0EE409A2046B7F413B00000B0EE40CA2046
+B6F4FBB70000B0EE41DAF0EE61DA15F4EEB341EC100BB0
+EE4D1AF0EE6D1A22F4E4B000EE100A22F47CB141680068
+15F496B3002001900090F0EE4C7AB0EE6B7AF0EE4B6A70
+47B0EE408AF0EE608A2046B6F4E7B700002DE9F8432DED
+068BADF5A66D05460F4614461E461EA895F411F505F1C8
+0801220121FFF776FC814603220321FFF771FC00F0FEFF
+13F458F215F466F308EE100A2846B3F4B9F2314679F448
+F300F0BCF896ED1C0A22F43AF138EE000A25F4FAF100F0
+E2FF02460B4651EC190B13F4B4F315F44AF3002F00EE10
+0A9FED4F9A9FED508B4FD001F06AF980F28280314612A8
+A6F4AAF000F0A2F8012200F09BF805F5D16700F0A7F800
+F09FF869460CA8BCF40FF601463A4606A87AF42CF0F0EE
+490A96ED1C0A22F4A4F022F400F100F0ACFF41EC1A0B00
+F094F89DED080B2846ACF433F700F07BF8032200F074F8
+00F082F800F07AF8694618A8BCF4EAF501460CA8BBF4FE
+F63A460CA968467AF403F0694606A803F0AFFF00F073F8
+9DED060B2846ACF412F7002C33D000F058F8072200F051
+F81EAC80ED008B2846B2F491F7F06E00F064FF15F428F3
+53EC182B13F484F215F4DAF209EE900A96ED200AF19403
+7052810022F4B6F0F0EE490A22F454F000200190012000
+9000F05AFF00F050FF19EE900A15F40CF341EC100B0023
+002201F088F9ACF4DCF60DF5A66DBDEC068BBDE8F18311
+2D4454FB21194001000040E17A843F010000E051B89E3F
+000008400000484200001E40000000000000F03FB0EE40
+9AF0EE609A7047000001211EA87BF4EAB4082201211EA8
+77F4B9B300000246002312A9684679F408B180ED008B28
+46B3F4DDB10000002001900023012000900022B0EE4A1A
+F0EE6A1A1EA970472DE9F047EAB004460E46904660A81F
+F419F460A831F4FAF7814660A93AA822F44FF3002504F6
+C42718E014A901A822F43BF338680023002201A983F4FD
+F201F0E5FB08D114A822F425F314A822F420F30028EAD0
+6D1C3AA822F440F33AA822F43FF388B93AA9684622F430
+F39DF800008DF8040001AA314602A81FF487F402A914A8
+22F40BF3E0E7B868B5F459F5BAF459F706462046B5F433
+F3824604F590501830BAF491F00196EDB200955346B868
+4246494603F07CFF6AB0BDE8F08700002DE9F0478246AD
+F6C84D40F608400D466844B4F48BF701462A465046A7F4
+96F60646DFF8040D35F481F6A868000504D50AF58850D0
+30BBF485F50AF6F820BBF485F55046BBF4B8F50AF6B427
+0AF5F4683869B5F45FF30146404650F4DBF53869B5F458
+F30AF5FD690146484650F4D2F55046B3F435F101465046
+BBF4A9F531465046BBF4A9F536B9A868400A00F0010150
+46ACF481F2A868C00800F001015046A9F480F12A460021
+5046A9F425F208B1014628E0002432A8302101FB040082
+F441F5641C3C2CF6DB0AF503600290CDF80490CDF80080
+3C232A4632A95046ABF4ADF48AF86807C2B232A95046A7
+F428F65046A8F4ABF75046BAF4E2F6DFF82C1C884204D3
+09215046A7F434F44EE040F60841694402A8B4F477F703
+4632A80090324629465046ABF499F15046D9F4A2F642F2
+11718842DFF8F85B34D3387898B9B86904F047F8BAF49D
+F668B99AF96807012809DB5046B5F477F2DFEDBF0A00F0
+93FF48BF012600D400265046B2F4CCF507465046B3F4B4
+F004461EB15046B5F45FF201E0DFF8D40D0AF5D1610191
+3B460AF1C8010091224601462846FBF75CFB2846FBF745
+F9284603F0EEFD0DF6C84DBDE8F087010000C047013940
+0000E03F2DE9F8432DED028BADF5C46D80460C4615461F
+4602A8BBF403F502A821F4AAF0049840F0050000260490
+17B140F04000049002A905A8BBF403F500F0C1FD02F0F5
+F802F0F7F8014605A800900B233A4600F01CFBF1940300
+5681000DF5BF60BBF4F8F4E0A8B6F437F69FED8E2B9FED
+8D1B9FED8C0BDAA878F454F50146E0A8BBF4F6F401F004
+FB002790ED000B8DEDE60BD8F8C40A9EF447F3CDF8A805
+C8A822F4E4F150A800EB07191021484615F4E5F14846B3
+F43AF07F1C1E2FF2DB3DA822F4D4F1D8F8C40A83F480F5
+0246214605A8BBF4DBF405A917A822F4A3F150AF15E0A0
+6C15F410F10022DFF8F03D12F4E1F641EC100B87ED000B
+00F0E1F869463DA822F4C1F1103717A822F487F117A822
+F482F128BB00F0D3F8D8F8C40A0022694683F4BBF18146
+00F0CAF8D8F8C40A00230022694683F443F104464846BB
+F4B7F40028E0D000F0BBF86A4607F1090101A84EF4CFF6
+002DC3D1E06C15F4D4F0C7E73DA821F48CF0C5B2294604
+2908F6F8282FDBDFF8683D102250A895F42AF20C212846
+21F4AAF545B2E80714D46D1E6DB211E050A800EB061000
+F10901684635F4C8F001463DA851F42CF618B16946C8A8
+22F469F1761CAE42EBDBC8A905A854F418F40146E0AB0D
+F5BF62404603F027FF06464046B6F453F400F055FADFF8
+105E03DC40F2FB3100F060F84046B6F435F400F049FA03
+DC4FF47F7100F056F84046B6F4DFF400F03FFA03DC40F2
+FD3100F04CF84046B6F4D1F400F04BF803D340F2FE3100
+F042F84046B6F46BF400F02BFA03DC40F2FF3100F038F8
+4046B6F47DF4002241680068002312F4F3F503D34FF480
+6100F02AF84046B6F46FF40022C1688068002312F4E5F5
+03D340F2014100F01CF84046B6F461F400224169006900
+2312F4D7F503D340F2024100F00EF80DF5C46D3046BDEC
+028BBDE8F28300000000484300000000000000002846EA
+F725BF000051EC100B0022002312F4BAB517A9684622F4
+B4B02DE9F84F2DED048BADF6E83D80461E460DF5E66095
+F466F1D8F8780600EE100A002700F0CDF948BF01270822
+08210DF5E66077F4E5F008F588509FEDDD0B0021D030A6
+F419F504464046BCF4F5F005464046BCF4F3F082464046
+B5F4D5F283464046BAF4EDF4DDF8301C0E9108F1C80900
+210D910C910B940A919FEDCF1BDDF8281C09919FEDCC0B
+002108910795019008F5D160DDF8241C05910090CDF818
+A0CDF810B003974B46DDF8201C02914246314610A8BCF4
+C4F008F580540346A83408F5EA6208F5E761204604F0CD
+F9DDF82C7C4046BAF4B4F4012640F6B931884200D207B1
+0026D8F8AC0A00EE100AF6EE000AB4EE600AF7EE008AF1
+EE10FAB0EE688A04D520EE008A68EE008A27E0F0EE000A
+00F079FD22D4F0EE088AB4EE680AF1EE10FAF194039059
+810004D5F0EE048A9FEDD58A16E0F1EE000A00F068FD48
+BFB7EE088A0ED4F1EE040AB4EE600AB1EE008AF1EE10FA
+46BFF0EE488AB0EE008AF2EE008A002F29D10122012100
+F037F90746012100F075F900F057F900F05BF9C7E90001
+0322032100F029F90746022100F067F900F049F900F04D
+F9C7E900010522052100F01BF90746062100F059F900F0
+3BF900F03FF9C7E900010722072100F00DF90746B7EE00
+0A21F4D6F4B0EE409ADFEDDE9AB0EE690A21F4CEF4D8F8
+AC0A00EE900AB0EE081A69EE200A80EE010A40EE280A10
+EE900A14F424F7C7E90001022200F0FFF80746042100F0
+29F900F005F900F00FF9C7E900010422042100F0DDF807
+46052100F01BF900F0F7F800F001F9C7E90001062200F0
+D4F80746082100F00EF900F0EAF800F0F4F8C7E9000108
+2200F0FFF800F0DBF8D8F8AC0A00EE900A20EE200A00F0
+35FBC7E90001072200F0F0F800F0CCF8F6EE000A20EE20
+0A20EE080A00F026FBC7E90001CEB1012200F0B8F80646
+032100F0E2F800F026FC00F0A6F8C6E90001052200F09B
+F80646072100F0D5F800F019FC00F099F8C6E900010DF5
+E661484677F492F10422042100F0B7F890ED000B24F410
+F59FED9C1B21F4AEF300F0E8FA51EC180BDFF8342ADFF8
+343A12F43CF41CD8012200F0A0F8064600F065F824F4F5
+F421F439F4D6E9002301F019F841EC180B00F095F853EC
+182B4168006812F447F403D200F08CF880ED008B082207
+2100F083F806460722082100F07EF8022200F056F800F0
+78F806460122022100F074F8062200F04CF8052100F06E
+F806460522062100F069F86F2100F041F84846B4F492F3
+4046D9F43BF342F2117188420ED34046B4F422F700F04A
+FC08F5D16400EE100A22464946DFF81005FAF750FE0DF6
+E83DBDEC048BBDE8F18F00000000000059400000000000
+000000B5EE400AF1EE10FA70470000B0EE480AF0EE680A
+704700000DF5E6607BF43CB006210DF5E6607BF437B000
+00D7E9002312F4FCB390ED000B86ED000B704700000221
+0DF5E6607BF427B000000746B0EE690A21F4AFB3000005
+46D8F8AC0A14F40FB60000054618EE900A14F409B60000
+02460B46D5E9000112F4D8B3012148467BF40AB0032203
+2148467BF405B0000008210DF5E6607AF4FFB700002046
+BBF437B7000010B500F5B0642146DFF84004FBF750F920
+46BDE8104095F44DB000009A99993F2DE9F04104460D46
+0422042104F1C8007AF4E0F7FFF7F0F900F05CF8DFED2C
+0A00F0B0FB4CBF002601262046BBF4C4F6F19403205D81
+00304305D1D4F8CC0AA4F48AF7007878B1D4F8CC0AB2F4
+DCF10078022806D1D4F8CC0AA6F415F20078012801D001
+2700E0002704F6F820B6F4ABF100B9002700202870D4F8
+CC0AA4F46BF7007802280CBF012000202870287830B9D4
+F8CC0AB5F475F0B5F42DF600E001202870287858B9D4F8
+CC0AB5F46AF0BBF4E0F680462046BAF484F2804500D201
+262E703846BDE8F08100009A99993E112D4454FB21F93F
+DB0F494000EE100A24F4CEB32DE9F84F2DED068BADF51E
+7D8046894692469B4660A8B2F497F122A8B2F494F1D8F8
+780620F0004000EE100AF1EE040A00F03AFB08F52C6722
+D578689DF460F7DFF8DC1D884208D200F0A4F9007878B1
+00F0A0F9007801280AD000F09BF9007870B978689DF44C
+F7DFF8B81D884207D3F868A6F497F10078072818BF0124
+00D10024F868A6F48EF100250078022805D0F868A6F487
+F10078032800D1012505EA04008DF8140000F075F90078
+461E06A8B641B5F439F008989DF8141040F00D00F60F08
+90002914BF40F0100020F010000890002E089814BF40F4
+006020F40060089059469BF80800000708984CBF40F480
+4020F48040089000244046A8F42AF470B14046B4F4D0F7
+3040284208D0504621F4A8F120B9089820F01800012408
+9000F0A2FE05464046B2F4FEF0064606A909A8FBF791FC
+00F033F9834601F067FC01F068FC02460395029609A801
+905B4603200090FFF78AFE08F5B06116A8B4F4F9F7B198
+AE9B049022AA002003900290019060A9AF98009009A8B4
+F4FFF799F91000DDF8CCB2002818BF022803D1B2980E90
+CDF834B048463D68BBF4FDF50646012111A821F43AF001
+9086F0010101200090029128462D68D5F808C04B4609AA
+16A9E047C8B1022813D199F9100018B9514608F5F46004
+E0022805D1514608F5FD6039F489F306E040F22C5100F0
+0EFB01E0012801D10120A0E0002C72D099F9100000280C
+BFB2EE048AB3EE048AF7EE000A9BED000A21F49FF1F0EE
+408A00F0B4F99FEDD29B53EC192B12F42FF241EC100B24
+F4ADF200F0A3FDFFF744FE53EC192B12F423F241EC100B
+24F4A1F20020DFF8D41B00F09AF800F082F80020DFF8C8
+1B53EC1A2B12F45BF441EC100BB0EE481AF0EE681A21F4
+31F199F9100000F069F810BB9DF81400F8B19BED000AF3
+EE0E0A00F009FA18D500F06AF802460B460020DFF8881B
+12F47BF341EC120B9FEDB11B9FEDB30B82F47FF700F08D
+FAFFF7D5FD21F451F100F045F800F05BF8044600F058F8
+D0E9002351EC180B12F4D6F1C4E90001F19403B0608100
+99F91000002818BF022814D178680022514682F4D5F49B
+ED000ABDEEC00A10EE101A20F8F01FB29991ED000ABDEE
+C00A10EE101A4180012160A87AF4F3F58146012122A87A
+F4EEF500F024F812F436F3B09AC2E9000100200DF51E7D
+BDEC068BBDE8F28F9CC99100C027090030DA8900B0EE40
+8AF0EE608A7047000041EC110BB0EE418AF0EE618A7047
+000010EE100A14F4B4B3024653681268D9E900017047AF
+9801217AF4BEB553EC102B12F4C6B34046B5F471B70000
+8DED140B4046BBF47DB400002DE9F84F2DED088B8CB080
+468A46144602A8B5F447F408F6C4260025B068A5F4EDF7
+AB46007801280CBF01270027B068A5F4E4F708F5F46900
+7802280AD0B068A5F4DCF70078032804D0484620F430F3
+0A2801DA4FF0010BBFB94046B4F46AF4972805D2207A00
+0702D4BBF1000F0CD030689DF471F5054601F0FCFA0246
+F0682B4602A9B5F442F4054621464046A8F48DF29FEDA0
+AB18B100F0B8F8002856D1002D54D09DED069B01F0E4FA
+024651EC190B5369126912F49FF200F0A9FCFFF775FF05
+22052108F1C8007AF441F505469DED080A21F4CAF0D5E9
+0023B0EE40BA0020DFF8A41912F4FDF005468B461BEE10
+0A14F421F32A465B4612F4C5F100F075F853EC102B51EC
+180B12F435F30122DFF8983912F4A6F019D99DED088A3F
+B9F3EE0E0AB0EE480A21F442F0B0EE408A00F066F800F0
+5EF880ED00AB00F051F841EC100B21F496F0FFF730FF1D
+E0207A000732D5484620F4ABF270B3484620F4A7F20428
+29DA00F04BF800F043F880ED00ABF06AB5F44EF621F47C
+F0F06AFFF715FFB5F443F6FEF7EFFF01F073FA84460020
+01900090DCE9042351EC190B12F42BF241EC100B01230B
+22B0EE481AF0EE681A51464046ABF497F60CB0BDEC088B
+BDE8F18F349D52A246DF913F0000000000003940FF2292
+FF0000000000000000074618EE100A14F4A7B2000041EC
+100B24F4FEB00522012150467AF4A9B400000822012150
+4676F477B300004046B5F437B30000F0B5BFB004464498
+A0B98868800405D52046B9F47FF720F441F258B904F6AC
+25286AB1F4A1F60078092803D02046B4F45DF508B90020
+55E0286814F473F241EC100B3AF423F600F05FF800EE10
+0A21F46FF006460DA8BBF427F510A8B1F4CAF602466969
+2CA8BBF4C9F304F5FD6110A81EF4BAF32046B1F4B9F68D
+ED080B2046BBF430F306900DA90AA8BBF417F52046B2F4
+58F10746A8699DF454F400210591049102460AA9039100
+9706A902919FED580B08A9019110ABF19403406481002C
+A91AA8B1F4AAF72046B9F42FF7B0EB460F08D29DED260A
+F1EE040A00F00AF848BF012002D4286AB5F4A6F23FB0F0
+BDDFED4B0AB4EE600AF1EE10FA7047000065CDCD41E133
+0D00000000000000F03F51EC100B14F4C2B1F8B505462D
+ED068B05F6AC2082B090ED000ADFED350AFFF7E1FF0C46
+17461E465DDA006AB1F418F60078042857D105F5885039
+46D030A5F467F700F075F801224FF07A5311F47CF703D9
+40F2C25100F077F82846B5F40AF6B0EE408A05F5EE60BB
+F488F4F0EE480AB1F488F5B0EE40AA08220121204676F4
+ADF20422012120467AF4D4F30022DFF8D436C0E90023B0
+6801279FED160AC00544BF9FED150A0027FFF700FEDFF8
+C026DFF8E03611F488F700F042F841EC100B20F44AF700
+200190009000F023F800F0EFFA01F0E2F841EC100B3B46
+0C2200F01FF8ABF473F502B0BDEC068BF1BD0000010080
+3FCDCC9041666634428244E74A1857C63FE06581000000
+000000409F400100A040B0EE401AF0EE601A70470000B0
+EE481AF0EE681A2146284670470000B0EE409AF0EE609A
+51EC190B7047000053EC192B12F48AB10FF20400EAF760
+B870617463685F676C70655F6E6176676E73736B662E63
+7070000000002DE9F24F2DED108BADF6582D804691469A
+46B0EE40FAF0EE60FA00F093FA0CA881F488F44046B5F4
+C3F50346DDF8982A0CA94046B0F458F6002800F068820D
+F5B46094F487F206A8B4F456F4089840F2011108430890
+01260DF59560B1F45CF5ECA8B1F459F5AEA8B1F456F570
+A8B1F453F500F0E1FA04464046B1F43DF5054606A909A8
+FBF7D0F8FFF772FD01F0A6F8FEF726FE01F0AAF8024603
+94029509A801903B460320009000F058FAAEA964A8B4F4
+38F4002004900390029001900DF5B46370A80090ECAA0D
+F595615CA8B4F43DF408F6BC270CA87C68BBF445F20546
+012118A820F482F401900096204685F0010102910CAB24
+68D4F808C05CAA64A9E04718B140F2F951FFF768FF00F0
+64FA032290ED000B8DED000B00F045FA052290ED000B8D
+ED020B00F03EFA04AB90ED000B8DED040B02AA69463AA8
+75F49CF50346012208F5D16118A875F4D1F700F043FA04
+46012118A894F46EF2032200F01FFA0446022118A894F4
+66F2052200F017FA0446032118A894F45EF2012190ED00
+0B84ED000B0DF595607AF4A5F204460121ECA87AF4A0F2
+024600F047FADDF8C02A9FEDD09BC2E900010DF5B46140
+46AEF4C2F7B0EE40BAF0EE60BA9DED0E0B20F414F6DDF8
+C40A022800F0D7F99FEDD3AB08BFF19403D06781009FED
+D3DB09D0012807BFB0EE4ADAF0EE6ADAB0EE49DAF0EE69
+DA08F590501830B1F48CF7DDF8C00A4168006853EC102B
+11F4B4F741EC100BDDF8C00A80ED000B51EC100B002200
+2311F402F605D2DDF8981ADFF8E00321F401F100F0B1FF
+007801280CBF0125002500F0AAFF0078022804D000F0A5
+FF0078032801D1B34601E04FF0000B002D53EC1B2B18D0
+51EC1C0B11F4CCF6FFF77CFD00F0ACF900F08AF9B0EE40
+EAF0EE60EAB0EE4D0AF0EE6D0A23F470F600F098F9C9E9
+00010FE051EC1D0B11F4E1F553EC1C2B11F4AFF6FFF75F
+FD00F08FF900F06DF989ED000B00F073FF007805280CBF
+0124002400F01EFFB0EE40DAF0EE60DA53EC1B2B51EC1C
+0B11F494F641EC1B0B00F048F99FEDCACBB0EE40EAF0EE
+60EA53EC1D2B51EC1C0B11F4B2F553EC1E2B11F4F8F741
+EC110B9FEDC10B20F4D0F4FFF74CFE9FED740B20F410F5
+8AED000B00F038F953EC182B00F00AF90EBF9FEDBA0BB0
+EE490AF0EE690A00F03DF941EC180BDDF8C80A50B1DDF8
+C00A90ED000B20F424F553EC102B51EC180BA3E051EC1F
+0B0022DFF81C3E11F45EF50FD3BBF1000F00F0BD8000F0
+C5FEDDF8C02A5368126851EC100B11F44FF580F0B18000
+F003FF007818B100F003FF007870B900F0E9F851EC180B
+FFF7DBFB41EC110B9FED5C0B20F47DF400F0BBF874E084
+F001010D4204D0D9E9000100F00EF96ED9BBF1000F06D0
+00F0CAF8DFF8AC3D11F400F564D9002D3CD000F0DBFE00
+7801282DD14046B9F45BF450B14046B4F423F051EC100B
+00F0F1F802D88AED00CB66E0387808B99FED839B00F075
+FEFFF785FB00F0A9F800F097F853EC182B51EC1C0B11F4
+17F553EC1A2B11F45DF741EC110B00F08FF820F47BF400
+F073F82CE000F0A8FE0078042804D100F089F8DFF8303D
+3FE0254205D08AED00AB00F080F86E4B37E0BBF1000F25
+D000F093FE0078012816D100F088F89AED001B00F05AF8
+0CBF9FED620B9FED150B20F40BF48AED000BDAE90001D9
+E9002311F4BFF431D22BE000F077FE0078042804D100F0
+58F84FF080430EE000F06DFE0078022821D10020DFF8C4
+1CDFF8B43CCAE900010122D9E9000111F47EF414D80EE0
+000000000000F03F00204D494C4BCAE900010122D9E900
+0111F46EF401D8002602E00020C9E9000030460DF6582D
+BDEC108BBDE8F28F000000000000000010400000000000
+0022408AED000BD9E9002351EC100B7047000090F85400
+01287047B0EE418AF0EE618A70470000B0EE40AAF0EE60
+AA70470000B0EE490AF0EE690AF19403606B8100704700
+00D9E9000101227047B0EE4B0AF0EE6B0A23F4F6B4B0EE
+40CAF0EE60CA7047000041EC100B20F404B4DDF8981AB8
+680023002281F4E5B6000090ED000B84ED000B01210DF5
+B4607AF48BB0000051EC100B11F450B453EC102B51EC1E
+0B11F494B6DDF8C00A4168006853EC102B11F48CB60122
+01210DF5B4607AF472B00122DFF8A83B11F4F7B30000E0
+930400E19304000000F03F00003E4000002240349D52A2
+9CC991000000000000000040000000000000F83F000000
+000000E03F0000144046DF913F53681268D4E9000111F4
+9CB54046B1F447B500002DE9FE4F2DED108B82B0ADF590
+5D8046002500260DF580513020D1F84812704341180DF5
+D962801881F48AF1761C3C2EF0DB002600F028FD01FB06
+0008B181F459F1761C3C2EF5DB0DF5805640F27C60D6F8
+4862684420F4BDF640F23460684420F4B8F6FFA8FF30F1
+3020F4B3F6FFA8FF30A93020F4AEF6FFA8FF30613020F4
+A9F6FFA8FF30193020F4A4F6DFF8A41DCDE90C519FED76
+CB8DED0ECB8DED0ACB11A8BBF4A7F01BA8B1F44AF208F6
+BC27024679680DF59960BAF446F71BA8B1F43FF28DF820
+50ADF81A508DF81950ADF81E508DF81D50F4A8B1F4FEF1
+B6A8B1F4FBF18DF81C500DF5D96A00F033FD9FEDD1AA00
+780328A946DFEDCFAA9FEDCEBA9FEDCD9ADFEDCC9A04D0
+00F023FD0078022802D101208DF81C00002400F01EFDAB
+460078052808BF012400F017FD007818B100F00FFD0078
+08B94FF0010BFFF701FB20B924B94046BBF40AF100B101
+208DF81800B0EE4CFA9DF818005BEA0000F0EE6CFA3ED0
+0DF580509FEDB4DBD0F84C021FF439F5002831D0414684
+A8B1F4CBF10DF5805172A8D1F84C1253F4E6F04046B5F4
+EDF10446FFF7CAF9834600F0FEFC00F0FFFC00F00DFD03
+46059401200490039502950195CDF800B000F086FCB0F4
+AAF334A876F489F400F079FC00F0CFFC00F0C7FC00F099
+FCFFF7AFFEFFF7B1FA00283FD00DF58050D0F850021FF4
+FBF4002837D0414684A8B1F48DF10DF5805172A8D1F850
+1253F4A8F0FFF7F4FE02904046B1F450F10446FFF789F9
+834600F0BDFC00F0BEFC00F0CCFC0194CDF800B0034602
+9991ED001B00F047FCB0F4B9F534A876F44AF408F59050
+1830BBF495F000F08DFC00F085FC00F057FCB0EE40FAF0
+EE60FA0024DFEDCBDA25E000BF000000000000000000F0
+F8FBF13038F403F49DF81A009AED0A0A401C8DF81A003B
+EE00BA9DED0A0BB6A803F00FFC00F075FCFFF72BFE05D1
+9AED0A0A79EE809A09F10109F19403F06E81000AF1300A
+641C00F0CDFB80F2C7809AF9100040B102280DD040F22D
+71FFF764FB9AF9100030B90DF580504FF0010BD0F84C02
+04E00DF58050AB46D0F850020AF12C0150F439F21BEA00
+0FD9D09AED0A0AF3EE010AFFF796FAD2DB9DF82000401C
+8DF820000AF12C01FFA8FF30F13020F465F500F031FCFF
+F7E7FD0BD19DF81F00401C8DF81F000AF12C01FFA8FF30
+193020F454F50AF12C0110A833F4A5F483469DF8180002
+90B0EE4C1A0AA80090F0EE6C1A03950195FFF7CBFD00F0
+BEFB00F0C1FB59464046FFF721FB00283FF47AAF9DF81B
+009AED0A0A401C8DF81B007AEE80AA9DED0A0BF4A803F0
+8EFBB4EE6DAAF1EE10FA1FDB00F083FB00F0F6FBFFF7BB
+F800F077FB00F0F7FB8346B8689CF465F616A903910246
+09A90291059514A901910495CDF800B09FEDCD0B3FAB00
+F057FB00F03DFBB8689DED27AA00F0CDFBFFF782FD0DD1
+00F037FB613020F4F6F49DF819009AED0A0A401C39EE00
+9A8DF81900DDE90A010022DFF8183A11F4E0F10ED29DF8
+1E00401C8DF81E0040E700BF0000C64200000000000000
+00000000409DF81D00401C8DF81D0031E79DF81B000028
+0FBF9FEDB08A00EE100AB8EE400A8AEE808A9DF81A0000
+280FBFDFEDAA8A00EE100AB8EE400ACBEE008A9DF81900
+00280FBF9FEDA49A00EE100AB8EE400A89EE009A5FFA89
+F9B9F1000F0FBFDFED9E9A00EE109AB8EE400AC9EE809A
+00F0FFFA00F072FBFFF737F800F0F3FA00F073FB00F081
+FB00F027FB00F0C9FA27981090FFA9FF31613100F0EDFA
+00F05DFBFFF722F800F0DEFA00F05EFB00F06CFB00F012
+FB00F0B4FAFFA9FF319DED27EA193100F0D8FA00F048FB
+FFF70DF800F0C9FA00F049FB00F057FB00F0FDFA00F09F
+FA9DED27DA4046B5F420F08246FEF7FDFF044600F031FB
+FFF7E8FC00F034FB00F03EFB0121FFAACDF814A0049103
+95029501950346FF320094B0EE4A0AF0EE6A0A19324146
+64A8B0F4D4F19DF81800002861D19FED690AB4EE40DAF1
+EE10FA0AD564A876F452F2FFF762F90EEE900A04E000BF
+01002041DFED5FEAB6A803F0A1FAFFF7B3FCF4A803F09C
+FA9DF81C000590B0EE40BA9DF81D000490F0EE60BA9DF8
+1E000390CDF804909DF81F0002909DF81900009051EC1A
+0B13F4FFF204EE100AF0EE6E4AB0EE44AAF0EE64AA51EC
+1B0B13F4F3F203EE900A9DF820309DF81A209DF81B109D
+ED101AF0EE6A4AB0EE4A4AB0EE4D3AF0EE4E2AB0EE692A
+F0EE491AF0EE680AB0EE480A2DA803F062FA0146404600
+F09CFB9FED399A0DF5D96AF1940380728100002417E01A
+A833F427F30146B0EE4F0AF0EE6F0A4046AEF44DF540B1
+00F01EFA00F002FAA93020F4C1F330365D460AF1300A64
+1C00F0EEF980F2C7809AF9100058B1022800F0AF8040F2
+9171FFF784F99AF91000002840F0A68000F089FA5FEA00
+0940F0A38000F0E5F950F45DF00028DDD0B9F1000F05F1
+010B0AF12C01C1D040F23460684420F491F3B4EE6D9AF1
+EE10FA30DB40F23461694400F0ECF900F05CFAFEF721FF
+089000F0DDF900F05CFA8146B8689CF4CAF40246002005
+900490CDF8009016A803909FED010B0AE000BF00000000
+00409F4000000000010000400000C64208A802903FAB14
+A8019000F0AFF900F095F90AF12C0119A833F4ACF28146
+01200390B0EE4C1A9DF818000290F0EE6C1A38780190B0
+EE418A0AA80090F0EE618A19EE100A13F480F200F0C2F9
+49464046FFF722F900283ED000F08EF9DDE90C01DDE90E
+2311F42AF01FD2387802281CD09DF81800C8B9DDE90E01
+DDE90C2311F483F241EC100B23F491F023F4B9F09FEDA6
+1B1FF457F7D6E90223FFF7D7FB41EC100B86ED020B8AED
+020B40F27C600AF12C01684420F408F330365D469DED27
+9A43E74FF000095CE70DF580500AF12C01D0F84C0257E7
+40F234600AF12C01684438F43EF131E79DF81C00002836
+D00DF5805649A8D6F8486220F4D8F240F27C61694400F0
+46F90DF5D96A0025002415E00AF12C013FA831F4F7F160
+B100F02CF99AF9100030366D1C022804D10AF12C0149A8
+20F4C9F20AF1300A641C00F0F8F8E6DBFFA9FF3149AAA9
+312DA8B9F4BEF5FFA8FF302DA9A9304EF4A0F50DF58050
+40F27C61D0F84C0269444EF497F50DF58050FFA9FF31D0
+F85002A9314EF48EF500F0EEF8301A6DB290FBF1F08542
+03D040F2E471FFF76EF89DF81C00002800F0BA80786BD8
+F462F0FEF7A4F980F0B3803869A3F493F30078002803D1
+3869B8F4D9F6002840F0A7800DF5805151A8D1F84C1252
+F42FF50DF580513FA8D1F8501252F428F5786BB4F493F5
+FEF79FFF3FAF51AE00EE100A3A463146404603F00EF951
+A968461DF402F300F026F99DED390A9FED849AB4EE490A
+B7EE008AF1EE10FAF1EE048AA8BFF0EE489A08DA00F0C2
+F84EBFF0EE689AF1EE080A70EEC09A3FA968461DF4E3F2
+00F007F99DED390AB4EE490AF1EE10FAB6EE00AAA8BFF0
+EE488A08DA00F0A7F84EBFF0EE088A38EEC00A60EE0A8A
+4FF00008DFF898641EE09AF91000022818D10AF12C013F
+A881F4C0F590B100F05DF84FF4D5F668B1F7EE000A28EE
+890A1FF48CF6FEF796FDF1940310768100DAE9022310F4
+20F7CAE9020107F101084FFA88F7AF4228DA00F04CF817
+FB010A0AF12C001FF4FCF502280CBFB0EE4A9AB0EE489A
+9AF910000028CAD10AF12C0151A881F48FF50028C3D00A
+F12C01304681F488F50028BCD000F0C2F80028B8D0F7EE
+000A29EE890AC6E702B00DF5905D2846BDEC108BBDE8FE
+8F0000000000000088C34098F96807E4B2844270470000
+2DA91BA8B0F498B5FFA8FF300AF12C01704700000DF580
+500AF12C01D0F85002704700000DF580503021D0F84802
+70470DF599612DA8B0F461B600005146304680F45CB409
+9011A916A8BAF4ABB30000FFA9FF31F1313FA81DF43AB2
+08F590501830BAF447B40000B0EE480AF0EE680A72AA84
+A934A87047F7EE000AB4EE600AF1EE10FA704700000746
+1AEE100A13F4BDB0000041EC100BB0EE481AF0EE681A0C
+AB0EAA7047000041EC100BB0EE481AF0EE681A1FF4EEB5
+16A90391059509A90291049514A90191024600949FEDC3
+0B3FAB0DF599612DA8B0F410B600002440000010400000
+F83F0100A040000008403869A4F4EDB400003869B0F4A9
+B4000053EC102B51EC1D0B10F456B6B0EE408AF0EE608A
+34A875F459B7000000236A4641462DA8B0F462B3B86800
+2300220AF12C0181F4C7B0000007464046B0F4CAB4B0EE
+408AF0EE608A4046B0F46FB700000DF580500AF12C01D0
+F84C024FF4D4B501462EA8A3F47AB50446B8689CF45EB2
+2DE9F0430C4604F12C018FB020788E78637C15460328A3
+BF6278032A012200225BB1277C00EE107A00EE903AB8EE
+400AF8EE600A80EE200A01E09FED8E0AD4ED090A4B78F5
+EE400AF1EE10FAC6BF94ED0A1AC1EE200ADFED870A5BB1
+097801EE101A01EE903AB8EE411AF8EE611A81EE211A01
+E09FED7F1A002A1DBFD4ED011A94ED022A71EEC21ADFED
+7A1A02EE100A6178F8EE423A02EE101AA17800291DBF02
+EE901AF8EE622AC3EEA22ADFED712AB8EE422AA17C33EE
+C22A59B1227C03EE102A04EE101AB8EE433AB8EE444A83
+EE043A01E09FED673A28B1207C00F05AF8C4EE233A01E0
+DFED633A00270FF28C18E946382202FB0781684611F483
+F699ED014A9DED005ADFED5B4A04EE245A304600F040F8
+D9ED024A207800F039F8D9ED034A207C00F034F8D9ED04
+4A607C00F02FF8D9ED054A04EE245A99ED064A04EE005A
+99ED074A04EE205A99ED084A04EE015A99ED094A04EE21
+5A99ED0A4A04EE025A99ED0B4A04EE225A99ED0C4A04EE
+235A99ED0D4A05EB87007F1C04EE035A032F80ED005AB4
+DB0FB0BDE8F0830000F19403A079810004EE245A04EE10
+0AB8EE444A704700003EB504466A46FFF72BFF334DDDED
+000A95F9010095F900106B46421E93ED010AF4EE400AF1
+EE10FAA1BF93ED021AF4EE410AF1EE10FA491E0DDAD3ED
+020A491CF4EE400AF1EE10FA05DB9DED000AFEF739FD48
+BF421C29706A70002095F901101FF45CF46870002095F9
+00101FF456F428700A2095F901101FF416F468700A2095
+F900101FF410F4287094F8BC2A95F90110022A02D10129
+0CDB07E0012A03D1032903DA012804E0032901DB022004
+E0032801DB012000E0002084F8BC0A37BD0000F03F0000
+2E409CC991000000000000409F4000000000E6CB910010
+AE6D40C19FB53F6CD3933FE68E993FFE86BD3FA5019DBE
+9F30D0BE13E0003EB9F354BE53F1503E4E359F3FE6CE79
+3E6E2188BEFBE418BE3B2D72C02A0CA2BF839F42BF9E75
+98BFED27A4BF0AEF983E0CCA953E09298CBDD241393ECB
+503BBE21292ABFE3AFA5BE7A806C3E8475823E60BFA2C0
+30D8BDBFA316D1BFE4484EBFBD5083BF88C0583EAB5713
+BF17CF16BE9622503E5486CDBDE6459ABF03A9DCBE8041
+143EB74F2E3E2DE9F84F2DED068BADF6184D8046DDF858
+5CA868400800F001008A4614461F46009008F5C079DDF8
+643CDDF8602C9DF85C1CB0EE408AB0EE419AF0EE619A48
+46DCF40EF10DF51A60B4F47EF39FEDCA0AB4EE408AF1EE
+10FA4CBF0126002621466846A3F4B1F30346B0EE491AF0
+EE691AB0EE480A5246414636A8D5F46FF400F077FA10A8
+AEF4DCF704A8B4F4E7F1287AC00706984EBF40F0010040
+0840000690DFEDB68A287A400706984CBF40F0800020F0
+80000690002E069814BF40F0100020F0100006906CA8B3
+F40CF70146D8F8C0014FF47A732246B3F4DAF7C0B10698
+40F00400069003203874012087F824009DED700B87ED00
+0BB0EE680ADDED720A1FF476F310EE100A12F436F6C7E9
+020108F1C006B068CBF4EDF301903B4600200090726831
+680BA8B4F404F304A907A8B4F49EF10390CDF808A00194
+009773683268B0EE490AF0EE690A76A95AA8B4F495F100
+F00DFA00F00FFA07A81CF424F236A81EF4C5F5297A0024
+C9074CBF08210721884206DB07AB36AA76A94046D5F4B9
+F5044607A94046D5F486F636A976A8AFF4C4F083460121
+76A8AFF4F1F000F041FCBBF1000F08EE100A41D0594610
+A8AEF4DEF700F0DCF906989DED2A0A40F480700690DFED
+DE0A20EE200ABDEEC09A04A908A8B4F44CF103908DED02
+9A10A8019000972B9812F4C7F541EC100B7368326876A9
+48A8B4F441F10021F19403307D810000910023032236A9
+AFF48CF136A976A8AFF486F00700069820F48070069009
+D0394610A877F470F3F86E2B90386E2890786E29907CB1
+07A94046D5F42FF600F099F900F09BF9012176A8AFF49B
+F000F0EBFB08EE100A10A8BAF446F0002800F0648101A8
+B9F41AF1297A039849074EBF40F0010040084000039001
+A9039840F40020039008A8B9F419F100902B9812F475F5
+41EC100B0C23524610A948A8B9F413F101469FEDA40B0D
+F51A6336AA0BA8B5F4A0F600285AD04846DCF477F00028
+55D04DF804CD0DF500605DF804CB90ED6B0B1FF4F1F24D
+F804CD0DF50060B0EE409AF0EE609A5DF804CB90ED690B
+1FF4E3F253EC192B51EC100B10F4E7F312F4F5F400F02B
+F9B4EE490A40F6A810F1EE10FA68444CBF01270027D0E9
+0A23416A006A10F4D3F312F4E1F400F017F9B4EE490AF1
+EE10FA4CBF012000204DF804CD0DF54061DFED7E0A91ED
+000A5DF804CBB4EE600AF1EE10FAACBF01210021384380
+F00100084304BF4846DCF421F030689BF414F700240746
+A24606E032A5C24A00004842BAF1060F08D0B0687EF488
+F65146D0F4D7F740B100240DE0B0687EF47FF60621D0F4
+CEF704460AF101005FFA80FABAF1070FE5DB287A8007B6
+EE009A04D4DFF83806874200D24CB19FED5E0AB4EE408A
+F1EE10FA08BF9DED2C8A10D09DF81800B0EE490AC007DF
+ED580A48BFB6EE040AB4EE608AF1EE10FA48BF28EE008A
+4846DBF4D2F7002823D04846DBF4D3F7014610A876F453
+F4B0EE40AAF0EE60AA4846DBF4CAF700F092F80ED2B4EE
+688AF1EE10FA09D59DF85C0C0328484602D1DBF4BFF701
+E0DBF4B2F74846DBF4ADF700285FD04846DBF4B0F700F0
+78F848464CD2DBF4B2F720B94846DBF4B0F7002850D148
+46DBF4A9F7D8B951EC1A0B12F434F400EE100A20EE098A
+00F06CF88DED2C0AF0EE480A9DED2E0A1FF4AAF18DED2E
+0AF0EE480A9DED2F0A1FF4A2F18DED2F0A4846DBF48DF7
+88B14846DBF48BF7B0EE408AF0EE608A4846DBF474F701
+46B0EE480AF0EE680A10A8AEF476F64846DBF473F7D0B9
+4846DBF465F7014610A876F4E5F300F097FA2C900FE0DB
+F46FF751EC100B53EC1A2B10F4F1F13CBF4846DBF469F7
+00F027F88DED2C0A0DF51A6210A9404600F031F80DF618
+4DBDEC068BBDE8F18F0000000000000000F0BF01008040
+00007A4400007A4500803B4553EC102B51EC1A0B10F4CA
+B109EE100AB1EE000A1FF4A4B1F0EE480A9DED2C0A1FF4
+40B176A8D4F41DB50000012000900023012236A95AA8AF
+F492B02DE9F843F19403C08081002DED108BA4B0804600
+20039004900C4615460CA8A3F412F104F16006DFEDCC9A
+F06805909FEDCBBB4046B0F4EDF29FEDCBAA90ED00CB40
+46B2F402F1B0EE409A2046B9F489F60028B0EE698ADFED
+C48A08F1C00700F03381306912F4C7F341EC1B0B706912
+F4C2F341EC1A0B95ED0ADBDFF8081453EC1D2B002010F4
+37F100F09B8051EC1D0B12F469F308EE100AD5E90C0112
+F463F300EE100A38EE008AB4EE698AF1EE10FA40F18780
+01214046B2F495F6D5E9020112F451F309EE100AD5E900
+0112F44BF300EE100A20EE000A09EE090A22F4E9F1DFED
+ED0AB4EE600AF1EE10FA8DED030A36DB95ED001B95ED02
+0B22F4A2F100F0D0F90490D5E9020112F42DF300EE100A
+1FF40BF1D5E90001F0EE408A12F423F300EE100A1FF401
+F1B0EE409A9DED030A1FF4FBF01FF4F9F0D5E90A01B0EE
+40CA12F411F300EE100AD5E90C0160EE288A12F409F300
+EE100A40EE098AC8EE8C8AD5E9080195ED06CB12F4FDF2
+00EE100A22F49FF151EC1B0B0022BF4B10F4F5F0B0EE40
+9A1DD2B868CBF4F3F0814619EE100A12F430F300F068F9
+41EC110BB0EE41DAF0EE61DA51EC1C0B00F05EF941EC10
+0B0021B0EE4D1AF0EE6D1A484694F4FEF4B06812F417F3
+D7E9042310F473F221F00041AA4AAA4B10F4A3F09CBFF8
+68B2F4FFF3214606A8A3F42DF0814651EC1A0B12F4B8F2
+0AEE100AD5E9080112F4B2F204EE900AD5E90601F0EE64
+AA12F4AAF204EE100AF0EE6A4AD6ED083A96ED033A9DED
+042A9DED031AF0EE682AF0EE481AF0EE4A0ACDED000A8D
+ED011AF0EE61AAB0EE42DAF0EE62DAB0EE43EAF0EE63EA
+B0EE44FAF0EE64FA51EC1B0B12F482F200EE100A002300
+22F0EE6F4AB0EE4F4AF0EE6E3AB0EE4E3AF0EE6D2AB0EE
+4D2AF0EE6A1A9DED011ADDED000A494612A8B6F478F106
+A80190CDED069A03A8009005AB04AA0CA907A8B6F4A6F1
+38689BF4B1F40146002002900190009007ABF86812AAB6
+F425F3B06812F494F2C7E9040104F1180108F1DC004DF4
+36F6F06A78662046B9F43DF540B151EC1B0B0022654B10
+F43AF038BF012000D30020387696ED000AB5EE400AF1EE
+10FA08BF9FED5E0A87ED1A0AB0EE680A22F4CAF0F0EE40
+8AB0EE480A22F4C4F03868B0EE408A9BF471F404460020
+01900090DFED577A9FED567AF0EE686A9DED046A96ED08
+3A05989FED4E5B0AE000BF0000C84300000040A6545841
+32A5C24A00247449F0EE493AF0EE438AF0EE63AAB0EE45
+9AF0EE659AB0EE46DAF0EE66DAB0EE47EAF0EE67EA12F4
+30F241EC120BF1940350848100F0EE6E7AB0EE4E7AF0EE
+6D6AB0EE4D6AB0EE495AF0EE695AF0EE6A3AB0EE4C4AF0
+EE6C4AB0EE683ADFED351AB0EE481AF0EE4A0ACDED020A
+F0EE41DAB0EE61DAB0EE429AF0EE629AB0EE43CAB0EE44
+8AF0EE648AF0EE63CAB0EE45AAF0EE65AAB0EE46EAF0EE
+66EAB0EE47FAF0EE67FA51EC1B0B12F4AAF100EE100AF0
+EE6F7AB0EE4F7AF0EE6E6AB0EE4E6AB0EE4A5AF0EE6A5A
+F0EE6C3AB0EE484AF0EE684AB0EE4C3AB0EE492AF0EE69
+2AF0EE4D1AB0EE6D1A2B46DDED020A0CAA21464046B2F4
+04F024B0BDEC108BBDE8F18300004FF094420B4B10F4E1
+B10000915F010000004940FB7E6ABC7493883F00007940
+0000C642000000000000000018B7D1380000000078DEB1
+4151EC100B12F45EB1012180F83A107047B83070470021
+8160416001607047000070B504462DED068B75F442F0B0
+EE40AAF0EE60AA204692F4EFF29FED1C8BB0EE489AF0EE
+689A0546012616E031B2204678F47CF353EC1A2B416800
+6810F4DAF041EC100B53EC102B0FF44AF753EC192B10F4
+18F041EC190B761C204692F4CCF2B042E3DA022D0ADB68
+1E10F4ABF002460B4651EC190B10F47DF141EC180BB0EE
+480AF0EE680ABDEC068B70BD000000000000000070B504
+460D46681E164604283CBF701E042804D325210FF21000
+E8F73BF804F180000580468070BD70617463685F676C70
+655F6D61747269782E63707000000030B50C468BB00546
+206812F429F1CDE90801606812F424F1CDE90601606812
+F41FF1CDE90401A06812F41AF1CDE9020104AB02A80090
+06AA08A9284673F40CF60BB030BD10B51CC91CC00C3810
+BD0000D0ED010A90ED020A90ED001A60EEA00A41EE400A
+80EE200AB1EE400A81ED000A90ED010A80EE200A81ED01
+0A90ED000A80EE200AB1EE400A81ED020A0120704780B5
+00F0E9F81E280CBF0120002002BD10B5044604F1100073
+F488F504F1980000F034F904F1A40000F030F9204610BD
+10B5044687F448F49FED152B9FED141B9FED130B04F118
+0075F4D0F40F48206304F1340000F01AF904F1400000F0
+16F90020E06520666066A066E06604F13400FFF70EFF04
+F14000FFF70AFF0020A06560652065E064204610BD00BF
+FF2292FF000000000000000038B504460D4600F09BF885
+4203D3C9210848E7F78BFF94F9140045FA80F01E21B0FB
+F1F11E2202FB1100702101FB0040183032BDB0A9810070
+B504460E4676F441F606F1180104F11800B8F429F4306B
+206306F1340104F13400FFF75FFF06F1400104F14000FF
+F759FF04F1F19403E08781004C054C3628463146102210
+F423F73069286170696861B069A861F069E861306A2862
+204670BD000080ED000AC0ED010A80ED021A7047000010
+B5044600F002F8204610BDF8B504460D46AC4216461C4F
+03D16E213846E7F733FFB44203D16F213846E7F72DFF95
+ED000AD6ED000A96ED011A20EE200AD5ED010A00EE810A
+84ED000A95ED000AD6ED010A96ED021A20EE200AD5ED01
+0A00EE810A84ED010A95ED010AD6ED010A96ED021A20EE
+200AD5ED020A00EE810A84ED020A2046F2BD00BF5C6180
+0080B500F005F8401E8041C00F02BD0000807D70472DE9
+F0412DED068B0D460C9F0D9E044611469846B0EE408AF0
+EE608AB0EE419AF0EE619AB0EE42AAA2F40CF5414604F1
+1800AFF405F42563394604F1340002F025F8314604F140
+0002F020F884ED17AA84ED189AC4ED199A84ED1A8AC4ED
+1B8A00210E9804EB810250F82130D364491C0429F7DBBD
+EC068B2046BDE8F08100000878401C40B21E2808BF0020
+0870704700210170416001727047000000F5E050703000
+22C0E90222026042607047000010B50446FFF7FEFD2046
+10BD002918BFD1F476B5704700002DE9F0478846914604
+461BF49DF304F5985721F49FF689374FF0000A41F68A15
+41F6891609E01AF80800C02803D103203055002028530A
+F1010ACA453FD2305D0028F0D0022803D011D303282BD0
+F2E71AF80800C02802D101203055EBE7295B4A1CB1F5C0
+6F2A53E5D2C855E3E71AF80800C42807D12A5B39462046
+00F022F800203055D6E7C0280AD1295B0846421CB1F5C0
+6F3CBFC021C1552A530220DCE7C12804D0ECE71AF80800
+C12802D100202853F3E7C028BED000202853CDE7BDE8F0
+8700002DE9F04104460D0082B0164640F2036008D18642
+01D2002E34D02368F43300229B6B2DE0082E0AD3F10701
+D486420BD323682988F43300229B6BC9B220E02368F433
+00229B6B1AE02768D7F8F4706B4629462046B84730B923
+682988F0330022DB6BC9B20CE02368D3F8F030B61E00F0
+C7F8984738B92368D3F82C310022002120469847B9E028
+88032804D1EA88511E8941C90F00E00021032804BFEA88
+0A2A09D101220020114350EA010704BF6068002808D1A1
+E00022032804BFE8880B28F0D10120EFE7A0680028F3D0
+04F5D850FA30BDF80010017129880180468048F2831128
+88884203D129462046D9F45CF441F6B818334658F80400
+D0F800C0DCF894C02A462146E047002873D129880A46A2
+F50140FF2812D858F8040006686A88366C931F9BB2AA1D
+B0472888F19403708B810048F28E1188425FD129462046
+D9F434F45AE00FF2C8502FB1032931D0DA21E7F787FD2D
+E061680A291FD1032A0CD0062A2DD048F202039A4213D1
+00F04FF85B6E29462046984742E004BFE988042906D122
+68D2F8002100212046904710E0F12100E0F921E7F764FD
+2EE0032A08D0062A0DD0092A12D0102A17D0172A1CD023
+E02368D3F80C3100F025F898471CE000F025F81B692946
+2046984715E000F01EF89B692946204698470EE000F017
+F85B6A29462046984707E000F00CF8D9F42AF400F008F8
+FAF7B4FB2046D1F42BF5BDE8F381000032462946204670
+47236803F58073324670470000F8B504462DED048BA068
+0D46016B01B10D466668F6B10168096A8847A068016809
+69B0EE408AF0EE608A8847B0EE409AF0EE609A51EC180B
+0FF428F587B251EC190B0FF423F582B230463668F6693B
+462946B047A0680563BDEC048BF1BD000030B5044641F6
+5C4087B0005DF2F704FA072104A810F480F4002041F650
+3104AA04EB4003CB181D885DB11B8C0BB9012306E0012B
+08BF022302D0022B01D103238354401C0328EBDB04F5CE
+50006890B109190A88012A0CBF00220122CB8F03938B8F
+02938B6B01934B6B009304680B6BA46B04A9A04707B030
+BD00002DE9FE4F044604F598552DED068B6C3504F5C857
+82B08A46B837C5F804A07868DDF850B0B0EE408AF0EE60
+8A38B1CDF800B006680A9B9DF82420B66AB04738680268
+926F514690470A980668D0F80480BBF1000F09D117E053
+EC182B002095490FF432F441EC180BC84651EC180B0022
+914B0FF417F308F10109EDD90FF4AEF48619864238BFC8
+46C5F800A0AE60A5F80C8038690FF28039016889698847
+28616068012812D0052809D004280ED0032816D1BBF100
+0F19D140F2951112E0B86820B10268D2F8B02000219047
+2868A86001220020A88100212046D2F4F9F4A3E040F2DD
+114846E7F741FC9DE01FFA88F1701A398C10FA81F0796A
+401A0FF48EF4002200230FF4CEF241EC190BB0EE49AAF0
+EE69AAE9D2786C40420FF475F4674A674B0FF4FFF253EC
+192B0FF4FBF2002200230FF4B7F241EC190B0DD2614A62
+4B0FF4D4F208D2AE680FF448F48019B0421CD2A989491C
+18E0002200230FF4C6F215D26FF40012594B0FF49CF20F
+D853EC192B002056490FF4D5F2AE680FF42EF4301A03D2
+A98911B1491EA981A8603D8F002D49D051EC1A0B4FF000
+524D4B0FF4A5F23FD204F5E0500022C0F800A051EC1A0B
+494B0FF400F50FF4FAF346193E8780B2FD6B0FF42AF400
+22434BF19403008F81000FF4AAF202460B4651EC1A0B0F
+F42EF40FF4FEF34519FD6353EC1A2BD7F840803B490020
+0FF498F200223A4B0FF466F30FF4EEF300EB080337483B
+64854204D3701C388735484019F86338680568FA6B398F
+2D6DA84701E00020388704F5C8500021D030D6F428F5A0
+6804282DD100200190606801280BD138680268D26E01A9
+904728B94FF4F5714846E7F789FB0CE02046D2F403F4A0
+682568D5F8305182B2606881B200232046A847CDF800B0
+204624680A9B9DF82420D4F84441B0EE480AF0EE680A51
+46A04709E06068052818BF042804D040F2FD114846E7F7
+61FB02B0BDEC068BBDE8F78F0000F0C10000F04195D626
+E80B2E113E0000E0FFFFFFEF41FFFFEFC10000F0BFC729
+2C424206C24100005940000018C000840C24007CF3DB10
+B5C824FAF760DBFAF7BADB20B90120E7F7E8DA641EF5D1
+10BD000070B5044604F5C85656F8BC0F10B10168496B88
+47A06804F5C855D035C8B1B062012141F28230005BB084
+2846D6F4A6F401206073A06803280BD1FFF7D3FFA06882
+B2606881B220462468D4F830410023A0472846BDE87040
+D6F4B6B480B541F6BC11085810B10168C96D8847BDE804
+4040F23A210CE0000080B541F6BC11085810B10168096E
+8847BDE8044040F246210FF27C00E7F7E6BA7047000070
+B5888800248C80921E1C8004E011F8016BAD191D80641C
+1D889442F7DB85420CBF0120002070BDF8B504460D4600
+20A880164606EBD6704010B6EB400005D040F269210FF2
+2C00E7F7BEFA2F460020002104E017F8012B801880B249
+1CB142F8DBA88020462168D1F8FC1088473880F1BD0000
+70617463685F676C6D655F706569665F696D706C2E6370
+700000000017F477B100F50850DC30704710B500F69450
+00210022002300241EC010BD000091ED000B80ED000B91
+ED020B80ED020B91ED040B80ED040B7047000010B500F1
+580100220A709FED210B01224A7000228A608A700122CA
+7000220A7101224A7100228A710122CA71002200EBC203
+03F67804521C84ED000B03F6181403F6B81384ED000B14
+2A83ED000BEEDB00F50462002393625362D36213631372
+D360136100F65820DFF88033536100239361D36181ED04
+0B136213709370D370DFF86C231370037103604371C371
+10BD00000000000000002DE9F0410E462DED048BB0EE40
+8AF0EE608AB0EE420AF0EE620A0F2E84B005461746B0EE
+419AF0EE619AB0EE432AF0EE632A98462EDBB6F441F313
+98119C0290019443460F980090B0EE491AF0EE691AB0EE
+480AF1940390928100F0EE680A3A4631462846B6F465F2
+1298039002944346109801903A460E980090B0EE490AF0
+EE690A31462846B6F490F204B02846BDEC048BBDE8F041
+B6F412B404B0BDEC048BBDE8F08100002DE9F84F2DED02
+8B5FEA010A8046B0EE408AF0EE608A914614D00C9800EE
+100A00EE90AAB8EE400AF8EE600A80EE200ADFED9E0AB4
+EE600AF1EE10FA54BF0026012621E001260125DFF86CB2
+9BF8000008F6420788B900F01BF907D936B9BAF10C0F0A
+DA4046B6F4CFF030B12D2000F015F900D90DB12D207870
+08F15A042079012818BF002008E0DFED890AB4EE600AF1
+EE10FAD7D40025D6E7BAF1000F4FD09BF800105A2904DB
+2178002918BF002846D100F0EDF807D936B9BAF10C0F23
+DA4046B6F4A1F0F8B100F0CEF800F0E6F807D935B9BAF1
+080F0EDA4046B6F494F050B100F0C1F838705A21787840
+1C787040B21DF443F717E07878401E7870002140B21DF4
+75F70FE000F0A6F800F0B4F87870002251EC180B684B0F
+F413F004D200F09AF800F0A8F878705A219BF80000401C
+8BF80000C0B21DF434F78BF8000097F901001F28A8BF03
+260ADA97F900001F28A8BF022604DABAF1000F14BF0126
+26784046B1F490F5B6F452F007462078072808F6580555
+D8DFE800F0040D182631313B4E00F080F818BB5FFA89F0
+28B9012F33D03AE05FFA89F008B107203FE0012F2BD000
+F070F898B92FE0012F04D1052020700298686004E000F0
+65F828B306202070002025E0012F17D000F05CF808B106
+2024E0032E267029D01AE000F053F818B1062020700020
+0AE0012F1FD00CE0012F07D100F047F820B90520207002
+98686014E000F03FF888B9032E26700ED1029828600BE0
+5FFA89F040B90020207005E040F239110FF29C00E7F7CA
+F80299B0EE480AF0EE680A4046B6F45CF52078012804D1
+98F85E0A08B102202070BDEC028BBDE8F18F3878401E38
+70002140B21DF4C5B600003878401C38705A2140B21DF4
+83B60000387000217878401E787040B21DF4B4B64046B6
+F483B6000051EC180B00220A4B0EF430B73870002251EC
+180B074B0EF429B700000100403F0100003FE0930400E9
+CB910000001440000024400000344070617463685F676C
+70655F636F6E746578745F6D67722E6370700000704700
+002DE9F0412DED028B04460D46ADF59A6D90461F462846
+1DF423F10D2804DB3B210FF2D460E7F75AF8002084F84C
+0028461DF416F104283CDB00269FED4B8A68461EF404F2
+014614A86022F0EE482AB0EE482ADFEDDA1A9FEDD91ADF
+EDF1940320968100D80A9FEDD70A02FB0600B9F493F676
+1C0C2EE6DB14A801902046B7F47DF4294602A850F4A9F4
+02460097434601A92046B7F49EF5019814A9401A602190
+FBF1F3DBB2022B07DB2A4614A9204600F060F8012084F8
+4C0094F84C000DF59A6DBDEC028BBDE8F081000070B51C
+4698B01346DFF8B865266068461D4612B99FEDB80A41E0
+012A08BF91ED000A3CD0002204E051F8226040F8086B52
+1C9A42F8D3DFF8C83508222946684691F456F205EBD570
+4008B5EB4002694610D16A4602EBC002083A01EBC00092
+ED000AD0ED000A30EE200AF6EE000A20EE200A08E0681E
+00EBD070C003000C51F8300000EE100A684600EBC50008
+389DED001AD0ED000A70EEC10AC4ED000A18B070BD0000
+0000C843F8B52DED0A8B0646B2B00D4610461F461DF470
+F0044600200EE001A9AA6C41F8202001EB8001EA6C41F8
+302F401C2A6D0A636A6D0A666035B842EEDBDFF8DC0400
+906B463A4601A900F010F900F09AFAC6E90401009811F4
+91F0C6E90C016B463A460DA900F002F900F08CFAC6E906
+01009811F483F0C6E90E013046B4F428F7B0EE408A9FED
+730AB4EE408AF1EE10FA0FD596ED0C1B9FED700B1DF4B3
+F586ED0C0B9FED6D0B96ED0E1B1DF4ABF586ED0E0B6B46
+3A4625A900F0D8F886ED0A0A64B20098B064052C0CDB6B
+463A4619A900F0CCF800F056FAC6E90801009811F44DF0
+04E00020C6E90800DFF83414C6E910013B460DAA01A930
+4600F0B9F89FED580AB4EE408AF1EE10FA54DB96ED0C0B
+1DF4D2F5B0EE409AF0EE609A96ED060B1DF4CAF5B0EE40
+AAF0EE60AA96ED0E0B1DF4C2F5B0EE40BAF0EE60BA96ED
+040B1DF4BAF5B0EE40CAF0EE60CAB0EE480A1DF4AEF51D
+F4ACF5F0EE408A53EC192B51EC1A0B0EF4E0F504460D46
+53EC1B2B51EC1C0B0EF4D8F522462B460EF4A6F604460D
+4618EE900A10F4F8F702460B46204629460FF412F010F4
+A8F700EE100A20F44AF6DFED2F0A60EE200A96ED150A1D
+F420F501E09FED2C0A86ED150AD6E910010022D64B0EF4
+93F507D23A46B0EE480A19A93046B7F489F702E0D148B2
+65F0659FEDD10B96ED0C1B1DF40BF586ED0C0B9FEDCD0B
+96ED0E1B1DF403F586ED0E0B9FEDC90B96ED101B1DF4FB
+F486ED100B9FEDC70AD6ED120A1DF4EBF486ED120A9FED
+CF8AD6ED150AB0EE480A1DF4E1F486ED150AB0EE480AD6
+ED170A1DF4D9F486ED170A32B0BDEC0A8BF1BD00000000
+00009B99193E333333333333C33F9A99193EE12E654200
+003443304673E62DE9F94F81B088462DED0E8BA8B09246
+F19403B0998100DFEDB48A9FEDB3CADFEDB2CA9FEDB1DA
+DFEDB0DA002400259FEDA69B9FEDA7AB0DF170091CE008
+EB8500D0ED000A0AEB850090ED000A20F489F500F063F9
+00F053F910F413F749F8250010F457F700F04FF951EC10
+0B10F409F749F825006D1C9DF8E0008542DED304AD0026
+9FED99EA00279FED94BB28E05F4513D009EB87009FED92
+1A90ED000ADFED920A20EE010AAEF4E8F2DFED8E0A20EE
+200A1DF49AF43EEE00EA0BF1010B9DF8E0008345E3D3B5
+EE40EAF1EE10FA04DD85ED00EA6F600835761C9FED83EA
+7F1C9DF8E000874260D20AEB870090ED000A1DF4A9F408
+EB8700B0EE408A90ED000A1DF4A1F438EE000A20F461F5
+08EB8700002CD0ED000AC0EE800A0AEB870070EEA88AD0
+ED000A59F8270080EE800A30EE0CCA03D10DEE900A0124
+33E010F4E9F653EC1B2B0EF4BBF410F49BF600EE900AB0
+EE608A1DEE900A10F4DBF653EC1B2B0EF4ADF410F48DF6
+00EE100AF0EE480AAEF483F200F0D1F800F0C1F810F481
+F608EE100AF0EE480AB0EE6C0A1DF4FDF3F0EE40CAF0EE
+480AB0EE4D0A1DF4AFF3B0EE40DA4FF0000B89E7F0EE68
+0AB0EE4C0A20F4D6F400F0B0F800F0A0F810F460F610F4
+A6F6CDE900018DED029B022202A9684675F41BF3B0EE40
+BAF0EE60BAB0EE4D0A1DF401F430EE2C8A51EC1B0B10F4
+47F637990865B6B231460329F6EE008A40DB3A4B082204
+A890F4E8F704ADF007686808EB8000D0ED000A68680AEB
+800090ED000A04D520F49BF410EE100A19E020F496F4E8
+6808EB8000B0EE40BAD0ED000AE8680AEB800090ED000A
+20F488F4F0EE400AB0EE4B0AAEF40EF200EE68BA1BEE10
+0A10F454F600F048F810F408F610F44EF600F046F851EC
+100B10F400F63799086528EE280A379880ED150A1DF4AB
+F3DFED170AB4EE600AF1EE10FA02D537981549416528B0
+BDEC0E8BBDE8F78F0000C842000039400000B4428DEDB5
+A0F7C6B03EBD378635000000000080764000C2631ADCA5
+4C40349D52A246DF913F35FA8E3CE12E654200000000ED
+110D0001000034E05070380000344353EC1A2B0EF4DCB3
+CDE902018DED009B0222694602A875F47BB2000010EE10
+0A10F4F8B570617463685F676C70655F6465616C732E63
+7070000000002DE9F84F2DED108BADF59A6D82469946AF
+F484F549465046AFF460F4494650460AF58075AFF45AF3
+686AB0EE40AAA0F49DF7007890B94846B0F496F651EC10
+0B0122DFF808390EF45DF307D8DFEDD00AB0EE4A0A1DF4
+B6F2B0EE40AA95ED009B9FEDC78B8DED048B09F5D866F1
+9403409D8100A86810F4B3F5CDE9020100F0C7FC007801
+2807D100F0BEFC007818B9F07A80F0010400E00024686A
+B1F4FCF0B5F4B6F34FF0000818B1686AB6F4AEF2804600
+F0B1FC9FEDA3FBB1F41BF60027B0EE4FEAF0EE6FEA38B9
+00F0A5FCB7F4DFF63168884200D37CB100F09DFCB8F41D
+F231688142F0EE68EA06D3686AAEF499F10078052808BF
+012700F089FC0078072808BFF0EE68EAF17B5046AFF4D6
+F228B1DFF84408DFF84418CDE90401307BA8B100F071FC
+007888B900F071FC0078022804D000F06CFC0078032807
+D153EC192B51EC1F0B0EF421F341EC190B00F05BFC40F2
+E93B007801280FD1306858450CD300F047FCB0EE491AF0
+EE691A02D29FED760B13E09FED770B15E000F044FC0078
+022817D13068584514D300F032FCB0EE491AF0EE691A04
+D29FED700B1DF41DF203E09FED6F0B1DF45EF2B0EE409A
+F0EE609A19E000F02FFCB1F49BF5A0B9686AAEF42FF100
+7805280ED100F020FC0078012809D1DFED650AB0EE4A0A
+1DF43BF2F0EE68EAB0EE40AA9FED61BB00F0FBFB00F0E5
+FB99F8E80600F0DBFB18B300F00AFCB1F476F501281DDB
+707C00281CBFB07C002817D01AEE100A10F4E0F4D6E906
+230EF4B2F200F0CAFB00F0C2FB96ED080B1DF472F253EC
+102B51EC1C0B0EF476F341EC1C0B8DED008BB0EE48DA00
+F0DAFBF0EE68DA007801281ED109F1C000B0F485F551EC
+100BDFF8F426DFF8F4360EF46FF29FED40DB38BFF0EE6B
+DA13D3707C88B153EC1E2B51EC1F0B0EF47DF29FED3BDB
+41EC1E0B06E000F0B4FB0078022808BF9FED2DDB00F0B5
+FBB1F421F5012808DB707C00281FBFB07C0028F0EE6BDA
+8DED00FBB07A08B19FED30DB00F06AFBB0EE4C0AF0EE6C
+0A1DF4C4F100F068FB00F070FB53EC102BDFF87806DFF8
+78160EF44AF241EC1F0B00F064FBB07A00F04BFBDFED0E
+AA00284FD04846B0F484F1B4EE6A0AF1EE10FA05DA4846
+B0F47CF100F0FEFA38DB53EC1C2B00F057FB41EC1F0BB0
+EE4CDAF0EE6CDA36E00150C347000000000000D03F0000
+00000000144000000000000014C0000000000000244000
+000000000024C0C2B8B23D000000000000E03F00000000
+000008400000000000000040000000000000F03F000000
+0000002540920A863E53EC1D2B0020DFF8CC150EF4F1F1
+41EC1D0B00F033FBB1F49FF401280BDB707C00281CBFB0
+7C002805D053EC1F2B00F009FB41EC1F0B00F019FB0078
+78B900F019FB0078022804D000F014FB0078032805D170
+7B18B1B0EE4CDAF0EE6CDA012100F012FB032180EDF194
+03D0A0810000CB00F00DFB022180ED00FB00F008FB8346
+53EC1E2B51EC1C0B0EF4B5F1CBE90001B8F1000F18BF8D
+ED00DB00F0F7FA80469DED001BB0EE4D0AF0EE6D0A1DF4
+11F188ED000B6FB1022100F0E9FA074600F0E5FA416800
+68D7E900230EF466F2C7E9000100F0D6FAB1F442F40028
+48D0052100F0D5FA4168006810F467F300EE100A20F409
+F29FED891BB0EE41DAF0EE61DA00F0B3FA0022DFF8EC34
+0EF474F141EC100B00F07EFA1DF496F000F074FA00F0B5
+FA4168006810F448F300EE100A20F4EAF1B0EE40EA51EC
+1D0B10F43EF300EE100A20F4DCF12EEE000A00F08EFA00
+F06CFA00F058FA022100F099FA0546022100F095FA00F0
+55FA00F025FA85ED000B052100F08CFA0546B0EE4A0A1D
+F4FFF000F073FAC5E9000100F053FAB0EE409AF0EE609A
+9DED040B1DF4F5F051EC100B53EC192B0EF427F141EC19
+0BB07AE0B14846B0F468F0B4EE6A0AF1EE10FA05DA4846
+B0F464F000F0E2F902DBB2EE040A01E09FEDD40A00F048
+FA53EC192B0EF40AF141EC190B9FEDD08B062100F04FFA
+054651EC190B0022DFF8FC330EF445F3C5E90001062100
+F042FADDE90423054600F01BFA00F009FAB0EE40AAF0EE
+60AA062100F034FA074653EC1C2B51EC1A0B0EF4E1F041
+EC110B97ED000B1DF449F085ED000B072100F022FA0546
+00F001FAC5E90001082100F01AFA092180ED009B00F015
+FA00F09FF900F0E9F9C5E900010A2100F00CFA00F096F9
+53EC102B00F0E4F9C5E900010B2100F001FA00F08BF900
+F0D5F9C5E9000164B1092100F0F7F90546092100F0F3F9
+9FEDCD1B00F083F985ED000B707A00285ED1012100F0E7
+F90546012100F0E3F99FEDC71B00F073F985ED000B00F0
+DAF900F0D7F99FEDC21B00F069F985ED000B022100F0D0
+F90546012100F0CCF9082100F01BF900F0C7F9BB4A4168
+0068BA4B0EF459F027D2082100F0BDF9B64AB64B03E011
+2D4454FB21F93FC0E90023062100F0B1F90546082100F0
+ADF9002241680068AE4B0EF4A5F2C5E90001072100F0A2
+F90546082100F09EF9D0E9002300F078F9C5E900010521
+00F095F900F091F9032100F0E2F800F08EF90022C0E900
+22012100F088F90546012100F084F900F014F985ED000B
+00F07DF900F07AF900F00CF985ED000B022100F075F905
+46022100F071F900F001F985ED000B052100F06AF90546
+052100F066F900F0F6F885ED000B062100F05FF9054606
+2100F05BF900F0EBF885ED000B082100F054F905460821
+00F050F900F0E0F885ED000B092100F049F90546F19403
+60A48100092100F045F900F0D5F885ED000B0B2100F03E
+F905460B2100F03AF900F0CAF885ED000B06A890F463F3
+0822082172F4EDF2012200F0B4F80546012100F028F902
+2200F095F800F021F9032200F072F8032106A876F406F4
+0546022100F018F9042200F067F8042106A876F4FBF305
+46052100F00DF9052200F082F80546062100F006F90622
+00F06BF80546082100F0FFF8072200F05CF80546092100
+F0F8F8082200F04DF805460B2100F0F1F8022200F040F8
+00F074F80546032100F0E8F8012200F055F80546022200
+F069F8082200F03EF805460A2100F0DAF8072200F02FF8
+05460822072106A876F4BBF3062200F046F80546072100
+F0CAF8052200F02FF80446062200F03FF86F2190ED000B
+84ED000B06A8AFF4C7F60DF59A6DBDEC108BBDE8F18F00
+000000C8430000000000407F4090ED000B85ED000B7047
+000090ED000B85ED000B082106A876F48AB390ED000B85
+ED000B072106A876F482B390ED000B85ED000B062106A8
+76F47AB390ED000B85ED000B022106A876F472B390ED00
+0B85ED000B052106A876F46AB3DFED1A0AB4EE600AF1EE
+10FA70470000012106A876F45EB305469DED020B1CF4EB
+B600009FED121B90ED000B1CF48AB60000F83F9A999999
+9999C93FEE7C3F355EBAD13FD1DCFFFFFFFFDF3F000059
+4000000000000010407B14AE47E17A843F7B14AE47E17A
+843F000008400100FA4311EA2D819997713DB0EE40DAF0
+EE60DA70470000B0EE4D1AF0EE6D1A70470000B0EE40CA
+F0EE60CA7047000041EC100B1CF4AAB6B0EE490AF0EE69
+0A1CF4A4B653EC102B51EC180B0DF4D6B651EC1B0B0DF4
+D2B653EC192B51EC1B0B0DF4CCB651EC190B002200230D
+F486B610EE100A10F4ECB0686AA0F4B3B20000686AA1F4
+47B50000686AB0F4C1B3000005460421504676F4EFB200
+0010B52DED028B0446B0EE408AF0EE608AADF456F52046
+90F42FF204EBC000083880ED008BBDEC028B10BD000080
+B5FDF727FFBDE801401FF419B7000001704270837080ED
+010AC0ED020A80ED031A00F12C02009901740199417402
+998174C0ED051A80ED062AC0ED072A80ED083AC0ED093A
+80ED0A4A039911700499517005999170C2ED014A70472D
+E9F14F2DED048BB8B0B0EE408A8A469146684633F4C0F6
+694612A81DF414F10FF2781B0CE0B8F90010814205DA00
+F0B1F86946484634F485F712A81DF400F112A81DF4FBF0
+002840F0888000F0A2F83C98D0F8C000002269467EF431
+F100F1F008B8F902000DF4A9F73F4A3F4B0DF4F19403F0
+A7810033F610F413F000EE900AB0EE480AADF409F410EE
+100A20F0004010F44FF0384A384B0DF4E1F541EC190B07
+D83648374953EC192B0DF4A2F741EC190B53EC192B3348
+34490DF410F6334A344B0DF4DEF60DF450F7074602A859
+4610220EF4F2F61E2097FBF0F4002C01D4042C04D31821
+0FF2C800E5F71CFF02A850F8246000EB84004068801B0D
+F461F70022244B0EF435F0CDE900011E2000FB14700DF4
+56F7DDE900230DF4E0F504460D4630460DF44DF722462B
+460DF4A9F60DF41BF7B8F90010814205DA00F02DF86946
+504634F401F72D2F04DA07EBD77040100F306AE74B2FB4
+BFC7F14B00002064E738B0BDEC048BBDE8F18F0000349D
+52A246DF913F122D4454FB21F93F112D4454FB21094000
+C2631ADCA54C409A9999999999B9BF00003E4012A96846
+1DF45CB0000000002D0000003C00000041000000706174
+63685F676C70655F6E61767574696C2E637070000010B5
+0446FDF7A2FE204610BD25643A256409416464696E6720
+7472616E73706F727420666F6F7465722E20436865636B
+73756D3D307825782C206C656E3A20257A75202D3E2025
+7A750A00002C253032580000002C253033580000002C25
+3034580000002C25303558000000676C70655F6E617673
+7466696C7465722E6800006666863F7593883F0E2D0A42
+0000000000010000020000030000040001000001010001
+0200010300010400020000020100020200020300020401
+0000010001010002010003010004010100010101010102
+0101030101040102000102010102020102030102040200
+0002000102000202000302000402010002010102010202
+0103020104030000030001030002030003030004030100
+0301010301020301030301040303000303010303020303
+0303030404010004010104010204010304010404020004
+0201040202040203040204040300040301040302040303
+04030400000AD7A33BEC51383D05000000000010410000
+00400000000000000000000070410000A0410000004200
+0020420AD7233C0AD7233D010000000100000000009041
+01000000000070410000904100000000000000000000E4
+410000C4410000A041010203040000A041000088410000
+8041010203040000F0410000C8410000A0410203050A00
+00F0410000C8410000A0410203050A0608060001080000
+FCFEFF00010200F65CAB810060AC810064AD810068AE81
+006CAF810085EB0F42040000000AD7A33C0000703F0AD7
+233C0AD7233D0AD7233D0300000000000040F1940380AB
+8100000000400000000000008040060000000AD7233D01
+000000CDCC4C3E00000000000000000000A04106010000
+010000000AD7A33C0000803E0000A03E02000000000080
+3F000000000000D0410A000000000040C0000000C03333
+834133338341881300008FC2753EFFFFFFFF0301030000
+0000000000803F01000000000000000A000000000040C0
+000000C03333834133338341000000000000F041000000
+0000000000000000000000000000000000000000000000
+00000100000000C0794400C079440000A0406400FA0000
+000000000000000000C6420000C6420000C64285EB0F42
+040000000AD7A33C0000613F0AD7233C0AD7A33C0AD723
+3D03000000000000400000004000000000000080400600
+00000AD7A33C010000000000C03F000000000000000000
+00A04106010000010000000AD7233D0000803E0000963E
+010200000000803F000000000000604104000000CDCC8C
+C0CDCC8CC06666AE419A99BD41B80B00008FC2753EFFFF
+FFFF03010300000000000000803F010000000000000004
+000000CDCC8CC0CDCC8CC06666AE419A99BD4100000000
+0000F04100000000000000000000000000000000000000
+000100000005000000010000009A99193ECDCCCC3E0000
+A0406400FA0000000000000000000000C6420000C64200
+00C64285EB0F42040000000AD7A33C00004D3F0AD7233C
+0AD7A33C0AD7A33C030000000000004100000040000000
+0000000040060000000AD7A33C02000000000000400000
+00000000803F0000F0410601000001000000EC51383E00
+00803E0000883E010200000000803F0100000000006041
+010000000000C0C00000C0C0CDCCD041CDCCE841D00700
+008FC2753EFFFFFFFF03020103000000000000803F0100
+000000000000010000000000C0C00000C0C0CDCCD04100
+00E841010000000000F041000000000000000000000000
+00000000000000000100000005000000010000009A9919
+3ECDCCCC3E0000A0406400FA0000000000000000000000
+C6420000C6420000C64285EB0F42020000000AD7233C00
+00003E0AD7233C0AD7A33C0AD7A33C0300000000001041
+000080400000000000000040060000000AD7233C020000
+0000004040000000000000004000004842060100000100
+0000CDCCCC3E0000803E0000803D010200000000803F01
+0000000000604101000000000020C1000020C1CDCC4543
+CD4C7543F40100008FC2753EFFFFFFFF03020103000000
+000000803F010000000000000001000000F1940310AF81
+00000020C1000020C10000AF42CDCCD442010000000000
+F041000000000000000000000000000000000000000001
+0000000500000001000000CDCCCC3DCDCCCC3E0000A040
+32006400FA000000000000000000C6420000C6420000C6
+4285EB0F42000000000AD7233C0000803D0AD7233C0AD7
+A33C0AD7A33C0300000000002041000080400000000000
+000040060000000AD7233C020000000000404000000000
+000080400000484206010000010000009A99193F000080
+3E0000003D010200000000803F01000000000060410100
+0000000020C1000020C13363924400C0B744F40100008F
+C2753EFFFFFFFF03020103000000000000803F01000000
+0000000001000000000020C1000020C10000ED43008014
+44010000000000F0410000000000000000000000000000
+000000000000010000000500000001000000CDCCCC3D9A
+99993E0000A04032006400FA000000000000000000C642
+0000C6420000C642012100F01F029140414A400942F820
+1070470000F8B504463E48254650F8252002F1480302F1
+44011E681E600F6826EA070738060DD50F6847F080070F
+604FF400671F600B6823F400630B601269120600E03A05
+06D5086840F4006008602046F9F7D2DC2C48782111FB05
+00C26C100002D031462046904704F11F00BDE8F24040B2
+BDE770B50446032804BFBDE87040F7F7049F022804BFBD
+E87040FEF770991D49782212FB00152E1D96F944000128
+02D06FF0060070BD00212046F9F7AADA95F8720010B120
+46F9F79EDC2046F8F7C7DE00212046F9F74BDB2046FCF7
+5ADE95F8521000222046FCF772DE70780C2804D0F8F7CD
+DC3078F8F7CADC20460749884700212046F9F715DB0020
+70BD000080E200E0647F0100E8D491007D3F01002DE9F0
+4186B0E1F405F00026846FE1F401F000F5117801A80090
+03AB02AA04A94046E2F4DFF300283BD402980199081803
+D14046E2F4E6F333E0E0F4EBF7761C90F88802F6B28642
+03D30020E2F472F027E000270AE0C51BB5F5006F88BF4F
+F400652368049800F01FF8EF1902988742F1D300270AE0
+C51BB5F5006F88BF4FF400652368039800F00FF8EF1901
+988742F1D30298019909184046E2F4ABF30028B9D106B0
+BDE8F081DB683A18A9B2204618470000FEB500200090E0
+F4ABF7214D846F0FF298072846E6F782DA06461DE06946
+2846E6F7EAD9012817DB142805D00246142362213846E5
+F728FA0120ADF8040001A90020ADF80600009802902046
+2268126B90472846E6F7EED93046461EF19403A0B28100
+0128DDDAF7BD00001CB5E0F47BF70A490968806F89B201
+910849096889B2009107490B6807490A6804680749E46B
+0968A04713BD88BB91006086890090F69100ECF89100E8
+F89100E4F8910070617463685F7076745F6576656E7473
+2E63707000000000012100F01F029140DFF8C82306E000
+00012100F01F029140DFF8BC23400942F8201070470121
+00F01F029140DFF8AC23F4E700002DE9F04107000D4618
+BF002D164698462AD04EB3A9882868FCF7ECDF20B3B188
+3068FCF7E7DFF8B1387868B17969D9B9032813D0DFF874
+4304F15800FCF7DED8A8B16FF0010059E0F868DFF86413
+A0F51650884224BF4FF46120F86007F10800FCF76EDB00
+28E5D14FF0FF3046E00E20FFF7B4FFFBF778DF97EC060B
+84EC060B277843460022294604F15800FCF784D8002301
+22314604F11800FCF77DD83846DFF8101388473846DFF8
+0C138847380018BF0120E7F712FF802517B94FF420750E
+E0032F0CD1217CDFF8F052FF291CBF0320FCF7ADDCA17A
+01220320FCF714DDDFF8DC02B8F1000F1CBF4021816101
+68A94301600E20FFF769FF0020BDE8F08170B5DFF8A852
+DFF8BC4205F15800FCF775D810B92070607052E0DFF8A4
+62706C000404D0CE210FF2B820E5F71DF9F7F73BDF10B1
+706A000407D02878032804BF0021FCF779DB002070BD0E
+20FFF746FF3068DFF8741208406060DFF8701230680843
+30600020FBF7C5DE0020FBF7B8DEB069DFF85C1280B288
+60706980B24860706B80B2C860287803280ED1DFF84402
+0068000A00F0010080F001010020FCF769DD01210120FC
+F765DD01202070002060702878012803D100210320F6F7
+CCD8012070BD38B5794C7E4D04F15800FCF715D808B928
+7008E0287840B92078032804BF0021FCF728DB00206870
+31BD0E20FFF7F4FEFBF7B8DE0020FBF77BDE0020FBF76E
+DE6E4D71492868084328606949207888476E48816889B2
+A961416889B26961C06880B2686304F15800FCF71AD804
+F11800BDE83240FCF7149838B5614C2078F8B1594D5C49
+287888470E20FFF7CFFE60685C49084059490860002020
+7060700E20FFF7B2FE287800B10120E7F735FE28780128
+05D1BDE8344001210320F6F76A9831BD00007CB5F4F7E7
+DC4C4C4D49606822680840114040F213120240884342EA
+000512B12068104320604A48026810001CBF28469047A8
+053B4E4CD5206840F400702060206F00F0030131700800
+18BF0120E7F701FE307803281ED1B07AFBF7C1DD206820
+F400302060317CFF291CBF0320FCF7F1940330B681009B
+DBB17A01220320FCF702DCA06F354B0203120BD004C00C
+C2F34531D20C18BF01229847F060716908001AD030788D
+F8000003280FD1606F0005000DADF80200606F0002000D
+ADF80400206FC003400CADF8060003E00020ADF8020001
+906846884740F2031005421CBF06F15800FBF7F9DF15F0
+900F1CBF06F11800FBF7F2DFA8030CD53078032809D130
+7CFF2806D0606C000403D100210320FCF769DB6560F4F7
+64DC73BD000000E100E080E100E080E200E098E4910081
+DA3100D12A01000D2B0100800002003440104030E59100
+DFFF7F00DFFF3F0034E59100D8401040B8D19100892C01
+0070617463685F6873692E6300012100F01F0291406D4A
+05E0012100F01F029140DFF8AC21400942F8201070472D
+E9F04F83B0EFF3108B72B6F4F7FEDA43F60958401C41F1
+0001A8FB004508FB0155640A44EAC5546D0A2046294642
+4600230EF437F0A8FB0023A4EB020A0026B4EB0A0865EB
+060940F2E7300021001BA941CDE900014FF47A72204629
+4600230EF420F04FF47A72A2FB0045DDE9000100190090
+4C4F4D48F8630098F865C7F85480C9EA0A40B865F86B40
+F00100F863386F20F0100038672520FFF7A1FF38684349
+40F001003860386840F0100038600E70F4F7ABDA8BF310
+88BDE8F78F000070B53C4E3A4982B0306820F000703060
+70680A788002001682180A7052B23AB9A8B10128B4BF4F
+F080604FF040600FE008B9002A06E000F0800102F08002
+914205D100284CBF01200320800600E00020316821F040
+610843306000208DF80000FFF726DC441C41F100054B20
+02E09DF80000401E8DF800009DF9000030B1FFF717DC8D
+42F3D828BF8442F0D29DF9000020B9A9210FF27400E4F7
+00FF306840F00070306073BD000038B5F4F771DB124C25
+6825B9B3210FF25400E4F7EFFEE80607D510202060A068
+C0F3001008B9FFF797FF2520FFF72AFFBDE83140F4F75C
+9B00E100E080E200E000205040A0E10600E5CB91003C20
+50406820504080B50720F5F788DCBDE8014000F024B870
+617463685F74696D5F6C6C2E630000012100F01F029140
+084A05E0012100F01F029140DFF81820400942F8201070
+47012100F01F029140024AF5E700E100E080E100E080E2
+00E080B51B20FFF7E6FF2520FFF7E3FF1C20FFF7E0FF1D
+20FFF7DDFF1E20FFF7DAFF1B20FFF7E1FF2520FFF7DEFF
+1C20FFF7DBFF1D20FFF7D8FFBDE802401E20D3E780B51B
+20FFF7C0FF2520FFF7BDFF1C20FFF7BAFF1D20FFF7B7FF
+BDE802401E20B2E7000010B50C4CF19403C0B98100A079
+C00744BF0120FAF762DFA079800704D5BDE810400320FA
+F75A9F10BD000080B5FAF7C5DE0348FBF746DA1AE00000
+E8D691000A2AAA0280B5FAF7B9DE0022004901E00A2AAA
+020120FAF7B9DE0020FAF7C2DFFBF7A6DAFBF7CADA5FF0
+0100FBF7AAD9BDE80140C8E70000864870478648874A01
+681368194031F0006104D140685168084020F020010800
+18BF0120C0B2704770B5F6F759DB7E487E4C7F4E8047FF
+F779FFFBF7ABDAF4F765D92060A068401CA060306840F0
+04003060F4F777D80546306820F004003060F4F754D960
+6025B1FBF7D4DA7148804703E0FBF797DAFFF779FF2846
+70BD000010B5FFF7BDFF04460120F6F7C5DA94F8290110
+B9F9F728DB58B9002200210D20E7F7CCFB0D20F5F73FDF
+0120F6F7C6DA02E0F6F783DC20B9BDE810400120F6F7CF
+9A10BD2DE9F047FFF79CFF08B10020A2E0F9F713DDFFF7
+95FF08B1002697E0554880470600FAD0544C554EFFF788
+FF2568052D00F5947A0DDB7088C0F3400048B9F6F71BDE
+30B9F6F746DB18B930890021012703E070894FF42F7100
+2761606FF000418D4218BF2D1A284645498847060002D1
+444880476AE0E7F75FFB00F08BF80FF2201820B940F201
+114046E4F791FD01208AF80000FFF792FF5FB10120F6F7
+30DAF9F7C0DA28B9F6F725DA10B10220FAF795D91120FA
+F786DA3846FFF753FF074600F068F820B940F217114046
+E4F770FDF6F722DADFF8B09090B9F6F77BD8E4F7D9FB04
+460D46E7F791FBFAF7BDDCC8474FF0FF302549A043A943
+E7F787FB0CE0C847F5F7D7DCFAF7AFDC9AF8010010B9F6
+F7F0D908B9FFF7EBFE0020F6F7F0D957B11420FAF71ADD
+20B94FF4AB714046E4F73EFDFCF7BADCFAF7A4DC144880
+4700208AF800001120FAF73CDA0120F9F773DC3046BDE8
+F087007E404000E100E000E200E0E95101000CEA910010
+ED00E0055201006D540100F8E9910090E99100B9550100
+91540100F5520100FFFF0300FD5601004FF4FA611120FA
+F7DD99000070617463685F706D2E6300002F48704710B5
+FFF7FBFF04682CB94FF48B710FF2BC00E4F7F5FC204610
+BD000080B5FFF7EFFF806802BD000010B5032805D00246
+2B210FF2AC00E4F7EEFCFFF7EFFF2049846C436B01F1F0
+0213711E4B1C1994611D4C1460147944B9846B9460446C
+5461C46BD460046C146105E0641E042C84BF0FF2840494
+610268CA6042680A6182684A61C2688A610269CA614269
+0A6282694A62C2698A62026ACA63426A9A184A64826A9A
+188A64026B9A184A60006B1818F1940350BD8100086008
+46BDE8104000F02CB8007E4040ECE09100000040405C77
+149162636D5F73797374656D5F7368617265642E680070
+617463685F6661696C736166655F636D302E6300000000
+556E6B6E6F776E20486172647761726520457863657074
+696F6E00002DE9F041044688B02146292014F4B2F4304D
+314FD5F8008004F1F806012030754FF480110020B847B0
+61002070622B492B480A46002802BF00292A482A4A3262
+F06100281CBF316A002901D0B8477062002704EB870000
+F59071F8B2F9F78ADF7F1C032FF5D3686810B328681F4F
+002818BFB8421CD130690090B8453068019070680290B0
+680390A06C0590606C06902068049003D072B60320FAF7
+3DD8696868468847B84511D00120F9F7B1DD0DE072B603
+20FAF730D80D480E494461183000F2FF3000090001FAF7
+11DA08B0BDE8F08100BFE4E0910075080100D250020000
+00800000000000ACEF0F00EFBEADDECCDC9100B9070100
+012100F01F029140734A05E0012100F01F029140DFF8C4
+21400942F820107047012100F01F0291406D4AF5E72DE9
+FE4304466C4D0E461746984605F14400FBF723DB10B16F
+F0010079E0FAF74FDBB18830680FF2A419FCF713DA18B9
+40214846E4F7C8FBB9883868FCF70ADA18B941214846E4
+F7BFFB43460022314605F14400FBF7D0DA002301223946
+281DFBF7CADA2420FFF7BBFF03F429F7012003F432F751
+48007803F442F7012003F435F7F6F793D918B94B214846
+E4F79CFB002003F43FF7012003F43CF7E86C0090694628
+6D00F038F86888ADF80800002003F446F7E86800906946
+2869404D00F02BF8ADF80800012003F43AF76FF4607028
+6040F2DF306860207800F0010003F463F7002003F422F7
+012003F41FF7882068602420FFF77EFF0120F6F709D932
+20F4F714D82320FFF765FF2420FFF762FF0020BDE8FE83
+0000ADF804000020ADF80600704770B5244C04F14400FB
+F796DA10B96FF0060070BD1425224E03E00120F3F7F4DF
+6D1EF06B10B93068800701D4002DF4D1EFF3108572B620
+7808B11A4880472320FFF73CFF2420FFF739FF85F31088
+002003F4CEF6012003F4CBF6002003F4AAF60020F6F7C3
+D804F14400FBF773DA201DFBF770DAFAF79CDAF6F746D9
+002814BF00206FF0070070BD00E100E080E100E080E200
+E060E29100FDE2910004501040005010400DC201007061
+7463685F6769692E630010B504460021FFF7E3D92046FB
+F7A2DE08480C2111FB04000022017A2046FBF7B7DE2046
+044988472046BDE810400021F19403E0C08100024A1047
+54E5910085B301009DB30100F8B50446207A002843D0E5
+682068E9071FD5617A03291AD06FF00801A161016DC1F3
+460199B1A37C04F1200202EBC306776847B177898F4202
+D3791A718106E0C91B002777815B1E01D40029EED10121
+E171690705D56FF00900A0610120E07101E0A16919B120
+460B49884711E0617C21B950F8701F21F00E01016015F4
+897F1CBF204603F4F2F4A80644BF204603F4EDF40020E0
+60F1BDB5F801002848294A01681160C168516001699160
+4169D16025490B681361436A5361006B9061086AD06122
+4A486A5060886A9060C86AD06000211F481F4A50F8043B
+42F82130491C1029F8DB7047000038B5164C1448216815
+4D184A01606168C160A1680161E1684161216929606169
+4162A169016300210F4852F8213040F8043B491C1029F8
+DB0D488047E06928620848416869628168A962C068E862
+BDE832400848004700001000204070E89100900020408C
+E89100C00020405CC89100E9A10100DDA1010038B5FF25
+1728044617D8DFE800F00C1E2F4249505E6C7A81888F96
+9DA4ABB2B9C0C7CED5DC290020E6F7D8FF012858D00C20
+E6F7D3FF02284CD02246D9210FF29410E4F710FA284632
+BD0320E6F7C6FF012854D00F20E6F7C1FF0228EDD147E0
+0320E6F7BBFF0128E7D148E00420E6F7B5FF01284AD025
+20E6F7B0FF022808BF2525E0D00E20E6F7A9FF0328D5D1
+0E25D9E71420E6F7A2FF0128CED11425D2E71720E6F79B
+FF0128C7D11725CBE73120E6F794FF012808BF3125C4D0
+1620E6F78DFF0228B9D11625BDE70C20E6F786FF012801
+D10C25B6E70020E6F77FFF0228ABD10025AFE70F20E6F7
+78FF012801D10F25A8E70320E6F771FF02289DD10325A1
+E70420E6F76AFF012896D104259AE71020E6F763FF0128
+8FD1102593E71320E6F75CFF012888D113258CE71F20E6
+F755FF0128F7D11F2585E71E20E6F74EFF0128F0D11E25
+7EE72020E6F747FF0128E9D1202577E72720E6F740FF01
+28E2D1272570E70920E6F739FF0128DBD1092569E70620
+E6F732FF0128D4D1062562E72F20E6F72BFF0228CDD12F
+255BE72B20E6F724FF0128C6D12B2554E72E20E6F71DFF
+0128BFD12E254DE72D20E6F716FF0128B8D12D2546E708
+20E6F70FFF0128B1D108253FE70B20E6F708FF0128AAD1
+0B2538E770617463685F706D692E630010B50446EDF792
+F804F5FE40BDE81040603026F423B2000070B5A4B00446
+1D4602292898299B2A9E04BF5178002906D10193029600
+9013780FF254020BE0002AF1940370C481001ABF117800
+290FF26C0201930296134600900FF26802802103A81CF4
+25F504201BF40EF518B91C201BF40AF540B1606800F5FE
+402A4603A9603028F48BF705E017F40AF62A4603A91EF4
+18F124B070BD4553575F46494C453D2564206172677328
+25686C752025686C752025686C752900000000756E6B6E
+6F776E00257320617267732825686C752025686C752025
+686C75290038B505460C4604F1100105F110003EF4B9F7
+04F11C0105F11C000A6802604A6842608A688260CA68C2
+600969016105F1300004F1300191ED000B80ED000B8A68
+82600A7B02734A7B427391ED040B80ED040B0A7E02764A
+7E42768A7E8276CA69C2610A6A02624A6A42628A6A8262
+CA6AC262096B016331BD2DE9FE4F2DED108B04460D46B0
+EE408AF0EE608AADF50A7D53EC182B002000210BF406F7
+06D160682DF48CF30CF4D2F041EC180B20462EF417F628
+B19C989C99806820F0210088600022606800F060FD32F4
+A8F006460022294607A81AF426F60121301D1AF4CAF358
+B19C98007A800607D56068002200F045FD07A932F492F0
+064674A82AF44AF7024600F041FD04F584704BF457F49F
+EDC6AB9FEDC7BB0027059078B1006A0EF443F141EC1B0B
+0598DFF87C1AD0E9062300200BF40FF7012741EC1A0BA7
+984FF0000908B1007821E00AA81AF463F5DFF85C1ACDE9
+089100F011FD1BF48DF0014608A80090CDF804900AAB0E
+AA04F58F504BF402F703902878342808DB422806DA0398
+20B10C98C00900F001000390002F9FEDA9DB9FEDAA9B48
+D0287834289FEDAACA4CDA2878002776283FDB9A283DDA
+41F21040005D002838D008A82AF4EAF6024600F027FD5F
+EA00081EBF059890F83C0004281CBF98F83C00042823D0
+00F091FCC16980690CF43FF041EC100B1AF44FF600F0CF
+FC16D208F1180898ED020A00F070FC0FD500F073FC0CD2
+51EC1A0B02460B46D8E900010BF46EF700F08EFC012741
+EC1D0B08A84CF490F460A83EF489F5A699002943D04AF4
+DEF44AE04228B0DA04F59850F030007A0028AAD008A82A
+F4A0F6024604F5985100F0D1FC07001EBF059890F83C00
+04281CBF97F83C00042821D000F046FC416800680BF4F4
+F741EC100B1AF404F600F084FC14D2183797ED020A00F0
+26FC0ED500F029FC0BD2D7E9002351EC1A0B0BF426F700
+F046FC4FF0010941EC1D0B08A84CF447F471E700F05CFC
+1AF466F6024660A904F1780049F458F404F10800009060
+AB059A314622A84CF443F408A82FF4A2F79C98007A8006
+04D5606807A931F4A2F6F1940300C8810003E060682946
+31F49DF6804604F138004DF462F2B0EE40AAF0EE60AA20
+462EF4E1F463994A075ABFC90901F00101012101900091
+0295B0EE4A1A9C9AF0EE6A1A434608A900F01CFC22A84C
+F45DF6307B800603D50E9840F480700E90DFF854080690
+2878342803DB4228B8BF012000DB00208DF8100018AE9D
+F810004FF0FF0B002886F808B086F809B086F80AB00DF1
+380A9FED85AB00F0B48003988DF801B000EA09008DF800
+00D8469DF80000002871D004F59851002200F024FC8046
+04F59850F030D0E9002300F082FB53EC1A2B0BF4C2F541
+EC1B0B9AED06EB51EC1E0B53EC1B2BB7EE000AD8ED090A
+0BF474F530EE60CA9FED6E1BB0EE41FAF0EE61FA1CEE10
+0A24D80DF4D1F78046894651EC1E0B53EC1B2B0BF429F7
+00F08DFB00F07FFBB0EE40BAF0EE60BA28E00000000000
+000080FFFFFFFFFFFFEF7F000000000000000000000000
+00408F406F12833A0DF4ACF78046894651EC1B0B53EC1E
+2B0BF404F700F068FB00F05AFB53EC102B00204FF08041
+0BF4F9F641EC1B0B28464DF4AEF151EC1B0B53EC102B0B
+F4AEF700F04EFB804660680DF1010308AA29462CF4EAF7
+9DF80010002900F08D8086F80880307AFF2803D00E9840
+F080000E90307AC0071DD59DF83800000619D5307A401C
+3072B7EE000AC0B2C828A4BF38303072DAED020A30EE60
+0ADFED330A20EE200A00F031FBDAE906230BF4FFF5CAE9
+0601287876289FED2DBB9FED2ECA9FED24FBC0F2F2809A
+2880F2EF80039896F809908DF8119010EA070879D00022
+00F073FB074604F59850F030D0E9062300F0C7FA53EC1A
+2B0BF407F541EC1D0B9AED06EB51EC1E0B53EC1D2B0BF4
+BDF49FED101B8DED021BB7EE000AD7ED090A30EE600A10
+EE100A2FD80DF418F7CDE9000153EC1D2B51EC1E0B0BF4
+70F6DDE900230BF4E2F400F0BEFA00F084FA34E000BF9A
+9999999999B93FFCA9F1D24D62503F0000000000000040
+0AD7233C00000000007522416F12033A18B19DF8010030
+726FE786F808B076E70DF4E8F6CDE9000153EC1E2B51EC
+1D0B0BF440F6DDE900230BF4B2F400F08EFA53EC102B51
+EC1F0B0BF434F641EC1D0B28464DF4E9F051EC1D0B53EC
+102B0BF4E9F600F089FA814660680DF1110308AA29462C
+F461F7B8F1000F18BF86F8099006D100281ABF9DF81100
+707286F809B0DAE906239DF8107000F07DFA00F08AFA05
+9800F023FAD0B1059AD369926900F033FA00F035FA0128
+0BDB00F01DFA00F073FA00F009FA53EC1D2B0BF43BF541
+EC1D0B00F0CFFA00F0F1940390CB81005BFA00F0AFFA70
+7AFF282AD1059800282BD000F01FFA28D551EC1D0B00F0
+9EFA03D200F007FA41EC1D0B9DED060A00F013FA1AD59F
+ED7B1B00F0F6F900F0EAF900F0EEF9002851EC1D0BDFF8
+DC240CBFDFF8D834DFF8D8340BF480F600F020FA70720E
+9840F480600E9028464DF47CF0002802D000F0D4F90028
+00F08880DAE906239DF8107000F01AFA00F027FA059800
+2800F0BFF958D053EC1D2B0020DFF894140BF4E3F4059A
+D36992690BF4DEF400F0CAF901280BDB00F0B2F900F008
+FA00F09EF953EC1D2B0BF4D0F441EC1D0B00F064FA00F0
+F0F900F044FA00F0BAF933D551EC1D0B00F039FA03D200
+F0A2F941EC1D0B9DED060A00F0AEF925D500F08FF90228
+18BF9FEDC1FB00F089F9022818BF9FEDD7ABB0EE4F1AF0
+EE6F1A00F083F951EC100B53EC1A2B0BF417F600F0B7F9
+87B2B77200F073F9012804BF380A70720E9840F480500E
+900E98C0041ED400F024FA00F0B0F900F004FAB8B1C168
+8A0714D5890612D59FED2E1B90ED060B1DF40EF451EC10
+0BEB4AED4B0BF4EEF500F08EF9B0720E9840F480500E90
+DAE906239DF8106000F092F906AF41EC100B3246394600
+F0A0F905988DED180B002800F0F680007834280DDB4228
+0BDA9DED060ADFEDD40AB4EE600AF1EE10FAA4BF00208D
+F85D000598C1698069DDE918230BF444F4CDE9180109A8
+1AF459F201280BDB00F015F900F06BF900F001F9DDE918
+230BF433F4CDE91801287834280DDB42280BDA00F09EF9
+13D253EC1A2B0020C5490AE09A9999999999B93F00F092
+F907D253EC1A2B51EC1B0B0BF417F4CDE91801284617F4
+CCF2012840F0A9800598D0ED080A9FEDB00AF4EE400AF1
+EE10FA42BFDDED060AF4EE400AF1EE10FA40F1978000F0
+93F9DAE90623064600F01FF941EC100B60680022314631
+F481F400212846F2F721F9B0EE409AF0EE609A53EC192B
+0020A5490BF40FF341EC1A0BB0EE491AF0EE691A9DED18
+0B1DF469F3B0EE40BAF0EE60BAB7EE000ADAED020A30EE
+600A00F0F9F806460F4651EC190B53EC1B2B0BF47BF432
+463B460BF4EDF2DAE906230BF4BBF341EC1B0B8AED06BB
+00F023F951EC1B0B53EC102B0BF467F441EC100B21F000
+4141EC1B0B51EC100B002200230BF491F294BF01244FF0
+FF3451EC1A0B53EC1B2B0BF4ABF22DD20BF496F353EC19
+2B0BF40AF541EC100B1AF44EF4064620460BF42AF40446
+894630460BF42FF400F0A5F8B7EE000ADAED020A064630
+EE600A0F4600F0A7F832463B460BF4A3F2224600F091F8
+02460B46DAE90601F1940320CF81000BF424F4CAE90601
+0E9840F400600E902A469B98011D684647F4AEF200F0CC
+F89B9880ED020B08A99B98FFF7DBFA9C98007A400704D5
+9B980022002143F488F70598002814BF0124002408A832
+F48AF322A84CF4C5F660A83EF492F174A84CF467F00DF5
+0A7D2046BDEC108BBDE8FE8F4FF094424E4B0BF4A9B400
+000000000000003240B0EE40DAF0EE60DA704700002846
+1AF43DB10000B0EE4D0AF0EE6D0A1DF4AEB253EC1D2B51
+EC1B0B0BF416B351EC1D0B0BF412B341EC1D0B09A81AF4
+27B100009DED6A0AB4EE4C0AF1EE10FA7047000051EC1B
+0B2F4A314B0BF410B27B14AE47E17A843F04F59850F030
+53EC182B704741EC100B9DED021B1DF480B241EC100BB0
+EE4F1AF0EE6F1A1DF478B241EC100B1AF430B242464B46
+0BF40CB253EC192B0BF408B2DAE90623074651EC190B0B
+F401B2000010EE100A0DF426B4059901EB8000C06A0DF4
+20B40DF1180841EC100B3A46414604F584704AF4BAB6B0
+EE480AF0EE680A70470000B0EE480AF0EE680A29467047
+51EC100B00220D4B0BF4BEB17012033A95BFD6330000F0
+BF0000F03FFFFF7F7FFCA9F1D24D62703F4D62503F0000
+2CC00018F5400000E03F78DEB14100F90541B0EE480AF0
+EE680A1AF45EB49DED18AB51EC1A0B002200230BF496B1
+41EC100B60680022394631F40FB30000B0EE480AF0EE68
+0AE83104F584704AF4D5B60000B0EE480AF0EE680A04F5
+A05104F584704AF4CAB60022294668461AF479B000002D
+E9F0412DED028B06460C46BCB0154620463EF475F02846
+3EF472F006F530767068ADF4D1F401462AA84CF419F701
+4604A81AF42DF446E004A968461AF42EF4684616F469F6
+0746012F39D07068002269467BF459F480467CF404F020
+B34046D6F4C2F600BB70680023002269467BF4DDF3C8B1
+C06800F03001302914D110F00C0F11D0306802AA394676
+F4F1F300F0C5F853EC102B51EC180B0BF425F103D26946
+204618F432F24046B3F437F738B14046D8F411F618B969
+46284618F426F204A81AF4E1F304A81AF4DCF30028B3D0
+20462AF495F0012804BF20463EF410F028462AF48DF001
+2804BF28463EF408F03CB0BDEC028BBDE8F081000070B5
+2DED028B0D468AB0044695F850008DF80800164602A804
+F5307416F4FEF50146206806AA76F4A5F300F079F851EC
+100B53EC182B0BF4D9F038BF002062D3D5E90623DDE906
+010BF4BEF1CDE9000100202F49CDE90401022204A96846
+71F489F753EC102B00202A490BF4DBF041EC180B606896
+F410F505460020F19403B0D28100CDE90000039003AB20
+686A4602A976F473F49DED000B1AF459F20446306840B9
+B0EE480AF0EE680A1AF450F22018401B306028460BF434
+F2044630680D460BF425F222462B460BF481F153EC182B
+0BF435F20BF4EFF104461AF432F00F49884212D320460B
+F412F2CDE9040100200C49CDE90801002208A904A871F4
+3DF751EC100B0BF4D7F1044620460AB0BDEC028B70BD00
+000018F54000408F40012E930270999441B0EE408AF0EE
+608A82F412B680B5D6487CF480F0BDE80840D44ADC4912
+F45DB72DE9F0472DED088B0D0088B080460FF26C3603D1
+20213046E3F788F9287908B1212807DB281D4DF4E7F318
+B921213046E3F77CF96879012809D1A869C449084204D1
+297908F1400019F444F4ACE0052804D108F1400019F4A9
+F1A5E0297908F1400019F4CFF40028F7D16879042803D0
+3E213046E3F75AF9A969B6480840B0F1606FEAD1EA6990
+0FE7D1286A830FE4D1C1F38733C1F3871101910093C2F3
+87510291C2F387310391C2F387110491C0F387510591C0
+F38731C0F387100790069100205DF82010CA11012A06D1
+61F0FF01C943491C49424DF82010401C0828F0D300980B
+F471F100229B4B0AF4FBF708F1080741EC180B87ED008B
+9FED98AB01980BF462F100224FF079530AF4EBF741EC19
+0B87ED029B02980BF456F153EC1A2B0AF4E0F741EC1B0B
+87ED04BB03980BF44BF153EC1A2B0AF4D5F741EC1A0B87
+ED06AB0498C4023C6205984FEA8039C7F8249006984FEA
+004AC7F828A007980604FE6208F1380701203870281D4D
+F444F398B1754800F1080181ED008B81ED029B81ED04BB
+81ED06AB0C62C1F82490C1F828A0CE62032180F8381001
+2038777877002140467CF42AF108B0BDEC088BBDE8F087
+000000B591B0002100F8541F0121417068467BF496F701
+465F487BF4ACF76846D8F46FF311B000BD00002DE9F84F
+2DED028B98B004462598DDF890900D46002104F1A00601
+709046307800289B469FED5B8B73D108A87BF474F74146
+204600F076F804F1380720B14B4991F83800032807D038
+7F00281DBF38780028214604F1580108A87BF477F7DDE9
+0A010DF433F100900DF1280AA434DAE902010DF42BF101
+90DAE904010DF426F10290DAE906010DF421F19AED080A
+0390B8EEC00A8DED040A9AED090AB8EEC00A8DED050A9A
+ED0A0AB8EEC00A8DED060A9AED0B0AB8EEC00A8DED070A
+7069854208D0786E2246294678F41EF510F1010F07D075
+619DF8580002280CBF0123002305E008A8D8F4F8F29FED
+2A0B15E06A46F1940340D68100D9ED000A9BED000A4146
+204671F4A2F210EE100A0DF42AF141EC180B08A8D8F4E3
+F2B0EE480AF0EE680A18B0BDEC028BBDE8F18F10B50C46
+2DED028B94ED000B19F488F651EC100B0022134B0AF4C8
+F60FD294ED028B114B51EC180B01220AF49BF606D80022
+114B0AF4BAF638BF012000D30020BDEC028B10BD0000D0
+CF8900E0CB9100003F00C00000C0CF0000103E00000000
+0000703E00004E4000805640295C0F0000000000000000
+000080664070617463685F676C70655F696F6E6F6D6772
+2E63707000002DE9FE4304468846C2F4FEF408B100205E
+E0FAF725DF0646A068371A606810F1010F02D0B7F57A7F
+02D90020A6606060656805E0DEF432F5D0F88002E2F75E
+DFF5F7CEDFF6F74AD88146DEF427F5D0F87C0281450DD2
+DEF421F56168D0F8800240186060DEF41AF56168D0F884
+028842E0D242469FA18E20F5F776DFDEF40EF56168D0F8
+840288420DD2F5F7A9DFF6F725D8024660680FF2882102
+9001973346A068009010E0002918BF8D420FD0F5F797DF
+F6F713D86168029101973346A168009102460FF27C218F
+20F5F74DDF0120BDE8FE8338B50C461546DEF4DFF42A46
+214600F51170E0F4B1F00246AA4206D0BDE838404E210F
+F20C20E2F758BF31BD30B50C46C1B00FF260219720F5F7
+2CDF002C00F0ED80DEF4C1F4012180F8611212AD2068E9
+6A68614908A0882883E08868832089A8836089E883A089
+2884E0896884208AA884608AE8846069A86294F8480000
+F0010040EA4100E86220F00200A16CC1F3400140EA4100
+E86220F00400A16CC1F3800140EA8100E86220F00800A1
+6CC1F3C00140EAC100E86220F01000A16CC1F3001140EA
+0110E86220F02000A16CC1F3401140EA4110E86294ED06
+0B8DED100B94ED080B8DED120BD4E90A010CF4A8F7A860
+D4F8F0010CF4EBF702460B46D4E90A010AF445F70CF49B
+F7E860D4E90C010CF496F72861D4E90E010CF491F76863
+D4E910010CF48CF728633E48006868643D480068A8643D
+480068E86494F84C003228A8BF32208DF8980000200DE0
+04EBC00210A912F84E3F01EB400103F03F0301F8593F40
+1C92794A709DF89810884238BF3228EBD310A8E0F4C6F0
+6869E0F4D5F018A8DEF428F694F84C0004F14E01E8F710
+F8DFF43CF10446DFF441F1844206D1DFF439F10446DFF4
+3EF184420CD00FF208119620F5F76DDEDFF42DF10446DF
+F426F12146DFF45DF1F9F739D90FF23411D0E90623CDE9
+0E23D0E90423CDE90C23D0E90223CDE90A23D0E90023CD
+E90823D0E9F19403D0D981001023CDE90623D0E90E23CD
+E90423D0E90C23CDE90223D0E90A23CDE90023D0E90823
+9620F5F73CDE41B030BD257300008CC9910090C9910094
+C9910070617463685F7076745F656E67696E655F636273
+2E63707000000000284F6E4C6F673A427265616B202564
+2C2025642C2025642C2025642C202564290A000000284F
+6E4C6F673A44656C61792025642C2025642C2025642C20
+25642C202564290A000000476C4D6963726F4E61764361
+6C6C6261636B733A3A4F6E526573706F6E736520737461
+72740A00005570646174696E672073746F72656420636F
+6E7465787420737461747573207768656E207468652066
+6972737420706F736974696F6E206973207075626C6973
+6865640A00000000436B6747657452756E74696D65496E
+666F2C256C6C752C256C6C752C256C6C752C256C6C752C
+256C6C752C256C6C752C256C6C752C256C6C752C256C6C
+750A000830EEF7F5BB000010B504464FF48AF6204610BD
+70B504460D4604F54F6690B004F55471304600F027F868
+4629F4C0F702462946304643F44BF050B101208DF83900
+694600208DF83800606D02689268904710B070BD000001
+2900D0704780B541684FF4FA7000903C23052201F55D70
+3DF4A8F501BD000070B5874D82B000200C462870687000
+2611E0E06800EB86014888400544BF0120287068463DF4
+4EF4684637F467F008B101206870761C60898642EAD373
+BD000070B506462DED0A8BD6F8E4000C460168D1F8A411
+884724280CBF01250025B4F90A0000EE100AB4F9000000
+EE900AD6F8E4000168B8EEC00AF8EEE00AC0EE80BADFED
+560A896F80EE208A88470028DFED548A59D000F0C6F8F3
+EE000AA08A20EE20CA00EE100AD6F8E4000168896CB8EE
+400A20EE2B0ADFED4B0A20EE200A00EE08CA88475649F2
+EE01AA0A780228B7EE089ADFED459A9FED45AAB0EE6ABA
+02D162B9012005E0042801D13AB908E0012804D1DFED3F
+9A0DB1DFED3E9A032805D1DFED3D9ACDB1F0EE6A9A16E0
+042805D1DFED3A9A8DB1DFED3A9A0EE0022805D1DFED38
+9A4DB1DFED389A06E0052804D1DFED369A0DB1DFED369A
+487808B39FED350A79EE809A1CE000F06CF820EE2B0ADF
+ED310A20EE200AA08A20EE08CA00EE100AB8EE400AF2EE
+0B0AB7EE009AF3EE099A9FED2AAAB0EE04BAF2EE068A00
+EE20CAB4F9000000F04FF8B4F9100000EE29CA00F049F8
+B4F9080000EE0ACA00F043F8E08A00EE0BCA00EE100AB8
+EE400AB4F90A0000EE28CA30B100F035F88CEE000A30EE
+090A03E0F1940360DD81009FED050A39EE000A84ED030A
+BDEC0A8B70BD000000007A4400000000CDCC4C3E9A9919
+41CDCCCC3ECDCC24415C8F1A41CDCC0C4133339341E17A
+8A419A999D41CDCC92413333B7417B14AC413333333F00
+0016420000FC41ECCB9100B4F9120000EE100AB8EEC00A
+704700002DE9F8430C46462C804616461D460FF2605902
+D3102100F061F808F5F7671421386811FB04040020A070
+0120A0700020E07055EA060008D038690168D1F8A41088
+4710B91A2100F049F8002E08F5F870214616D02AF424F5
+10B9252100F03EF8204636F429F728B10020A0700120A0
+70E0700CE0A078411CA17000190121C17005E02AF411F5
+10B9342100F027F8002D08F50670214616D02AF402F510
+B93A2100F01CF8204636F407F728B138690168D1F87C11
+884778B1A078411CA17000190221C17008E02AF4EFF428
+B94846BDE8F4434321E2F7FEBBBDE8F1834846E2F7F9BB
+00002DE9F34FC3B000F5E4700C90439800F5F76415E000
+F000FA00F006FA0168C9688847C11C20698B440168D1F8
+CC108847584519D20FA835F48BF30FA835F4C8F3439840
+3018F434F4002840F0CF8144990FA835F4DDF2439800F1
+40011CA818F4B5F74FF0060B5BE0B878012803D04FF493
+7100F0D5F997F9030018B140F2271100F0CEF920680599
+0818407B18B94FF4947100F0C5F900F0B7F907687F6A51
+184A782169B84718B94FF4967100F0B8F900F0B2F900F0
+B8F92168059A0495511809AB0A7B03920122029208AA01
+9200F091F9AD680FA9A847079D4398EDB22946583018F4
+59F643982946403018F476F6002000F085F94118401C00
+2203288A71F7D300F07DF90020087300F079F9FF204873
+00F075F9002008611CA818F436F71CA81CF4DFF2002884
+D11CA81CF4E4F2C0B20790142148430590059920680F18
+384636F44BF60028394606BF439800F5BC700C982AF432
+F4B8723946439800F5D0702AF42BF4F87208AB07994398
+3A46C9B23BF48DF2384600F0DEF90CC809A938460CC136
+F42AF6002598B320690168D1F81011884700281CBFB87C
+002805D078782F2818BF4FF0010800D1A8460C9839462A
+F403F488F00101084214D020690168896F884778B9BDF8
+280040F47F40ADF828000A2138788DF825104000EB3840
+F47F40ADF828009DF8200000F0E3008DF82000B87CA8B1
+384636F4F3F5402518B9384636F4EAF500B1C025384636
+F4E1F538B14398394600F5F8702AF4CEF300B1C0252069
+0168D1F8A410884700283FF4F0AEB878069008B99F2102
+E00428F19403F0E0810002D3A02100F0ECF800F0E6F800
+F0ECF8026806995269C9B29047C01C0B9020690168D1F8
+CC1088470B9959448842FFF4E1AE09A915A837F44BF44F
+F0000809E038464CF41FF518B1384636F401F1706008F1
+0108069880457BDA08EB070090F9039019A800EB880A48
+4636F467F18AF8000007EB4906707B10B9BA2100F0B0F8
+307B8AF801008AF8025008A80DA901EB480102780A70B9
+F1000F42784A7015A800EB8806CCD00DA80DA910F81800
+00F0E70001F81800B9F1010F08D138464CF495F1002838
+460ED035F4E6F7BFE7B9F1020FBDD138464CF489F10028
+38460AD036F408F0B3E74CF4C9F4002838460AD035F4EA
+F7ABE74CF4C1F4002838460AD036F410F0A3E736F449F5
+0028384618D036F472F09BE736F441F50028384602D036
+F438F093E736F435F5002890D09AF8020000F07F008AF8
+0200384600F0FAF885E736F427F5002882D0384600F01C
+F97DE7002000E0401C0699C0B28842FADB00F032F80568
+6D6A51184A782169A84718B94FF4827100F033F800F02D
+F800F033F819A904910DA9039115AB0699059AC9B20291
+012101912168511800F00AF82D690FA9A8470B98834475
+E645B0BDE8F08F00004978079A0091D2B2056870472168
+059A511870476069059A002100913B462168704700000F
+A835F409B200000FF26800E2F7E4B90168096A08470000
+70B504460D463AF4C3F70FF2500620B94FF4A7713046E2
+F7D3F9294604F140001CF4C8F020B140F24F113046E2F7
+C8F9294604F1580018F4B9F4294604F1F80018F4B4F429
+4604F1D00043F417F7294604F1A000BDE8704018F486B4
+70617463685F676C6D657372645F7361745F6D67722E63
+707000000038B504464CF4EAF30FF268150168896F8847
+10B9162100F07FF8204618F45CF7002820460DD14CF4F3
+F3062807D8DFE800F016162C1604161600042032BD2321
+21E018F449F7012820460CD14CF4E0F328B1C01E012802
+D9801E0FD001E0022032BD2F210FE018F437F702280AD1
+20464CF4CEF310B1C01E022801D8082032BD3A2100E040
+2100F047F8012032BD000010B586B00478A4F156000928
+10D268460FF2BC0114220BF419F1062117484170694601
+EB4401047031F8AC1C416002E0134800EBC40006B010BD
+000070B5044636F42CF40FF29C0510B96A2100F01CF800
+F038F802D36C2100F016F82078562808DB5F2806DA0FF2
+A40101EB400030F8AC0C70BD034830F8160070BDD4CB91
+0074440500F84B05002846E2F715B9000070B5044636F4
+02F4F1940380E481000FF2480510B97A21FFF7F2FF00F0
+0EF802D37C21FFF7ECFF2078562804DB5F2802DA313880
+B270BD304670BD2078A0F15106F6B2252E70472407F505
+EF061A00C4016A0567029A04BE07000070617463685F67
+6C6D657372645F617369635F756E69745F636F6E766572
+7465722E637070000000801D021CAA16D6179C052A167D
+19980C9F1100002DE9F041ADF5006D0446C0208DF80000
+0D46C1208DF8010090460220002641F6C81716E0725D00
+F80D200846B0F5006F02D100F027F80020715DC02902BF
+00F80D10401CB0F5006F02D100F01BF80020761C411C46
+45E5D3C02200F80D20B1F5006F02D100F00EF80021C420
+01F80D004A1C385912B26946CDF46CF50DF5006DBDE8F0
+8138594FF400626946CDF462B570470000704700004F21
+0FF28C20E2F77BB800002DE9F04204468EB0A0681646B0
+420D469946666004D058210FF26820E2F76AF84FF0FF30
+A06004F5C85757F8B80F02686168D26FC9B29047386802
+686168926A89B290470420ADF80000ADF806501420ADF8
+0200ADF808600020ADF80A00ADF81200042E18BF052E07
+D12368D3F8E43004AA03A92046984702E00390ADF81000
+AE4270D0012E06D0032E09D0042E1FD00A2E54D062E000
+F073F8386803215AE0042D5BD1E07B002858D00020E073
+032138680268D26A9047B86800284ED041F2683103680A
+5DD3F8A8300021984745E004F11C0018F44EF004F13000
+18F44AF004F1440018F446F004F1580018F442F042F218
+1100200855A07B70B10020A073B86840B10268D2F88420
+9FED4C1B9FED4B0B0021904700F033F8052D1ED006A828
+F482F6014641F60830005BADF81800B86898B10268D2F8
+942090470EE038680268D26A1021904738680268D26A02
+219047386804210268D26A9047002104F5DD50D1F493F4
+B9F1000F06D100F080F869462046984700F073F80EB0BD
+E8F08238680268D26A01211047000070470000F0B5ADF6
+F47D04460C20ADF80200ADF806100D20ADF8000016461D
+4615F4B6F42CF42AF10290022222A103A80AF464F700F0
+48F82B460020ADF80E00324600F041F840F6EC70BDF802
+10471A394604A81AF49EF3BDF802104118ADF802106946
+4118381A01F1100605D106220FF2A401B01F0AF431F716
+F8010C20B1002006F8010B00F019F89DF80200C00703D5
+0020307000F011F8694600F022F82046984700F016F80D
+F6F47DF0BD0000000000000000000025730000BDF80200
+401CADF802007047BDF80200801CADF802007047BDF802
+00F1940310E88100821C92B26946204676E600002368BD
+F80220D3F8F8307047704700007047000070617463685F
+676C6D655F706569665F696D706C5F656E632E63707000
+000000202E2E2E200A000010B590B004462EF4CBF12068
+0268926804F160019047684629F42EF10021ADF8381001
+4604F1640029F464F110B010BDF0B589B004460F461546
+2EF431F5B86D0268926829469047064678680123012229
+462AF41DF3070000F0D580E068C00540F1D1802846F0F7
+9DFB002800F0A980287808B1212803DB422812DB512810
+DAE06880030DD5294638462AF4B7F04BF4F9F2022805D1
+00F0B9F800F0C3F800F0B9F8287834282ADB422828DAE0
+68800325D500208DF814000490294638462AF4B1F004A9
+03910DF111030DF11201029106AA0DF11301019105A900
+9107A930F4DDF79DF81110084209D09DF81000022805D1
+00F08BF800F095F800F08BF8287851281EDB76281CDAE0
+68800319D501208DF80000294638462AF4C0F022696B46
+294646F499F49DF8001081F00101084207D000F071F800
+F069F800F073F8C4E90E01287876283CDB9A283ADA0020
+8DF80A008DF80900294638462AF473F002A901910DF10A
+030DF10901009103AA04A945F4F0F5201D816821F40031
+81609DF8080001281DD002280DD1201D41F40031816041
+F40011816000F038F800F042F8C4E90E010DE096F87400
+0D281CBF0C28112806D1201D41F40031816021F4001181
+60287851281EDB76281CDA284618F403F4012804D02846
+18F4FEF3022812D1201D816841F400318160816821F020
+018160207B800747BF201D41F01001201D21F010018160
+09B0F0BD0000284615F45BB50000C4E90E01201D816841
+F4001181607047D4E90E0153EC102B09F472B610B50400
+07D09FED102B9FED0F1B9FED0E0B6FF415F39FED0C0B9F
+ED0D1B84ED060B84ED080B84ED0A1B84ED0C0B002084ED
+100B84ED121BA063BDE810400148F1F716BC30DA890000
+0000000000000000000000008803412DE9F04FADF2CC4D
+82460AF5D75168463BF4BCF30AF52455F8352A46694661
+A80AF5345628F406F47436B06A81075ABF400900F00107
+01276E212CA818F4E0F11FB92E9840F010002E9001219D
+A815F40BF2022193A815F407F2042189A815F403F2FFA8
+A83015F405F2052157A815F4FBF1FFA80621803015F4F6
+F10AF114072CA93C68684618F4C1F123685B6A02462146
+17A898472A4617A90DA828F4CAF361A921A83CF422F321
+AA0DA903A828F4C1F39DA900F0F9FA2FAA03A97FA828F4
+F19403A0EB8100B9F338680168096A884701462A4614A8
+28F4B0F361A900F0E8FA00F0EFFA7FA900F0D7FA00F0E4
+FA9DA943A83CF4FEF243AA694622A828F49DF37FA914A8
+3CF4F5F222A900F0D1FA00F0D8FA00F0C0FA00F0CEFA2A
+46694675A828F48BF342F6F41042F2117150F80A008842
+08D322AA7FA968463CF4ECF2694675A83CF4FAF27FA918
+A815F47EF17FA90EA815F47AF175A904A815F476F175A9
+4DA815F472F10AF5A85000F11C08404637F44BF101462A
+4600F0B0FA00F08BFA39AA2FA943A828F458F339A815F4
+57F10146504620F417F56BA815F450F10146504620F44A
+F642F6EF5919F80A00002865D061A9E3A83CF49CF2E3AA
+2946D9A828F43BF3FFA98031EDA83CF492F2EDAAD9A9CF
+A828F431F393A9F7A83CF489F2F7AACFA9BBA828F428F3
+FFA889A908303CF47FF2FFAA0832BBA9B1A828F41DF3FF
+A857A930303CF474F2FFAA3032B1A900F05FFAFFA89DA9
+58303CF46AF2FFAA583200F05AFA00F02AFA61A900F03C
+FAB1AA294600F04DFA9DA9BBA83CF459F2BBAA00F04AFA
+00F012FA38680168096A884701462A46B1A828F4EFF261
+A9BBA83CF447F2BBAAB1A900F033FA9DA9CFA83CF43FF2
+CFAA00F030FA00F0F4F90AF5D45420463BF481F0834617
+F4FCF400283CD15946CFA818F484F006E0694622A83CF4
+57F2CFA818F45CF0CFA81BF405F460BBCFA81BF40BF4C2
+B20AF5146168463AF4E7F0CFA81BF402F4C1B220463BF4
+4EF00828E6D8DFE800F0070A06060D1005131600DAE7DD
+E7694639A8D8E7694643A8D5E769460EA8D2E7694618A8
+CFE769464DA8CCE7694604A8C9E76BA83CF424F2B8B96B
+A900F0CBF900F0ACF92FA922A818F40EF22FA90EA818F4
+0AF200F0AEF92FA94DA818F404F22FA943A818F400F202
+E06BA83CF40AF20AF5345419F80A00C13460B1207818B9
+00F0A8F900F08AF900F090F943A83CF4F9F122A83DE0E0
+7958B318A83CF4F2F122A83CF4EFF100F081F94DA83CF4
+EAF139A83CF4E7F143A83CF4E4F161A900F082F92A4600
+F09CF900F06CF9607820B99DA900F080F900F06DF9F868
+0168D1F87411884700281CBF207A002856D004A80FE050
+4620F41AF770B118A83CF4C2F122A83CF4BFF100F051F9
+04A83CF4BAF139A83CF4B7F141E093AA7FA9C5A828F41F
+F2C5A83CF4ACF118B900F053F900F041F9607820B99DA9
+00F04DF900F03AF989AA93A900F058F9A7A900F044F92F
+A94DA818F489F1E07810B900F027F911E0FFAAA83257A9
+BBA83CF468F189AABBA9B1A83CF463F100F03DF9A7A9F1
+940330EF810000F02BF900F018F9207848B900F024F900
+F006F900F020F92FA922A818F466F119F80A0068B943A8
+039018AB39A8029004AA0EA801904DA922A80090504620
+F47BF5FFA9A83100F008F92FA939A818F44DF1F8680168
+896F884700283FD100F0F3F8A7AA04A900F00EF900F0DD
+F800F0EBF8A7AA4DA900F006F900F0CDF800F0E3F8A7AA
+18A900F0FEF800F0C1F800F0DBF8A7AA22A900F0F6F82F
+A922A83CF427F100F0D1F8A7AA0EA900F0ECF82FA90EA8
+3CF41DF100F0C7F8A7AA39A900F0E2F82FA939A83CF413
+F100F0BDF8A7AA43A900F0D8F82FA943A83CF409F19748
+0078002864D02FA814F47EF7002513E0306830F825008D
+F80000684635F42AF648B1306800EB850000F028F918B1
+69462FA816F4FFF26D1C42F6725030F80A008542E5D32F
+A83CF4EDF0002840D100F08FF8B1AA04A900F0A1F8A7A9
+00F075F800F086F8B1AA4DA900F098F8A7A900F064F800
+F07DF8B1AA18A900F08FF8A7A900F057F800F074F8B1AA
+22A900F086F8A7A922A83CF4BCF000F06AF800F07CF8A7
+A90EA83CF4B4F000F062F8B1AA39A900F074F8A7A939A8
+3CF4AAF000F058F8B1AA43A900F06AF8A7A943A83CF4A0
+F00AF5905004A9743036F436F64DA90AF5895036F431F6
+18A90AF5BA5036F42CF60AF5C05022A9103036F426F60A
+F5B0500EA9703036F420F60AF5985039A9C83036F41AF6
+43A9404636F416F66BA90AF5C75036F411F60DF2CC4DBD
+E8F08F00002FA918A83CF46CB02FA94DA83CF468B02FA9
+18A818F462B02FA904A83CF460B00EA83CF469B000002F
+A904A818F456B061A939A83CF42AB057A9A7A83CF426B0
+2FA9B1A83CF422B093A92FA83CF41EB039AA0AA9684628
+F4BDB000002FAA14A90AA828F4B7B00000B1AA0EA9A7A8
+28F4B1B00000A7A92FA828F4ACB01FB504460878022806
+D003284AD03D2845D03F283DD047E0012003903F23FF20
+02902D223420019016215020009004F5B050703036F47A
+F6012003903C233A2002901B2230200190052147200090
+04F5895036F46BF6012003903C23FF2002901A22302001
+9004214720009004F59050743036F45BF600F01FF804F5
+BA5036F455F600F019F804F5C050103036F44EF608E02F
+F453F142F6C451085502E0204620F4C4F6002000E00248
+04B010BD000098938900D5080400012003904023FF2002
+9022223020019002214720009070474088400A00F00100
+70470000002070472DE9F0410F4682B080463878022808
+F5097408F5F6766CA50AD0032800F0CB80052800F0F194
+03C0F28100B180062814D00C282DD0C6E040463EF421F2
+206800F59670009000230622414630463CF4FFF108F5E6
+7017F419F2AEE0787802280DDA40463EF434F140463EF4
+09F22068C830009006227878431CDBB204E04FF4967000
+9000230522414630463CF4E0F193E078780C2804BF207F
+0028F8D108F13C06B0680168276A896C88470146DFF87C
+05DFF87CE5DFF87C35DFF87C2500EA070474451CBF3840
+98422BD1DFF86C450FF2B050A74218BF974209D1012918
+BF022920D0032918BF04291CD0712116E0DFF84C259742
+09D1012918BF022912D0032918BF04290ED07B2108E09F
+4205D1012918BF032906D0822100E08621E1F775F900E0
+174630680268926939469047B0680268126D39469047B0
+6890ED540AFAEE060A30EE200A80ED540A9FEDB30AB068
+0168D1F8E0118847B0684EF41CF7B06812F447F648B9B0
+6813231122012112F432F62A46DFF8CC141BE0B0680368
+DB6D0022002198472A46DFF8BC1411E098F81E02401C88
+F81E02C0B2022806DB40463DF4DDF52A46DFF8A01402E0
+2A46DFF89C1440463BF42FF7002005E030463CF48EF1F9
+E7DFF88C04BDE8F6810000000000002DE9F04F0D460FF2
+C441ADF6FC0D4CC9044606A800274CC000208DF810000F
+F29046606C12F4A2F1606C16F4DBF003284FD100F00BF9
+01280BD000F007F9022807D000F003F9032803D000F0FF
+F808283FD1606C0168C96A8847DFF82814884208D0DFF8
+2414884224D0DFF82014884214D02BE000F0EAF8012803
+D000F0E6F8022801D1032728E000F0E0F8032803D000F0
+DCF8082820D104271EE000F0D6F8032803D000F0D2F808
+2801D1052714E0F32110E000F0CAF8032803D000F0C6F8
+082801D1062708E0FF2104E040F2051101E04FF4867100
+F0BDF8606C0168896C88478046606C41F43BF48146606C
+16F45DF05FEA000A17D0606CDFF85CB30168496D88470B
+EA0000D44988420CD0606C0168496D88470BEA0000D149
+884203D040F2191100F096F8606C0168896A8847CDF800
+A04B46424639460AA84EF48AF604A94FF405F4606C4FF4
+9EF738B1606C4FF49AF701460AA84FF41CF111E001A800
+900DF10503606C02AA0DF1060114F477F230B19DF80400
+9DF80530029A00F08DF903210AA800F0A7F9074605A90A
+A84EF49CF78146002000E0401C05998842FBD3FF2903D9
+40F23F1100F053F800208DF819008DF81A0064208DF81B
+00D0208DF81C0000208DF81D00ADF81E00ADF820008DF8
+2200606C0168DDF81480C96A884709F481F00022F19403
+50F68100A94B09F44BF141EC100B18F48FF08DF818001F
+B940F2731100F028F8284634F437F00168896888470646
+606C4FF43CF70390CDF8049006AB9DF8100002903A465F
+FA88F000902946346824693046A0470AA84FF42DF70DF6
+FC0DBDE8F08F00006866F640606C4FF425B700003046E0
+F7EFBF000070B50446C80782B015461E4605D440F27B11
+0FF24020E0F7E1FF60688649006C086029466068406C4F
+F42AF76068406C31464FF427F70022002168463BF4B0F6
+08218DF8001003218DF801100146606836F48CF773BD00
+002DE9F0470646ADF6F80D706C0FF2EC180D4615F48DF7
+032804D04FF4C5714046E0F7B0FF706C0168C96A884700
+276849884206D06749884227D06749884217D030E000F0
+D7F8012803D000F0D3F8022801D103272BE000F0CDF803
+2803D000F0C9F8082801D1042721E04FF4CF711BE000F0
+C0F8032803D000F0BCF8082801D1052714E040F2AB110E
+E000F0B3F8032803D000F0AFF8082801D1062707E04FF4
+DC7101E04FF4E0714046E0F76BFF706C0168896C884781
+46706C41F4F7F28246706C15F419F70446706C0168896A
+8847009453464A4639460AA84EF461F500218DF8081002
+A94FF4D9F2706C4FF472F688B901A800900DF10503706C
+03AA0DF1060114F453F130B19DF804009DF80530039A00
+F069F8686C12F488F438B1686C12F488F4024601210AA8
+4FF41BF603A90AA800F02DF90646002000E0401C039988
+42FBD3FF2904D940F2F1114046E0F719FF286C0168039F
+496A88470146182000902B461F4A04A833F426F633F42A
+F701688968884700940196FAB204689DF80830646904A9
+A04704A833F4ABF604A833F4E8F60AA84FF425F60DF6F8
+0DBDE8F0870000FFFF00F00F0000301100003011000034
+110000371100003581BC050015C0050009BA0500C9BD05
+0045BC050080BA8C0100F049020075190380842E41E4C9
+9100D1B905009DF8061000900AA84FF486B1706C4FF4F7
+B5000070617463685F676C6D657372645F61736963696E
+69742E63707000000A64806480648064806480002DE9F0
+410446DFF83C3594F84078DFF83855DFF83865DFF83885
+DFF838C5DFF838E50FF2E450032F43F2300206D004D305
+2F2DD002D3062F4FD086E027781FB17F1E042F02D921E0
+1A217FE040F6B360A061C4F804E000F07FF80CBFDFF8FC
+04DFF8FC042062A263DFF8F8046062DFF8F804A062DFF8
+F404E062DFF8F4042063DFF8F004606342F2A11058E04E
+215DE027787F1E042F1ED840F69940A061C4F8F19403E0
+F9810004E000F059F80CBFDFF8CC04DFF8CC042062A263
+DFF8C8046062DFF8C804A062DFF8C404E062DFF8C40420
+630120606344F2423033E0762138E023785B1E042B31D8
+DFF8AC046060DFF8A804A060DFF8A804E060DFF8A40420
+61DFF8A404606140F60C00A061DFF89C04E06120780528
+0CBFDFF89404DFF894042062A263DFF890046062DFF88C
+04A062DFF88C04E062DFF8880420630120606343F2AB10
+A08784F83E1004E09C2100E0A021E0F708FE201DBDE8F0
+810000C4F808C0C4F80C8026616561E361207805287047
+70B586B004460D4668460FF27841182209F4BAF504F648
+062178307C032918BF042900F0010009D1717C80F00100
+084304D1C022694620464FF466F0204600F023F9306828
+6006B004F1400070BD000038B5044604F504650FF24040
+2978042905D003D3062900F087800CD3E4E02178491E01
+2940F2E480891E012940F2D08040F22311DAE02178491E
+032971D8D423742200F0F5F83423752200F0F1F8E72376
+2200F0EDF80123772200F0E9F82123782200F0E5F80D23
+F62200F0E1F80823902200F0DDF80223912200F0D9F88D
+23982200F0D5F800F0D1F89C239A2200F0CFF800239B22
+00F0CBF808235D2200F0C7F801235E2200F0C3F88A237A
+2200F0BFF869237B2200F0BBF8DD237C2200F0B7F80223
+7D2200F0B3F821237E2200F0AFF80D23F72200F0ABF808
+23A32200F0A7F80223A42200F0A3F82078022818BF0428
+68D19F23AB2200F09AF81223AC2200F096F86823AD2200
+F092F80023AE2200F08EF84823352200F08AF800233622
+4FE04FF4B77161E02178491E032958D83023742200F07C
+F8C223752200F078F89323762200F074F80223772200F0
+70F897237A2200F06CF829237B2200F068F8E1237C2200
+F064F803237D2200F060F88023902200F05CF801239122
+00F058F8AE23982200F054F800F050F874239A2200F04E
+F82078022818BF042813D18023A32200F045F80123A422
+00F041F8AC23AB2200F03DF81223AC2200F039F84D23AD
+2200F035F82078032818BF04280FD1687E68B18023EF22
+E02120464EF40CF406E04FF4D37101E04FF4D971E0F7DA
+FC287803281CBF0428052815D1E87D20B12046BDE83240
+4EF499B7A87D60B10123832200F00DF8204601B0BDE830
+400023BB22E0214EF4C0B331BD000012239922E0212046
+4EF4B8B32DE9F047044604F50465287E00F00108400800
+F00109687850BB0026002728780FF2F01A001F02286ED8
+217820464EF41FF720B94FF4F4715046E0F7F1940370FD
+810097FC2278012A07EA080006EA080106D059D3032A03
+D029D3042A27D053E0012A04D0032A57D16A7E002A54D0
+61B1C022574944E06868012808BF0126D0D000260228CD
+D10127CCE716B1C022514936E010B1C022504932E017B1
+C0224F492EE0B8F1000F37D0C0224D4928E0022A03D004
+2A1FD16A7EEAB111B1C022494910E016B1C02248490CE0
+10B1C022474908E017B1C022464904E0B8F1000F04D0C0
+22444920464EF4CEF6B9F1000F13D0C022414904E0B9F1
+000F0DD0C0223F4920464EF4C0F607E04FF4157101E040
+F25F215046E0F72DFC287803281CBF0428052816D1A87D
+10B120464EF47CF7687878B104F6C8039D22C02120464F
+F40FF304F6CC032046BDE8F0479422C0214FF406B3BDE8
+F087ECCBB127E77F5D048BEC2E90BC4FC4528457E9C1DF
+3CC67E8ABFDC1556C8EA88DC8F1577002B2D0022686300
+08010701020001003CB9DC1508C2EA888E891577809516
+0011B4310084008302B83DC67E43A9E9C1BDA0C452AB3F
+2F90EF7F5D0430CCB12770ADDC1594B3EA88B27C157700
+502000D6A3200668016703E0BC000008BD0000A0BD0000
+D8BD0000D0BC000040BD000068BD000010BE000048BE00
+0030BD000090BD0000C0BC000001010000405000080401
+000090500008FFFF0000FFFF000070617463685F676C6D
+657372645F7266696E69745F343735352E637070000000
+2DE9F84F2DED048B9CB0154633980FF26C4A0078B0EE40
+8AB0EE419AF0EE619A10B9272100F082F9DDF8C4904846
+44F49DF210B9282100F079F9369F2A98F862389C204666
+F4DEF00020019023462D98DDF8B0802B99009042462E68
+D6F80CC02846E047379E8346304666F4CBF02146304666
+F4BFF03078092802DB362100F055F93178B0EE480A06F1
+080067F4DAF4002030717079584502D03D2100F046F92F
+984FF0000A20B1B079404538BF4FF0010A002000E0401C
+3178C0B28842FAD300F030F918B100F02DF9012807D120
+980078052814BF06284FF0010B01D04FF0000B484649F4
+54F628B100F01BF9012808BF002100D030993598049002
+91CDF800B02098039007F132000190B3787278317806F1
+080066F48BF678700120387028462968496988478DF834
+00284629680969884701280CBF4FF001084FF000083278
+209813A965F4FBF600F0E7F8034610A80C90CDF81CB011
+A80B90CDF814800EA80A90CDF80C900FA80990B0EE490A
+12A80890F0EE690A2E98069013A9329804909DF8340002
+90B07801907078009006F10800327867F4F19403000182
+0011F2484614F494F300EE100AB8EE400ADFEDAC0A20EE
+200A87ED030A3398007860B300F0AFF8032828DB00F0AB
+F800EE100A3398D0ED020AA548B8EE400A20EE200AD0ED
+000A80EE800A87ED030A484614F46EF300EE100A9E48D0
+ED000A9FED9A1AC0EE810AB8EE400A20EE800AD7ED030A
+00F031F948BF87ED030A00203861786113AD607800284A
+D09FED900A00200CE004EB8001D1ED020AB4EE600AF1EE
+10FA48BFB0EE600A401CC0B2A1788842EFDB002000E040
+1C2178C0B28842FAD3B5EE400AF1EE10FA2ADDA0789FED
+7F8ADFED7E8A9FED7D9A16E004EB8001D1ED020AC0EE80
+0AB4EE608AF1EE10FA09D506EB8001B0EE608AD1ED028A
+55F8201009EE101A401CC0B221788842E5DB00F03DF808
+B1B0EE688A87ED048A87ED059ABAF1000F9DF83400DDED
+130A9DED0E1A05EB800090ED000A30EE600ADDED0F0A70
+EE810AC7ED010A1198B8611298F861D7ED070A30EE800A
+87ED080A0F9878620E98B86207F1300071790170B17941
+701098B8601CBF002078701CB0BDEC048BBDE8F18F2968
+896928460847484616F4CFB700005046E0F703BA00002D
+E9F0412DED028B0446B0EE408A9046DEB28DB22DB94FF4
+8C710FF22C10E0F7F1F9099F00203860404641F4EDF718
+B1404616F4AFF740B1404649F40FF530B1404616F4A7F7
+012801D1012000E000200899002211E0B5EE400AF1EE10
+FA01D59FED330A01EB8203521C83ED000AD7ED000A30EE
+800A87ED000AAA4245DA04EB8203002893ED000A30EE48
+0AF0EEC00AB7EE000A30EE601AB0EE410ADBD0B7EE000A
+00F04BF8DBD5B0EE000AF7EE001A40EE801ABDEEE10A10
+EE103AA3F1030C0CFB03FC5B000CF1010CC3F1050300EE
+10CA01EE903AB8EEC00AF8EEE11A002E01EEA00A18BF02
+2AB0EEC00ABAD0032A18BF042AB6D0B6EE000A00F01FF8
+54BFB0EE410AB0EE600AACE700EE105AB8EE400AD7ED00
+0A80EE800A87ED000ABDEC028BBDE8F081000087F4B234
+C2F38E4D000000008452000088520000F4EE400AF1EE10
+FA7047000070617463685F676C6D657372645F706B6669
+742E63707000F0B50546ADF22C5D0E4605F58167394601
+A84DF421F2002420E001A9684649F453F56946304628F4
+27F2B8B1694638464DF42CF2FFA90078A0316054694638
+464DF424F26A4603780021284637F472F769463846641C
+4DF425F2E4B201A849F431F50028D9D19CB3DFF8C45528
+6810B92A2100F0F5FA2D6807A84FF4906109F4A9F00026
+22E0A71B212F28BF20272968496A2846F1940390048200
+8847014601A833F40DF033F421F101688969884707A900
+91FAB207687F6AFFA9A031731801A9B84701A833F4A1F0
+01A83AF4F4F72036F6B2A642DADB0DF22C5DF0BD00002D
+E9F84F2DED0E8B80460C4615469FEDC29B86B053EC102B
+51EC190B08F484F000F0BEFADDF878900746484649F4FA
+F318B100F099FA012800D000208DF810002421204609F4
+5AF0A07BA78140F00500A07305F11801484691ED020A33
+F43EF1208005F11801484691ED040A33F4EEF105F14806
+60809FEDAA0AD6ED010A00F077FA6082D6ED020A00F072
+FAA082D6ED030A00F06DFAE0829DF85000D0B1A07B40F0
+0A00A073DFED9F0AD6ED051A96ED041A21EE800ABDEEC0
+0A10EE100A96ED060A21EE201A20EE200ABDEEC11ABDEE
+C00A03E09FED941A9FED930A208384ED080A05F1180084
+ED071ADFED900A90ED080AB4EE600AF1EE10FA80F21C82
+D8F804000268D269291D9047D8F80810B0EE408A484614
+F480F2B0EE40AAF0EE60AA384608F4ABF007468B4618EE
+100A0AF453F105F11802D369926907F4F5F753EC1A2B07
+F4F1F741EC100B30F4F9F453EC102B3846594608F49FF0
+41EC180B484614F41EF10390484613F4C6F79DF8101009
+B14FF4E1600090002201208DF8040001A902A816F4E6F5
+51EC180B21F0004141EC1A0B484614F4C1F0074602A814
+F4BDF0791C401C16F433F608F45DF002460B4651EC1A0B
+07F4C9F602D3852100F0E3F9002726E0484616F4CCF503
+98B0EE40AAF0EE60AA08F451F053EC1A2B07F4D1F68246
+05F11800B7EE000AD0ED020A30EE600A8B4610EE100A0A
+F4EDF052465B4607F4BFF653EC182B07F48DF741EC180B
+7F1C02A814F481F0401C874206D251EC180B0022002307
+F490F6CBD305F11800F7EE000A90ED020A30EE200A10EE
+100A0AF4C9F053EC182B07F49BF60022002307F457F641
+EC1D0B02D9932100F093F9484614F47AF008F408F00022
+B44B08F4D2F041EC1A0B484614F4CDF00190D8F8080001
+68D1F894108847804653EC1D2B51EC1A0B07F475F641EC
+1B0B404607F4ECF741EC1C0BB0EE4C1AF0EE6C1AB0EE41
+8AF0EE618A404607F4DFF753EC1B2B07F45FF600F063F9
+B0EE40EAF0EE60EA404607F4D2F753EC1A2B07F452F600
+F04EF900F05CF907F4C8F753EC1D2B07F448F641EC180B
+51EC1C0B53EC1E2B07F4CAF701228F4B07F420F610D2B0
+EE480AF0EE680A13E0000000000000E03F00000047286B
+6E52000000000AD7A33B53EC182B51EC190B07F4F6F641
+EC100B16F4B2F78346BBFBF8FA08FBF19403200882001A
+B0A0729FED7DDB00F008F9012851D100F000F918B100F0
+FDF803284AD1584607F486F753EC1C2B08F450F041EC1B
+0BB0EE4A1AF0EE6A1AB0EE4B0AF0EE6B0A19F45EF6B0EE
+40CAF0EE60CA16F486F720819FED6C1BB0EE418AF0EE61
+8A51EC1B0B53EC1A2B08F431F000F0EBF816F475F7A071
+53EC1C2B51EC1D0B07F4DCF500F0D8F800F0E6F8207453
+EC1A2B00205F4907F4D1F502460B4651EC1B0B08F415F0
+00F0D7F84B2190FBF1F14B2202FB11001DE001980199BA
+FBF0F001FB10A1218153EC1B2B0399B0FBF1F801FB1800
+A07151EC1D0B07F4AFF500F0ABF800F0B9F82074009800
+99B8FBF0F001FB1080A080287E10F01A0F1DD0A07B40F0
+4000A07300F087F818B100F084F8032812D100F084F801
+2803D000F080F802280AD100F07CF8022802D0A8690005
+03D5A07B40F08000A073A869010603D4410501D4C00448
+D5A07B40F08000A073A869010604D5A088317850FA81F0
+0EE0400502D5A088717808E0B0789DF8101019B1717809
+0251FA80F0A1884018A0800099A0888842A4BF401AA080
+A088B84202D200990818A080A088C01BA08000F03BF805
+280AD1A869400507D500F038F8012803DBA088A0710020
+A08000F02CF804280AD1A869C00407D500F029F8022803
+D1A088A0710020A080A07B40F02000A0739DF8501011B1
+40F01000A07306B0BDEC0E8BBDE8F18F00408F400000E0
+3F00000000000070400000000000003440E4C991000000
+344048464AF497B00000484616F4F7B3000060EE800AFD
+EEE00A10EE900A7047000053EC192B07F4D0B50FF21C00
+DFF71EBE41EC100BB0EE481AF0EE681A19F456B541EC10
+0B16F480B670617463685F676C6D657372645F61696469
+6E675F6D67722E637070000000002DE9F04182B004460D
+4616463146684629F4B4F695F85E000FF2B40708B1A828
+02DB112100F04AF805F1340898ED000A00F048F802DA14
+2100F040F898ED010A00F040F802DA152100F038F898ED
+030A00F038F802DA162100F030F8684629F4B9F602281E
+D105F15E0016F493F350B105F15E0034F4B8F0A0B105F1
+5E0016F489F301280ED132462946204659F48AF2314620
+4659F404F332462946204659F481F308E0684629F495F6
+04281CBF04F21C7059F47BF4BDE8F38100003846DFF7A1
+BD0000B5EE400AF1EE10FA7047000070617463685F676C
+6D657372645F7361745F7265706F72745F76616C696469
+74795F63686B2E63707000000070B5A0B0044639F42FF0
+20464CF49EF6014601A83AF40EF3F19403B00B82002046
+35F497F1014601AA0BA826F4AAF30BA83AF437F300285E
+D1002545E020690168D1F8C011884710B3204635F4BAF0
+04281DD1684634F455F0C8B169460BA827F43CF6A0B102
+2101A813F4A5F120464CF470F6014601AA15A826F483F3
+15A826F492F3052803DB69460BA83AF406F369460BA827
+F422F6B0B16068C06800EB8500FEF72BFB06466068C068
+00EB850026F4C2F3034632466946204600F028F869460B
+A83AF4EAF26D1C60684089854212D2A06837F4FCF570B1
+6068C06830F825008DF80000694620690268D2F8E82090
+470028A3D1E3E70BA83AF4D3F220464CF462F54F2115F4
+33F620B070BD00002DE9F04387B00446884617461D4635
+F44DF30646FF2E0FF2F80903D116214846DFF7EEFC2069
+0168D1F8A410884708B900270025062104A808F47AF440
+4633F4D1F738420AD1002200F058F800F05AF88DF81000
+01208DF8110008E0A07E022818BF032803D02F214846DF
+F7C9FC4FB1012200F043F800F045F88DF8120001208DF8
+13004DB1022200F038F800F03AF88DF8140001208DF815
+003146204635F487F381463146204635F4C8F303950190
+0297CDF8009004ABA0683246414637F49DF50646414604
+F11C0014F46BF4314604F1440015F468F7314604F15C00
+15F485F7314604F1740015F480F7314604F18C0015F47B
+F707B0BDE8F0834146684616F442B223685B6A02463146
+2046184770617463685F676C6D657372645F7365617263
+685F6D67725F626173652E6370700000002DE9F44F2DED
+028B81468846AFF4FEF304460025002609F5A3674FF030
+0A01E0761C36B2A64216DA38681AFB060BD8E90023DBE9
+020107F4AFF400F06FF8EFD2DBE90401D8E9022307F4A6
+F400F066F8E6D201252DE0182C05DAB9F86400401CA9F8
+640023E0A9F864509FED308B002638681AFB06F42018B2
+F434F210B9A9F8646014E000F044F851EC100B53EC182B
+07F4DCF207D200F03BF8B0EE408AF0EE608AA9F8646076
+1C36B2192EE0DBB9F9646038681AFB06F4201809F13801
+20307DF43AF68DB9386898ED000B201880ED020B386898
+ED020B201880ED040B386898ED040B201880ED060B0020
+3968611881F82C00BE809DF80800022803D13968611881
+F82C00BDEC028BBDE8F18F00003868201820307DF4AFB6
+000021F00041014A044B07F492B2F168E388FFFFFFFFFF
+FFEF7FB5F8E43E30B591B004460D4601A826F4B9F69DF8
+0900401E012823D8684643F475F20246606802A970F4BA
+F020B926210FF23C00DFF7B0FBF19403400F82009DF800
+1060686EF42DF660B1297CC90609D46979012903D1696A
+C1F3406111B901A983F4C9F2684663F41CF201A849F4BF
+F211B030BD000070617463685F676C70655F6E61766D73
+677061727365722E637070002DE9FE4F2DED048B96B004
+462E9E0FF2841930780D4610B9252100F0B7F8307E10B9
+262100F0B2F8309F387810B9272100F0ACF8DDF8C4A09A
+F8000010B9282100F0A4F8DDF8A080404643F479F210B9
+292100F09BF84246211D684643F452F20EA864F413F400
+21201DEEF733F8B0EE408AF0EE608A201D13F46EF409EE
+100A0EA805902B98DDF89C90049096F878000390CDF800
+A0339802903298019051EC180B09F4F1F301EE900A3B46
+4A46B8EE491A06F1380196ED040B20464EF496F506A864
+F4E3F3269FDDF8BCB01B9A0390CDF808B00196CDF80090
+3B46294620464EF442F62D98359D039004950EAB2C9802
+9049462A98019006A80090204672684EF4DEF6307A6870
+0120E8759DF8380080F0010028761498E861012068759D
+F8180080F00100A875404616F4B7F0022807D001950097
+1C9A1B995B4620464FF4C9F21C980078062818D1287800
+281CBFE87D002812D0287E80B99AED070AB0EEC00ADFED
+090AB4EE600AF1EE10FA05DB28700021C5E90201286128
+7516B0BDEC048BBDE8F78F0000CECCCC3E4846DFF7BDBA
+000070617463685F676C6D657372645F636F646570726D
+2E637070000000042900D1704710B584B0089C0294079C
+0194069C00943EF479F11FBD30B5ADF2CC4D40680C4601
+68D1F8CC1015468847B0F5966F04D917210FF26C00DFF7
+8EFA204632F45BF203464FF4966207A901A863F4A4F129
+7863F425F2697800F020F8A97800F01DF8E97800F01AF8
+297900F017F8512100F014F8762100F011F8002100F00E
+F801A863F493F1009007AB02220421204632F49EF10DF2
+CC4D30BD000001A863F4FFB1000070617463685F676C6D
+657372645F7472616E73616374696F6E5F7270635F656E
+636F6465725F636172702E63707000002DE9F043ABB004
+4604F6941105A84CF4E1F204F634290AE004F6BC1048F4
+20F6694648464CF458F305A84CF4F3F205A84CF4F2F2C0
+B905A968464CF4D1F2266861686A4602A837F497F600F0
+7DF800F075F800F06DF802A93046984700286946DAD104
+F60C20DDE704F62C1105A815F4F7F542E0761C6068F9B2
+37F407F7F6B2864207D260683246F9B237F41BF70028F0
+D1A8460022F9B201A840F4FDF688F00100054209D00122
+F9B2684640F4F4F6024601A9F19403D012820002A841F4
+45F0606801A937F4C7F604EB4010008A042813DB266861
+6801AA03A837F450F600F036F800F02EF800F026F803A9
+3046984718B901A9484648F4B6F505A815F493F505A819
+F43CF198B905A819F442F107466168FAB204A837F41EF6
+04A833F4A7F4002500284FF00008B7D001250026A5E72B
+B0BDE8F08333685B6941EC100B3A4670470746D4F8EC0E
+07F4F7B10000E0680168D1F8BC1108470000F8B504460D
+46002600277AB22946684640F498F6014604F604104CF4
+99F208B1012603E07F1CFFB2032FEEDB3046F2BD30B50F
+F2A80485B004AB25680FF2A4041D6000200FF298031B78
+25680FF298048DF80C3002AB1D6001AB25680FF28C041D
+60002325680095062918D8DFE801F00F0F040F0B071300
+9AB903AB0FE0032A0FD202A90AE0032A0BD201A906E003
+2A07D204A902E0032A03D26946531803B1187805B030BD
+00000B4B1B7801220BB101207047007C06280CD8DFE800
+F00606060606040800072902E0012900E0052908BF0022
+10467047EBCB9100010608000100000007020100010305
+000100000030B5ADF2CC4D40680C460168D1F8CC101546
+8847B0F5966F04D912210FF28C00DFF70EF9204632F4DB
+F003464FF4966207A901A863F424F0296863F40FF16968
+00F031F8A96800F02EF8E96800F02BF8296900F028F869
+6900F025F8A96900F022F8E96900F01FF8296A00F01CF8
+00F019F8A96A00F017F8E96A00F014F8296B00F011F800
+F00EF801A863F403F0009007AB0E220421204632F40EF0
+0DF2CC4D30BD0000696A01A863F4D8B070617463685F67
+6C6D657372645F7472616E73616374696F6E5F7270635F
+656E636F6465725F70696B652E63707000002DE9F84F80
+462DED0A8B08F12C0A82B09AF801B09AF802900C4608F1
+7F0040F4A3F600259FED549B9FED55AB38B108F17F0015
+F45FF6471EBF41FF0F00E0002708F17F0048F4BAF330B1
+08F17F0015F451F6012808BF01270097002757E0BBF100
+0F01D04F4550DA009810B1B81E03284BD208EB87069FED
+44CB706B09F478F141EC180BF06D09F473F141EC1B0B53
+EC182B0020002106F4EBF604D153EC1B2B06F4E6F61BD0
+51EC180B09F419F100EE900AB0EE608A51EC1B0B09F411
+F100EE100AF0EE480A18F47BF7DFED310A00F06BF8304A
+304B07F46BF141EC1C0B51EC1C0B53EC1A2B06F4FDF63C
+BFB0EE4CAAF0EE6CAA51EC190B53EC1C2B06F4F2F63CBF
+B0EE4C9AF0EE6C9A7F1CFFB29AF800008742A3DB51EC19
+0B53EC1A2B07F487F09AEDF1940360168200190ADFED1D
+0A41EC180B00F03BF841EC100B15F411F7052816DB2078
+A0B1174894ED010AD0ED000AB4EE600AF1EE10FA0ADB13
+48006809F409F153EC182B06F4BFF634BF0325012502B0
+2846BDEC0A8BBDE8F28F0000000080842EC10000000080
+842E4100000000000000000000B443112D4454FB211940
+00007A44185200001452000020EE200A10EE100A09F4DE
+B070B582B00E4614461D46BEF409F520B116210FF27800
+DEF7CBFF16F1010F18D1E80705D5C7F4F6F304F00101EE
+F79AFCA80729D5C7F4EEF32A462146EEF79AFCC7F4E8F3
+2A46214602B0BDE87040EEF79BBC00210020BEF4B7F601
+68096888470799069B00912A4621460468A468A0470021
+0020BEF4A8F60168896A88473146BDE87C40CAF422B373
+BD000070617463685F67756C706D655F6368696E6F6F6B
+5F656E67696E652E6370700010B5DFF82447204612F4B8
+F304F12800BDE8104012F4B2B3F8B50446DFF80C072060
+0D4616461F46002013F44BF313F4EBF36060002013F445
+F313F413F4A06004F514603FF46AF304F594503FF486F3
+04F59850002100F8181F41608560C66007610020002304
+EB4002FF21918104EB800204EBC00101F58061C2F85C31
+C1E90033401CA828EED3DFF89C5605F1280039F404F528
+4639F401F52046F2BD00002DE9F843044690460D464046
+40F41EF020B12A210FF2A460DEF724FF41F22437424638
+5903689B68294698470022002128463FF4FFF200220021
+40463FF4FAF205F15E0015F4D6F450B105F15E0015F4D1
+F4012804D0404640F472F200284FD005F16006DFF82096
+307D0A2818BF0B2803D00C2818BF112804D105F15E0148
+4613F4C2F6307D0E281DD105F15E0109F1280026F4D1F7
+002805F15E0104D009F1280013F4B1F60EE0484626F4C1
+F750B105F15E0109F1280039F49AF43859026831781268
+904705F15E0104F5146040F43DF2294640F47AF200F014
+F823F4EAF618B100F00FF823F471F700F00BF823F469F6
+28B100F006F8BDE8F84323F4BAB6BDE8F1834246294620
+4670472DE9F04F934687B0044600268A468BF89C6005A8
+61680FF298580A68926A90470BF1780703E0C7214046DE
+F795FE05A840F476F4002800F0EC80656805A901A840F4
+70F42A68926801A9284690478146494604A817F422F251
+4604A825F4AAF40028E4D14946684617F43EF2494603A8
+17F43CF203A828F457F7012809F1280506D0D0D3032839
+D05DD3042858D0CAE7684640F4C9F418B16F214046DEF7
+5CFE00F0C4F801465846F19403F019820015F42AF1286B
+012640031BD595ED000AD7ED010A00F0B0F804D587ED01
+0A00F0B1F8787099F8740009280BD195ED000AD7ED020A
+00F0A0F804D587ED020A00F0A1F8B87099F874000F289C
+D100F09AF8387098E7684640F493F418B188214046DEF7
+26FE00F08EF801460BF1600015F4F3F0286B0126400341
+BF95ED000AD7ED030AF4EE400AF1EE10FA04D587ED030A
+00F078F8F87076E701208BF89C00684640F46EF400B901
+2695F83000800608D4494602A817F4C6F102A828F4E1F6
+042832D195F8300040062ED500F05BF801460BF1300015
+F4C0F099F874000B281CBF0C28112806D100F04DF80146
+0BF1480015F4B2F097ED050A00F03CF809DB387C787487
+ED060A00F03DF838742868786139E797ED060A00F02FF8
+F9DBC7ED060A00F030F878742EE700F02CF801460BF118
+0015F491F097ED070A00F01BF809DBB87CF87487ED080A
+00F01CF8B8742868F86118E797ED080A00F00EF8F9DBC7
+ED080A00F00FF8F8740DE7304607B0BDE8F08F0000D5ED
+000AF4EE400AF1EE10FA70470000684640F485B300002D
+E9F84F804608F598562DED028B1836ADF52A7D7160CC4C
+214604F1280015F43FF3204639F44AF39FA812F4B7F10F
+A812F4B4F18DA815F42DF7D8F804100A68926A06A89047
+26E0D8F8044006A9684640F44EF3226892686946204690
+4704462146684617F400F169469FA813F42CF594F87400
+0A2818BF0B2804D00C281CBF11280D2807D12146684617
+F401F169468DA815F40DF706A840F428F30028D3D1B068
+026892688DA990479FA967A815F4DFF666E04269002A1C
+BFDBF81420002A39D009782A79914235D141680068DBE9
+002306F48DF521F0004141EC100B53EC102B00209A4906
+F4F9F341EC100B15F48FF4B0EE408AF0EE608A04F15E00
+40F413F3142500B10425284606F463F541EC110BB0EE48
+0AF0EE680A18F443F451EC100B8C4A8C4B06F499F304D8
+F0680268126A01A99047B0680268D268214690479DF800
+018AF00101084314D12146404624F406F4B56804F15E01
+08A828F4FEF52A68D26901462846904720B104F15E010F
+A813F4A9F47F1C032F38DB67A815F485F667A815F484F6
+002840F09A8067A905A815F473F619A840F4CCF267A968
+4615F46CF619AA69464046FFF70FFE09A815F49EF100F0
+D4F8814609A941A815F49FF00BE0F46841A818F430F422
+681268C1B22046904741A815F472F041A818F41BF40028
+EED0B9F1FF0FC7D000277AB2494604A840F4A0F100F0B8
+F80400BAD04FF0000AF19403801D820004F15C0578B210
+BB214603A817F452F003A828F46DF5022808D0214602A8
+17F449F002A828F464F5042810D1494625A818F470F320
+B949461FA818F46BF330B12A7F2146404624F429F44FF0
+010A287E08281CBF01203070002F2FD10222494601A840
+F467F10146D8F80400026892689047002822D000F16001
+00F1180B8A7E002A04F118003FF413AF41680068002200
+2306F4E1F211D8DBE9000106F4DCF20CD82D489BED040A
+D0ED000AB4EE600AF1EE10FA02DB03202870687039E70F
+A825F47AF202282FDB0FA941A815F4CEF525E041A96846
+15F4CFF519A840F428F2024669464046FFF76FFD09A815
+F4FEF000F034F80146002201A840F41BF100F033F8B468
+00F15E0102A828F425F52268126A01462046904741A815
+F4B5F541A815F4B4F50028D4D008F594503FF47EF04046
+24F4D7F20DF52A7DBDEC028BBDE8F18F0000E8C99100D0
+C0000000408F409B9999999999B93F90B80700024619A9
+404623F4F3B60000D8F804200146104612689268104700
+0070617463685F676C6D657372645F737669645F726570
+6F72745F6D67722E637070000000704700002DE9F84F2D
+ED048B044692B0207A8A469346B0EE408A10B90F2100F0
+51FA04F2447500F029FA8046A8680168496C8847209E01
+21317008F1940706F17C0979783171797886F82C107978
+86F85410797989F800102199B172817B808900EE101A00
+F016FA286880EE209A64F4C1F6D8ED000AB0F8DC0000F0
+05FA60EE208A00203279904206EB80011FD25AF8202000
+EE102AB8EE400A00F0D5F881ED030A9DF858200AB10022
+12E05BF8202000EE102A00F0C6F80BEB800281ED0D0A92
+ED080A00F0BEF881ED170A03E00022CA604A63CA65401C
+0828D3D300F0CAF918B100F0C7F9012840D13878052818
+BF06283BD109A80FF2FC31202207F40CF300F0B4F94FF0
+000B70B100F0CBF983280AD201A80FF2FC31202207F4FD
+F2202201A909A807F4F8F2307983450ED209A850F82B00
+5AF8200000F0A6F920EE090A06EB8B0080EE280A80ED03
+0A0BF1010BBBF1080FE8D3002000E0401C31798842FBD3
+002000E0401C8842FCD3A8690121ECF7ECFFB0EE409AF0
+EE609A18EE900A08F406F404F5ED625368126806F4D6F1
+53EC192B06F41CF408F4B2F308EE900A286864F42FF689
+F8020006F17F01AA69684642F4E3F106F1880080ED028A
+D8F82C10C160E168C9F8081094ED0E0B80ED000BC0ED04
+8A01203070B87889F8010000F048F960B900F041F948B1
+00F05AF9832805D2F19403102182003878072804BF0420
+89F801003878052812BF0628032089F80100B879707106
+F12C01F879B071B8794870F879887006F15401B8794870
+F8798870B079082802D3932100F045F912B0BDEC048BBD
+E8F18FB8EEC00A20EE090A80EE280A704700002DE9F84F
+2DED048B044682B0207A10B9992100F02DF994F8580000
+281CBF94F8F800002802D19A2100F022F904F24475A868
+0168496C8847019000F0F5F88046A8680268697FD26D90
+470646286864F4A5F58246286864F4A3F58146A8680268
+697F526A90470746A8680268697F926A9047002F08BF03
+2806D1202209F5807109F5907007F40EF208F19400D6ED
+058A96ED169A477998ED008A04F55676012030709AF825
+003072012030760AF11400A96931F4BFF486ED040BE068
+7060B9F8DC0000F0B7F820EE080A80EE288A00EE107AB8
+EE400AF6EE008A20EE090A20EE280A10EE100A08F429F3
+41EC100B15F41BF1C0B2009029EE280A86ED0B0A04F562
+7000990170477008F1940086ED0A8A877890F803A090F8
+04B000F081F878B900F07AF860B100F093F8832808D298
+F89400072804D104274FF0010A4FF0020B0198807B00EE
+100A0198808900F078F8082FC0EE208A02D3DE2100F089
+F809EB870000F07BF886ED090A00F059F818B100F056F8
+012809D198F8940006281CBF0528072802D109EB8B0003
+E00098C01909EB800000F062F886ED070A98F894000628
+1CBF052807280CD00098874202DAF72100F05DF8009838
+1A082802D3F82100F056F800F02CF818B100F029F80128
+09D198F8940006281CBF0528072802D109EB8A0003E000
+98381A09EB800000F035F886ED080A204659F41AF684F8
+D00302B004F10801BDEC048B04F56470BDE8F44F40F4D3
+B6000020680168896F0847A86914F44DB70000A8680268
+697F526D1047000000EE100AB8EE400A7047000000EE90
+0AB8EE400AF8EE600A7047000020680168D1F870110847
+000090ED480AB8EE400A20EE280A80EE080A704700000F
+F20400DEF75CB970617463685F676C6D657372645F7361
+745F7265706F72745F74726B5F6D736D742E6370700000
+0002000000030000000000000006000000010000000500
+0000040000000700000003000000040000000100000000
+00000002000000060000000500000007000000F8B50446
+0D4616461F4605F15E0014F4E7F6012800F0B980E567C4
+F88060394604F1780064F4DAF30698E0752946204664F4
+E2F30020207600274FF07E50E061304628F409F2381800
+7BFF2808D194EDF19403A0248200070ADFED4E0A30EE20
+0A84ED070A0DE0304628F4F9F13818217E007B814205D2
+304628F4F1F13818007B20767F1C052FDEDBDFED430A94
+ED070A0FF21417B4EE600AF1EE10FA03DA33213846DEF7
+D8F894ED070A18F438F084ED070A294604F1280058F4C3
+F304F1780063F483F120B904F1780064F49EF318B104F1
+280064F49FF300220021684638F49CF7014606208DF800
+0007988DF80100204634F478F0204664F4A3F3E0B105F1
+5000816821F02001816021F04001816021F08001816021
+F00801816021F40071816041F48001816000F039F80121
+3FF4DCF019480068686300F031F80546204664F47FF385
+F8480000F029F80546204664F479F385F84A0000F021F8
+0546204664F431F385F84B0000F019F80546204664F42F
+F385F84C00204664F424F338B1204664F426F318B15B21
+3846DEF763F8F1BDCDCC4CBE9A99193EA83E0000304664
+F467B2000070617463685F676C6D657372645F7361745F
+7265706F72745F76657474696E672E637070000000002D
+E9FC4D0D46044605F16007606897F800801646414600F5
+146036F42BF6002838D1606805F15E02414600F5146036
+F4FFF500287BD0284627F446F4002860680FF2081B42F6
+D45A414624D000F5D45037F4ECF3C8B9002542F6D01660
+6800EB85004146305833F449F638B1606800EB85014246
+71581FF4DDF006E06D1C092DECD330215846DDF7FFFF60
+684146504414F4CEF24BE000F5D750FEF75DFE00283FD0
+00F04BF8387D0A2804D060684146504414F4DFF2294601
+A827F411F401A83FF44AF6022832DB00F034F890F84B00
+90B100F02FF890F84C0018B149215846DDF7D2FF294668
+4627F4FAF36068694600F5D75037F406F700F01CF890F8
+4C00A8B100F017F890F84B0018B152215846DDF7BAFF23
+685B6A324629462046984705E0606841461FF451F000F0
+07F8BDE8F38D0000304628F4ABB0000060683246294600
+F5D75037F4FDB6000070617463685F676C6D657372645F
+6163715F6D67722E6370700000002DE9F0418AB0044604
+F5927504F59476287804F1FC0704F1D40838BB404638F4
+49F520B1204633F4D5F207281ED120464BF498F0024639
+46684638F419F5694640464BF489F088B1304638F433F5
+20B916210FF25800DDF763FF012028702146D4F8CC0002
+68926890471BE02878C8B1394640464BF470F0A0B10020
+2870384638F41AF53146384638F41CF5304638F413F5E8
+6A401CE8622146D4F8CC000268D26890470AB0BDE8F081
+000070617463F1940330288200685F676C6D657372645F
+7368617265645F7361745F7365617263685F6D67722E63
+70700070B52DED068B82B004460D461646B0EE409AF0EE
+608AB0EE418A00F0FDF800F0F7F800F0C3F900F0FDF8ED
+B290ED060A002D18BF032D16D1F6B2022E18BF032E11D1
+A06801686668896825B9884701460223002203E0884701
+230422014635686D693046A84700F0BBF800F0C5F8B0EE
+409A32F4D9F1B0EE69AA4168006807F4A3F709EE29AA09
+EE100A00F01FF80AEE089A808900EE100A60680168496C
+B8EE408A884729EE080AD0ED000AC0EEA80A20EE208A00
+F09AF802DC452100F05EFE02B0B0EE480ABDEC068B70BD
+60680168496C084770B52DED048BB0EE409A9FEDA80AB4
+EE409A82B00446F1EE10FAF0EE608AB0EE418A0D461646
+48BF00206BD400F08AF800F084F800F050F900F08AF8ED
+B290ED060A002D18BF032D16D1F6B2022E18BF032E11D1
+A06801686668896825B9884701460223002203E0884701
+230422014635686D693046A84700F048F800F052F8F0EE
+408A32F466F1B0EE699A4168006807F430F708EEA99A08
+EE900A60680FF68854FFF7AAFF49EE088A808900F00EF9
+20EE288A00F030F803DA78212046DDF75BFEB0EE480A17
+F4BBF5B0EE408A00F023F803DC7D212046DDF74EFEB6EE
+000A38EE008A9FED720AB4EE408AF1EE10FA03D47E2120
+46DDF73FFEBDEEC80A10EE100A80B202B0BDEC048B70BD
+60EE299AB0EE680A17F47AB5B5EE408AF1EE10FA704700
+00F0EE400AB2EE040A00EE809AF2EE040AC9EE200A17F4
+7AB501216846ECF7FEBAF3B2EAB22146684600F034BE00
+EE100A60680268D26CC8EE809AE9B2104700002DE9F041
+2DED068B064682B070680C460168496C1546F0EE408AB0
+EE608A88472B46808900EE100AF8EE409A224631466846
+00F00FFEFFF7CFFF00F09BF800EE100A70680268D26C88
+EE008A21469047270090ED06AA18BF032FB3EE069A1AD1
+022D18BF032D16D1B0680168D6F80480896824B9884701
+460223002203E08847012304220146D8F800C0DCF814C0
+4046E047B0EE40AA70680268D26C21469047012F007A00
+F060F880EE080ABDEEC00A10EE104AE4B22AEE08AA04D1
+022D06D16406240E03E0022F08BF9FED219ABBEE0E0A39
+EE000AF2EE040AF2EE04AA00F03DF8042F20EE080A09D1
+BBEE080A39EE000AF2EE040A00F031F820EE080A00EE90
+4AF8EE600A20EE0A0A20EE200A20EE200A032F20EE290A
+08BF032D20EE280A0CD1DFED0C0AF4EE608AF1EE10FAAC
+BFF5EE000AF19403C02B8200DFED080A20EE200A02B0BD
+EC068BBDE8F08100000100A04000FF7F4700000042B7F3
+7D3D0000803DC0EE200AB0EE6A0A17F4B2B400EE100AB8
+EE400A7047000051EC100B07F40AB62DE9F24F2DED0E8B
+0446ADF56E7DFFF783FE4FF460710EAD808900EE100A0D
+A806F4D2F44FF47A70ADF83400B8EE40AAC820ADF83800
+F3EE048A0F20A8714FF4C3702881F0EE680AAA7B9FED1F
+0A002120462FAE1AF44CF5B0800022606803681B6B0021
+9847074600F0E6FC00219847804600F0C5FC3946904741
+4690ED02BA00F0BEFC9047394690ED028A00F0B8FC9047
+007919F46AF400F0B2FCF0EE40BA41469047007919F461
+F4A0680168D1F89811B0EE409A884700F008FD06D200F0
+E5FC90ED030A07E00000484300F086FCFFF792FF00EE10
+0A00F068FCA0680168D1F89811F0EE40AA884700F0EFFC
+04D200F0CCFC90ED030A05E000F06FFCFFF77BFF00EE10
+0A00F047FCA0680168D1F8A011F0EE409A884700F0D8FC
+04D200F0B5FC90ED040A05E000F052FCFFF764FF00EE10
+0A00F03AFCA0680168D1F8A011B0EE40BA884700F0C1FC
+04D200F09EFC90ED040A05E000F03BFCFFF74DFF00EE10
+0A00F019FCDFED7F0A2AEEA08A60EE20AAB0EE480A2BEE
+209A09EEE00A00F0F5FB03D44FF48D7100F01EFC39EE6A
+0A00F0ECFB03D440F21B1100F015FCFFF74BFE03DA40F2
+211100F00EFCDFED6EAAB4EE6A8ADFED6D9AF1EE10FAA8
+BFB0EE698AB5EE409AF1EE10FA03DA40F2271100F0FAFB
+B4EE6A9AF1EE10FAA8BFB0EE699AB0EE480A14F463F328
+74B0EE490A14F45EF3687400F007FC00219847074600F0
+38FC00F0A6FB18B94FF49A7100F0DBFB00F02FFC00F0B9
+FB0DF1