From 1081bd3582920fdec38aed1984ce428dbf36b1c6 2019-10-10 18:54:29
From: eximious Like many non-profits, Conservancy is directed by a
self-perpetuating Board of Directors, who
-appoint Officers to carry out the
+appoint the Executive Director and staff to carry out the
day-to-day operations of the organization. The Directorship of the
Conservancy includes both talented non-profit managers and experienced
FLOSS project leaders who can both guide the administrative operations of
@@ -82,22 +82,40 @@ HETE-2 satellite (an astrophysical Gamma Ray Burst mission) part
time. Mark earned his BA in Physics at Reed College and a PhD from the
Institute for Theoretical Physics at Stony Brook. Bdale Garbee has been a contributor
+to the Free Software community since 1979. Bdale's background also includes
+many years of hardware design, Unix internals, and embedded systems work.
+He was an early participant in the Debian project, helped port Debian
+GNU/Linux to 5 architectures, served as Debian Project Leader, then
+chairman of the Debian Technical Committee for nearly a decade, and remains
+active in the Debian community. Bdale served as an HP Fellow in the Office of the CTO until 2016 where
+he led HP's open source strategy work. Bdale served as President of
+Software in the Public Interest for a decade. He served nearly as long on
+the board of directors of the Linux Foundation representing individual
+affiliates and the developer community. Bdale currently serves on the
+boards of the Freedombox Foundation, Linux Professional Institute, and
+Aleph Objects. Bradley M. Kuhn is the President and
-Distinguished Technologist at Software Freedom Conservancy,
-on the Board of Directors of the Free Software
-Foundation (FSF), and editor-in-chief
+Bradley M. Kuhn is
+the Policy Fellow and Hacker-in-Residence
+at Software Freedom Conservancy and editor-in-chief
of copyleft.org. Kuhn began his work in
the software freedom movement as a volunteer in 1992, when he became an early
-adopter of the GNU/Linux operating system, and began contributing to various
-Free Software projects. He worked during the 1990s as a system administrator
-and software developer for various companies, and taught AP Computer Science
-at Walnut Hills High School in Cincinnati. Kuhn's non-profit career began in
-2000, when he was hired by the FSF. As FSF's Executive Director from
-2001–2005, Kuhn led FSF's GPL
-enforcement, launched its
-Associate Member program, and invented
+adopter of Linux-based systems, and began contributing to various Free
+Software projects, including Perl. He worked during the 1990s as a system
+administrator and software developer for various companies, and taught AP
+Computer Science at Walnut Hills High School in Cincinnati. Kuhn's
+non-profit career began in 2000, when he was hired by the FSF. As FSF's
+Executive Director from 2001–2005, Kuhn
+led FSF's GPL enforcement,
+launched its Associate Member
+program, and invented
the Affero GPL. Kuhn
was appointed President of Software Freedom Conservancy in April 2006, was
Conservancy's primary volunteer from 2006–2010, and has been a
@@ -111,13 +129,10 @@ Master's thesis discussed methods for dynamic interoperability of Free
Software programming languages. Kuhn received
the O'Reilly
Open Source Award in 2012, in recognition for his lifelong policy work on
-copyleft licensing. Kuhn blogs at
-Conservancy and co-hosts the
-audcast, Free as in Freedom, with
-Conservancy's Executive Director, Karen
-Sandler.
- Mike Linksvayer serves on the boards of AcaWiki and OpenHatch,
@@ -136,6 +151,28 @@ Software Freedom Conservancy. Martin earned a PhD from the University
of Cambridge and he received an O'Reilly Open Source Award in 2013 for
his contributions to the open source community. Over the course of multiple decades as a free software developer,
+Allison has worked in a wide variety of projects and domains, from
+games, linguistic analysis tools, websites, mobile apps, shipping
+fulfillment, and talking smart-home appliances, to programming language
+design, compilers, hypervisors, containers, deployment automation,
+database replication, and operating systems. She is a board member at the Perl Foundation, a board member at the
+OpenStack Foundation, and co-founder of the FLOSS Foundations group for
+free software community leaders. At various points in the past she has
+served as president of the Open Source Initiative, president of the Perl
+Foundation, board member of the Python Software Foundation, chairman of
+the Parrot Foundation, chief architect of the Parrot virtual machine,
+Open Source Evangelist at O’Reilly Media, conference chair of OSCON,
+Technical Architect of Ubuntu, Open Source Advisor at Canonical,
+Distinguished Technologist and Open Source Strategist at HP, and
+Distinguished Engineer at SUSE. She collaborates in the Debian project,
+and is currently taking a mid-career research sabbatical at the
+University of Cambridge. Tony currently serves as the Deputy General Counsel for
diff --git a/www/conservancy/static/about/filings/index.html b/www/conservancy/static/about/filings/index.html
index e2c6eea0bd7c331c30af506522eaac8d630e2d2d..4b7508c59a4258e2ee13258e4237304400bc2d95 100644
--- a/www/conservancy/static/about/filings/index.html
+++ b/www/conservancy/static/about/filings/index.html
@@ -12,11 +12,18 @@ public inspection, in reverse chronological order: Our FY 2019 ends on 2020-02-29. Our annual filings are due with the USA
+ Internal Revenue Service (IRS) and New York
+ State on
+ 2020-07-15. They will be posted here shortly after filing. Our FY 2018 ends on 2019-02-28. Our annual filings are due with the USA
Internal Revenue Service (IRS) and New York
State on
- 2019-07-15. They will be posted here shortly after filing.Bdale Garbee
+
+Bradley M. Kuhn
-Mike Linksvayer
Allison Randal
+
+Tony Sebro
+
Conservancy and - its directors, officers, - and staff believe strongly in the principles - of software freedom, and believe that all users should have the right to +
Conservancy and its directors + and staff believe strongly in the principles of + software freedom, and believe that all users should have the right to study, improve and share their software. Conservancy helps protect, enable, coordinate, facilitate and defend the public's right to copy, share, modify and redistribute FLOSS both non-commercially and diff --git a/www/conservancy/static/about/officers/index.html b/www/conservancy/static/about/officers/index.html deleted file mode 100644 index 2b7214c48dccea15063df96c78b6a0b9d4a55999..0000000000000000000000000000000000000000 --- a/www/conservancy/static/about/officers/index.html +++ /dev/null @@ -1,82 +0,0 @@ -{% extends "base_about.html" %} -{% block subtitle %}Officers - {% endblock %} -{% block submenuselection %}Officers{% endblock %} -{% block content %} - -
The Board of Directors of the Conservancy -elects its officers. The current officers are:
- -Bradley M. Kuhn is the President and -Distinguished Technologist at Software -Freedom Conservancy and on the Board of Directors of the Free Software Foundation (FSF). Kuhn began his -work in the software freedom movement as a volunteer in 1992, when he became -an early adopter of the GNU/Linux operating system, and began contributing to -various FLOSS projects. He worked during the 1990s as a system administrator -and software developer for various companies, and taught AP Computer Science -at Walnut Hills High School in Cincinnati. Kuhn's non-profit career began in -2000, when he was hired by the FSF. As FSF's Executive Director from -2001–2005, Kuhn led FSF's GPL enforcement, launched its Associate -Member program, and invented the Affero GPL. From -2005-2010, Kuhn worked as the Policy Analyst and Technology Director of the -Software Freedom Law Center. Kuhn was the primary volunteer for Conservancy -from 2006–2010, and has been a full-time staffer since early 2011. -Kuhn holds a summa cum laude B.S. in Computer Science from Loyola University in -Maryland, and an M.S. in Computer Science from the University of Cincinnati. Kuhn's Master's thesis -discussed methods for dynamic interoperability of FLOSS programming -languages. Kuhn received the O'Reilly -Open Source Award in 2012, in recognition for his lifelong policy work on -copyleft licensing.
- -Mark Galassi has been involved in the GNU project since 1984. He -currently works as a researcher in the International, Space, and Response -division at Los Alamos National Laboratory, where he has worked on the -HETE-2 satellite, ISIS/Genie, the Raptor telescope, the Swift satellite, -and the muon tomography project. In 1997, Mark took a couple of years off -from Los Alamos (where he was previously in the ISR division and the -Theoretical Astrophysics group) to work for Cygnus (now a part of Red Hat) -writing software and books for eCos, although he continued working on the -HETE-2 satellite (an astrophysical Gamma Ray Burst mission) part -time. Mark earned his BA in Physics at Reed College and a PhD from the -Institute for Theoretical Physics at Stony Brook.
- -Martin Michlmayr has been involved in various free and open source -software projects for over 20 years. He acted as the leader of the -Debian project for two years, served on the board of the Open Source -Initiative (OSI) for six years and currently serves on the board of -Software Freedom Conservancy. Martin earned a PhD from the University -of Cambridge and he received an O'Reilly Open Source Award in 2013 for -his contributions to the open source community.
- -Karen M. Sandler is Executive Director of Conservancy. She was previously - the Executive Director of the GNOME Foundation. In partnership with the - GNOME Foundation, Karen co-organizes the award winning Outreach Program for - Women. Prior to taking up this position, Karen was General Counsel of the - Software Freedom Law Center (SFLC). She continues to do pro bono legal work - with SFLC, the GNOME Foundation and QuestionCopyright.Org. Before joining - SFLC, Karen worked as an associate in the corporate departments of Gibson, - Dunn & Crutcher LLP in New York and Clifford Chance in New York and - London. Karen received her law degree from Columbia Law School in 2000, - where she was a James Kent Scholar and co-founder of the Columbia Science - and Technology Law Review. Karen received her bachelor’s degree in - engineering from The Cooper Union. She is a recipient of an O'Reilly Open - Source Award and also co-host of the “Free - as in Freedom” podcast.
- -{% endblock %} diff --git a/www/conservancy/static/about/staff/index.html b/www/conservancy/static/about/staff/index.html index 644b8b6226bfa9c5fa946126ee4df75f52651425..b6505b1c6dadee96c4576efa5d891568f2757d86 100644 --- a/www/conservancy/static/about/staff/index.html +++ b/www/conservancy/static/about/staff/index.html @@ -4,45 +4,61 @@ {% block content %}The staff are listed alphabetically by surname.
-Karen M. Sandler is the executive director of Conservancy. Karen is known -as a cyborg lawyer for her advocacy for free software, particularly in -relation to the software on medical devices. Prior to joining Conservancy, -she was executive director of the GNOME Foundation. Before that, she was -general counsel of the Software Freedom Law Center. Karen -co-organizes Outreachy, the -award-winning outreach program for women globally and for people of color -who are underrepresented in US tech. She is also pro bono counsel to the FSF -and GNOME. Karen is a recipient of the O’Reilly Open Source Award and cohost -of the oggcast Free as in Freedom.
+Karen received her law degree from Columbia Law School in 2000, where she -was a James Kent Scholar and co-founder of the Columbia Science and -Technology Law Review. Karen received her bachelor’s degree in engineering -from The Cooper Union.
+Rosanne DiMesio is the Technical Bookkeeper at the Software Freedom +Conservancy where she handles incoming and outgoing accounting +activities for all its member projects as well as financial operations +for Conservancy itself. Rosanne has been volunteering with the Wine +Project since 2008 where she focuses on user support and documentation. +She has worked as an English teacher, a freelance writer and as IT +support. She is passionate about helping free software projects improve +their user experience. Rosanne received her Masters in Communication & +Theater at the University of Illinois at Chicago and her Bachelor’s +degree in English from the University of Chicago.
-+Denver works part-time managing the technical side of Conservancy's +license compliance work, triaging new reports and verifying complete and +corresponding source (C&CS). His roles elsewhere have recently +included financial trading software development on GNU/Linux and +previously involved writing system software for hardware companies, +including driver writing for the kernel named Linux at ATI (now AMD) and +Qualcomm. He founded a company that designs and builds magnetic stripe +readers for security hobbyists where he designed the hardware and +developed the device's tools and firmware, which are both free software. +Denver also writes free software in his spare time, with patches accepted +into Wine, the kernel named Linux, and GNU wdiff. Denver received his +BMath in Computer Science from the University of Waterloo. He gives presentations +about digital civil rights and protecting the free software ecosystem, +having spoken at conferences such as CopyCamp Toronto, FOSSLC's +Summercamp, and the Open Video Conference.
+ + +Bradley M. Kuhn is the President and -Distinguished Technologist at Software -Freedom Conservancy and editor-in-chief +
Bradley M. Kuhn is +the Policy Fellow and +Hacker-in-Residence at Software Freedom +Conservancy and editor-in-chief of copyleft.org. Kuhn began his work in the software freedom movement as a volunteer in 1992, when he became an early -adopter of the GNU/Linux operating system, and began contributing to various -Free Software projects. He worked during the 1990s as a system administrator -and software developer for various companies, and taught AP Computer Science -at Walnut Hills High School in Cincinnati. Kuhn's non-profit career began in -2000, when he was hired by the Free Software Foundation (FSF). As FSF's +adopter of Linux-based systems, and began contributing to various Free +Software projects, including Perl. He worked during the 1990s as a system +administrator and software developer for various companies, and taught AP +Computer Science at Walnut Hills High School in Cincinnati. Kuhn's +non-profit career began in 2000, when he was hired by the FSF. As FSF's Executive Director from 2001–2005, Kuhn led FSF's GPL enforcement, launched its Associate Member program, and invented the Affero GPL. Kuhn -was appointed President of Software Freedom Conservancy in April 2006, was -Conservancy's primary volunteer from 2006–2010, and has been a -full-time staffer since early 2011. Kuhn holds a summa cum laude B.S. in -Computer Science +began as Conservancy's primary volunteer from 2006–2010, and became its first +staff person in 2011. Kuhn holds a summa cum laude B.S. in Computer Science from Loyola University in Maryland, and an M.S. in Computer Science from the University of @@ -51,10 +67,34 @@ Master's thesis discussed methods for dynamic interoperability of Free Software programming languages. Kuhn received the O'Reilly Open Source Award in 2012, in recognition for his lifelong policy work on -copyleft licensing. Kuhn has a blog -and co-hosts the audcast, Free as in +copyleft licensing. Kuhn has a +blog and co-hosts +the audcast, Free as in Freedom.
+Deb Nicholson is the Director of Community Operations at the Software Freedom Conservancy where she supports the work of its member projects and facilitates collaboration with the wider free and open source software community. After years of local organizing on free speech, marriage equality, government transparency and access to the political process, she joined the free software movement in 2006. While working for the Free Software Foundation, she created the Women’s Caucus to increase recruitment and retention of women in the free software community. She piloted messaging and directed outreach activities at the Open Invention Network, a shared defensive patent pool for free and open source software. She won the O’Reilly Open Source Award for her work as GNU MediaGoblin‘s Community Liaison and as a founding board member at OpenHatch. She also continues to serve as a founding organizer of the Seattle GNU/Linux Conference, an annual event dedicated to surfacing new voices and welcoming new people to the free software community.
+ +Deb received her Bachelor of Fine Arts from Bradford College and lives with her husband and her lucky black cat in Cambridge, Massachusetts.
+ +Karen M. Sandler is the executive director of Conservancy. Karen is known +as a cyborg lawyer for her advocacy for free software, particularly in +relation to the software on medical devices. Prior to joining Conservancy, +she was executive director of the GNOME Foundation. Before that, she was +general counsel of the Software Freedom Law Center. Karen +co-organizes Outreachy, the +award-winning outreach program for women globally and for people of color +who are underrepresented in US tech. She is also pro bono counsel to the FSF +and GNOME. Karen is a recipient of the O’Reilly Open Source Award and cohost +of the oggcast Free as in Freedom.
+ +Karen received her law degree from Columbia Law School in 2000, where she +was a James Kent Scholar and co-founder of the Columbia Science and +Technology Law Review. Karen received her bachelor’s degree in engineering +from The Cooper Union.
+Brett Smith began his FLOSS advocacy in 2000 at college, organizing student groups and discussing the issues with professors and journalists. He @@ -68,41 +108,6 @@ an Arvados maintainer at Curoverse before joining Conservancy as Director of Strategic Initiatives in 2016. He holds a BS in Computer Science from the University of Kentucky.
-Deb Nicholson is the Director of Community Operations at the Software Freedom Conservancy where she supports the work of its member projects and facilitates collaboration with the wider free and open source software community. After years of local organizing on free speech, marriage equality, government transparency and access to the political process, she joined the free software movement in 2006. While working for the Free Software Foundation, she created the Women’s Caucus to increase recruitment and retention of women in the free software community. She piloted messaging and directed outreach activities at the Open Invention Network, a shared defensive patent pool for free and open source software. She won the O’Reilly Open Source Award for her work as GNU MediaGoblin‘s Community Liaison and as a founding board member at OpenHatch. She also continues to serve as a founding organizer of the Seattle GNU/Linux Conference, an annual event dedicated to surfacing new voices and welcoming new people to the free software community.
- -Deb received her Bachelor of Fine Arts from Bradford College and lives with her husband and her lucky black cat in Cambridge, Massachusetts.
- --Denver works part-time managing the technical side of Conservancy's -license compliance work, triaging new reports and verifying complete and -corresponding source (C&CS). His roles elsewhere have recently -included financial trading software development on GNU/Linux and -previously involved writing system software for hardware companies, -including driver writing for the kernel named Linux at ATI (now AMD) and -Qualcomm. He founded a company that designs and builds magnetic stripe -readers for security hobbyists where he designed the hardware and -developed the device's tools and firmware, which are both free software. -Denver also writes free software in his spare time, with patches accepted -into Wine, the kernel named Linux, and GNU wdiff. Denver received his -BMath in Computer Science from the University of Waterloo. He gives presentations -about digital civil rights and protecting the free software ecosystem, -having spoken at conferences such as CopyCamp Toronto, FOSSLC's -Summercamp, and the Open Video Conference.
- -Rosanne DiMesio is the Technical Bookkeeper at the Software Freedom -Conservancy where she handles incoming and outgoing accounting -activities for all its member projects as well as financial operations -for Conservancy itself. Rosanne has been volunteering with the Wine -Project since 2008 where she focuses on user support and documentation. -She has worked as an English teacher, a freelance writer and as IT -support. She is passionate about helping free software projects improve -their user experience. Rosanne received her Masters in Communication & -Theater at the University of Illinois at Chicago and her Bachelor’s -degree in English from the University of Chicago.
{% endblock %} diff --git a/www/conservancy/static/copyleft-compliance/vmware-lawsuit-faq.html b/www/conservancy/static/copyleft-compliance/vmware-lawsuit-faq.html index 2cec67c3db49d4fc2c9d0976ca54de23da771154..8361e1683d79e15fad83f0199927cc5c3b4466e5 100644 --- a/www/conservancy/static/copyleft-compliance/vmware-lawsuit-faq.html +++ b/www/conservancy/static/copyleft-compliance/vmware-lawsuit-faq.html @@ -179,7 +179,7 @@ component in ESXi that the lawsuit alleges violates the GPL?The GPL violation at issue involves VMware's ESXi product. - Conservancy independently reviewed ESXi 5.5 and its incomplete + Conservancy independently reviewed ESXi and its incomplete CCS release as part of our GPL enforcement efforts described above.
@@ -243,12 +243,12 @@ Code, and for which (at least some) source code is provided. good, since the court documents discuss the specifics of alleged infringement on Hellwig's copyrights. -However, Conservancy examined VMware's ESXi 5.5 product in detail +
However, Conservancy examined VMware's ESXi product in detail even before Hellwig's enforcement action began. Below is one example among many where VMware's CCS was incomplete per GPLv2§2(c) and GPLv2§3(a). (One can verify these results by downloading and installing the binary and source - packages for VMware's ESXi 5.5 Update 2.) Note that this + packages for VMware's ESXi 6.0.) Note that this example below is not necessarily regarding Hellwig's copyrights; VMware incorporated Linux code copyrighted by many others as well into their kernel.
@@ -257,7 +257,7 @@ Code, and for which (at least some) source code is provided.Our example begins with examination of the file
called vmkdrivers/src_92/vmklinux_92/vmware/linux_pci.c
,
which can be found in the “Open Source” release for
- ESXi 5.5.0 Update 2 (5.5U2). A small excerpt from that file, found in the
+ ESXi 6.0. A small excerpt from that file, found in the
function LinuxPCIDeviceRemoved()
, reads as follows:
@@ -279,8 +279,8 @@ LinuxPCIDeviceRemoved(vmk_PCIDevice vmkDev) vmkDevName[0] = 0; } [...] -VMKAPI_MODULE_CALL_VOID(pciDevExt->moduleID, - linuxDev->driver->remove, +VMKAPI_MODULE_CALL_VOID(pciDevExt->moduleID, + linuxDev->driver->remove, linuxDev);@@ -288,8 +288,8 @@ VMKAPI_MODULE_CALL_VOID(pciDevExt->moduleID,
The function, vmk_PCIGetDeviceName()
must be defined, with an
implementation, for this code above to work, or even compile.
- Inside BLD/build/HEADERS/vmkapi-current-all-public/vmkernel64/release/device/vmkapi_pci_incompat.h
,
- found in the vmkdrivers
package of ESXi 5.5U2, shows a
+ Inside BLD/build/HEADERS/vmkapi-current-all-public/generic/release/hardware/vmkapi_pci_incompat.h
,
+ found in the vmkdrivers
package of ESXi 6.0, shows a
function header definition for vmk_PCIGetDeviceName()
.
However, the source of its implementation is not provided there or
anywhere in the source release.
-00000000000327ff R_X86_64_PC32 vmk_PCIGetDeviceName+0xfffffffffffffffc -0000000000035318 R_X86_64_PC32 vmk_PCIGetDeviceName+0xfffffffffffffffc -00000000000387e1 R_X86_64_PC32 vmk_PCIGetDeviceName+0xfffffffffffffffc -000000000003cf40 R_X86_64_PC32 vmk_PCIGetDeviceName+0xfffffffffffffffc +0000000000032db3 R_X86_64_PC32 vmk_PCIGetDeviceName+0xfffffffffffffffc +00000000000333ea R_X86_64_PC32 vmk_PCIGetDeviceName+0xfffffffffffffffc +0000000000036644 R_X86_64_PC32 vmk_PCIGetDeviceName+0xfffffffffffffffc +000000000003986a R_X86_64_PC32 vmk_PCIGetDeviceName+0xfffffffffffffffc
The above two properties both suggest that the vmklinux_9
@@ -321,9 +321,9 @@ VMKAPI_MODULE_CALL_VOID(pciDevExt->moduleID,
inside vmklinux_9
itself.
The definition can however be found in binary-only software provided in
- ESXi 5.5U2 — specifically, inside a file named k.b00
,
+ ESXi 6.0 — specifically, inside a file named k.b00
,
which is located in partition 5 on a disk where ESXi has been installed (or
- in the ESXi 5.5U2 installer ISO image). Running file
+ in the ESXi 6.0 installer ISO image). Running file
after gunzip
on this file yields “ELF 64-bit LSB shared
object”. Meanwhile, file k.b00
reports “gzip
compressed data, was ‘vmvisor64-vmkernel.stripped’”.
@@ -332,7 +332,7 @@ VMKAPI_MODULE_CALL_VOID(pciDevExt->moduleID,
“SYMBOL TABLE” section:
-000041800036a408 g F .text 0000000000000137 vmk_PCIGetDeviceName +000041800033193c g F .text 000000000000012e vmk_PCIGetDeviceName
… which indicated these binary file contains the function body
@@ -358,25 +358,27 @@ for vmk_PCIGetDeviceName
.
struct pci_dev { +[...] +#if defined(__VMKLNX__) + /* 2008: Update from Linux source */ + u8 revision; /* PCI revision, low byte of class word */ +#endif /* defined(__VMKLNX__) */ [...] struct pci_driver *driver; /* which driver has allocated this device */ [...] -truct pci_driver { +struct pci_driver { + struct list_head node; char *name; [...] void (*remove) (struct pci_dev *dev); /* Device removed (NULL if not a hot-plug capable driver) */ [...] -#if defined(__VMKLNX__) - /* 2008: Update from Linux source */ - u8 revision; /* PCI revision, low byte of class word */ -#endif /* defined(__VMKLNX__) */ };
These structures, and based on those from Linux itself (a similar version of this file can be seen in Linux 2.6.24), and as can - be seen above, have been modified to work with “vmkernel”
+ be seen above, have been modified to work with “vmkernel”.In LinuxPCIDeviceRemoved()
, we saw a macro called with a
variable, linuxDev
which was of type struct pci
.
@@ -387,7 +389,7 @@ truct pci_driver {
VMKAPI_MODULE_CALL_VOID
macro calls driver's codeThe
- file BLD/build/HEADERS/vmkapi-current-all-public/vmkernel64/release/base/vmkapi_module.h
+ file BLD/build/HEADERS/vmkapi-current-all-public/generic/release/base/vmkapi_module.h
contains the macro definition of VMKAPI_MODULE_CALL_VOID
,
which is quoted below (with debug lines removed):
@@ -402,8 +404,8 @@ do { \
When the macro is expanded, it means that (function)(args)
is
- actually expanded to linuxDev->driver->remove(linuxDev)
.
- Therefore, we see LinuxPCIDeviceRemoved()
, makes directs calls
+ actually expanded to linuxDev->driver->remove(linuxDev)
.
+ Therefore, we see LinuxPCIDeviceRemoved()
makes directs calls
to a driver's remove() function, by combining with Linux's struct
pci
, and by VMware's introduction of this new calling code.
Conservancy has confirmed many drivers from Linux are incorporated via
@@ -423,8 +425,8 @@ static struct pci_driver tg3_driver = {
Therefore, when the code in LinuxPCIDeviceRemoved()
- calls linuxDev->driver->remove(linuxDev)
, the code ultimately
- called (in the case where a tg3 card is driven by the kernel)
+ calls linuxDev->driver->remove(linuxDev)
, the code
+ ultimately called (in the case where a tg3 card is driven by the kernel)
is tg3_remove_one()
, which is found in tg3.c
and
comes directly from Linux.
tg3.c
VMware furthermore distributes a modified version of tg.c
in
+
VMware furthermore distributes a modified version of tg3.c
in
binary form. This can be found in usr/lib/vmware/vmkmod/tg3
,
which is extracted by un-vmtar'ing the file net_tg3.v00
(found
- on the ESXi 5.5U2 installer ISO image). Conservancy has confirmed that
- file is a compiled version of tg3.c
tg3.c
.
The above is but one piece of evidence among many, but hopefully it helps to explain some of the “combined work” violations found in - VMware's ESXi product.
+ VMware's ESXi product. Conservancy did a similar analysis for ESXi 5.0 + as well as ESXi 5.5 Update 2 and found nearly identical results.linux_pci.c
,
these steps (no login is required):
VMware-ESX-550U2-ODP.iso
.VMware-ESXI-600-ODP.iso
.
vmkdrivers/src_92/vmklinux_92/vmware/linux_pci.c
- and BLD/build/HEADERS/vmkapi-current-all-public/vmkernel64/release/device/vmkapi_pci_incompat.h
+ and BLD/build/HEADERS/vmkapi-current-all-public/generic/release/hardware/vmkapi_pci_incompat.h
from vmkdrivers-gpl/vmkdrivers-gpl.tgz
with tar and gzip.vmklinux_9
by following the steps
@@ -511,11 +514,11 @@ previously-mentioned linux_pci.c
,
(Note: vmklinux_9
is also available pre-built on a running
ESXi system; see below for instructions on how to access it).VMware-TOOLCHAIN-550u2-ODP.iso
and has a SHA-1 hash of
- f679e81ffb2f92729917bbc64c2d541cf75b5b94.VMware-TOOLCHAIN-600-ODP.iso
and has a SHA-1 hash of
+ 9a68df4cbeb645c25002a02f11b1923f98d3d5b5.
@@ -527,7 +530,7 @@ previously-mentioned linux_pci.c
,
linux_pci.c
,
VMware-VMvisor-Installer-5.5.0.update02-2068190.x86_64.iso
.VMware-VMvisor-Installer-6.0.0-2494585.x86_64.iso
.
k.b00
file in the root directory. Extract it
using zcat k.b00 > vmvisor64-vmkernel
(or a similar command).
@@ -618,7 +621,7 @@ copied Christoph's code into their product.
Samba TeammQKpVGQ1+ECnJIXTdF;n=2PI2-3O(i0o-eQngoHd3Y?qQoDHrF86B*@x>507%<|ANib1uAdAznzacQ5fs`<^RU zS_tvmdk0;x@L6E1&rscS|IIu@wng(G+(OXnP(Z;408p~y1QR6X`37$qOFif0f%Zh4 z>r&E3Y^zXU#0SY`R$L{x39~G-hygu@P{Nz5*!w)B5lum4r|Y9Ix|dj{0Jsm?&{Kz1 zBTgKS$7m~5FXC=F#~z#c08y>jw{%oeEJ-+d2q_7bvW~`qQk7|zRqIRMBpWsA@1X{M z`Lu!|*8QJ_sf6#6X(+qfASygt^lT!DA5et(oXTUjkRAY13$ljeI?9}_116=0@U36v JxR{orU^y> z$(#GU!X&wL5ab2&awTLYI=hyrqOP>_NO(P z=HVO$vn`2CVp;(3Uf>Q(PPb|dmeV%^mGxhyBjGIkFz zDl(@ZXe)vp=w!#4{y{b-;;SrMpXGq8erIvF56+MSuDh!cqId9RGzOu&$FB LlEAxD!*qO+D+oqBA-D7T(?~t2T1aTC zguqvmbt38*XDp}~E!d*3h-(S9Ok+rdu>;@1#lh<+1p_eFB41{?iP>@Wxr;#^JbSQ| znqyOLX?I+k!&3bFGAO#|Kvo26j8ImF&YWw(;?8gMf`vCB8)ne1sgzy-`9wDkgJ6zl z_J$+iSmhycgB5T*kfGY0U3#npIPQB@8qj2hjj 2Xd$7mDsGP22nWom>WjUFD0pM|KD>r9GH|Nti@fFWU1NvJF|gz|r);1A z2>b1j0x%djRrH153ieAv&*{es=Y?ysHeNy909I<4suhLWVl` g)p5b7*sx{MR0I<>dLL+-*O>)`PQs_SdknfNMe1oHqi&Wn*fB`n> zFGAx)MJS46RHUub7y!?S>5FhxoB&KnVu1`X&-i8WieKj5ByFJfn?N1uA4N_ZPIMm< zl_?)+upWXoT%i9#m>Q PwBl?v{qR-tY*$j^Wj-+QR zxt@HM6>twA%L=52zzt^T>flGWfYttwmjPT1D> LVy6YvMaOWov>r@X{`N0XQml#hx)6fhllz z1`qKmCcJAf*qMfDc6We!<+}wyy-eN9ATgA+s+2&KhZM>0lKFOpDn|t>M>*Gi;$|y~ zzD*M;O{z )Kh0AK6-MN+*t!wfrh#Gj&lmMsv!_JzS(0UZgWc7sAbl*0IZ)vd@=|rbUND zF~uTR!TdDYKcRs?5I+R{c; Ywj~MMQmRl|u(!g2bF#@TRd6lD<`_d7z^TH~rco0xNlOY< zx5ZE>>-&9a7k;56S$SLL{ 7Xd0q3z0gz59>VI<2g(CLmwD#!yE8nxSZdl7#*Oz#BBElVoAqewan4gG}Io z$@{FQ_WjPbK2%ZnkQ8k76JQUhqqkJ8SFKkDtASO(s$k{OoRZ>_{E|ZH{FCv~HU@ow zB05TFW{;#v;V0!3Ymfp!^3i<_b*Kp_C5#>X4&lWEPE55(C;aX6EsU6Nxtc- 3s4Aw=h+$45bltf@}`e48Pa#G zT8u4s)%#J@nbW7OC~2^s?M2ViCS#-Xzu9Gy^TIa((C>g{fB^sx%BJDQDM29do-&>? zm@<=68ZYN$s`XUGlR+Ht3Q6v>vhe~Xo 1NdIt9FfqMbh?dwX;UAv*w-Ixuj<21TweB=2c|Z zBE4X>iP&|^BA2TR$py*F?{{Ht%e!_)bIeBJFRZvQ-94~6`EL4w<>Wtz_4%9KPr^Qn z;R0K%oUYdbMcm)G3T5+Zs~UD$pDc(-;#?Df-_KCbbI@zeRNHGWcUayZI5@a{wkdju zn7R2mlQOImxu|(vZ3Mn(4goe%|KPFrizmlUbK$^fhbdQ?1X;RpN4;W|h9z=P#9v z*}4p^#@i6aR8pt@6UM?XcN`>Rdykt$FMpaz#v+>waS)qXFkZ924Vf5}&miwF4u)4m zkYK{eUg)s9FI|@Fjc7}@Gg|7PZ~x>2Tw3h_F3kz}`xsrfpJW`hEbh8qhxxQB1>V&4 z8Z0j_wzcy0{#+(qTx_!nwQ~O!ax&}W;xTfyb5!Ic2Fp{}Q6n-xmHw*1AVG^UqKM*6 z)0dXv+Yj;a*L<2hDH>5tq}kl_8dpj`Mv*ux8V!v*2ELT72j`L#BySUsXpUe 2?pL|+<3w2FQei<^kr zc_X{HMBmAOa7>;3?mnaB=8XOzi=)YkZb0k$s83!&OI_(|7wI>RUL#P-&1HJxJHA TX1QKG$;sC+|vun?YbgKaKqanrxt(7^CLj_&gakjoFR zP}sI3c<$}TNz3vx0%*1AVnd`xTzLwMI^-<8DJwWSxU?`fnEPz@q`WsRcDKGTc3rHO zr$zg40zFR)^!$VN4+RX4(9gmuetw2DYTCFbMWrt(DsoDi vh=_H z$<*l3H&}6<;IRXB8gg{rS5?(cR@?vPQJ${XA+fKCmrQ9X!4PMx($M5%ptitjv6Him z2ObH)=5yL2iaj{7qMV6UYhIwbPw7g$QorjvOmvo{R%oGGwm#WjD26c3$i{xLtX-gC z&`o55y|J~WS-wggpZcKLmR+z-&VUk`B8lVj4SGS3g*2{L;COK4_3BpgccWg_0P{-j zMAs>{^R^a!hb0ZWX(9-i>@{Wn{@k>ZYb|^t%j3+spu4m}6wmdh-LP2RS{!zgOg%FZ zyTE)Pxl>kFrmklFfzt>BYQWaTy2_go&K!H|yA$knOTx r%8>1GihrlnfJvK!&_UFVpl*| z50ZBcyb;x`C*%3ZVX*Eg#|^06IhS<`Xj({2vm>d_%R|R$;oWjxkIXajC9-u_as^Ru zDF{~!QFC9MLOtk6`e3$S|96Ro1KSYZ_rtH~Tk*?EEf7@vEQ6Mo=c~$jOM)rXr>Y7* zfvGp>L$1(dSCQL_-rTZvT!2F}Kq~B {qQF=NS)&3f!m1_NM&0X-AQ z!9}QfOBaFB^Kq`62Dyr)YYPew@hxXbA^QD+j&CveaCX^8Gn7Xk|MgM1T(pq+n01Ex z@MU4c_W@$7?-^m_0y<0jKY9q~D$@*7t1v9zj?@P2|J-$x;I+j7*S6~vuL~hFa(p~3 zVOE8lDO`PgW&5D3=8nblI}LJ2QH<-At6(J3Kv acK z%9x;L3KaknF8{%6-%fQpc070e^%>k9FCwz#; xB~x)d*;}YhRc+30>uC zjt9HANM8Xr5@Qlk`40B1;n{(Ly?{rjo6N+ S}8zAEWb^mdZ;x z5-QnL%1}PzQ(aXB!RVUJBi5rYr3zPt(J;bYZkSPa?tKJ+e&Fj5b`$oCbv zJ^o#QE*8hIjX1uYx&JEFDnGzq =+k=MH_?73wt8ybl$yBAV`z9rp}}A4YvR050tPW9tA}X9ZrzBp@qhm z7E)Q^e`QOS)nJcB#iYy%XN@l#ZqOw*iZ-I1D;6zgEtZYb2~ym<+df5b#>Yg4i)Zrd zSb9ZWX+E-N;*Ph+_?}E|PcDzd)L|`B7R8yDdf#U0HHa~xSt2jCcN_l(P(bp_97q4q zmEd%IZ?O#+rcGag-t^wYqB&j3wh7gMA%RV$6L;b}oPB8yo8f)7ocm}L?EwRi11$s% zDIqw@`;?$mmgRZX96juhQn*tMP4^WrcgbK3vyRd)dNkw6wMcLKZLvNTVZ?fH8;Fs< z$vmivSW0Nkf$&!Og?I3QP4aRTXZ$8RK>gUlK?14oL1yf0%(;PVVD=AH+>N!P`ua)f zZNpcAJmE|xuh{8dvNHdi#u&(@vvm+;=QDX#@D13Dt3iGt(7PtXS^GP-iMoNORP6QZ z*`7Ca@}h{Owla=Fg3Rl}G^&N_I n9Zzev|> C;V}Ok!{si)Yn1 zQ @{fXEp=nT;UjdIN)M@wXkM?sM1 zSrJ0fD0X%Z;i_Rf>ZvqbJb}Pz`3n}L{D9J)g5f|mMpV51^`YE#eymKg7$FkYU!5{E z>0QS4_&<}ekj544nz-Gra Cxk4Zma+GOVc4M}`-9_o|TA(h<2sJE&%2NaKrv1kscnbKK3H8Q7;v z{CEtbh_D$@nsh^YgCc3IT$LDM5pysZyExDawc4)FIE&><2~cI+1gaNZB5lUT4zk XDKXC9gM0( zDS{&gW2#G*^J3DkH|*FhPWI^9AcjRWguIk13RUvNXQc(%w0jLbrdr-@
0wG+2$W($v%)RDj+}5u}^8@z%tWjI dY^GYd&Nm%WJsULKAipNi?sMY z6Xrm0?$}u4#hu h>f8KdGI7IqyIV?{L zIjN)%F4tNI#I)=Wo@V;i9r3pRilUmh =ec zw9!tAXz!tKbc}8V!=QqIC#BenVe&3izNeMDUXDrAGkhRvl)FBitDZ3~p4r4%xPk_> z`b+T}O~elYZ_NRPjH9{+!e6da(7v18A%($~^|6M-*4m9;p36$2^0BG|mfE`HjMI3? zi&F`+pSxw!;-+Q#PM>=gvgEzmLH4>$%1x3Jmd>QPnlqm$-Y)2?SUAoK8n^U)*q zX!+F4Q8&&~P)q65w-*@wuL%z1Q%mZ^P(m5Jt)1^QWF IPHdC$`M-+puZlC*EVge-;K>8&ook)wYlFhX?7|N`Kqt z;EM}Gju_FoooP%ZQ9|>%xqT7!@WXYP$VTU3z1GIp@9KMUl567p)Rqm=g`_Uh)mGz{ z-exQ4zKw@*sOBtBZMH#CsH0r9SeDfuGa9-5hiNCB26fc$@gzCF*@!a9)o_V)a!B4_ zJk_J?&W@C?S0{gH o*afi5TOEOJDYUZ#QjKNSLq&V2(;heIK|7 zO#Tk5cLkLZ(MGCkr($C)0@i=amu+?sB!l%@t%wNd9;6)2-hVIGW$`vw`I?sHT%Hl! zU-G)k-oi{#E?1z~ZM` 8p3w^SVy0n%%21%C)@bsD|hPDGIlv z3%R~3!0jiB@r-o|$HYAasKVAGwP9nrfLJxuqR^~;@Jnwj0u{=K*vC5QP1~_k9-mqn zjPoj-5Q`f@_Cw0}p&LOWgQAgn+u@#!wvkv9l~+V$9MqXTaqCW&x?AR{XkJ}57rsX( zDO6#~Twm`6w=And8{dSyh!7>%8+ZL^Up|_yY_Bm4_aQl(d#n%i=3QsXo(C=FFwUIO z<9P%pzso+RNg-zZVE0Ffsn>+FcP|RGTiECxr&@gpXB7F4PtWITI6*xPSu J_f z4aOtoslQS_S=5vpu)vJb2 7Oad{X#mJoZ8yJi=@&w g!B#VnB!J^#f;laSdcRZI_O=oa375) z^(X>;`VLi@dKPS_I9XUISOwhCjqkefev5j#X+l19tu|&EIZSYI^>}Q3rRiv+(lUT( zRP15xS1LM;&hx(i!#jv@P+ND;`@NE0PI FHL|LUgH>3yU%a15+NyQzLZi17i<`UKH=M!aq5ka7g244Y0m57FN)Ddy3|?0 z9bjN+5KL09=3dE-#=)NG4ov(!TaO3zA-BeG_9Vj;Or=iC4zpSB?JLWaIa07tA}-rN z2@FJkjBqLd@8}N)+DN@~Ey*~2ui@}GkWXxW%CJO{b4jR{^KwAQU@abttp@X<^8j+E zB{JSR1~T!A${6-RZWBDK4^#{X{I{6bcdrZT *@m-vgf~h{^aT5EWER> %dYQFI(RSFv!o4Oh@L}kTAIs-4%m3C-+f`s z?HKZnNADh+I|w*X*6(5Xg}NEy_66_IZ8I;QK0_itpe;VTlVMI(+7g))`4R`2^HoPW zUCk_wmyo-#D~6F`03;=g @F7^1I# f~4?6O)mms2DZkwQ)|)5UY9j$eDOw^;H`BEnN|sd@Avk zi8SI8?A>!+C@b3}rk1gncM9bf9GED~;%k&sB{x%zkC{|u9S>GpUsI5Bl5rkS8%kRe zxmvax{UPh1TGAm7J&yvzTjR2d7S5&11w~@B>_)|Gi#cX-#D9c{Pp3-ERg5&oEV-&E zlYX1$-soZ)cP$X-k^MA}>MJ-B+ed246C9~Uf?p2N)@Vccq%?~y^@!o}UJnezzIGUn z0{t##dxze%FEXsb-HD&iev1qmln 6Y`roQa!LT8>o@H`8x3(^ac7 z6^J13jkDGR$n3wXY!VMp3-6U%N-^3!)RqEBrbxO`y@s@8(};H4BuUhB(cQW+a$uw% z6Ff||p&b!$$T4KuvfD8jLhHKnRmN|6dhu_?iaEbgn^rExQrT8Edm8( s{3a)91w! zm}TU!&S@Mgtm3$61}(LzHq@gE_Fsh|$au1vz((fO9Dj`z7E|z )t1Z8` za821 Me2zN(DjJ4Cc*1@x*%mgS(kx0cmtbW ze%HQjWE{tj!;9?89YyCnpK!b}%U{8MwKFUq7%5&Cpat)J%M{c)YwhvaqrXzJIfAXd z6twu}*&IF2rASp?6O#uqMBaRxX|ACtC_LWxM;FH*^<`LUP AwP{n6)K&CooE7n8Df{?LLHNPL9n3%foz)tzIDIfVR-&UrCz z+0F05U7S*WIAt*HuZ+B%h@Hji@t5wjdC&5AkWOrFlumXG3s=jL3T!jH)1?QBGC zI`UUKZ@t7B&50x+S9uyWp~Ri~c9~s8ZtzzTvCr9lGmZO20zW3YR2z_H5M6{sc6z3o zeqGva8RJ_D+XxQY0v;lG4%#y^`8qSQ8SHI2m%(4|^|d$-I5C)amty*6ij3FR iJN}0QQn}`_rR2su7s=6hyjtlRqr$5A0gCw*Q5=FeLC^z6 z4bQ^++Ds(i6;n5m^=+1W3+RLqIrOHT?V1Xlvv;@VMK6;aOy;9fSwWuvQI=vvgXr4^ z6cAgO=SNN~SuiI?{E%s72uYb4x-#Pyc7FbNR293UVITQ3cUw!p*myB#%Obbt{&(Z! zqRc_B+5x( R)%Z#@|0Kzj{S=4($d^-Jxe^9S^>l&83Bn@5 z6+FlaFk5tq&Y|aXV^=lD`~2 fpS zZK$~lT+dSo#kNr=)vt1S{OW z^3v{OsGHmBD(WY!XU^)_&RAOa?sU(4 z`)VJbO51c_uUo5r9Ag>l^|#U%a623V&Ai5DGOZd(2U2CgW3dj#?^D^jSNac%8$C(+ z+g`RhehnyC>>1n%eGM+_;9wIzLau&a@0z?8N 1@h zX@Kez$8<>aH*rt9@O6Bz(c{EI@)v45yy>NC2+WW(v61y}*K|FD! `ZH16WG*I^OELGsH+Ye>T6i&ifmbT$5^gfo366ZY8si! ztxS|!l8#UH{eb6ZO`ZDNHNakTmpfl_nh5LveU)&r>MPHVRnAB__T4+)96PnYn*B%- z3w+99t@j;I+BlSTLby#;DAp&tK$?%3-%1pX_+u1rP*yw2 qw?$@)1z%g6X7mHH zI3g|eV`=0_n4IPmr`;V8GTYW|w2@lcAZIfr>sA6*Ho|>Kv7>g{`b&*-DH}yuqw}?U z?_DOfDoB>?!>6s3mz06l;Zr}q_VR3by(ic~_p~B;j_J hsfseXR2DUn_5_?=mOv{HlMl!zmKX*iv!2BlO9I8bpAOd! z E0R1tskj!Kc()$t8;;h%I>H9i5&hxCi7zC1HrC7v@It3Thy zVI~TH#TwoQeQ-;rciPkIJdLZI(F2K9nh@RR+*+ZCr7e9RBX~ zHzs#rAKCAsYx(5ObtV^L$<&W|J9$1d?phJDmZ=GW-PQqIygyV%W7|-@2(9Iep3qYT z^fa~faG`N~rh|RD&hs}mDVpnqqkF||O8#`a$$F4eom3?Ut-wD>!trmJfg}Po-t{A3 zG&Q=fEb?=$dN~ew201TN%V3UknE3)LxJkrAbLjFcY1vgLi@`mn_WL2GYOK=mM+hV@ zj+$YF)mMkNpL;+(omN*c10(UpkB|#}qJBayH;Vs(RF!=(>i}Mb2`|sXkG5cyF4<*5 zJ*j0!Elq50ICfa@Bb~4FFw!_@di;)JUY;wnpIpJEcj_1~yWpqA`tQybIkN@py1Ds+ z7y*=ua%KcC*J8Z|Ta#ROAC(+N&apNQ91|cERud{qlpiNoo!maT8>J^`{{5f3)MY|W zA>2SKq$a;y2gdHep|6L~vL2vPGHRz2my >E~Y)3 z%z1JKNf(cbcs-ffp325RI2FI#wicXPWastXnW!ByP0X-xS^oHTuJo~kPp}?Zi{sRv zuC3P=t{=(3_9_FPQxucQ0`W0;($CeHiqn#34+6e2eJ#Ujv#4ZyVVP4=uW&7xDoZZr zDDWI}vGNXg4zN|<`(vobqD{@3kodJXP$&1R*hs_ouYFTL?b|0j5?igE3GCH4c#=eJ z=p^ZB5Ov7}IWjhf7bz *{Uf5u0Cl9co(k Zed8m*nmR40f)!I$w=YE!VkKE8N+YtnRMT=!KL0Sm;Uee<8%K9|#z3*|Wv*+Uq8b<9gLhB&r@nP5xYQ-E7}j;)x03T|@}bPkm-4 zUfa!ZIQX6X-W8x^7LJpHLw|8LgO-l7s(5&Jrr0qZUiD=4)`UDrjW*+Zmpqk-Gm}G_ zZNsA#=GPoi!?PKDHwww z5Yfq|C9KR0N@?Em@-i&NfawtMF9@zVdt_g5^10Jo HXIPuriKwAk6vVklXzKDWO&yyNK!Due z&fM}2*Gm^9#n3_xjDKQpPbl}36We2C#q%8;UraXZOTWv} S{{?df(Rh8itRqw~aH3W<3f;(^)ryY@qZjT2$t!L~$EHwttJ?iM^Csg4=O%rcb& z%F9OU*YPW97PlZuUw5}k8iL1)kCAB4(j1MeRulIhdwov*V~`l9f7$i;z!H9T^h0Vj zQ0o^a+zhkSIDfHt`s6{~5Aqq*3)MT$@qOafBIU^WmeWi%Oi7#dll8cGgX=Xq z{<08Kow3qnt2Ta&x!K+hw(+*V?gZvkt{VwBR4~x?QtxnZBN<~3NQ`C)(jG8l=^F)o zlBIMt5R*^j*ln}&Y;s{XUDqkI&_vtF3W;n-|I^NLAT6n+7sG@f->&yd(I5udAu5N^ zJ9ZT5%;boW%U3Yr^X&8_Ibb -sK($6jdk-U}HSgIb znX>ZbVDl4^Kf{xK)YkMDX-)~lhHy_a^U83=F9Srr8)j6bi)?EA^>mv$? T 4FSKr#@<>x?()PGLD!97iw2=d;FIx$3H~Z zEIEp=*e$)baq#~U`X%*c^fh;>khAM~UoE&)if6J>@-wdiqBpu{)l!nD^>zPd_qgY| zzO%B3L(k0^v*2OX=7+8L6+$NwL!YqTvD=5(f~~uOZE>gI_1`?6b94Wak&*AF={%*{ z{r`UQ=k+V 7#VGC_iPsw+lej z**{)$_L6Y6B;3Wn7xv0|&Uq$Vq<>|0#w0uVk)F1oem`=6`$YDD<@1t#6&@j29hOAY zg+q%d%@1JB;xy_PtM@yM8yzx^XqKbN2vhrYUgPtZDUxSIg!X_6?2Rs(LtLnqytA&L z1WgFDB1JI=w$rlaJEDrdD0_zBeeSZ5iwG{e9pkPbmeZmAcp*%?Z-t<&^3HP_BmO>g z+4i?hoDnCeLoa07 !8 VqkhsvS9Bb49eG3Tb?qFzh!ey(?&g#~mH z@)sn4Hjfl(q*NJcXAUPWUt3!^X*MQN7PK`kzQL}~Sx+5Gt|CHSyJ$Y!J{gZ^>eM8k z)8H0COp4hYIqb!V&5LBJUb8?F--;VrIH}5EtOw!-tI?_X&xkx~lNl=iqJjo45~AoB zyfUW*LMO4JmgBNfs?Kw^dTd_$*IvYxpMoJLYF)P@K~u4>69%S6iywJ=_G1x$#&M=b zI%A$bU-V_8m_D!ldZBem!kcPfcEZ+WIh7jRd4(S@5bXZ%_{o28>Ho%0{$GN_|1;(O zZ|E@BUrX-4Ecri%e Ur>eQn zztY41GWlnm_#YSk;Z*R~IGKsl-PPO@!u%h2F)!6$*89KW#s8T9>r!f$C-cgBBGQ z{%2Oy(#p)-!pzF*;7(zdS($xOMQz!0YF-f@we~f|`iXk@S|&?B>x<1C`ZlGT7;sB$ zW=o81`tv9Bz-EFclP|CRS|Op4sSBIDj(PI7;I699&LsCBDTunYpL}dsX=P=lv_>U@ zmi!m`4k2Fg_fi-WOv f@pK9Q5#(z}7|ICl`{9XNjUhx0Q zk8^YVpWM>_;a%`QFY&(_rV9x1{_~m|XMAxc 0zr;NQ;xpP$;6gcm&_@%
u(SgM8Du8Cf$ zVTZ+@QFr<`DqHQ2)R=7_Cs2~pXa9SxRip!4r?z3pl!<$`E?rAzj?qzKrfblW=QFK< zu7m6Hy&FjfeLIq%fuIkUT~D 2MysHXlX-z`D*5c`6EGddrkS=`D`Zc*6zl7Z!pBVUiqVNXyagA%=C!k*!%EaD{DK zkusbgnNvCYOJ2C{aTtI6CwtZw>)% =cHB~MM%0lFhDelP5R2R%Vbqq2(SAFHbd;9Jk;ICBSwgt zMfjI?F=uT=NEy;$!=xyCGi^PXpVh+a-elIe*Qf$`Z#2Zxi@7f~G^YXxe;0PxO~kH& zMzdM>rapYoVAR1e3T=f1H&(wi2#4(?VVHh|Ky`6^;sAW;6Qr_l{?NDe==BZwE#b&k z!sU4fuv-MlA_d!>c8E$|JVZmcNNe5*M;Tp84dsbPWu}Q3H 6 E}82kT;fbi}(ffXeU! )JO*BTU+=Tq@FEF% zRlW?kTKSsK?$Bn8qOT2pLPlX8NCrR3XFTvy7DjhU`QMeYLZv)t{Sclh8fE{$Z-qI( z`%9BAp!ng4$D7E#a=uh>X1IVvUWhcP(52I>8Q)i)Bavj2@>n=Wq{tEEB<12UNQ$xk z8oo|Um-aI K>AQaN %lJc0&mMUTU_RVyqx&G<9=i8~U;+AR b8Y*l`0t|7LKp`u-d}b^ zD6yOLLL4^E)p;%x4Sm16!#5|Jv6CFca=VE_B4-KX5 Pkx6c^t(ZR2jFB4l6QO?Crj&8>X zHUX>#;e>mp;YPu4G`a~aTSzq}SCjc#UqLz^R+qRz#21^f-wsa}CG(yP-6rv~U3NM> zr;k)g1uNzxU7mY79CVrux-EQPTPu|x{rm|yV88MtU7U{#l5RU!*4SrN6WgpANPpTa ze_hei)z-;iL_@!Hr~O_4?%c8CN0sl_Dc51fcO#xR&)6ZeCq_w-MUuBl1v@yvqedf9 zTX4}@n9;$hv)fb=qXJ_l5p1edq^J08DpeLUCTlbFP?k%3!k$3xOk8fQ%y>lO$~}JY zl#XaOi1KQ&U791UF+@-qDxwIoQ0wEKszDSA6u#tkqZa2b-xAa*(y#U;GKuy4h!3_} z<%l(id}*ZXVsY*#A5pqCkMh(pYp)MFXal-@UB6B|HEka;yyseF94nRo*zi_vKSqO% zwWVm8*cg{+R#GD1tSdwZbHuY=x*jR}Cg~zP#V*H%g5tB=2p(l@WS+bQ;qwBjs)=|S zrM*2xY;;LW(yv;=-M7AaD2P$7ktLU UK^d zI?rxvu~;2xGb>YFP7GwI(mat8!(JfmCY-NZf%wOp6vjWR>9wbTQmP+yNAN%H!aV0v z16cux4^)A_1%U$>Vq8P-kaRE`X#-quTx)7$r<}~s6 |5>(tgnJ<@m3!ITUKx`j>IpZK;E6t-pfbdbm%KT7G! zbeH5TM6qaPb>g42H$)!=rK@H0qWyIniGO4H=!6C}p nzO7qi0~(jnWP^nH#=K-42TZp$9}*fBgc0?@ 6$5@8VxF!b zMC&3!`cMP0a&gZ1ebR)qANK(`^_L?g`JOAmC}zKeh&%4OjF&6y2-#1jUM7$lT6*wg zvM4~~@G)4FAVQ=k>pHHV-EMM-SNhr)A0x4ZO3WI*>8(c#{V($^mMEL}@3m$p`pFxs z``ESLE-vcSN1|g{{N+EQ93+0bPMnFqi
qrSR_c7g z4Hfex`XU=P5`Arh_ZFU!|FVLmR_&*dI5G{rx+V4%SB18vhhFr}DlZzuD}G_$XQxKw zhpz%#t)WskmPXoN mKr zk@L)WhcQXl{7pxcy*%DqgDNp;lMEQCK(vzVKETo#_j4K-|1t(Utdg4oWoY`bCM83p z<^haCfr0U+CW$TNqY5K>V)R%8Qa)#V1A*dxDh16Vn?%D`2l?elFx3-I13R6-I|`lK zn}w 9sQH0@Lu8_>+2MdIvqyl;Y``zyFSr z*c3o%Bb{xI%mL$1H_*s~Su;O`jjSQm!oCv!ElSplL&JEpsjVjF>m6MQl%bcr+%LBqy;+ z5k?$=j*IXvI{G^DZlh=wSk zyhI!o5^wk-R}G+ Ym-OCXt`8M(Qz?fUSMpV31 1X1+ZOk+NWgP zkmb7~`!()j9ySzouui!0Ff2xdWl2mm+c5H@vwT5SrleTYOc8iYi5IA|XQl-bfxVB- zbPQMT1mZ`!?k4P00HWpu`zawfFr|nY{Pc8%*o&IH;_eXtD1S6 &6ApF ze~kP3!C=PUx*-F=C;Ht1#21a+ceQ#Gcy<#67+G3&7#Qp~r!uEc 4Kpw8aK{TW+Ug-QF4^kFSOGKyyk{_|&%peVtACca~AOcbkG0ehD z0&qo?GYw({xD&z5N(w^-kPL`(W 8?6H#kr9_u=+|VqXUT4r7DmK(V30VW8N^pb%i3$R{PV97txq%LT9m zCh%|#4FZ6h^Mmh+?@ 1m(fIBW%L4Y^6Dw*?3XkzdT_!JU)&U+z_ z SB6mDMz$|+K zT50*2#O#kP3}@;#>A_==qpDOq Z(17f!rE4gq4}J!ZD;3 zKZCvc;nB{P7^2K Ca%Va(oLB&tR``gokWpc&ZB&xB6zxRyL%!3TJqNS0s+? z04wtPCpp#RtBz9!V`AikdE;X4A^hqq3TteSjtsNe6%C ^vh-W$oSd+Kw$uW=c){R`>A~FtuHs8eDoR zKDAwWI?p#*Yzs@~yDsLtrp)M CQwz)9Su4Y#4Z zHp=&hBF{w-LYTOw1K*osy(71#HpNlmhz!|a-jI*qR%&x8b-c=PLRn=nSe4In13;Lk z=BiJ{rdE~$PM8dp9Xg||O;y)e^4wxtGczzW1VC$OQ&~&$cT0Kf<&Mlw*Ej|ql!5A; zka#;!!Ue(`s0M*XXGp8_RL@w0qS@7W!vV(CSc7c;agzQW;DoG=04`r9-Q#a%TO$s@ zeOdssLfY)CrgJg zSVM=AUNXlo4P7$DFATXc$7>LjvWZ#KXiSx|$xhEyL6Gds;SJ)7c_?R(E7{_CuprJ; zMwZf&T*o;rWI2{9dhj!9xrscikiX^67anVkZCjDb1AzEVdGJ+cRV_mm_#rG)85zvB zO2Vql<*8y2GDr?jMgd>bHLenA^b_uw_6sL`FuVr|%su80a8Cm9@eRxr^cry=4EIc4 z6bSsD9P)y6O$}v^d1ZwnUz`S_yduKHOT0s09Q96K)6ENClR>Yj*OZ`h(B{VAE8H~! zG#@(%aDN_Zg6xL@^M1T~ZvGkn+zc12Uwk=Gk$fMFeoeDWc>Uq^3N!%khgnn{(Perf zcpr>-pB+++_>}M>_PX?V^HP0%@-zT#z9|mrlZ?I$Lb|2{yIl$eNWfnUK`ndOU*35d zJ}1LEA1GIx?j+yvVR``fDBp;n%_j}E4Py%;@uBe{T!-9Bzdo 6#BB&Kt}S)*6aJl_`=+m%Nw`(Kx)_1)va!j!j^yY)|hK4iYO z76poDQ>=e;SDYUe_s25cEbk|B`1_T%`Qi7kcr4?mKk@0-k=F0$<-~ijjF;Wb=jV!y zqrGm$W{g8uT(cQZ{5XW#%inbl_gMbHd?^;aC?)T*L*`fy6>gVVeY^VQr1Q@4Y|YEo z0c%|(_~dgVts$g?)^KNgs %`h6f4 zE Av^Zp0tv zm&JBQK6+0YxYr-`mbE*FCW=$i2iw=iGr@=OI_dYPonM7tzj3!F?^@?o# ^+F|tvF9YpIYPb)yem}s!n!v4_YO3+h}FAHwlw9kCr3hEPHd+6e80cY !xqKEfJYTTC!ASQJbOW`#PI5R_P#FqFub=!1Ae(?A%Y8xU{E&k*}i`;fZOx)7F7 zmXN8?sSu@5rI5JLxDXsrBnT1o0QyiORzd{k0OK(s;2}-HqrpP}h@l9eAS%ifLMHSH zzyXpQyl^NP$cu_J1%Cp;3W*0E6(mmuNTE yI`;*b}V>tfI={52+Y0~8GBhYnLM5ex~!x)y;tfCd15_%QsE>`)VgM|NmD zh!aj6>zcIWI7AKMnFOW_8hGPJ03$A`4lP1>M1-Q26a$`tFvXI6(0e#>%xfZOIVc%U z9C(cl6@qe?AcrO)ki&}r`Tq4a1qXcwNg_U?La9ssg#1E$ &`gjnoN}It2lO@qB(U@e^@8tiz(1#U!6%Hr>7mhJ#2H^VtG)xEv?o$rm zk8|B}Cj -Qcc(;Y{Z!dK}($})h5T6R! zuQj-{ayt~=V%vY17Q?GH)G;LdmRFW5SilmP1~a8_2>|@AiA2Tnge6M%UQ+4tDSTvK zO;Wa}WIiUWut=92ABVl}krBh{nXj>$LcfnhUHWMQo(gJ3)F0=R&+)>?T|7^cE2$iO zVS051x@0Q9tB}$pYt{Jagb%;q;q5ub^cKfUX2(bpMqBL3jRvmb@x@y4yDC*`zn$VZ zm?}?=TU<=@YwBaenG$fdFw&QUh?^Sh?fbCC*B&bnU2z6=M-&T|?%qa`5M)jTI+trV zr?~5@xl0-A>9z0~>B6)xl@K{~ncZ1!Al?;uZKk?;eFDAT8Z>hIz4E_R6x{c3x;~z} z4HG7|E)xp=j$4Od2tRrAv8Yvn6aEx5^{tz2(3H!i*s+IAHfiLk_H0%`aCKK(6^Qi( zNZB3Aa7T#q#Mn1jKb1M+Nx5KmOGdac?1+}(UKBvP-q7r)Q<5(rKzZOCx|7qK!-fzZ zmg9>>e)HzW4 g#oh? zbR2o+6}f7uE-^uR5B8$dP>;0}6waWQVA?1hl3qQ>GF)y|#SNB7{-!6bzuoe-{vt=^ zJnj*}*E!r#@CER)2J9WD+Rqf>Z&H=4U#W+ 9>ktyL*@Pzvnk9wRGeVmnt-1AlQ-{Tyok37(QkWei6 z8%hF`i1NgO@VMeKq$SCtG6p3@95cF14vNWEVxRhl4TglNYX^+|ji&9k7J>-~S=~pT z%bHq0G>~g^$YNBJjJ(xM#C<-Gq2cspR)Z&o|7{;P3Afl4U;e5h^%jA7UqK0`k)|=G z0R{pKkho>|iFtLx+3;qPGV-Tbl)|YTNQuQHD6;Y0N>gGJ$fo%+%!9x7m9jhi_(T3N z2k@?Qhfm8Qd47h~bfqA_$W@o!j#6}C)%bfJX;EO%H}`4>e^OeXjf9S^8()E7Eie7$ z;(?2@xuM9m`kB1TUx{RDGtBc!chUC8s(t!PhR5%9A=+N)qIu!zl#?EAl&ho*D`a!h z9Um0q{%Y`5sRHFmhGw*jZuEYC7lkwhml2FD=lYTZ2|ayV5Iv>-mV->26Jh^qky%7w4ReA@Y^-Unp@4ti$;UZrJ*+_RpU$rjfJO5PT`ZN1ZyY^_Lf9+aKZ>?@ohG z({fW~Wz8?CTX1Bvn*qiGw33fWHIv&>RGrw*?SG{wr9r?OGr9MMSf7IWF?Lg{%vtfT zIJeSFdgx<&DB-hBFmS#m68DJh3-Pd2_e{{;<1F )QG0>cuXozeatXg6s)t~ zB(AHP0XLiwY~3tu{lJpzKzqIKKldbO-|*PM$4dCs?c%`ieUd!TRiDoS-4osJg*-0+ z&P?-u-if2;A+R6cfu^q(o-4M>f7Mhls@H1&hZa7}WoXs2!z;s)98-+fRRo#7p-kRA zrWL|b@0vhr`pk;vsKw2H`}oN*(wb2gok77e#rC}{8z>(kvF$3w@Em8f CyrY@2RldTB)rN0$Pzx|#(4Uu!AQghn$ciP55OO_S~9{$~KGMyj%t!viF z`f`yKJpK*V$%>g0@7b;NXPl*SIdpQxtgN1`F8Kzq5Afyw$oVp}r}eS@v#6TO{Wvdu zGofX}1o6t;N$yxS-rW-iRI>-MxK%%awR#GR<;)8CsyLL2v9;!CIe8xk7Oe%Sd227w zOP{CsJQ8r$nf5BCNL)qR8d*{l;)(o+(hw7!w9zQ?M=dqpKPlGgP90uQ_ZFiJqo0|G zJd`?Si-nLt^F0ErAjE}M0Ya1at~h_rmSHGiog%T$umxOovKWSPfVzZzMupWs)R3&+ zDj~0^B=083uO2mRMr500WuwdZlkyA6McLne1fBjtv`z@$#~52&Jt|!MJgaHbpXZX? zkeS%)Rz+g0Dh29GzmRCnOZ!=&ByvS ^#hFhmA6Iq6R1lko`Jl^-eRsEAFZ7= zJNMjNPn3w_x!Wj{Fy&)Ws3JV)UXP?kS&%I%?tT4-lxos5z>KlF??f1;Q_JbatN&A3 zs>(-TWTkbpJynB=XtOXxJ)9z1 i zI)Sksu@%cpGM{(cg_;fDT~()G%J=_bqkKmO!*HyK7b&dW_V8 gqbU@cM(=N$%M (4mqkBD_l*Or>-E8;S!vO?iEvh$d8NJ>rMpOI1jphArsY?-Qb08NQpWV0W;? zTp>EaJyT%i!-MGiWbm|6d;Vh=EEp`#sWl%V+8+h}^!U~&jEzehKWVBmmm* 5m~*>Cy1ER^BVlyz7T`@h2!HRbPlq#l3|5`|)2WZI zlyK(t!duC|fjjkybxGLfgz=?P+V#!WuMoLf!D_ 3=&5!E80PE{Du;C0T2T7E3q^o`s$1ZBLdYwd9-U?5< zsu8-44Pu(N@`cNhU>0&~$Jg^2De=kURnRoGJ{l*L$c !xbUZW|aEOzJle-H` zsa}eoAjk=;@ozJa>)LL;#5ja6ST3k;M0c2ORxC6568ns_Bz%Ujy!`4TD-`{9b!hS8 zY+9sT-|6GD*wCu$EX@nu+KZ#M=QE)H7{AH%p?^Y>#^RHb#iuxnJ3BOV<(O6F0{KgL zROL71QYjS?bZ=9d>kKt*6Q+ztlBq=)reb0qST)o#(jYnC8-Qxe$mz`Z^uU3XEoaea zP+(s )+ci55L;TxuX%>t~&CosX zHGuV3M~5u^%9||N?oaicO-}vY&(pyw7!!Zo+W3=lg7 8->Y5j~?VTy@m=L`6)nG+LAT1!d<_&TjMEh4o<%IQDhSa4pYv){x^suZ_Kj}>@mJ~xsh9-ghcaG5!e>oOpJf=%7Ue#IuL9ZBrJM~12alKANQc~* zfy%APpG23f>)GsPJNtnjjrmRfKg_NcV2kID+fRk~A1BgWT(;a!E{%R2od*i{Sp429 z-VB=ld%7K4&k5z7bHHg{H+plR)!EAaHxG`!U+Nz!5j+3b5uNBWMFmm$L50z3YyTlT zAJ&TRjVXC`R7wY2zOiuqvLPl?)#L7cR^x-p97!~qIbFVJk(hba;*KYakggT2QJ!yP zXlakOXlWY?kF?C(!)x1~Fvo0ztdFOA#cIEvel(GO%_@ms?G_X4JoIeZ;bQb^_xce0 zg7sO{+esNScz@T4^kgwo6M(HH|HD?#>-(PXaV9Z?#C)MRo&A)`LuLuHx>h_zHAN?b z?Hs++>_0S>rkp{a&7{oHE?6rS+ECUIs2`vcOE-k07(t)bnW3<*K@-~&5r8~HwhTj$ zp%Eg8fMm)-u4N%6B8sxw;*Elu+aCN1Cn#2KDMpH(XqWU5zre~G89(*ti0n
(JYytWI#n?HLdM<&QGc%S}}< zJ!0^ds`4ijI*u @rIW1i;F~M zWn%GlVVc)d6iB*!AG^my(j?dnydBY?9a!^+1l0jDQsC?cu;G8*E9u1QaisW$@y6bC z#mB`XcNV)5GvxC<@qdu9n>ai>8)1)XSFc*B5TXQErTvukrtaDTl&dUDs&c*cu9%Cv z{(&_k%{aPPW?({3sVifXQI0lQvy{#wN ^nI`Ec~P$9MR@9Z09K!o&Z~%3~(}d+#~(Evu_7Gl=;v* z+; 1!a58Y7V})fZ*3ifXd$%7f9J+gSvm&A?2?rS9vKmpF@aFn8Oc`+I7l9DhXm(} zD-?}sizM$caNVy0azy?a>*sgLqL1^6bnVn(C5A&}=$ikx0Jc!vQXjiHERm)QfWelG zAQ2U(A5%1Fe^j_j9st#LAV0TItmYi7p~ZY;oYUo0yc>ey@?Gn5Ts+hSL)|(_A#nCd zeWmmj#YVh!!BTxeQ>EoI(EqwW%^tx&d 4tW{ADrOeU(gEGb-ZgDHf`EAL7KJzeF9N?c}+M6FUvm{tk_0@L0q_(kio1t+HRhr zBTA)Ws)(R$T3(KufVVIH+vbB)vZgg45LVtw5nt7WKXMa)?zn&i3CCJQ6N)FBm`wlG zOXS!7&)}H^HzXEQ-aRZ=lZO^ECD`I`F;OQS0% 3B)*=XI)cB?(1ayJ@&d*1e_1zB<{aOylVJ*DLN~hXUDUAx`_FM1cX;&VV(_v zY;37M0XM}=gR?j>aHbyx52V3km3^oSo0c#d1kk}9qHERBO#p3!Wd|-q0}P-!v4CKY z?Sm9E$>6Y$HZ2l|iXj7K5PrR`t)rGZmkLQ71~rU#Ai2JyXSE*9Y-sLd`deF!SDk$M zM8TX;b_}}d`x)`c{U&pfG#K}?$Vo^eLvb?1P-;rdksK0eG7KhyN&&-TUZ(gL1;VN} zi^AwCz2_R^Oa tl1+v;YW2a8i!8;q45b6$i@;`=H`jqN&cIUvVP~S zNEZ1*O%s9xMd3|>8`L1_U<9hpiC+Xk(NX*f?a=7pnvhr*3dfqs31%Qw%!W;ASDwXl zbG85b6_0k$h&E@7`>?J?ois>=d6CI-K9f;^3U%bBTdmm=mCw#+T81&J6T52vSu$f| zpvLlKW ;S~tk>64WE! zSwR7vles_gJY9Kguu>3_69P(+_P=Nz33p4odYA~X(KGV1A=b3J1Ao`jakF@H!v)1e zFr)i?J1QT#`D-)yV?`jWB$sdpM#sPcck>wo_4}`E14f-d!$2pLDGE|Iz6y@BO6YlK zMH9&_xeb*QTl2;>1Z}hWjiI6Qi6ViOmyr#1^?Ztk5zzDsS#>~ZmEOwnD^sf}Ew`!t z%?~T1h M{D3h>l7A9>Q3E_(_!a>!ngVDPIh8PUe zof47QOy)8fwA#L>YM!#WmUoBYe=dXb(>}72oDxmlO{_jxl)_6{hBxfq;-9I%j2C?B z&jj|Ki!CJTUVd@b SHw?DVV@;Dj%yr3j3D_IiOA!i0%Jm!PiW!|MSK z8lU}q^}ehtM%B#YQl3;yPUoNfudcgHS5c!o|6>?mMVka0UU MVJV0G5rM7v?m3NAY{cVr`^!{DbKDnl+wVOyS_ i1F^tfSs`2 _AqwJ-ieVa$%J?(yqQZkkM64FF4Xx;gP_y(3@2ZS@WB+TlGWXF_$t6! z{bz{+YN(MQf{ic8Kh_-?`~cnE$WDBTFK>#7^G4TZ;rpir ac%06UWtu<;{W8WlFbLHH*qr>+ze8Gt24i)Ge@CFI9g29dD2>)2hljQ+Aq+ zt92G~c~e#j7@EdiL!}GtnaS@F!?f$)vqe)<8{HcgZI{LUY!#GYLw{wmkE>&E0DoR7 z2tNLG@Ja@m5^%-~J<~~C#z{7b$ZNvBmD|f{yL#Tg6{cmX1v8aU7 8a7eVHOm5sI7i^aOMZx#y$F7ut;E8vgo#86;j3OQ&nnVl zqD&%bAtt>&0yD(tvu?d@=8Yb*l7FV{v6qvySybcP#mKvVjQU*qWGKa%5~8ftT2#zv z(`80~YEZ&UUIXa!KbfSl@_hn K1fwfsNx#cf(= z{~}*_%l=JEF7LTixgxK0 $Z+EP`wv zZoD;*U`rL?WO%P21z^wuU_a{5T&vj_19TVI?t}w49S;tr>5Q4(6g(-2or1%8VQM?$ z(qrt75-&mk3qz77CuYDm`@^6{rf|{;t56XoET&J#xMUWxiJpesS2oGta4@~ekTfr^ zjrc7Ge;Q_cR)drK;>_*rFbh@5;)D4)W`n7v07IGA`>};qiELhGB*B+ihVR+V* |RD`r$_tG=ABu^rK=hx1ndFKH-LG z+|IGhVpk^C`dRqdG&=T6m%M%o)B~OJRf>UFeStH*RE%*-+MUhJGp*(?{jK5!ENM@N z5UHE$v+KjS@8zq7cg -t&(AkoMN`-SK({wi;sWWoAl=wu}J^I@8fpy9ZC z`DB>M7mDgSJ}zLvxf|NDzM;3LvW+GdM{QPW)FjMMLqJ%z%6dYi)AqzR3{nIdxM^is z^7oU!#sbsC!CVxobHCW%0s^mHOQr!xC1aK5g(NG5i>R}ZyI rq7Q^-6`CEx{stNvt<3HuD-$*uHygDYTQ+R>vCAb_d%_@JM6z-b}P *E68yotxt3Yg;Y@%JEAGdj_jBr)7vi0?so-WqL^!5%Mu**m%FWN5LsX=P z|BZ~AR?dv{w6hoSW3j)h314S59)=EdWQM`RnDyP~dyV!$;gI)H`!V4w1Kkf`r2+f8 zLnz4djAe}td8s*N>cRMI@?^oj`5Do;;#Bn~943u7?GnQ}-{fnYqR5A29izbc ZBiYqkRM65!$z@M}=25K&$Wi9S zdii^Lc%XlE^cq_Pt?7fz3~=6ggRy_j@GV%c+<{w@a#MpzHpf4PmR9l^K!rgp<_!Lt zlw7;Im8iy*u@J_(?5zeJ2cSetoYzMG-eZ+JK<(izj?cA!X5q*ul2Uvg*_0(wPN;YJ z#Wn`uCXcZuiP8=0io!VU9dA0%BWe3T?_tj3vpd(Hv?S{cf#CdDcn?%-u&$7WqSySK zl;i&@@Pi$uSd9rdzTvT>OKk I?{9+0tuMW3?S(;EEcG_6_dXyTj zN;Fuun(Ff1H)NUtYC3lme6~BApQQL?2HYOhXDlFgd8|B7!=u$aVk|+nVLW9vj3_H6 zlr@*vyw`M{*6t@lAFai9279392|1JtEJr9*?V>ZR7Gb1y> m@B69oOOECo~Dl4q!<#|(BDm(+$P6YGpDQllLibM$`v;& z&BK_r7FBmt&W3&3cIUntf-dW2+q2cI)^vEG-RiHr^|ZYvnNNCwIMQjgluW{yP)cmH zW;I&OVb_!Z&bCR!UeKB@@w9uGrGw2h3k)#5^4X#ju#-3y#gYFVXprAX?1<~_DC_Nr z&k->-+h#ZmZ_*+{gn4dWDH)0gof2u!w7Dp*2187o&>*oWZeH;x{r0xUTm}M0?^H3_ z2Xs-6i9TP^;pvf%Jxb^nHdYY`ami3ywFE6iZq7JwI7v(sg`eZq;_rVGsJPK9V9?j5 z!^t% WWcE_UMIF^IdE5uTV#uu>4X zgso@KZRN3TV$iJom^ZM9q>O$|OLMfnB8P_p(-$4ZOBf}xnwoi1xR8()`nCqh7b%hk zG7KD$lU4$!n}he#n3lA?=te3M?oxHkUeXrLo5s~yOYHRzE1qqAgcKG>D;P1F`he)q z(m98?!062e0G}`sv7xaa*lEsOa|N>P@b?kV2m(t@8OE5)k18V&_Cdfuh392#ghF5N zL)XPq2u4A{>msv5?nw8aM4;{Poy4jfIg$MCF&tq}S+({ulG0%%AEbbar%1B3y BEMVu0LcHx4Gwsgs4X)y$R8YFp=*_rA@e_0*QeA;)wLD+DTrcvpeoLo? zmr=qRnw *YGPn%VRttE20 zW?%%dcjQyYr9`gTCv0&+#>-inO8X_VYA$2-fNXln^cuh@1ri#yeP6nM<+tDWHG5{Q zk(@?4_Z=c6I;U(QP>hEspMcgsoTDH>!%BZgZQy;7m-DGaVBiQ8%la)^fXLgRh<2&r zrG){CJwS%$UtqoaE95EHd?yw(rB;R~I=ZuqDRwBXn{m1EZw?0M%M{^N5uVNFh_k6D z4ejTPl1oWh?-6CZ8l7yHu{-cgOh13OLQ~+wQ93qOio3sHOdbBBgD1(oQ?U9|qi&R^ zoevGwlv(H6sPN1EF*{j8O``e}H(`B@s~)4!3;qtvZ!{UfajK2|;p6uJ{} zImxUNPc8lvn}DI=#>^C<*VNyieC+pM@xZ^~=R>j%0SFVJ^Di+nL CJYMUR{pL_ z0MbKUb~a=PiC!|P1Z fYy&yOaZ$F}`P70#NHE&=O*gIpqVaFF(QLh7z_is+A> z>@dax^cdr1l*{N2xkG$0m0nmqm=2sN+~f-#4qn}wDSXM^(j=rVUfA2QLevryue7XD z#HV(zlH%WB^i9GgpZD7KQ3A#ErmsWn4e23AJYcxz;4RW4UusnfcbVc6??qV4Az-;W z>309FQr2`eO?=_XM~f{hAyg1>Xa?i(qJeD(V+gsi?)FVlrjz#2Vl2$ z?i%)_`PMB7ILiQ@PyuEAbrbW!QDI-Ah}Kyfq$EWKxA7(snZZ;3(&L*ow?GtG?KP)g zJlOp*v}G*2b?aKHr*_h2m;@>fqSGBmCIpYaNHH*^{U^<4Bz5xhez&;CtP+deOfnbj zqK;M=vcG2+zUIHZrK0NS2d4<$Q{J<|C@Kl-0C7FjJF572g19Ao7<#(#Jn0}QXpM*@ zp|{9Q&qbiidh?RV_>5m*w{iPqON{Ug+ri$tyZp}n@soYEX@WwEh$uI!4fPD$$vBuZ zM6&g$4Rww0sjxN?pE|pX$xv1epLrj{lrJG}6nku$DwQ|Qo{4igwyQ&DRfo6*dcqEj z@n?zyVZa5%tpQ-f^18@FlYx?_j*el}Sq2RjFQMp@Mh1b6z4ah+5M3CV$T?S%5E92+ zn#XcF{Z$FF4MMR1GTak=SF50=32%zCpt3418^Z5;N=$9P69k39<~aPIOdFeNebP7D z!8n<*yBN|>>wcOqtrz_2j+LVP*s7qfqUM;uWY%MHF6L3vlVIG1R%5D9n3-TC=^4Rf zb~t}Lc>|4*o~CRP?_~ed((TkV`L}EEiW4A2dw`5# 6>5PL&rS~dJ=ufNg@y8|>o zq4%Q2i5F(CpTNm_+$U{UFcd}@3;~3yWWZvlYreUvBs6&5|IM5-JYRekJ0*ZU5Bf`Q zL@qfFOhvYT%}5hnZ^q02d#{L)gmUkcExNXdO%~CbW7 |7UuDiV{AmKA;EYE(QYeaxENP#$ iC@}{X z(XR4lKo$*ZDgk0zmbGaT5$Y0)7+Wm4Rd~Fphgiu5+o2vMXV r$>f(+O~qGQFj*4sBO+J%2v;@Lx;NGYIS41X4F zN%?h)YS}=G7#q`>X2O^lX &3uJoh%BmF|puYn~CndS}z;*No5PL22 zCQ6pw2)3n9T=yD`(pVo$Mg$GNKEzrw1E~q|aur4qP41HZ!zK M4f`tBQO>TzFCLcU5i8F#7(J5$z?sm zby9k^sny9B)HD%ed42U0P19H{lp}dv(>ltkyYA9ua$&+y8qaQk{`~mBxjX6$KD}UX zHu#XMwG{8r&=-W8zu)WY4KKxm7}T*SGCPEFfbRu~8%~fUHgSRk;X}z*u}`*UA<2{K zT|T%(o>)lc#Wc*@fL$c_kTZ(5?MwOy 5yFbRyYwi?X* zp5kYd&$NV^#gEHdm5U6_LipK^U8YvC8*fbWHh6cH2>r%r2z%NrO&{e4-NiirJ5n)~ ziiA(BI{QcSrANNuVL>k~{5 zk zi^|F`sAwA2@{-2XY3_g}A%e(v?~;&F*mDq{1lt2L!E82@?}V!Yy5K>V9x;DH48(En zQb-^&XULuMO>&2mB{l&X`1Mej?kT)Ub;!CK5P}Am@(4Dx0dGL=65tC*rQ`AbVjFs2 zKfm|N=V(A|ZmElmo=rAe=zacG8F!-d2L5fC3(*dozUZ3F9yN+AEj38Nb7Cafk7YG( zyz6i$F7~vUbD&m>a_n26R*Yi)3s$M|x pa0j0Wz-o|9mEk^4|BXml~F%u*@Xe$jUgnFI{gN`BXEm&TJnp>*lDY?p%Kt33&J zq~F0;$7c9NlHra2C2uM*4D|$wDqV$7dsYnJ%*bqa5de#21wl=hIy*9c?c?zeQ;z0| zdH;+HmC>^&6GR404E&kQP#z)3P2v0FY}NuoKRN~Xo6GHwX+k+)Ku zXbTr5Ljn(3B&kPyqV^QGqjdqFH%Y$c>TtYSNwikkyr9djW@fiCep?{HRDp*C){ldG z^8iW6DX~e+6C+K`q`lT4EIOv8w_lf-kTQ=Gp0$P1PDq?W9Kq2TH%g`z@IRYCCuvw4 z{L!Q<(g6qY%)7k&6Zdj-=5fn&xZ+zynfIdWx^MVk*b#xM^^37z(T>LG4I?W`$r=$| zUBi0^g_t&G;wZlMM!nx3&Bu=UY0mc 81t>>r*mhQe^ zbKIe 4%+EzGn&Ax>1tIjmi3LGjK$CfX7WTeM-z-%gr#3dYE@gu zB={sND^vT_k5}H@D`bjJ5mh3AmrokI)$4W-YU_-Q5H5U*+lt(oDnBpZbwX)byIL}M zt3R4ZnPA1A(3_wyYi;6ST}fu~dFjV!6Ym@AtN9@AK3P(^<(er6fnHR`=Sa&2d-5Xi z%6u4gA>cviDR5eRik$mmoC7}hG>fb@krz(;Fe`^dU+;b9_gDB3-yeNOgH8}NVX z&X?4yG?gk+E9KS+VQ0h0=zd@9Sy^}(zN1t7xjf0b+z&yv`-LNto ow&TT$GrK4^%etUxm!w?ZV$nOf`5 zO)sBbu5$+P4^QaIl{_akCJkB;l4y7{NV%xI><3kIT6k44(V~-<<^@L#9=A-|9#U19 ztCn`=>0~2K zr@oxY`(dB$Sr*NiF?T?ThYX`Qvi1q}e TJ zo4Y5Jmo2oO*N_`bEanL6k65D2uQX1S^w>>soWI?lap_>FsLSJ*LvI=6>G<_4-`!?W zN4h#oDvk;OX5JI8G#@F41a*GfR9|#8lH#bf_V9Ro?-#u-`zn+mebRL7ls5xMc!5NL z_Xry-`-jbeY%b>;$~bBNyjw* 1fEnt=J)VDIu(=!%0AJrET*L4#|IB-p6Js7ZIbg2)M zN4cvgnP1&+W)kE?E3j$N M7kr)m*(%`fH0ojCjAkK U*u6$0`|yD^;&`lFn_;AGC@$64LD)ZR5@>{l{EEv{5Z)>9zk3 zIb5T)lxd=peC>4>VueaoJxkUL{l;^p<>siUl->QZ<=&*yrD8!*Rw%DwJ|(Y4Ay$MS zPoxJ9HwI{k58zKlK I@gMgg{2|LH*ebF8XdqT&A>HcY TOd8UG^)1^|g-PO7I<>Dj3m&T8I@pI>76Ai_~qmiJq z)pbyEa_zAvBQt~PJ+Y#WV@~m)sx;@Wq2| l+vybk3ErxAl zW;13n=FkGmcXT%m*vzf`Yl`%5{1)O*#L!XBN)C<8#i*;fekDReVge($lf2|myICYd z07;+xSQ{r55p;wY={TO!(B G}t%1Y|QA zB(+5P&h|y2W7y{HA5o*1;3>>@iU^OF=d?R7<_M;k1U2jhgCWpPXOaxZbkT=;*Ms@i zu5u6C3tbmv%@y~Nc=KnTBUigA3deESBa(`#eP`7N$#BjXgRlD6PgOd_wRStcgW_q5 zw-48J5qeJcZv?wyDs7uayJAi4w1d$xa