All of lore.kernel.org
 help / color / mirror / Atom feed
* [Buildroot] [PATCH 00/23] xtensa overlay application rework
@ 2017-03-14 18:30 Max Filippov
  2017-03-14 18:30 ` [Buildroot] [PATCH 01/23] core: include arch-specific definitions Max Filippov
                   ` (24 more replies)
  0 siblings, 25 replies; 31+ messages in thread
From: Max Filippov @ 2017-03-14 18:30 UTC (permalink / raw)
  To: buildroot

Hello,

This series cleans up xtensa overlay application code, making
it uniform across its users in the toolchain, reducing the number of
configuration variables and making it possible to use compressed
overlays and download overlays from network.
This is a subset of a series initially submitted by Yann E. MORIN
in 2015, I've forward-ported the original submission, addressed the
posted comments and added overlay application to linux and U-Boot.

Max Filippov (3):
  linux: apply xtensa overlay
  uboot: apply xtensa overlay
  linux: enable uBoot image type for xtensa kernel

Yann E. MORIN (20):
  core: include arch-specific definitions
  arch/xtensa: add definitions for the Xtensa overlay
  package/binutils: use the Xtensa variables
  package/gdb: use the Xtensa variables
  package/gcc: use the Xtensa variables
  arch/xtensa: add macro to extract the overlay
  package/binutils: use macro to extract Xtensa overlay
  package/gdb: use macro to extract Xtensa overlay
  package/gcc: use macro to extract Xtensa overlay
  package/binutils: extract Xtensa overlay as post-extract hook
  package/gdb: extract Xtensa overlay as post-extract hook
  arch/xtensa: add macros to generate hooks
  package/binutils: use the Xtensa macro generators
  package/gdb: use the Xtensa macro generators
  package/gcc: use the Xtensa macro generators
  arch/xtensa: get rid of an intermediate blind kconfig option
  arch/xtensa: allow specifying path to tarball file
  arch/xtensa: accept the overlay to be compressed
  arch/xtensa: accept the overlay to be an URL
  configs/qemu-xtensa: use overlay from the github repository

 Config.in.legacy                         |  23 ++++++++++
 Makefile                                 |   3 ++
 arch/Config.in.xtensa                    |  27 +++++-------
 arch/arch.mk.xtensa                      |  71 +++++++++++++++++++++++++++++++
 board/qemu/xtensa-lx60/xtensa_dc233c.tar | Bin 808960 -> 0 bytes
 boot/uboot/uboot.mk                      |   3 ++
 configs/qemu_xtensa_lx60_defconfig       |   4 +-
 configs/qemu_xtensa_lx60_nommu_defconfig |   4 +-
 linux/Config.in                          |   2 +-
 linux/linux.mk                           |   3 ++
 package/binutils/binutils.mk             |  13 ++----
 package/gcc/gcc-final/gcc-final.mk       |   5 +--
 package/gcc/gcc-initial/gcc-initial.mk   |   5 +--
 package/gcc/gcc.mk                       |  12 +-----
 package/gdb/gdb.mk                       |  14 ++----
 15 files changed, 129 insertions(+), 60 deletions(-)
 create mode 100644 arch/arch.mk.xtensa
 delete mode 100644 board/qemu/xtensa-lx60/xtensa_dc233c.tar

-- 
2.1.4

^ permalink raw reply	[flat|nested] 31+ messages in thread

* [Buildroot] [PATCH 01/23] core: include arch-specific definitions
  2017-03-14 18:30 [Buildroot] [PATCH 00/23] xtensa overlay application rework Max Filippov
@ 2017-03-14 18:30 ` Max Filippov
  2017-03-14 18:30 ` [Buildroot] [PATCH 02/23] arch/xtensa: add definitions for the Xtensa overlay Max Filippov
                   ` (23 subsequent siblings)
  24 siblings, 0 replies; 31+ messages in thread
From: Max Filippov @ 2017-03-14 18:30 UTC (permalink / raw)
  To: buildroot

From: "Yann E. MORIN" <yann.morin.1998@free.fr>

Allow architectures to define variables and helper macros.

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Cc: Peter Korsgaard <jacmet@uclibc.org>
Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
---
 Makefile | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/Makefile b/Makefile
index fb2c235..cceae92 100644
--- a/Makefile
+++ b/Makefile
@@ -479,6 +479,9 @@ all: world
 include Makefile.legacy
 
 include package/Makefile.in
+# arch/arch.mk.* must be after package/Makefile.in because it may need to
+# complement variables defined therein, like BR_NO_CHECK_HASH_FOR.
+-include $(wildcard arch/arch.mk.*)
 include support/dependencies/dependencies.mk
 
 include toolchain/*.mk
-- 
2.1.4

^ permalink raw reply related	[flat|nested] 31+ messages in thread

* [Buildroot] [PATCH 02/23] arch/xtensa: add definitions for the Xtensa overlay
  2017-03-14 18:30 [Buildroot] [PATCH 00/23] xtensa overlay application rework Max Filippov
  2017-03-14 18:30 ` [Buildroot] [PATCH 01/23] core: include arch-specific definitions Max Filippov
@ 2017-03-14 18:30 ` Max Filippov
  2017-03-14 18:30 ` [Buildroot] [PATCH 03/23] package/binutils: use the Xtensa variables Max Filippov
                   ` (22 subsequent siblings)
  24 siblings, 0 replies; 31+ messages in thread
From: Max Filippov @ 2017-03-14 18:30 UTC (permalink / raw)
  To: buildroot

From: "Yann E. MORIN" <yann.morin.1998@free.fr>

Currently, we have four packages that need to use the Xtensa overlay:
binutils, gcc-initial, gcc-final and gdb. However, they all use three
different ways to check for, and use the overlay. Furthermore, two of
them define the same variable: XTENSA_CORE_NAME is defined both by
binutils and gdb

In order to sanitise that, have the Xtensa architecture export the
appropriate variables: the name of the core and the path to the overlay
tarball. Packages can then check and use those variables.

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
---
 arch/arch.mk.xtensa | 15 +++++++++++++++
 1 file changed, 15 insertions(+)
 create mode 100644 arch/arch.mk.xtensa

diff --git a/arch/arch.mk.xtensa b/arch/arch.mk.xtensa
new file mode 100644
index 0000000..7c8beb1
--- /dev/null
+++ b/arch/arch.mk.xtensa
@@ -0,0 +1,15 @@
+################################################################################
+# Those two variables can be used by packages that need to extract the overlay.
+#
+# ARCH_XTENSA_CORE_NAME   is the name of the Xtensa core; empty if none or the
+#                         standard 'fsf' core.
+# ARCH_XTENSA_OVERLAY_TAR is the path to the overlay tarball; only valid when
+#                         ARCH_XTENSA_CORE_NAME is not empty.
+#
+# Example:
+#   ifneq ($(ARCH_XTENSA_CORE_NAME),)
+#       tar xf $(ARCH_XTENSA_OVERLAY_TAR) -C $(@D) --strip-components=1 gcc
+#   endif
+################################################################################
+ARCH_XTENSA_CORE_NAME = $(call qstrip,$(BR2_XTENSA_CORE_NAME))
+ARCH_XTENSA_OVERLAY_TAR = $(call qstrip,$(BR2_XTENSA_OVERLAY_DIR))/xtensa_$(ARCH_XTENSA_CORE_NAME).tar
-- 
2.1.4

^ permalink raw reply related	[flat|nested] 31+ messages in thread

* [Buildroot] [PATCH 03/23] package/binutils: use the Xtensa variables
  2017-03-14 18:30 [Buildroot] [PATCH 00/23] xtensa overlay application rework Max Filippov
  2017-03-14 18:30 ` [Buildroot] [PATCH 01/23] core: include arch-specific definitions Max Filippov
  2017-03-14 18:30 ` [Buildroot] [PATCH 02/23] arch/xtensa: add definitions for the Xtensa overlay Max Filippov
@ 2017-03-14 18:30 ` Max Filippov
  2017-03-14 18:30 ` [Buildroot] [PATCH 04/23] package/gdb: " Max Filippov
                   ` (21 subsequent siblings)
  24 siblings, 0 replies; 31+ messages in thread
From: Max Filippov @ 2017-03-14 18:30 UTC (permalink / raw)
  To: buildroot

From: "Yann E. MORIN" <yann.morin.1998@free.fr>

... instead of re-computing them over-and-over-again.

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
---
 package/binutils/binutils.mk | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/package/binutils/binutils.mk b/package/binutils/binutils.mk
index 6d29f24..914393e 100644
--- a/package/binutils/binutils.mk
+++ b/package/binutils/binutils.mk
@@ -121,11 +121,9 @@ define BINUTILS_INSTALL_TARGET_CMDS
 endef
 endif
 
-XTENSA_CORE_NAME = $(call qstrip, $(BR2_XTENSA_CORE_NAME))
-ifneq ($(XTENSA_CORE_NAME),)
+ifneq ($(ARCH_XTENSA_CORE_NAME),)
 define BINUTILS_XTENSA_PRE_PATCH
-	tar xf $(BR2_XTENSA_OVERLAY_DIR)/xtensa_$(XTENSA_CORE_NAME).tar \
-		-C $(@D) --strip-components=1 binutils
+	tar xf $(ARCH_XTENSA_OVERLAY_TAR) -C $(@D) --strip-components=1 binutils
 endef
 BINUTILS_PRE_PATCH_HOOKS += BINUTILS_XTENSA_PRE_PATCH
 HOST_BINUTILS_PRE_PATCH_HOOKS += BINUTILS_XTENSA_PRE_PATCH
-- 
2.1.4

^ permalink raw reply related	[flat|nested] 31+ messages in thread

* [Buildroot] [PATCH 04/23] package/gdb: use the Xtensa variables
  2017-03-14 18:30 [Buildroot] [PATCH 00/23] xtensa overlay application rework Max Filippov
                   ` (2 preceding siblings ...)
  2017-03-14 18:30 ` [Buildroot] [PATCH 03/23] package/binutils: use the Xtensa variables Max Filippov
@ 2017-03-14 18:30 ` Max Filippov
  2017-03-14 18:30 ` [Buildroot] [PATCH 05/23] package/gcc: " Max Filippov
                   ` (20 subsequent siblings)
  24 siblings, 0 replies; 31+ messages in thread
From: Max Filippov @ 2017-03-14 18:30 UTC (permalink / raw)
  To: buildroot

From: "Yann E. MORIN" <yann.morin.1998@free.fr>

... instead of re-computing them over-and-over-again.

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
---
 package/gdb/gdb.mk | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/package/gdb/gdb.mk b/package/gdb/gdb.mk
index ccfed4c..9f7746d 100644
--- a/package/gdb/gdb.mk
+++ b/package/gdb/gdb.mk
@@ -44,11 +44,9 @@ HOST_GDB_MAKE_OPTS += MAKEINFO=true
 HOST_GDB_INSTALL_OPTS += MAKEINFO=true install
 
 # Apply the Xtensa specific patches
-XTENSA_CORE_NAME = $(call qstrip, $(BR2_XTENSA_CORE_NAME))
-ifneq ($(XTENSA_CORE_NAME),)
+ifneq ($(ARCH_XTENSA_CORE_NAME),)
 define GDB_XTENSA_PRE_PATCH
-	tar xf $(BR2_XTENSA_OVERLAY_DIR)/xtensa_$(XTENSA_CORE_NAME).tar \
-		-C $(@D) --strip-components=1 gdb
+	tar xf $(ARCH_XTENSA_OVERLAY_TAR) -C $(@D) --strip-components=1 gdb
 endef
 GDB_PRE_PATCH_HOOKS += GDB_XTENSA_PRE_PATCH
 HOST_GDB_PRE_PATCH_HOOKS += GDB_XTENSA_PRE_PATCH
-- 
2.1.4

^ permalink raw reply related	[flat|nested] 31+ messages in thread

* [Buildroot] [PATCH 05/23] package/gcc: use the Xtensa variables
  2017-03-14 18:30 [Buildroot] [PATCH 00/23] xtensa overlay application rework Max Filippov
                   ` (3 preceding siblings ...)
  2017-03-14 18:30 ` [Buildroot] [PATCH 04/23] package/gdb: " Max Filippov
@ 2017-03-14 18:30 ` Max Filippov
  2017-03-14 18:30 ` [Buildroot] [PATCH 06/23] arch/xtensa: add macro to extract the overlay Max Filippov
                   ` (19 subsequent siblings)
  24 siblings, 0 replies; 31+ messages in thread
From: Max Filippov @ 2017-03-14 18:30 UTC (permalink / raw)
  To: buildroot

From: "Yann E. MORIN" <yann.morin.1998@free.fr>

... instead of re-computing them over-and-over-again.

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
---
 package/gcc/gcc-final/gcc-final.mk     | 2 +-
 package/gcc/gcc-initial/gcc-initial.mk | 2 +-
 package/gcc/gcc.mk                     | 7 ++-----
 3 files changed, 4 insertions(+), 7 deletions(-)

diff --git a/package/gcc/gcc-final/gcc-final.mk b/package/gcc/gcc-final/gcc-final.mk
index c9ee476..a15d837 100644
--- a/package/gcc/gcc-final/gcc-final.mk
+++ b/package/gcc/gcc-final/gcc-final.mk
@@ -15,7 +15,7 @@ HOST_GCC_FINAL_DEPENDENCIES = \
 HOST_GCC_FINAL_EXCLUDES = $(HOST_GCC_EXCLUDES)
 HOST_GCC_FINAL_POST_EXTRACT_HOOKS += HOST_GCC_FAKE_TESTSUITE
 
-ifneq ($(call qstrip, $(BR2_XTENSA_CORE_NAME)),)
+ifneq ($(ARCH_XTENSA_CORE_NAME),)
 HOST_GCC_FINAL_POST_EXTRACT_HOOKS += HOST_GCC_XTENSA_OVERLAY_EXTRACT
 endif
 
diff --git a/package/gcc/gcc-initial/gcc-initial.mk b/package/gcc/gcc-initial/gcc-initial.mk
index a51e29c..e1a2241 100644
--- a/package/gcc/gcc-initial/gcc-initial.mk
+++ b/package/gcc/gcc-initial/gcc-initial.mk
@@ -13,7 +13,7 @@ HOST_GCC_INITIAL_DEPENDENCIES = $(HOST_GCC_COMMON_DEPENDENCIES)
 HOST_GCC_INITIAL_EXCLUDES = $(HOST_GCC_EXCLUDES)
 HOST_GCC_INITIAL_POST_EXTRACT_HOOKS += HOST_GCC_FAKE_TESTSUITE
 
-ifneq ($(call qstrip, $(BR2_XTENSA_CORE_NAME)),)
+ifneq ($(ARCH_XTENSA_CORE_NAME),)
 HOST_GCC_INITIAL_POST_EXTRACT_HOOKS += HOST_GCC_XTENSA_OVERLAY_EXTRACT
 endif
 
diff --git a/package/gcc/gcc.mk b/package/gcc/gcc.mk
index 241f357..e50e1e0 100644
--- a/package/gcc/gcc.mk
+++ b/package/gcc/gcc.mk
@@ -24,11 +24,8 @@ endif
 #
 # Xtensa special hook
 #
-
-HOST_GCC_XTENSA_OVERLAY_TAR = $(BR2_XTENSA_OVERLAY_DIR)/xtensa_$(call qstrip,$(BR2_XTENSA_CORE_NAME)).tar
-
 define HOST_GCC_XTENSA_OVERLAY_EXTRACT
-	tar xf $(HOST_GCC_XTENSA_OVERLAY_TAR) -C $(@D) --strip-components=1 gcc
+	tar xf $(ARCH_XTENSA_OVERLAY_TAR) -C $(@D) --strip-components=1 gcc
 endef
 
 #
@@ -307,7 +304,7 @@ HOST_GCC_COMMON_CCACHE_HASH_FILES += \
 		$(addsuffix /gcc/$(GCC_VERSION)/*.patch,$(call qstrip,$(BR2_GLOBAL_PATCH_DIR))) \
 		$(addsuffix /gcc/*.patch,$(call qstrip,$(BR2_GLOBAL_PATCH_DIR)))))
 ifeq ($(BR2_xtensa),y)
-HOST_GCC_COMMON_CCACHE_HASH_FILES += $(HOST_GCC_XTENSA_OVERLAY_TAR)
+HOST_GCC_COMMON_CCACHE_HASH_FILES += $(ARCH_XTENSA_OVERLAY_TAR)
 endif
 ifeq ($(ARCH),powerpc)
 ifneq ($(BR2_SOFT_FLOAT),)
-- 
2.1.4

^ permalink raw reply related	[flat|nested] 31+ messages in thread

* [Buildroot] [PATCH 06/23] arch/xtensa: add macro to extract the overlay
  2017-03-14 18:30 [Buildroot] [PATCH 00/23] xtensa overlay application rework Max Filippov
                   ` (4 preceding siblings ...)
  2017-03-14 18:30 ` [Buildroot] [PATCH 05/23] package/gcc: " Max Filippov
@ 2017-03-14 18:30 ` Max Filippov
  2017-03-14 18:30 ` [Buildroot] [PATCH 07/23] package/binutils: use macro to extract Xtensa overlay Max Filippov
                   ` (18 subsequent siblings)
  24 siblings, 0 replies; 31+ messages in thread
From: Max Filippov @ 2017-03-14 18:30 UTC (permalink / raw)
  To: buildroot

From: "Yann E. MORIN" <yann.morin.1998@free.fr>

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
---
 arch/arch.mk.xtensa | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/arch/arch.mk.xtensa b/arch/arch.mk.xtensa
index 7c8beb1..2843333 100644
--- a/arch/arch.mk.xtensa
+++ b/arch/arch.mk.xtensa
@@ -13,3 +13,16 @@
 ################################################################################
 ARCH_XTENSA_CORE_NAME = $(call qstrip,$(BR2_XTENSA_CORE_NAME))
 ARCH_XTENSA_OVERLAY_TAR = $(call qstrip,$(BR2_XTENSA_OVERLAY_DIR))/xtensa_$(ARCH_XTENSA_CORE_NAME).tar
+
+################################################################################
+# arch-xtensa-overlay-extract -- extract an extensa overlay
+#
+# argument 1 is the path in which to extract
+# argument 2 is the component to extract, one of: gcc, binutils, gdb
+#
+# Example:
+#   $(call arch-xtensa-overlay-extract,/path/to/overlay.tar,$(@D),gcc)
+################################################################################
+define arch-xtensa-overlay-extract
+	tar xf $(ARCH_XTENSA_OVERLAY_TAR) -C $(1) --strip-components=1 $(2)
+endef
-- 
2.1.4

^ permalink raw reply related	[flat|nested] 31+ messages in thread

* [Buildroot] [PATCH 07/23] package/binutils: use macro to extract Xtensa overlay
  2017-03-14 18:30 [Buildroot] [PATCH 00/23] xtensa overlay application rework Max Filippov
                   ` (5 preceding siblings ...)
  2017-03-14 18:30 ` [Buildroot] [PATCH 06/23] arch/xtensa: add macro to extract the overlay Max Filippov
@ 2017-03-14 18:30 ` Max Filippov
  2017-03-14 18:30 ` [Buildroot] [PATCH 08/23] package/gdb: " Max Filippov
                   ` (17 subsequent siblings)
  24 siblings, 0 replies; 31+ messages in thread
From: Max Filippov @ 2017-03-14 18:30 UTC (permalink / raw)
  To: buildroot

From: "Yann E. MORIN" <yann.morin.1998@free.fr>

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
---
 package/binutils/binutils.mk | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/package/binutils/binutils.mk b/package/binutils/binutils.mk
index 914393e..5ab346c 100644
--- a/package/binutils/binutils.mk
+++ b/package/binutils/binutils.mk
@@ -123,7 +123,7 @@ endif
 
 ifneq ($(ARCH_XTENSA_CORE_NAME),)
 define BINUTILS_XTENSA_PRE_PATCH
-	tar xf $(ARCH_XTENSA_OVERLAY_TAR) -C $(@D) --strip-components=1 binutils
+	$(call arch-xtensa-overlay-extract,$(@D),binutils)
 endef
 BINUTILS_PRE_PATCH_HOOKS += BINUTILS_XTENSA_PRE_PATCH
 HOST_BINUTILS_PRE_PATCH_HOOKS += BINUTILS_XTENSA_PRE_PATCH
-- 
2.1.4

^ permalink raw reply related	[flat|nested] 31+ messages in thread

* [Buildroot] [PATCH 08/23] package/gdb: use macro to extract Xtensa overlay
  2017-03-14 18:30 [Buildroot] [PATCH 00/23] xtensa overlay application rework Max Filippov
                   ` (6 preceding siblings ...)
  2017-03-14 18:30 ` [Buildroot] [PATCH 07/23] package/binutils: use macro to extract Xtensa overlay Max Filippov
@ 2017-03-14 18:30 ` Max Filippov
  2017-03-14 18:30 ` [Buildroot] [PATCH 09/23] package/gcc: " Max Filippov
                   ` (16 subsequent siblings)
  24 siblings, 0 replies; 31+ messages in thread
From: Max Filippov @ 2017-03-14 18:30 UTC (permalink / raw)
  To: buildroot

From: "Yann E. MORIN" <yann.morin.1998@free.fr>

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
---
 package/gdb/gdb.mk | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/package/gdb/gdb.mk b/package/gdb/gdb.mk
index 9f7746d..8e37ade 100644
--- a/package/gdb/gdb.mk
+++ b/package/gdb/gdb.mk
@@ -46,7 +46,7 @@ HOST_GDB_INSTALL_OPTS += MAKEINFO=true install
 # Apply the Xtensa specific patches
 ifneq ($(ARCH_XTENSA_CORE_NAME),)
 define GDB_XTENSA_PRE_PATCH
-	tar xf $(ARCH_XTENSA_OVERLAY_TAR) -C $(@D) --strip-components=1 gdb
+	$(call arch-xtensa-overlay-extract,$(@D),gdb)
 endef
 GDB_PRE_PATCH_HOOKS += GDB_XTENSA_PRE_PATCH
 HOST_GDB_PRE_PATCH_HOOKS += GDB_XTENSA_PRE_PATCH
-- 
2.1.4

^ permalink raw reply related	[flat|nested] 31+ messages in thread

* [Buildroot] [PATCH 09/23] package/gcc: use macro to extract Xtensa overlay
  2017-03-14 18:30 [Buildroot] [PATCH 00/23] xtensa overlay application rework Max Filippov
                   ` (7 preceding siblings ...)
  2017-03-14 18:30 ` [Buildroot] [PATCH 08/23] package/gdb: " Max Filippov
@ 2017-03-14 18:30 ` Max Filippov
  2017-03-14 18:30 ` [Buildroot] [PATCH 10/23] package/binutils: extract Xtensa overlay as post-extract hook Max Filippov
                   ` (15 subsequent siblings)
  24 siblings, 0 replies; 31+ messages in thread
From: Max Filippov @ 2017-03-14 18:30 UTC (permalink / raw)
  To: buildroot

From: "Yann E. MORIN" <yann.morin.1998@free.fr>

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
---
 package/gcc/gcc.mk | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/package/gcc/gcc.mk b/package/gcc/gcc.mk
index e50e1e0..b52f945 100644
--- a/package/gcc/gcc.mk
+++ b/package/gcc/gcc.mk
@@ -25,7 +25,7 @@ endif
 # Xtensa special hook
 #
 define HOST_GCC_XTENSA_OVERLAY_EXTRACT
-	tar xf $(ARCH_XTENSA_OVERLAY_TAR) -C $(@D) --strip-components=1 gcc
+	$(call arch-xtensa-overlay-extract,$(@D),gcc)
 endef
 
 #
-- 
2.1.4

^ permalink raw reply related	[flat|nested] 31+ messages in thread

* [Buildroot] [PATCH 10/23] package/binutils: extract Xtensa overlay as post-extract hook
  2017-03-14 18:30 [Buildroot] [PATCH 00/23] xtensa overlay application rework Max Filippov
                   ` (8 preceding siblings ...)
  2017-03-14 18:30 ` [Buildroot] [PATCH 09/23] package/gcc: " Max Filippov
@ 2017-03-14 18:30 ` Max Filippov
  2017-03-14 18:30 ` [Buildroot] [PATCH 11/23] package/gdb: " Max Filippov
                   ` (14 subsequent siblings)
  24 siblings, 0 replies; 31+ messages in thread
From: Max Filippov @ 2017-03-14 18:30 UTC (permalink / raw)
  To: buildroot

From: "Yann E. MORIN" <yann.morin.1998@free.fr>

... like it is done for gcc.

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
---
 package/binutils/binutils.mk | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/package/binutils/binutils.mk b/package/binutils/binutils.mk
index 5ab346c..7dfe4db 100644
--- a/package/binutils/binutils.mk
+++ b/package/binutils/binutils.mk
@@ -122,11 +122,11 @@ endef
 endif
 
 ifneq ($(ARCH_XTENSA_CORE_NAME),)
-define BINUTILS_XTENSA_PRE_PATCH
+define BINUTILS_XTENSA_OVERLAY_EXTRACT
 	$(call arch-xtensa-overlay-extract,$(@D),binutils)
 endef
-BINUTILS_PRE_PATCH_HOOKS += BINUTILS_XTENSA_PRE_PATCH
-HOST_BINUTILS_PRE_PATCH_HOOKS += BINUTILS_XTENSA_PRE_PATCH
+BINUTILS_POST_EXTRACT_HOOKS += BINUTILS_XTENSA_OVERLAY_EXTRACT
+HOST_BINUTILS_POST_EXTRACT_HOOKS += BINUTILS_XTENSA_OVERLAY_EXTRACT
 endif
 
 ifeq ($(BR2_BINUTILS_ENABLE_LTO),y)
-- 
2.1.4

^ permalink raw reply related	[flat|nested] 31+ messages in thread

* [Buildroot] [PATCH 11/23] package/gdb: extract Xtensa overlay as post-extract hook
  2017-03-14 18:30 [Buildroot] [PATCH 00/23] xtensa overlay application rework Max Filippov
                   ` (9 preceding siblings ...)
  2017-03-14 18:30 ` [Buildroot] [PATCH 10/23] package/binutils: extract Xtensa overlay as post-extract hook Max Filippov
@ 2017-03-14 18:30 ` Max Filippov
  2017-03-14 18:30 ` [Buildroot] [PATCH 12/23] arch/xtensa: add macros to generate hooks Max Filippov
                   ` (13 subsequent siblings)
  24 siblings, 0 replies; 31+ messages in thread
From: Max Filippov @ 2017-03-14 18:30 UTC (permalink / raw)
  To: buildroot

From: "Yann E. MORIN" <yann.morin.1998@free.fr>

... like it is done for gcc.

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
---
 package/gdb/gdb.mk | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/package/gdb/gdb.mk b/package/gdb/gdb.mk
index 8e37ade..e7e2289 100644
--- a/package/gdb/gdb.mk
+++ b/package/gdb/gdb.mk
@@ -45,11 +45,11 @@ HOST_GDB_INSTALL_OPTS += MAKEINFO=true install
 
 # Apply the Xtensa specific patches
 ifneq ($(ARCH_XTENSA_CORE_NAME),)
-define GDB_XTENSA_PRE_PATCH
+define GDB_XTENSA_OVERLAY_EXTRACT
 	$(call arch-xtensa-overlay-extract,$(@D),gdb)
 endef
-GDB_PRE_PATCH_HOOKS += GDB_XTENSA_PRE_PATCH
-HOST_GDB_PRE_PATCH_HOOKS += GDB_XTENSA_PRE_PATCH
+GDB_POST_EXTRACT_HOOKS += GDB_XTENSA_OVERLAY_EXTRACT
+HOST_GDB_POST_EXTRACT_HOOKS += GDB_XTENSA_OVERLAY_EXTRACT
 endif
 
 ifeq ($(GDB_FROM_GIT),y)
-- 
2.1.4

^ permalink raw reply related	[flat|nested] 31+ messages in thread

* [Buildroot] [PATCH 12/23] arch/xtensa: add macros to generate hooks
  2017-03-14 18:30 [Buildroot] [PATCH 00/23] xtensa overlay application rework Max Filippov
                   ` (10 preceding siblings ...)
  2017-03-14 18:30 ` [Buildroot] [PATCH 11/23] package/gdb: " Max Filippov
@ 2017-03-14 18:30 ` Max Filippov
  2017-03-26 19:44   ` Thomas Petazzoni
  2017-03-14 18:30 ` [Buildroot] [PATCH 13/23] package/binutils: use the Xtensa macro generators Max Filippov
                   ` (12 subsequent siblings)
  24 siblings, 1 reply; 31+ messages in thread
From: Max Filippov @ 2017-03-14 18:30 UTC (permalink / raw)
  To: buildroot

From: "Yann E. MORIN" <yann.morin.1998@free.fr>

These macro generators, one for the target variant, one for the host
variant, work like the package macro generators, and generate a
post-extract hook.

Packages that need the Xtensa overlay can then:
  - define <PKG>_ARC_XTENSA_OVERLAY_COMPONENT
  - $(eval ...) the appropriate macro (target or host).

This will allow to keep consistency across all packages that need that
overlay, to avoid them diverging again in the future should we need to
change the way we handle the Xtensa overlay (like, allowing it to be
downloaded).

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
---
 arch/arch.mk.xtensa | 30 ++++++++++++++++++++++++++++++
 1 file changed, 30 insertions(+)

diff --git a/arch/arch.mk.xtensa b/arch/arch.mk.xtensa
index 2843333..0377ceb 100644
--- a/arch/arch.mk.xtensa
+++ b/arch/arch.mk.xtensa
@@ -26,3 +26,33 @@ ARCH_XTENSA_OVERLAY_TAR = $(call qstrip,$(BR2_XTENSA_OVERLAY_DIR))/xtensa_$(ARCH
 define arch-xtensa-overlay-extract
 	tar xf $(ARCH_XTENSA_OVERLAY_TAR) -C $(1) --strip-components=1 $(2)
 endef
+
+################################################################################
+# arch-xtensa-overlay-inner -- generates the make targets needed to extract
+# the xtensa overlay
+#
+# argument 1 is the uppercase package name, including a HOST_ prefix
+#            for host packages
+#
+# Packages that call that macro shall define FOO_ARCH_XTENSA_OVERLAY_COMPONENT
+# and set it to one of the component to extract, one of: binutils, gcc, gdb.
+#
+################################################################################
+define arch-xtensa-overlay-inner
+
+ifneq ($$(ARCH_XTENSA_CORE_NAME),)
+
+define $(1)_XTENSA_OVERLAY_EXTRACT
+	$$(call arch-xtensa-overlay-extract,$$(@D),$$($(1)_ARCH_XTENSA_OVERLAY_COMPONENT))
+endef
+$(1)_POST_EXTRACT_HOOKS += $(1)_XTENSA_OVERLAY_EXTRACT
+
+endif # ARCH_XTENSA_CORE_NAME != ""
+
+endef # arch-xtensa-overlay-inner
+
+################################################################################
+# arch-xtensa-overlay -- the target generator macro for the Xtensa overlay
+################################################################################
+arch-xtensa-overlay = $(call arch-xtensa-overlay-inner,$(call UPPERCASE,$(pkgname)))
+host-arch-xtensa-overlay = $(call arch-xtensa-overlay-inner,HOST_$(call UPPERCASE,$(pkgname)))
-- 
2.1.4

^ permalink raw reply related	[flat|nested] 31+ messages in thread

* [Buildroot] [PATCH 13/23] package/binutils: use the Xtensa macro generators
  2017-03-14 18:30 [Buildroot] [PATCH 00/23] xtensa overlay application rework Max Filippov
                   ` (11 preceding siblings ...)
  2017-03-14 18:30 ` [Buildroot] [PATCH 12/23] arch/xtensa: add macros to generate hooks Max Filippov
@ 2017-03-14 18:30 ` Max Filippov
  2017-03-14 18:30 ` [Buildroot] [PATCH 14/23] package/gdb: " Max Filippov
                   ` (11 subsequent siblings)
  24 siblings, 0 replies; 31+ messages in thread
From: Max Filippov @ 2017-03-14 18:30 UTC (permalink / raw)
  To: buildroot

From: "Yann E. MORIN" <yann.morin.1998@free.fr>

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
---
 package/binutils/binutils.mk | 11 ++++-------
 1 file changed, 4 insertions(+), 7 deletions(-)

diff --git a/package/binutils/binutils.mk b/package/binutils/binutils.mk
index 7dfe4db..a7a8f86 100644
--- a/package/binutils/binutils.mk
+++ b/package/binutils/binutils.mk
@@ -121,13 +121,10 @@ define BINUTILS_INSTALL_TARGET_CMDS
 endef
 endif
 
-ifneq ($(ARCH_XTENSA_CORE_NAME),)
-define BINUTILS_XTENSA_OVERLAY_EXTRACT
-	$(call arch-xtensa-overlay-extract,$(@D),binutils)
-endef
-BINUTILS_POST_EXTRACT_HOOKS += BINUTILS_XTENSA_OVERLAY_EXTRACT
-HOST_BINUTILS_POST_EXTRACT_HOOKS += BINUTILS_XTENSA_OVERLAY_EXTRACT
-endif
+BINUTILS_ARCH_XTENSA_OVERLAY_COMPONENT = binutils
+HOST_BINUTILS_ARCH_XTENSA_OVERLAY_COMPONENT = binutils
+$(eval $(arch-xtensa-overlay))
+$(eval $(host-arch-xtensa-overlay))
 
 ifeq ($(BR2_BINUTILS_ENABLE_LTO),y)
 HOST_BINUTILS_CONF_OPTS += --enable-plugins --enable-lto
-- 
2.1.4

^ permalink raw reply related	[flat|nested] 31+ messages in thread

* [Buildroot] [PATCH 14/23] package/gdb: use the Xtensa macro generators
  2017-03-14 18:30 [Buildroot] [PATCH 00/23] xtensa overlay application rework Max Filippov
                   ` (12 preceding siblings ...)
  2017-03-14 18:30 ` [Buildroot] [PATCH 13/23] package/binutils: use the Xtensa macro generators Max Filippov
@ 2017-03-14 18:30 ` Max Filippov
  2017-03-14 18:30 ` [Buildroot] [PATCH 15/23] package/gcc: " Max Filippov
                   ` (10 subsequent siblings)
  24 siblings, 0 replies; 31+ messages in thread
From: Max Filippov @ 2017-03-14 18:30 UTC (permalink / raw)
  To: buildroot

From: "Yann E. MORIN" <yann.morin.1998@free.fr>

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
---
 package/gdb/gdb.mk | 12 ++++--------
 1 file changed, 4 insertions(+), 8 deletions(-)

diff --git a/package/gdb/gdb.mk b/package/gdb/gdb.mk
index e7e2289..25f7a54 100644
--- a/package/gdb/gdb.mk
+++ b/package/gdb/gdb.mk
@@ -43,14 +43,10 @@ GDB_INSTALL_TARGET_OPTS += MAKEINFO=true DESTDIR=$(TARGET_DIR) install
 HOST_GDB_MAKE_OPTS += MAKEINFO=true
 HOST_GDB_INSTALL_OPTS += MAKEINFO=true install
 
-# Apply the Xtensa specific patches
-ifneq ($(ARCH_XTENSA_CORE_NAME),)
-define GDB_XTENSA_OVERLAY_EXTRACT
-	$(call arch-xtensa-overlay-extract,$(@D),gdb)
-endef
-GDB_POST_EXTRACT_HOOKS += GDB_XTENSA_OVERLAY_EXTRACT
-HOST_GDB_POST_EXTRACT_HOOKS += GDB_XTENSA_OVERLAY_EXTRACT
-endif
+GDB_ARCH_XTENSA_OVERLAY_COMPONENT = gdb
+HOST_GDB_ARCH_XTENSA_OVERLAY_COMPONENT = gdb
+$(eval $(arch-xtensa-overlay))
+$(eval $(host-arch-xtensa-overlay))
 
 ifeq ($(GDB_FROM_GIT),y)
 GDB_DEPENDENCIES += host-flex host-bison
-- 
2.1.4

^ permalink raw reply related	[flat|nested] 31+ messages in thread

* [Buildroot] [PATCH 15/23] package/gcc: use the Xtensa macro generators
  2017-03-14 18:30 [Buildroot] [PATCH 00/23] xtensa overlay application rework Max Filippov
                   ` (13 preceding siblings ...)
  2017-03-14 18:30 ` [Buildroot] [PATCH 14/23] package/gdb: " Max Filippov
@ 2017-03-14 18:30 ` Max Filippov
  2017-03-14 18:30 ` [Buildroot] [PATCH 16/23] arch/xtensa: get rid of an intermediate blind kconfig option Max Filippov
                   ` (9 subsequent siblings)
  24 siblings, 0 replies; 31+ messages in thread
From: Max Filippov @ 2017-03-14 18:30 UTC (permalink / raw)
  To: buildroot

From: "Yann E. MORIN" <yann.morin.1998@free.fr>

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
---
 package/gcc/gcc-final/gcc-final.mk     | 5 ++---
 package/gcc/gcc-initial/gcc-initial.mk | 5 ++---
 package/gcc/gcc.mk                     | 7 -------
 3 files changed, 4 insertions(+), 13 deletions(-)

diff --git a/package/gcc/gcc-final/gcc-final.mk b/package/gcc/gcc-final/gcc-final.mk
index a15d837..8eaabb4 100644
--- a/package/gcc/gcc-final/gcc-final.mk
+++ b/package/gcc/gcc-final/gcc-final.mk
@@ -15,9 +15,8 @@ HOST_GCC_FINAL_DEPENDENCIES = \
 HOST_GCC_FINAL_EXCLUDES = $(HOST_GCC_EXCLUDES)
 HOST_GCC_FINAL_POST_EXTRACT_HOOKS += HOST_GCC_FAKE_TESTSUITE
 
-ifneq ($(ARCH_XTENSA_CORE_NAME),)
-HOST_GCC_FINAL_POST_EXTRACT_HOOKS += HOST_GCC_XTENSA_OVERLAY_EXTRACT
-endif
+HOST_GCC_FINAL_ARCH_XTENSA_OVERLAY_COMPONENT = gcc
+$(eval $(host-arch-xtensa-overlay))
 
 HOST_GCC_FINAL_POST_PATCH_HOOKS += HOST_GCC_APPLY_PATCHES
 
diff --git a/package/gcc/gcc-initial/gcc-initial.mk b/package/gcc/gcc-initial/gcc-initial.mk
index e1a2241..48492d7 100644
--- a/package/gcc/gcc-initial/gcc-initial.mk
+++ b/package/gcc/gcc-initial/gcc-initial.mk
@@ -13,9 +13,8 @@ HOST_GCC_INITIAL_DEPENDENCIES = $(HOST_GCC_COMMON_DEPENDENCIES)
 HOST_GCC_INITIAL_EXCLUDES = $(HOST_GCC_EXCLUDES)
 HOST_GCC_INITIAL_POST_EXTRACT_HOOKS += HOST_GCC_FAKE_TESTSUITE
 
-ifneq ($(ARCH_XTENSA_CORE_NAME),)
-HOST_GCC_INITIAL_POST_EXTRACT_HOOKS += HOST_GCC_XTENSA_OVERLAY_EXTRACT
-endif
+HOST_GCC_INITIAL_ARCH_XTENSA_OVERLAY_COMPONENT = gcc
+$(eval $(host-arch-xtensa-overlay))
 
 HOST_GCC_INITIAL_POST_PATCH_HOOKS += HOST_GCC_APPLY_PATCHES
 
diff --git a/package/gcc/gcc.mk b/package/gcc/gcc.mk
index b52f945..fc54247 100644
--- a/package/gcc/gcc.mk
+++ b/package/gcc/gcc.mk
@@ -22,13 +22,6 @@ GCC_SOURCE = gcc-$(GCC_VERSION).tar.bz2
 endif
 
 #
-# Xtensa special hook
-#
-define HOST_GCC_XTENSA_OVERLAY_EXTRACT
-	$(call arch-xtensa-overlay-extract,$(@D),gcc)
-endef
-
-#
 # Apply patches
 #
 
-- 
2.1.4

^ permalink raw reply related	[flat|nested] 31+ messages in thread

* [Buildroot] [PATCH 16/23] arch/xtensa: get rid of an intermediate blind kconfig option
  2017-03-14 18:30 [Buildroot] [PATCH 00/23] xtensa overlay application rework Max Filippov
                   ` (14 preceding siblings ...)
  2017-03-14 18:30 ` [Buildroot] [PATCH 15/23] package/gcc: " Max Filippov
@ 2017-03-14 18:30 ` Max Filippov
  2017-03-14 18:30 ` [Buildroot] [PATCH 17/23] arch/xtensa: allow specifying path to tarball file Max Filippov
                   ` (8 subsequent siblings)
  24 siblings, 0 replies; 31+ messages in thread
From: Max Filippov @ 2017-03-14 18:30 UTC (permalink / raw)
  To: buildroot

From: "Yann E. MORIN" <yann.morin.1998@free.fr>

It is not needed to have an intermediate blind option, we can just
hide the prompt behind the same dependency as the non-blind symbol.

Update our qemu-xtensa defconfig acordingly (note: it was using
different values for both options, which is not possible; the blind
option was just set to the non-blind one in the .config).

Also remove an unneeded empty default for the BR2_XTENSA_OVERLAY_DIR
string option (strings are empty by default).

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Cc: Gustavo Zacarias <gustavo@zacarias.com.ar>
Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
---
 Config.in.legacy                         | 11 +++++++++++
 arch/Config.in.xtensa                    | 16 ++++++----------
 configs/qemu_xtensa_lx60_defconfig       |  3 +--
 configs/qemu_xtensa_lx60_nommu_defconfig |  3 +--
 4 files changed, 19 insertions(+), 14 deletions(-)

diff --git a/Config.in.legacy b/Config.in.legacy
index 090e60a..2261e0c 100644
--- a/Config.in.legacy
+++ b/Config.in.legacy
@@ -194,6 +194,17 @@ config BR2_GLIBC_VERSION_2_22
 	  Support for glibc version 2.22 has been removed. The current
 	  default version has been selected instead.
 
+config BR2_XTENSA_CUSTOM_NAME
+	string "The BR2_XTENSA_CUSTOM_NAME option has been renamed"
+	help
+	  The BR2_XTENSA_CUSTOM_NAME option has been renamed
+	  to BR2_XTENSA_CORE_NAME.
+
+config BR2_XTENSA_CUSTOM_NAME_WRAP
+	bool
+	default y if BR2_XTENSA_CUSTOM_NAME != ""
+	select BR2_LEGACY
+
 ###############################################################################
 comment "Legacy options removed in 2017.02"
 
diff --git a/arch/Config.in.xtensa b/arch/Config.in.xtensa
index fcb3dc9..263af80 100644
--- a/arch/Config.in.xtensa
+++ b/arch/Config.in.xtensa
@@ -2,30 +2,26 @@ choice
 	prompt "Target Architecture Variant"
 	depends on BR2_xtensa
 	default BR2_xtensa_fsf
+
 config BR2_XTENSA_CUSTOM
 	select BR2_ARCH_HAS_MMU_OPTIONAL
 	bool "Custom Xtensa processor configuration"
+
 config BR2_xtensa_fsf
 	select BR2_ARCH_HAS_MMU_MANDATORY
 	bool "fsf - Default configuration"
+
 endchoice
 
-config BR2_XTENSA_CUSTOM_NAME
-	string "Custom Xtensa processor configuration name"
-	depends on BR2_XTENSA_CUSTOM
-	default ""
+config BR2_XTENSA_CORE_NAME
+	string "Custom Xtensa processor configuration name" if BR2_XTENSA_CUSTOM
+	default BR2_XTENSA_CUSTOM_NAME if BR2_XTENSA_CUSTOM_NAME != "" # legacy
 	help
 	  Name given to a custom Xtensa processor configuration.
 
-config BR2_XTENSA_CORE_NAME
-	string
-	default BR2_XTENSA_CUSTOM_NAME	if BR2_XTENSA_CUSTOM
-	default ""			if BR2_xtensa_fsf
-
 config BR2_XTENSA_OVERLAY_DIR
 	string "Overlay directory for custom configuration"
 	depends on BR2_XTENSA_CUSTOM
-	default ""
 	help
 	  Provide the directory path that contains the overlay file
 	  for a custom processor configuration. The path is relative
diff --git a/configs/qemu_xtensa_lx60_defconfig b/configs/qemu_xtensa_lx60_defconfig
index 54d844d..5c0cf8c 100644
--- a/configs/qemu_xtensa_lx60_defconfig
+++ b/configs/qemu_xtensa_lx60_defconfig
@@ -1,8 +1,7 @@
 # Architecture
 BR2_xtensa=y
 BR2_XTENSA_CUSTOM=y
-BR2_XTENSA_CUSTOM_NAME="dc233c"
-BR2_XTENSA_CORE_NAME="lx60"
+BR2_XTENSA_CORE_NAME="dc233c"
 BR2_XTENSA_OVERLAY_DIR="board/qemu/xtensa-lx60"
 
 # Patches
diff --git a/configs/qemu_xtensa_lx60_nommu_defconfig b/configs/qemu_xtensa_lx60_nommu_defconfig
index 256cbee..97e5c98 100644
--- a/configs/qemu_xtensa_lx60_nommu_defconfig
+++ b/configs/qemu_xtensa_lx60_nommu_defconfig
@@ -1,8 +1,7 @@
 # Architecture
 BR2_xtensa=y
 BR2_XTENSA_CUSTOM=y
-BR2_XTENSA_CUSTOM_NAME="dc233c"
-BR2_XTENSA_CORE_NAME="lx60"
+BR2_XTENSA_CORE_NAME="dc233c"
 BR2_XTENSA_OVERLAY_DIR="board/qemu/xtensa-lx60"
 
 # Toolchain
-- 
2.1.4

^ permalink raw reply related	[flat|nested] 31+ messages in thread

* [Buildroot] [PATCH 17/23] arch/xtensa: allow specifying path to tarball file
  2017-03-14 18:30 [Buildroot] [PATCH 00/23] xtensa overlay application rework Max Filippov
                   ` (15 preceding siblings ...)
  2017-03-14 18:30 ` [Buildroot] [PATCH 16/23] arch/xtensa: get rid of an intermediate blind kconfig option Max Filippov
@ 2017-03-14 18:30 ` Max Filippov
  2017-03-14 18:30 ` [Buildroot] [PATCH 18/23] arch/xtensa: accept the overlay to be compressed Max Filippov
                   ` (7 subsequent siblings)
  24 siblings, 0 replies; 31+ messages in thread
From: Max Filippov @ 2017-03-14 18:30 UTC (permalink / raw)
  To: buildroot

From: "Yann E. MORIN" <yann.morin.1998@free.fr>

currently, specifying a custom Xtrensa core is done with two variables:
  - the core name
  - the directory containing the overlay tarball

However, the core name only serves to construct the tarball name, and is
not used whatsoever to configure any of the toolchain components
(binutils, gcc or gdb), except through the files that are overlayed in
their respective source trees.

This has two main drawbacks:
  - the overlay file must be named after the core,
  - the tarball can not be compressed.

Furthermore, it also makes it extremely complex to implement a download
of that tarball.

So, those two variables can be squeezed into a single variable, that is
the complete path of the overlay tarball.

Update the qemu-xtensa defconfig accordingly.

Note: we do not add a legacy entry for BR2_XTENSA_CORE_NAME, since it
was previously a blind option in the last release, and there's been no
release since we removed BR2_XTENSA_CUSTOM_NAME. So, we just update the
legacy comments for BR2_XTENSA_CUSTOM_NAME, since that's all the user
could have seen in any of our releases so far.

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Cc: Gustavo Zacarias <gustavo@zacarias.com.ar>
Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
---
 Config.in.legacy                         | 18 +++++++++++++++---
 arch/Config.in.xtensa                    | 19 ++++++++-----------
 arch/arch.mk.xtensa                      | 21 +++++++++------------
 configs/qemu_xtensa_lx60_defconfig       |  3 +--
 configs/qemu_xtensa_lx60_nommu_defconfig |  3 +--
 5 files changed, 34 insertions(+), 30 deletions(-)

diff --git a/Config.in.legacy b/Config.in.legacy
index 2261e0c..db6853e 100644
--- a/Config.in.legacy
+++ b/Config.in.legacy
@@ -194,11 +194,23 @@ config BR2_GLIBC_VERSION_2_22
 	  Support for glibc version 2.22 has been removed. The current
 	  default version has been selected instead.
 
+config BR2_XTENSA_OVERLAY_DIR
+	string "The BR2_XTENSA_OVERLAY_DIR option has been removed"
+	help
+	  The BR2_XTENSA_OVERLAY_DIR has been removed in favour of
+	  BR2_XTENSA_OVERLAY_FILE. You must now pass the cpmplete
+	  path to the overlay file, not to the directory containing
+	  it.
+
+config BR2_XTENSA_OVERLAY_DIR_WRAP
+	bool
+	default y if BR2_XTENSA_OVERLAY_DIR != ""
+	select BR2_LEGACY
+
 config BR2_XTENSA_CUSTOM_NAME
-	string "The BR2_XTENSA_CUSTOM_NAME option has been renamed"
+	string "The BR2_XTENSA_CUSTOM_NAME option has been removed"
 	help
-	  The BR2_XTENSA_CUSTOM_NAME option has been renamed
-	  to BR2_XTENSA_CORE_NAME.
+	  The BR2_XTENSA_CUSTOM_NAME option has been removed.
 
 config BR2_XTENSA_CUSTOM_NAME_WRAP
 	bool
diff --git a/arch/Config.in.xtensa b/arch/Config.in.xtensa
index 263af80..a1494fa 100644
--- a/arch/Config.in.xtensa
+++ b/arch/Config.in.xtensa
@@ -13,24 +13,21 @@ config BR2_xtensa_fsf
 
 endchoice
 
-config BR2_XTENSA_CORE_NAME
-	string "Custom Xtensa processor configuration name" if BR2_XTENSA_CUSTOM
-	default BR2_XTENSA_CUSTOM_NAME if BR2_XTENSA_CUSTOM_NAME != "" # legacy
-	help
-	  Name given to a custom Xtensa processor configuration.
-
-config BR2_XTENSA_OVERLAY_DIR
-	string "Overlay directory for custom configuration"
+config BR2_XTENSA_OVERLAY_FILE
+	string "Overlay file for custom configuration"
 	depends on BR2_XTENSA_CUSTOM
 	help
-	  Provide the directory path that contains the overlay file
-	  for a custom processor configuration. The path is relative
-	  to the top directory of buildroot.
+	  Enter the path to the overlay tarball for a custom processor
+	  configuration.
+
 	  These overlay files are tar packages with updated configuration
 	  files for various toolchain packages and Xtensa processor
 	  configurations. They are provided by the processor vendor or
 	  directly from Tensilica.
 
+	  The path can be either absolute, or relative to the top directory
+	  of buildroot.
+
 choice
 	prompt "Target Architecture Endianness"
 	depends on BR2_XTENSA_CUSTOM
diff --git a/arch/arch.mk.xtensa b/arch/arch.mk.xtensa
index 0377ceb..12c2d4e 100644
--- a/arch/arch.mk.xtensa
+++ b/arch/arch.mk.xtensa
@@ -1,18 +1,15 @@
 ################################################################################
-# Those two variables can be used by packages that need to extract the overlay.
+# This variable can be used by packages that need to extract the overlay.
 #
-# ARCH_XTENSA_CORE_NAME   is the name of the Xtensa core; empty if none or the
-#                         standard 'fsf' core.
-# ARCH_XTENSA_OVERLAY_TAR is the path to the overlay tarball; only valid when
-#                         ARCH_XTENSA_CORE_NAME is not empty.
+# ARCH_XTENSA_OVERLAY_FILE is the path to the overlay tarball; empty if not
+#                          using any overlay
 #
 # Example:
-#   ifneq ($(ARCH_XTENSA_CORE_NAME),)
-#       tar xf $(ARCH_XTENSA_OVERLAY_TAR) -C $(@D) --strip-components=1 gcc
+#   ifneq ($(ARCH_XTENSA_OVERLAY_FILE),)
+#       tar xf $(ARCH_XTENSA_OVERLAY_FILE) -C $(@D) --strip-components=1 gcc
 #   endif
 ################################################################################
-ARCH_XTENSA_CORE_NAME = $(call qstrip,$(BR2_XTENSA_CORE_NAME))
-ARCH_XTENSA_OVERLAY_TAR = $(call qstrip,$(BR2_XTENSA_OVERLAY_DIR))/xtensa_$(ARCH_XTENSA_CORE_NAME).tar
+ARCH_XTENSA_OVERLAY_FILE = $(call qstrip,$(BR2_XTENSA_OVERLAY_FILE))
 
 ################################################################################
 # arch-xtensa-overlay-extract -- extract an extensa overlay
@@ -24,7 +21,7 @@ ARCH_XTENSA_OVERLAY_TAR = $(call qstrip,$(BR2_XTENSA_OVERLAY_DIR))/xtensa_$(ARCH
 #   $(call arch-xtensa-overlay-extract,/path/to/overlay.tar,$(@D),gcc)
 ################################################################################
 define arch-xtensa-overlay-extract
-	tar xf $(ARCH_XTENSA_OVERLAY_TAR) -C $(1) --strip-components=1 $(2)
+	tar xf $(ARCH_XTENSA_OVERLAY_FILE) -C $(1) --strip-components=1 $(2)
 endef
 
 ################################################################################
@@ -40,14 +37,14 @@ endef
 ################################################################################
 define arch-xtensa-overlay-inner
 
-ifneq ($$(ARCH_XTENSA_CORE_NAME),)
+ifneq ($$(ARCH_XTENSA_OVERLAY_FILE),)
 
 define $(1)_XTENSA_OVERLAY_EXTRACT
 	$$(call arch-xtensa-overlay-extract,$$(@D),$$($(1)_ARCH_XTENSA_OVERLAY_COMPONENT))
 endef
 $(1)_POST_EXTRACT_HOOKS += $(1)_XTENSA_OVERLAY_EXTRACT
 
-endif # ARCH_XTENSA_CORE_NAME != ""
+endif # ARCH_XTENSA_OVERLAY_FILE != ""
 
 endef # arch-xtensa-overlay-inner
 
diff --git a/configs/qemu_xtensa_lx60_defconfig b/configs/qemu_xtensa_lx60_defconfig
index 5c0cf8c..f17aa48 100644
--- a/configs/qemu_xtensa_lx60_defconfig
+++ b/configs/qemu_xtensa_lx60_defconfig
@@ -1,8 +1,7 @@
 # Architecture
 BR2_xtensa=y
 BR2_XTENSA_CUSTOM=y
-BR2_XTENSA_CORE_NAME="dc233c"
-BR2_XTENSA_OVERLAY_DIR="board/qemu/xtensa-lx60"
+BR2_XTENSA_OVERLAY_FILE="board/qemu/xtensa-lx60/xtensa_dc233c.tar"
 
 # Patches
 BR2_GLOBAL_PATCH_DIR="board/qemu/xtensa-lx60"
diff --git a/configs/qemu_xtensa_lx60_nommu_defconfig b/configs/qemu_xtensa_lx60_nommu_defconfig
index 97e5c98..68af710 100644
--- a/configs/qemu_xtensa_lx60_nommu_defconfig
+++ b/configs/qemu_xtensa_lx60_nommu_defconfig
@@ -1,8 +1,7 @@
 # Architecture
 BR2_xtensa=y
 BR2_XTENSA_CUSTOM=y
-BR2_XTENSA_CORE_NAME="dc233c"
-BR2_XTENSA_OVERLAY_DIR="board/qemu/xtensa-lx60"
+BR2_XTENSA_OVERLAY_FILE="board/qemu/xtensa-lx60/xtensa_dc233c.tar"
 
 # Toolchain
 BR2_PACKAGE_HOST_ELF2FLT=y
-- 
2.1.4

^ permalink raw reply related	[flat|nested] 31+ messages in thread

* [Buildroot] [PATCH 18/23] arch/xtensa: accept the overlay to be compressed
  2017-03-14 18:30 [Buildroot] [PATCH 00/23] xtensa overlay application rework Max Filippov
                   ` (16 preceding siblings ...)
  2017-03-14 18:30 ` [Buildroot] [PATCH 17/23] arch/xtensa: allow specifying path to tarball file Max Filippov
@ 2017-03-14 18:30 ` Max Filippov
  2017-03-14 18:30 ` [Buildroot] [PATCH 19/23] arch/xtensa: accept the overlay to be an URL Max Filippov
                   ` (6 subsequent siblings)
  24 siblings, 0 replies; 31+ messages in thread
From: Max Filippov @ 2017-03-14 18:30 UTC (permalink / raw)
  To: buildroot

From: "Yann E. MORIN" <yann.morin.1998@free.fr>

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
---
 arch/arch.mk.xtensa | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/arch/arch.mk.xtensa b/arch/arch.mk.xtensa
index 12c2d4e..a346e31 100644
--- a/arch/arch.mk.xtensa
+++ b/arch/arch.mk.xtensa
@@ -21,7 +21,9 @@ ARCH_XTENSA_OVERLAY_FILE = $(call qstrip,$(BR2_XTENSA_OVERLAY_FILE))
 #   $(call arch-xtensa-overlay-extract,/path/to/overlay.tar,$(@D),gcc)
 ################################################################################
 define arch-xtensa-overlay-extract
-	tar xf $(ARCH_XTENSA_OVERLAY_FILE) -C $(1) --strip-components=1 $(2)
+	$(call suitable-extractor,$(ARCH_XTENSA_OVERLAY_FILE)) \
+		$(ARCH_XTENSA_OVERLAY_FILE) | \
+	$(TAR) --strip-components=1 -C $(1) $(TAR_OPTIONS) - $(2)
 endef
 
 ################################################################################
-- 
2.1.4

^ permalink raw reply related	[flat|nested] 31+ messages in thread

* [Buildroot] [PATCH 19/23] arch/xtensa: accept the overlay to be an URL
  2017-03-14 18:30 [Buildroot] [PATCH 00/23] xtensa overlay application rework Max Filippov
                   ` (17 preceding siblings ...)
  2017-03-14 18:30 ` [Buildroot] [PATCH 18/23] arch/xtensa: accept the overlay to be compressed Max Filippov
@ 2017-03-14 18:30 ` Max Filippov
  2017-03-14 18:30 ` [Buildroot] [PATCH 20/23] configs/qemu-xtensa: use overlay from the github repository Max Filippov
                   ` (5 subsequent siblings)
  24 siblings, 0 replies; 31+ messages in thread
From: Max Filippov @ 2017-03-14 18:30 UTC (permalink / raw)
  To: buildroot

From: "Yann E. MORIN" <yann.morin.1998@free.fr>

It can be interesting to get the overlay from a remote server, rather
than expect it to be present locally.

Since that file can be any URL, we can't know its hash, so we just
exclude it.

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
---
 arch/arch.mk.xtensa | 14 +++++++++++++-
 1 file changed, 13 insertions(+), 1 deletion(-)

diff --git a/arch/arch.mk.xtensa b/arch/arch.mk.xtensa
index a346e31..9edbcfb 100644
--- a/arch/arch.mk.xtensa
+++ b/arch/arch.mk.xtensa
@@ -9,7 +9,15 @@
 #       tar xf $(ARCH_XTENSA_OVERLAY_FILE) -C $(@D) --strip-components=1 gcc
 #   endif
 ################################################################################
-ARCH_XTENSA_OVERLAY_FILE = $(call qstrip,$(BR2_XTENSA_OVERLAY_FILE))
+BR_ARCH_XTENSA_OVERLAY_FILE = $(call qstrip,$(BR2_XTENSA_OVERLAY_FILE))
+ifneq ($(filter http://% https://% ftp://% scp://%,$(BR_ARCH_XTENSA_OVERLAY_FILE)),)
+ARCH_XTENSA_OVERLAY_URL = $(BR_ARCH_XTENSA_OVERLAY_FILE)
+ARCH_XTENSA_OVERLAY_FILE = $(BR2_DL_DIR)/$(notdir $(BR_ARCH_XTENSA_OVERLAY_FILE))
+# Do not check that file, we can't know its hash
+BR_NO_CHECK_HASH_FOR += $(notdir $(ARCH_XTENSA_OVERLAY_URL))
+else
+ARCH_XTENSA_OVERLAY_FILE = $(BR_ARCH_XTENSA_OVERLAY_FILE)
+endif
 
 ################################################################################
 # arch-xtensa-overlay-extract -- extract an extensa overlay
@@ -41,6 +49,10 @@ define arch-xtensa-overlay-inner
 
 ifneq ($$(ARCH_XTENSA_OVERLAY_FILE),)
 
+# No need for a conditional here, the variable will be enpty when
+# there is no URL to download.
+$(1)_EXTRA_DOWNLOADS += $$(ARCH_XTENSA_OVERLAY_URL)
+
 define $(1)_XTENSA_OVERLAY_EXTRACT
 	$$(call arch-xtensa-overlay-extract,$$(@D),$$($(1)_ARCH_XTENSA_OVERLAY_COMPONENT))
 endef
-- 
2.1.4

^ permalink raw reply related	[flat|nested] 31+ messages in thread

* [Buildroot] [PATCH 20/23] configs/qemu-xtensa: use overlay from the github repository
  2017-03-14 18:30 [Buildroot] [PATCH 00/23] xtensa overlay application rework Max Filippov
                   ` (18 preceding siblings ...)
  2017-03-14 18:30 ` [Buildroot] [PATCH 19/23] arch/xtensa: accept the overlay to be an URL Max Filippov
@ 2017-03-14 18:30 ` Max Filippov
  2017-03-14 18:30 ` [Buildroot] [PATCH 21/23] linux: apply xtensa overlay Max Filippov
                   ` (4 subsequent siblings)
  24 siblings, 0 replies; 31+ messages in thread
From: Max Filippov @ 2017-03-14 18:30 UTC (permalink / raw)
  To: buildroot

From: "Yann E. MORIN" <yann.morin.1998@free.fr>

Rather than bundle the overlay with us, directly fetch it from its
upstream location.

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Cc: Gustavo Zacarias <gustavo@zacarias.com.ar>
Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
---
 board/qemu/xtensa-lx60/xtensa_dc233c.tar | Bin 808960 -> 0 bytes
 configs/qemu_xtensa_lx60_defconfig       |   2 +-
 configs/qemu_xtensa_lx60_nommu_defconfig |   2 +-
 3 files changed, 2 insertions(+), 2 deletions(-)
 delete mode 100644 board/qemu/xtensa-lx60/xtensa_dc233c.tar

diff --git a/board/qemu/xtensa-lx60/xtensa_dc233c.tar b/board/qemu/xtensa-lx60/xtensa_dc233c.tar
deleted file mode 100644
index 1a97d7a81daf9586b7778c80bcc1fda0c6e75cf1..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 808960
zcmeFad2=MkkteEuw{1Q|JwCG;QbSQF6dC|`Mq>t|K?!gAfC1p4mC0arB)UtgOO=I2
zks9r1f9`QdW`xI;S<SIsj%*s0;psp3pL?7cnK7BKo_6y^{o7yl_umoxclPq-uh_q*
zC)U4s4gUMp@c88DWO#HoJRbe(XgE3=z5LbSWq&4V%}@1iyd4aF^_S`L<K(ZCsV=eq
z3YFW^|80IvWc(Mi-ckSqoEZO;(aHaf{~?k{#eeeHTLNUn|K-`y|Be5_<G<fkt9tyK
z<$CtCsOqo0ZDFEe82{4~yWKw%{lIW^a`qA`JGA>Kb#{Du2JQdp+356FgQG;8Eb;%t
z+yCGGdhjEQ`e3?VJ<i`hZO6O$di9%nQ%&cO^XcIF?qV=sJ+8M)R`At}7lXmza=rO!
zJAeOSH~4(|#o+kpX!M)oqv6Tm9`a|tm`}%p>(!Kt-c;M=yskm#U|tVCRNHFu)8PGf
zyxLW>F9(m?sv4{x2h$JZ?fdG>!EQYmuYMYAs%;H7tS7tid^KOaN6ax;xcLc%cOO7g
zy?)$1kGB=b&j#bVUQg#^P&t^br%%gjwPV%}9_NtAgU@##Dpc{=ow(_<FBsIU8ZW>(
zP*@FQ(cpQ$`>=l64YpOi+s>!R#+M*8T|CW%B~oHBU(N*%YG8!a=)zMCuAsGF4xld0
zAMxLc`L}tREavrxFVULW904XzI}on%`V`oMzrms3uD64_S}ah>92{UyYa5vi0HGG3
z3ak)}G4$sT>!s}y(DnGVT>&r<1oq9=KpzABOEujIMd-rgda+nPgPWKQvpM=+|4$b2
zdng at G)*mb87mxjFy#t$B09Z(vDLmAosQxepCnlBPubQF7Ksa8Nu7Rgd6BvZ8c5{fv
zX1!&oO_zBx-T&cgaQE)p`yVcDuOKrAH@EM;zkYS~YVg^`9sK_6%fS!V_kVcz-TeS0
zZZF>6|8el{+rh=#KMwx$`t2*m`qhs&w^w&}gLk)s>o+&AudiNxIk<j%`TDz8*KdD6
z_y%r$`|f`5`uffFJ?OoEH$Y6G?fMGt`xbq8b9H<92he}<&GqZ+`#*j;`1bn#Evo$%
z^j-{ZE^hCyFTZ<zaXYyA?)K*0-4z(|3N*jHe*5h$0A0PgdVBvBYPx<4mj_qh!|%b}
zA1+?MW`Gypfg88X%FA~*f4sf^{U7cJe|Y!$)fHU)<_he)_~!K$M|=B6)N}dz;`+^(
zgI5=CE`E<@-VWY@<+n^y*!aUAuGl4jynz2*-e13ai~L-^dwYKiKN&yw?{4qa-9KF4
zU41#YxV^qZa=yKN2MEY6+=TqS#arKAaYe{H+K$Gk7=aY>_Z<+REP8cy at fy@Yz}~V#
zDg4!7@ax~cc=7-8x>gN78$)9<tEP*uK76LH{=4X;=Joii5C5UBf2ObhW)6+Zb~R=<
zzWApX(8k^URBx;IwSa(ZgUlW9J05CQ_8@N>@Za^H{yg~I;P2qg-v^(){^siUkX%Rb
zzrjC{CcJj__7z+kTGuY$efRbrt{$6LFD@@%zeCZ}#??Pu<JB|s>YF3DG_r1gGsH_H
zOX?UeomiJfc<H5i>E{0G`- at kvZlU1ZzWvQLntuMZDa{3kN0wHI at 3+^#zkY>Q4bLq5
zWf59;d~|NAx_*0qb$k2W4P)Zix(kXfUte9IO~=QU=a-5*+p(KlX6&);+qIUq^n;c+
zQ2VaXV3<;xR>>k}@QD>SS%kD6pIGdFe|7oI#oZMajI4XEZZ1*N at XYc8uA-9RnMDX(
z#qbQzEXLvL30^(7%!I2i+0`c6DZ6SJ2eN1EsukX=A207NzQ5vuu at QL*b8~2;@)ET2
zcxWT at 614PqXruEIwDx%DvH&eU9$E<{Y(uM$hgP;;-P|$ezP9CW?ih1lH)R=fUt6&U
z4UD<38xgr<%zfR6$Q@(u>n1;!7tmOtb#^6u1ysY;;nz(DWDPqWS^9r~{^s2eB6H5H
zn|RUPJ at gTv@ysIbj at 1n7(#;*S#){UP>$^*y;TBnVnP<1f7FNf%*k7QcW6R7}-`rkZ
z{O1L$-Y1qWUcyj at rxv)lhb8}s1tjiaC8t&rT^l&I1)_xAb8H2Jmnh5aSo8Y-8v4!G
zj2<iGudcrN?)N&77M-^jcdR}6+Vbi8{`EJP-(nm8wPp7!ecg)T<&CoI_}Jp at PBcK=
zA+!CtxPSNN@*d5#lkWZx5QA4Y_qWUufFG(p1_mpTC-*!b!C)wP@sEFlK5|w)&R5mo
z?RRe;?*4dpdj-Ae*^#>Z=HkbPyPK=a>x<V9PzFufOREer{FWDthA(&rd9z(lD;Pz?
zXbd_>nEdh1xY1K$k<n2yNvofft+HKtSk<vFsrK8x%sV0bn%$e2jH)ifzTwCFyFb2V
zwbc|h8geU?P_Z#qwhFk2jZy0&wneRr*c7!cVoTJzhz(KeBDO<~i at afVn8gbmrtt!Y
zdAz`3A}?^5$qO8&@&bpsqUE;Q0%(j`!`-~d+U@2=)@(N~vR1o!ku}=(#UC$aRkwPB
z8yK_R%Lc-#qBnQny#daxihgtV!#k{Ijf*%|hpSe?+}uGY)>0rkh*ltF|6mvVFkj8q
z&)<ye3WIN^DKEK$Md=+BS&jA0-6hNqV6xJ-2)Y`$Xn85dtTwI~wAvSWr(=<4wn?_I
z?0VW)+vy4eU$n|@X;<$qU%gq+&~b}wyO%O4F*+$5)##%vqKqEOc>`K%-C%T2_6<hw
z<SNjefN8JYH(5ckdM1nUSKmNm-i)Cfmty~H<I9pZ>9VBVNMO&0b<%PjFQRDcVw<G5
zclS5Hzx!X;uUO5rJXS@lCcBHU=35o%)y4gVN1-liDbz(Rg*W$Nz-5nZjn3Ng((I~j
zc6C>6#mMN6QT|65R^44Zupav1`tAXWVe$;C298b|dvWNaPhY&KR!>Vc_2eDujLkE-
zp4Y4k#W^PbeRHY*=82_$LvN{nsBThU;{Buk%{xZ at TXc!~0``U0uVd at i$oh3+{d#Hr
zI<<bC8NYZZVxsUXCKA75qVX#xBEMpy@+&4Xzha_8Pi5EwU6l39)DLqBtIX7Ub7$%l
z{g0N`J&$?qyEo=9=xxlO*w2{1v4_#Wv2W48pp11Y`ikyNn%7uAqA#i*#JmK3hyIDZ
zhVcv5IP@>*C-e{1L+DGaYp{PBafZ%7mtD(Vz_=u5Df*IZ_?uTQkD6C53?R`f7*}NT
zuJ4lVdh-fz(2c9CHnLHKzNi~<;~F;K`loD!4MXK6!!CKr$Vt{lYdx%WwtpJ;U#n)<
z$WDFHNML=@$Z_408n^3<#_jr|aXW8qwQ;hU)mKylt1pR`RbP;8Dx24^wYqQT)dJS>
zafZWJpzXQH6RZlpU%^r`lY7`b+%48Sn3UAJhxZjekbpJooory?@@n$*2y4#u>Wde+
znkR1`?B><O4wm?i{td3mAD{C-{{7zvCtnQyYw-E!c;lar{ycyy$8hOC{$p@_{srE#
zt#+`a&Tss;7yo$iLQIuDuIDb(YBWtOIGRR%Ie3DF$I<cN<9Hzq<iD9AmT4ft%s3Zj
zV4*bccLQbVKM(%*(f;v>nQwSw+9){?6xN5M5X?%V&@}Df6gD`-xa&AKINTnL!{KQn
zho)(V=deNI at R(w8y*WM at kFpxY)@IwbPe9~RgUaJ0n#$q9sDz-VRqOS}H11PyX*Z8h
zr--_}-W(l_O6XlusWgo{G?g}uWJ0cb;t+DL*-`Tra)jnYb=0P5-7yIG7|IbFVE8&}
z6aw?(I_l-&DCA?EcnVF^4ou;+K_OX}YqK}(cf4qK)I7p4PBTK?N?e{X at gq#jo9<{=
zjSxM=Z1B#<#mY}PT$Q8dfUbrzdYk}b{ezAAt(Yk9s3=O0W1An#n}bKO-ToNUp~N8C
zy2t@D>=+vL6vR=xM-U<TIyNK?>pBd|*SvrKnyL;}qcXgtMkl+zXdL=z91WvsG;QmS
zL@<E$tV4>#^9G4$B#Dc4Ps!N9 at MLEh*CCC(Y3p!+ at _aB7hkTqIKR_`}J2-{SsT<w9
zZOvNK<rt-1qs15{zD8TNb;x5}jc)Nswv5{k^TXw1>YT$iu0tkcD)kih+S`5g at Puj}
z>(Op)&e*$5N=I+aT{w>Jt()d`$0pdorsIL`x<Muy?p-OgRuhJ&<Gxp|ixw2nz7E-x
zwov`{qn()Knu0M67@ki0W-@hL->~k`JT{V&tl-A1xPKz;iE+e(l!kQ&C$iO81{Sf6
z6}kS|RFn1CL3yJAn*5S0_|Lin at 0!W>VCeXzm{!Cx*|4s=yo{RQoHQypx$b3*gbqL?
zZz<zPl at 03-Ok~nbvF<M;fwksJwipRTKXPtZ*Bz0nl_9(CW<yD@0GUkoJ`5`AybnJJ
zYSeAA^PWuRCz{JnM?vjIa>z%- at pZdlU3V!N)kqH8Gaa(?25UbNmAx!2+wOG7ePnZB
z59Kk59c#;H5sP`LVVp0Q!@jl>;M49#J1yol(GMJ(=5-ht(PNMg9UmVb6RQOneBM*N
z0Pfsu@^p!q9yE;WkWA5OoRFO!a at lCE>HP#&C*6C;S2Tq91RY<4N^%In>d~a9#0(9`
z+6{ImsXRP39r~ptv!mUXiA7e9X3YqO^R%aE;-Z7Iondt~YMTgVn`vHmu at NgG!&8z=
z)@<8dDoN-1 at exeyi%(y&vz6p1K3n#6NGNZ)hk=&+@iA%hh_w#Ycf&1m0!CVx6cOEE
z!@BOsj2!GWt2+IVs~#V4&LW>K#ZqY-*Bz75Q<f%|^j^<;Tpf_i)K#*Eb)SMwyU}DV
zzW4bInA=yA+3JCY7MJY-MQ8{T(JI*PbVq({qhM3d8#Cpo++Gwr1#FBBLxEfzE|69W
zqx|E4bn`YzJvQArcp&XK7Ea|;o44)z-i9&lI+-3yITDWVUTlXB9?V8PDy@|bb)n9x
zK3r#YEL)cN&{)=W7n#Vezg^9Uj>=d_=y}!G<}s>$ORp5BJKYig2|B8jAT~zrUGA)D
zj~?tfML%I|IP?n*B%dE1pOX{r_PQSV?7-ZO-}OV*UqCDmzfqt$Oz`wmy~NTOa2#Nh
zmep8B)l2DgbjQ|k=-~CT-6%TN6s1>zYH91jwD9+mmfyYa5j%7sKS8Cm$@k0zx(_6*
zzV<b41Y;XZ!*)j*G0kpRcktTPY%1x+H{06&+qXhGKgBN8#J<1DXx|M at F{7WL;YiET
zrTJEFm&4-r<9qRC5AiZdyZd$Ak-FXA@}|4i0bd`^ddJw&_wr2)^xHs5k4uc5G+j3_
z?R`lyhSBe)HLU9}CUOCZ8pI^+IfTaL)O-i5Yc{*-|5_$?M``RF9%=)0<h%mIs%x+l
zY?%B at Y_wY@{x@LNeDA93T<xGO#_H5Gu{&0?n`G}4rfqMxiP{ULU5+n$q4eyR-=elm
z>@G|DYEc^|cbll)^iwSp{~NH{Y_7T-4?AAK<d3D}U%-SG>a1yEhpfiDgn8EJ`*B@@
zYEc{ZcAKcZP}*gS8ueal5~bF=P~Gm0at!vZeG?JOGY#vy%gw0AdTDQJ!RSQqTR8Oa
zsXh7arqOM<)Lj5dIx@#3SkCLIxf>2g%xOlbsj+<TwxJ0P-3}7YP8%k^3X%0-?m*!@
z>#uf(`i;KA*>LF>TRY{rgsPoMy%r8!%y4#FJAV=3`~}y}&cnH#%y-8+o;`1h8K!P7
zYMR$wJ&PQMv{vBBu4{KtHk04JZ<=>-HtkUW`TG4&2TRIi8coxF$rSDnMqzTjHcdM?
zg=uwqzk7I|Y=<u&py%t0P-xa0kJI^}4tT|mJ7T)#v9ddEMTm!I)JOu}x2l@#lAm@G
zW}o*-Zux6h9xFQ}7p9ExP_pBfub?x6L$fNgu64Nz=2&Ea;Tt|%<xdo2hTh31L^yov
zE)0<~W4jmgZ0C_99jdy(JNmXRa$i>4^{$sXejyP>xBgEKYPVCWUrbOx!L-V*T?ebF
zjjt<qT}>U6WN1gA;f;U%;IOd68W;2QA#I${vbWnh(g&lRrh5mBvSXI6mz%|WI^R9;
zqo8~-A6(qu-(G+7-Tl?WcW>eBTR76}fBX+PrQSGtsU^bCVuF+7U#$nLHGB?y^`0L?
z<#?vlFk`$u3M@Q$(8RzPKHU-na#92WFUH4!oEL$>+Z8b&@TDGlBuDc#JdS}`9wI8s
z?Xb+1I8Vy>ill2)<jIJ6VxD#Rh{w7;%=uZD-(Fw6e)X`!W8nCo_?0m0m;M1WRXBHE
zNy5)_{j1i0GP#NUn;mS&5th1SrT^sLpfG-K*pYqw7C5HJEHRAO>g({W0P{y>|1ygf
z<_~xS)cjdnw;5j5CX{gto=~6_fbWKarQzV*5`x`i_U{jNIqZ$F%Hb)w{{6H56Yvab
z;TJm)le4xp>|!gP`ZoCJwf?a)<k(uCQDmC&tgrv1|J)mY8fzM@t86l^ugYnMzQQ_V
z{qq5uZ|j%AE0h_j2fxg`e1I0lxDlEH>z9!{AUQIQJA7JAck}fMPWO9)0}tINuRns&
zcTlPiUzb;EasIkicw4=n*Sl&vc$_cPLGETv+*a?gNY+I-A^zLz*H;hxbWi!~%`MYt
z9{{iJT!DVHSX_`s3<iH6e0FgQ2mO9FhW{sZfo67mF&uOF4<rSI-Y}u1A at oKForvRe
z*;$a+2=q9Hqv`EKAk|5VqFD0+rzeU#%!BE#-`xCgeTxTtvx9!&fZ{I)|1$p<0cDb-
z?w9nib9KMHxV(B0N*FIMU}$iOCryr5yTNWe(M&@DJAzUb494@5>EPGDl_x~<11jbD
zfrHC;aEj-{{Wq^4Q10PKnGL5nivN(aqdm)~qdiNcqdluUM|+l?M|*Zw=h2?k$)i21
zj7NKxt4I5<`R!x=4{IQg_EY|A#{a4KKacDm=3m>3Nt_cP)`Jhicwsdh at 5~rE7XQKt
z<Lvjj_!m|p0-ij@!~<M;vV1v*mqIuaeveT6nH-M-Uqqd#ciSh{W(?MwYCB%d8npv*
z_{BS3a#t-M)|=G~mLQf7Z*Cus9%j`PPG28<F3uhOHGG3(!$-U9&%wX`ZU7?$wM=V`
zMoGoh%BL7^8&uovdW(A5A8_vK=bv*tc3vq=S^gh5iWO$KxN<BDAlbhd{0^_<jr{8G
z#J~SMV5h%`F|*LFN1HxNYu at 4SPY51V)zrf4r`-elq@ts2zT!n%8n1wd+KmxbWb{GH
zFpYTp?EYl%ui!HtHM{%55MWAh6T4hZ{eqqTYEjWpml`&GyFYe>!;T`wlU6MqWo+0S
z2%bLwyea(~q=hd6d@=ZE_ at M}tNuckL^t)zHzASiRW5xY>OcE$r<(u+b6-gVc3swe*
z_$vX)in<`f4FhML>Z(*>XL%VBU4^7v5yvdUBpJuwz?HJWz9QX3yHyGE2J5)G!X3u-
zbRJP4#7bo)C=E#Qv<4gFYBUqno=7LT0tu~uN#|G+@*1o)K%uO)>>_g-4~jPTFsX#q
z_a#?Tc56fswcRWjwsXp9F2&;^8YvXlH=|#s5LQ4tSXwsKmy26xoug;?QGF0-_EY5U
zfp~2G<99G9G@ndHcP0So?oYdM=jc;7H0&`x!%yMRagPoie+q|2Jvub{6b`vt?r!SP
z$-y0h#(En!ycCkEVOHY`Q6Re`<7c}+GL^6n>2o!2WCKPRM*Y{o(7;EL*lf$5$<&bA
zoQr$?4X@9q=5<AaX^r$2tukC-Zd!8qv`7pqtU-lwQ>tf+dVUfYMj@#@P_Bsr8Aju$
zbW9H`OeIii%HoK^jF%~z=~YC$3=0sX>6G%;v_`sxHyHP`cv*73co{dPdWJ)iGiS at l
zC%4K0E~xBpT$jP(Qfx$LPUOzi81Rgbhna7mfBqYsz!~>|gYYH+%u&C<|KBQu9a5}}
zmBPvnP7h%`%<3j=wfHYK7(0VSEk3i9HML=S>InIaXbU|wG%hRF3`@+Q8w`jsq@)SQ
zkZ0{dr1mkz8JsJe#>AQnDyx+@{JNx9|B}A2dO2dTHdH{Vnytf91=LISO>up@)%F-S
zrsgugHKLMgXseDkppBo>K_<>v6e-RoYNsNn#q^s`yirspppBOjGF;ol<<gj_DcN@5
zRFRCGbwPT^!pEYgikT`XZ>_c}2}T5)>ipSsS(PhevfPdcrb3dwsdQB($_D$2^c(H2
zpXa;jhr#Ez#1~Kk>+bCTPseqIGdl6#|77daEH)w+j{a>h*;eDfqPoFAhz}id`=Lwn
z*d=-Fk{r1tM=r?|m*j~{@}*1irAzYEC3)(SJab8&xg^hBlIJeTuU(Q~yClah$+1gv
z;*y-WB&ROPsY`O^lAO6DE0<(tNzSUr at zY}G5`44-{{g8d8y%I&vR<TAKv=_%ZFZ!n
zs${DE$r5RR`CHaK-R8*Bc9R1o at H|15v)a~faAdJEBgfr{=0@U3r&``B1Ei#Mhy})M
zYb*h>sgaV*cj!*7pzD^VDdufxT7tfIrX}cWW?F*2R;DHBYh+r2zBZ;M=xbtHg3cBO
z+KrZ=vw?xepe5*RUxr5xNoV_V?2>f0FDEWZXZv#QlJvAMEr0yYiz$jpol)JMVn#Ir
z=gC+{mkYG2NY+K`g13bcs;p5B+=<UDZ3W&&#xN$!?f7QqNlj*&?TlfAvO3h#h<hAO
z4L+h(Ny<TiA9p*0&u|^Gp~gmQ-3MA5Lo(3Z7?OeZ#*hp&IEG}P#W5rUO^zWMXmbq7
zK%-+whFTp%G}P=EqM>%j5DhgvhA7?g7=pp3hs&n6JvbMOet>B{y_2mDS0I}l{mX7|
z)FfD_fKn}rHp^iezp4feDeVcrHKH-GkyT65fHr<gU(ir}GhAi!UFi~QAMM2nEu0mX
zz5A&{V=0P(fT$wP_6SO>=!oCaCqClT at sWyTgrqp`A!r3k3g>zk8!TZ2<KId=(*TPH
z=^ncUb6om?Pg`wCSY?CvL446Opp%m^ZsnI-bK;HPNh5yzw{)--KcPs)Plz|ye_N<I
z-bKgH@WGCs={5_KHeXE;q^V-KFXJaAjb&g*?SmM|^iTEhWDf`R`8PUQ)r`ryYalC<
zHlQ!+f*nJds#=wZp_Ydrva{&S)>4b-)IxT5WEhnlt$JwNpnPl%z*LD9N_{uJumg{p
zSY2!_gIe$@vBdS{s6LJhwxh_e%Mj{ccKlcyYN&uxV`B&GAjbV%SPjLVBrB4}eW_vO
zw?@QJ8*T-#0d4%0{-L<O8T~Sa94)67&T?jd{4%QIF&HN7i5V-i;-;=h-;DONp^n8*
z?5E>B2w2q$B3r>{2Y|>**-(?uKx{~rPwlYU<TNak6sYhjMa=c4G}KMllH`lFx;MvP
zJgqjOp+$>O)E#XsF=H)%OE-n-s+uZI%v-*1QUItZi+2dwrcE=x>fT&$BV#LlXhqgC
zz~V)^E2An^pqI8F52f8_N(o71N;|uR!{s)ks4=S)ZAVg;NCV8@(lr*zAq%7|W{RL3
zHv1k8elw7lr4|`Gd0pY=_!kj7i6imVSV0yj1FQ?uL5!U&KouCfhG$Fxua2CFri&6f
z#l!XHc;nu>)tGZ|LFI&Uk6)M2`j>Q!*Fkj8&;W&o<iA1;t(k@)i8rSE6A>?sj}Q%a
zl$(Yn(jo1NjFTyZk3i+z0wraPY`7GU7UM~^h#JfYNoBlpN)*T-89${{qNPNOO)XHY
zo?Nr$(!A9i*jPh1Qv+(u at HQfVhA9ZrbXKuoS|i;x{FFho#Eb{oeE+=+V*@nBvnO$H
zM6V}Bl at H1}St3Je{+7-ev6RJ3kr_<B4S{_VM#`W{D~z&0S&`#yL?9)O@=47X&6uzl
zn-`?JW`PW*RLTAJMpKGO<P-;)DewkzL^!3WB2tA@mPiB4-_k!3PS*Fy@>V=`<ph%$
z3s^hlSjGygr31;!@j4=`5=Z*ha$3<LC8bxavZ*R69fA(g7PP|3=&@?4xG&X1@q$Q9
zT&1XTM7bzSr0?c$E3WGO6e%G&u$x_3DkH1k?LqgX+fqu|lM-2Zb3|mNsPwMowlY9U
zO0QI8WdU;thpGJaDn8DK(Hwh?2S=-lpr(@&JjF*`j2NEAuhB7C<&1JusgX8V7p(Z=
zUKtFLl8{Wm);_+KhRr7NRHpyZLa3KrxAt$^I#Tmm-5n8NC951%O|oQAvtnJ5&RagC
z7AWBF^dSA51alS7?qyr}DM5xW0>o5a6w^*f|M04GTK+A4Vhu4Ld8?bzEw;qNzFjBp
zFe{}JO$`{{7!fNIQ)Q?Hs(wgE&=PqYI-mux#trT1p%hFtzm5q)?Fd1w0>J;0R`Y%k
z%@B7f?%7s#eVb}2wDOevsbg5zXo_>g7j2+!@OZC`O`S-8HW#;gX00^EUU)gzH3sS6
zH3-n`Pr$&NQT!`Y!jI?|qX5x88STcKg7=8B{c(>FyYZ*sHKJ^PdV7lqVqfqUQMNz5
zy+j256ud-~?a#{|TZ5N}ZVzB=5w-K1$+dfPc3F1k>PNdn(YHgHlEbb>_9a>(wI5`6
z`kPVJeOR#eRppqrLi&K#s5_<ce0atBmzEEbjg%f{w~2Z|2E~-A$^*PALFM1ldfla~
zd!a~4;kqFE(5{Svl1dE%-WU-BiHzzk2b5dN0_g&Z%G==D=UM<KG4M`KD-2RP)d%%$
zV>SzR*7C-ZZQ~B*gmSGRAj9OiEZt at 9oQX+ILyo6ibH%VBgc$fpRDDR<8UZzgmBlI9
z+RzaZ_QoBO1|Lnzs>XfNe>LW7lrz^MMH-j+ZN`*W(krvRAur7faPlCg)G*x|@77!U
zyDeYBTywR9&nj)EJZCu8Z@{|E6k`0pVdBjK6A!Z8t;bOy at ST`M5S$L4CV8=$M%1nc
zt~bT-IK8Zbp7&s|P~5%6av?M&Q{uRgn!C4IE(UgQv(((Z&2pKmdz+=^?rm0!F)2oW
zj#d0$`8Qjl8xw_;;zSlwqe)HiEH3RE04WY70h~XuWbL7?5gtf at Zafg5-xFUSgK?qw
z9H9IhnfitueCbd1U-0og at mbBsNBC6lmxJF7@jHAl at EQz$yuW&Tck%G<=IZw1?W>3D
zyN8?0+pE_X_t)QFaS7M=%#>;|DEx9jOY!v;OJAdVRT_-zj57J%LYCX`H6-N>^l9)F
zNYfYLlFJl%H)*dDGR=kW6&|UNC*oF*6J-H>?K2Xd-A7_`2`}(?yH&7T`}>aU>x8aA
z!bc#l at 9wW|E!wTm(y1@^DE6Dhgh913sQx7w^y~2!m;XM_>p6TAGTSzIiqNhS*KfbS
zzPtYBHBlpqsN5-Yp>mqv?)+4-JyHg-ud=4uR6wEp at RBzl<yW70PFr<zywx=mtUgI(
zvcPJ&D(babF3CEr)-4+Q%I(3pmTRA0tL4J0)9T@|nIhN_C*^Gc+j5Q5Yqwlrb=r*&
zCwAMPl<}RmU2?h7Ynogub(jV{3w*su*#(Wf(MuCO8^4e2TZD+WE$1J9Nrx66jo}Lf
zZl8sS7aF_0Glh&lV*O@!l5TSeFEsY{rzZ5N1>NoiVg^P`DQOj#Fs%~f6)~H}p|s-C
zoMFp>kbEm&nQjm0h*XhxlJ+Sf(?qMG6)%e_{OD8_H<IvDCWQW!4gVB_FJCNnR8$P0
zZnN=+l{W<c>`oG$OL%=}#e3cICWFJ9SyXKm`o+?y&v&DhN;iORBDn!XD~SU5Qj3Z{
zYzs}HpS=(hqJRmJLC9*UJ8CZTat|BBb29i`!s|9G#y1ue^(nzucZW at 2Z$*%1!1jF8
z2>2PB0%!(q?x!+9%6Lr>yUdjdu!TPsUv5yR at TH6wpY4QJ=m`~oZ=t5Jxr7&)FP|#t
zRs!VpnOrLw6Cq+6CVNd$WOtk5qP>8?FLrIcT%V<Al`<~-Wtr`OylQ#C954pnESas;
zD+mDW_M}`8*jCqIg#hliU66NJE{KIA6$Eh#j5*fL^Fc1(Qa(r-R~TfO?Ss5(`G9>8
zZfsOeu-_fTK`JH#p at dvss6yKfb=mR*Hl`^T;BU(TVibe>*(jE=+_cRaJJw at kX=Yp<
z2-8 at q8pDJyZemsFCmb`R*saHS=+HrMHD)ZH+^(l49o8D4+=b{E3@-NyY_F&Pc$!Rb
z*~&Tn|L*O7zJ2$@TaM&f#8unr+@?aYH}95u#{biyY^4{oz*=H4Yx%6WeNMEO<d0se
z0-K1XDmZ3I8O6?AQcFJhF^^bT1*7P$i3#{4za5%Z!;=rWP}R59^g<O_O)OL`w|bTb
zT*DmaP*&3uG_abOox$;1CfB3GSuHo#d0Pg#tIyGnLHDhj>gZ+~?;`s_Cg4p=C^dSe
z*tWV56n0Lj_(VI3+pVbn9?QLM+K+J+xVj7uS-$5D{**d4<|M6ch?<7W;cP?19!fO|
ztpSxN6Hk1b&hqo{%t1h&vvN#I#YD;w?#buUPWNP?<(@pjPdO$pSP|@N<mjlPc$S?0
zpL$3O12;W3#~;!@L)d(%3pwbURQd04ufq7{{c9G)J=R*wP_0jU?!Yts<cXUi%{-DT
zC8?fZdnEb%Oo`jmHQzlOJx*A|sh+egaMY((566Cnq;<b&tbBMZ*(%LyjoKp#XNf9V
zJXe&q0%kF$IGj8hl3y6w)oPK~mfF+~2b2c1Yd7J{(tzwv8?p<?;z6fMnw@$|>xO!y
z?ZzJg{Y#yOdMAa46FpN^^HiTCJk?pOmEB+m9=#g0{PcqX0r$Xpslj{T%vKWzk8lm&
zW8>g4uk<}XD~O*1lIW@u#vfsMJsbde_2|vRtTDKQlV)kF+3~Z=7=9RS;0}WrJgt_N
z-Wi!0vV|RSt8C#1-UhTAf!zh8YE9Mn+Jc8cYZ6LIT2pIU(l~=xIjKe|5Y_;bYS03r
z&HJq(i^nH+im$qnpXuvimz{5F9{IZFM`g+bU*#q=F?!)gtjddQ4GZ>v;Q(G<!=-w5
z4y(KX+oa5L*b-#^g#8u979q1_yxrM9*(gS9ZGc!t$is-WwAf={Y6L^!nUQ&gKMgXk
zpf~IQS*ZzKW(Uj43-Z~ld6#%#>bUe|UPE1$+3W&8(^jhImn<vs5<U)Vs%kicrd!(C
z1$>fY-iR0RVT}<%@vy_Z#GXNz7ucZQ(k@oVTSEL)Xz7kfBU1|9!KGXC8jKLlpU}74
zKdltvD|v<kR_StY-nwLmW=m_9>@;oliyv97f3hVr{ga(-tADaHhviT3VQ1pNZ_5gp
zkeS7*Enqx4O2lB_EKwtS!&3{B4Xcep7FkmRT(CmM1gy~G6)Qd1Iq}j-c96RKA%>j>
z9*!%mpB8^OGBir9HbI;kFID4E&XmQ6dB&~vn4b@?#BE&`C-Pu;DGLr-s`=sYs?>x5
zQE@=LDuyfk%y#37I3(V at V#~0D;*Da9UjVTZgC7?!rPYD)>VmDB9~v(U)v at vF0zWuj
z{<M<ass~mTQMn1WnS7X?l6jqVFRUBk2Qp6=<GSXjfIE*Vhjn+oNBWvcKY;Ez|7-hL
zJ>W6x)y4L`d64?w2Y2 at u_g4=$cemGXe-HCYequQq@^|<@S$Os1<r`MGgyYQZ!mFFh
zp}LRRYaizxvTGJHOkv|u>NYlM^((L}->~U;vB2kiO}b>%RmZI$q-jzDJ4;r$mPf#+
z5F_yEm|b4HetrFxdzp;_FCUdSd0yt at c_1x2aS>i?D{=9p%*B&KxVWd16$XPnrYS-n
zAWz|RXm1p02MbdafDhpwk)*VHh3N?|efI1g+lEXA57x0^r!vdY+Gyo<Q|ixOHqM2~
zl1lL8K8Twa&w;BSB0H%c-d!o{WG}&c)*t4p+4}jLF&vhLU2nU0<pOs*n6)X1WCxe)
zkM)M)pX<gRM4IPfJ`<NBw&8!9*{1&}k!;6yy?ge%k5e^Xh4PhCKHl7s$w7>}8th<p
zr2Ae`z5^@9GJ#6cJQRuqhbuDG%$i^)x-Ajl(X3?Y_CG$apU7s=8s>TpYgb@$h}sD&
z?|%3uKX8lDapkWXvegN-43ZDoYCw&GRg*%isB{YCf>o!IlcA2{#B8gi-&8+c$_caT
zlX0 at Gw-3*(vzkC>6_+u|#5X{?a#m)i+0dviH>=HmPGqACkb|(1HHq9OvXRw~H9!u+
zMwX#EiNVJ0uJ@|KQTpWLPK`bb^Ei at _PEZa*NMU`6BqS>jb%o(5han`()bVWgu%ar;
zmJKCRM<H_bl9f+j)4Ug>#2MxJgQLmM at O>lSauziL!I|=DKJH>Yp3TWcinwW{?2hH2
zi9a38w+m*sbfDtQN*=8MZXiSWqJ=AMan5;`?=pO8i>NP<9i2?-YIr@jiitQ@ux3=L
zM9ho$_G$aD`v7Og&o;X)RReTu5gAikGu2Su|KaxP;?>RlZEEbEV~yv at n$Tp~n&XYn
z>bh8~NHjiiRjrvT><M}*qx#tv7`2>J2~l7bKG!d at tbUqMrs-U5l0sFWqMi*Nc>mHY
zs^^(&`(j6kicph8zMn!BN45t#wI*O089)EJG;AACxP6%QL<NyB>twoK)w`!2ZQErA
z)6DAb8T%QYQV}hepD~t0;!$owyR4H4ALSnTv16Vj<7c at B|B}^YBl@0zr`wqV;A+1k
zTV<;0)4gCb5nvOGH+9)|Dpi_X+5hsiB%YFpFqNs_`_sUTL$c|M;pr1ec3u~VGX^*s
zIp1fntNumWH9GFitdjz|M#tpH)*nT=+phroye~!yY+A308fn&;W-}qSO%_5^qv_Y*
zT>YM at H|KYJiTU-_+gHA#%Xi<sy;p_l6&)D)Ij#}ug_57ihh(3I6E+bix^{o95xaEr
zvjm{YXz)G`7sZ;<ppw@d2qkC8s(Mf5M_jL)jLN_L?FWXEZq_7*rxDFm>ViaZKL-!z
zdNZq_KLN8=<n)DCjU2j)p6}K%eNB#41-pP?ySqPq&Dxq=H&8RxliXe0=6497oX9-b
z)1BYAG1dJU{$c*Ot0~H<rmDm(4jkiH)^x9C`hRI_EYhle-Olz}H$>^x3;Etf)v&yH
zE*3-$gV(TB<xT11#oIsywR1bpHcPYJG#TprdtI6yi)}tv8n$Ir0ZTuvretdTcz^dt
zv4cJ<JGS+FK{aCBD|3z@pL-QFVGNY2$v1cAb~wo=pPk&?nS1KZURIWyJIb2(T3f4{
zh2Qa)L|i(_J&@OL?_XbifAyNhIqMNJ?z&i1t65wqlJi=rr$|@RzN|#TJw<UIl&O#M
zAZw)&cO1ldkQHL3KFWhE2o~n)`e{Y>W4cP`<q-!Uz0j)!`N59#qZEMh!)RR17Er8`
zXeaa2Ez-%XY+wl&4pyv_SvIhYoX}JH(tJeqR20>!PJXIHc~GW4%7gqwi}D~V#4OFC
zV~_=bS%kCDs711 at Mh&%75s-7->=;LxU!*<8{B|qWsQt<0Vf3SX%L=^I9^+dU0A|**
zT26P7gWzO-a99)zkQIKUC>9`_qQ!jI<Gy(|bc{vFCMnv7Y?feW!sGn?d`3R4F6`|z
z2303|eZK_5rOgPo$youjF+Q2A*gQyAhdp*b8sn3?x*^vy3o{p#)6V_(o$_a=cnsks
z%Hs%cj|%KH7FW4kV{w(KH5P11J!>qk`_vkX>pp9Z1 at BJoim|7RAv~-77s}%Zcll>7
zYPrfK;jXe6!d>^p6OMN$6OOHCwVC$Wa5D8Y>B>p0NX=|i%(V-xH)fN4#||vc_w4$8
z2;Z|STAc4$X at yno5WZ&_$8vr at t;Zj$Uh`f;^pyKQUfx}Ne^u~dB$ofu$o|HNm4r9|
z5BYUL8X4pvE9F>ykPrvpA<Ib77m$0H3kR6cCL9Nbm<4^oasER*(HBJcUeXuz?t6az
zV_<sB{R6~3Kj(SHjPO5;UZcC|E&jYOD9!(99`fsegy^*m<UC{r%V?-0@*ykbEQkZ}
zkY%Lk3r68KA&X|Ez9;{0E=R?EL4@!5^<Xm{_16z_-?IWE2JR8QXQh==-*eovj58YQ
z2>-L_wIF)pfcFKZ`Oh2b2p;n5fP^>z4_U!78tMohvQo~1H~<e>MvBJzq~E?E^ohuV
zdBI6>Ul8GYem&Ssd-pv*|IxT!=LNm{o}cr)fr{`yi(aEI=#2y37nJ6IG!OZ8KtlA|
z267&<f@L(+5&4jnau&n^c*rtR^aU@&Z9*2!N_|iM-(0>d?h7J(&#woY>C67+1>E<n
zz_8>*<9h82diOm)=XnDa;eQsrMqkhy2fQyR&Hrc~^6P+v=&21bdB_Tu(NIU^LsrUJ
z5C`BP%Sh2!lb?z!e_n9fUwc^a*(LG3Aj0?jda#-H?t6azqjA0V1-<*8pYyzdits;+
zUZXGQjRW2Wmgavn5BYUKLiE}OavrjRWi-?g`H+=z7Q_K~$TCv&1!v(lA&X|Ez9;{0
zE(<=DDf)s4-}CFiW_s3NKgfO03Jgn5G_Kdapm*Q%bDlR)5&mb<YxD)Zalre6()^F+
zA- at hth@RR2lZUKe84YzrK4hhw1#ti#vW(=7bsh2iJd0+fz9;{0?n?JjY+`)RuLr2U
zXWz2|!~235-?P$6sqfkMEaOB{Mm#6XqE@Nz&G*vh#hW_9_mZ6NZ@<J{@qURI-?P$6
z<b3bGXBj7wGU9niNzV87Z0zQ)^tsrkj_|!C=X>`(D=;D{BYe+FE2X}-wvNX=%Q%tq
z5$nEL)GGD8`ChvIzo{d9FUk4do`2lj6+i!q at jWZ8M9%l_dzNt`DI?amN^-upwa%Nn
z(sj;F9pQUP&iC$nR$xR at M);nUR!V(uZ5 at w$mT at BIBj)j0)GGD8`Chu7v#BF|FUk4d
z*0XNziq|t^e9uZNk at LO#o at E?M%Kh{s9Cot}ujl6Hy at co~_kX<n{^HfE+roW5(#YVt
zc77d@5C`BPD_AU9rIA4%vQo~1H~<e>Mq<5~!JCUc)(NJ*AOBy$OY&uPA<p;gdT<Ee
zv-3aB_pG$S+&_fxS;mRJU^;&4^(ba|H=INCll$<_z~#kvcULO^?QcsMA6CoGUgbfs
zfh>nO07=;uC7y?@d=wqU!ICA*NUSu=c|Gm(<6>NYKbi36`tFjS#+99`k?t4j at 7w+C
zS`g`eR(4?(I85}j%#+FA=O<Or{b5hfJ~8<VKc>RX>#rj?jQd5&9})em?2^gffAq7=
z!{py==Y4(~o~iGu;Y<Ej7CQK`n)djGQ4^snH|^ox_g9zSTo{AFWD;<rUo;8XU7SSd
zpM>n1E=>$Jby<}O>$*hfpM*3MmrrosB()H*WpfQ=Rwkc3jKe(Osa?ijlt at b&FlI#V
zvO1(O^XXz-*AL6_6bTwr9M!G)nC2*lhbA<YG#8hAH6$zdg>z&x?{{wblkz*c=~2i%
z`!*v2x7;iHyUAZGZh+jkZ$#V(-^#-_oAvA(1dWJW_YIF3IEEb)xwMA10YQY0a<4dc
z;9XqsO1%4Im2UhHS?h|tBVyNQwFBpR58VO@^p1j-&#b|u1_MZJvoR$|DLS^5^&w+s
za?kY at FsPt+PD^<;XBPL%$^&tJMP#NV4;$E`OyqK8D-E}$Yk?8KIN<dGXARNVLO}$u
zv*HPlvsybwb;R<At2J0|OIMyEfZbGc;C!khfZbGc;C!mdi4UJexT!9DyJHyv?53In
z=TjX4?53In=TjZAv)@g1;Y$U}2w*qWg**CVfZbGc;B2bL)9GUEA5h5dKP!i@f#UjO
z`Z?q^xx2vyvPc&S^~bo76$R`+B3&rd-<t~}&>zUNdvyz$9A&LP#)XnV$GA|aKgNZU
zK*zXHsJ}NCwvR*#>2<F31OmO3(fVj%vs;lz2b-s`xXR@zEUq$jmIzWV$DLBKI9k|s
zpZfTu>%P{pH at 0HykdjuB9*wk$bnn?JI$;w_O#N1oe!-(vr1!zMiu88jW|8qWY^%s`
zq4922>n^{A#!mg#T|Nu1SMM%gy;;vHMoCsxdLGYr{!X_b(V1d8(^Y1*gL!kO($!Vi
zO1t!W2z}jrwX3$<rwu_s at u)*%^uq-(admt9-OatK70FcK$OX)-s|X&ldmI7K4++L*
zwss3<Gn7|JI78D#6?4jK2}c~_zb8vLHo|mYjVFuB-==g at r8q`EJYmATz4+#}-a46E
zrDCZl$ryog2r95{B~yWuiiE7ls-HH-A*jeQbF!_*fAv?4`EsfITR8@hPlut9Pg}Bb
zg(DXbV|BO%CafaePfj!L;VLk;CPy6QK4J?vW0s5~mSMB1lLb)_P-1xX>YLlEi~qbR
zTmg^gAuFA5(4rs?z(adn(HL|jXDl{a$^-9nG}&8bH8>W;0Z2k4Wy8g1mZc==bnkU%
zIgbNC^hr|b{&HnxFj)#~)M0q&vqr at vOJR*V3`u>~sBy&etI|HIuRY76k1Bk0D4O30
z9tvv|P~B(Ca-pAOcH8_K9Y_R8g*EChB=uRNdOb^8H2?i(Qt4|T%E;dPsDtp(Yai8r
zjq2@%A>RCoWa+0y&HJB6DTsdB=Ic)8QOd~vYLtRF01sIM3bwuzoe$aF&>?xqGLo&Z
zavmZYk1VP!h+gxdaO at _66~ROH*iAtkfQPJL8TBH9hpd#dAP&GomXSJXV^`d>=x)LE
z$ww!TAXr-w%SmB9>Gwed>q`wzvI3}+IhK>GbZo&KC{MDC#iX89lc)E6fA7Qq>4%S3
zSKoa1d+M7fufBOJ_PJ!Iy5U5B<1qu|AWUIhveykXQ`z;*a3aW5R^nnUGe8c)6dLMd
zD$5DhrA*gPtBAc9S)nih`eEq$^4)iDOLw0{GLT(u=NzCP1{%*e?EEn3$%-HAOCssX
z%0L6))6$b=y-x2%^|2z}GLp~HvVzb=>4zwuDzC4;zj|G`nTzF1Bq4=$ilZEckgVA0
z{Ej3fD-W9}han`(R7~c6zjBJ&`yrtC+on;DXIF{-94Gr2$x3$ph+-ux*|1)GVpg*3
zUVzc?eUXiSyOMnMzD#{T)r8Czd($}Px;<hk%BH$s-jw=&c#EYbtAW@)&WP9Btj&MP
zdx@BCiWA#2%vn3=@S=wA4T%H1k%A4EZO_eJ%o{1L`>b7jZGo$zBN2dS`nw8ko|9vV
zJKL7anD41&rJ+(!rOVA7xl at wZJlJS@lD)^#$ux4llhxlD0R1p<*};T3mVxXH5CHu!
z(8vM1W*hWm#ScdmvGip1%?7}yr6<dJk>1PAcw6<k2N^;jF!~`0(&Wv}#qCw$E at W+H
za1pYkE*+4Hc9(|ltLRt2va&|xd~DWqfN_YdK{M^frvs|Y3KsFuHLH!YG5V#d@G-os
zU=dUlSFpaee95-Pw~MlatT8KC1XaZq>@ZaIUcn+h`%+xN`Z`cpW|e-+J$W#UV|7`<
zBB&^?V27ci_Z}>Qs^SWE7^- at yVDssC`hk2w*Z&&g6RcC5 at AW4bl2clMFV<7yO-Q-6
zh6yb@aQPx6T5z%->eY%O6T0eKbB&m<K8BYVeKd3t2sGf6k+7Ig_munmjaRe1kXc}6
zNHX^f_LDhXM>*|^d6Cl$_LDh1`;={t0H3dj4|AH_cHiU}7JTXue7Y7#k?;vyoZ04)
zYH)h&_=NYLvg0#N_+)8V&!!Q3ow{%S5cZQfy at +zU`;P9DI*qfJ&8~_(Qxzkg+>=`n
zT}4+m|Ki(d_v+vjGd|tD-X2d8;wMvtYe@>CcZ$q<%PE2fNrh+9;@XMwAh?X1J+o5~
zy_3|Q)wM{nbFlG1B`XKE<2vS<Vs?&k{rzxvad-V{1XIDmzqIoU%k&b9%^Q{#u5U)t
zmfd=VX=?=E_AviJt>(1dtZ7c&WqP4BITf)oM{=57lYar6wyU`2)Lq6o&GH$W`1x)z
znLfU!2Df at Pog6h2p`R*#{r2wu=J$91>-v>m*|AeyOZYybsU->)sBlOTO=fnrmk1P@
zJym?o5@)(y#kB-ynv&p5qeOC2VN)P^=&xIs2)_WP+ZDgbG$p~A&Tb%Py*CgNfnqwp
zzj}3Xe?d18TEf>rXo<oGLb at 7E+w2BHB2Z-Z)IeyKd<}$_@HG%xqOgIGJOr7}su<V=
zNrYbj)9vc7dE`t}5(N#!97&+Y4tilMxtZs>DR%Q4g+>iXwrv~od&g!SW(U~G69|sm
z6(`AVKgYRkPPRI6o8xxnwmm#7O@%oQ6#A+HOm|m)Cx?3*a;>i{|FmvD$GP2omVa8e
z7c*GNqL;e$lBVf=SL<~jo*DD>nWn83ujH%-7;MJ+hGBd0HnHD}$eIXQ5M8wrcI$X~
zV|+U!dr&%!=Aj(o06b&`3x|yHJY<hb6~qB}$TAX+yk3&8$8DpAPBKm9_+q!whn*xh
z3CsCvIVN|M<QXMj9?#0^RZSd|Dm8aL!mN9sp(r+RT>F?fQYn^*X1)|}NUKN3+X%bN
zj#B1oXwOK|{w%O-I*c&PoDm+<Fsfa;6EAP*XD>2rt;eP&ue`8*b8<U?9cnFJP>I-W
zoz)N67-?)IJA{kU2 at YkoQ#MAtLs{%$FPh*`Ru5%k#5<G)hUqZgt(VhXpC2KS2$VDV
zt0@=v@7`SA7k+$1niyQL%T7{>&_4-guiR?6vh!ZrA7m&i5i#o}LjMezy-zm`&F18e
z=ua?!+g8Bn_I>@QKM#I4`1^~&;P3E%x~uJL at dQx2ieGwv6XUYkb!$2bR*Ihw at ACF(
z`%vvSjA$yzI_)C4v=mcuy!!EmRUFUumfVT^bEIQDdlTAXOL4Sg?Uppxu{lgU>-qtX
zD0=m9{pRL}>)R_TaJqIz2F|6Qax=ycJpXL_IG$F6Yi_*@1cV+h%w~qYcKGeZ<(2d^
z&4atE`)?j(cKIoq%y+OczS^t&D?y=%lBO`AcE1tBBecT&(9YF((V+73_3Z(?wNXBu
zw?Evzx%<zE;L2HbM at _Xz+Xi~iGzd^uhcNE^cV%|RM_&$(2EYCFV8441($#+YJoxo*
zaoRZ;U@`w6<R0t4+c#_<D<wbrQYM#H2<5sv4l9Erc_q4A+bls{{Zl<1FBVE;+n-~H
z#dyn*zY57|82W`&2yM@NYR_47LTf$u(dAQm5~1`YRp~y80hCIlU?0N)2&JlxVPWs3
z!If*(YPbE#;P#~>4Y*8#t;_Ytny>!yEN}&t%XpN!l5xA<JsXC)oM9p<Dl1FniNp6T
zig;AI+KK1&ld6fQE`5(6;Zx}H306k=+qixznTW?mmr7VX45?%y9+l4Ez`XJqMhffa
z$+$L^yYO)}#1Kw^!Br^ZPMmjfT3j#<;RG0*B}c<FgcD#i4{+0#zxU*KrzxEPq?w2T
zYDy;nX)a=bn$jL1S8T`dr8Rz9EGMkp>3Qy&2X1pURg<4jjfSTU)ousoi^aoAwFB)t
zT*fWd<JsJ7;M=#kjDvPG!zH*Y#6;Vx)p|oY<!l$KU3!@6-FjOEsL)_Im)?DV!;@iW
z17C{aDdCgwWSJJnIV`QvmhdQa#Te3-KeS2A+GW;V^%LK+lmZ45J~G!`UQOz`Io@gK
zt?#A`^8o58!@wPFpsQj{>Ys<^0J-g!>n<Eu^DnFUSohtvr*Cr&POANmPK<UPhL(wF
zmvkl2bDO_Bi6{9!hkQ5fljF1)o<7kIxiSgvsx$5y9n&|t;shftvx#Y^gwwwB450Pe
z96&qOqKK#MaoP^@KN}(O>HIlGDeFh{Ff5J`xXCo6eUr=lRmERl@?~K=)uFpeOm!IS
zKW*v$str at mmx1}Wi|KlJN at s=hrclm$Zd#=`v~?h9U6sBbo0Y>S;YnGKxJi;%#G}%c
zM)imJ<E}QUfm10L@~Cx^%<eF|PQPB`O9SBr6=rXgUawlGy^Dp(Y`Y3NZ`z7II=(vS
zzA1pzu2IWsnYKI!{b1S+^ZKXNlxQ5<Hd!|~V+$HnTFz}f=X(J-nP;xG0u=Eiq00oE
zAucNM9UHEe6iZNzbHWJKN-RM&&H^J;E3pLCj1c{~=l~^LFhM=@wyECL=oo?t>Y2we
z>J7mJ^^BZ})vJ251;r9nGk?RXl~{sm=4)8B5=&5xgoL{=DV3lY{j?SPk_4p^6r-26
zVpjyERDxo35?W!oUCGzpyU at _t%v;gW%v)J9&v%W*$9A{ovv`qtFUzycd(r0Udi6Me
zKcAU%KUZ?tvI&vIaKwVxvI!ujb$mx9&zO)W#&>A#k&r7)2(mFpZtgCV2_ at K$P6yQr
zp#-&<7(ul{C_ycfP;KDkc0K2E4Z4(Af@<_JLbVc0P>p^@s8(VLs+p(zX+8c}MUf&!
z6Cjw!@;;h(OEdw3c^(I0i6%gZlrUGch|D=o>4ro~gj6fB1gk|#gj6fB1l307gw$K2
z2 at pm)gdi- at 1PCJ?LJ*c{0))t%QCyod%E+9MYLPifszpkKR4cJmLU?TrsW&nw$$BFl
zLJ*c{f)_?Qgdi- at 1PGBi=0h!_&GGJAaE%5;N`zD^u>`9{N`zD^u>{pdI)v0)q6rX2
zI)orB(F6!19YPS6Xaa=DoR at KJ&dZE8C!|_rPLgVo5+T(}ER_)6=7iK6nUiF_kq#jU
zOEkd?BOO8zmS_Tm$Q<*DJ<;ZzW@JuCwaA<#)gmQAs+CwOAv|+J>W$1vvffCC5QHU~
z;DwP6AqYz}0YYTXSzMcQmXSFj)gp6}REv}dsa9gCgz(G>sW&nw$$BFlLJ*c{f)_?Q
zgdi- at 1PGovb!Y&t#1d5VlnAO;VhO5wN(5Cau>{q^)6lq5i6y8Oo`zH_u>{q^(~xQ<
zmY`aA8X7Jsu>{q^(~xQ<mY`aA8d9yq5>yLML!$sCmY`aA8d9yq5>yLML#mZnf@<Mu
zsB=?d395ysA=OGOLACHSq*{q3s1}}v+H573pjvnuQmw=iR0~f-s+CxRYUb&Fs=t`e
z7umg|TPd0V!914tMJ;u5YZ4%s=W!60XaWQhHG}o$h=CjvOHhpjMW|L{398ZC2-Qj~
zLAA)7>G;XooA26EXo)63h|Fn1xRTQnO at I*T5CdU}CP1L~%XvLDAIG^|&~gdN(eD`L
zS}s93dK{x%%Oxn6?#4V}K_il$>q&P*%C%gA<<i}daxIsj9BJ8X#kmRe6Hg|VsQP0y
zZ9LERrJ|Hf06;e7ZQ+JqN+tjxqw+Qyz?Ad=SdK5BV8^e~wzr@1H^oQh%&aZ$dQ80>
zPZ5NFoQucSwG6GqJcbjh`Eg at G)id8ZgJ1P5&T0@#wi;f$(ZTc+0%EDE!R9ElnOuhQ
zD8oT{j^%NLj~_A^hnpfT_jB&*=UL*87idyMK)IlYby9tt at nA<f?+ at nw$+%k0Ix@3!
zkGqX^J?XcxP9^;|W~A9+B^a508#6NfHfCgcv&xuEzl|B0ej78=T+T^gGW|AYBz>E!
z#Y7{=)9GRzsEAt5Qx9Frk?$DgS}s93Ivk^1%Oxlm?tU=0sk=PXatX?XyFukzE<w3)
zH>h08B`DuMnuHuX83B<5jn8B2l|O6jB)*ryL=seDOxPDWwojX#k=8EVwrm0j#s)y@
z%0zJWMTTIy`st#w-fAHLxM%`|bbU3REMnf7M@qSD0*LV5_(ZjT*~pen0Krt&*69I-
zE8w=Q2gEhFoxnT3{8(`RT#L(il)5SlzrlRx%MZOusa6==8Ph&ChX5`{EYSqpF<cG^
zUy3Tx1PBb4x=+W|1!0LMKxprymR-0tAesQ7iLxMEURa_D5Ze17ge95)p@|xs<F!CW
zC9lPZaGMY`QD9Ai7utKv3m1eXngF4RirOeGGAhXnBTeFoN?RAx-dkSKM5RF>QS<mV
zN{J@K0*O-h=?27=w3cWB1QHbqVTmR{7(|)jc6nimCO{b8hafD`1PH_X5QHU~0HM8)
z8gR746QDE;QBW=M1Sri$6jVz*0SXzJRg<Up&Bq+BdfyOEfI&8*VH&~-FvvtSOhY&U
zhNV&SO-XO%%zDpr-c;|32g|W!^(<Xt)Ek0X<SeR>mAPg{GsLA6fVB59KuzfcAk9Mz
zP*XYqh}EwdEOL<F8Iw{8idl`a6#LR?22u%%(OJAjTkKLSr4ke`Kr1{(*%+E#p9)lB
z399S1YM0SUEJ5}5ab_*6!TR4d|HiKVz73P{=*0Cx`_rKyJyRbJa7`#tASGg$3d^PS
z5YbgHm6*p;rzxO%+H6={$}xk5V1jxysioc(IYTf(Jtk?CdP6Wlz3_Rt8E>nY2|Ab}
zWD`Jy=PeL|rF0PCe-wx<o8XB_S7`8P%O-%BbeSL_x{{`DCIul7TQ<QHlY(QT%_M3c
zi(m44mohC)kPux-ASMMN5L?zmmur1(J{?a#m`k8>4{F41i}f_LE@(=o+cjT(G-60N
zfPx9?7xSt4ku;ZLCX%4C4y$A$2`XoK!4bE?M_~ip8G`9ng+rs%CxvFVc{I$9OGkke
zk&dQhg3tAAYCi06<qH!@P`L=JWFj7wu3-nZ;&8}lbDyfORZ^k}5ZJt``{=Q*C7J+%
zZJ7hYHR!cO6ClvE?YOqaelGo5E<rg)p{d;UL250Rpd3ApQLg0@l%u<NNbdB}{NkUF
z7%7<mfG*41bn^Jfk&+1j=(fC#1~4TP0FWX)-ZqXRDVYF(6v^9Y4@}7f0CYSKz?4h?
z(1+IhpLaG6pSQn3<7!>?iSYhMkd4#Z!%Fpe>wZfcXQSInU5&6lu-tDcm+^4wbRU!2
z=obAl2}<=r+<r^Bj7MpElFkmfR<m at Mm5pPtZ9dxy<)PI|r;Bna<QoAx)nXkOhtx75
zpIVnG*gmK;f_44%&OYSH%^rqb5LoXcAuQ1Z2(0;$5SFM1!sWd_r<f;Sd!XmK%Q#8c
zcbhBe<XOMIdt6ZBq~4TU^jW$ocj=RE6YrAe(DK`yKJde8Jz;Sr7v`^h04UcUmQ4V`
zw2TF@WfMR!F=Ih&*#r=zOP=Z&uI*AX0RY{Xw`l<1h+ax20HEvgHX6W`^Z>YWP#zrV
zOKw+vl}9`BdwdceBV6KmgrWA%C*e`3bKg2W(52532&%Kr>~pEJ1cK_sp25};e9ao{
zk~5TRcU^+8*^C{BCy(rENw?3pYerG1wFM0WSa&T>1Z%0ck9u>FCe+)49`!mC#9fUu
z)Cm0z$rb=RudiA?E#dgH3OgWyFrTr*O0O?pU)<e2=%*ogG#WD1Du5%-JlALL0&y;x
z^Co`!n78QMTXNzpfm6EtWqyTww?=m4l~W&lyuRKzOYrn5cLAIs<u1U(pqwRmq?5A%
z4`y-}U>~5*EOLrqD;^NR)- at oafgstoy8x13Mnm~!*fBp&1a^|j%2@=*^*FDyLwTGf
z{OBEL5rq4}4a1H;a2Mf0IZkbGz<|3z9C>5hWF2c`T({1iF|O+>jMVrFmfjLLEXH{g
z90=pS4kxjA3p}du at D|TKJD;+jiF$qHRECYq-d%(Tra13`+;CpU!%w^gduItd#Kc!p
zyWyd_dkeO1UFV(~;FJ&d4S4*Avjh{_SKz(_&f;+10D14c&d=3w7Kzg{++}b^hP%K=
z7qpHmckaP?7H(BzH^1;%ZO;wtqzAVyeh7rW%w3aeIE%r351hB)De&BZCnq at Xz!MUj
z1?(gQX9=Eo;4HwC3p at q<Oa9J6?0oPu|IR|}3%rHc;VjrT2Isv@vA>w9_7^kd at I86I
zYF{B!>?=gIkV0OqzA{wmD?^?9^XOi+L@{b6iWv|5L*`!X;v?zKa>fR6Kk8TCA$MxP
zIMNcPj-gWrN^IDXkgf46s`nJ3?Vci3h+nRDqM=G}Au9D2GPV56YJ_S^fT^bhgyrr*
zv9R1-C at gmu8kV~Sm}+jATfnf~Eg&o(QJlLAh2`!-!*aKPVYyqtu-q*mEO$>S1n2HT
zVY$1|u-q+RSnd`uEO!eC%U at EQy9<To?n1+Iw}4@}Tfnf~Eg&p+5BUY>?m}U?yU?)Q
zEnryg7BDP#3kb{4D9+u5!g6<^VYyqtu-q+RSnd|!me=m;%Q^QHa?3r1Lan=Q3AOG*
zq1Ig})VdR2sC5?#weCWp)}56?t-DaDbr%Y??vxQ~-GxG}yHKcg$5W_v7YeoRLZ()H
z&C8$1lmJst2_OW17t5>OTZpQ?g~D?7nuS+2tcLjogynt#gkaxf^6K}OqH=$!)a)NT
zu+K0#aiwPWy{H*KR^+ at D3&l5moaLBDR5?OB%h at M=Y?W|n<ZfW(H+O7#v92i!-S+ds
z*_gO<M%;;?p7Gy`-;SY5DOmi<3vn-griCsh?tbu3)|T#75)7lKh$WBvE|!z-q+$x)
zMNFZ)h$(cZ08{8LVhY_wOrg7vU<%zuOrg676|xUtID>;a{iUeZUn(?zaL at mRW>2Zm
z>?ws0NVu(q&p<c}&=h>Pe~TY;a7v&#AOT-upo-b&5u5 at NfqmP+DIpN}+jmY0bXt9Z
zz$wArbM=>aR(a7j`2xK2W;BfyK+8x04Ka1sEDhli&=4L04Ka4tH4Whr&=4L04MEJ7
z<*U|CCN+dd1476beVrOunuzzAodO6!YA_)DL<tRU0RzG<pdpBK)}9bT8j28NaZxXn
zI$2 at Cr$tz7Xc6X at f1!<e<S%Bv_=~l2_R62v4gQ*@Uq-|DWf)_#trr7cS96vzjyz at Z
zy*THM^3679A-<mGD{%Mv$TYrD=DrIG`CC=aV!W3qMi+@<WKO=2;%~}m2?4?1W^&qS
zqPVM=@Pg at ZOPDBb2@}OVoG?+`5+;gUg1?vIbklfcg(`;^Ae_bc;)t^VU;l6x at Rt&Z
zBIsb<Nu^)0aNoUobYJH$mf-sm&T@R0!C8QBBsdE&By!WfQvjn%3Sh`c0o1^@zB~1!
z0sc}{?k`2nV%NA=H&u?>sdCgWwp at GlQ{||iDrdW?otoK}XlDuA*X%4|o0FX-TXfP{
z!nO%JOW1y2XNlak>nmh?Z=Hq6r`(?E6krX6*jnopKt at RoY<sHnR=x$*Sp>U$oY!l2
zwP)K!-8YPmeGfs|j!x%I$cozV=#)TOXbI$nmOvD-U(ky|l_LUG4%-EtdSOeT^E&M8
zGp?Ka?~KdlK04#FSh+Aa%(Y9cZEEdeYnxfS*xn_^_JsY at i{JiwFnG6_u4mPtTERc_
z)%*IZ0qjM8 at dCGz&8LHp>-p>j7kR*qVGnnU^$vQ0diTKYs0N?QU1h6!HF<g*)F1%=
ze(~b(u!l_i_|ws!2frH}?T?SnkN)k&Kb+cOcUhV8(a{m1d{(Oc*sopeb1O6dC1F0_
zELWy~^wP&XYCkVieoQJqDN{ZqmBX&TGWCz%tYO=T3Yn>B?S<6LyxQ6J#WG?>r at o9~
zJ0Q!H4~cZgZIor&PoSak*H_q#RH*-JFYiqEN?SiXo#eEXk4M9qkNqv|8Pxze+D9h@
zIgigzh1#Jh^VyEOTFbP54T1Hl$Gx#->Q6}hIOx!uW6O|6Cy=8)o^XWJ70{4G!f{Yn
zNT)-}CruvP?pw+p1S-s42S`940j25d01Egcpx9Pu&D!vEoKyG5KGOJp>SFy9pZ-bp
zx1S%%TgLOL7hqL&0WkFfu<hd}L77easkdpzUBEU+SusBMQN;GL7kl6}pKpjS*6$4f
z>@K$1$qc~A>j8A%ogf@}5ul6eBE(<&LTtS?phJ<<R8*s*>dfEBK5ZX%AK;7Jv(0W>
z2J|=r94`=Sn2P3|)1#wfA77w-IWIGRMyoGVjssagH}K9znR=jxP!Htn3#V6XJVnKJ
zUpNOE2R$g9!c9m3h(IYtkU#LBFF_HYkfJIGP)N}u2{48aKo!+roGkhYS{JrHu(CsF
z-<PV#bt%8`Fe)l+eU81;^vS9!)P3sL{k~Lp<=4H~71}-a>z+&tb)Oy`o%!nOWKtJu
zhpOt={=RxDRR8EFX0a<(KJhEB{#M)q_-R=c&iSE>@+*H|s2sW{zw*Vdj239R{K_F)
z%Ctkr=hqJDQl=f+MZfm(>Zda8Fl_Q`U#&}1#;+R|)5|P}wK>1`Rk3;)@cGqGre(In
z${(S;E>jM}B)@W8Tqql3_!}==S18i`(y#k{sqUFy_hMIQ_t#$C_-N#)kQ84h${xEE
zDxZ3X)9 at Z_X+H-w)IXrZMWT{q at v-ukBCUIGB>%E6Q#|%E&0d2qQw{@v at 5CL{mkzd|
z<M*q_b()eu!qaY2d*Q5Q=u4Evd1-$8Ie{+-lyP!?bmq;(1!ymBYQGKuyf1AN#{>Xd
z|18QG7%h6)2kphZ+&P<#`celF$^#HWDDIWUA%x;SbwVP*w=c>n0n8wY4rDwj94CQ#
zXg7T^#x?Y!6g at uj@0h^l^CIQ`{Xyb0A!X`c62#Q-t&u|QMCE16{zcS4SiMaH`|3%d
z at ob^imo at P5lrr@&X7XDPkD!aFVFNO6#@BV(h-`m?^@&hFJ}(BqHApY__4vGSmH*@j
zTQmZoIJy`Dul~Xz at qUc_`_*p?XRYS}^@Y*>I-q`Bmi!Z1J$zcIOh2t2K2TJq{y3n&
z)cg}tKYlK$(EcNGu34<zzr~MzxT(~5f3@1;=buW|552Xv>O%doSN*ID^&_u(`~p at P
zH#i9NHJG?l3O|NbhA^Urfw;k}9AZdf;NGZmjME|I2cwF;HCRd(biuxOFtR!T0lEkj
zMpp+YKp26-2!oH7mC{9|FQcm%0>~mT7+J*_Kox<3RKcg%N|^#bsKhEp0HO#8B&rw!
zcp@N>C;nl%LaHzv6jfb-3`Z0SvegC3>5xKUb&!85uaL1LVy`u;hFzdQf)OyRCUyY>
zj1e%%nff?jA#1p!hsv{#aE2oa$aH8}=n(E8@;QV!o5CffQ3b;l9{}cADZr3Kz!WP*
zI2}?xAW8VG#=<z@T#TZr90GERz(AtPF;0gR2BS)Rce0SK8Q}_M6})j+k3Uw0Q5lXX
z97b6uIHyAjM`YM>A!QR{XvZkqOba0(!w3wKVTBlwVFZSeVTCxO83AKtSRo8#7=dGC
zSRoE%7=a@)Y*d<I#7IwMSRn*t7=a-&tPle-jKDB5tPp23BVddSD};dzBXEoiE5v~e
zBXC5974AkJO<=J&&`TCVK!y<*BEt$XAj1d at Bf|=DMl%A&$gn~f$S?xO$gn~j$S?v&
zWZ28nHjJ1^h&HSc0y2!i5E)j80U1VM7#UWGGnx@FMuru_K!y=GMurvQK!y=GBEwEg
zGb}J6f>C%O1Y{V2Au_BG12T-jFfyzVXEY;Vj0`J;fea&Xj0`Kpfea&XM24M}W*G5G
zoM^)eAt1vD43S}l7?5EEhLK@~IHMT>V`Nw%3}hIAV`Nw%4rCaC!!xWdoK1|T#AJeJ
zSSiGi#NZiLig7xm{18+X4vR-qVpJ at sDue*42n<10AqG%IU<j%T$9JPCF}xF06+!@2
z1csoh5Cf<pFa%YF1C`N~7^euT3L$_h0z*($hyhd)7=o(89(Ob)I$S|jAp}rGU<j%T
zF@P!pLr_)Nb&RG&&mpKPgaE1t3_(>P22e#{Fsj6v5ryNd3SPM+S0g%sfd?D}4x_9S
z9C*w@;2>>y9!4Q$_|X80vT_K>FaiVVD#w5fBQQjUv9mo2>8b)BdXi_1l)*rT5jY~l
zI&cRvjKD$K*r_FD&Ws+3-WMCO4lsr!2olx-$mx*sM6y-*glqIjbik6WLJVMw0Fi7J
zf&g0t2(pDI(-fvw1yALDtrtRw^Jz*^h~5iB(g_OGc>)H5(g_Syc>;zV-SbpN*A$)v
z`=i1T>M{g;HcKKD?&my*$uy}Sjt+V#-3WgMt>V#%FL{9`1o=?t$r)6^AjslFSvbyM
z92^AsPznNB>j!xfd=&=;K*A`+QNjH6hF<wn${1#G5T!USunOTvVPTmS*A@K8X%M6|
zDx+{+0Z$5pG78s~*+XeeMr2*Vn9R!CuhU>m0Hib~r@@$@CxtON4aNjLDFq3~q`aOS
zhhqZSRoJH-hhtJ+PmaSeDX%BTp_t$qfyIs28BDRr#*3kpM&%6O`SiB-Q0KWXg;{)t
zU+4>>l-89q+-pmr)Sbiymkfd^#c{#?yg`)GChQCrioz(xalvl`Qoi7+nZ@;G6j5Kw
zTd`3 at eJO9oMiKR;yd7hE)2X;Xed!=B5%r~mxJ1;K4&o9~Upk0OxW05T5DV9rE=FSE
z`qITvEL>l at 7>kAbmoDNGt}k80C0t*+h)cM>bP<<``cmGG9Y@rc@^<VvqP~>3W5*Ho
zrMw+Gj;Jpk#3iD>bP$(_`qDvMBI-*AafzreZ2kfVmR5xi3SUOl8i6%0{nh}UJQ5gZ
z@|Lp;zar`>TgO<yk!pn;vIA+TaT=T)&z3W~@GGKa5Lo4YMPb40qYJ-6Z4u*;VU_z8
zfyLUr4*VKM<h;Nt_A3esCca&`6;ZudquxRFih_cfb{B3%WIXFdI&dors+-C+j7s=!
zDi;aWL5MIL{GCV#alu;T2VmO)3cq|i!Y4SsCxmP-Kq0`8L|_{M3K33+ln;!g!hHrK
z{OS}*QXv44L?AGd3K4)L0)dfKx<C9F!a$N#2mmAz2#lmc1R#k(U?df8sU95@JE~cA
zD+B<N2n0q_Ap(#@ARtNO>2y(g<Rm`6rjn@xjNym^L8>|cIUQ0Uf~^mQAH^FXNPw+U
z3}A}@5p0!$09ype_OX;F_%xW8rt!S=7#V!j=Tnc7p09S*cKfv1mF<NYRYW6&Z3y7h
zrC-*Ctzu!6>7pwA-WA{kS`%b#HJ&UA4^|mf at Zj1P9l=@`IN%Tgg!QB&hhUc-0W^V=
z_WoLyXZWDsM;KRMemv*n(XsdFL##401~e`lA+iT?K36dI-M|b<91MLoIHyCLc=-I$
zv`tHC!)c)pM$=XbGh|ONeK?x7Qk>Hv<&UOqTsYJo;TL>;?r7RdVIbQG98Fs(4rCjF
zqiHMt8Ww)GIZRtA3}hRDqiHL}fovmikhXa at Z5yr;P_%UeGh|yPd^kv3H#nzkk<y1_
z&{kSW@hjdw7&aW>(J6!h+6Wwjwn7}Bjlj{gbuq$W`%A;rbpZum-z2hI)7J$Se1ns~
zV(nZtd3xW$D^a5g`frNBSw}!H7A25aTh|d13`PkgmVX_5s(4hv^IM9zc?Tds8iB%c
zt^*Vxj6l(ZEvk=I;bz)V1<#|ytaX3{)Dcjcx(=X#KLU!?*4egf{xdp-u9f0#R*C@4
z8v()UXDI}<Y6Jv41KEy_A2ww~ogGzPp6ZSeh(m-PXN8N6k3-x_;fwV4aaQ;WA?ha<
zo?z^>T$aA3I2^qUG{DmiTCGt9Qz#!%IBMzw1X>XS1#3kYDA0fqDA<4i%5pQ_R;9CO
z+(8rItP31?<CXvtv~>XlZ`~3=CUb>@+R-C1rWM)794f>C<_I8 at xk4adjsP;5D}0bO
zdJHVy%G@r*0p<uGlet15V2%KqZyrl~u&MXBv3co34d@>I$~TXNqr0=CnP2;d!uPD<
z?Il9{yihy5Lr7^aeAsh#^ynpKF`pJbgu#mJZ`MKob6G|{lA9Xp4(vw<eBBc0FSZ{Z
z>v;9gK0Fs5QFnH9;*Bn9FHWA9e)aQG<4?|x&Pnx!*1sh6m$zr9gz<%@pB<g~m2Vyk
zr*!aymeO9B^JhmxO8d5OnsRn at OsRh^RzITD7k5)c#&^(75!yTGru^FLS$R(a6E|;5
zx#&QD=n27QSA86Ju$b{O at Fc$*oDl_sL(XnsPKOi@j@7s0x^&h)dP&SdafZ_Y2CNJa
zAV^pTAix#@f^5xqi^=q{^c=aDu%*{GXkkxnx<CQO2pD9n6K8-k0tPvob>YqEC9%+q
zoOOZ%oDnd{Stl^S838j#jIwd}OE{m^pJJOX0PyWFUk+~(pm4$I<q__CClLzQF<!!%
z?tX;lE=ZzQWan7 at O2bU;ZrXGKfS)k&1_1$z!%WSvwun$1W@<;{a~C90k6afs=*i2%
z{75cUet2d+6dtJk63?6UMj9}%Iuv72V?^vKrkgIFfsd$a$5vcBfq@l%f->wZx^V~A
z_z9fpV!SLpCUAsx&>Q^a+}I)cP_3rxSvB~45Bpi`F>C{^SCgm5LA_Y-;NLG^{Qbp1
z{`k|;p9jAi9PLkN_2Ye6^}rD>X?@`W-zlwsyf4&$M(RhB?|@undY8pMJlFKo1L_OS
zKOwu(y4n}6QQ~_Ve)|`r<8k3)4U99qO9u7mcw49*1{sw4>99~gMAxey+tgY-04(fA
zM>wSPjRde!?Fa|X-6epqRqY4}PTnPekh$@0y`1g}myAZ(d{De~f&zOm2pD9o6ByWs
zLBRa&X<gWs;Grgdwm^UB_i#!5+iF>8KfZ0^w;%Ku+K-P9DgA{D%O^+FNcOoZR!@z@
zw at -NX?WW$1OUKLbE)E=f?5%U1;XIP(H^ZwdvxoU|^E}@cj{mX$_PPV_NKLxpjhX^X
z7u)V|AdS7@*)Hq9cI6OO7X~CotLqI8Ud1Tt;c+#1Cob&aNg*HE!qxguIBvy(tXbR~
zgnc<Ug8#kv$G^RJ5zxMUG$32bv9v_D>5oG>6z6NNf2yZr_*Ar?8Yz*FfdIo}0zwFs
zA)E&Q&I?#V15X0_+b1){=MU=N2Pr~{GLH5kl0cvkAw<)@gr{n?+x|qvftTlduv~wv
zH-vs(p09tq-chX(D=yGp(b}=NQ2WY74z`kC%9eDCD8_Qa@Dw@~wxST%kiz3(e_OPD
zbUZzduV!%j6Ro{HI*iv26IH4gV8!|L!#tJJ&WiK3<7DW0zM8F{C*zvJX$a;c;)F5^
zu_2g`h;yVU#D-u#q9zN*yj!`p;~IZ7CG#;gT_Mb-WIm=QEQHyV%*TX{0MN`hnhM<%
zaS;VEJRJ*psM9fx5!^qIz(ARNkV*BopS>X37a?Zgq%^CORTTxo#WF$WFpTs?L_5Nz
zG9jQ14Ms%B7zl}BhfY4i4=!b(q{IVm_WPl^5 at MMktMw+r4=$An0iAsW1eeN$fR4>i
zm6*K=83Q3P<hU}i`+)QL%?{Qm*l@+!Oj~jaPd6)(Ez7f|$B$>r<>RrI%n!qgi?lE2
z1Z$uk%8T^V+6#2oPqN;+;*F(6cJHZaFYp58W%{Y<7V0mVZQ=dYgprr$+YjuL{P6NJ
z{S-f_zl0yWpW=s?=i5JC&8WPG(tO=(s+ohre9e1OHJ0Y<hEWjJ(6HhH?W>B^j>QGq
z-_zQ$xIp^?z6$1V;U`#JpnWnWwPSIK_L|lX#Rb~mS5KsRR$icgv7_~~@&f(U->ASs
zX at Tw)HP?q(Ly7M9q;4oJuzNvGrXkr&bVEK+gky1$<)n5<mJ;pb6}3D%!QukjSL;B&
zV0nRl`a#45iwm@`0_s_Lf&R&qN*gFG(Or|e+Yg=Nmo3@K0?~8e`b2@{xTHX6$KnF*
z?`iE=T%diiBW=gxeC_zm=ZK(&mzU|^hX6nz9|1Ogkv$(T&)1JjMgG*m(tO>2AvFJ`
zMDLzb+};NnUr!gqQ<807p3ex}PY%O)d4Yah$nl4hE!!1or)D&uy=308IH#${;sV>(
zuu?}bgT-aq=|*?~0A=kkYIsjJmQo_$54ITUXNeUTX~&L^)L+&Uf`N1xgg}uGbdLoH
zWqlSXpnF^)knh8)dQSuaOY?P)C)6kkOY?Q(GP*x`uryycuAlpLV`;wbdcMSg2BBX{
z6krTbsg}RS;sWh-zrvmk6lq_PE5xH?C@;`|PErG<1-jvZw?A)cC@s-V=1g5OHmmFL
zIjtSbOKcyXlQ9MSqL|k3!U9FS<9&wsabQi?)}m2yy`|=`SX#jPmW(Nsmgtrb{G3m5
zw(S>elK3X0xmXm{(Jh at TSX{yj7)NB{w#fEnwWM~lvEqE&VfILAXT|y2=k-r;grT1r
zUY at Ui8_>_o^YvE&{k%M1|16-Nm*?x>)^n;kV8tccw-1Yoe0+vGu9!$Z3T~hZpeT`i
z6x=cuKv5$3D2xvN<xPL3Fog1v7$qSjLnt4K(Go&3gz}LXF%xp?qD1mh7%4Q063Itl
zgwQBTBp(IosNql^I@wSn9|OstF{DI322w#|NQrz5<O(`dd{L36O9<s7As;~`Lnt2!
zSqUN;LitFn;>~vv`<fR*Djy4}ky`wrGNtmdkeo1<DV2|f98TA($NBsDjC!PC%jM%C
zLos-^Tt1#@_b^b&q+RW|t>fnuhzFl^@TZ6n$oB}DArXW?J_2SIi68{>5s-vx0|(sD
zJTZ}c6eJ>mqD1mhkc<F|63ItljP0lO_+u4hO^W5CF<PV=e~c`#d^AQ+7|jyPM-#bs
z9L~Mt!VwB&1%)DVuLMOT7KNfj3K`?^p^%IeE%C`nDhkaK%lFMlDhkaK%SRKrHwx$8
zs66*56p?!+C?c^a6eUu~7|%Tl$;iDDpNyoU&@8ch-;AW9&@8chG?9DMwrM4jk0KI_
zLQx|5C?c^a6eW_6Vk8xXWQpaY8A(N<Sz`HUMp98|mRLTTNUWFPcJF0*yGNmj+$%v5
ziAA9(kwV6JyGJ1zxmV(okyI3#C6@1-kyI3#C6<pSa_=;pd#B~ON1=$^D?t&7MWHB>
zLdJORQAkGamH1>N6 at _Mr<@;tN6@_Mr<)ew*I}7LDS$XbJC?fYtP()%;C`zP|F`j!A
zl978QJ{d_xp;==2z8OhHp;==2Xgv37YF48}@=<tVktj+eAB86tiK0aEQ3M^-SX_zZ
zqX;@E6eW_6BIuw{lt?~`po1DgDv^8?K?jARMDkGt9TbWZ$wv`%P~#pYl8++jpiq=Z
zK8m1&LQx|5D1r{Ew^kzgD1r_OMTz922s$VfC6bRK=%D%-C6bRK=%7%PNIr_7gF;av
z`6!Hz{gj_U<6rN##PZP?EnzfEEFX>06GpSd^3jl at 87zDUM!ZZU9|fripeT`i6r?18
zqD1mhL{jln-GjO3KKwoY`J_my5Sk^H at 0&=f5Sk^HkA_Sx=k+x79GlDJ;~+U994(WN
zgS3Qjv`jvZ<Sq1I5p5}XHZD1#aI{RmKavv)N6X~nAa9#3oWMobS|(D4^0Asm>~fJ(
z`B=!l)Z%x_l*-4#2!ydrseG*E6TU-9#7PJgBGe&-lJ}6nL~559D=xDCVLW~aK?s>*
zoDTt45C>$6aTXuwkT8Efl;eDezyX<jf1V(|!2lUT<w#_RBvMg~q!KbnhENASQDKru
zMR8(bnnlzjCX?@xz#)UAWr}gg5J{g)@>|+U1xU-3`7?`X=eSHUPB1=zQ&fkL6SOtN
z8<#2fCjzIq{=oNNgZ&VfDfDNC-22Blj9VsCj1!Iz_*`0lfRkW9#AS;783+3zAWjOE
zBZWf5kV@+iH#d;nQm6x;VvtJfQ5_Q}DOBVWQxb}k6e>pwRVMCJVQu2(2I3 at zihP2!
z3O9ICs2nL2Cx+BPePRt7*|>6_3gg7h4a7+b6|o1w4#!Cfl_Q1X#E?qk#LW$`Cxtrj
zDF&&u-5aw3QJ`a&LPb6?C80P;p>m{9yT^Shu1`254aAB2RESi^#7PPjvB#8z;v|L2
zkwS6eK6SxfC{Em`LL>-wxZRUNMeH#pp*TsQa->k4xKCZM7m5 at 2sSpW*9gdR}Dq at c*
z3B^eYl_Q1X#C__5y-=LEPlZSjY_<Tgn9VBcIVqb(nW9BZYScOTc?=5`MaxkkQ(}Ep
zq8*{e`N~kc@fC74)>kE3?kiIj=c^JeM}^uF>#Gv&2sO at EhT273S-TqNt07wIt56l=
zt07vBsw!b%_J(UovTApP8s}?g^%ZD~&0#~d+*efz!wf6Ya#U3b!>CHMBh<*aVlc|;
zYp9a)@_etjeSQK<?Pq&2f*V*$zU|C*SWpN;AfF?)w}L_t0{IAxC2D(z5XeVhBv1%K
zARmE|Kp_Z$d;~^9X#fAR^j&RG;I9shr4j^20)-$13R$A|$uk;D-zr{G2#lo?1V#dd
zAOy--8c(MS@(fql(Zgl(agd4-j+V*CK|(?}S|%R{lLv4<P#<g5GWj at y6B0+u<l_iV
zNE|JbkF$Lw8H3V%-OuAWd886A&)1LfoUeA(cKfv15sjlQmyd^W1-zR4n6x2Oj5J+T
z<Okja78lD$ll-j4lLd9+kS&*wC(N!wc(z<V9@Z1glMtRQmyb7rV=(_p<RdRH)gL}6
zmg87Q>&lNd#~j{^;hr%aV``9TiRC+m!Hz()#PZQF)DdWwSU#GjD7a^y8wFzdXqqAt
z%@WH;(-e_tmRLTTW^zmo=`FE*G))nSW{KsaX^KcRODrEvQxyC>oXE-2R}z#OdK#m|
z at _o}3k-k}C`Dn=GJg%KoV)<y8Y)TEyq!P<VLyD9dKbj?$k7h6#s@=k<(wtOk{Jt54
zm!KIGQNCGXT`(CO^=Q(CXg;c at Du~(=%}3Rg1yNg~`KYY@tR_$ILoeMm1oIJ*vRMpb
zLogo^>54*Z2<9WQWDI?9+z`q~VhI>RGKBJxSki@%4554^P0XVDSW!E(nv(gLnxYV9
zQ!*b at lNG{jO6FrCW3$<onAS;&d<<lW#*h;E7{~~XAtmxL;Nj19bo{U($WkKtD0LV`
ziR7bfA7|uREEX4OCtquQglE6`+A&*}OY+58C6bSVc|Q%cZ-!7l5*iysGKBJxunq)~
z4554^LCkV9-d3Sy7O+Uj<>Lu at f_S!EKAs>ch-b^?<C%O?18rL_AJ628!n5V_@l2j5
zJX<aw&*X`EK4{D3<C#2Bc(z<Vp2-u1XUpZ|%{Pxkw}_<$y2-~yb0{s)y?LYtlwf$t
zYvl6})K>$rw7~K?sT)d5bW at Md=JOK97xO9gRErhoTMoBB6N$)*^R?Hs?X0*+J7qg)
ze=dmW?8CEsOyW8Vkrn6Lj<-`e!^;cw&uQzixJ)}~J*Y3q`5D=QVQGo&wB<#*H;>fR
zaE8SNmTw-Zd<X4C`3}ZWQyetDWR8R81@uFC5j#}R1n?z2(~Rtyu(ZH(vS*qV^-T4Q
z>^)d<zU2#AJ1frDj$^yct_po7&=Si>!;xzQnkANxhU3TxG)pWW4UOK8YjO!d%jDx=
zC_*?|CLafB3E^m&d>rItzFSPDkMD^=k|~vsg}j8ZOsRY<<R*+|O66lAJF_SbrBpr^
zvLm(7kMg8cJ{GbgwfM12seG(C0udR=%k%Yb0{VG*zWy!hCzrLjKp_IP5W-9-d2;(4
z;E0#!doafeNyV6z=j-1D^z-t3{ae&e#+VBfB9JjggrXP+IC^H~`5r80(B~5|=H>bN
zKRh!F#{`5DDMG=z5J2G~`6$?LOgF)2`IcBd8ulC!XqH$$8ukhiXqH$$+H^5qk_U_m
zfqaDJ+_??)-DbL;Rq#<=WAmv<&G=6!FUNZ#ow2mYZfa2w3@@42fo-IAEY7!mRZ|rZ
zON(?<mV@#V%j;@St!T31eA^eJ<1w|u!^`va*Q4VtrJt7<>7Nb*04R`;fK6sCo*|Om
zsU??>hmB?oo-LP;hs|aTo-LP;hkTBA>xgsZrBpr^awN6*XC0<gJ{Iy5#xkYyvHte7
zrdk|UT%?`)STtxa`Be0_T2i*N;(XiTcFJ~ET%w&?u-;ZB>($S2H<6=7y0=fDd%vl7
zV{$-kiRH8O9EWC!<)guSL$inZa`QajQj-NsEFTTtV}ogDm`YnNA8)$YM&a3V`FPLU
zWeu-kg&k}N5{Uow;<vvZ@WJh1hi}V$H5mN*w=Z5`HqNJmJ-lNE!>=_T{jygRSL4Ni
z|E~Y^=fUp=e}6F;{C)6QwVytJ_T}LE^7X~t-2;q@<}ehmp}NEMFF|B5IO6|^ku+X6
zsuUkY5B`BNpl$nDxs<_WuH?u2tG9O-5ASX+- at UqexW0S%|Gs;3W9bJ`O8v~Ef0h6M
z^8wu^G#sdZs;A?{!sUc0;?~-vh$6pQ)HytMY2_szb}lbozqZ)n(lpMw59T}t<(vjN
z@qwJAfS5<GH3EU2?){WOQ3?=<)BfzetnHI%+Xr~tdx_g8F}EkEt5&=1Pp<f|0#2Kq
zzpTJd&~p8;-nbO90+&Ko;8(a^@0^VeUU#X(>x8z-qYbWmlBC`2fGmyh)yl=dHWkBM
zrD&x57M at N!G2r at Bv?KN-?l#0z7ZB!PvjG8<TW1@M*Ilv2>we~8D(lpS*InB1x?dYi
zlfHVMuV(9KJY2^~1WY)zgbM+uT3W)71rwkE7EY10CKr}1;m3jrPyh?3NHmr$;m6V(
z!dPRwqe)~UF3&WJOvDeTY4pNrmb`Ec5kH(}(hH}F^1?Ml{BYyh%-ya)!NbZ$94jCd
z&b=DvUX at Vd*Ey;F_On~(<mXdvV{2UZ&F#h8%Rlf!F>*vTB+RPn1P0VlF!RO2?F<yS
z`C$cqdY}RGP`+4?XLHf5+Z`_6Lm3JEr`t#<a2v@A{6<2t$4D&ksw9nEtv7BXp}?8D
zaGi1*`ck((C=mKudFJZKDGcZzJUrC9^|o?H3vZ&7!W93j-3OcuZ+2VVAmYqlU3S%F
zOTZsHnA5w|<5ZtiZwdI-LyI!kM(Y_MUUylI*GX+lpSq<_-;!47v95lac<l3=2lu3D
zgB$$XfQr3yRtE)s>-NN41T{LR2((6GHh>zPlN(wiF^>VyQoUxk_<6+QM6cN`w8liQ
zQ6u5?cr|ln&SbuGCgI9_o31fLUK@>su5TVqYjXv&p=h6^38ejmLGSFWwv&49n*h7}
zc%mv#R#g`mpoQ?`eJ2>8g}_+sy6^+E5EzrG7eh3At<KOD5Ku#b)ZKv86v+GP$&2Ef
z*ScImJ%lfdT{keOhk&X6=4=M)U0O9E5LV8a=_CzdMNESy@4G;FPa!Ov6T?Iw7Unbh
zM$-pAI9D<fAwUZe2}p$wf(=>-jPc63R+s1pXdy6G>uz!i)DS41b at NnDtdjtnQHQ4(
z&c*pe5L82WGMRP|_KA7aL(`8*-35aARJMr#vu!uT&)%hTSEGxQcJI>?=+HX>!6~~R
z<b5|FpoRch>^kuT)c8U0nZ}VTD6D`FBU_!i^BIu2$+Z!9_Ta>evKQ+RaWH!V2X;`o
z`&%e*&hyv}esW-y#YGKVc8#xbO~#use{m`L%hPh>p}4h(@E1b&-lu#Yt$puTkEfP9
z2TQEL#RMxL6}rcGa9{0=6DuGT!eWSv0$kE^+J}oL-cZ3^&dCs7_h=&~F^h8#dFO7^
zK%6jby>>qITEKNrs9(Q(cf*UsnkUNA2%Z)cZ~Qq0g=|7m+k1Bdmkb1Y{2t+AqANM@
zx+|P)@zI+cQ0nQ$phU1E+B3m7zk{^TLpY(4q!#Y;bRC37vX_ASJUt$vk?h=7)q7V^
z;Ib<waM@4b*gbIZr~+xfDp(D6S|w|j9a&sE_9hA}5W7^t<)>}Z%CQ%ro-eUub)kqN
z7nP#OZ+JaCb=DWW?o<fZ32mOH8P~6!+Q_CE?piq)OId+O--=i*t<T-Qx*KPZCOoa3
zy+%EDb{aK2{Pah*c1P8xiWqm)_4qtZ8OT$XjnCZy at Yx3Pq&heM<E=Y8YHJgFW0+Zc
zD#M5Q<F0ll2Q^}=x6T<?&9pfeSm6%B)vY@WsLrE}io<s7toMXA^Sy{RaqciI7Va>>
zb;{GRTibT*)&|!pZ3~Y!k8NAZwq><+?()Iwt_;EJe%oOB;M9iKUE1)vU)#L?Y2{2g
zR^Zad3j7MUK81MQrH|d<*H@+LV>kHq%~JKT8~pmV_1sy<@VeXGIZ?%MQ^}%oKViYG
zB3S0u%FFzA;{FkzX51Cx(=5yUnsKX$Pcv=+@oAQ2e$9*x_8mi4yTkZkrCvsw-#~0M
zL5vfxe&)GXzb^IL&zSM*Xa0Nj>r%gd#?Qn(sAcRxnU@<V^J`|zcr-K5J(^{iUo+#x
zqnY{a(JagSnvo3{`1n%AGbTcwpvbQlsqm;pZ#`;7kzXzH;8BaNden*{zgi>#`j6?(
z(<s5`M_H*aEqJM4KeFN1k6!!r>r%gdq{Xiv-S_L)rGEX$&tkr#wmphsA48(p4}laB
z5Xb at nVHEozkR<{Fi69`1Vm|~DHC?YB=kMn;=PD{z93|i*O9}XakS-<Ws=UaE5^w=o
z0)8OVqoE7P^l0b;vIJ<Ljq|w%D%dz@1-!(s6IpWWMDN`?d5K>qW|3PbW{6uSFY)UH
zKfbCqQ!l?*=A#zN{F;#gpJw#br&*TyH6sr`&FHUBvn=y#W^C-I_4s4uXGD~HSrO%a
z6vhmJ!WbY>%yK^pV~IdvY!E1BxgSO3&#|w5LM+4!FZQw+)*meMYi2BggiAAHz at u4~
z`86|UJerx;9?i1Mui3~Sr`^nJ&bglzQSL`!%m^tjI|K at 2D2T#XB2X9`1d3Vy|Fiez
z&21#f-SGZ93V#SZ<A}9p&6y<tUh+QcctH}9VDmCTjWl*R5Fh|b@bY>AaKsty`m?{8
zSyxtdR&`ecptSFZvn#Ue_~ltycXwPC?LTcv4(%iDXiK{vwd2U7B`6^wYabDjO<o+C
zG!sE4sUc6|+2qBMng57<Gyf4O at ccLx(u}g4NQE?@^CdZWew+$vDM5v_k)Xo!<5Wmv
z_apHTCTRomBpFOz9GSEfK_(4EkWF43nKTnYCaELHCNGXm+E6-;YeeTqwW9OmR7f)k
zDx`q~6`mibLRv~tA#Eh6 at ccLx?LXU6l+Zr19o5wRXgiKfT7nW1GHC$vBxI8pM<&fg
zkV)zYvdN1hGyf6!CXFbai@fvvI2F>2Mu}=CL4`D=^W#)VO9?8ZjRX~*AE!bZyC3aH
za*#G4PqMPfizAbkBFNfDL}Zf}M<&fgkV)zY&n7R9OxjR7jcY{bN428!<5Wm92`Z$4
z1Qnhir$SmvP$6w3sPOza741K}3IExRYU+Np8%HKBK?w<&Gyr)LvdN1hlV&2wBy|MY
z<i(Mh|A>53t5G@^dFT0YDx?{W64g$E3Ta5^$ElE(5>!YV2`W54PDT08JU-jFpT}n!
zkQYZLEkTK>h9bzye^SV#nFumT9YHpEah|m{#8EBz#{E1#Zic)#vet%(tR)taO<o*X
zYePiV5{t+tFOICW5g!TO&l6+gdE#!C)`p0zB^HrQUYuvG4G~#OEFzn{II`A8d|Y!s
zkB?~}FOICWAtGyuMP!o~N7mX9k+sAkvdN1hYi-1P>HE1jy3nm?CyuPOAtGyuMP!o~
zN7mX9k+sAkvdN1hYi-2)ocnpazk$3svet%(tR)taO<o*XYePiV5{t+tFOE#wcpTBk
z1ElCrKA`iZ5d_bVQz6YHsE`H{RCs=z3TY`pg|v~N!t>))P-A0Q&Wvdb^J1F9yf`vy
zDTa(1h#{N2I5KJ`hKy3jkWF43S^E!t);FdRcpVqz$FySd<5W;Hrj$elHDK~3Dm*_<
z1+`>QBr2#4lP^)>`Ee?!v77096y3O^ObH*`8fC`8QBhHF)It>8X2!u$KT&WLJ_>F#
z<KRXu(Y+W1k8V#<W*pq8MFcmJi{Lgh4sO&Uf*Z+2aGMziN44C~rsB13^asp~`3mNx
zk$;|yQoHRsJBF{b<0Me+2@<H=1PPWMCxOaOkU$M5NU-cUiJJ$!zTyQ0N|Mx~%9dcw
zGq4h8(}9+MkOUIi;sg*&CVBc{IQ$_1)2~>(8IGDegW)hDEaVI-V1Mu#t&aVn0^c7z
zbyml|{!pru4|TCWB(NXA9Q72AHOn+^(DPMp&{H}$=-1hbG3Y6+8}xj&8}yXkN$umb
zpNp}Sv_3BP^YIT!rKhk{IyZc$RGz|4X<TC`6`sN_)Au+XSH{t}GA at rRfSuBJ61z;_
z$ag~DN$fIxBj0tgOZA=h?{U<Y at G7^mI1aCYOX at p?U8-;3JEfBpcB#IB at 4DC}`W}|V
z@nO8@#H=!v6MRDFW$-0hSKP-{QwCq6c*T8v_!8aE>+61ALH7h-Pxl00qI<=CE#)Zg
z69Wtg>WcgN at Fltj(<TEAcuuUvVpavePsW-u_!8YK?vu(%bD!2d!6zb4Dfel3Fl}Ak
zgXfg$p5W7dA5#v&m*`$`UrYCj`wGgbr+dYH8h-dgdO$NAL`MdgRqprcF-;kKiS8Bm
zDczTFUqLxZ-KXJ8V$Qt2?&lSBPw+{<k8)4&CAwGK*V4V>KCOGjeSP>6-Gk?p#GL5J
z5`4Ba<`8^Z_pz8m@Flue+$WWjgfAWE;K;Z>e2MPCv~_h4o>QuOg0H80f-lj%;=Y!0
z6!)cmUsv~v`!u|YnAbmCkH-^n!-tl~hS%j`pAeGkO^()7zV(|y3lPd_eOOv9uzf|j
zh}Kea5v at vcU4K~GULUH;MYNWZ3xdn_xRP8SmX- at 5O;vj#t)=85S{3BN*jB+_=>T2P
z4>heaxyor(lB-htO46#@zHqWs!CvLGD#=x;eI;p;&qG8li&0>&Dt=f_tCC!m+E<cR
z)%Jy5*3$MWjT`AsYaqS>p(H${V?qovseRh_jqio)n`FfcWjBe}{^7pkjfjbRiZ>#r
z%87d<ZZyi6xQQrZs+>3`$u4di<JRttxM!?#;+Q16h)EKPm?|fZNwSNWB%z3@a^jdI
zyLjM~Boy~CRZbj}WEU|>LJ?Et#4$;B5tAeoF;z|+lVleUfs%yc5m1#A$0XTBOp;K<
zR5@`>l3m0k2}Mkm6URi^hojN8{1qv1d&-oyn^6Ol83#utM8Q$oD7ejxgQGU0;3#$!
z+-AnXwOT%iuQt+>e-Pi6WHaO7S}iiTmRtt6nQ?Hf78zViE`!_5IQZ;JR>+lBMd1~(
zh1aA4LLC0%a4NqgA2TE$qzZ97v?6`Ta`te)kd7swv1|c}fL9<+2rUXY at Uc;e3R+F&
zN+euvDgNksBEPgnV^DsA2Ia@87<Jv^$3Z1Qj5er%M8_)-C#2Oii4xNCr~(opuRxp-
zHU_kBlo0y7Eg%u{3d9Lr!k2vhBB_irBw)%Y0hB*&q-u&^OVU|!STymNN)5#U85+>!
zOI-8(I2E+7L6MY#)-(AM6`mibg2pu{5*0L^$(N|`{5Tb-vG@^DMP(!oWSz!FB|~I`
zBFW-3B2(e{aao+kWLca>WGXyAPQ__#C=ODcMuy^0mFLH)fW*f7A{D0*nF`O3Q*j!T
zWpNsjsqp+b6{oTI+hDYJlxVE%tuO|q#K%M`PGc!5PGhnxP9yU1VV<AX*t8^$nS813
zqmP;VI2H6UQ!1u0lP^(0jhXy771Wq1B~d|*n0$!}&yQ0<AJZsedtn+8t<Ur0RG7v@
zDoi6H6`mib!ZapQVHy#s@ccLxr?L3>!D%HvRtd|*DLU=NDLM_sDTZa at 6rCpH6rHx>
z6vHxcim27`<nrNt@{WotA$dG%)Rl<SLVdb&QrkjJxe^jBzeJoCYSJM|v`|N`ghb0P
z5vPSZoJL=kN&XgnS*FX4<D=f<_^1(;E6Lz;<M^nnI6i72j_-2g_)b69lb<KzVRxqn
zDk4b|6p52_>WY$cT8WYiip0q|?M2BsB}K^vMdIX8nd9+H@@Ui$WW|&RS#elYS_Bp~
z5rNfNaadGN1QsQZ!0N0xEG)#&+N~e%B`v7D!M&sglNU#xCy-U1jBN7a$g``lys8K3
ziq|U3HRHP^1^Fh_l{tS>i9+I56ne?cjeOq<eF5_%y_>uQ?|?i?#!!_jp`+ic+&DgR
z9>+)i;`lB%j*pHW$47^b<Gb8AJ~n$mxVazBCeft=TOgq&g%BsC6%{9>wV?_~guDWA
zLRw>SLRu|xLSBJ5A+9=ce5(D22#Et!uRxp-SDi?RYeppG6^Ik!suKxu&4`4&0&zlI
zb>c1$*NnK?;}wV#;;It~am|Q?yaI7TTy-KLt{IV#S0GMkdVeMLPSeqF^kE`38>o;#
zlQ$3&Xde;_`#?$@g(<kf_1)+%5e^d<4yPadTcG-?VHxI!#FsUv(^`<zB&4`yqPd*j
z{wxYUO(^qvIuf at TAYFe?&flKL@^M2$?nlXQ5@?BUWXvPHLAuBrmXGrWxgu`~v;=SC
z4<E%(<BX#%1Z%{(!(7p}X~2YK$I}#tuu&n7b+A@~OUO-dnF395Du)LpIbe!jJx+y)
z at ifh)jF@UC<NGUd)&l8Lo5SJ>HQrx|t{4YPc_NS!hvsp#Sz;ItwLWITeN4lN!CD(P
z7Oa7bM6e#q!MY4H6|Bc{ur7m41?%}(4y~9j`3$DVedaoXhUpR-rpM86#B#rwL|+Yr
z;}MfDq4WGW6&!#W6scRl;g!jksPOza6&w^96p0EBc}%`Uh3Chqpe(cDT%J85qm(J(
z+srsPnj;F1x{iX|%s4peCkl?jN5O4o930g$U0h#|uEb9~qU<_5rW&0cCxOaIkU$M2
zNU-cU2~<&n1nMC{f@Q}^prXcUMd|FAqI7ng1S%>)0yU8!!Ls8dP*DjIsEGs#mK`TC
zMF6QCQ--7*%7_Er#{g%TApug2I3U%NmoZ|9s!9o at I2n#INg1i{cErT~7-Nz$;yg~V
z35bTl3`vhvBMx{U1DwSGsYV=->dA(QA*w1Rkg{QtkSW8&#QqpVq>MO^*JJ43B*RdK
zWEjeb1Ah2O6veMjnmh$tSd!g8 at 0=XGR+;*n$fib;9{OaA9_2}505avpkumCy?&I5$
z*gu(ki2~1$Q^CM%P$WBGXf^o~6`mibg0a`2NK`PontX{0&yQ0XT at P>Mj}uXj1gxsW
zA#bL)62FjqGZZKCkdr_gK4zi~6W_ZBQsOF2lDWhR4M>!W2Q}i--p<8V0m+gjAUO#o
zvKGfm@HL0en@VPwiw4EgamL`yX7Wd5DMONzGU9;nf#{jI06-ZMAY~*0N6i=_<U}AL
zCyt4sX|DG~<PHYfvn?P|z~E#H#0g<^vc)8uVfe8HBtl++I3WyB7Dpn45y%#h2zdqK
zgiv+E#a-%ai#l5(f@;&*aT2Js1PRngf&|NslR$MPNT4nfBv^Kw#Q*znCpP)<R9peW
z;z=<7?S^`dJPww4!QpIjlfxMnk8=jOIh<kf6qvZsH=D>u6DEmuzK;_T3X&zigyaNQ
z5BUDt`}tzXhkCOIsG?IPNS+_Z{wQKYY7(30$Fbok`*<+Dx&Jtwu_3DVobztyaL_wG
zd)qtjitMw>aT0J*0+y@`y3sWH-HZJ}_uX0lqH`e<@v6tEjIL)1DhEgBX)0dzIF*mH
zoB3bj!n{2{?*DsI8XrI)^z3hcdiHE``*72EgsTiNUbwp--Hj)M>A3OfS)*}!c5r&w
z1ri5u(IWcs{3WT*J{|JM{!jgb&e0Joj*m^+e$+KEVJ|2^um5NH?+P{Eg;n11I^C0t
z^Pd>z@#&BKGxmIbdf|!CEj$iRc=4BSPyNR??D44G@<jF@&->?tx4o0Y)3^JbJ}>t+
zmhmo@;h?}_&o3AY4lB%YU|~+@@X!+yo_k)xe)m8A(@!|*`U$<GBd-8x!iNC8dj;Ux
zFK}{t<`p>aUU<*_5b^xY`QYL;28XkYbFP6%I!eWg!Q*l8%yRp0_SqAZea9UYpShFa
zGxtKM?Ul!8ULK!$`Oe89qjt)rdFMTWAvn+bCtdIHmH&8j;pOfh_>X<>@m2SY_k48W
zKX?Cwu?U3u(<|@ki2LI{;PRpX%O5)@ym9WIoch3iz}P<tp7#$p)_$Kqfy?qoa9IBM
z%6~k%;JFxwXg{0B9iGsA=PL)ipMn1y|N9+#IBM>AI)!J?2H0qL at pg-Q!qJ{z`Sg^>
zu_Ji&WyF+Mo?O`G7(P7uN`eF*0up at 9K!UHilkO{q*zrsNEt=&)duC7l-f_?y^qV`J
zIc)B{e7kkRTV#LF%k6VT_50i!{eEXJeD;v~9S_PgW&fOeSpVDuI`41>kB&T;b078G
z%RTNM^G*lci9h!GKb>&0=fQI~cs>lC&-*>jC-xObT`$65ClMrJ?+_$W#e>r~C){vU
zHB6++VIo!E_xyt@`$<&QPr{1*4!0=Q^HZ>zpMteOuLl=gcC1)P#JYt<;<k4o^vp+v
zRN}diiU<d%Cog-idWSq%AP-VHFHh&!%(w~4pYc$J0A2#p_Yx4Qdv?H4uu_nO)q*6d
z`0k+J`LSE5Tudf_VzQ>*Vy!__=SiA6Ph!-0GF4V&crv5TlQngE6M@#Crp}Wzb)Lki
z^JGSyCo}3iSyShoyQa>QG<BZDsPkk-ohLKuJXuqxk3#vf^CV53Co$?gnNjD-j5<%&
z)OU(@=SiA6Ph!-0GNaCu8FiklsqYr4^CV53Co$?gnNjD-j5<$N)cf2K3E<32Qq;X9
zU6K2cuE>*gMV_Q9a`WqoJV{sNNxCApoUX`|bVZ(|D{`gliabeI<Vm_B*O#uylXOL%
zL>1p1{0QUe^U$uvWCAEABgi4dxd0$Y!pcFCrhd?QQ<$B>L^n*<)Wc*1Iqvlj!X6+@
z!|Gw0sT+o3EXUJKU7m(@&(3>%9)U?eb`OLut(c0C#nj_BIAmptq=deo!24UsA9Okc
zZw#f=UQ6X at 3s6TcQ;w&-kpNAihiDRyr0TDEB0(MsJRS}_L{m<vTfjRMWQMc?9+nI7
zuv{Tc;14G0MLZ}c)D7`El2IrzL{udMNL4aO>`R!G7-FiDQgwmPqToQiC^;pDqN|cc
zLPbnqsfbC5A*L!BV0H$A!6`A6U6quohqCu2OiBzfRmlKTl?)PrdQo;t3^7$nsk*>t
z5fi9O`b6phrYadEDlHuijt&pIJZ?i1bXh%bQe?7T$7 at lRT<hp{oEB!uwO+?-QI=E-
zbrqqdv*cP)xlqp$4pG~2S~0l*FkVZLD>PE5E$YPz-5*b&{);D272ccSaN(FIP!*m)
zRl?!dF;Ac>Jb|k4Ar(>K2~>qAV3p3n!4Y5c#adw+Rt(d0-Pe3sK-cxsbX_m){H0f`
z)ALsH5V?19(LFzZb9TWxV?>8^*vlv;9vpSODYd~k>Fgiz)jN&R4bzcJq#35~!vgHT
zGjjCoE!-ldLrU&&n<F718R-bg4x})$Ql-6Q2jV3=kPdex#tBb$AYN$);*H51h?nd@
zykrFF$vP2|5kyF4Ae?Wqpu*<K41^~;kb-F)P$A2K6|zV_-TgPO!jUm)NXj4`Ng2dj
zxU586g^9#ZnCPk>b${&g;itn0a~x2ZLvj_SCH_Q(B=O2Xusm<K24}2=^ovR7FAsTy
zfk!@$M{bXg3q$*ZP+lxoNJN$ji6{#s9-np2yJ4G@(ltn-JjdZqr8%MUJe}k4bdJL#
zHpk)V9EYd(&R#M__q>n_dE5nhulc;D*Ylrv^gZew at OTQ3ZyAxkp9_yX_we;wzSfM7
z9Qv^5XTzhH?Fn$$^YYGKo-;NM&t7_TA(wj;W(Ut)8Hb)S4n1Y`4}J0dN3_t{MK_$W
zqd|paw40EOrO!Kk&%+ToOvCD78rJPy9PJ;x<QoxKyO@ggi>ZikC?XV75uupc!z5;m
zv*7t0pLsi at 1l|DN1~q!fCPxgO&+*wq!~_p9sBr|lq`aSh{q`-E;9D4wglzC6)Xl+J
zA;wd?EGDCNgwh8`onvpg`nbop)Q>xSj|}p7Q-n<Zc+%(G!4uEy!#)br8SJL{doZw_
z##<2VFdZ~`0t(yLQPERnBpt<-$|Fwa;#Am*D5fGtG4(&*oN~e7k*~R&caM24Jo>pj
zF1+pXC)_gUhg{5>v78*9yV0c!M`d(+;c$yV_fDhG!IFP?_QyXo`qy`h at 8|cE(e!FM
zYN+!i4R|Fy95ZQLJ=~5K)4SXG4~@nj{`l+}9%zC>@Y>90SPgD_&KK}vBP#oR1mzay
zoC at UJUOrqw(fRFn&+x3u^s4dv<#cjAhBGXi16Te1WYKs|#TtM9b7S*6DB7UIE%=*P
zYNjfE^Xb_)e(_eaxFP~o at W)Y^B`YBjkIGHFc;olKr^1M@#GdCAzKs|DPUFrdi-*~*
zIrIa2-+!viUCUr7fqWg5kp9M}3;W56ZdH&b(k_C$%|jsx0+fGyXE6R&SrhHmX#zLW
z-)$NexL3tBDk+0-w(@W!br8;89uBD^P%GgyTLuVq3;#!Ra~b0;hh+4f2F@?^&j7GG
z2nqNpFl(YkrOdiWx2-^YItE~b=Mu+ZB&*Wtfjk(=sC4Kc4@R;nomI$#*%R6=9z4uL
zX-Y!jIgCsgNhmzOkqNUc2nFY53`(}I6I-7GH;p?A^mf>xV1K86bN?#w?!Zmq(5K<L
z8i-^FnDJ(!YzYcHhe=KzFOnGm<&8lJ<9S at 8)bvoJe!zi+JjBY1TO^tfL(4e;gao*j
z<H3(4`xH1t!m`C-LtIwtJwB8Ags;+_8`{K)HdjGZ9VE+E@(%is&p)1<%F^+!;a`oj
zN)+Z3dy8wjdDM{OPk}|_G@Il`=q^5Cvm%8W<F1rIB3~*ZnT0Gw(hg3)oayiG<AY&r
zFhxu_2}??;hJm4^h;e$J0fB+D2mz;VGcZuoi1A7N;#!S2(9I>Br{7oXAyKEPI4#@I
zYB(yKrX*EVrPW$WE;y^1MXkLgwf!t=TLHBX({_4D=Qlk#ikjEtr6ASKGyN|3W)SCK
zO(09^Jzwg0Jg0ua7a6ZtWD!$g%LjpVo;(Z+SOpC1)zOPHf)oN_l}|Y>TbOs4)wV1#
zXiVozq1OGfP(q*0aadZ0%%Ub}{tVX{vp at v5r^U)F5W(?Dd(AAA7scjdmPxa4nu1fP
zW#K%SWuhxBQ|FNrT#y#G^H78VEv+=?p$M*}*3mUgMzcl-i!|%3=mxhR1R3HGf)l`%
ziG2QXN{syb!2wQ95|kSeq{d(9*&@cfRt8EFW4;W7D at lBKl46FMhYW)YNtI#b0U=zs
z$^nswgmkAX2gZyFeIwCTupAiE1r=dXGk>F1YhOR{^=kCLPez?~Q9M3I-)#K#ugbh&
z8?%NUFW&r4bcQ}$jj<9}pxVl#+Ky0#8#tC~Iqwl`!M&XfkW^fWkIsc*6K)F~!L1mg
zjqSp<X}Iqn+rtpT3jx99pFAL1qVXM$fat_Q9+c37AQar)$- at z%Ke42);pAbdwZNi$
zb~7&%P8hEsZ*(9m6G|AhXsFlH)FI&v?T8VNai;)Xs-jc1BNjZC22v@0gi!#BcC5Oa
z>ik4J;kcbA*KR~V?uK?IUPMm{kFH$j0q#Wr%>jx$v=@;mL+2?np(1ex$N6v!BNHrQ
z20V$74;E>O>hPR8#*oQgq(Q3tgPB;uWP%#EIxCO|*4&J=CpcY}iPWMUmSQ+GM-Fr0
zB4TQ|%&^hiipi;uPiAtr6$u~u%xNxnJCSB(4y9&tw-aev8ZMW+-H7+%EznHPb|X##
zP?-U|xf^j1fXa;F&Ao{F0ZL6jDt9Z*y@=`oYCBU`dy$w1P&>I$kxl at hb~B+~M7Y9R
zaJf*CHra*ikGW8h_6Sh9&hR1<{Q)Z18D2yiPCwTfUPK#CKi3&vL>o>&(-~TuF(`e#
zJI{(OS_TM~nXzkweR{lGp6L`VX|;^OWjaPHHs06VWjaTz8EcbD*h~j$Nh{t=*i0vB
zHDe7*ahK~Ttw>Wh=R7kVB|6qHS4%SS+K~?6te*=M3IF<1Y%W?P)|z|7xo{DWJG8eZ
zasgvjtue!IwIgx2R|_l>c at -F4%E*;97J&8D at l3d_h{xG`6S;U1$1`}D1GUyx#Ptkb
zZY++Czv=RNuB?&RL>JsOR>m?u8Wsn5{?rBD*+Won$t<<<{DL+&5yh-<#+UEW@>njU
zr?#xC(QB%Ge}pjv<0mg71nI;rU%p8R*i@VUoM66$YX7yOgy?`s&Q}v$*oAiqWLSo}
z*$9q`?iKk#r$d}i>K9jBd at WUI<#-WDJ83lxp=INBp)3rcHRBDWEDWLdz<Wwr7(x&|
zf~!DT7{ZtnZx>}@G?&@W#(Q>aq9)iHukqzk6T&0i+tDZx8uRvh(0M+g*H>#Pay*5G
zn-$>X=8soeNQ`Q%L>fQdgvmj{VNNlG;02l-6ca%FfQI*O042{N*c3liw}|Ngs0s?=
zw3k?F7h)IQNm|K<5&^AZLy3TDj1YxjhES{6P$HIAwV^~zncHOKZI$iU6b94?x1tRt
z4Yi65C4^eVh7#dqj&$3?9ENZ*N4RYv>Jm;n&uY?!65_0KL&@Q-XhR7BSGS>rXe-)K
zLa3E(C?VL&Hk61n+I(2mh7uyKYC{RJ^o7zq_Z2skNO3FKP;y%9WNtt=Tf(@J!DWUG
zaYKpZT-}BegUjVk+E8+E2f4bFHk24#E_b_;p2@!7G}Gs#4Ju?0wj{Dy6J{tHDzifn
zH>fmJW}hH#P-&>GOkGJER2nLC$+;<QP-&>l<>sbzN<l+qE;To$4Jw3M(FT>`Y9$*~
z8Y<Trqzx(!mFo=B29<`&bp~mJN<-y3gS0`Vp)#GJwHay7Cembv2XVuTSX<qO7lX@;
zIO2vEgUfU@al?zjWjdR<;l<!G9ZuZvVsM#GCvJE#xLn7RHoOq7?uJ*S$F%Qn%j*SN
z(gqr`XWz}1i6?EKA>K+h&=6>K8)%5O!VNTpTj>TG0>Ul}ye~i329X&kzRx!oD&}sr
z_!9QwP{`Hp#c8wBE2J`|mG<Ja71X=Ra`B{9TxC`DF0))bVfCK#m)lK9dvS=js=YXa
zWjfc4y*ShyE^vKPzv{14;=83*vQkMvt5~Tdpc?H*SgAy)RjgDJORHL`B&JrkQi*UY
zTB+1ft5~T-s8y^~5{_vf6}?<qsU)1t_Ajke5>Dp$P+F-(oK>z=I=mIFR3c!#mC8L~
z{fN{C at 6^l-=+Ys2L|W0BCqk`k%@e^^w&qEkt#r*35m&Y5iCC*!^CZQsWX;oQZ6#}-
z3@$SOiEExD=jzrx8C))R(we7(TgjRygUjVkTJuCWvl5ZJBrC0XBHoJDJT+8i*CMWY
zYN*WKMO^dLP?;+a;-P#EmAUF5u6b&x%oPW5%~L~Vt~Q8ko(Q#~HBZIWO4d9zRIW2f
zYn~b^*BPWWPYspp4APpXhRSsYY0XnZWjcenMoCbsTcc!fnGr%<qhxTIjv=m5GPq3V
z5Z5RfT&9DFYm^Kw(@DfNN(PtfDAF1w!mV(P65-UhB=UyHt(LH8q`~ML6uEH1K7fX+
zv;E$Z);kezCF`9Cw7T_9L|fr{C&I0Cy%PcJt#=BGlnA!63j+>pRTl;j5p1!lMM|x@
zl`T?oyv*^fcwvC!<@OWOA|>LjYLU`l896f+DdnT7_}+MmO73uF>Oeg%>)}eLe;QQ1
z<URvNKAH-zzt6ys52nI9^D{88Ef&SW*YIb6V9Xal;N|@pAd%z8^p)xi7+mcUc%g4w
zXTU_>Y@|Mkor7am#(jTLU((LOF%I)diRZ07#;=fw9UlJ<0I`7ja^4T`){nhnrq!0V
zNZ|Vc7q9Vi0cRKI8ZV<&(v3yrK$0weLqnA8E&G&#Bv}ehkPP7j$@rOX`$D7mYnQgn
z3ysWch~h=J at nuH7r$BUi1Mhx81#u(Y-N#X|36L_KO;ZugoHF<6!uK=qoy<PXR@5_$
zd-@>ok&PS>IiLZ^3BJLLt6ixwZccN}N|j68c+&U3jA`Nm`iLp@(~VwV5BysiMO((j
zFqgNq812Pf-0C5NYZAr#{>Qpx@#RiBZ(zW<egw04-z>?IMZJg7+~8Xqe{a2Srzi%o
z74UW)|E389G>jR(CqlD^7+n<tMob9tiT>r4;x3EPBp|sb1+X{*2I2q#t_}(@Fb;tu
zy#S)!%0j?+<|Fj?vH&oa1pv*RECd{y1qhi!;J7U42;zOa+zr5|!&IN{d@c@wmMgj(
zetj(HN#YRl7#+D#SNE#0ArH~%BWRWRkoz<If?H(>xi_Paz*WYOhv$cSOT3CQ<gqz?
zO|CKzW?=rQIPy$&gTgg5FoE=b?-UC9L(mG~b9KZ!dYaQf3Pd=H0bjYx1VN7oIe{<s
zWul-{2q?-Lg_l#u+X=nYq}bNrGl#^G(@O%vw3AOu8y3H=n5hWCu<%jFOc24a@GVCT
z63jsoijW&Sd_a<rD(O;g>^*8`IRjT5yZb>O?#=hJ`VE at 8`WP_X%!3g6VEmq5&KQY2
z)Mo=;QJe>X_ANjh=V1svIeq#sOBSIw$L|R$jOs%&;04=kaXghALV^-Lg)_1EI9I)|
zAIX^U>7pH-wwXx-D|~&IQF at ku2DTB_x1aiOyZiQe(85wty!ft;FHtb_dG-v!q?dvu
z^jdgj$>NDjravK{Bbk}VG5`7kB{QG72g!=DI at L5WOn&<RWz#(D7GI+ik2!xwO*2oh
zzo({|DcRpq(^Qh>HBB5}W;9LpUKtEirq`Tjbb}u=%BH%^VrXAkw2bw}gG20$Gh+I7
zfyv*Hre5c0YUj7CsiW5!KBYdT_Zw|}uX8k29Nqs$T3;tSP!$Iyza>>=MJi#K^IOtY
zR;<c<qhg^8_&XjdP!r6GR!y@}_M014^|QlOQ+>?xH`oc1uJYp5Z+5t@{3>U}(EQB~
z*p*+QuJWdixaz#r)G at v>Ev&b;Gv<!TmA>c<ue0<F@5>V?D_j&OVqcy>S!0mmeCf**
zC~KfloYs6<0(Aztji@;L_yQ%$YDK~%;R_Tgs~rhr`7cnUtd=AUxxXxt`q@oM7#V+o
zBIUKE;sEvw6e+JQ6~~!hph(n~@`i(WfFNTyD0F3sAzp0I26OEWtjiCM4tpod?Zl<_
z8<Nylvy)w${LxCbn`@J=y(f%EMLwgu<n00qqm;VNO74<JT^do;B~R{>NxrxRx}3Yz
z*{8%4o*C{^>^J5a^T$;!KE~pP3R-`vej=jSXMAbmWOeJsiRPCkPF9y*oMwJ$;$#ht
zi#_v~B#!R!Ga64Zcz<#7WVIflJNV)R%4$Et^zw at nD60htlglqjAXxClL32hE5~h}4
zoIrVP=*u1;C=2}^ZePSkJS0$!Nu_W#D|Pm{xNne{TZ_EDfs@yRPHyukY+u(Uo8`pC
zUE{iBv%+<81GX;Nte{$KvAJaHn6^0bu1Ph^vc&;%O{!UjEskSrQq8h!akyE7Dr`Jt
zw%OvSurApw%L;?Hx^%N_D~z$~(#^82Fchjm7Z$@a%`1#p>e9`#?@Gdyl6T4ezqY*j
zM*;BeYsTtKv73(HIxLo*eVE4Aa>P#EtPbZbXp8R$iC^w0GP-V|_&OSj=5Ao#-N)Z|
z01K~pc&d20?l!4a|9;v*=jaGt>8eg)Il6I(;!R0}fcF<xhrp`}MK1PoAc_|yk&7n0
zybIZ=u0vRj#0sA>xG%o&;oovN7p_p<B<+R#`P$m={>Og?bG|qP(i0#~y44}jUIN6?
zMRf?YmjLmKxG1*fxcdp$T;j6JuXq6U!9`YJ$GLkPBC5XX5K;A2hlr{VA#&6w9QBIJ
zE~~G5a&i7sw*EdT`*WqoyEWk at m`A6lXG9de$Qdq<fk8irGKgXPzA6k|E*EfKY3DDz
z!XU2Bs2||FUMjj{)DZ|nc|!H*2a|HtLoxcr)mn^x`zNO-@X{*;s%DvD4+1SR2LKfr
zM8qR_rD1grP>Tfsc#T4JgyJRpedvF35Q;bK_xEAr+p(bEv=%qTj{lyuc){J`Th at RU
zIGrO__I@#Jk%7iKClCdyBNSisu%GERg6qA?b3DQGUUjqVF1+Mn|0L7$^s)CqnfraN
z%Tm)fgLmx3Z4Yl7EShfLykG-Eh2{hXfq#4UY`z#SrlZF6cJa)<6S28-IT%kycjHOp
z`RML;zGyryCb#q9V0t^hy?nTW((~Kzo_zu=7nr?)D<Zs~EE><LWaH0&ZlE5~cd!!v
zxQc8_P^?yT0esWP0A3=R1%rM-9g-vas~dyKWRXB%G#G{<X)kmqaiW6>g;N^7i=3e^
zA!kKBGM6Y;6ZI&mF^NKNvJCXdrb;r|q8`t?7X>vYVPrJ|%-cMiNQVqBFZ}mBpyEO*
z+f=ElhLh8?JgUXD#Trz5aOMhq*!f<CcraW#9t?wc0R2nRG2q>Ox^2658pM?l2YQ(z
z4!lq^7YB!ZMId;e4=Rg?s}g>i;Hx5zX2?_aKRo;69~wOfu(OBJVtRMmm|x#5=07wV
zfB2(~%s<~v$0{^GwzdW@?`Ai{1qR~9U{k3y8lg8}JWO-2AbKMah~g@M>xci^{O`t}
zRk+4Kf8W at AyrQ4)crTISWsc!KpoG!iav}2R at q)z*jQp?Vr196rbH;8tkIkJSR~SB4
z(%CnG7#@?113_Uib&0GbRrbwt`uZ-StvG|1zOF7mqpk#2KD(~8Pr#^Va5bG=j|W$`
zZp4Hw(I(IT3)>QQ&}xv)x;8AgVKXi-r(13mQpk&CO>b_RtwiQtERXdTJ~2YPj8((j
zomgft`*p$vD>^RY?&=DR8N>6!tIuU&`<P+gM-{>bG(OyX7*+m!I7#Kjc%Kii<5{!!
zQJLq%d4gQjYV){gQBsQ!({_wUuyd4+8^N5LsQ(K8=&5Fu?(A~9h?_6mGH^x@UyjCd
zQiz2shOS<4demk764TjZG-EONcsXls4?wFWW%g2KK$7Y0coL;EFTOGx+3wxkUr$HV
z#Xu>4IHQhF%-J%{qEKfqngj7iN3x*OO_b2htQoBnM{8r9XMg*X9S-R*j1fc#!#p_^
zhM}A at ZV-mUJZ3#Fi-Kk%lZRoiB5%-M1|jk=T*&2N*vsTT=4J49>tz(eu%GK~Lj_rU
zCoRb0?byrWvC7Nv!*G!0h2bzSrh7jO2ete#9AtW7ILwQZi;Kp?um=}}VJ|NT!(N^j
zhILMb2uwwUFzjK6Vc5^~!myX+g<(G@2*ZA+_fAJIi-%z^gNI=+gNH{yLk`1InJ^4{
zWrQ&7<%eNdX9m&ni%u1yEFaan!7k2acupeF>Y^BHB{x+r$>L#2dFIF7I8m&o{oOTN
zv6RFXBg4m7tiEQPwQrWms{3s at Qby!ZQGoh8yqz!vSAaK7slaX-!fq15Ti_(iyRH-Y
zOS8W#W=FN2&QLNJ+hRfLpgFSqphf;h21cj=2tIbmRMKR1oRW;8J>R!#qC9I1g(h35
zrodT$s`-w^kAOkVn_ORK22GZ;ph^^*tWZW2-_|cQS&iTdgbgk%P-wD+0!f6R$%d7K
zCL3l4O;%?Ix~}@DWR{z(M_6dGIzMQ#Uvz3lCrUeH)mkJKjWq(LVXqTSmXEhcp_&5s
zT9i;K>I|AUxxUWyTBHxIN`x&^EW=x*Enw>hEmA1px2Ix(phXG=k_cXlELQefWHH-o
zkv2Q3^>l_(iqs-4vbK!Bw4k at O&<%qY`J3rPFROQ=R5Yu}mc?0Rl%Nw8$f$BblPd#v
zE~9NP*VmarljY#5M6t;VW&9?q3)uRFCR->FHn^}rp~)5sBoTrp8&(dQY?vK1S)J|F
zob{Jdiri#9!i7%M`bW at Yb*(QmRp>-<*9~?(7n9lT at LFw?+Fh1Ujc;)e_1lfcx3EPD
zzeu-@Mjz{lo2DDFJgpX8mv&jbnXax#8Bo^s-q_N4Ep>bbIJ&*N|F-cr%+_qekd`=A
zzdcrQw97Vl at lh??YIeo^BFk7T#x>@p7{`3ed&u~uW*mP9j0-z<z=F{;b{(EzxVb1X
zPCXFQsuCR4jSy+Z&6y>o^dD}4dvc`0Ci at lbp-bEBnn(1R$*ns76l?_pE9T^r-K_Qw
zQqdN<!9i{206oHycy}f%fV#|s8gVFSISs=U2#2jnPXQa74Ys<@%aN<Fg3WkAFbyl%
z;sv$-l+IlXR?lu43XMax-S!4&R4H$x(ezS@m~B*#z$iFm%N22I_i9>!cvbXeuc}dV
zP*sbleTpBO)1s+XGplrBj*i8da~6Bw;rTfK_{rv<8gMcMG=e8V)aeti&PdgH^iR<=
zRV|P+Qf;EEjl44|EmQ4MRntdQzK0KxJ7+}CxSrg;UwjxWhL_iq|7vaTm~HMhhPMj;
zw6I+CpYNNPt^Tb5Mn$4vl<^hus~%IH`PF-h?eS}yS#6u)V_Ary&vXn8dW(nK`Sktm
zWZW2i7|t4h;G+x(yKtHaQ=r4Zqlh{@d%^e`av)aIQ0L<A{`>36&y(v$uit5?vxN_{
zi9S_m#xr!9TMwso+Rfeg;d(OHXO}jy2fCgv7T1&SC%5D2 at D_Rp3iOzP{0!#PUniKT
z27}OZ>t5abp+}Ol4byXIsa1EOM)COf_6|bcKHR90-&_-Vv9-~-yPwR4x8pfgX+uXn
z9bFIS^9dzvZSP?T9H`AT6HsC{d4DwpIk3vfo8v+MqI1#hZ-6F-3tNsde(IlhUt!KK
zbEsq>J~fUz?*{#|?m at 3}G=LHtl<=nCJ;x^)Jit(X6X>a71Po2Uu9Ml-aAeUT_v+zx
z^yYTDKveXB-~Ao at TuyHv7SrqbAE&pY>xc2=k89w06MlBLw|_^!cecFWm<B(;YqqvF
zx0;)~%~tz&o6W7Qoz34hw%5Q*0rCNSWY%c>?tex%KVSaka#Sdw6Uy>q^}g`*g8fxs
z_#RH8UQOTs at L?6~qk(s}e7o;zKiJ%C!hdbBe;Z5fwsv;G{<~Y7t=}~^S3$fC<2P=9
z2*U5^qEACv{9y)ngYZ=PWC4fJ-p_x4h}t-~yZ>c2eg6SYdmnt)Xo1aO0=2mbffxR5
z)4ve6;qPtwcZdGnrGNLZ{>#~9(&*n^Ej|us6PW8g+>VLL1{{PRX$rTC+4S;Z0sZ0S
zFOB`X%f?%XO2EkT%e%`TKGNU+&v10}!`<xtca7nqaRIlJrf}YE_`@?Kaq(d~Z`{xB
z-p__N4fyj4NzOINKQ(^2duWWHJDW|$Q|KOvQe(PkKtJ=xyIBLe!Rgg6hy!WB-DK8S
ze3&#K#NW&tcUScA>f}x1)#MiXrt8Mp!zGYz98E{S#iTI=(wH*;K<pz9R*#AOr^aLo
z`Lo8)li3`V4T=ONo`Y1t=M1_xGy%=mhPS^ouAvXJWo2odP-Ezsi1-KSM&S>@1d%|0
z*Nw|b<6%Czdbr+bfTEGfx4nzkr*AGAaLcdpwsU^oIl1`hPf&RA;qGD4fboQan&QDi
zkPNH`9rNNB&<NH(?w%jKhAN%?-cj%3Clujj@8YD}?>Anao;Ny;v(EWN at 8Hc*=e%+D
z=KSom--Q85AMAq40d*osM58dO0Hc7jj3<jB7+;C~6IgK$yj_nQABI0qz?!4U^k?8~
z2;O^-d>QBnE>av`-`&0^A)&Bynm^(7wA(vazxp_vE`Y~7!t!j0)w%a>H^Iik+rM0c
z&if1SxJBc8H~@aN_|SNHeRnt807srL?rw23(b#M?o15P^+t_&C^gDWN_K(vmaJQ?*
zyNm8gzcV;EJ$c!CHF*8(A0csiJ1L~&?U4&m-_39|yPJc0uoS3c0=j}*BBKw$^&Pk*
z8j%E;4{s)oTli;gJVUj2lx1{xa}UF&?-x at j^SX1?c>a1g8&f0gTtYJ$sv9at!(S$|
z?||X6>&XzXXOk;zAfzCK(E+6Y%X~4paqavZi@|Enq;WjFeSlVjMjhXc9&RSLcmoj}
zUm0vZK@=sCQ42Og&<Z%%(cpFG$L?Ui>vY0X;l9h}vuFQUD1Qk01h14T>8x+QX-XBr
z1pSNVj#N=+MJRUm`%)!H1|CIHaMkFYSOwB!b>P0#xl{+!{W^Wr9SmUyz`^O!n~UxM
znrZjEbHvz;m*HBaQe=gT?z at XYzk6`eJ3WcP#S1o?IOy*~Gl8~-5paT`dVUAqcQb+J
z{tF~Rz#3j(-+i1nF7LpFX+;*IG)_w}^qM8yqQQ?l2eQ>DBVqw~$ylTkX2dJCTapa`
zt=&ph8ochkVr|>`G1a8ph;tqGew1laMua9r6p2kp_C1C1(K~^ekW}fIaw3HK;1*IP
zOplSm7d0?XbUaW-gwVxnxVU+Eb|E$an;EHm-aYDepgr_|IysQI<@pf^xMg_I>`9eX
zPNdrY=_!yt5ydrm5yQVclc>Es1GS2A at 8#J5TtcpcIq_=eF#C-VgGn&t#jE!J<6N{q
zFoRj~isy-%lozRb2*|_HXmTwHYBNbk#YpkCcXD|8wtFbmHF-rt;_^WU7Y~AJHXW!z
z6BW9mx4lE?zhHEA@VXn;reNt6kj;8_-aYIcTyzhUK*dss=Cjm0=l~yse(yiS9+l;Q
z_&e>rt)S{*v?|Myt7`0{9*hs8lufRnNKL?$2y77K3iTO%(Dp?bgv0D_zS)*#M+PJS
z#sOtV0ebzx+jHoL_d5swE=$2n;JCpzA34nN at tdHoNfx3l6dpkI9-P4l;H>jXG`(2n
zn<lukK>e`0|K^oMpEBf@)7!@z_dz9WIx6FvZ^D*?d55t|Dx+A57&z+w*gXm;xr}eV
z*$IWhwZ9$=`p(~|agE at hQju@kfpQRI at UnYx@OmJ*NSOW2H_*PUdTERWQz at Hpfx|aQ
z04x)(^dQ&f(0kpSqy_?f;GHewYTFq_2#hh-%{NRgfopfd#o#L(yZxVFo`SoFWh*RS
z^S at vXydRC$vE=JXjO%}S>%X`F_;vl)Q{tK)(Ee*&`X{dQ?cZ+iw7=SaO(yqXx&7C$
z^l$B-xBkD=-rWAW{_h!TO%Kqge_j9oy8i!l{r~Iw|JU_ at nnZtH|EE0yz6|ws{omV)
zqQ!bQV|FXoU)TR>%hD<2>-xXmy!^WUZ`ZY)cfcC{*Y$tg+lJLbw?V)IuhUg=WnT(F
z#Zq6_|J50SaDhM2UYH$SzW=)Z-yM8i|EJxvuj~JV*I(EF*R(G4RIu;ImtWWaf5Yd$
z(f;f9fokjjJ3DYDe7oJ+f%D(3ZMX*T_5A-61Oa1z_&uM@;6U;kqCqwL`}aS#cfZ>I
z3C#byqW$$Q&?B5 at hU5Ry`!E^Iq5b3gKb!6C_D<pc2ipJZ{f`VK*DMPAKL>CH=I#dW
z^^F^J%^OZ)-`~UC54bR}_&9+(0DpluaKP0<<q>dr7mwq<I^2hI;P2rw1snw*4M!g)
z>WDtODgqbQ;Y!Hv_bs^K<F0F{D<62^`wVVZOy_g~0!{(rX<)ed0rxlHX5APr)8PdU
zI3JF;Bi~Op at VGf%hJd?)cq`=Y60QZ@0+R^DPyf?-VtvsB`GkvuccUrXpcn^7&*{Ek
z<2jr{Mu>0C?UZl7BU0lDoLAR3DNL5V7%`jR6%sldj~4;)-kj#dT%EX{-c0oocf9LB
zcW34(0$jk at pt}kidd~@dPe?v}fdp?bHr#a%xTr{1P4Jq at hPkaWpTKPnxbQHAGyVF?
zgW-|N03k#HRRI at TV?_Pqhr1iP6kv+eO__(;t-84a{EhG6I5rXepUG&Ufl!32J3N$)
zUIF)n#_)n__(ssb=$kii0p{`!u4CXG40TNi?oq(i7;+SK$HJLfXU#vrDQ~=zq7NU8
zkz-IerW(;^C_G%xyIoAd8uxcIq8f^<Z^XRrHu|S8FW?$W7cRjz&d%YRL5JPL#<!h5
zJi{9w%w-pI(WP<vk}kgdI~=bft#{wS@(EmCfx9cc<Flh)_Ym$Uog5s!IqaRhYV5;3
znUm9t#!>GWPVXHyE>0U4KvSdjx=`;W$`IU&fj3l?+=&4u4gvY3ck=Qa2z8I)+j~DC
zQtt$k8*rHI<f4Hq@JB?j^9JthoD-J^r)NK%!-4XP#_Q9g!!9K5cY(jo{!v%mz&ZH|
zaSo0;z2l9>VdoeQ|53$L;QX9Q(#;*v&Fd~D0m%;hkB-5ieqb-;;v61HKNqLx7pNSn
z{kGTdZZtaQy*?`E<@qU4z^g=13H5h^RZrAC0n$A3j?7paK`GQ9+)uEWjl*sS)>mGE
z!A>aC6xNqQo-Ka4pWw9+XnyeV6#Co(zN4bifL?3>(Fm>+(}!DZntI{2OS{KAEtA3M
zeh|qClkvK<s}7DiyMvdkpr<0)@ujASK?-g&!!4U<fBKvGauzT|@pQ0&SDCx>b#%|C
zd-QVf?gCB|tCfV--m_=WuH09*T-^qPgTSoc#9>~;0pS~^-gtj^HQyNB<G=WSU>lw`
z6oVTL;tZ$i_(q~eV+*eAHFx3CS)&El_S8S{2fPLVJ^{1Y+8n{_bmn+B2yW{&?F)gR
z9u#Ws!tFkMv#<V#)oViHw{R%?`i|FuD}l{DDvq=o_z$lGG_lTyDX#-0ntN0nE_*i`
z_z$boLOM5_yaL=cZ0=#PCQ3#B at Cr!e#*+lfHeXO#6sL**@CuOg?M;hQc!3qL7*bdN
z@Cu;OZ*SVR0^Ad)mjKl4l%KGg8UKO9>6`qkp8(Vt|HDl1>-hgE+(58DxWe~p67U0D
z(_H}*CFB3i-FCAu{)c6NujBs}=)MdB`>cOa)_yj5gzgot+5OA?Xak0N<GYWSaNSe?
ziLXgmJZrZg6aR(xf2v<i^{b_RwbidJ^=n)G+EKrD)vrDE>xKH&G%y+mt{f10QzJDs
zR8wQYZ9SE*(V7~rsqtDGuVwhscrA_B(s(V6*V1?`jR!q3;kPtiTjR9}@A`7`9`oTv
zEMxjTg1hXbmHBXn2~KV9$!bpBu%C_z(mW9E{Tz!gKFlV=F^p00!FIs-K)tH|<HHpH
zxFL`ms(nK;-jIY~L!h^qR6Uh%+P|LlE3Q^D>vx`)ZvXA=CcXcIum5dtwPF45>-^v8
za9w}l{GVR+VP5=zm$Y%h_fEYPVmO1b*#hQ*@H!#7zzq|Bm?1*}d>_Jia{2K7{bUxI
z`?qoKzx8$QzxX=$r)8e6bN}Fd7+>f9W<8;7?jOvbVRZrDlkp=gdcd0qVA{Ham!b7q
zQsY}#B$)s3;aisC_is|xVm!IWI`9KQ@pw4@3#=K!SeTYL^=k(d3NAGaZlJ)xekB_g
zsxV<wy`UIo*;_c7-e_z!{)TTxg>Kc&?fsfm4d1_pFFe)w1`Vs0k!*S-akgEFWK$+d
zFMKT{+44v>aV}knW=p0??~W~_+4g9{L>y{W&}>^K*{-75EsrG3_Nz&`C6feCC^zP|
zM-rDMs)@NR)7-8?bH}3z#;oSEJ2J_gDkOIuNl+^^lQxKnuh`oH|AoiBO19l44q&Oq
zZ#BDBIM}lsynv;f%0lnSLIc0$wtZnqZsRMnK=5i}zL06Ys6w;p0umBMhpI*tc5K9u
z1nCt-ZMvX at WI??Zsm7vGrLfd=acLX0iyE%hVw;h`1nE_Tb)kvKg8x<|8wpO$O3|t5
z!V{9M9xGr#E}OPeglf7FwT*9ktFGiojA~X2QcV}7h-`HwN8(hoQlM(ONQGoGl&peN
zp-XR8icU=zp0)v^1u+gA9(rTRNTL~uP>>FlX=HP5c5PudL2azKzL&;2FsgwM&finG
zdiDwS3}83}KhyCeY`wv2nWl~Tudq)Co5i#Dw|9-k)%EcGyfM0O!1fI6-`+jktNjMG
z;Xu0_&()5><_5mb6<lU(12!69r-6QL?reMy$uIB$mI5|l^$F>zA1Gq}!x!QiG|&ow
za5Sumpc<{I9$Fi)Q03q()&{+M-Jk(=2vR<p22i{)G^Cv74Fhc}Kx;*KL&|A1)wX@!
z+7UFMY<?n=Vw3f)(A-qUDC!L;o1X|8j!!}>Y)5zl%H}76hA)f^t*{e81Ip$nf(D%q
zD9zW~ZUhY|o1X|8Z2z=(0<^sd8c;SrG8%4_ZG~1K_ZPeuD4U-M8h9k^%=wZIBfKGL
z{S!gM1{zx7GKS_FLj(;xayzubD2C=5Lj(;xayzubIELmLLj(;xawoLHB!=c1Lj(;x
zawoLHRSeBFh6oyX<W67(Fr6IVuvbdk6g(2Pdp!?nM&p}n3=!VIBViNRM~lTboE#>3
z!|hbq9`?~<@vZ3^gUnkC91=E;eY9A7L(*y9z#(B**++}THzb`#1BZkyXCEyV->}P1
zqk%)hezcDki*K#6w$R$%!2Z)mi^Vq_^QC#)0kqHxvG at k0OVD-!Ewn-`zO~BQ0`xG=
zuy=08;#;e%Ewo+$T4;q>d;`*HN!yzn&9HZF#^M{0E<tMoT4;q>d;`)YXe~estq_ZE
z?XtGeZf`Wf*|@*KQ9&NxFrdKuayK_{%dL#JEkN_F0Q(Ly8f at H^p+Q>+dgm6r>YBw~
z#~W?`X*@Y10blSodx+*Z=vCw17Q8ZBLW3<t%NneL*#FqLw+(FpdT03Xjzfdz5Dj0=
z?RFvo)M9z#-Zr!a=$&c#!|=A{wNsMRq0vqzuF%;3IB(Dvg5J4x2?cRX-l7q{M%&y_
zyNs|Ait<`4k2kPDGw7XLP(Fo5P8UIgwg9~|_8-;?6EF5!o8Hfz5n{YSTL^mR_QZ?5
zWMFXL4ZEeAkQCZN&^zN1EMrrU%JOFSgcE2WWzajf*vNsS(WbHyHljCZ3wU@7T+Zr^
zjT{2B57QDfXbVB_+=6%~NqXbrQPe}AEd;%D3p!yDja)+qxQL|C7J}Zn1)Z>n=KAI+
zZ_pNk-nj*xu!!dR<`~-c<_1Pb9xdC(dnX%sY|r|e+5RU($dbZ}LM!N<Td+z;yzTn!
z^nNk<c{m=cuoOXS0h-@0w6=8&8T)8AH`B7%3w*SK-nq4{`}%;l*>LXQBD`$@+Rg@!
zFs%1(>%Klfn=Y;|M_0O|iJ)z7ptt&Hx}64S;|gfN7Y?Mrmn?4(?<6ZsFX33oUnaNs
z2{spby=b|;3uw?tc`vgg+jIzL{YMM<1_1s<B;DI+g}pPxJBc^r94WLHfEM)55K|;H
zCFxMLeVI4V5qv4eYYVMC-Rc7?Xf)OKBWTbTg1K|+h0NQStdQmn+CngQZoQCs(`ZTF
zpe+P*=N6Ec^rp~8NxeZ^2z%#YinmdcH)soC?|dnvP3|>P+~0PfEd+Dt)}@ZUflUF;
zMc;@`p)CZxbL&!W3xMXLZv+k6LfAWB>KSE`H)zWGCxQlTA?%$m^^CHJRyH%*g|-mP
zom-cBR8vGNn;GpwTL^pSOFgP7qLs~zKxeJ6cLoO)y%)?-qPJaW3(z}z<2P^w32kye
zFY}OHXbaFg`)Dx_nU{IU?)C<Jx+p-4dC0uXL(n^*clLRUdC0ufLv{fTM>edN8O1zg
zUg{yx&qMF*qs2UAUg{w)04?Yj#*rBEIGV%vUQ!W>+Ck7Sj3XYR(3F?R?G$>Hb})Bt
zjUyhS(3F=%&~T<3jFH9>4^e2!OCo6Pjds{Ok0TzU(3F=%&|rli?48FE4^e2!OCo5{
z7Q)_n9Pto^ro1GA2Ht^lXFmIwKvA4g1`%m=ug6F6US<#40`$(fvIdx>{?<f$$fZA0
zrH}i~9_|+ymLj}?J)w6N(SmU=py79~RmTuPgSG&@vyZ0zt%x>)&+yC$Pey|gOdH2Z
zo}{wBp`>bH8I=@9Fzv8+HnZKp3O`RqbYh%DjqnC-0eWX|q&ktumXpWPXh;_(<Gevz
zfSv||60@nEeYAa>(ot1|7vT-sLfAV`^z7rxM;n!|{Jem+5cbX!J^KiFyPvtKOvK-C
zHW~KL6FvI~c$-$>4cY?Um!gJX+Jatb3~Z{<=;NZXm7f>T7Q(snM6WakXkgQ_8RZLT
z3*p at P3Jiv=K9CfwK$p~L;49h`R}i;?xpV7E_c9SQ>SiKnO+fS4R9ja%hD6Z7H6t;k
z3Cm(z;oSL3Zl`cjS`Y8zXzh)yaPE91_X~)oI at 37X7NGgPGw5GgLG6iCqecDdIT1j`
z(Y80Xf|YIjh#=WCM6-;=(RKjMw*oFPifE*M;w)-~T|o1DXZ)z4h~~zEQMA2{t)O?_
z1dkEXp!M0Gh`+r6w9pFLrlH>4STM#LtOITZy)$k&i at dq9U=$77LNIs6ZdpWgW5FmI
zw1r^qya{bXM1#O(e`LKip)CY+=gm!TW!rhL+eeA=25ljjJ8y1!J5UY{bX>+8w1r^q
zyt(P^KruAd7$TBFTL^mRO}2Ur?$6LzV~C(ZTL|XPo15Ma6hmW;A%X^NA(%UFZhAXV
z42?C02pY77pm)X&LG+L&YYZ|PM58U}ommeEORU6>IfH=>1HVnXaX*JqlIj5A1d{tf
z;NR=BQ*?@3EzY?uktQrhZ$YPxC%dVq-FyTho*ObEaEm($58)F3<M7aCuow5>J-=k|
zAMYk<d<dW+KC~j}*V!5+u<v;)!=J&sA<_gOriKKdVL?~#3*fdsfHWfjLx&O#L6{8*
zY;SBs59LeX`7<Lhf_G2A4T7`~5PU-#J3xcX%Z%)KIimqrD%1E-HpJfrd}v7^294Or
zi9Elz_^_jsMu+emqVH{NLqG4egQnMCS#)~aK^h+#P>BCxV;kBUo5R7 at tk;8Cd|c3P
zr}3ff1o*IVy^ZVWW-yD|0eM(d at bFt{eB3Du2{eHKpnC+oZq6gnEFn;A#V}fcx1RZp
z0FKQ_5=`M1$^HBJuTz+zr(;F2F~gQSyk{vOBgY~~X1jz;u}QbLHn!1KK_DCQnsQ8X
zWVTAk6dQIM8a6Hs at X+TU<FHnNJM6=1N-MT)P}nw%N_;YMfO2HYlm?uIJ_b!3H{v~|
z$zjToDN|b5)(72_LwYF%UX;3`uj_i>9LCR+!PlI7or~@>|0`cC=Q*AX#!l!T>62j3
zs$Mf**Y(w}xJzmP?|)xjjaUED55^Zv95cWF)!N$q`u<0z!S(%V?61bL-{0JgAFd~>
zdF`KN8tor@|6jAcwY%Nk3f}**y|dN)UE}Nhf2+c^{Q-A7-l?1Z>QI(`4Z!#F`^ji}
zH66jb(>n0BEA?(5c<I~MoBj>^9>A|}`TP2ozkU4%y{~Wi!}lw$;w^vf7XR=TW`vW`
zwRe;M|LUG<Iv at V<;a`h4{2~2&+P}LUQpIQgfY<r^zs%v%zP`o(4BwCgp-r#d%qeeR
zDmB#eTwT|NY1XI4w@3TkSMUl+nAgBHJe;gx8jPnQ4Q3!L?cnsy$pxgsNZzG(4i1h^
zu_#Qxywuk{Oohc!mwLPjNjM#3Nli?G)i##Y!X%jgu%tF7!Mc}Af)76b*f~5rhm1YH
z`f(3g--D%3S6UUsgZnH|y=S3!h+NUD|6F;Kh1}s0Kvt`Fa?w3Me{)8fz$5vt7Gxb9
zbvwvY3y;^koCB*nU$C=tVz%YW)^nvjd_XxqgLi-;!+224CqP-mFuk9_+S1fQwYIiA
z?f=+4*zfean1RRI9lzbP14L@>dQw0tf;4wMg+MBrr at 8BC98$M171tp>+-*t?sqIjz
z#~dK+QmSX(?z at 9Nd{#yo#;2%qNK9O*W>i%Ua at m3tzQr8m6whWBbCBB>thg6*kmDAt
zCKYp#>lUukG7irAq`4P<`LjN04t7)hvZOg&JoFGqb1wpm^htBDOX-&-&B1OXPkncA
z(1BNyB6ofxJOoukD!nw4QG9n`T38EC(=#OX*=_APun1nrg30zdwhuVk#Pa&oGQ6a-
zK5^q&>$ulHP#*3n3zL<1d)mV0c!F<*MIc<uassFisduP(<9bS%Lsak}ej%qr&QC9F
zu+2!Jsb;a`Ig$FxyQ1TBpmPWf at 3c4$RF37`x3y~j^r?4Jk7siFK#en`r_S?EpW+D|
zlHjy1j`j~;VvL954lMo9rF%9!IJ11wF<!@YUk4y15Xb6VoE{%s93c%)&WqRQ-Ol0J
z#W@KA<l*%Jx{rZZ5`&*yD1QWoA%~W5%-e8I-W(75KlR}~vi-)c`-nS!t-gQOJ?Oy~
z<RK42+O~ZGE#`rTpQ{Xbt)1#1&)~(j6L?oPymJ{}9~bE<F^hGSRMP7wO;q+94>cV>
z$;NL#S#?5wn%|pnjoL25ukh}o|I-PzR$iC|a?g~|u+dgN1SDcGDkNeoDkNekDkNeg
zDkNecDkNeY3KCra7c&IbT=*7i2rQ}^0-GvBU{z%Z?CQwv1)Z)A++iZc?J$wTc9=*}
zJ4~dY?I*gJ?ezv{@Mh`@6Ck|McGiD$3_AB3`dR<&DK@hp5#PuSsh-1}!B-6r3IMu;
zC}`jG4}Qj5dcEd8yj~NH&)rnz^zm(*kmUvIv;G0R1sq;UUgYTX?LH)WQtC0QPgf6G
z{Y2I2c*^53$uDfWo?>dT6~Vw4x$-0J?diec@!c2&_mu7TQd}jhlk%zR{swz5Pf at x;
zks;PWc@<dq<Wpe1la%2)0nV at AH+e?!dL~cfhx-uBLmQfLDN5+mH#tQaO-?aLV9$pE
z%o80Gv1lO?k-bFR1~_}w|IgkbwM<W9n?)^I&cc@OHKfDNMJEF2vI>AMs{nX*p$A<4
z*p_wHo<O{-_O<J}YR^WjJI3;QmxOxgL9ai6?9+4nHh|DcV=oSU^v<(q6L?>{oqDPc
zbxg0aS2#!1g<}7&p3e^4-^#JvGxV13!FH1_N%fEJS#^x=S$Byp0sBJliS|nsBalbC
zv-XKLpzIUvdf6x1pR`ZA3{!O?oQg`}lvE0*rcyXXmBOj26i!*CaO%)gF<zjH@}4;U
zS)XH{^*QcYpJVF&$050%ho`+c=1<Vu at JH-t_%rq}?iu?Q_XK&=skju^n}li9kGMqJ
zgYYEiJKQ7o8te(yINTHT6YjzG5H5+j2LF-S89D=(*E78UOER+*mt+Eem~yZgrgRt~
z6XabP6W$9ctQMbbuyWKIX%yiST@Yt!7{1-33Brs~lf-D6B<7P8qa6-KXaAAaXA#+z
zaf!@<T_W>w7fG3OyF^yqC9>)&+B(7}%(@gCU|o`qtS-UCRGQb&THVX(<Ql%#Gr58f
z{LmL)^yfeHs@(&u3ckOcjGs}t!D7(AzFWYgWWE@@hmR9I_uh~N$+wpeSFnRIzx|G0
zW@V~37Sjp5>FUpoP5hpRd3dh=_`m<RvGrZ!uZ`!=vEqMi{&xdXT9EXw{|fIY`VMQ%
zCh$t+TUGH-&;ItzEGqtdH<eg}8vu>xdcl!1wb6Khg-3Y*;m^Zs&7gWFMm*M_1hKKF
z*}zQ0-k%$m)89A#ck}UTlh|j{a2|~gv<l}>r$S&WONE at ZCs$#hL$tfIbD+c7lj*Rz
zlc___+SBVWP-3%{(&F8H>&f(Jno-r(?DO^+6uB9wvbC93W%J2Y2}aFp)_3=uxzC|X
zKRiO4O0?~}`^_g)CG;-2s^rW)wJLozCLQv2O*#bM3p;8RA=}7KrH-1jwmJ<0eKcj8
z1{kr98VdpY)jH~%r&FOC>r_`EXYGkqI0{slY|C at r8?JY}=y%l0!Z1!_rY<<H@|fx)
zOi!BCsoe&l^bj-9yBZf;In8j@jG9ZZ0<iQr0mk}IHtP3mVx>!2(MVi1{CLtlxfP4?
zhfRkvjp$<~2h8wY(Ds^)*e>=6+9WTknk3+Eg+_Uy`u7*9<}e8w!**(PvRIcIn=v)E
zo0Zkbd0U+lfdT4Sn<*vk1xnmaD)IVmP0qN2;mN{dZiQ-8p>2f&l#frQ#HJc2S0A8o
z)}CC2;nXeNyUlp3S>+g|*rN3qrFx6 at cw3<!tF`EY9+Q!A_F?*T{+K)G@R?hoCaW~+
z5uC{P`|9RaDm>2Hi#tAJU!_wDy|ogdRk^ng*;}19fd`t7mvq;GGLiA<N};!!(A*iW
zd)0cW1qI}9h1xW{r26eE-!YSG3TztC+__x0CUeL20e4TW$G|C*4V=x2*RM!_Vq9S(
zCE)JK6<G+DC5zZ>MQ;7tw3GF!gYqB%U4F?8{8!h3uUeDE!BA^kPb;cwGT?4?epzXP
zvlTS(<hmCd2|a-#RivywstmY$Vnt@n6zA*nNYGlilC4KVmA9M&?pCKr8)cGRcNi$s
zD?nV6Yaa$J)p<YtASh_t$<F)oa=PVoxzbTkF-SJmh`4&&4!B#LOI8Y!@Pe{HmFc-R
zaQm55xt676U!2wHzG67=hw|ve!rJm~g~hyFGfr=An(I1BfV<s6oYwQ2${UU$dn+`I
z?lF>^j#pP#nau(i-dj_<0Nu&jRPIt?dJr(TLS^bsV=LL|p)SK1lN^hAo%Gr}KJ5_o
zh7g~j;|o-o970e#x?GcEmJP>>0edB`+-z}yz7%H`;<j<DWa9{1MyWY>)?`gwbP(eV
zWS|7q;!KmXw>sPC6_MsnQkN9A{Vp}B&bzBCU~yggj5#~4Bv;aBfxi_hR7LJ)N#wq|
z$~rvatwXIla4)w?_BjG~5V_L>?fLKt=PYJ-scK92nOmJ(R-UqiVKaT!b3U9rp)zw<
z$pY>^hc^A7NfAG~KLhNpD`XaWpr)tG;((%T2vVWb^2J%5 at +-~&gP5R3p;l0Hyr}9F
zFhDCa<n_}T(u*)wKJ~|HZj;Q1T%0F2q~C;=oXY2hx7qu(4P%OJGT)SDBwW3F@dbKv
zV+QSL*;X0Am33D0r|Ya*CbCpFjmO>UEK{-TFE+D8N5vKr*1YQL>#<UN%Wo81oYg7*
zGjvorM*NI(iuIT=5a<gvq+Z$EOHR0p>w3wJe|{Q&)tjuvk)S_6d;(iO{Xv0nm=Niw
z)?!OG;CO;VT3)cMWJ at D-<&G^7=*in<F(?XaibkrEX6a)k7s2@DiuE^282Yg5drx4<
z&(J7+<ws@$t2ZR9^{;E(2+Rgc!+vnBFwG9Qd-B#5hRXEfo6qg~<J*$z{2ZrHGyDEf
zqw7A5y0k_=L*U5s(Hnj%ca;aui`)15%^vzPNik{*HFA&pd(x~fI^gx;T6c_vzE>S$
zNZ$s^+Ad)yX;vL#iszDy4J+SG3%FaMP0RvPY7mok<`9C*4!;AoYHhBj|0}S#I+a$P
z!$WI;j$AchSamJ!1Ot}8#GqYZ@$W#Z{NB~7eRTz~7@Jeb;_9?oJ0wRJ`ilIn)=}4@
z(p8Qx)}qqgFF&FdSX`Z#t}CJjEU(s4SJO`wSo}NCY8b9oIUW`+V5)8D>K8B}LhXhu
zu28F0E at AEleLt>Cq#|m-?`j=&Eh=4QM6GnMHA|)5U8vQbjS>d?-noei%QFFYtMkoD
z+j at C7wP1AO&MiFk at ToZYT}{vpL|UBzmg&fZNwAsMr{-=r9O2W9vQXp6zS=-jHgtOu
zbFMTnsa1$posGFCGUx94T4!0mu`Y84B7L!~(~L_}tuw3F!hs7n=W1K$7h%pXxOJ}F
zoU_a6Vr|#Hikn2ahl at h?R at crd4nqnn@X4-g at ub?!zI`9E_vG62M*+zzU%$8 at v+k2x
zxkF>l+Lx at t$0t)^Gq+uH)}CC2d2RY}G5B~nYi<vq=UbOT!2^TsbTz00y<*2*VY(LK
za&@}ZCT{MgMiOw}Y7%NU`D!Q4_TD;`yZp7Q2$w5VE=(C=Q*y<Zub?x6k7iAHTU+HS
zn6StI!#CVpRXd7RhThp<h!A92of#_5jQw6La-7FR#8h*EJNiCW@?2I?^i?l)d?6M^
zv3|=&UG0?Wi!thFm{$3%>&aSb at OH&jH&bDf3~>YkZ}sg5fx{KHxGK93dE<lvzpHH{
z>(J;*-F*cbrOzz&ZtkzAqv>LxJ_QxCd82c2ao*d1bI~2VIe~BA!Y9qX`KAFs?$b+!
zBI;XA at a6c!yT<Juybk>Kz4{E5u%{HTF`R9d%<&@B^uQQi-BN|f)>1^^Vtf at MdrJ|4
zMcgVx;7vX0kz86|%~lmMH&0=en^|)?QL0I at oW3fmtG$#YZIXn4>+%Xe>o%CGZ(Y9Z
zb&n1Q3;Yb6`V-$0<~_Lwn5n{d=WR)N+;dNJ_a~LR^q=X&c8bD{%ei%bs&`PZ=X?5O
zpQ-|%DdIVdiJ41>cLnf=iT}j2uK5Gp0OgN!uNsqT&PlN<_=N%o0J1ZH8z$h?D+H&>
z{O1pTKAes4@?n?UJ^$+d1bR%h at I)WPR9c%czG%hMRfCsayN3lUM{9X3i?i|3rT^mo
zd}M#JHH|_lO~zfSnRd7o>Wtmv0K&KT#PkYz%=O at j`{e*4466vCz<XlO10~z+bB7PN
zBmB%EeBJK>K6og9dHo6sy at 6c!@pY3j*WX`vfajC<)A?dDYg|pQ?T6fXOPo#KW0q-)
z@P+u7y`%0xecjVM9iJ1T{^+9qa-pqx3;4*fPB2U~8lM{9cFy5LzuykwAA<$R^!Z}=
z%%S<R{V^4~VTF!$p)LLST>2Jd4+&ij;nVc~M<DH&6m_=K3w%9M*We$f?;W4L?VaNX
zzUf21@PXou#y?H}Nt5ErvGt95=)1ZvI|to?1|hvXgQ3B}9ei|hc)MsUhL=v$kU^iI
zv>A=zbZgZ3!ynBTBGm^f&G!Qv2dD7y<iW-M(E!U0HZ9xm6-WJpj<oqm{<Qf>j<oqm
zjc4<bymRxBzSX(;NNsZSks9OXBl+s);|o=NsD4p^+<Y9Vr?L7qQNOO}7s*$Y;<B0$
zP;3n{Xy!H7@Ofv_NK5~QFO1Xkp8gFh5hap5RIvw$^5Ds`2bV$=C43*D{xjPiOUR<z
z#C$P(pqSCPyPwR4x8tC7fDb=ARXP31&EW3-b_`1pH-qEz!RBB*8Nt`r8_)IN_Yd$6
zj(auQr9T`0{O1OY5bQFoHyTX>Pi|wtP^~eU&F*H1OMk$3SD!yu^yqt~FlG5a at F`Z9
z;o{1%$pB~nuJLC~$BHWT&-(Z88}#)TJ!aPEZnPQWbgnx5$E}1OY}0gw?;aKddZnU}
zH@#I^t~92Agiee$He{5+l_5m@{Osda<DWrh{M78?J63=|@DRIMP5q9({_3eBfXg+T
zs~)#qLSP}w>d8SHK}j3F4z!-0KMzZPk7`ki0N*u!4-Zy>#tB>vqkd`j6!U at y8Y@2T
zRdE7a*2-q(wpoS;FTwKwZGT(9XvHQNbHl*dxw_4 at v};LO!Mc``6-9q$879d%{svuH
z9{dy|Ch~1_NE&S8Hbn`H>*>m(pb*cMZ9&68j-+$ov096!f=&`6qyjLc-IEcHoKUr3
zhX9$T)lwn}jUS5UXPB(Rx_a5ol&V%RqT`#4;R|PlR;83ZbdbX0t}@ES3t<EFjpfSb
z%F;O(+gy5vU#SlQ<hY9D9!S~dU;hk)LcTLuxibNha(}uSaW+4PK+QGUr};SqYOPVA
z*5?qYy+(oBpF<!ya<8ThZ9Ta_5Ugj_hL^ge4a|02p)*W(#2$<N5eK0T>A9UZ(tr_$
zQGabP1T~7pux)xKj*uJ9b=`R2jmZ?ITP1LAjI_uV6M at 9^%HeL29#(jR3RWpsvg`SD
ztC|^gNh^UBO=lQ0vPUDB8&+ at -$mL~mM8WOFi`JB?g1s0ANF)@>O3S%1VqpbVpX}w8
zi`k1+%9RX<B)ei{RFhjPfGTMD57LdXR4E$K at rm579Ru#F@i58u{Q37dfn#+*K)6W&
zbJXwf-$EXokfJ=wg_Rwg9>RE-+9n*e_$v*@c41LV%`8nz4Oq_|A at 3$)VMGl<veg>n
zgd3e{K#w7fns5xcTO33>8FPfexx!8rTdRVWYb%XPH|ljyMiy$9ZL&3kfLuFUhouT=
zm-J3?SKW&}tYWS&tEv?msUz*R(SS62Gy+m_(xP^8nyBq)pVrfFHSxxx#sPhLIVQuk
zO<XRmVl`W~XgHf?Z098y>BxL!J)2EXkY8ABwIxUqG}ZZUF0#$H%+wOQf-x;6Bb#+s
zn`3$KQ;gim_x$5 at G5XMW?w9xua$s?u{v8eH6P(fMpMRnCX|j#>h0Q-TE at zYBUl6X*
z(8ZfVxyPndvL%&lNhRA-$+lE-ODee~mE4v}Zc8P1q>?*Q$z7 at Bu2gbQD!C_>d?A&5
zA(b3TC5KYUOR40gRB|Mh97!d|QpvGYaw3(ScqPY^tKq}-LMnLW75p2xo(VeElTEwG
zX at IbXUp4HQqPCIQ_GfYo1N_;vJr{FKZZYIQ4(unGd}?jQfMc>P8+F935N-?|BUC|J
z%YZ3q1R}%mSmPB)h8k0nWQXq5GrEg3VX<hSDHM#wnL@!>m?;#DMVUguSdb|cjK!Ej
z!B~hX6ci&2#En8hF~C4DC=?XqOLJ2wDaMzUR8ovDTT)3ezU)aQBk`pmPdvQvqUh8$
zn%hH_QH`eaz}C^t0<Fz5ZP81JMi>p{jcTAK?pgW((ICT^sU>#xF!Nw1Ghv)zJXo&F
zB8{#igc{tUwN9#tf_~&UgL}9_*|K2cP#;U84J%m^Zdl2Zc*9DT1RPefB;v4=B_W5E
zEQvX+WJ%CrCCj1?D_RzISkbb$!-|##9#%9Rd04^H(4)%c#vYuDRo=klyLTq)C;$_3
z+>;+~>?Bx2K&~r_Jey&fO0|QAoOq(DRtP3OWgAHX((KX5f{eP#kV^AiBND|&e{sSU
zu4R`;dDkIWiXtLV)GE!F2y#5@=w~C78gV-N7$9RIQyk9_6bxkw*OjiSu{0B;f6wta
z1D+m?cvJ;_+{l5ut$s;ZWrO=5G3znX+0IyP<yUdD6}8`1U_bS21T5H316lj&;^F#l
zfodJ;D%+3A;M<RjO=fcJ+X;eURS)-#{Y*)=3 at o%huz_*^TnV=x;X{4#gHB#Eqq1@f
zq%6Y&%3>3I8yZ)2P}+vBJQ$I_MaQG1D_*A+QtgUnw0soWq0fVru`mF$Ii4w9ZM?7p
zTTRp!3(KG$`5ar~dUB;cP8BR#QKcIbx+mX$6hj#V<g$YuaDo`mb73>oXOcWivU<5@
zR8=e3&@t{AFd)qyjeJ<#RYtjZAt7?Q!nK5XY;9L+ctnN@M{GuUp51JUk&VUA0FLaZ
z&(o<M1h^^~kyh~OJwv8Z1~BzCP}QVXrlMJW<pi7=6<G6HAQC++4Q&&SB*m<4>(-GM
zzgAlz&>}}zRJJzea9f*aBc^8EHdBj4(yDWlnt-*kzC%cdHo1Lm-MZ3Nw5^e$U|Ej=
zPcKGXV^srzQu+mzDg8dvlrW0SiL*EGak=|;r7^21TC}9eF%0l$BN|z<Nrp7p1O)kT
z*mtw>eZwRh6k|J+Zt2#MuY&Ci9Yf!a6-<U@z)LU!qU}ruLZIye$p}C-N2Q5SL_<19
z!n^y{y?k^lm~*ItRtPJeN;jn4lMzg{K@^W6Kqf2s&tOAurol>L#e8`x*vrvJ5`j2Y
zOvZ^3$cbX?#0%jTsF_<}Nn<0QT#iK7!^_EarNN9YX_>b|=?r5e_GpCCkrFxPD3EP;
zt|?sds(fJM4c#~bBG!<$f&m#TNF)^2YJqcO#AR|CBYMTyMz%VCZ_F4F&5`Uu*R9a&
znW9z(E1bzOrsU5?IA%+eO+eh3>KFpO6ULN5NY9KW!*Wqa+6sm=bgWEvzQ}DtHs%RN
zT%KW!X&{x{QEQrFhH{R8#0uO%u3%16)GE at N)8rTi__L8uo0IxJlV7l>Yn;FmX#rcO
z8OwNP^)OI*b)>FfRzt_gRuI~%!;~~qQDd`B)CdF}qF>N6E2+n8rMh0Og!+O=6}y_E
zRuC(q$uY9?XV0$oeu^n!bl`_wlWQ#N?)IQ~Mr>2c@{?m(Q at Mg=O;ICVL2S!_DQTp#
zmNgk95Drt-^(r;ahtV8e<H6CYRZu9TA)X^6E=DwWs;|*eSu2bc)4~`Yyadm_cvc2Y
zWJ?%Lz|lT+l!j)L_*JIAx<ZIc>E8KGA0yYVZS4vMwq>n=HY6JjI<0sqMtDzVM1c%-
zrw7%ql)zW<{9d*|KgY=MMt~}f7mGO|jC`1Cgf@R0nJ5sek+-dkV$l*0y}QoT;EmE2
z%{3TStY9ln(|V{!)IJzNkP}l41#kth#Wnrup(&Wl{=AA2=7I_4)&S}+!?o%MkquqT
z>Yk3OyJ|L4IPe_*nOD)eqh at u^WN{3-fTwz840YQ5X)f;d%nme%U$~qrjX_p$4FZtk
z4p?$CO1))D%Tf7a6i}2WqpOi-iF-t~<&j5-tC44kYeco>S=%ilu>BIZh-%BTwo61H
z&k~o2YRj{|#%Qqp)bRku7L`tZQ at LVqPRXV_w-3b*#Z`wqTMoM#)0emsx&0v3jE7O%
zeRyR3R4bU{!pMN!*qVlUHN2w!r67aRMotg2xUY0U28&r%tpu2Ah?>6*_pVE~bs@`^
z!gWD<(XO$AEtP8otXRPYhBCr?0$8yu2Sx-eYN|onb5{T-F>oiRU<Ok<R|flTW10nv
ztvpz=4Qf~+tY|?2V<sWlh)d$^>PbydPPtvUVi*)c8n`8DU!?4ffP%u7;~Z}dFe;cm
zsA1F)Q<LQ?sAuH2W4<7tL<biMl2tV}<u&RxULTY<?3L(bpr_O at -5M_LX8wCyHejxK
zyMWg!-H(*dC|chGclRT(@&Cfan+#K($ZT;ptV9If6O%~<r-M6LQrwR!w61}|&0)M6
zE;Z1-H88A!SI@Co2+i@7YPvAUtLND)2CklGgS>j4%`(^Oc{a$a=h-gC<S_jloA^Jg
zceYdxCYDl;5Va@;AvH&`YHlA8$Pp-uz}|qIbq%pbOJE4BMgsl%J^l7E7#Hf-0h-s5
z*>~8%>i}*41ux&zuhqP|f>-r!G`?@*d-!1B)o8rC=$`aDgVVF_dFSMC(CZJ*4$iwr
zor~U&T~$JQpP7Z$gTjqQx|CX9@$iD~)grKTQki*gA^A4E4ao`veHy$4lFOn+l2|dd
zll<C3oLzWd;ii3gA|CbFvK+wMJ}Z)^dP&-<M3nGwHnU`B{`(#2?Szsc;U$p0{zdoP
zQ@i(CI{W4xtNk!L!O+|?H2)G9`onOB%YQ#l=TmqmWNqGH7opfBdM7{j`n~<5M2lET
zl?%%*G*15R&d+7rP0J9yl{Js2B~)l$ycG3E^VTQj(_Y&g&Roj`uD3EZxdhi{RW!=A
zS&|jGb`g!<a{FYuHfx_zuFb-$$aS;DT?7MhmftR+ZL`K1<=ZT<ihSed#A5b~Wqzfx
z%Pdz$Su<;;0&CE-z}t%~Ul8P3FP-SwRJ~;1qKiahxqA6aK56~Z7_~qk%dCq;Nn^LS
zYboPHRk^8VQfyTsN*a6n9Zq`3BVFtTstk+>G|81J!MW1o6+N5Ap|sT{pJAJUkhzs_
zS@#EY30E;Sll<92oJB9t>dT^*eq~qH6_eymnKJ4RwaGtJp>Hl03k?+w=wdcLcz%=6
zKh;c9S0$pdQ}&~ayxGLzW>%`TYJ9yk8k3zxseA^~AyP4rh>}<UFSS_f!?DmD_0xrz
zG8Isvq!DUG>J^2{dcKFja4%_mRU#@jW#f$ntNI+{+uG$U(5;9h8*n_IGXalPT>#m@
z!~H1_FlC}F=u_sF1vtWAmA*Nko}zEcMCsE>XiGh#0jML?DcY(;l(JerwWJFUP_NHa
zs7agXBAhYPYw9e&+ti8v0)k3hHTPzHHl<cmM&jS(`2v_!PXZEv4ZO*jJ=a^p0C3tf
zC4#2ybq$^gpuR7Hso{yB7mlnE^jBc`Sht=GX8ATHgDE4K!Q}Zem{d;&?1S)NqZNXl
zS6~MNoHT?jBuQa2eKBmZCkGr%vm(IXo&bqa44!98X&Li5Z{FB(K4eQX!^soTWJ^^;
znDAAbSS=|hd}hdMcRs|A4m}B7N3$wDb6n3(I=nSNa|%%y4Bk9iVvlb6k6)81UA7XZ
z|8GwI{p9rRiJ~Me;@abMGOLgs^}8E4<NxKUcug;60k?_8tecNkw;wb4P3kYbR0TXG
zma5=0OO`46=8|3Vsc-WNE33d%x@)2Wam&w|oNL(mFbh@d<~qGl1zaZ<s%~a(mIu0q
zInGmYot~fp*NNE~d|r#|y8U!qn}c=H$Y4(O32_X%Zx^a7hiR;p><6hp)GZ;G^-5J^
z^^!#4<dn5fWkK<{RjR+o{HU1zHm)UZlR+R)_IiUq3rAzlB)36P&bS%Q21Wd#RFLTn
zsC1s*@ePGl-^1gBfO^83F=@&src6RSvo9@*XEHtU%oqHuU?#z{;JQYRLKDSr$+`d8
zO<EYZxv at Du82(sczNrg77@JhZYsjlG@$&ICi$oo7t)*$#rz17+n||hto7&AHC2ws>
zyMrAmspe<4xIbNs)wy@$ggf}EXPOuI)Te`o&wiGbcKsq-`G{~bv&eRhI#Lq8C2Gs!
zcSX}&z$}IrhcAzomA_`_cC{$V%bcUb2TDuOotW^=(vq?Z$H=0jEPm+JmZq<srm>+N
zIll3s1pmglp*u+t(TSU>+IecMB<$*3-&wwa5B&6MDd#&M7zwBY-%Bm61K(`rbnp|d
z<#l{I_?g#qonI}9UrS1&sJ1XZl$UqI0Vr>`-XfZ1gFE=rY?^EO{H$e0eT=rG22%`v
ztu|eH!925!7y87l<wbq)wgjCSc2R0oZ>px&79tw-CZWla-qbo>l6`~M3Ta0vVAc{%
z+Cd8x4eNVDmWWLB6<=FXebYChUHZN$|K#hP`c$U*;Hx==rbjR86RReX*0A9G7Y^V}
z8ZOn-cUVmV9FyYta3qL7!ubkzM2P1MXAA$4MllXGAmTA$K1S?H>oW!%5g3I%Bc7sm
zgLn!`Lm!YeNGLLWSk@$%y;)vMZ<q>64?GRAJhmx8ebd&!t0a$0Ov3H35GoJ`S at +N>
z0e5nEMNGua8fHPg*};=&4}vGqpx#5*tK)@2>Z{O39PLKD6pDjOw>%9-i2M=ycK^|H
zA+?gn1n_ci9(mOp`e?S{=7zqeZJ*R9tKB0lnYl;$wyk at lZw{MBkYT~;z_Z5%Ovre)
zjRmAfAx97Pd5#^~Gf6#~G^}QsWLb^?37*NQfM<G4@!W&H6K{m152>36J?v!ka9rs<
zdiukWA<Ok*g8pi}fySX6FN>Rbtm=HIz7KDU`&gb%%!lDkSrE{JRv(AAxtt6X)gOqr
z*^r{X+0Ih*N8)*kUxq#u&$2!J0uj$K)aT+&Y5T!=o8UvMkH(u!``LJ#pgtUL9zAFG
z+JV<ZtZxEuTpzqs;_1}AP&cAJ$UM3p&gbeY;NoY>Vcp%Gk?v9H0boznU$d*p06()n
z>CE2q52=4@^e;LW-N9M^ym#^n=9TJ;<;ch<_|If^-yIxN<_&z#+|TTu9W-q{;@AJ2
zdl_HjGR7=z{FJ&+JIVDSa8{qO(eU~j_xVC~8LQil+mbM>nG)DpQs$lc1bmKSH2t*A
z4mw9iy%Qy6Z7Oj2Xc-~*mXmR>#4T4MB3x@*M#Qb<MBI7`5g${|3WLElx+#)=0zZYX
zLr1Nc7H~-y1;S4uUcyP!;w|Z(aOrc+;?XhWr14-K8%`>dkIq??ccC=yzckK;$&z*O
z>^?}bS6v5EKa}jG-kx?Xcczz6J?q=)?fCBF{t!NvhFx#5cU1-Y3z)Up64?UY-2FVi
zPw8J_V-I53lQdtGZc4F%{6)=%@?(i?K4y1|k8$yFs-~JyeejfwXZ at seB*tBVcF;TW
zWuK&E2d%JW0_&vpsHBu2h+<rgw*=qO{Sqa5<c%z!|ErI856Lj-4RfQ66&rAJh`JK3
zoW9+!Z@BArYZ7l7ChC+$2BQxXHK0Yos>zaErQE5+7rZu=?F{ouI^nU($erq^m(>Yz
z_1SbXo6iOxsk6F-&Z?TnWGg-(vMOPXck)1EyWCna|6`^$Rzc)Rv{7pk`IxDVTK!l+
z<Vmzqi&5vqz~gMO_NJn!tWzI-JNjJGk1Hx<B~+e9AxpNGiVCUahpxdWDo>-3TC5Jo
z<H2pJq0DF~kvj@8qnBF#1UyaG!j%3-dHuoB<*)F5qu6p*Y6OBa<(>L;ukVKAX>yUG
z+BDL1$7ax^b_eV81+&|<p{lW!Jz4>}B_5&{EhM+aIp=PDk>O2SiS`2Cv64yM9Ioe1
zs#qKwSZLLhBi6I{>|r)oe1LDpkM9?=R10v?qM}WG<W!)%czxdO9G+dA=i2ULRpynm
zW`rysxjOT;x-N=}iQrSMsfE5mJLtI@b$eUD)Xg;I5KC}{`}#|9Hh;KGvF3a=R7$D=
zE!DHZhWD4o(R^BSZC{@Vu@(xIsLoT^?27Tgxz;6cmb71dT^f!JSi0+A>mg;t1Y299
zyW9EVVU4^kY8sP!_3AbDE9_DwB3E2v<U@KZHzO`PC&I1V%{c8UJIVN3uEsyr3fV~g
zF+n~ZXO<v5d0Zr;aw_z>UNCe7IK&clT{=!>bF&-!|2*6zc1g6EmV<wcy8*XDHtW~T
zork2d>ve%RV}MU1*OwXintzdewOearYikL0wOh%NZQP3HwBHi6_tvG6C3w2KOSDMd
zV!|+?k4-K~IyIU;+V8$1cs{>VOUy^zlfzin!Recm3!9nW&_N@=Rtq9)QOU2#O|s9U
z6Pk!8y7qXh(Wi9ldkK(ET0`}5xF{A{Bjvn&Ae8MPx0ClN|ESjMW>Zz~{*DudoYkyJ
zG<Pb5soVvLrTaP9oLd`POY|qe)@^e7qMAk>buG2OJFn8$)ZuE0Q$TRsJ?_4|wPv>s
zL{9Z2{myy)4gtUuo(E^T>jyW2ULWHhrdNx3O693gwTxJba23I7P50)6|D~<57_QbU
zc5SI$Aj)rEsP9Fk7FN%m*Vl;_2G_7`<IU;g^=+UfTIXz7n=Pm9kY#A|?_F-bEoSv~
z<;WJ8T0%>|+>Vm2@$RDklRiOT%R6TC>2)fIDXI7z!R&i25yFUQswJQG`EfX-Pc=I^
z>+>`9yq7ik{6tw;*E?DjX1-CEL?q1Q8OYwr#ZmXi?h)C!))q3Jy11U)j;om>+pjHr
zO6hjmSId#`Oi?unmV>V(L9LZWJaJG>f?6iF at RcN}MS{#cx_h`y_G7L|*YhJqASs1g
zC8%%gigGMVASDM2t~>(jRT3v;eRr!UWG!zXhbuQ$RUvEfKpuISp3*Ptj|iW#qFvRg
z?<$ofSPs6D1oa)Qk_5F(Om0@$2DM0_7vU_l(jr-{poZuv3z#`>Z5vl&e<}1T>=&b0
z(E78Lht{toTP?#I^eVE|B7mNCGr1WpDh`6P^@GErssw78A5~P9Ky4LWPZw)EH%~*y
zsuXG~sj>{UwFD;<uBPv&<K%AjlD(ayk!llby<dXna%_~w<XQ&vX?!+OF+3Pin``WT
z9F5N^>V0xOb4kwy at U(D$zf=C&E?!09%Yau?cyUzVudzt^W{pM4vui9ENh514Qa!uI
zBGvQOSg>|>SByPn6@}M|{~ElS!X^3mqL!3z6fWgeQMgpEy27z`w!$%bPVPtR44ed?
zR=O1u8&c?vR&&Kn at 5XGl?AU=-lf8EPehS%ZH?(T9*K#XtYEL11E#}DQA4l`y&y%(K
zy&<tC-+y<|@BG+Z;>Aeh|Axu+jS(k?#1rVDep at h1mg=FF%TaqUB%VMIwV2d>LGldq
zk^@YL39XVL<`R8DtNtdQ?h7i&zD!@RcG>IuKN at C@zW)SvukZ7!VOEg8mU>xtvo`yy
zzF=AZudIjqZNQLNYYbF+sAVh`s4MtGEtm61Jb at l+F{%54c6m&wrDhAiCi%|}+DrEZ
z6=bj94(><o_4R{F_F9I~1NRED*K#Whzh=AFVvYss3i8)duSa4{I#7MVvi`3Ebp<`t
zZv%$J6X>Cqu~?w4pody6=aF~<J=9`S2kWi%_623Hh+JY`u(fnwP(k+k?cjd2cG>Iu
zKQg!0dBNIcukZ6JKvj^xmU>xVur?j2zF=AZudIjqZNQLNYYbF+sAVh`s4MtGEtm61
zJb at l+F{%54?edsVOU)L3P4b@|Y%kpxRFJ)XJGdWhuWw$UWUplya!zD!t$o4TWv}n^
zDnM0`zm|GgU$8bEsJ>uX|F5iv`fb3FSW^t(dZ=YA7N{%uLoJu{NIZcaYB8yUb at Ekl
z%kLNLtS=re@!BQ5Ur<5z`t9I;w07C+`#&<b*1llvve)-{6`(4}UrW8LFIbxnR193!
z|10aEej6|()*1tq9%>nj1?md^P|M{!5>KFqT1 at J`V7ELb)KasBUz7Z22TQyvQ}+cG
zWUt>2?nk at p>j#zWwG2bfiOj9FFIc<m^?hCis0#AeQZMTZ)}{m17cA@lmGw}+4Hyz@
ziUC{?wT#6Abp?N@<#Ha0C(uJJCRMPWSJ*$VrDhAiCi&0$%bugSuOfT>c7X6}mc5o?
zR9{d<_F8Ub;nysCE#|aSR@f)3rCJNWHrbcmFTS5wkbN1SU*CC&{?g|qs>oi;t+dat
zUG`ecX{W5PAF_<kuWfJatiSBO*!{eM?92H4+GVe0810l5WUu8`7JhB9PT9Q{bK2)C
ztozndt%YBk?8~nI-_I+^zKqYWZU5t}zx4iB71?XKmG=3y%U+8)?UWVPx0dnwwXJoY
z^_N}eyq{N)eHou$yX>_Lqn)yX?6us=!mlmXDZAHVPWya?d3-I^TKKiezU+F={k($g
z%lQ1-*0av~ORr~Ek-e5%X`f%a?6sI9r+gg!3?I9hm9OX4_j^NPO}_u`;K$D4;rWv1
zd<>JN>)Q3(fFbb&dZ=YAa#q7+sUB*%oJZmb^iYdQY!_p=xwytQLGbI5{}3+8FV_~T
z$zHo1JcaDF{lA**wcHAQ|0!gz#hmU7M#G1-eu^3HhW~%;y=`+FN0K!<Ustg|0<j;S
zXFTDt2|^<2n3#x5QMAon>Sal3?AeJ81_*#6W&jX_21VN1xxf8pW>t4rb!TRERW)SI
z^?G(Cp)>oO%2Qb{U0vO6D0Y+k at XWx;@w>~@D*yd=OE at o9OU~XZf?x-kPw@#vN^U6K
zbx6ubJ5YSGWJxL{Hk#$UnC$Z9Vg`RVneg)L^2B_ND>+v?hM$SQ>+q9XLC5fuvJ0EQ
zr>Xs<;+4t2%U7yk_`@CD`^4nWe3^<V-tGp1PZNGt@^`5Hr0gn_fA_VYR6I=n^=7`y
zcf%8WUmaicyRtCA53|V*-!SSj^cAK*-TTw&$@61pG8ioaZuILcLh=w-GVET2<d$9*
zG1%25H70E9CByDTh%4gq9=<oJEd*@nS_73Wldt?3hx>u2w#_^!5tlSjn31~6>QfeG
zK3R;5;%Ygbpg?0yqoQ>^R%?`^Lz7xdn&T6*8j_UzHaNALmxEjWRK*?L^;FC|j%}(`
z-14z1e?R%_)f+JHIyR-=l-TmCZ93g?Xi#ZNz4hPmxD`j-U1~0_qis+qRi}lQU3U;&
zx5~?j?iXux<ExIXE-N~v?snPiAh?}Z-2w#^XF<yc>M*s*01DgeOchbGKHExT$e4<}
z<Ms+1TBY|cOMWw_67N=(E9LtY9Wy0*+CYmk9hW0pX}HN<3+zCQ6JCipX^KV*1s#al
zhG!#A>g`DC4$B{0Z?N3tt~_-h=A|~o=~8zf=A|~o=~Al~KISTdmpb$5j%5d8UTQ;}
zE_DZDUTQ;}E_H{U{k+tf4;3ss5c5)J?&$AA%u8*ElcgR{CW||HLQxL?NjZcal)>*Z
z&Y`Z+!woKwbqpaBze@;7wSePC#}G2{cNT)J=v(#My>$;6UCT9omk at F)x=RR|_+3KC
zspu{tWa95Egw2hTLiIXVd;$TkR_OZE!tStAemdCw3JYg1zrw=Vs&9#)<mJ4x1h$_R
z=FY2LKFOWe`s|Gl?0ux9WvXW*EmJ*uwoFgy!V*)zWvU<WXqoDL@GVolUASp-o`!9i
z<Ptj1R<+KOOX%#>Z=EHT at ND(^<i*Ro>5L>vYDy2|`BoluGZLME^-Qlat6iCIE~|9q
zjIFebZ-+3}%~#vmW^=z*1jwFs)Ev9f0+cwtxOn&GZPhBGrNEgB6tkFh&>?xmu>`vj
z!P(5#?!kP8(i(|TXtJ1f`O0gKMuy^_Qze`mVY;uz*Nd6lr}WaK499MC!i0Hs{QSJ$
zI+ at y}x=N9gF_z;~NP%rDS_-_Vh{%eh_UUtc3MrC`dA*s9|0Xw#`Eps0x8)q5ygLj=
zbJ>!VD~35k7;nJMD8i~^_|a)*B3uRL*6NHSKSt~Ur&N-0hh^BL=HyXiRH!n&dhz_?
z^!PuHGgrX7>yVUAIBBUUK7kJHc|~K=5uLHvX;l%3_tDDHGO5GyC_aHmSje*DGFO(l
zBGu`>)1Bp}9)Mz(BIWKcuL>DVmdqCQX>{0Si|UdrnJwzmh_uTVHSTc#DtC<9)t+TL
zMrGbQwB2t99Wq-KNWIIR<+#3+*>Csj3?Lmu%4|`eMx<S~sGWXG+IIiD&7|DNK&nFS
ze2n@eI_z|e+I@@K*#kqS`?blkn-(?S{dH7Dv75g6te5Mks*t;DQ5D4}&>?9;LF+r6
z^C5W{`jk2(6_Qq1jSd|;k0hx*ik;>|=G at IzRtFuD=WZ3nC(t3OvYd9&L5HN2^C&)n
z4oQWqleX)Mdy?EOnqBJA%Pk1%E4pfu*-mzQBZ9_KN0X!qtdqH`CQ0eoqWMI5l2lks
z>gnwI{{61scjA!jMvoV#&)<Egz4PS7^H+ACOLD3^LF{fm=8$|6rLZme>jt$_$?ePu
zBB)eS;$kavNIr>DSWro+q#$TWncUs4I_$kjstSi-HwvAdyngp8clSw01(KWX+z{+W
zfyO-!KR+CKlIoAfl8*8uWuQaw%gU2f`Z~QAvkx=nDWmc}T2du6S#~3oNtN@{Kb at Xu
zZswwV=_p8Mn=&k)Mv$bstMj{~AW3=HWcf6LBo!5tdADylMfBYWko|7cPJt&kiQNUR
zjxnVw$?c<)DoM$P?cx_!C8^vCC^WoZWG!!3Dj&VigWpXvQM1M0G>*CM&seguso1S<
z75r{=>ncrB2eG-CDv!5$oByKs5)rnhi60r}tY7Kypoa8>#3y(n1v at UkJZ~<$Jdwhk
z=k4NaJDg^H5&?A9->cBpIl3-!XWMew<$Y>NX;{H)>GI}M-6^ST9&B_y(b41VWYY0^
zCuzKM2zH~uNe>sqT@^^q086kN1sXZvw`@nAr24}dMOS%}#%71$mz5`}^ftYh>+xo`
z%RR_Y1(stsB0-wGd~<wpnz;+PE@p5MGN&zlLMhrq8a}U5KLVDNH8$tFW=#(qpCW6p
zn11KegH&z<>u}RGsgLtHb}LopZTPZ*b&w*vf$eI`SJ~G{yC{3e8n=OUkSe=@eHy8D
z-oQG%_9eT4?dpTVWmeTsxkpciajsrAuntmWH?U75#m+~t4pL<|uumh^P8!&JGM?P3
z59rE|A>P9}#nEH^3Wn&Ew&aVuiSi_5xweK0T at K*ogOFH)r;o#WwIZtseT}WDg_y5C
zgqIj48TzOQEWj@&!eTyo)WSDUyt at 5GnFVf!L~Bp9zgW;kr=Yny&kCAof3cvazhs|d
z$>%HO#hk9T{dYM|34ZA+_~m+>N`zmq$C<8gv<_#71D}olmmK)qBK%@$SWG7!_B!?7
z{UPly7WAT1(ESf|zi7~S^|Id1I(}0XYdm at +_bB?R-Lm_)??!uDeK^IfpZ*?i?=BJY
zM at xijNfpJ;C34%XkqB-iWqy+u*G{Skg3GwcS9TS}&P8fp)wM+ObFgtkB`F6s<D$zw
z#pE0__`A{W`10(<2rdN&|F@lAXsef4eBIENxxU#^w&dO`EL)@U{Rq=<)Yh7|yR}+V
z-c~P^MyDb+=8l>sx8%=2({>ZDHRWwa)1;WOi=S^7*OQy~+T^yrnvSkDmti+e{Or}`
z+c)1`{@2-ydS%B?_1Z&viDvDQu|S1Wiq2vtH~W%76LUumzgEd8-EQKwhf!MdFiN9G
zbW&kgQ0lO|VZCJd43us+{HD^HhfzAYgP88TgD4p^rPIf&7sqdp^$w!;kUEIkBeR1j
zLk*^FatBc|XkzZDgQ!)KI*8gs>L6;5%nqW|A*ggx!@w at 6WcUn}Za4p0N29dnk<mfS
zQ3P%7P%n%{ck>2YQ#ZX+XtaRnvTZ_fZ|SPT9RPc|17Udk(j+?Uhi+lJ7hAoAZFu_%
z+n*lhrotR23cG3ogxy!%(bc^Pg|@3K|7F8|=oWVWS^mq0y_mvEmcG<oFKN2L_qASk
z`#{R;-!yHlctvM5&|o*VYZ}^%x9<ABh@=Z4kD{+$!tWhV-Z<~hNS>5VI_r>6 at d<QD
zsw|u`cGn?!R$5Vf0v(bH37@=Ps*lHQI!&F*G%e>B+jaf1ljtsCIbSWu>W-4MLX{7X
zCuQ}jP(G7dBKJPSEOsD6R^7no+Q-T#mAVSi%$Mv9X~k%N)1h4MKw0K$XwOL2{wyfh
zWZ0o#?iJyuEST0WUD}5?>U%F`wY6 at Wy1E);`{d|;00-2<KA_TJw{_Au;B&;O5giaN
zN=F2g)KB>w-2+Ne4 at c36fRaWipQC#~No1G~<L%vYvfbrNNJ<7RnDo_@<F~J0p1jR`
z`AAvB;DTLpl9mj+7r`BsTRm5D-k0SMDwLFnnDr&Y?iF%JpMDgY&ea{!zrX};GXq68
z?~A|u_u!9%k52}JkMO^GsNL1#39$B6fAQl at myq3|yOtwkrTF2~hrGGpT+JTWB(zq^
zb=q~*(gW7&@$|<x)Nq9DEvXmo4;=$D*&ERpd%&FoYxkt7fz9E<vna0M6Gbns&R)Lx
z;q2m6tGK##cC0uKUkkHK9QggS&CPf+8=RTab0pw&bL@6A^w{CI$0w&{oN*Ccp1ys4
zRc4ng(e-=_8{=n>RsQ9$XhM}mA)@xU(M3n-h0RAhSK~!P%9HbpPY|uo^2<g0!^O+X
z|L9P;<yCc0UA0Zy2K$a>u%y(6u-?t at nL8ZseL2`0eEqw@<MzsW&mJcagWr9Pmz{$F
zn$7<~?$P+&K4Eh+tNce_mdRBEg1sJ&!(i}9-jbb1n?}GDKNXYlVo at Qs<Jo6QjHe9E
zqmV|1q3l#up&yw9dqmxdj(Q}?C4oNe0Qxi*^s$oy=oKl!V;2p;DHgVi3Xh@;T&~Sl
z+s#jow$GR}Fg_7wUEX~t%<8Yn0<Kbxj{wRg<K}Mr;1rY#hFoGGXCCBJCiV at w2#{Pq
z@o;xvwZsDs?*=?1KrSX&88uJi%2JYxP(}_C77s&^<RU<_l>^t64=_`>d$=AKE;z at J
zt09ha1P!i2IcMT^myv~|X*fsF;8k*Gnuc=(O|1i*v at y>;$>B7;BZz7xx)3$JBZz7(
zx)3$J1tP9)$MB{#^R-wbSbNYD&YA~K<GQNrpAVdlr%l!F2j+{#)vD?T+GlWuTilJO
zbGL(UpT-pq`q6}t;H;1m?Wk6FYb_|YUzly<tEt%DZDs)}YBIc*-rmB;lVN9rS&A_!
zA$bT{R=eXhtPbdV2!LE2L)w~~Hj!DoOggK$H(Qos$l!uc&2=uS>tgQCciMR?os>{K
zpt?^e;8rgn*RZaOpNH-Qxg8dF7S5~9o7E)MrL!LO)40jW>~X6nM!O9|&!qHAbt9;+
zZT@<1@8nAXNhdu<*VAHnaIXi%WfGiKB%C$c*H7Z=31(Vu7t>A&wtPnkM0a=Y1e%3K
z7oqQA%MSiOJ5?fK{u~2J<48RX>m~@C<QAlT5?B1y%sjp%WnnwjVYrG+b(rkmZ}jo1
zO;gO5f$MKh>0)@GX9aswC})L}R`DHe5lC9D(HCR4aY!CQ$_nnTNTQ1X$)!<oJHOc$
zPBUOZjgtV&icDv?L#K@EylEi3phD&Cge$_b<y|aXW!p`VJ!xb2=tymlKPkY}Zc)qG
zGH!Ve#=*D~=EYB|iPAZ=%jBKF)-52$^qiYwZuSBgF%P-50(23QkShXSAueY2JvIhb
zb&G(;Yr+oDm0JWfUIli5uG}J^Ns#(=(E&+}V+1@!+l1#j9mg>Oo+9o7?>I)llQ`Gj
zs48X)x<x=!ykY3dEdrWi4MSIM5zr_|cnB-KB7iYYA6QBf^ojt+D1BhA21~C9U<?v^
z;c~l@)ZcS#7;NIHSkS~%DVgWn#^PgpSd&V;NIaMFEb&|{^W<)IGk-syy4QYOa`?Ux
zHHp>HmBjarAaP4)c2t^-2}R<(ht{77an*z*Yj at _x51Hf?QFaVE2y2}pU@<X*u+}L8
z7Dbq?;mhsyH5WJOs@x)=F~$zim0JWf#@PY7a*KebNFOJ~_`|G|D5Yxz1w~w*r|a&y
zMo>`X-6%ZQ2nw4L?uwR at Ir}lgkWGmYbmbONYMT-v=*leu+R2;{yyqH0;iN-|!gGzF
zaMB?};kiao*vuJq>vKj4nG=GxnG*$VQz8Uixy1@%T5Aa2$(*RtJLwRj at LVIJaMB?}
z;kiao*vxTnYAJn=xNm`*4cL?jL04`OrM4*%g09>mpq+FG!F#R|6izyXC_L8)3MU;x
z6rO7Yh0UC2-TIto34Klo+Gb7^v`vW+bmbN+i0N}e at J{ALmEK8*5QXO&5rvZuAqvkm
zg2HBwd&gesa}E+RCj at OXCkoo8L<qWaixtFVP6*z~oT$<}=@6puTqB}z(ji3Qxkgaf
z%sK4V=Nu+vP6*m&P876Fi4b(<7AuI!oDjT|IZ>r|(ji3Qxkg0cq(g|pbB&-dnNx%&
z;FVhhv`L8|bmbNSZBil#UAaX-+ekz6%E~PQ+D00JuG}J^ZKNUS$}IxgMjDzfRc;Z`
zHqsDu<rV>LBMm`UZV}Kn($FlRa*Kerk%pivw+Lt(X$ZP<i-5L~h6cCFEdts`8iKCe
zBA{)gA?V620@_9z>a#1i2xuE=2)c5MfVPo_pewfsXo~c4Qok|ZEV7HU+tM|Hf+8-@
z>$KEqN)tgrk$0o;Tq7t at s41*BcbLeLTLd%;)B(D3i-5*xJ3v=%5zsbsCgXc=Z$7uB
z&~uHTu$j}O;F8mGji9jU(1pTtjiA8jm-Axc-j3r!sQn_qG43wlwO<4{M%)Fw_KN^7
z!|ig11q%^%U#|=|1YY|^l)MZ#1YY|^fTJwyjs0$de#evCBB4LbCXM^qQYx075d^4a
zd0M!mFFhj&P|@-<oxt@J2)w|T_psyF>D$|P`J3(|_sXp8&fTV7jweWBUe0CemRp9d
z+=PNF(B^YvLFlQp&LBfiyOkQ;qDu{r-PDyS3j%Jj&`{=1#U{T5 at J<B>@RX8w6MTG?
zpg5e=vE;Jm+&E8(J6>RsI#j4}6jWE?yA>YF5wH7|yMMA<tEPd>9o)N}Mng~hX*8(B
zpGJjr2ds!f#-B!oj6aPE8Q-mvlJTceA>&V at Lb}U25lY6NMupT*<9bXi<ajb!+yxq9
z?I*ND4jlFF0$%$?fMdX2z-zw<a2xKeyG@;ou=a}px8VlCYrhC^8*UK1_KN`D+_-}5
zvx<OA1meTkd*siXJK6VTkV^z4)(O3lV{^aWI%&;e`@Rt*ST{gY%v=U;EOH#<;U|lk
z_f(5QU|b_8%FtKi>qVDm=224P8$n{DcV1B~FB|#35hR$(b?NE}1y|v|uRy|0Zm;1P
zU-MaT`C7~P2%ubJF(<gse96?Sm}Z5QJ0<k7I|bkr at mwRyj@89bNGV#mMo?g7Rp-_9
z%29Z(5fpXwot9lpX}~ptq87@d;G*zcBPi<VgA|@?1Vt^>*qyHhGAep4##XmWp$i42
ziHM?(-iv~x at LVG(YN0x9l(rca6@`-~-Gz!<7ptT9qR at qkqd=kN-TSD at HKHz1sOr4B
z1L2a^bB&-tp*m7{t`QWDP;PZ|QFyKq6i)OZ3ePoy!ihda;kiao)X{gEaJ1YbsA?5D
zQMKG7sA@GjQMKG7s8EsV?E3zF^EL<9?i<b#G^j>rnuc=(4Jy%@rr{hxLuu4}Qc`T3
zNzZxCoA6wHP>w~zQ at V74cN~+%S<F7n+%+>@A>$oER7c;1sOcR+RO`@%sOcR+MD1$|
ziyZ2E#!9aUU}{kwu#`?y at QMJ&VDXf?#2j$x6#={eRJe_ at c96MO1y*hm&_x at XD|F=+
z0lm4Iddq6C{&!~Hv0K02hI|A}Trc!r9SYvl>cs)v1tmJf)EK71a_QYf<l1HBCX|#d
z3P4Yq9SaAJ8EhRR;IT+8c&_Fg#|U^#(oXP>V+6d7dAS~MW?e4Op(xfjg2YDNB2iR|
zC$aH&BJq7AB5~ykO&)#U2ohH=mn0-t)TNs%L5RfnjfljRVBhI8mDWe~7yaC2nU*d|
zNUkUnSAr0U?<>f~t*^}|<H at bN1lsLJjXiB~Hwmo^x}Ndnny)@Mb*Kb@juG&S`NVxm
z8V5`+5s*a~l3XGnr)iaAPlK1j2DEb=<4YB;nhHLuYNqQOr`X-n(K2;NN7pkV=3+W=
zZ+39`LM{=Ii!da)2$0;g1AB4!$Y^t)s?;l0t`QX2y;kSxb6w9hf&%+8hJu^)dae-^
zShUT!@aBFTe(e_lj<wJP=Uzx%`$d3b#9hE^zX)&)7eA6axpCk4Ckaz}Mi5}g<!N>D
zNaB>95d;`^d74h(dPWeSMEH5zZW5KA5d<hvd72)9>ls0Sfp;TtJtGL}kJiigI~yOL
z_uoOo^{(|7;pJP9jjy+dLF at 0W%O!1m8{G%xI^p_*<#I`lkDw_VJ|?v@EXqC+p!J8i
z<&qj70knOQP9M3huF|<uHa>&x>)8e at KU!U3a*~%$(hQJ=#WpYw!IF~%%M}Ithw2-_
zb^8^sKFTjQ3kq`-*zP-0c&-r?*z!A4c&-8k7k&MmVv~IBi5_>B^Ce;FG%o4NZ~aQ=
za8&k7y)mcM-_ngatNzk$<XPo+Xw7MC4CZ6CLbY(oh574$0Mwv|eIrOPExVHVz7Zst
zm|aPH-v|<vtNf~CxV4v_5d;{1d0I^%&FD+d2m%bfJWVHXJp}?T2g?sfO3BT&*YeYj
z<{ZgGC<Nz@pD?VWlRN~#I`_S=2Xc6xLlDmUW*-OVIRxSCp25~9_?j)4^K-!Ka5+cV
zY(}5MD?i!Q@@{|Mu33u~)^~IYK*P2DB3KLF|I`~NnuYfr1^7A>>{*R(s44gj&lUlF
zuWz=xU&80lW;g&@hWV5}R(f`Fetda(Ro at N4PotqyEdzYwOgKK}4feZa>`CV9W1{Iu
zv^*6p at RcsvCIde5i1f)T77t!tU#wXRetn8Jz&E6L1AYvOwcsb6SOb2Ti8bIDP=B+C
zb-`Xd;DWttz@;XFWZP^5OtMc+CHv54epm+jlFEuT!RLC|<MdG;)?z-r!<wMFuXq~z
z^Z{?e59P3E at PPr|U_W`|oaBAh#yReNd&W6lH(``UGAu<4d@P1N2|ftJABQiohz0=)
zKi(povz5SpR@(I*3x=J`BX7bFrm*KgZm`Gk<0qowk+slAOe9Oe(?fF?4I3WoNH_t$
z^1+{gpZ{Pjn8=cWKLftS!JYtl&mK45)nHBb>lwTazLCKjB)On>T=BUF-?QMM#=O4p
zT5aJ3`qBfBWj+ES+xV7Lz_%FqbKrXmf<ZU~zns9HfnP{q4fG`h)`DL=U=8@?0>NP3
z<j)#$@WI#ovql^XL?aG33);rOo=d>8nV at Aefy4XcWoXGrz>*PRA%#R#$%dek4KdB@
z(M4FrjL3?abTBV67t!rY(pfvHp`4HS)qBWU1guBh!^Ie~80fL4PeQiluLv)gu<U{f
z0rAb%EE__KMg$d&1Z&=`ra)^B1g|;RlJk>dTXNoLOU at gelJgD(Z3 at OaI3?#DY{^HO
z=Dg9CoHsfp=N+7q^A1kQc?Vl^{*uCK&KqsXd81Qu-oYt3 at 8Fc2cd#XYrfJR_ZOM6~
zQ*z$HDLL=pl$>|4CFiI7R&(BHOU at gelJgEu$$1B-<h+9|`JtvcZ?q-njZVpV2dCt`
zgHv+e!IZq<o3GJaFq)DJMhnZgEep#VEi7-euzccMSl(!1d838pv(m!yMhnXuEi9ih
z7M3?!Sl(!1`TDf5ywSq)MuN3(^OEyeb0B!l0V(jkSR%Y=L}<}yOHPkjh|sVaCOg=Y
z%MM6E?_?73Wh;Wq))HBsJkV>HSl$wuKNpelWku|%XteM2VeOblnjNWGJH67!hlE2T
zzJn>>x#RoWbxmvJ%WsU+v2x~AITK$!BcF=zj?t_dExzSNITv5kqMMboujGrhCBI67
z)hL)KdHAy^C;6lzK;A at vyomt$6d*v}M1Z`B0QoV30C^Ju at +JhN7htfJgP5`vVP&gD
zzU8m~EwW&>$buDKAi<XwUIW1zuqgO!{{~;?z<OYDzysdIpqc6Q2&_ZNK<_qSJuHKH
z`i}L$psP0!upacBt85Wgd9iHe1Muw0STxlEOQt&16cfH>)f9q5O(8hc6l1=v)f9q5
zO(8hc6w1|d`KUFkWKAI;AVvA0FN;8FVxMPb9gspra42M<ECTP~Q1A{lg_6#7B#Ki_
zr8rT&R1cK0s!-+YE>t(V3&kZbv{6K|nPQR6H8?%;Cx&4j)0BN`8rg>wn{Gr7cwCLO
zkw${8d at hbXv3#<PHR9uGl7S!fQE7alj6VyE=BX;yjOQw53{f$oa^(Xla#yB%SPJtr
z6I(`?g>Pau3c}z$To&HLW#Ok2E(`DBvhW_}xfC``=aCi74i7-EW_)mjHQ?hPtie2#
zpqOBQ<&&y@#DYJ2eZwC&50>Eb609AcWnc~XL;`ETDk(SZvkq9RssmP;>VOEe^_|7X
z0?1Ybm#v6wca4kKnjO(KJL20d*CM`VM|{mryQx`Z+7iuLXkRmHq0PyxWrIPo7TPAv
zT4=v7Ybkf_N=Djy%NkM7a(gQ4KplkLTFW}1qACJyPi0RvTTodO?DAoc7ksm)?V|h%
zqkZWnDDCKEPeN6y4Uen`%A$LqF1iP@*!_Ychh|3x%?{fISzOo>$R3BCea>-r|DAK#
z-ACsfwksFzhPk%Y+oskwd)v&~W`CC$?FswWCtv?=FnGP5+)ZbL*$V!euih754PY<&
zlP9>1Y(5!$xSLO(7?&&D7<P5JxZA=gP;9U0jM?C~<*u?-vAVv$85H0Ee}D1hBkUow
zKmM}!--AC6_8#~5j`sfW<R2_L>@Ld#AMNca;L}|6eHq>EbIU9KGo|=uvs at nj=$WKE
zq95gf at 2lWX^T3BHIPCh%gTE28hPDx9Dl^m3Go_h|=(K$?PngkxlrgjeG7o&Hq&se-
z%tL<)9gW;xVKY)D{x_oTguSXuKRmcj=_zmahEqxX4eS}M2~yBUPZe=)9_};Ip(~Th
zj=Ng((7%C-72$DjY##hm6(1)Z_2$?-rqNT#QAsD9A@xNxRGDxd)ECpiP>ZP+kGA{f
zss|MnR<8#pkWZni<?De8^i!y4D|D^e@L-(M_Q#TFW<PZ{{<VaEJ^TC5SNT2T(L^Lz
z&H5mihy=8K+!ZLXYd;XXcH9N*Ym`*SN0LOempwZIvG`^~d^WyV0kFH+S0}LoMq&go
zeD}hzCo;eg)khV7BUQ2Y)IePoDP6^Ev^P7HJK6iq)%F(N$UR+eH+e)iBj6E<sAI~y
z?wsuH?Mr$A`f{FE{HYF~2aXe2SsQp}BM%;=QQ$$G$IQzsnontU`<QtRG!90Pc?ox|
z5<m^)N(A`>|49jo1ep at ef&`fo-KYd(cmY&a`^AezS)jYj-Un886!gbjcwCo~3lFoR
z%-&~TyiC7d%`&kMWbF63*fSY>vCS;^SjN7dWMUue?Hx*O_4>NVM2Ds-qracsXTsme
z!YsDA;MX$v?C;q<fGo=@^O_%qC>i{HCO8aFGWcSfCku34GB{*Q9y$zsGCHJ79y;`k
zGWvM+Qyw}@n`HFWU2e+A*sz$MS8`aJlhIe%@G#+%;jbroWrvkN1-!@uhiQ at wj*AO<
za}2rj!gYl#>}N9e`&{g)jJ?=qmirqK8*h#5Wr`vVqIBCO6MQ00r{Ou++;I+Cs63&=
zMWUQ!kyQC>7V4u|lYf2810IV?(_`>?;4twQFWdn>cd`WozYLG-G&vOsce_>e%&V56
zlqid%-29d`fj0=`X>zo8C}!dU(6hVRZvq7GbNj at xLO|=ESvdo<MNxe~&mQHD=xS6-
z9bm|>fDl9Ws5A~SWRI!WDg(UxBCip^6{IqNjIT52NdOQ1rc}qchMtw8`+M?^30ywU
z0+;s(+1G^R!9P=kDd1frndnO6rDgvtX`ougu7Tcql393KsFkt?UY?Q%4|68D^l%G0
zOB$Mxi5XuMc{8%dr`Vnp`0-IT0j@!c+85)a%vJuUd)T8X1lhHVRUqPLPKh7KsJ{%q
z$-HVk3czR9?l%GWabEIY>+tYup*(yY9$rwC2frV{&n^B_6(3)hlv(~g^;$C<UEbnH
zFK)^$yxgod`1+?@_@UTpXMMo$i}2Gv;71}nz5y#w8=M469VYIS!k1y?F^sfnAZ{?r
zrx>anxHl at F<6x-8K~m9EgSleC5G>UPiPZxM$fdB5Ts^RWU<wNf1}`nkl}kxqk}I16
z#8Nm&tZWXDO5s4M;8kq7N<kc2Vr4UcPznVKl}!OUDHN!ad9hrkR9GFFRDF;PM;Z&N
z)d$PLP-CGsXkL|<so0*f*P5DPA1shy3JtZyK4?HOg$6aNUJjV48t&-P@~kJG;YcHL
z0~%%qggc0&fRJaMxui6j!E{9;z&y((7^)1IVz~?lLoEgr3E$P2Sr2$Erpc5~0Xd~`
zpiuc72Sbg6q_Xdw%#>@Ygo0TGPaGEG53|f#8ICj_lB^e=gQ3P_Gi*OovTJ2(N0O~4
znG}#=3Wv?GOb*B}g~Q3POrFtHp>Z-SlLj(O;c+r7lLs<P;jtMu%FQrkre`xOlL9hK
z;jkH&$pIOra5x#3$upWNG){(P(m;kOJWhsX@<4_uJT}8JcO#FkVX-(cN@h|(hAA92
z!!kJ_!xRoD!!mhBQ-#LKuuK}rFonm-uuLAvFonlv*t6U|Ou3M-eOM+1WSGKXGc1z>
zGECucGAxs4G*xJv49lc}3{!ZV49nz!3{!Y)h8^T)Sm1&PX5pC>kYNgk&9F=k$S{S&
z$*@eG(Nv*vGAxq at GECudGAxq^GECvI8FrYPVag+MwhzmsfDBVOY=&iWK!zzCPKIUj
zjHU{WlVO=OkYNgslVO=WkYNgs$*>~xYGO1|E+$Nd<x&h)4wGTI90x-!4l7mWw0Ja8
zX2n*jObU=n;jmI=a)49{hm|UGem9yZ(>p6wCIv{Pa9F7_IY26f!%CGoQ5j8?d5V=P
zlLDktIIL8e93Yj#VWr9(aYqwnz_n6kQh-znhm|Um1Ef+otW=pp$7rIA99F7K3Xn?S
zuu^4mfK&<xNoBtokvY$r!6TRIYD6zIaDzkPA<25-f!iDk56Xt$!^o5jUmBoEmQMj0
zrf{HK`5cg83Wv=w`nE@=T(iK7p2}~G<k3KeDLgjAdI$$HOyNP<=&L1p!HjN{(HA?h
z9yo?72@2K&$-z*Iq*N>O4%g^L8GuW*GC4pkg``v~lLXXKNKh^OGEHV`&ET%Q)O#U?
z{XR`Di!yp)mGr^_ZC;_lO6i3Ln!G|opYFNOlWPKZg5_Evh9Zvv at 6D<Vnfp19;9^?E
zhffDx<!*#OgkEv)sg%4R6O!C!Msf&EFi5hv&8v<>m<I<*ZgWW>Yh{vqt5<fV07;l7
zyH+rN#j3Aj$yE%qILMM+FR%(Bvrx56v)c;3<TOZ<TPve*TY*S2D`gaJE7PmoIvJ^L
z1?yy*-+vth>jX%0>*OF<Cm2a)og4(~1S82M3D-$}JJ}D{31nC1n6e+Pll*qFAFh-9
zcCsI;6Z}SCcIR~nmso1&MJ&0sa){4-ioHFwc at s-!79Zjp`hqOEZRHU6+G;FCFZF^;
z20@nWdcpm?L6+Pu><|`;!YtYKg6{^@V!^LwX1AA7hxU@+i;X(8m;7#Q)S<oP_hYm-
zU8@&pFFn*thxXD#y>w_VJ=9Bw_R>SWgxgCW6R~i6>0>4qZZCaI#lr2SkGWWQeCeZJ
z!tJGxdI`6eKI$dhUizq)4(%nsAKUNHUh?~~{SNIVzaQK0&|dQUvHcG1rH6Xy&|Z3|
zmk#ZvhkEJIUV5mP4()}mU*LnKv&<WX&pNak%Qeq^*8qNbBrwl3J!c<rb!exwj<JAG
zs%2_OAEeRdY4GKETF&Srt`0qe<;st%6Bk^4^buF6FCq<zD?hFdT-5LN5ZACn&ReeR
zxH?h6g>N5Wb!cAHsrS&lI#I!ub{}DN$aoq>dI+l%RX>eu*eT)rX<RB*4^@QOAP*uv
z)C;yEnSizfWWM=!gm-YHJA||sAd_IIGSEhVOooG@76XZtxzAvPZ=F&_$|L}h6b2G0
zlL16h7)Yet{o(si4XQ|)1R#>aKq6%_fJh1hiIlmedbF?XsHWzYNdO`#3?xz}1Bj$B
zph)A%WRd&HNxXfnB~uR^!;waUQuRP`Fw{t_TDO at m#Ty|>K&@O3P)i}PYUPrES_;YL
zCRZnTHJB*Vc%J(i8NAge!DCI&SKHZUbHCo^?S&c5luio!5a20t->eH;#lkF;#Vq%I
zSHKhKO;EMf_<E7~VU^JgZd^;XV^!;e2Le)vu$}Z25bUy3h_2yFdw<KzGrZ9+31;B)
zKhJryw=aJB5Sz at Dh{l;SM7j|tg at Se856w{J!K&|v=U|8z9#TBDY?EBs@Ul>%sb$Nh
z8PXk0iKmt=m*-%p#Z${R&YWtG at D09FIJIoKG>~lyPc2(64`iFdQ_Gh9HY|K?b6B=q
z8pt+<r<N_32eM7!LD}a0^li9Cpvl$`&5*WCNIWQ8KRgGtNGb6+vgI~Xe2ce4L(>6M
zJDD^fo5JJBmdOLMDLl1oeavuZe`#2{KB(aBn at V=q^7X+5 at 8DFpsGpl%- at otSk*LuO
z#&1o)X-`Bj7gd<3uj`2kCZh@y<zEl4Djv<?{;ek5yay5xO<|#&>wyIXQ&?)j7PAkt
z%+0i;8QhN!tJVV(NT*QM()B<E`YBY@TBn=5>z~m946T}O(_9AV-V_RIpScv!t0@$4
z4`egizgp)Bb+|VZbt-ydP(C7bGtFFVycyzF3aO?yH`B~V2oYadc!Igpa+&*>;&AjV
z&;d_+=(R>OxP+2~!dX)vB+!c}EZ8dgV1W)qVZjarSeEPYW|n&ujXP)pn)Sg0Puwa*
zR<=Hf;Hg`M$W<<LQaid)=Cn53D4<LpP);FomCGao<rE at Uxy&0`qnp6uZJFDdJfNIH
z<SLg*1j;Ey^Yu;c2sRNvH#X0`sR6^I48Fd}oZTJnO=a}k%;&7(=_Lhyo{0|65Nha|
zH+v5EZbV at g^GW7S7;MOLw+{FZc^P at 5ZfYocC_e@u4NHKZU4FQ&BjQhQA2L5tcewXd
ztX)LUPM&8n{5-etPY?HwRQSx&KU4AZ`?CY3@R>zF+&h%P*EgA$ba01OL(k0l!@Z$~
zzRA2yIo#XV;2*N#M;d(gFr{RC55ts#-or2 at qZiZskpwQ>#GZ1|1AgcZ!FoIUFz#V7
z<5}QNem^`TjRvQj{m>i?H6EO+Z^lLLRr~0fat(@CI6ZK{%78+Gg7rWGYAGbB)_l9T
zp4{YqNA4MH>6Ioebl0X27Enx~LB)Cr1~gM>P_t<t(Ttuc3(crmFD#&$LW7$1LIav9
zG;`$0n|D8h@3YD&w(f%fpAM69c!LC)3r^4WaNoPikhzZW48G|uGd%PmlC~l{$L5z?
z&D!p!bsq%y3KOvskRZF7wJWR*GGte?wxjW(50SK6u8S#*<ayP6qb^n6K2QvqAJl$^
z-<uU{8aS{yWOHb9L>ww6>pt#*kF;h-E3UoJzzV-284ecxgad2*3eRLQUgmx#aD;78
zto-HN*&%r~TTSk!v%zm4VLxjzhHaq5>iYg>P%Q4Y at b?!_K0X<gKmM}!--AC6_8y<=
z at Z-n4=7BR at we*<_d<Q!I_%RdzP{l`)FF{;XdYhy^+}D)l0r<?~KUIg(V)mH1Mv2d9
z$mL&*_Q#ovH89T*mkf&0{w5P1CK($1WSEH$wJYLdpIX=(fSJSS2&a_NOaMF8o_OH9
zy9yEZsyz|Gmv<E+RBpVzTTZr_OGYE?J~Z8WVSzmu3Jt2(3k~eUP-y;sf0x;p;73hl
zwE#c&eYh(AX12^MKR#_Dmmlym%a6AYHT=wl<)?evO!i at x4X@3_H~0AM+jX%W=gybm
zSseK6vDoH%<GE44-wcngOt0q4^}~FVIseD;TMP%Dk-F|nH|-K&ve@*;18FQ)&t_Tt
zt*?Nvxe$?^t=_G1@@i*MS2wG{YkS}k?i8AtEgUWWg7a3K$hzj{B<#z<9{k^vfBfOe
zlK}eW#-VJ1qcsQHjfVjTb2 at tQQ!yFCtD<FTN{@67BpB{16xJb+;V3|Gl%Wz9@M!?Q
z{bi=^`Gfe6L5a{KPou|>NZ^pk5R&OJN2l3pyZK3}2V+l<V0rhUSS$F(o{qn{+iJZK
znKRI5Iy#y&(N~-}*h_v{_M{tRah4N?2QaA6ibA)J6mAd8ebMHIxqIBbnZfDzI(mC{
z*c}}%RJBon%<1yOb*hF==5%zt7<!nmrgsn5<3i(UIHoh=1!X73hGRM-UL$p4Y&fPf
z)?&e&cT=wIaPyC*XF6vsSBSIena)`Y7UFDrrgOqZ0O)3zuA=UWj7vo^JQ!PlXwzLf
zBRGHFfdhTgNv>yq|5+rdW3g at yPfWLZy_$6*F>Z+ at bC^a-HBtv+yb>v(4-M9c^>G*?
zs~raU4sjSShb5*y;AA<DS}W_8NV2+HcZkDyB~rj(-+{t-B~rk^CQD_n-mH(q5LxB8
zGO@kI>-qH-)+lJY!gkZ1U&U8<D;;~52M<T)^ZnBKs3((Y$ee|~oGYpUJlM1Fb at UAE
z;=XLRTz#W8tK5&;WiRLg_B?#;atrZuuD0-e?Sj$R)5{O)s`?mv9=@gz;^*jt=WF^H
zdwTiDtEravU`@xq)4Dk at rXxS9&}dD^hFOr-(U3U<eKk|j(VT()UPniB2KoZt3MTjP
z*J#c_zn-Y*XwE?|baXIhpueBptMFvcz+Y^2e6nZY&;G7eELbzJSK75cTs7oizgMxr
zno;hBb}<dfo`Vhfpb3uVtdgtfkSsaq<CV5NdX46cvajv}`GWQgeEmkmHJUTfR{?mk
zXW(B?w6p<h4tAkpw{JRkU$&%`1!d&G^@)s<<C21cj^+&X_c}V7Gtd`Xwd`n4N5^|U
zdx|v1o`?S!A^?YU2H5zej(o<Rj*m-4a_XQp9s92e@?UdsA2s0iKFIFvbTK?o)i(BY
zMc{mO8fNSn__&ZGS0^poWua?VG=QFS-LW{*rAKo{+3#SbPEiKUdFXm4ya0l{ei#wn
ztDR-(ksb#vhRQ0DISU;JIu$=}B!mL$)nFa6V$eq{V8|P at 06-sctwVYYtJ!;{6408C
zJ-*gvQD{xa#$|LldC;1UjqB$!Hd@oMi}?~K8VY{tk-;%M(0cv?%^B$WxI*^^vd~xR
z3h`(k>>2n+sx)BDz=j*%a^4hR&B0c4rpTF_6~*{SM at M^3*~dp}odSPWofh!Gf+jrk
zJVW<+V4=6xtXXlf(XL_9nxXnety8e(V3#-i*t<BJ_5(IidaJd$SY)-)jh-uL&d~)5
zr)1(LtL)3!Qrpc&=Jc||)uV<^=5+LV at e_Q)P?pBn)A2U}d}B|?p9S!ZJsp1<z&G}E
z{7o^}x&t!jpl_}gGxhcv?zkeCbQat|6=11c(phlJRDh*&NoOHB%$qmmM&UT6Gm#`A
zCdVnAiDU^eIZo+JB+RvX=~B6*vydn{OXZTzLW1Zll}kDc%2B{adGusMk8}<cL+2<x
z(m7BHoul+f=RmDsFvSNIb-AolIuq&<WOAI+nNXD=ljD@mL=A7g?Xa(TVZGA1P?{1&
zt}53noeRYYbGcsWT&UsXZgn$%Kc8y16nwvQK2)d+pYNB>=azdIXk=x%+D}_|zotMw
zc%_4!BGw^2B2-3Yuny at Am{}@=bx3DG5oT-nz>TgGxumn85CN9TC7lJu2(VNx=`5t!
z<D?jWm<3fU-O|}emJ&v;BhM|JjpPZld2Z=!Huv_!xwoG=LxHT&SZwa)u-L@XSSpuH
z#Z3KZOiqgC#N;HE#^$-D$L1uJ#^$-Dv)SAmg>!F|pL-gM&Al8Jn^+o4<&vqG$vut9
z$-SJIoTSp&Jh$}NoTSp&JhyZ<n|s=}>B=RY#U_@<Qn{qF*u>IUDwlK?C#f_h&n=zJ
zNh*!ab4zD)l1gLq+|t=>Vm%A at d(ZOwJ&ncYUJi>*ERCgd$yChrdm59IdpR*VNu{xQ
zZt1Z(Nu{xQZs}|`_YT6jcaWcZ8jH=n92T2c8cXGpshG(<jmgQqoS2-X(%3w=^w^xF
z(%3w=bT*rNhvD2i%+EcI#pYfPi%l$zrE<ws%;cWN<m6sXOiog1Y@S<sY)(>XY at S;>
zo5{UGyQ-;N(pgMmsVtRCI*Umxm8Eh?XR&f<bMeY0oyE$bu~aVUELIMUrE*DUv2tiL
z$jT+1#mb?vR4(Z(Rt}A&a!F^ga%l6O$|aq}%Av7TF6k^*4vnR9NoTQgXrp!IlFnk~
z&{!&$bQUXz#!|VYvsgK_F{W}!XR&f<ER{<-i<LuTsa(=oNRG#e`38-=-tD=ivym)e
zHqR}cjpPZld2Z=!DA5!az5_E}a!F at FX#y;jOF9cm5@4xZ(phX$nXkGBbC3V{d-wa3
zHmO2vo?CisHmO2vo?AK_D!H5&lhA!^<CD&V;)Hl=pL8CSCB#$vr1O-zg>EcjS#s`;
zmzroiwNH9Hr6w9r?UT-fx~(_x1unhSl1m=ThuNgVE|=0PoeR}3QRJXpuXHY~fiRcr
zmCm)i$7d*&da at 3g3`K|`=Q$)OqP9zn%vt5X8jr6+6xJu3=Qa=u at _<h^&*E0E5{l<G
zpXas%5BQ|Va}V_!tRTlJpGmEvk}0c>N)WY at 9H$;)(yFOs%Bm--rfG+EL_X;eSst~L
zYM*Q#wTjA^bMm_^t5!j^PhLFJ4*i_*$>s^x5AbBQA=CuR8q&@9<j2#2C%gT?`(K0O
zknzckXNua(^BmHae6o4M^#d{Iwja<WI1U+~ta!%3aR`Jfo${GNRYXj=ZO9ZikldwH
z4>5IN%56tQmwGClvSK2TP(77S`Anh4WMax}O{TbkdMcf=VuG{^cX*{!K2xZkh^dG6
zL>-#ixtf?V>&X;1P*0^(mU>Xx;d&~a@|i;QL`=E$WQrS5uXO4mrY=mm{oa at +M1g_5
zbjpf}KtlCYI^{Ek`aKg<c6-7pX`r4=OqonYmwGClveYAxP(77S`AngDGBNd`UZ|c-
zOqonj+2MY#bjnhXKtlCYI^{Ek>dC~^hkBuUGBIT`L1l;QsdUOxk3d58R66A|h3d(~
z)Q5VZdNMI(GC^h20>olEooV+;=_<-~%~G;vovW|M@L16`pA|BtYpj)PPpsWyCDwjo
zg<S0#Yvr0BD?xROwQ|j8h1SwF*2=Xf)^4#9YajJW{c5*Z9oO7gEmW6S9oKx;su2dR
z-f%6cY}!4sc8j&Q_6o9f&0)tiKh~-dh83<{^I5A#7-p?pdt&WauUHv*?KRX$jXgao
zQ$AV1-15_2jNk^AoOe6Z4hxOJI;3kvdn+^s>yXYsDrwt0tV22jiJ&o9hja!KL1VBE
z=?o-7X#f8*_gQTKkedUkl*2$GXbjdNQzdPmJjs~*RPj<{AeC|$NCb_+I^?M|o=g_%
zH(X&ykMT+8K`BB!wNE+^3KHU}ebRX_d4T6uds$=clg?u`QF&^gbRMgT%2WHK^K5QZ
z#lV`5{V<-ZpHwpTbbPGO`D#1cZ0^@vrE~QC()qAnfv-?sCha(7GffsV^#yO1%ebYp
zmHMp4*9+~7L%v at +pDp$*#OM2^^I<!|JPGmne(8MI@EOd%DfwvZx%lA^#Tp*()4JtL
zo4b6x7pr?p7-Mac>A9r`g_Yfb&2vj<!>aDU=DDS_)e;5w%$q`iTRK}Uk;>+|rL)x%
zscfEGI$N#eSew#&Zs}~bL at Jx-md;j7q_TN#>1?$`!PmptoXmYBp at PvbV=A}w*lLN?
z*gUs%HdJ!nt)Hyi(%CTCDi~eK$}OD at C8}U#HqR}c%~3Mcx^1CybFzYwV{-)0VRIzX
zV)NYkP%=2{sYSQ0>8!O>LDrUQI%_RikhSHS&Px5~?E3zF=%KrYV>%;BHtoXLa7<@J
zxjHd69Mc&o8AC4|cbw9hC;>xEj#D}lC0&TgaY|>Zg;~r#%(R_ZP0w`BTA~nV(=(m3
z7AwTr^i1bO#irAZa#>e;q;sG`I!Eb|&Vh>P9HmD(2i*MGjP|eAiddCPI!h5|sa(=o
zHaAmsEf&pL=;~vwH*oJa9UZe}xl|vVtz6PsFz+X!{>^bpXTrh;nH;BdCTs&iCdVnA
z$qKVvk2kZ>G7FT*`la((d4hbtUpk)^DahyhrSrLZY7=eWFP+cTN#pbV()nDSG(O)i
zozK-tyFcjrrSrKuX?(t4I-jeP#^?K`^Uc>c%CLym3~cpw(HyK9*y|f at LJ0-Wd5nC1
ztGzV<tr;bstJq-8!Pah{&F49aFXj{Nt`?coOAe<$D2Yhsbo4?mJDIc4wXy^HLq?rW
zZy(CrB;2<U$(&wxJYCBfW6!{!>!n9?9=ck3fX~VKsoH~~HK*))$+NK6H`=A)6wMhW
zU*Bl?4(M6=4u#V$aj at _?*Em?b06y5W)X_#JpwAhZrs~Lq){K&?Bhxf%WGbfW=t1W6
zk}q_0GN+^C+-|*{g<ccrxuvt=%(VlX=a$Zf^T-Zto?AK_7J4%-)Fpu0C!GhYBE(bs
zr1PLGA)eYNod-3UZx`2-oA=5j$@NO-LS4dKu2(u2Y7^#iz0$c*ooOcxORsb;RHsDI
zZ{?L<>0GEzi6V2kUg=zOBvLZa*wgXX0eoXm$KN2nx~yd!G8wdm5Gq2>o!f_iM#i2V
z!5kZ;R>x#d$6p8VjXfQIgZOG48;48=wT_V?tBwO2J&-*;g2fcZe5H<!Jstn{fl4 at 5
zC@PmM7HkUv7UPo6g5$<y9lV$Cxuvt=$kBn#b4zE#QK18y=a$YkS&WzJ2S%+!I>U0#
zZbN;&p4?4m at KRl8^QleE?ypc at jvtkDMr&5NwM9WFc+PblluboPb9&iVh1LMknuV>E
z9Kdr*Ud$e~6-_dymwhqXA8RW-#-5H}jP^GgzOiTFPlf>kbVz5wF0-)r5Y^$-^GoN$
zPO}T2 at 0ZSp-DVd)-!GjH^&D^SI(%2Y^h)PKjY<^xs>Ah4=R$qLT&`C-*Wd5&v>u1d
zS?Jo!q5(bURneQ-QY$-|)5{L0Yh@>M4!X8ry_w~#S3khnN{(h>Z|(v6ab0Z3>V(>J
zOIPWk8=L2r&IZp7O|Rz5^}~FlT`YKR>1^;E8(emVrS$#M`6i1^CqCaVo$q0 at EZ{M$
zaDWX*h4EjXeEqwDncNPx__W+tgTe2<e)0sfaXuM5!ZT(t{kk)=UwSlgHC_zN@8U22
zJ^16`<CDSQ<KW+BkCTUg`*Lu0a(;Yyc?GkgIZVY1Xzp<QOK=$s_RL>)CXL6PCS at kk
zgMXk8plxnu92gunAV0o6eRX+!_4>`p>lde2XO~z1{_f=)4<B4L_^E(DjUa&Qfx1s<
z1W^1`OvZ}^7lbvL()yxUlMIWP!+j3bSOj%Wj?d3Mb&R*pb0pCm#jqUdBu^!hr!ge%
zr`H-4fssDSl7T6P2;B8}9!1q2qhxyw==LZI_ZX$zqaxjGwcY&0)ejkrY<~WdK^ACv
z_n}yGfMnnR$shx6?zU{FgU2~IJg%V41T;7<BuTs50biZrs}-lfCYHlprD&x52JTL?
z9B}-;b0GdL?l#4J9~ACnvq1qDw`?Dc$GN)2<FfK_Da)eaaSjcS%V=<!^wq<BHNAVl
zkL$2Pzy(L`!7<>aR_!5k!39u&3onssB#z7Xkh$OjD8Pl6NIIAAA#>Fl!dzps)kP#1
zF0xuha*^q38AZBUC6TV-BGc7MigdM5B3;8prW;SEe7^#Qs}(048C1Zzh&UG^!6IW`
z&;I^1k9qy`fhl8aUibXs_|?hx#%O1b2&2-hX1&k=j7BqGEcjr+!0ST>Ssv)X1j!e7
z<LTTE>;8a?=V*n5 at slqk82CbxK`tbig+ii5gj5T;x?A&w1OuD9a9j%-#!?;+3>L4I
zXWT%palrT>=um9$HZ#7q at FWcsF7dzG-r~jZdb_DRM7;8^4s&hUbCBx}uIV{=ywq3W
zJqH;cdX#xx==ur}k8`EQ<0{%xf?G;>OC3-sU2%Uclus at moD+uzC&*|Z#Up!F2L`!x
zkIJ<OBC?kVI-+tlfQanHjgF{X$3SGUQPU~1j%bdInoiLXBcnz{CF=2N%4N>=e9I=`
z%6*!yF-5*}I*Gcy2}pPD3T6Z7F$xL1Wx-%{W}EGGF_$iY`7vH;%Gaw|9~^+9#PPlt
z4nR>j7TZ4J02GDedLnYzZm%^MauotF8cER)NuiOvpWTZr(seBt3gRfSEVlj7AdW&a
z`#akW6x+CFqA;x3E7R*ZhLv&|eEq%;hW8r7g1s<|jA7y4qi=M55CglC5lI0kN=-m2
z^ibJ=qHv5?>{?x99Dt&5tnT{BDS%N}gmv at SNW3orHftU3Vz7(zkt7JCL~=dpq1vzA
zPdzl_xGwr&aPP`C8Q^N0r}$Z1I_ElFyl5BimcW4C3khDb%OvmnApsbLWU=if5`d9O
z at SesVS1DvL)5zAK&fWuZH at P+{o^G6oERS{_q8rVl!UH>~`0*AD>~$WUAd3U5ESxlO
zn44eYnv9q+f8~JwdcRx?61Nr+{;FU<O5l&3(H~`a{AxKnSt0|c1Q}F7evSv{6>L3`
zK>>ut5KaPI(qhYpizi}L!CCCZ5FQuMl#7_fks#g?Uo>!6igtI$-t=0)aiOZuU%!51
zOm at u^eRT$*2gMVAj$u)|P(*vrcW}`}fFnnQi-}xv;Bl at xY4K4^4zLQN7+9=2wm-9a
zn={n%34$w#s<d#PFmx!0>L>x{2_v3 at s19zc*?X>1;4oJwa99>_%uiedDDak{U^SR6
zRoS}yn#HwaF;QTFn1h1D_nWAdW09elFL7YySgeVY(wgLg7sCU#z2I>c5RNNoLf4Gz
z*DRXaHN#mecCnNU0^UklEiI1tSozKwyp>1`cGM`w?4VJ=%}=>z3%*t*C}rMJ6yu{f
zF!0w(Ha_AjKq?#ft8l#j;|-r3g|~^lG0iN5#&A2o*%oYaXfw8A!(MR}gvKtg!Wl}a
z8@?J4PC(P at VKZjiy@KXG7tt1uuZG2fuLd}-MLOouHe((Qj%#QO0Zk~|Ml0KLwq$qt
z;BhWP at VHzyxO`yI at HmHt$7Qs6 at zaV;IWll~WRL+j5+EMu at aO~?Zx)M3C&+lySUfsG
z#@iHgwvFL&KHRy|#Bfu|V#eQL!L1 at _<57)GE+_6Ek&tm$h=g3)WMtebA|c}j5DB@o
z$;hMzy~mL2cSsMiii$Mff!OGRND~pCA{X&%t6Y9kM#QK1Mf}<-<C8wu{G^uD0h_1|
z*koi<MnI;>1?18uBa<cqGQ}()mo^z0)qshQlq$lU2z3IJ42x0-uo$fXYfUmN>L9>k
zr~<4t$*?E_j31M&&?&*|N69Lsg|W)`sD_M>QOo$XRmMkIWPA)?#;>h1KI*fWZ?$cY
z)+{Mx%`yc_q)?y=3WZ~qDNrSa0)<d09J5S;LQU>gH}m)NDZ7e_4X1LD#Ht)*B9yCg
z;~Fn2QaNx$o`X!}Ml|Gz+=zx8k>{Wjt=an;2(V_a3XDa at M3s0<jGo6d78w(>h{wbX
z;W3Rx#)LS&nyn|IzG#!AMVpL_3P{Kpsf1kGWMtGqLdJL{<kBW1lNyhcV*FtyD`M at U
zD%LKukTMDjDWI^pcA14#Qdme0g~heYEH;1krS=JRVIO$$m&LICpiM?5mB52TCItlK
z(k3I5G6FJ1Eg+XR8QIAnw%io8(Og!=+GQ3}#(IhBC at iE<kcCuISV#?p#kI?^*!&rB
zao8Lgi7jnC8Og|`5_oXPHb+?G(k3I5G6FJ14K}XKrA<b5@`o+AlRqqjYnNF_8B=pC
z3n^gjTpX@lW+9an7E(iDaqTh-DYl-ln=nZYuyHYzHW`^z5|Bv&0lBov$fS&bOi>HS
zrA<aAHH at aRBGxXdV(l^uDWkBE0t$<3msv<9g@x2mSX{fzV)N%2*Gt$Oc_u2go;;J0
zNhR>$kVyfsamb}jMkZwhWQtlqE^RWhlRs>^NfDztTXxqjvyd_tMN~&&A%(16W+9an
z7E(iDaqTh-DYl**aB+|tVB>1Jw8_Y%l7MV;gheiGGBPP6AXC&rnM<3DOllZSWksxA
zRK?n57E(rGAq5l`*DkY=N(u|9p|H4inZ at SMp^`s`qEhS0p^Qu_fd_|73V@A6E^RV0
zDI*|L)B<v8laZbLVarXe#%Ru#-L=asq>M!o)lpbTA#0aeNF{}Z)KFMlyUb$pr;x8U
z)`fhf0X7+#R00oCApzOskA_Uj2*?z*fLz+-GFvs+SuN$px{&A1V3U!p8Z5Gnm_;sa
zGO|^JMYa*M$fZq2wra>T!F8d`jSJ=3EUN~KY$IloOPgF~s|Jf~BW96Hn~ZGLkmoh)
zLY~urO-8nAu*f!I7P+*^$W{#&*+$GFmo^#Msv(ck>w=wK*j98PBU?3CWE(MyT-s!0
zs|Jf~BW96Hn~ZGLkjI>LA&)m;laZ|&EV7N5MJ{bJvQ>jcwh^<)rA<aAH6ADQ@c^#(
zryQ_$ZU*7nWfoFKVIc(+7S}GbkV*;*siCmAc9{hgo5FIYq!!vFrO+lLqe>DoDj*@3
zHW?X}k&rQJ3Awb%$TolIv%Zod at H#HCORAK1nFW<8y*L(BptN%=u3ct9l}Z$j1=T3+
z9E)q0Sx~X%yqJhL?#RgDV_PGm430vH;HZKKUKwR@)JFuz;6?DtD1(=>i1%U;T)aI+
zMj5=6g#|AoXTd9 at 3|`8 at f|rrA;FVDZM_JaJIr~^Q<^$TKTtS<T{9!iH?zUUAgm29<
z1<I~aptcHyW0omUe1!rPRwx{^OtHMj$5*@#fevx97~cR^5rL)bO$RQ2BMBTBu@`{o
zsg~)h@%XC-n0>|Kay%IxT#d&<uwc3BfPL#1v^(}~hjQO~a(2gF+y*tdO~t-du<xNd
z(gepdLyDK^@sgM5n&u_?B3hUdT~ob8kC(kf*K{Y at r+S{VeJQCv4d?mvD^+w2ThqKO
zw<fuUttoD?Rlzmvkls_hUzv*i$~4 at s0Jf&LiXGA$%dP0GVu$p`a;IVk_15!yD%K^u
z$}QB7!)xGFy*2Eh-cW8$6Ae44H<UXSJD~SC(2tMhkrPcJ$q8Q3JOm$5-IQLICIlZ4
z-jqHaKA?S(u6 at x#dxB5Xp5O!8o6;wVV at j_~FrZU6rB8<sXb)AZb~KPVQj0}XhrCz&
znh<<IdsBK<9KH0q_5`o=IKk5E@KCj>+C%09wI_Hz?<H{vKA^oReUkR3^c}=W)83R`
zhaZ2XPiV$h;>-X|;k?)9G$Hta_NMfj_JPuO5J%NshY$2QMY{Gy2ki-7&3m!*1Rv1e
zls-v&Q+i!{Q~GrHfcB6%fj&o^SwhYR`y7JTwU_!Ff)8kKO0SBe!UyL$I5SR%4`>fn
zo2orzPEdP-Pt%^@1KOL?Cy8T9AI$qy?M>-*c++DpzFJJDGxmlLEsu>C;clN0)b*yC
zYtBFQ8^Hw#VXoWkxS;Mk#zkCNaS>OixE8nB^>y1dF5=3H3p$s at v{PKS*>OQn)3v^k
zD=RMI>JS(9Z5`@M at 1Q&8q2&t273S&`SEu%+a&>KAc(K%>zQSCc;_B4CR4&SS=uty`
z6x3IjJPdPnimOxmQn|XeFC4P6>nqrA=!4c3`v!zS_n`L)5~Qj=-S?I6h1(~|+7Fa1
zmDm2^ea9t>iT4zjET*x at 8HqO<c}%>C$YUCdj7hPxw~g`E?vlM{Y%DS+#m-_<ge<19
z$e0v6i%Ai(n8qSwQta%8Q;Lwik7+D2CdJNTQiLp~vB;PdJBvvXvY5sqV^ZwwCQyoy
z-2!SXGA6~&Vp4=Grm@JF6g!Ja5we)ZB4c9g<H=;fe?<z?o{Ze>W>kQTGB}DLf at 8EI
zcx9BqQ4J9s!xq6SqYQ3kxn*B%WFx<2-<DJvWpFDC4{jsp!7HN-Ze`)YZR9+7Wt71;
zH@qM>R*KduVq33C1q2!XVLa#Gl8**12k8VE4{MP=WVyLtZ at Fy=SXq?=N8mZgL|CJM
z10NgZSg_WNm7}PwLHx;L#=o at 1Vvt?oAiK;`%C*9egK~kCYLElR<2lGgR<4;yWaBXo
z9FgZB6JcY(`W1;V=PL(}$a9d1uHj2Qf8!)00|!io03iQqBXcJEwIpkjVX=y*<TYj|
zWLSZvoh!9#mszlWOB7BNti96CvAA}b1uM5i;aIThN;}8m+GUnnF?oxqVVSTK*;=tl
zV2WI#aIw^i@GP!fj-^(NkEK?GXL0Q^ORd<Lout-^jM=HGYnNFd;<ENxmRb>>#kI>U
zwPJiMwIV!=YnNGS#pJia*z5=>7J4g8i4w>$mZerqW2qJ6W2qJ4w-38^U9owfA1m!#
z+s7O$?J^7ISm`AxR at ylhRIIeiET~xN#j&6wrJZAO?J^7Im_=dRi=zlz`>tJPaTH@&
z97R|b*DkX-im at z?A}ot*msx7X<oQFbiab|o`pAs6dNO0Jkj&Whkr`_xWyV@9nX&03
zGoq@~+4cQ<^%<4ggUfhSwDyp>P|w<rYg?#P?ZI*R9x at jyStD^=s8Q{~arquH7iu^c
zUzSPvCcZ4Qw#xXZn~aZ&7%LY;ZI$s+D;XbEknwA)j9=@sn0=VBo84;}$c2lf;Ud%3
za*1@cDk5FOMW(CO6X|M^M7oBHOow7lryDM#Q6Vr%;(<wqMbQLUR6>BYCK(pR5nwT5
z0oIyiSXhYPjP}1;b1E3y)tZx`w8_YYf^2L&a%q#1H#bv$RS%AvvUXXnnck at k{F6{O
z<^GdS49Zhcm?g_4|GX9E0@^s;OPf-5K%S_5sIhYBnD at pi<73HXd@P@gUt48-OmrC^
z6I#Zvtuj6~dq7yO$D5hBR8To6Dj5Ws$O<JBSv8CUN8~xkL{>4G$jTxUc at 8p>D;+yO
zwfRFt>;%<wkcnLBSRz*$mdJCEiCpPeB3Buf$a9d1T<O@mJgzeA%^uG|CUT`?iCkq^
zBF{l4a;0O5TxD1y&p{@duWz`~X+9ZGZf9JxffE!o{sw}AcB?Gx0~I?9GjLanyUE{#
z5-JZI&TsvvK<%T3A<SFl%bN3f669QkWN(?+QqET&*udwCn2Y&@z0Cl}?f2yT+w<rz
zS2S23xV%x&ly77dLfPOrTQ>BU%LZ1qYzmrEw(0Ey`)Qo1*h26OxpZh{>sAL;YIZu;
zN(eV9*trg#rIZq^N+~r^t)zVSU?K-hHmj#v7crgdrQ{K{b~0VxuvaZ`oNIIFuE at B)
zVN+2C(=rjL*r~aUwo#_xaMnX4+=C9scGk9XrOp~kp>)<$zOxQtYMu3z at 2o?RT4!BM
z`K}d@b2)>@<(ydvXn34M!{ag<&REvlnfPiToR5@t4&AlOEI0uxQMh3Nr&pz&V{z>=
z3r>nk6pjU_Jf)puaqTh-#<Cd~{M92Cl#CpHWt73OIz({PS_H3*GC1lZf@AO^cx9Bq
zQI`33aXq<VKk<mMTeBpMHOmwzjzWP7C=`xara*}l3e-WNaLh6V3N_V*vSvvrYnCZc
zD1`!*P$(R;Oo2iv6sUwk;h1HLIRbF)m<*gaWRL;Z65s|693Y(`1JZf?GKPd`P6<G=
z7sFy9$)J6=LkjyrDkK@?GS0CHuoZ&_PDeUJ23$*k8wrrkkOApDzG5Uqb4mb`uNW0l
zs~9Ql2MLi3av2v>7~Z&wAp=)2WRL-GABd6t>SSp%u&pK8=NHGXPQEur`%UEX43!Ua
zQsN^U7X~1cO-9CEce0jmN8<QY+BpW-F0)|ATcU9FfL&{8=U803%z}MyiNdj9?^@b9
z7S}GbOcvuM|8XL+aKPpi8FD#aapi@>%Q1T)4;BS&{1}NgR=#%+RO~8^S~z8e1|o{Z
zgEQo4R|VTD;4oJca9D+6izZ_!<tpIwrd%}?Y=xq?TrhaE8UGPkGH`K{K?Z~mL~qyy
z05WiZWKaPoLkSTq0wh>uOzfHpdryQPV4yu$4jcn^PL+d9guPSc#?={iKa~SV<T=Ph
z*g;h|91-?Fl><lQImkpP-FSPaeQnX2ITDo3nq>+UO`$+V6bi>IQ=nW51!|#CIA)pR
z at Ar3Xlb_Dn6)<#H!Th%y+BI?+OnJfKX10te8M@0Q18Ypl&|L##7y33cerv)^S?7D0
zu~2ZB%S$+{l<FSeU%M{0V|S{zxrbBiQ4Z3z%h(SrHXK#4UAv48TiK^q^X2+szHz3g
zHghgck6&D!y?pb-*~KYaeCK4D0v?orCF_<pmgDmD?enYCAKzTQJ$}oQc&E!Olf_11
zIXS=3S-jI_mWR!<_?sNe4;L>l|3i(&2VjVv{NoQ#p3GMF%fTZ&$^i3)yY=L5I=h-r
z2Opmd2Cv_oynb;C6emAmjo6<T-;#9IuNUsm%RgV99G{;%?)Y;^w;$~pc;KkvK(GII
z>_4{7__2A)kM23Auijq#*};7I`cIc{oZlC(-+CdOwtil{a^1iE;kEzso%8d2wC{!N
z|Gc=oxccGj)r;3ZJU_m4{eF-PKT3ug3KI6>ty6>=t7)mhnwH}iFT5b(_nCL#`RRZD
zmw({Zsej<?{M>T at C430b-E)B7zQe26Z#;*K)3 at I5%O>K*yNj#0-(%<S=Iw>6fN&h6
za@^qO%f at fVdin0T^9y``bQ2YSyGe$>-7JK&J%9Y|`r~ic|M=AlhwZf+&5zzMs0g>r
z&tIK-Kfm*Tp1<|1&rkfHm)_6sPTzUI&)@pLPyf>?A`rX3zVm*ayZQJWa9vk`b$=ee
zavSIKSFe3wzr%R`s`2~ziHr68()|S~>;8m<b$@>6|2%)|TCpFZ``K>4;~qHu(H94@
z-vR%3_uoG{KhB2-o~H2Is{?E_uKQ@;&4lwK|K!)N-G1yGe)=)uk?*{?u+2I6 at Y5Fw
z4)_poz*hzi_{zOH{mwx=_No9{v}1$z?EJbsd)XKbE{6wh;jp>8{-ga at Zi~D;@~oGx
zP?wi(ZCqX+A2ok_NSDVRlvkCP7jA}KUU)zk$8G`7&pnt6AN9hszC3;D4myxd?$5K!
zKfiKmFB-p38^2#PeqUUkx#h&M;{4R>VQ`RW9Kz9|afnVldHwE{TXA%1^B|qvJV>WM
z_ws{I_7Bmi{vkZ^^4P6WJkLLZr};<lEYS7jts6U@*gA;kwhmHh&)za4^LgtimAQ2k
z5l&ve`u6O*vlnh>fo0&1yZ*F)t(-T3{~Na}Ljdmp at _Ppm>h#Tti-IRL4&iByLv-Sg
zCzr>6I&GcYK1=}Z!<K#DX$_X$J!IM4Lk_!pm`*k{?qP@BJ#5+OO$1g!%kCbs?Cv3l
z-97BEyN4Zi_poJm2Y1Wv9<uE2A&1>P?6A9s9d`GyWv7oq`LVl)EW3NiVRsKZ?CxQQ
z-92pC58Cza9<uE2A&1>P?6A9s9d`GyWj}1QyN4{hd&psT4?FDcVTav4Y}hZ|L?nPW
z-XX*89kM67Ib=_C57`slL-s_s`t6DCA$y{G$e!rdoITM!WKVPt*%MvS?TPLod!l>D
zp6KdjPjnC26Wv2};*TePg8B4CvtHYW37~x#L0&*V*8pf7!jl_^Ec?mvyVlhiT<A6r
zTlVH*1bKOOdD0vKn#b_;=CShJW><`U?y>S*_ZXi0=Hkq~j=)2IIz3^AwDwViY#)93
z4yUY+kaXbEKj4nHV81#(zVhZ!_SpBFAKe19Jy+ at H9(%_DmIpn=^58jl`uFZZf_%Z0
z at x_&gSo$&Nw(wpsF~hMI9{M%$(64ojDIZ*<xADM_Ik$;-%vA~<Y$6)Z2Bh(99K7T(
z>0lGncygyR<!lEI?Cr?uU^8^%*(PdZLXp~-bg+qOJR6wDS4@S|!Dj5nlRLc``z41-
z2b-A2vw>+m8wY{C9XlOtVj55Gbf%nbOkn5qMD_-z at oXG4DxF`Qzj$%#_S?_|Ytxx`
zQB<0~m(L;-f7bc;G8dZov%Z(lA`^EOY9(-46MvQ%7wRmO5Y?8sq__Z3K8uN~SxHT`
zXcTJ=f9?SqzuW_KiaVO&bm66YfKG7_&?(L7*Gu;Ro#Gy#Q`{*PvA7556!!q0a(r at f
z?ymXbS<Pd3V)K|i_j`9)z@F<Jv*&upF2427IzIDO@(}s#)!WmHi+69{I)gEy!*RHm
z(LQ)`e(GIPml&^(pP##{cNXKcc^pfLoXz9UVFC6(96I{#E!-m03p#x4);SU}hmnUl
zT!XY`R>s>qT!VOrYmj3%m7J2ehieeey9V**WHpF)xCZeKBgh%A33C`hn8OZ;TW+dB
zgY6!6K-|MMNULgVpq8lyYne!&)93HLYtD>GA<jS=aRw?|b6JT>)jUY$X&$UkKR^A`
zsXP6wF`AYdsA-|NT9+mMg$hOD`9NoRG1|X+<Ft^=_MwY!U${LC{B-B>SlX8_TT}a!
zX1wUvI*3JT9mH7R;LA717pKiO$sM;KEq at osO)6Uw@^_EBIPP&5$L+CQ9QU}3;~qbI
z^Q|NFnb)O)%}s%`@7?Q~vorsf+xwoMow)re{QSWox%92@)3v_%{s(uh8GpLaFV1{3
z{PfIT058rw+naAMoMOCq^R34VRyU*2-1zN^@xl}1g(t at 43qO4SC)UuLx2Mf3cC1k5
zFxDG$7`-o!FTD&$;N~$ry?G4JJ$rlp{N!8rMg*SSK8okJk0Qbg7NLC<5!y%3 at Q_m(
zZyLWZ@VDE}=z!Y*erTL=hQ)Ld8^15`w}*%aJjBKs=Wv(Q9p}IQ;Rp0^Z(+b8EQWgs
zwK;jy>f@<hwhyB^jQ7d;@k?*H`sJB>Oa0}sdyfokZc_xK`}5VMTRQmV8ZY5KilZ6a
zP4n-;!0j}*1;HJrlc9S6gT1u9q9>(r9K+ at O5$E{rYvxu&`zT_xkN)So*KT0&(_M49
zIDP3_;iqqP`-LA)-Cuai+}-3-t{L-(oBM98cWbMRJ>J^fQlfjiQD|eyzdrf;cZ18t
z-S+pzdN!Hg%qIi0zhnTfgokY=gPZ%+WIMlG6<-Yozx(>h6Wq`QPVm~yCwLk>?OAN$
z#YW`&+X?t>%Y7<fSzX`XfNQb(;tB3mncob4`|W(Tn8F^Gy{r24_p|Nbx8yeX;~xim
zUx4d?Hn-s4?ny)Kq<{JN<X?REebwENz$y4&&9YHXLK2T<DZ3B;&;KE3#5Z9VG0rR5
z`3sA?nQiYkt8&v1-247R=hE$$7$zWJg8=ov_`GmG+3<D+86tNZ<cByEilBk=??09p
z|LCm5s6Qp}M*5F?Wf9!0k`?8|Ae^UhIGh}Wa}<X|ax`QmoZ)^6gxbRYV|BYR$}NXt
z^pghmFI>I>!0sRv;KxR_DlJN@)~(*Q8sXD6fHHVDVi|_3RoXoe2g6k=Z90g9;p&w3
zD#XDYG3^#N9>$>zxu9?#MkEXu6z<=Mgn7mU1^Z=6l;~WiVts6+shlV<+TnnL<DL22
z&96XqH_{X~eU_!}2EtVYT=7PtJY@vDfQy{CvT)S^DDO&?W`8a#N=*+H^*bC`$V05C
zev3l$VQ4uAfRMmdS?>HOvX6~~P-?b4ZIENFvd1r^-QjDrtEV<H>97w{vym)X<O9qf
zzx=pwDoW$SvixSA6%foP`vKQ<<Jhpo9~(6)a}FtuFkO7&azzRib5lt{qFibtl?z#j
zWD}hJs;mBPEl-BA!L%`9CoGB54FkK9Hpc6V2ng&r+YqqpHUa~cMvRZ<FIQE$f$n7_
z&*h~l9+K8d$y`-KOGs4MO-WL8<=W4R3-)S8v5hj>o=34gZLr<WNBWe`Z+fs5HLl5X
zoz!Vu)gMA`Hu^bO6NrlX$d6j?&uLunL&nD|qR33Q<%7UFPaFnySS<`3)iH}BIw=Ig
zQ$EJDZ05S7Ty2XAgXVO86lUEo3Z<E|F$qh{kWp-m@^5gRF$#o9ds?iF0$~!L)Eh>j
zeA8||<uYj$&X7q8vn(73lheD>GIbmslY+Fk9f!h9XlbQ64uwfAvyN_IBAPWOn9!`F
zdN+9bfr&weV3GhHnTRhxUJ_&Z{mub)O%hZ+BhcnwnAt4GkNXiQL+tZ;7+gtmrzcur
zsCn=(xRBHthMy3^<5n>s{FIQM>573VXN7(x(W787Fy#=`hCyZiL95ojKJt1s=HJIs
z&T3Iyo}=##{^x&8^+Mg0Yv{83 at C!B>F5%IbD&h{T`*Exzffb&>saV5h7itTh+lc_t
z`W1P0&P<!|w$M2|6+_(EF6uT7&-+XFFqrOzfZ*YuI3QZ0@e_`KXvaYu6f=S#6g;~V
zhr{&#R3!5lP8^n53v9<%-OP)GW9BPZHrfyt3B}A>EY$bhrGt_TBcT#s;++Casg6lC
z5^C at zH<8lH!^{FOw3lYM>0TZo6JCzu;yM)csh`k}#1nKfc=X719N>`vSZ<(*L;FVP
zWoSP|B$Uw4;5;9;VMKxn)qpz@;=zQLXg1H8Z48mc6B?v>elQY?xtO5FZT1SpferVB
z_5{1jB9Zp#4okZ`EVmrS!U<toxX5l}_*9D1Zl8=S-BY3auzOBpOLrhNt8!CnWa$os
zre)z`OLr(_FFpktS+YYRNdPLc10Nm=2?9`&efaQ5kRPDT<wxgXWq2e=4^Yn{wK@{|
zG=MsYg%Sn<fI5tX`bH=fJ_Q#GCA7&?c>FOIN@$M&6`Ks-2)#c*#U{fyV#B$NO@?p8
zhI1L44Bv<i=Q1)G_V*+x`*?R;E$-7YKx3I1hc>uRkI$AzCdEFtTIRq-CdR%r-?ycU
zOpg7b)Fw@^kqNTTt#~`ZMkdMrP-;-7bg_xDFEsUXpJ!yEh;xnd(UM5KkuU(fxr_x8
zx_|pnY%H44*Ot!_$HEC2_o8}gA{J1p)r2ej{gKe`o+W_^J+A?yhcaSgl{#Si=y)XD
zQz7H3=O$wDgv2ZHA}4D5PlePg at nZX8Y5q+QugAtJ^iA}DyTyuF#>a}q37&uH0`Kf0
zsCvmvTY3J5Zf+t<xxy(g-($_AUz5+=vhKz=H23`xrX-YiUI>J=<JMii(E=QroBu9h
ze1zuyYsUyN0g=v^2_D#mcL_w)3=Ojaj_KVymIsp#aXy;AT;b%kRHl{VgFrS(yJ0Xb
z8y^>n!eCl6K7ka4!HgdGoKh49(}|wLqd-v@%$yUSE{eh!=G at Q5=j?XG#?&=F#uvxN
zbdU7hjzxj4G46g3CeKIA`fe?S?@yuOMs;v}^T$V8D2#4J5gI=}2@`{Y)0}n}f)CKd
zpp+em-=X1iH-HjXBiIx_cCV3g0H9MakXk)ush#P&@R_7uZYU8 at A2*Z;C}D=kbY=+E
z#|<SaQeQWes8Hq8WRz{4>u<<Rs1dHG8%h?cj~hw|)yEAb!ik*ej+kp0!ik*Wj+kDT
za7J;p#@$dtoIY<T)p$MKP(r}|ZYUvIPdAhhs<#_T2-e#TB`O)+eCX?j5+e3>LkY3$
z1Eq24%id5T;d;5DRI7Fzc>{X5&&(SgxX5mUy`e;L_IE?cfr~92cSEU$JBihfyP at R3
z#g^_+7 at 4Z~n?~jwcY_Lx2e%}mi^g1`Sg6PWfxSUxp(4iw_6C)OdK#$}cZ148MJ_oH
zxf at g#Dss7b$n8?FP?1Z`L+%C at LiKcm%9N^?8&no5HW|1ZR2C{W8Mqr%7AiIwxEoX!
zDmEFo8&no5G8y*wgyvlKG?Co{d&7&0*53^;2QIS5VQ+XjaFL0|-tcnZB9o21;pM<Z
zCLDXi%YlnbI`)Q_0~eck+zl^;OTFPGjF{E?+u}xneeMPt7O#3YTO=NL0}b(dxq*g2
z{oO!Av>tDuAzZIF&=3&rvcUWDW9vY;0>$_F#zINymQ*h0UK|G5 at 4Yx%t at H}1$Y{BH
zakduByUJqmxK&(JtL9y1v3Shty<5K6VS>9Chj at M6iz~6p!8PJu94dzkTp!I}=_{4^
zZmC{YDha5Ml}Z9iXg|zKB|`PFQb|SXYo(G3)!#}b!u7OLX`%X9sYIwgRw at anY#$x7
zoLi|RoXGaityB_D<ou9ZsYIMUS1N0~o>nRmFm0vsh*>`(+2Ea;aUD9hi5`)9TJuDx
z-qt)3thY5!Dp{{<o`~4jnkQoQx8_O0^|Iz!tJce!rvn$+0kLbI6lZ^Ho(^1W>9{q|
z8m^Z$PX{ixbljRJ!j&r#u}iYtnkVA*wB~7{B8L`s&C^0fjxOw)r-h1Kd0;o?Td2rY
z2X at WVLPf4Puxp+cDsr`fUGqe!p4L1~sd`!Sv{13hz^!>&sMuuS);uj#Y%*|bo)#)L
z8Mrl13l*6R>>4FO^|wapz(w{D>>8y57nvCB8l?jlnH=mIr2`k4AnY2Y0~eVj>>8y5
z7n>;D8YRN at xJHR^=35eRQ{?@9X3 at xk(Kje!;h6gX7B1!X`#!hciFm!NcOp=K>z#<!
z<9a8;^}61PfNATU%pxU%_4dF(4c6BK1BeK9(bpoSm9Do%N*6D3e#<^E;Nr!O6Wk&t
z;`OyiSz?uOMl4eDTT}79@zg8Tn=7>q^|-8uE1mvsQ1g=e2pE2AD!l$a0)yX}3h&I1
zz`(ZH4hLVu9|3}WJ_7<T?~ecxwja}1sv}@<wTCGSecL($MtHN4`6PA>PPsDf=ZpE0
zb_`CLFdt2L-rA%52njpjx!(bxBA{M%_QSjNrB}@CkGNYT at cn?d-{a>3-n_lAcoD6V
zo>;^ZaFNMRXt0s};C#w}i%f%KB11SPGI!5+^+F^0wM$RS7aEnXA(CC6;meHtOo86%
z9lZMm1#&CtZY`r=6Cg3`I at Nl#a+kT!3*XPccQX5&`(kF4>FI;OM>b+W_zn#~Uf~<O
zT-lA3a&?xESs6d&i6{H~S6MZ3fIgxoKRwaw>)?J%qg|JB80EuTHjL5sPOkN40e2LN
z_x+Du#p1`UCU2txWqp`x at xECS6N`BdWBCN%&dT?L_w5u at Kx_qWyOzIc0v#Im8Ga^0
zvxYvpD+J7#5aJ{K>7FE~EcPZ1$|J4=lM%2ZZXm#;gG?VNL*PuW0WsQ-LcspaN4PwS
z0>Hkk0Wds>Lcpn610ga9oR>8Q0(orbhXMF>m>JXSoRcB2=GrNTUmt6XBr*g)N5 at i_
zNB6oEgP)?)N6<Q#gCEcE3vQhu_|c3$0 at oRXpPs+4x5T@M!OzX%YjT~-P)^K0wr8H&
zFvvWH235el-&;e$d}y=+_*@;89W$*~Km%d6V!&7KB0(@Cnk9iR_C=y#QZOi{Hd-&I
zmfH!v)TG_k;4_C*pjsCNqHHH0vnv+At{5o<Q?c+-#z+vRV&Pkk7Nl_vq6on^cKCoK
zA$8J{Z|rB(%wi_4ICu9ueRyvEGHTqQOIIHQE;r*Km@yc?rx!Cvq73zm0k0^IgTVT2
zLA;E^U`BHK^j}mg%xI3^6Eqmzr({qTY_sk8lsbh35k5Ar#N>Idd0#)$l=IW=NW5$-
zFB%-@#a)E=MuCQ6BdlM4=ELpvx6d0bOzXwl at 9Ov*11mqz9uXM#QV>Pg)+<Z4pQy_0
zC*)%yD=*}n{Q3+dD?f7&k+u73t!ZL6`SJgkP4mTR`!zappYu=DG~)vMXKI>}k^K`j
zO%qvM)5Q5 at MAJ0ymBDVR95suGVelcsR~s_hU3+i6r8F8}y}-dZqECO;D&((7sqbTy
zI`}m!b^d)sPMJ^X{YqQk_c2PfXZOF7)^{A;QMD%}zb2`odMaj`^J~&7s;`QBqhf0a
z_$Qt!P!o*mt%l`|vR~b_>N2{!8k&z;{t5>{(kiaM`qfU?O<u*!7>2*v3A at QF)GF at M
z5m%kFE*<3?)69D7DB{{tUFj3A at Q$;u@IJqQqPmOrh1lm8P}CfxeZBPg1r#+=XkXTR
zUI86n#Wte$)yHQTQB*5pE)qV&kfPcVGnfAiLyBri%#{1{3h6SsDKRtS&oHF8w$z@$
zeug2%wWanv^D_*I+EUzf5H}D+Ob3~vOqt?IlQy{4K8AJqtMeCUuk!B1Y4;mc_I~bU
zC)1zza=SU1KKY(7ZWZ|j(<SaMATvuzO;$>mICgGEkxEbL5=q~_1)7&GDfcOHhi62(
zw8xDi;`*_##Yd^%FrC&Py6=c+j~Sm^I8noT`$F?`3nywwZ(nA9Zs9~tjoTyh=M;_|
z at go{fyYv3+;)!ZK%y9781r*hOn9Ix0E}*Cu#9Ul{P65G!FHV{xnh<ko`Pl^&*M>gt
z34*Dif5O`r(u{`!O1P+G9?jDBKDX~1DA(3(S>M6V>#O6~=Fz%+ok|;(#O=GrskBku
zb^8WvDs5D!+HSG2v?*2Fo_Qy-M%8S4f}F at 2Rk7`PY$9t^y|$;D39NAAA+pW3XN9S>
zQ8mj<-cos^>Xw;frSeAAE;AKM;DyET$m(TgEUCP4_1jA~W#Y{o|C8g5-wJ at wzDBIh
zw1;W=sl&GK=5{Wx<*<W#xjG!Tpv}G?M1HuVUC><z<*uV)X!R4AcWe252e9ypo2S|j
z*R51l{pZt8j?d5Gm9AzNR?RCzw4anj2zY;CcL;n`p<Rlj7>M?Rl30o%yu1sG(OpAW
zjl>f^MwGt&!iRs4DLL~9)l#i5ET6B|^V9$Quf{c>41s(M#H-Wp5LjOf#QEFq5LjOf
z#CKGRc59Z?k9o{Rj-7wS1IPytvO;m{beADS`MN`h@^yz0<wJ-V`IxO<a_qc(r?1{#
z{5e{`kEZ@z(dA){c?stE>(_6H6tk$VI2i*w{YEc?7-imfg`tPb8JzEI^0!`LAj>J{
z0lw>{V>*h7Ko}+yy7zu?QI0yadp}v$cJKH6)$3RA(kle&Rx|Ap1X^Sa01DaY5zpb3
zhTThmDz*UNH45Dk+7H=3hw&!{q5XvY^XG8myDox#)0$ir2mX83WXHqyTh at RJlCCBT
zy<ZGlWJ9szSI`S|M`*w3;dx}*Fsb)lT;egA_uXk!y)!R)c>XG~=ILYa4Kbfzx>^RS
ze%N@&o?Q3vw!wDQJuhFdfn9|y2}}b2@#IOd9dGB8!F;uSQoR##cyN6+olWkhv%zmC
zcdKGMc-+ob#rSHzDpuF`H{e~YzIgHxu<DN4o46vv``LEzTk;(I@s9)45pxGm!vE?M
zolAoDY3&riH+@{eOGKk!Fb`-zs%d|&=U_Z75;Q6ereR3!b=@kCIGHdw!S1_VGR!3`
zSzAXZCEBO4I&w0qDD)=FhK|mq5>MOK@#6GtOGXujml0roh{F*EWO#Yuf5ZW`7gC*@
zDqUrG_4-X5YkO at mf%OdbTwxB^x!0jT7-#nf<3@h~<4Zd+;N5+;ZP)Fz(XTXdV3cX&
zzza2Fad6t#27>qbpjd8q6)4XTa+Srg1 at grH*C${9Zg2)2?B;&5o!_kn#o}&Td^H&S
z?(3>&{%|*+ny&eA|LN7YcbnySiyiUyYR^b2_RwF#e3-7m8of7?Kre1OaQovgd;dN7
zqv@{kpZ{mD_jp79ec_H0T3HJ0?i)<l`&Xr4%juN`-CG6uf2)!V{%7!8r?}xV4iCnz
zVED6>X8+O%!z-jy0!A=NF19GDWdD+<*B63XasjV>t*(DTt(c<x;#%39fLYDe&3v|)
zUfrzf856d|>TvNFY)d#mn at P4aw4vXZmErn&{<NNjv}}@TzFZFX72}a)b4ClFj1aG-
z)6jY#85>u>b#RRpo!W4Ba|4wr;d$MwU&_|)V+V6B3gS#?e7IsPieHRpnoTNuF<!`~
z&3iHCVq7S6VyzW&Xd>12c0Q8I2=y!$W64zK9_ruW4|}O8@@}r at Te<q0w+!k^Z@wJO
zv1o{`M-1!p8oNhp!%vcCkD_6F^>DozKDz={13pKZ4 at 5FwO=luc(SBt%7W-_uUd$)+
z?UfOKyrF at QwLC4GMeCd+(E|OC?a3M^Ek&Z`W+<K`qmA&KC;#|EH660uF!mr!H|!qP
zx?%9EE4R at NH*HSsc_!*K6{Fh?dndXL+A|QM+YPs@Za3^1-5m1_ZoBmit!~)2dbgn(
zCihNS!{oMO&*b)1p26>i8z!$CZrUX6{cgB%mfsCGj9xd~w25?bXl^&`!8N*J&(`RM
zJ)74JTT6!?m|U1{*u!pi!@kk$hCP$l4f~cxH|!g|cRG3|w;T2hZa3^1-0smg at ZB)y
z)9i*lAEq1j?9Fc28XLXiXML3EW!+hAJ=w);8P}q8wAK~-S}sjZN;>^vz~9MZZ=T4W
zX7jynwyYOdEQiLOV>##Bf;;WoF*>LFZCUVPOK2G2`~$b0I0&_a+cY_c!w|xuir_79
zQq9*xCzeky{vm4?Ro4wB=5||bMcrtQj=j+$e<c$m6aYG(YRVL7vbLY%D#K>JU#p70
z(->M!wso2Tcg9m&ZmIuh6wsE9Ki?V~P1Y at f@n|<$#)l2RI=|IqEkf<kY;aA7R+DWx
zs0fWF+dR3^WSizjleOlC)?I&^nE58_5i?EJ+8a&wvpyOzh|(RhZY`2rrAA;B_6AYa
zUv81iX$IVDQH+<E47P0i`PS&QNFUsIG+QL=<F?4kp*p|OA{ht2J+&PgEs}9i5xf@J
zKG|!LZL`-RE3>G&ZZM*7EwVzkHRCTW*xOo|hK&~as~JSEyAPt|8r5V&{j8~!#vsbj
z7{5l73xU at uW9yzj-x?cD)&(~n?Iz3k_)XS2ROh#vY|Ek9;F=DtCfjmQ5gJXld2*x4
zHqDJDYt6OHQU5Zc at J-euZVjSUel(h_J?ry4$_%1-*A4D^ZfBd-cwugnR(DxG4*m`A
zq5j*KgMWitr0^GMI~ZKzIqXf-FD09m#hy!dS-mS=dm<UYw;sK*rMqXD?K4oK)!q8v
z2LC{_EhbE9sifv_uc$cNb#CzDPqS=mi_6;EMMgKN)M(QRj`phT&4ORsg5%$ff-`sQ
zpa`YTICOY{;mt*^;4}g`s+z!2ZiLVaUhY{kqJOo5(o-U}ZnEFdJ#_9iyDcN;%xq=$
zKQ(RzLs80|Pu0z8ZzC1mA}?`J%^09Z*b-mw$!b7d$3ab8C}=r@vQQ8lwkCTCIM^FF
ztLv^GrHbP?lpUdJ9LIgv(duV3uUoMBU0;Sm<1lS^^rc%+Bi@&Tp?8$Xsz&t)1%-s%
zuU%@{y)&zT+*2`^y;Dn>8>iY3ZBDt{=4@!D)oeQLn4 at iR<vxp}FK~aHzx`zI4+Gd4
z0*c^H5VQNlJ7;3fdGvSD49!^(r*PWLo;LCJsO*=gU7OSF7M0(_2gvJW#LQUCR`0jB
zSKIORV)mE)X9wkN?h$rx9sbxyKk<*>57BJ?>;OhCA{ZI|7x8~})H3sbv!~r2|F_Nb
z+h*LkEcBsIY#-VfE$&yv{QYV+9ZYV=o5AngSq5~wu$u^vz<_~U5pDPEb;b*@KwnK$
zows-E-!En#W{bhu<?+DmExg~%?5 at IcK0~{??R456Ti#9Y7qi0dUE0GDXffYz7qj2b
zR@3=-1)~FX^k~5HTov=5XL!&|24Up3qk8!dJCodeS&kewYBOAzSv>yx*#SbX?w4lf
zS6HHNo_;yFThBJ*)wG~fMlev%CyQ}W%;><=XGiFP6Scw?0z5Xe_cwEh15bJN?&a0x
z+vB&VmtTSs<89?fhCg3koPLLvp9(msg!njkdHmzm<(t!!v*YtC at c5Dryt_QTz+W(V
zfT{c*@R?}@OiiF(XPcYxq(TSl&HZZfZZ+Q`D(1j%{t5njKfV5XzM3rVr?anjRop%J
z@9^2P-_YL&PrbkK82tB};r`RTr^CI&;r{41d&AM_VDy{8vt1R)#l43d*$f81`Rio)
z;rega6W8YcJ7jl#|B3$X*1zc!eh-^aZ|3j6y6r6rtl)#Ee!U;sJlNYC!v984|0DD|
z+&?&k`ac-$J^RgIueTB?K)>?(hferMdeCQJs{MWg&j#VH^w}0Rp}jA at f*y5na<~3z
zGk<>zyS-1o80<rx!3EUb9(26$=ZOA<ejEP%jQ%{JKM(28BRv1x&1^Qfyt~;xj5jm5
z*1KO#iRDY!2tTn5tL<ifeZPhA@cO60^SkT85A#I<1^Mmu-St-w^zZ*?JXwBqw|W1?
zV7wi?g{PC|u-|R`)f1$6dpj=%>&@N!&3HM0f8HQvVJZJG`04I`FoEH0Gn>v~cqFF5
zd^><~=Igu70EWT&%}<B}$Dnkx&0u>w8$cJoECzQs^y9l%?*`w^Rxma#25;`KfqHO0
zpFk;QgE3I!k>Zw$k2rX`6!sqmvpLu|gAcP!fntM at P>A0`R8Y<h3~yKkbiFoS{WMs>
z7*_f6(bhptVPqomTNp;+AAkuVfqsj@^=xoo%x>-%Uk*TMEaVSoZ at +*2?(G1c@*Dhc
zd~tF7>g}KZ0M6UnyZh|`<`V{LjvEUhGN?Tmn72QHB6#-8(~Fbu;gsX&Xa8S2SJT at z
z4n)t&uTYUo7uWz%ybTuUNtWoCsBEjEoR7T-iX(4~wXMK%TjbyO4P{xfJj``3y!61~
zn;E{Dp at vN9NTyG;gpo|ALMeANOI+WL{UnvaJn|Dao+t542{a at MaUpU*Cn+&7imn1d
zL9)CQ`y9cqm;Hn&R`6~8;=blT3q*5KtbW3?9NGIuel@BMddXtGF1P>cMPhQBG+*g?
z+P1{~)vw)Z4<Add>m-H*?`H284>8WS|E<Bf+9Tuk?iKz6_;Ua1j at D(l`xA*=?aM87
z6Ylkm=UrcU11g@m@(;b)<!Xs^Te^>_m?}RDX48?p%f=U%7+h_OvvGPol7hZXzSxx&
z=%HDlqX1WUC9-&h*CkStf~Xfz<(tCY;-9L?jJn=wEsJvVhPLTyzrvicAGx2$`R+v*
zssD^J$?F#?QT|@+{(!^ry2zn>S1hSOG(n{1uz{%eYF}*HI!|aCZgUEEl5c;YYAC2L
z<>JSt*wPC`Bz_&Rsvs@(iW*v|2*C;xEXv0Iy~u{5<)k}`_b%5L7nf)AL-2{L<Uj|J
z<9HkpAyBDz%K;A}gGGO+I1q;6BWnszjUHJD#!VQ!mr6Jcjh|u^afcQ*g9o!{o{9`*
zDiS~HxM`l#WmV78QAovOnkf;aayB)oGf#9qYWfw*1hqyxU_o1TRU-Q~1<L&$gV?b0
z^}763xz8n1Sl`HEm!@M0ZN1GE?s>o`e!xdf3k(s!kBk{WBrt;pH(U&$ZE*7uC>zVW
zPHne&tdUx3NUl)c^ES1>U=uqE=O%_vGo|B)oZ=+JfhJmFFr<(c9EiqErs#(nI+ at t|
zpalj)=@<_;!#HJ2;3zbJ6A=j?^`M@n0q1R3Zcu?&hJhzJa4j*whO-$=Pub-*GDF};
zF=uTQgI0Fm8^sw?g2#}=3`=nOH5kJo7&0?deNWi<!x<8pfyoC*Ei*tvXwDalV$Ch|
zDAXLC?-UPm8qOX>$YC4Vc_8Wfz^BWD9_%;{Yba6XQ}iH1e813L1!K`i>&^0H0w2~m
z5uprH5q_xXd=_atbx8(3{K%C2r~gImNU;3d!QX%NprH}kk?_!i?nt6PG+J(?43P%|
z&5T|QdQt}8u at AP>{wCZPJI)t=?c at NbpyPoS8x=^EJtX)J5B=a9zl!b*>KjhOrxRu}
znfI{GFtgiYa)#YIi_rnZ{v8{7c8=pAof+$)7|!oF`&z(PjvUg9`yPl&rxrL)zj8<x
znn1PS9HbqH#Jz}mmRf=1-1ZkmcYhL1Uox-z8YV%xDbAor4(Z57A`QkFmm+<!<DkBd
z^y(f9N2%jLO6?m4psU%g4o&V+qJP(|U1_5NIq-O#)1r?jioRmnW83paBh|_e=|q>o
zOX}S|_0B2u*TWAkSFFe~U>UFsSOzQumI2FvWxz6E8L$jk1}p=X0n318z%pPNunbrR
I{x1f81K1yh+yDRo

diff --git a/configs/qemu_xtensa_lx60_defconfig b/configs/qemu_xtensa_lx60_defconfig
index f17aa48..b21d3fc 100644
--- a/configs/qemu_xtensa_lx60_defconfig
+++ b/configs/qemu_xtensa_lx60_defconfig
@@ -1,7 +1,7 @@
 # Architecture
 BR2_xtensa=y
 BR2_XTENSA_CUSTOM=y
-BR2_XTENSA_OVERLAY_FILE="board/qemu/xtensa-lx60/xtensa_dc233c.tar"
+BR2_XTENSA_OVERLAY_FILE="https://github.com/jcmvbkbc/xtensa-toolchain-build/raw/95291b7c39e6f790d0b2f062c945a630290f2c81/overlays/xtensa_dc233c.tar.gz"
 
 # Patches
 BR2_GLOBAL_PATCH_DIR="board/qemu/xtensa-lx60"
diff --git a/configs/qemu_xtensa_lx60_nommu_defconfig b/configs/qemu_xtensa_lx60_nommu_defconfig
index 68af710..5cca8d2 100644
--- a/configs/qemu_xtensa_lx60_nommu_defconfig
+++ b/configs/qemu_xtensa_lx60_nommu_defconfig
@@ -1,7 +1,7 @@
 # Architecture
 BR2_xtensa=y
 BR2_XTENSA_CUSTOM=y
-BR2_XTENSA_OVERLAY_FILE="board/qemu/xtensa-lx60/xtensa_dc233c.tar"
+BR2_XTENSA_OVERLAY_FILE="https://github.com/jcmvbkbc/xtensa-toolchain-build/raw/95291b7c39e6f790d0b2f062c945a630290f2c81/overlays/xtensa_dc233c.tar.gz"
 
 # Toolchain
 BR2_PACKAGE_HOST_ELF2FLT=y
-- 
2.1.4

^ permalink raw reply related	[flat|nested] 31+ messages in thread

* [Buildroot] [PATCH 21/23] linux: apply xtensa overlay
  2017-03-14 18:30 [Buildroot] [PATCH 00/23] xtensa overlay application rework Max Filippov
                   ` (19 preceding siblings ...)
  2017-03-14 18:30 ` [Buildroot] [PATCH 20/23] configs/qemu-xtensa: use overlay from the github repository Max Filippov
@ 2017-03-14 18:30 ` Max Filippov
  2017-03-14 18:30 ` [Buildroot] [PATCH 22/23] uboot: " Max Filippov
                   ` (3 subsequent siblings)
  24 siblings, 0 replies; 31+ messages in thread
From: Max Filippov @ 2017-03-14 18:30 UTC (permalink / raw)
  To: buildroot

Xtensa core configuration must be added to linux before it can be
built for that xtensa CPU variant. Extract configuration files from the
xtensa overlay as is done for other packages that need to be configured
for a specific xtensa core.

Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
---
 arch/arch.mk.xtensa | 5 +++--
 linux/linux.mk      | 3 +++
 2 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/arch/arch.mk.xtensa b/arch/arch.mk.xtensa
index 9edbcfb..e09d487 100644
--- a/arch/arch.mk.xtensa
+++ b/arch/arch.mk.xtensa
@@ -23,7 +23,7 @@ endif
 # arch-xtensa-overlay-extract -- extract an extensa overlay
 #
 # argument 1 is the path in which to extract
-# argument 2 is the component to extract, one of: gcc, binutils, gdb
+# argument 2 is the component to extract, one of: gcc, binutils, gdb, linux
 #
 # Example:
 #   $(call arch-xtensa-overlay-extract,/path/to/overlay.tar,$(@D),gcc)
@@ -42,7 +42,8 @@ endef
 #            for host packages
 #
 # Packages that call that macro shall define FOO_ARCH_XTENSA_OVERLAY_COMPONENT
-# and set it to one of the component to extract, one of: binutils, gcc, gdb.
+# and set it to one of the component to extract, one of: binutils, gcc, gdb,
+# linux
 #
 ################################################################################
 define arch-xtensa-overlay-inner
diff --git a/linux/linux.mk b/linux/linux.mk
index 7f4432e..81f3d7e 100644
--- a/linux/linux.mk
+++ b/linux/linux.mk
@@ -82,6 +82,9 @@ ifeq ($(BR2_LINUX_KERNEL_UBOOT_IMAGE),y)
 LINUX_DEPENDENCIES += host-uboot-tools
 endif
 
+LINUX_ARCH_XTENSA_OVERLAY_COMPONENT = linux
+$(eval $(arch-xtensa-overlay))
+
 LINUX_MAKE_FLAGS = \
 	HOSTCC="$(HOSTCC)" \
 	HOSTCFLAGS="$(HOSTCFLAGS)" \
-- 
2.1.4

^ permalink raw reply related	[flat|nested] 31+ messages in thread

* [Buildroot] [PATCH 22/23] uboot: apply xtensa overlay
  2017-03-14 18:30 [Buildroot] [PATCH 00/23] xtensa overlay application rework Max Filippov
                   ` (20 preceding siblings ...)
  2017-03-14 18:30 ` [Buildroot] [PATCH 21/23] linux: apply xtensa overlay Max Filippov
@ 2017-03-14 18:30 ` Max Filippov
  2017-03-14 18:30 ` [Buildroot] [PATCH 23/23] linux: enable uBoot image type for xtensa kernel Max Filippov
                   ` (2 subsequent siblings)
  24 siblings, 0 replies; 31+ messages in thread
From: Max Filippov @ 2017-03-14 18:30 UTC (permalink / raw)
  To: buildroot

Xtensa core configuration must be added to U-Boot before it can be
built for that xtensa CPU variant. Extract configuration files from the
xtensa overlay as is done for other packages that need to be configured
for a specific xtensa core.

Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
---
 arch/arch.mk.xtensa | 5 +++--
 boot/uboot/uboot.mk | 3 +++
 2 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/arch/arch.mk.xtensa b/arch/arch.mk.xtensa
index e09d487..4e9d33a 100644
--- a/arch/arch.mk.xtensa
+++ b/arch/arch.mk.xtensa
@@ -23,7 +23,8 @@ endif
 # arch-xtensa-overlay-extract -- extract an extensa overlay
 #
 # argument 1 is the path in which to extract
-# argument 2 is the component to extract, one of: gcc, binutils, gdb, linux
+# argument 2 is the component to extract, one of: gcc, binutils, gdb, linux,
+#            u-boot
 #
 # Example:
 #   $(call arch-xtensa-overlay-extract,/path/to/overlay.tar,$(@D),gcc)
@@ -43,7 +44,7 @@ endef
 #
 # Packages that call that macro shall define FOO_ARCH_XTENSA_OVERLAY_COMPONENT
 # and set it to one of the component to extract, one of: binutils, gcc, gdb,
-# linux
+# linux, u-boot
 #
 ################################################################################
 define arch-xtensa-overlay-inner
diff --git a/boot/uboot/uboot.mk b/boot/uboot/uboot.mk
index 1e22eaa..8cabc17 100644
--- a/boot/uboot/uboot.mk
+++ b/boot/uboot/uboot.mk
@@ -153,6 +153,9 @@ endef
 UBOOT_POST_EXTRACT_HOOKS += UBOOT_COPY_OLD_LICENSE_FILE
 UBOOT_POST_RSYNC_HOOKS += UBOOT_COPY_OLD_LICENSE_FILE
 
+UBOOT_ARCH_XTENSA_OVERLAY_COMPONENT = u-boot
+$(eval $(arch-xtensa-overlay))
+
 # Analogous code exists in linux/linux.mk. Basically, the generic
 # package infrastructure handles downloading and applying remote
 # patches. Local patches are handled depending on whether they are
-- 
2.1.4

^ permalink raw reply related	[flat|nested] 31+ messages in thread

* [Buildroot] [PATCH 23/23] linux: enable uBoot image type for xtensa kernel
  2017-03-14 18:30 [Buildroot] [PATCH 00/23] xtensa overlay application rework Max Filippov
                   ` (21 preceding siblings ...)
  2017-03-14 18:30 ` [Buildroot] [PATCH 22/23] uboot: " Max Filippov
@ 2017-03-14 18:30 ` Max Filippov
  2017-03-14 20:55   ` Thomas Petazzoni
  2017-03-14 20:20 ` [Buildroot] [PATCH 00/23] xtensa overlay application rework Thomas Petazzoni
  2017-03-26 19:41 ` Thomas Petazzoni
  24 siblings, 1 reply; 31+ messages in thread
From: Max Filippov @ 2017-03-14 18:30 UTC (permalink / raw)
  To: buildroot

Starting with the release 2016.09 xtensa architecture is supported by
the U-Boot. Enable uimage target in xtensa linux kernel.

Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
---
 linux/Config.in | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/linux/Config.in b/linux/Config.in
index 1707f7d..2248f09 100644
--- a/linux/Config.in
+++ b/linux/Config.in
@@ -179,7 +179,7 @@ config BR2_LINUX_KERNEL_UIMAGE
 	depends on BR2_arc || BR2_arm || BR2_armeb || BR2_bfin || \
 		   BR2_powerpc || BR2_powerpc64 || BR2_powerpc64le || \
 		   BR2_sh || BR2_mips || BR2_mipsel || \
-		   BR2_mips64 || BR2_mips64el
+		   BR2_mips64 || BR2_mips64el || BR2_xtensa
 	select BR2_LINUX_KERNEL_UBOOT_IMAGE
 
 config BR2_LINUX_KERNEL_APPENDED_UIMAGE
-- 
2.1.4

^ permalink raw reply related	[flat|nested] 31+ messages in thread

* [Buildroot] [PATCH 00/23] xtensa overlay application rework
  2017-03-14 18:30 [Buildroot] [PATCH 00/23] xtensa overlay application rework Max Filippov
                   ` (22 preceding siblings ...)
  2017-03-14 18:30 ` [Buildroot] [PATCH 23/23] linux: enable uBoot image type for xtensa kernel Max Filippov
@ 2017-03-14 20:20 ` Thomas Petazzoni
  2017-03-14 23:07   ` Max Filippov
  2017-03-26 19:41 ` Thomas Petazzoni
  24 siblings, 1 reply; 31+ messages in thread
From: Thomas Petazzoni @ 2017-03-14 20:20 UTC (permalink / raw)
  To: buildroot

Hello,

On Tue, 14 Mar 2017 11:30:29 -0700, Max Filippov wrote:

> This series cleans up xtensa overlay application code, making
> it uniform across its users in the toolchain, reducing the number of
> configuration variables and making it possible to use compressed
> overlays and download overlays from network.
> This is a subset of a series initially submitted by Yann E. MORIN
> in 2015, I've forward-ported the original submission, addressed the
> posted comments and added overlay application to linux and U-Boot.

A big question is: why do we have this weird overlay mechanism,
specifically for this CPU architecture? Why don't they use patches like
everybody else?

It has always bothered me that we had this mechanism, and I'd like to
challenge the fact that we need this, and see if a better solution is
possible.

Thanks,

Thomas
-- 
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com

^ permalink raw reply	[flat|nested] 31+ messages in thread

* [Buildroot] [PATCH 23/23] linux: enable uBoot image type for xtensa kernel
  2017-03-14 18:30 ` [Buildroot] [PATCH 23/23] linux: enable uBoot image type for xtensa kernel Max Filippov
@ 2017-03-14 20:55   ` Thomas Petazzoni
  0 siblings, 0 replies; 31+ messages in thread
From: Thomas Petazzoni @ 2017-03-14 20:55 UTC (permalink / raw)
  To: buildroot

Hello,

On Tue, 14 Mar 2017 11:30:52 -0700, Max Filippov wrote:
> Starting with the release 2016.09 xtensa architecture is supported by
> the U-Boot. Enable uimage target in xtensa linux kernel.
> 
> Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
> ---
>  linux/Config.in | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)

Applied to master, thanks.

Thomas
-- 
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com

^ permalink raw reply	[flat|nested] 31+ messages in thread

* [Buildroot] [PATCH 00/23] xtensa overlay application rework
  2017-03-14 20:20 ` [Buildroot] [PATCH 00/23] xtensa overlay application rework Thomas Petazzoni
@ 2017-03-14 23:07   ` Max Filippov
  0 siblings, 0 replies; 31+ messages in thread
From: Max Filippov @ 2017-03-14 23:07 UTC (permalink / raw)
  To: buildroot

Hi Thomas,

On Tue, Mar 14, 2017 at 1:20 PM, Thomas Petazzoni
<thomas.petazzoni@free-electrons.com> wrote:
> On Tue, 14 Mar 2017 11:30:29 -0700, Max Filippov wrote:
>
>> This series cleans up xtensa overlay application code, making
>> it uniform across its users in the toolchain, reducing the number of
>> configuration variables and making it possible to use compressed
>> overlays and download overlays from network.
>> This is a subset of a series initially submitted by Yann E. MORIN
>> in 2015, I've forward-ported the original submission, addressed the
>> posted comments and added overlay application to linux and U-Boot.
>
> A big question is: why do we have this weird overlay mechanism,
> specifically for this CPU architecture? Why don't they use patches like
> everybody else?

Primarily for historical reasons. There are two parts of the problem: both
toolchain and user code need to be adjusted for the specific xtensa core.
Toolchain needs to be able to generate code for it. User code needs a way
to know core characteristics at compile time.

So the part of a toolchain source that deals with xtensa ISA is isolated
from the rest of the code by a stable API and its code is generated.
Having a default code for this part in every toolchain component is good
for toolchain testing. Copying this part over the toolchain source is a
future-proof way of configuring the toolchain, because the default code
present in the toolchain may change (and have changed) over time.
A possible better way to configure the toolchain is moving
configuration-specific part into a shared library loaded as plugin into
the toolchain components. We're currently looking into this approach.

For the user code we have a library, part of which is also generated.
So far open source projects like linux kernel or U-Boot use parts of
that library copied into their code. Configuration-specific parts of that
code still need to be copied over from the generated source. The
hardware itself does not provide any information about the configured
features.
A possible way to isolate software running on xtensa from the
configuration specific properties is distribution of that library with the
toolchain and removal of its copies from the projects that have them.
That will replace the requirement of adjusting the software for specific
xtensa core with the requirement of building it with additional external
library.

> It has always bothered me that we had this mechanism, and I'd like to
> challenge the fact that we need this, and see if a better solution is
> possible.

Toolchain plugins and hardware abstraction library are the ways we're
exploring. Do you have any suggestions?

-- 
Thanks.
-- Max

^ permalink raw reply	[flat|nested] 31+ messages in thread

* [Buildroot] [PATCH 00/23] xtensa overlay application rework
  2017-03-14 18:30 [Buildroot] [PATCH 00/23] xtensa overlay application rework Max Filippov
                   ` (23 preceding siblings ...)
  2017-03-14 20:20 ` [Buildroot] [PATCH 00/23] xtensa overlay application rework Thomas Petazzoni
@ 2017-03-26 19:41 ` Thomas Petazzoni
  24 siblings, 0 replies; 31+ messages in thread
From: Thomas Petazzoni @ 2017-03-26 19:41 UTC (permalink / raw)
  To: buildroot

Hello,

On Tue, 14 Mar 2017 11:30:29 -0700, Max Filippov wrote:

>   core: include arch-specific definitions
>   arch/xtensa: add definitions for the Xtensa overlay
>   package/binutils: use the Xtensa variables
>   package/gdb: use the Xtensa variables
>   package/gcc: use the Xtensa variables
>   arch/xtensa: add macro to extract the overlay
>   package/binutils: use macro to extract Xtensa overlay
>   package/gdb: use macro to extract Xtensa overlay
>   package/gcc: use macro to extract Xtensa overlay
>   package/binutils: extract Xtensa overlay as post-extract hook
>   package/gdb: extract Xtensa overlay as post-extract hook

I've applied the first 11 patches of this series. Thanks!

Thomas
-- 
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com

^ permalink raw reply	[flat|nested] 31+ messages in thread

* [Buildroot] [PATCH 12/23] arch/xtensa: add macros to generate hooks
  2017-03-14 18:30 ` [Buildroot] [PATCH 12/23] arch/xtensa: add macros to generate hooks Max Filippov
@ 2017-03-26 19:44   ` Thomas Petazzoni
  2017-07-05 20:03     ` Arnout Vandecappelle
  0 siblings, 1 reply; 31+ messages in thread
From: Thomas Petazzoni @ 2017-03-26 19:44 UTC (permalink / raw)
  To: buildroot

Hello,

On Tue, 14 Mar 2017 11:30:41 -0700, Max Filippov wrote:

> +################################################################################
> +# arch-xtensa-overlay-inner -- generates the make targets needed to extract
> +# the xtensa overlay
> +#
> +# argument 1 is the uppercase package name, including a HOST_ prefix
> +#            for host packages
> +#
> +# Packages that call that macro shall define FOO_ARCH_XTENSA_OVERLAY_COMPONENT
> +# and set it to one of the component to extract, one of: binutils, gcc, gdb.
> +#
> +################################################################################
> +define arch-xtensa-overlay-inner
> +
> +ifneq ($$(ARCH_XTENSA_CORE_NAME),)
> +
> +define $(1)_XTENSA_OVERLAY_EXTRACT
> +	$$(call arch-xtensa-overlay-extract,$$(@D),$$($(1)_ARCH_XTENSA_OVERLAY_COMPONENT))
> +endef
> +$(1)_POST_EXTRACT_HOOKS += $(1)_XTENSA_OVERLAY_EXTRACT
> +
> +endif # ARCH_XTENSA_CORE_NAME != ""
> +
> +endef # arch-xtensa-overlay-inner
> +
> +################################################################################
> +# arch-xtensa-overlay -- the target generator macro for the Xtensa overlay
> +################################################################################
> +arch-xtensa-overlay = $(call arch-xtensa-overlay-inner,$(call UPPERCASE,$(pkgname)))
> +host-arch-xtensa-overlay = $(call arch-xtensa-overlay-inner,HOST_$(call UPPERCASE,$(pkgname)))

I must say I am not entirely convinced by this macro. It really makes
thing less obvious to read, and doesn't really remove a lot of code
duplication.

So I'm still hesitating on this one. It's not a big no, but an
hesitation. However, I'm clearly interested by the following stuff that
allows to download the overlay tarball instead of having it in
Buildroot itself.

Thanks,

Thomas
-- 
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com

^ permalink raw reply	[flat|nested] 31+ messages in thread

* [Buildroot] [PATCH 12/23] arch/xtensa: add macros to generate hooks
  2017-03-26 19:44   ` Thomas Petazzoni
@ 2017-07-05 20:03     ` Arnout Vandecappelle
  2017-07-06  8:27       ` Max Filippov
  0 siblings, 1 reply; 31+ messages in thread
From: Arnout Vandecappelle @ 2017-07-05 20:03 UTC (permalink / raw)
  To: buildroot

 Hi Max,

On 26-03-17 21:44, Thomas Petazzoni wrote:
> Hello,
> 
> On Tue, 14 Mar 2017 11:30:41 -0700, Max Filippov wrote:
> 
>> +################################################################################
>> +# arch-xtensa-overlay-inner -- generates the make targets needed to extract
>> +# the xtensa overlay
>> +#
>> +# argument 1 is the uppercase package name, including a HOST_ prefix
>> +#            for host packages
>> +#
>> +# Packages that call that macro shall define FOO_ARCH_XTENSA_OVERLAY_COMPONENT
>> +# and set it to one of the component to extract, one of: binutils, gcc, gdb.
>> +#
>> +################################################################################
>> +define arch-xtensa-overlay-inner
>> +
>> +ifneq ($$(ARCH_XTENSA_CORE_NAME),)
>> +
>> +define $(1)_XTENSA_OVERLAY_EXTRACT
>> +	$$(call arch-xtensa-overlay-extract,$$(@D),$$($(1)_ARCH_XTENSA_OVERLAY_COMPONENT))
>> +endef
>> +$(1)_POST_EXTRACT_HOOKS += $(1)_XTENSA_OVERLAY_EXTRACT
>> +
>> +endif # ARCH_XTENSA_CORE_NAME != ""
>> +
>> +endef # arch-xtensa-overlay-inner
>> +
>> +################################################################################
>> +# arch-xtensa-overlay -- the target generator macro for the Xtensa overlay
>> +################################################################################
>> +arch-xtensa-overlay = $(call arch-xtensa-overlay-inner,$(call UPPERCASE,$(pkgname)))
>> +host-arch-xtensa-overlay = $(call arch-xtensa-overlay-inner,HOST_$(call UPPERCASE,$(pkgname)))
> 
> I must say I am not entirely convinced by this macro. It really makes
> thing less obvious to read, and doesn't really remove a lot of code
> duplication.
> 
> So I'm still hesitating on this one. It's not a big no, but an
> hesitation. However, I'm clearly interested by the following stuff that
> allows to download the overlay tarball instead of having it in
> Buildroot itself.

 We discussed this again at the BR Summer Camp, and decided that the 2-3 lines
that you save with this macro in only 3 packages are really not worth defining
this macro. So, could you respin this series without the addition of these macros?

 I've marked the patches as Changes Requested in patchwork.

 Regards,
 Arnout

-- 
Arnout Vandecappelle                          arnout at mind be
Senior Embedded Software Architect            +32-16-286500
Essensium/Mind                                http://www.mind.be
G.Geenslaan 9, 3001 Leuven, Belgium           BE 872 984 063 RPR Leuven
LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
GPG fingerprint:  7493 020B C7E3 8618 8DEC 222C 82EB F404 F9AC 0DDF

^ permalink raw reply	[flat|nested] 31+ messages in thread

* [Buildroot] [PATCH 12/23] arch/xtensa: add macros to generate hooks
  2017-07-05 20:03     ` Arnout Vandecappelle
@ 2017-07-06  8:27       ` Max Filippov
  0 siblings, 0 replies; 31+ messages in thread
From: Max Filippov @ 2017-07-06  8:27 UTC (permalink / raw)
  To: buildroot

Hello,

On Wed, Jul 5, 2017 at 1:03 PM, Arnout Vandecappelle <arnout@mind.be> wrote:
> On 26-03-17 21:44, Thomas Petazzoni wrote:
>> On Tue, 14 Mar 2017 11:30:41 -0700, Max Filippov wrote:
>>
>>> +################################################################################
>>> +# arch-xtensa-overlay-inner -- generates the make targets needed to extract
>>> +# the xtensa overlay
>>> +#
>>> +# argument 1 is the uppercase package name, including a HOST_ prefix
>>> +#            for host packages
>>> +#
>>> +# Packages that call that macro shall define FOO_ARCH_XTENSA_OVERLAY_COMPONENT
>>> +# and set it to one of the component to extract, one of: binutils, gcc, gdb.
>>> +#
>>> +################################################################################
>>> +define arch-xtensa-overlay-inner
>>> +
>>> +ifneq ($$(ARCH_XTENSA_CORE_NAME),)
>>> +
>>> +define $(1)_XTENSA_OVERLAY_EXTRACT
>>> +    $$(call arch-xtensa-overlay-extract,$$(@D),$$($(1)_ARCH_XTENSA_OVERLAY_COMPONENT))
>>> +endef
>>> +$(1)_POST_EXTRACT_HOOKS += $(1)_XTENSA_OVERLAY_EXTRACT
>>> +
>>> +endif # ARCH_XTENSA_CORE_NAME != ""
>>> +
>>> +endef # arch-xtensa-overlay-inner
>>> +
>>> +################################################################################
>>> +# arch-xtensa-overlay -- the target generator macro for the Xtensa overlay
>>> +################################################################################
>>> +arch-xtensa-overlay = $(call arch-xtensa-overlay-inner,$(call UPPERCASE,$(pkgname)))
>>> +host-arch-xtensa-overlay = $(call arch-xtensa-overlay-inner,HOST_$(call UPPERCASE,$(pkgname)))
>>
>> I must say I am not entirely convinced by this macro. It really makes
>> thing less obvious to read, and doesn't really remove a lot of code
>> duplication.
>>
>> So I'm still hesitating on this one. It's not a big no, but an
>> hesitation. However, I'm clearly interested by the following stuff that
>> allows to download the overlay tarball instead of having it in
>> Buildroot itself.
>
>  We discussed this again at the BR Summer Camp, and decided that the 2-3 lines
> that you save with this macro in only 3 packages are really not worth defining
> this macro. So, could you respin this series without the addition of these macros?

Sure, will do.

-- 
Thanks.
-- Max

^ permalink raw reply	[flat|nested] 31+ messages in thread

end of thread, other threads:[~2017-07-06  8:27 UTC | newest]

Thread overview: 31+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-03-14 18:30 [Buildroot] [PATCH 00/23] xtensa overlay application rework Max Filippov
2017-03-14 18:30 ` [Buildroot] [PATCH 01/23] core: include arch-specific definitions Max Filippov
2017-03-14 18:30 ` [Buildroot] [PATCH 02/23] arch/xtensa: add definitions for the Xtensa overlay Max Filippov
2017-03-14 18:30 ` [Buildroot] [PATCH 03/23] package/binutils: use the Xtensa variables Max Filippov
2017-03-14 18:30 ` [Buildroot] [PATCH 04/23] package/gdb: " Max Filippov
2017-03-14 18:30 ` [Buildroot] [PATCH 05/23] package/gcc: " Max Filippov
2017-03-14 18:30 ` [Buildroot] [PATCH 06/23] arch/xtensa: add macro to extract the overlay Max Filippov
2017-03-14 18:30 ` [Buildroot] [PATCH 07/23] package/binutils: use macro to extract Xtensa overlay Max Filippov
2017-03-14 18:30 ` [Buildroot] [PATCH 08/23] package/gdb: " Max Filippov
2017-03-14 18:30 ` [Buildroot] [PATCH 09/23] package/gcc: " Max Filippov
2017-03-14 18:30 ` [Buildroot] [PATCH 10/23] package/binutils: extract Xtensa overlay as post-extract hook Max Filippov
2017-03-14 18:30 ` [Buildroot] [PATCH 11/23] package/gdb: " Max Filippov
2017-03-14 18:30 ` [Buildroot] [PATCH 12/23] arch/xtensa: add macros to generate hooks Max Filippov
2017-03-26 19:44   ` Thomas Petazzoni
2017-07-05 20:03     ` Arnout Vandecappelle
2017-07-06  8:27       ` Max Filippov
2017-03-14 18:30 ` [Buildroot] [PATCH 13/23] package/binutils: use the Xtensa macro generators Max Filippov
2017-03-14 18:30 ` [Buildroot] [PATCH 14/23] package/gdb: " Max Filippov
2017-03-14 18:30 ` [Buildroot] [PATCH 15/23] package/gcc: " Max Filippov
2017-03-14 18:30 ` [Buildroot] [PATCH 16/23] arch/xtensa: get rid of an intermediate blind kconfig option Max Filippov
2017-03-14 18:30 ` [Buildroot] [PATCH 17/23] arch/xtensa: allow specifying path to tarball file Max Filippov
2017-03-14 18:30 ` [Buildroot] [PATCH 18/23] arch/xtensa: accept the overlay to be compressed Max Filippov
2017-03-14 18:30 ` [Buildroot] [PATCH 19/23] arch/xtensa: accept the overlay to be an URL Max Filippov
2017-03-14 18:30 ` [Buildroot] [PATCH 20/23] configs/qemu-xtensa: use overlay from the github repository Max Filippov
2017-03-14 18:30 ` [Buildroot] [PATCH 21/23] linux: apply xtensa overlay Max Filippov
2017-03-14 18:30 ` [Buildroot] [PATCH 22/23] uboot: " Max Filippov
2017-03-14 18:30 ` [Buildroot] [PATCH 23/23] linux: enable uBoot image type for xtensa kernel Max Filippov
2017-03-14 20:55   ` Thomas Petazzoni
2017-03-14 20:20 ` [Buildroot] [PATCH 00/23] xtensa overlay application rework Thomas Petazzoni
2017-03-14 23:07   ` Max Filippov
2017-03-26 19:41 ` Thomas Petazzoni

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.