From 5e276c92ac5d0539ca1afea295414b3a53d97f6f Mon Sep 17 00:00:00 2001 From: Brock Mendel Date: Wed, 6 Sep 2017 21:00:01 -0700 Subject: [PATCH 01/15] Lock down kwargs in offsets signatures --- pandas/tseries/offsets.py | 45 +++++++++++++++++---------------------- 1 file changed, 20 insertions(+), 25 deletions(-) diff --git a/pandas/tseries/offsets.py b/pandas/tseries/offsets.py index 7ccecaa84e6d6..53d1ba60c3829 100644 --- a/pandas/tseries/offsets.py +++ b/pandas/tseries/offsets.py @@ -1571,10 +1571,10 @@ class Week(DateOffset): """ _adjust_dst = True - def __init__(self, n=1, normalize=False, **kwds): + def __init__(self, n=1, normalize=False, weekday=None): self.n = n self.normalize = normalize - self.weekday = kwds.get('weekday', None) + self.weekday = weekday if self.weekday is not None: if self.weekday < 0 or self.weekday > 6: @@ -1582,7 +1582,7 @@ def __init__(self, n=1, normalize=False, **kwds): .format(day=self.weekday)) self._inc = timedelta(weeks=1) - self.kwds = kwds + self.kwds = {'weekday': weekday} def isAnchored(self): return (self.n == 1 and self.weekday is not None) @@ -1674,9 +1674,9 @@ class WeekOfMonth(DateOffset): Parameters ---------- n : int - week : {0, 1, 2, 3, ...} + week : {0, 1, 2, 3, ...}, default None 0 is 1st week of month, 1 2nd week, etc. - weekday : {0, 1, ..., 6} + weekday : {0, 1, ..., 6}, default None 0: Mondays 1: Tuesdays 2: Wednesdays @@ -1688,11 +1688,11 @@ class WeekOfMonth(DateOffset): _adjust_dst = True - def __init__(self, n=1, normalize=False, **kwds): + def __init__(self, n=1, normalize=False, week=None, weekday=None): self.n = n self.normalize = normalize - self.weekday = kwds['weekday'] - self.week = kwds['week'] + self.weekday = weekday + self.week = week if self.n == 0: raise ValueError('N cannot be 0') @@ -1704,7 +1704,7 @@ def __init__(self, n=1, normalize=False, **kwds): raise ValueError('Week must be 0<=week<=3, got {week}' .format(week=self.week)) - self.kwds = kwds + self.kwds = {'weekday': weekday, 'week': week} @apply_wraps def apply(self, other): @@ -1774,8 +1774,8 @@ class LastWeekOfMonth(DateOffset): Parameters ---------- - n : int - weekday : {0, 1, ..., 6} + n : int, default 1 + weekday : {0, 1, ..., 6}, default None 0: Mondays 1: Tuesdays 2: Wednesdays @@ -1783,12 +1783,13 @@ class LastWeekOfMonth(DateOffset): 4: Fridays 5: Saturdays 6: Sundays + """ - def __init__(self, n=1, normalize=False, **kwds): + def __init__(self, n=1, normalize=False, weekday=None): self.n = n self.normalize = normalize - self.weekday = kwds['weekday'] + self.weekday = weekday if self.n == 0: raise ValueError('N cannot be 0') @@ -1797,7 +1798,7 @@ def __init__(self, n=1, normalize=False, **kwds): raise ValueError('Day must be 0<=day<=6, got {day}' .format(day=self.weekday)) - self.kwds = kwds + self.kwds = {'weekday': weekday} @apply_wraps def apply(self, other): @@ -1861,13 +1862,14 @@ class QuarterOffset(DateOffset): # TODO: Consider combining QuarterOffset and YearOffset __init__ at some # point - def __init__(self, n=1, normalize=False, **kwds): + def __init__(self, n=1, normalize=False, startingMonth=None): self.n = n self.normalize = normalize - self.startingMonth = kwds.get('startingMonth', - self._default_startingMonth) + if startingMonth is None: + startingMonth = self._default_startingMonth + self.startingMonth = startingMonth - self.kwds = kwds + self.kwds = {'startingMonth': startingMonth} def isAnchored(self): return (self.n == 1 and self.startingMonth is not None) @@ -1985,13 +1987,6 @@ class QuarterEnd(QuarterOffset): _default_startingMonth = 3 _prefix = 'Q' - def __init__(self, n=1, normalize=False, **kwds): - self.n = n - self.normalize = normalize - self.startingMonth = kwds.get('startingMonth', 3) - - self.kwds = kwds - def isAnchored(self): return (self.n == 1 and self.startingMonth is not None) From 0183e500df636f11faa913eaea9e675792104755 Mon Sep 17 00:00:00 2001 From: Brock Mendel Date: Thu, 7 Sep 2017 07:57:37 -0700 Subject: [PATCH 02/15] whatsnew note --- doc/source/whatsnew/v0.21.0.txt | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/doc/source/whatsnew/v0.21.0.txt b/doc/source/whatsnew/v0.21.0.txt index 636bb2dc3e60e..a64ab2e8b1a29 100644 --- a/doc/source/whatsnew/v0.21.0.txt +++ b/doc/source/whatsnew/v0.21.0.txt @@ -328,6 +328,13 @@ Previously, :func:`to_datetime` did not localize datetime ``Series`` data when ` Additionally, DataFrames with datetime columns that were parsed by :func:`read_sql_table` and :func:`read_sql_query` will also be localized to UTC only if the original SQL columns were timezone aware datetime columns. +.. _whatsnew_0210.api.restricting_dateoffset_keywords + +Restricting DateOffset Keywords +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Previously, ``DateOffset`` subclasses allowed arbitrary keyword arguments which could lead to unexpected behavior. Now, subclasses :class:`Week`, :class:`WeekOfMonth`, :class:`LastWeekOfMonth`, :class:`QuarterOffset`, :class:`QuarterEnd`, :class:`QuarterBegin`, :class:`BQuarterEnd`, and :class:`BQuarterBegin`, will allow only specific arguments. (:issue:`17176`). + .. _whatsnew_0210.api: Other API Changes From ed78a4ac66ba7110a109ea7ad8d4a9ab8ab36eb7 Mon Sep 17 00:00:00 2001 From: Brock Mendel Date: Sat, 23 Sep 2017 19:15:25 -0700 Subject: [PATCH 03/15] restrict YearOffset to month kwarg --- pandas/tseries/offsets.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/pandas/tseries/offsets.py b/pandas/tseries/offsets.py index b0317dd178701..2796b8688cf5e 100644 --- a/pandas/tseries/offsets.py +++ b/pandas/tseries/offsets.py @@ -2019,12 +2019,14 @@ class YearOffset(DateOffset): """DateOffset that just needs a month""" _adjust_dst = True - def __init__(self, n=1, normalize=False, **kwds): - self.month = kwds.get('month', self._default_month) + def __init__(self, n=1, normalize=False, month=None): + month = month if month is not None else self._default_month + self.month = month if self.month < 1 or self.month > 12: raise ValueError('Month must go from 1 to 12') + kwds = {'month': month} DateOffset.__init__(self, n=n, normalize=normalize, **kwds) @classmethod From 36290d2c43c0020068143842704bee2ac39fdedb Mon Sep 17 00:00:00 2001 From: Brock Mendel Date: Sat, 23 Sep 2017 19:17:54 -0700 Subject: [PATCH 04/15] Restrict SemiMonthOffset kwargs to day_of_month --- pandas/tseries/offsets.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/pandas/tseries/offsets.py b/pandas/tseries/offsets.py index 2796b8688cf5e..b2da554dbaf80 100644 --- a/pandas/tseries/offsets.py +++ b/pandas/tseries/offsets.py @@ -1121,7 +1121,7 @@ class SemiMonthOffset(DateOffset): _default_day_of_month = 15 _min_day_of_month = 2 - def __init__(self, n=1, day_of_month=None, normalize=False, **kwds): + def __init__(self, n=1, normalize=False, day_of_month=None): if day_of_month is None: self.day_of_month = self._default_day_of_month else: @@ -1132,8 +1132,7 @@ def __init__(self, n=1, day_of_month=None, normalize=False, **kwds): day=self.day_of_month)) self.n = int(n) self.normalize = normalize - self.kwds = kwds - self.kwds['day_of_month'] = self.day_of_month + self.kwds = {'day_of_month': self.day_of_month} @classmethod def _from_name(cls, suffix=None): From 4443d6cde79a648506afdc016b34f184f855c7b9 Mon Sep 17 00:00:00 2001 From: Brock Mendel Date: Sat, 23 Sep 2017 19:24:03 -0700 Subject: [PATCH 05/15] Lock down kwargs in FY5253 and FY5253Quarter --- pandas/tseries/offsets.py | 31 +++++++++++++++++++------------ 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/pandas/tseries/offsets.py b/pandas/tseries/offsets.py index b2da554dbaf80..4476300e1e01f 100644 --- a/pandas/tseries/offsets.py +++ b/pandas/tseries/offsets.py @@ -2265,15 +2265,17 @@ class FY5253(DateOffset): _suffix_prefix_nearest = 'N' _adjust_dst = True - def __init__(self, n=1, normalize=False, **kwds): + def __init__(self, n=1, normalize=False, weekday=0, startingMonth=1, + variation="nearest"): self.n = n self.normalize = normalize - self.startingMonth = kwds['startingMonth'] - self.weekday = kwds["weekday"] + self.startingMonth = startingMonth + self.weekday = weekday - self.variation = kwds["variation"] + self.variation = variation - self.kwds = kwds + self.kwds = {'weekday': weekday, 'startingMonth': startingMonth, + 'variation': variation} if self.n == 0: raise ValueError('N cannot be 0') @@ -2513,24 +2515,29 @@ class FY5253Quarter(DateOffset): _prefix = 'REQ' _adjust_dst = True - def __init__(self, n=1, normalize=False, **kwds): + def __init__(self, n=1, normalize=False, weekday=0, startingMonth=1, + qtr_with_extra_week=1, variation="nearest"): self.n = n self.normalize = normalize - self.qtr_with_extra_week = kwds["qtr_with_extra_week"] + self.weekday = weekday + self.startingMonth = startingMonth + self.qtr_with_extra_week = qtr_with_extra_week + self.variation = variation - self.kwds = kwds + self.kwds = {'weekday': weekday, 'startingMonth': startingMonth, + 'qtr_with_extra_week': qtr_with_extra_week, + 'variation': variation} if self.n == 0: raise ValueError('N cannot be 0') @cache_readonly def _offset(self): - kwds = self.kwds return FY5253( - startingMonth=kwds['startingMonth'], - weekday=kwds["weekday"], - variation=kwds["variation"]) + startingMonth=self.startingMonth, + weekday=self.weekday, + variation=self.variation) def isAnchored(self): return self.n == 1 and self._offset.isAnchored() From 8cb6b6600a72e889d06a229229743280470d22b2 Mon Sep 17 00:00:00 2001 From: Brock Mendel Date: Sat, 23 Sep 2017 19:27:57 -0700 Subject: [PATCH 06/15] lock down kwargs in BusinessDay, CustomBusinessMonthEnd --- pandas/tseries/offsets.py | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/pandas/tseries/offsets.py b/pandas/tseries/offsets.py index 4476300e1e01f..6b855c2beb966 100644 --- a/pandas/tseries/offsets.py +++ b/pandas/tseries/offsets.py @@ -598,11 +598,11 @@ class BusinessDay(BusinessMixin, SingleConstructorOffset): _prefix = 'B' _adjust_dst = True - def __init__(self, n=1, normalize=False, **kwds): + def __init__(self, n=1, normalize=False, offset=timedelta(0)): self.n = int(n) self.normalize = normalize - self.kwds = kwds - self._offset = kwds.get('offset', timedelta(0)) + self.kwds = {'offset': offset} + self._offset = offset def _offset_str(self): def get_str(td): @@ -1407,11 +1407,10 @@ class CustomBusinessMonthEnd(BusinessMixin, MonthOffset): _prefix = 'CBM' def __init__(self, n=1, normalize=False, weekmask='Mon Tue Wed Thu Fri', - holidays=None, calendar=None, **kwds): + holidays=None, calendar=None, offset=timedelta(0)): self.n = int(n) self.normalize = normalize - self.kwds = kwds - self._offset = kwds.get('offset', timedelta(0)) + self._offset = offset calendar, holidays = _get_calendar(weekmask=weekmask, holidays=holidays, @@ -1419,6 +1418,7 @@ def __init__(self, n=1, normalize=False, weekmask='Mon Tue Wed Thu Fri', self.kwds['weekmask'] = self.weekmask = weekmask self.kwds['holidays'] = self.holidays = holidays self.kwds['calendar'] = self.calendar = calendar + self.kwds['offset'] = offset @cache_readonly def cbday(self): @@ -1477,20 +1477,20 @@ class CustomBusinessMonthBegin(BusinessMixin, MonthOffset): _prefix = 'CBMS' def __init__(self, n=1, normalize=False, weekmask='Mon Tue Wed Thu Fri', - holidays=None, calendar=None, **kwds): + holidays=None, calendar=None, offset=timedelta(0)): self.n = int(n) self.normalize = normalize - self.kwds = kwds - self._offset = kwds.get('offset', timedelta(0)) + self._offset = offset # _get_calendar does validation and possible transformation # of calendar and holidays. calendar, holidays = _get_calendar(weekmask=weekmask, holidays=holidays, calendar=calendar) - kwds['calendar'] = self.calendar = calendar - kwds['weekmask'] = self.weekmask = weekmask - kwds['holidays'] = self.holidays = holidays + self.kwds['calendar'] = self.calendar = calendar + self.kwds['weekmask'] = self.weekmask = weekmask + self.kwds['holidays'] = self.holidays = holidays + self.kwds['offset'] = offset @cache_readonly def cbday(self): From fe7bb56c29c1885aaf826bf346aa49a5b819c1eb Mon Sep 17 00:00:00 2001 From: Brock Mendel Date: Sat, 23 Sep 2017 19:37:55 -0700 Subject: [PATCH 07/15] Lockdown kwargs in remaining DateOffset subclasses --- pandas/tseries/offsets.py | 31 ++++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/pandas/tseries/offsets.py b/pandas/tseries/offsets.py index 6b855c2beb966..8361b6b98b405 100644 --- a/pandas/tseries/offsets.py +++ b/pandas/tseries/offsets.py @@ -693,14 +693,13 @@ def onOffset(self, dt): class BusinessHourMixin(BusinessMixin): - def __init__(self, **kwds): + def __init__(self, start='09:00', end='17:00', offset=timedelta(0)): # must be validated here to equality check - kwds['start'] = self._validate_time(kwds.get('start', '09:00')) - kwds['end'] = self._validate_time(kwds.get('end', '17:00')) + kwds = {'offset': offset} + self.start = kwds['start'] = self._validate_time(start) + self.end = kwds['end'] = self._validate_time(end) self.kwds = kwds - self._offset = kwds.get('offset', timedelta(0)) - self.start = kwds.get('start', '09:00') - self.end = kwds.get('end', '17:00') + self._offset = offset def _validate_time(self, t_input): from datetime import time as dt_time @@ -923,10 +922,11 @@ class BusinessHour(BusinessHourMixin, SingleConstructorOffset): _prefix = 'BH' _anchor = 0 - def __init__(self, n=1, normalize=False, **kwds): + def __init__(self, n=1, normalize=False, start='09:00', + end='17:00', offset=timedelta(0)): self.n = int(n) self.normalize = normalize - super(BusinessHour, self).__init__(**kwds) + super(BusinessHour, self).__init__(start=start, end=end, offset=offset) @cache_readonly def next_bday(self): @@ -960,11 +960,10 @@ class CustomBusinessDay(BusinessDay): _prefix = 'C' def __init__(self, n=1, normalize=False, weekmask='Mon Tue Wed Thu Fri', - holidays=None, calendar=None, **kwds): + holidays=None, calendar=None, offset=timedelta(0)): self.n = int(n) self.normalize = normalize - self.kwds = kwds - self._offset = kwds.get('offset', timedelta(0)) + self._offset = offset calendar, holidays = _get_calendar(weekmask=weekmask, holidays=holidays, @@ -976,6 +975,7 @@ def __init__(self, n=1, normalize=False, weekmask='Mon Tue Wed Thu Fri', self.kwds['weekmask'] = self.weekmask = weekmask self.kwds['holidays'] = self.holidays = holidays self.kwds['calendar'] = self.calendar = calendar + self.kwds['offset'] = offset @apply_wraps def apply(self, other): @@ -1026,10 +1026,12 @@ class CustomBusinessHour(BusinessHourMixin, SingleConstructorOffset): _anchor = 0 def __init__(self, n=1, normalize=False, weekmask='Mon Tue Wed Thu Fri', - holidays=None, calendar=None, **kwds): + holidays=None, calendar=None, + start='09:00', end='17:00', offset=timedelta(0)): self.n = int(n) self.normalize = normalize - super(CustomBusinessHour, self).__init__(**kwds) + super(CustomBusinessHour, self).__init__(start=start, + end=end, offset=offset) calendar, holidays = _get_calendar(weekmask=weekmask, holidays=holidays, @@ -2025,8 +2027,7 @@ def __init__(self, n=1, normalize=False, month=None): if self.month < 1 or self.month > 12: raise ValueError('Month must go from 1 to 12') - kwds = {'month': month} - DateOffset.__init__(self, n=n, normalize=normalize, **kwds) + DateOffset.__init__(self, n=n, normalize=normalize, month=month) @classmethod def _from_name(cls, suffix=None): From 3daab6641cec3e418b4ea942bfb12f26e7cbc797 Mon Sep 17 00:00:00 2001 From: Brock Mendel Date: Sat, 23 Sep 2017 20:31:00 -0700 Subject: [PATCH 08/15] Briefer WhatsNew, add missing kwds attrs --- doc/source/whatsnew/v0.21.0.txt | 2 +- pandas/tseries/offsets.py | 8 ++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/doc/source/whatsnew/v0.21.0.txt b/doc/source/whatsnew/v0.21.0.txt index 468a71d3492ce..4086dbc44a293 100644 --- a/doc/source/whatsnew/v0.21.0.txt +++ b/doc/source/whatsnew/v0.21.0.txt @@ -392,7 +392,7 @@ Additionally, DataFrames with datetime columns that were parsed by :func:`read_s Restricting DateOffset Keywords ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -Previously, ``DateOffset`` subclasses allowed arbitrary keyword arguments which could lead to unexpected behavior. Now, subclasses :class:`Week`, :class:`WeekOfMonth`, :class:`LastWeekOfMonth`, :class:`QuarterOffset`, :class:`QuarterEnd`, :class:`QuarterBegin`, :class:`BQuarterEnd`, and :class:`BQuarterBegin`, will allow only specific arguments. (:issue:`17176`). +Previously, ``DateOffset`` subclasses allowed arbitrary keyword arguments which could lead to unexpected behavior. Now, only valid arguments will be accepted. (:issue:`17176`). .. _whatsnew_0210.api.consistency_of_range_functions: diff --git a/pandas/tseries/offsets.py b/pandas/tseries/offsets.py index 8361b6b98b405..746953eae11b1 100644 --- a/pandas/tseries/offsets.py +++ b/pandas/tseries/offsets.py @@ -581,6 +581,7 @@ def __setstate__(self, state): if '_offset' in state: # pragma: no cover raise ValueError('Unexpected key `_offset`') state['_offset'] = state.pop('offset') + state['kwds']['offset'] = state['_offset'] self.__dict__ = state if 'weekmask' in state and 'holidays' in state: calendar, holidays = _get_calendar(weekmask=self.weekmask, @@ -964,6 +965,7 @@ def __init__(self, n=1, normalize=False, weekmask='Mon Tue Wed Thu Fri', self.n = int(n) self.normalize = normalize self._offset = offset + self.kwds = {} calendar, holidays = _get_calendar(weekmask=weekmask, holidays=holidays, @@ -1413,6 +1415,7 @@ def __init__(self, n=1, normalize=False, weekmask='Mon Tue Wed Thu Fri', self.n = int(n) self.normalize = normalize self._offset = offset + self.kwds = {} calendar, holidays = _get_calendar(weekmask=weekmask, holidays=holidays, @@ -1431,7 +1434,7 @@ def cbday(self): def m_offset(self): kwds = self.kwds kwds = {key: kwds[key] for key in kwds - if key not in ['calendar', 'weekmask', 'holidays']} + if key not in ['calendar', 'weekmask', 'holidays', 'offset']} return MonthEnd(n=1, normalize=self.normalize, **kwds) @apply_wraps @@ -1483,6 +1486,7 @@ def __init__(self, n=1, normalize=False, weekmask='Mon Tue Wed Thu Fri', self.n = int(n) self.normalize = normalize self._offset = offset + self.kwds = {} # _get_calendar does validation and possible transformation # of calendar and holidays. @@ -1503,7 +1507,7 @@ def cbday(self): def m_offset(self): kwds = self.kwds kwds = {key: kwds[key] for key in kwds - if key not in ['calendar', 'weekmask', 'holidays']} + if key not in ['calendar', 'weekmask', 'holidays', 'offset']} return MonthBegin(n=1, normalize=self.normalize, **kwds) @apply_wraps From aefb68c11ac35576a85b38118ea1d1e8aa21002b Mon Sep 17 00:00:00 2001 From: Brock Mendel Date: Sat, 23 Sep 2017 20:33:49 -0700 Subject: [PATCH 09/15] whitespace fixups --- doc/source/whatsnew/v0.21.0.txt | 1 - pandas/tseries/offsets.py | 4 ++-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/doc/source/whatsnew/v0.21.0.txt b/doc/source/whatsnew/v0.21.0.txt index 4086dbc44a293..612643daf35f1 100644 --- a/doc/source/whatsnew/v0.21.0.txt +++ b/doc/source/whatsnew/v0.21.0.txt @@ -447,7 +447,6 @@ New Behavior: pd.interval_range(start=0, end=4) - .. _whatsnew_0210.api: Other API Changes diff --git a/pandas/tseries/offsets.py b/pandas/tseries/offsets.py index 746953eae11b1..61fd92321ddda 100644 --- a/pandas/tseries/offsets.py +++ b/pandas/tseries/offsets.py @@ -2531,8 +2531,8 @@ def __init__(self, n=1, normalize=False, weekday=0, startingMonth=1, self.variation = variation self.kwds = {'weekday': weekday, 'startingMonth': startingMonth, - 'qtr_with_extra_week': qtr_with_extra_week, - 'variation': variation} + 'qtr_with_extra_week': qtr_with_extra_week, + 'variation': variation} if self.n == 0: raise ValueError('N cannot be 0') From 1e06d9985ac98de0e3ae64a1c7a156956d163218 Mon Sep 17 00:00:00 2001 From: Brock Mendel Date: Mon, 25 Sep 2017 17:42:57 -0700 Subject: [PATCH 10/15] Move doc section to other api changes bullet point --- doc/source/whatsnew/v0.21.0.txt | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/doc/source/whatsnew/v0.21.0.txt b/doc/source/whatsnew/v0.21.0.txt index 612643daf35f1..5cc4bc2a2fb41 100644 --- a/doc/source/whatsnew/v0.21.0.txt +++ b/doc/source/whatsnew/v0.21.0.txt @@ -387,13 +387,6 @@ New Behavior Additionally, DataFrames with datetime columns that were parsed by :func:`read_sql_table` and :func:`read_sql_query` will also be localized to UTC only if the original SQL columns were timezone aware datetime columns. -.. _whatsnew_0210.api.restricting_dateoffset_keywords - -Restricting DateOffset Keywords -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -Previously, ``DateOffset`` subclasses allowed arbitrary keyword arguments which could lead to unexpected behavior. Now, only valid arguments will be accepted. (:issue:`17176`). - .. _whatsnew_0210.api.consistency_of_range_functions: Consistency of Range Functions @@ -468,6 +461,7 @@ Other API Changes - :class:`Period` is now immutable, and will now raise an ``AttributeError`` when a user tries to assign a new value to the ``ordinal`` or ``freq`` attributes (:issue:`17116`). - :func:`to_datetime` when passed a tz-aware ``origin=`` kwarg will now raise a more informative ``ValueError`` rather than a ``TypeError`` (:issue:`16842`) - Renamed non-functional ``index`` to ``index_col`` in :func:`read_stata` to improve API consistency (:issue:`16342`) +- Restricted DateOffset keyword arguments. Previously, ``DateOffset`` subclasses allowed arbitrary keyword arguments which could lead to unexpected behavior. Now, only valid arguments will be accepted. (:issue:`17176`). .. _whatsnew_0210.deprecations: From cd1f2247621a7a3cb599747ad9b5430c001867a7 Mon Sep 17 00:00:00 2001 From: Brock Mendel Date: Fri, 29 Sep 2017 08:26:59 -0700 Subject: [PATCH 11/15] Add pickle tests for 0.19.2 and 0.20.3 --- .../tseries/data/dateoffset_0_19_2.pickle | 187 ++++++++++++++++++ .../tseries/data/dateoffset_0_20_3.pickle | 187 ++++++++++++++++++ pandas/tests/tseries/test_offsets.py | 26 +++ 3 files changed, 400 insertions(+) create mode 100644 pandas/tests/tseries/data/dateoffset_0_19_2.pickle create mode 100644 pandas/tests/tseries/data/dateoffset_0_20_3.pickle diff --git a/pandas/tests/tseries/data/dateoffset_0_19_2.pickle b/pandas/tests/tseries/data/dateoffset_0_19_2.pickle new file mode 100644 index 0000000000000..0dc28fba3d800 --- /dev/null +++ b/pandas/tests/tseries/data/dateoffset_0_19_2.pickle @@ -0,0 +1,187 @@ +(dp0 +S'YearBegin' +p1 +ccopy_reg +_reconstructor +p2 +(cpandas.tseries.offsets +YearBegin +p3 +c__builtin__ +object +p4 +Ntp5 +Rp6 +(dp7 +S'normalize' +p8 +I00 +sS'kwds' +p9 +(dp10 +sS'n' +p11 +I1 +sS'_offset' +p12 +cdatetime +timedelta +p13 +(I1 +I0 +I0 +tp14 +Rp15 +sS'month' +p16 +I1 +sS'_use_relativedelta' +p17 +I00 +sbsS'Week' +p18 +g2 +(cpandas.tseries.offsets +Week +p19 +g4 +Ntp20 +Rp21 +(dp22 +g8 +I00 +sS'_inc' +p23 +g13 +(I7 +I0 +I0 +tp24 +Rp25 +sg9 +(dp26 +sS'weekday' +p27 +Nsg11 +I1 +sbsS'MonthBegin' +p28 +g2 +(cpandas.tseries.offsets +MonthBegin +p29 +g4 +Ntp30 +Rp31 +(dp32 +g8 +I00 +sg12 +g13 +(I1 +I0 +I0 +tp33 +Rp34 +sg17 +I00 +sg9 +(dp35 +sg11 +I1 +sbsS'Day' +p36 +g2 +(cpandas.tseries.offsets +Day +p37 +g4 +Ntp38 +Rp39 +(dp40 +g8 +I00 +sg12 +g13 +(I1 +I0 +I0 +tp41 +Rp42 +sg17 +I00 +sg9 +(dp43 +sg11 +I1 +sbsS'DateOffset' +p44 +g2 +(cpandas.tseries.offsets +DateOffset +p45 +g4 +Ntp46 +Rp47 +(dp48 +g8 +I00 +sg12 +g2 +(cdateutil.relativedelta +relativedelta +p49 +g4 +Ntp50 +Rp51 +(dp52 +S'_has_time' +p53 +I0 +sS'hour' +p54 +NsS'seconds' +p55 +I0 +sS'months' +p56 +I0 +sS'year' +p57 +NsS'days' +p58 +I0 +sS'years' +p59 +I1 +sS'hours' +p60 +I0 +sS'second' +p61 +NsS'microsecond' +p62 +Nsg16 +NsS'microseconds' +p63 +I0 +sS'leapdays' +p64 +I0 +sS'minutes' +p65 +I0 +sS'day' +p66 +NsS'minute' +p67 +Nsg27 +Nsbsg17 +I01 +sg9 +(dp68 +g59 +I1 +ssg11 +I1 +sbs. \ No newline at end of file diff --git a/pandas/tests/tseries/data/dateoffset_0_20_3.pickle b/pandas/tests/tseries/data/dateoffset_0_20_3.pickle new file mode 100644 index 0000000000000..0dc28fba3d800 --- /dev/null +++ b/pandas/tests/tseries/data/dateoffset_0_20_3.pickle @@ -0,0 +1,187 @@ +(dp0 +S'YearBegin' +p1 +ccopy_reg +_reconstructor +p2 +(cpandas.tseries.offsets +YearBegin +p3 +c__builtin__ +object +p4 +Ntp5 +Rp6 +(dp7 +S'normalize' +p8 +I00 +sS'kwds' +p9 +(dp10 +sS'n' +p11 +I1 +sS'_offset' +p12 +cdatetime +timedelta +p13 +(I1 +I0 +I0 +tp14 +Rp15 +sS'month' +p16 +I1 +sS'_use_relativedelta' +p17 +I00 +sbsS'Week' +p18 +g2 +(cpandas.tseries.offsets +Week +p19 +g4 +Ntp20 +Rp21 +(dp22 +g8 +I00 +sS'_inc' +p23 +g13 +(I7 +I0 +I0 +tp24 +Rp25 +sg9 +(dp26 +sS'weekday' +p27 +Nsg11 +I1 +sbsS'MonthBegin' +p28 +g2 +(cpandas.tseries.offsets +MonthBegin +p29 +g4 +Ntp30 +Rp31 +(dp32 +g8 +I00 +sg12 +g13 +(I1 +I0 +I0 +tp33 +Rp34 +sg17 +I00 +sg9 +(dp35 +sg11 +I1 +sbsS'Day' +p36 +g2 +(cpandas.tseries.offsets +Day +p37 +g4 +Ntp38 +Rp39 +(dp40 +g8 +I00 +sg12 +g13 +(I1 +I0 +I0 +tp41 +Rp42 +sg17 +I00 +sg9 +(dp43 +sg11 +I1 +sbsS'DateOffset' +p44 +g2 +(cpandas.tseries.offsets +DateOffset +p45 +g4 +Ntp46 +Rp47 +(dp48 +g8 +I00 +sg12 +g2 +(cdateutil.relativedelta +relativedelta +p49 +g4 +Ntp50 +Rp51 +(dp52 +S'_has_time' +p53 +I0 +sS'hour' +p54 +NsS'seconds' +p55 +I0 +sS'months' +p56 +I0 +sS'year' +p57 +NsS'days' +p58 +I0 +sS'years' +p59 +I1 +sS'hours' +p60 +I0 +sS'second' +p61 +NsS'microsecond' +p62 +Nsg16 +NsS'microseconds' +p63 +I0 +sS'leapdays' +p64 +I0 +sS'minutes' +p65 +I0 +sS'day' +p66 +NsS'minute' +p67 +Nsg27 +Nsbsg17 +I01 +sg9 +(dp68 +g59 +I1 +ssg11 +I1 +sbs. \ No newline at end of file diff --git a/pandas/tests/tseries/test_offsets.py b/pandas/tests/tseries/test_offsets.py index 543d21e162f04..bae1be727c9d1 100644 --- a/pandas/tests/tseries/test_offsets.py +++ b/pandas/tests/tseries/test_offsets.py @@ -502,6 +502,32 @@ def test_pickle_v0_15_2(self): # tm.assert_dict_equal(offsets, read_pickle(pickle_path)) + def test_pickle_v0_19_2(self): + offsets = {'DateOffset': DateOffset(years=1), + 'MonthBegin': MonthBegin(1), + 'Day': Day(1), + 'YearBegin': YearBegin(1), + 'Week': Week(1)} + pickle_path = os.path.join(tm.get_data_path(), + 'dateoffset_0_19_2.pickle') + # This code was executed once on v0.19.2 to generate the pickle: + # with open(pickle_path, 'wb') as f: pickle.dump(offsets, f) + # + tm.assert_dict_equal(offsets, read_pickle(pickle_path)) + + def test_pickle_v0_20_3(self): + offsets = {'DateOffset': DateOffset(years=1), + 'MonthBegin': MonthBegin(1), + 'Day': Day(1), + 'YearBegin': YearBegin(1), + 'Week': Week(1)} + pickle_path = os.path.join(tm.get_data_path(), + 'dateoffset_0_20_3.pickle') + # This code was executed once on v0.20.3 to generate the pickle: + # with open(pickle_path, 'wb') as f: pickle.dump(offsets, f) + # + tm.assert_dict_equal(offsets, read_pickle(pickle_path)) + class TestDateOffset(Base): From aee75de1af85dd8c2853a2409cfbe045a0a3b0f7 Mon Sep 17 00:00:00 2001 From: Brock Mendel Date: Sun, 1 Oct 2017 21:23:48 -0700 Subject: [PATCH 12/15] New version of test_pickle_v0_20_3 --- .../0.20.3/0.20.3_x86_64_darwin_2.7.14.pickle | Bin 0 -> 130209 bytes .../tseries/data/dateoffset_0_19_2.pickle | 187 ------------------ .../tseries/data/dateoffset_0_20_3.pickle | 187 ------------------ pandas/tests/tseries/test_offsets.py | 47 +++-- 4 files changed, 23 insertions(+), 398 deletions(-) create mode 100644 pandas/tests/io/data/legacy_pickle/0.20.3/0.20.3_x86_64_darwin_2.7.14.pickle delete mode 100644 pandas/tests/tseries/data/dateoffset_0_19_2.pickle delete mode 100644 pandas/tests/tseries/data/dateoffset_0_20_3.pickle diff --git a/pandas/tests/io/data/legacy_pickle/0.20.3/0.20.3_x86_64_darwin_2.7.14.pickle b/pandas/tests/io/data/legacy_pickle/0.20.3/0.20.3_x86_64_darwin_2.7.14.pickle new file mode 100644 index 0000000000000000000000000000000000000000..f3e40618432313391922b80c30e2a14646ba38f7 GIT binary patch literal 130209 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

rmIfI-<&LQWK3&=&}5^@>2f?P$eA=i-`$W7!H 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 u< Date: Mon, 2 Oct 2017 19:57:55 -0700 Subject: [PATCH 13/15] flake8 whitespace fixup --- pandas/tests/tseries/test_offsets.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pandas/tests/tseries/test_offsets.py b/pandas/tests/tseries/test_offsets.py index 8ebbe5596fa2e..cd2ed894971cb 100644 --- a/pandas/tests/tseries/test_offsets.py +++ b/pandas/tests/tseries/test_offsets.py @@ -520,7 +520,7 @@ def test_pickle_v0_20_3(self): here = os.path.dirname(__file__) tests_dir = os.path.split(here)[0] data_dir = os.path.join(tests_dir, 'io', 'data', - 'legacy_pickle', '0.20.3') + 'legacy_pickle', '0.20.3') flist = [x for x in os.listdir(data_dir) if x.endswith('.pickle')] # exclude e.g. .DS_Store that might sneak in there for name in flist: From 217a558ced5b1db66b043b1885d1dc2d56c52551 Mon Sep 17 00:00:00 2001 From: Brock Mendel Date: Wed, 4 Oct 2017 07:44:58 -0700 Subject: [PATCH 14/15] remove test per reviewer instruction --- pandas/tests/tseries/test_offsets.py | 25 ------------------------- 1 file changed, 25 deletions(-) diff --git a/pandas/tests/tseries/test_offsets.py b/pandas/tests/tseries/test_offsets.py index cd2ed894971cb..543d21e162f04 100644 --- a/pandas/tests/tseries/test_offsets.py +++ b/pandas/tests/tseries/test_offsets.py @@ -502,31 +502,6 @@ def test_pickle_v0_15_2(self): # tm.assert_dict_equal(offsets, read_pickle(pickle_path)) - def test_pickle_v0_20_3(self): - # pickle file was generated using - # `pandas.tests.io.generate_legacy_storage_files` - off = {'DateOffset': DateOffset(years=1), - 'MonthBegin': MonthBegin(1), - 'MonthEnd': MonthEnd(1), - 'QuarterBegin': QuarterBegin(1), - 'QuarterEnd': QuarterEnd(1), - 'Day': Day(1), - 'YearBegin': YearBegin(1), - 'YearEnd': YearEnd(1), - 'Week': Week(1), - 'Hour': Hour(1), - 'Minute': Minute(1)} - - here = os.path.dirname(__file__) - tests_dir = os.path.split(here)[0] - data_dir = os.path.join(tests_dir, 'io', 'data', - 'legacy_pickle', '0.20.3') - flist = [x for x in os.listdir(data_dir) if x.endswith('.pickle')] - # exclude e.g. .DS_Store that might sneak in there - for name in flist: - path = os.path.join(data_dir, name) - tm.assert_dict_equal(off, read_pickle(path)['offsets']) - class TestDateOffset(Base): From 086b48528d5745e783d45dd779a931b531436f35 Mon Sep 17 00:00:00 2001 From: Brock Mendel Date: Thu, 5 Oct 2017 20:52:38 -0700 Subject: [PATCH 15/15] Add offsets with kwds to generate_legacy_storage_files --- .../0.19.2/0.19.2_x86_64_darwin_2.7.14.pickle | Bin 0 -> 132762 bytes .../0.20.3/0.20.3_x86_64_darwin_2.7.14.pickle | Bin 130209 -> 132857 bytes .../tests/io/generate_legacy_storage_files.py | 18 ++++++++++++++++-- 3 files changed, 16 insertions(+), 2 deletions(-) create mode 100644 pandas/tests/io/data/legacy_pickle/0.19.2/0.19.2_x86_64_darwin_2.7.14.pickle diff --git a/pandas/tests/io/data/legacy_pickle/0.19.2/0.19.2_x86_64_darwin_2.7.14.pickle b/pandas/tests/io/data/legacy_pickle/0.19.2/0.19.2_x86_64_darwin_2.7.14.pickle new file mode 100644 index 0000000000000000000000000000000000000000..555be58cc33acbb34a2669809cd7528ba83fb329 GIT binary patch literal 132762 zcmc$^1ymeO&?q|Y?z3?x?(QxmL^nzfbcXxMpcXxMpcb7M_K=S32d;jy! zd-pEqOifo;S66jOclFQ<@>yVj8;y#Ki0o|H4LHD!M1&?qT1a?8Xk0{SVu7T@NN-eR zVgWx16%rTODWsZBkQ5agS=$*!S?Ir${*4OrS$KdOO6qD6L2jg-H`21mzYmOW*Df(K zDUqrc+J&;H+`TQ@XE6b8GA`a58yXYUHPT`SyYY||GK&j$By|L#oJT}tOj0Oi@qu6< z5C{xxWC?C5BsnoM#2XnCniSPBg}@RAyO9o^A`&gh=LX{f!Q?Q%#-Wz%K|QvRN`Qw5 z@{mCuIXo^oHla&_@OW=zf!O4jq^MA@*A~p?7akv%nB+|kPogX}g^IG*%HL~gfk1yZ z7-r9}2iT%e{Zk1dlDZ^BQkLO{>Xotu1Z@H{AP{kb<${8O>io2S{zo9-vsWoD(H?65 zB@IXl8|-cX00$mj!OlwnpmvRSJ1~Mq<~eZfv`KFq2o=a*`GO4_?%X}nfwLMkz2U%@ zx1Z#@Xu}GLJ-az@IHDZ6C?(lC$A!j5TCSkv0gbG5o)nng4M)W#SsBvI;y1Z%`moT% z$P~+`T0G<5DeRT9y(FBf9hX$1SSnE_pOrblBYRZO?YJZ|jmbbzQRB z#zs=LL{lM_3h`7(q(U+kQmK$mg-j}BQ{gYA^Ci3S)CjZk`>X;1ZoEZgsMi+TDwt-_ zv^7YJ#8d*xDrDy@g;ANmz_qp{8^Sj7SvTU9%(_`0EqNzEc7JJfIIUmvUZ zf6ekYLdq&(&sNfBl}eq>D(%KQ*^DAWyI5rc;Y5%9NDE%NN^)XUTx4RRoiwbn|24y3 zh$yR^&Aq(Os^D<Rr6WZ?TH4t(Zr-sZ<1Bx&#XmRHQiW>fA()=)pEm;wmE8hY$VS)UTY)kIN}8c zcxrfRd1`y=B-;`>0;VLnx^{Mq?3@%5=B!OUkE2?U&#M22Y7PDv(a_e$PJEaRu`H;t5R*aW*))DGrI9aXFswxwD>^4jrn6R(Mqu2kuG+0Tb8}s`nB@fDAYkET8Yl9!ywU0at5Vv zu#$t^bZk_(H$Ju9G00Oa$j$r(m1uRc>4})g&;&ov&UOorjfzW7icGY+*bUf5TU~=} zIs8bgTaazaso$Z_KC0d6`jG%l5YqUEc%OY=Ccm}YFkpD3J+)WhRs(w;u6*FSu& z_n$sTHB7eSD$<|F`uvw6e$!A^Uz>41pVi;*f2=<$qvG19q^JRbuq|ksIB+#vn}HtZ zBr?cn4gQBDL;jQmtCynm(EpMmrJu5f*$jvKtP%fUIPy=1Osd#bBHKsBS)=}o?O&-V zYqZULjL#bDXa1)?q!WN4O_FV6jq^BRINoPX@YDS@04F-8nq=o#&`GqQvlx)=^@u<7 zP5v(-QZn8Yo9R@aHSHgoP5+x_jU!{Dei?hle=+?l6=lt|na}cBv;E9%8Rxhe+uiKr zV2I!At+|0lqQ`!unU8kVP1}6t{ns3SA)>7L_7n?z)|}4PPxkk&^Q`yV)lbHxo~T1&I>pCY z8$8bLyU}NDO5?cMp>liyOV!%;2JV+>Qgq+)Ut<1AM_F5K=G%PM_B7@@Y>SbO*~qjd zC7nY@3fGnRop+KX#TZC4g)ncLduaWe9LpLM`L zlJhvZ_Mp!?6yS*s1Uzv;9y_6W>_qCZf;@Ke^w?)|kDV?($w3}}X7t#(&|_ynkDd5D zU4uM-=DNcUePY^z*;zU~G{(ujM|{>%JDWR++)h2Q3D&XSI>tnWQBBf1DC>Cb!bOXh zC|$Z#u|mIpR8WvzI-KxiPa78U$9a{qP6qi?=P93cI#sdXhtM;B_*lJ9P8D)C*>lWi zowEzSuz36UcHU!8TcmW+QiV#E_&sYO%FpzI&${>zrkDO;8lKQ4sVfzdKv|aq+*IYn zsL+B<;yZMSx31J1)x+5#>NIX*T}^6aU9;!D?jh5r`>T$H?CG4Od&6hl{Ks^+{+P~L zjN2X}jZ5)Tf04Nm736V*a5pZPa*&C$?$lYe`R7kZjOw-+cWp85*$nQx;keKw>p|L* zCM7zS2nn%~A<1zGQQ;k8?9%OFP=D)DBkQpnOQ}b#Cuy_(O?JP9o+i7=#DtKP>e+hc zv!2^^cDtB(d!83*^CTwN9uZj}g@$VEZ#DLp+m!Xv*8i2ydTpQ5LlTq2?CQ~a<7QJv zq;Y-gMnmixIMjNV#?fD_+C^NXH!d_Lk!oyjY%!5lV&cO))C-LZZ69eLO5fXzKLi9@ zAAeUqX@#CQG_HLl)yR3K);*tm)@S?VX)hRJpA-|UFV4}!K940>UjzBnV(MFHu=U-e zriqZMR7yFVqEqFR()h=(()g!S?~whSI^sO<%9S#16OQo4E}zj$CE9eVo=-k6 z?hJ7Z;jvBN`L+07!p4XCyrd1>SfK)iixnvBrR;{!OFJXnNNDHCL@#5%dp^3cFvk-T zy{z2~_HuqQ-cLrvw)ckEorzw-Zik12ge6DWHy&{zA(R~p;gOVAwDGpib}q3cllhkiA0@o9-SGTO4zj$FJq~xSBgkhNU>WS9LfbA+}q4H9xad zylyw_L=7b+dJX&4V~2s)v|oH)m;DUzym3pZG2mp-)Ijj2b4cHLY}fXtcgTXh861pr zq2tZyALrcZIMtCilil=rGy9Rh%Rg@xhyE{xl{c%6un(>&w?f`*e)`mlp+9Vy-RZHt znfLoe+TD&fhadevy58vw04FmZuKZpEfQ+kxM>#OI@|znD+;(O_{tq^!Bhqzu;3xfZ z`;RuPxj1%%11FS$&`&nJe{@1)2Nny?JI8@p#K*%w+c05{@0tU57M1dTu_3pAK^F%G zH!XYUifjZdz|3gGZ|4Z2ANu3w! zpB5^%69NAcQ+fYE_(x3Tv%6DbD!=`f;u!^;A^zJwzh@M*n?7$LKk_f0QP`pXt7jCk z5x+g7sGt7dJfoP?q3*oI~xzd~`~zC%XxI zpKRx~?<2kCZM4r@!G3!FzDfECQuj#v6c<{<89;d}+O&35SMm?6Y(Je8!K9{$6sA=i zcK@|Q{;@ZDtEOgR`xV`13;j zv|X;YA8p@Wb^r6)x1xRF8SJg&^ftF2KxO~4ivL;F|Ew1ID_#R_iWC>F>kRnq!u9N? z&l}`N{>6psJM@2b;RZJ1w+lD))Bl?bH*$JxC8$4>TVp@^f0W$pyX*gNliROFXkrVI z>dS8XH8R-S)Di2CtkujfC>V&RWvx<9_W1q#pPwUspBqxL6!pg@;26kRConBbAX?NM#=?~dk{U4IOb?Q8SW?1Jc{crLI|AWv`(z%28>(J(3bO=cu zf~Bp0A)ERyzyJOE|F74*Z7ToY>+UfBo7|!QAWBirKF5Upi_GDv!r`acSJJJ`5iY+{@te}230#yYqZ-%n)|m&T^bZ#MCNWs~qP zY^;B<@usn{(|wvWiGO92^e=3Z|G}nX8k?%W*>tjTkv?x{8>DW2U7T?#o1c^RQ#Ze^ z4%X-G=I{LL?q`R(z1rO!O8@TXB${NO*Y`I?$&t?C+rO*2Nv9%A+4=g~U2ZlcBC=hm{rxhegS~@!`#Ct& zUkG^nJMZ$Z{=XdE2iQHo95p#C(GA5$c?a4^pLdWm2=PX?FXA0+zy7m|^nWX*>N#Ib zQ+LTB{((d7XMh`v2@Q*kN%Ri0TfyGp4(@mD=r3RW`)dtveAmdhplT_lqj!W&msUM` zM>>OSk0Vk_vBIgP*eE~xpIfUPK6Zr#03ZlKFzm!q^dIa-|6&*IuyAO>l)t2~NH^+y zC{6T^v3r8OV;$1w&gaH>H|E~)c01BmF|wnh;spPgiO!f`5j4r) z`ZEwGJ2+b(qxJa!rxKT;XmKO z*w-BK-lTYMM5Ncdz(zQql)Ve>mqa%l9-8D`WWV~ni|wcX9}SX<7V$2z8)@aY-{dx3 zWczsg3vy@-Wryjnckfc0(mviT^Yd8l=YfTU$4A%}Sz)*S*o0R)-GN{|Ay45Y=1|TDl3CIj&0kQ(wfb2jHASaLu2mo>ed4Rk?J|I6(04N9)0ty2~fTBP#pg2$h zC<&ATN&{tpvOqbYJWv6s2vhkKsBH`Py?t5)BO93)BOGfciiKpdru* zXbdy~+(1*H8PFVP0ki~K0j+^xpbZcLv;{(eFd!U=03v~QKzqOgL;=x22OtKB1>%5s zAOWxdFOUc%0m(o|pcBv;=mK;Fx&hq*AJ7Bn3G@Pb1ATzLKtG^AFaQ_`3<3rNLx7>c zFkm<^0vHL50!9O4fU&?hU_3AZmC0|~F0$~sVQ4j-hkN`=L0%?!|S&##HPyj_x0%cGERZs(U&;U))1*QYj zgBie#U?wm#m<7xVW&^W>Il!D?E-(Ph4dwy!g89JwU;(foSO_c(76FTb#lYfV39uws z3M>tl0n38r!17=Pup(FqtPEBGtAf?Q>R=79CRhus4c4)Dn7Uv+FbJ#0CQ?MD>9Bcu$1Y3cv!C{ICug)37!H^gJ;0A;5qO-cmcc!UIH(JSHP>_HSjuk1H1{| z0&jzNz`Ni*@ILqed6 zH}E_71N>Og@|U8o)u1l5NcKnnh2}x?p#{)FXc4p+ zS^_PFmO;y*70^m(6|@>!1FePDLF=In&_-wzv>Dn0ZH2Z$+o2uMPG}dj8`=Zyh4w-F zp##uC=n!-mIszSqjzPzv6VOTM6m%Lo1D%D=LFb_h&_(DHbQ!t=U4^be*P$EGP3RVM z8@dDCh3-N3p$E`I=n?c7dICL#o5a%gejPY8JLARn1=;ege6#p60UV3^#$@ za8tM$+#GHJw}e~4t>Iv}4IBcug+t*mI2?|EBjI*%d)NavLV@#97s+i7ZQNvM)Dwek$gygqySP7DTEY8iXcUiVn}hM1X2GRgr2)b)*JT6RCyNM(QAeNL{2J5`@%88XygkMo43%3F1bY zBF&KINDHJT(h6yf1S4&b5Tq>9wZ8hMmiudNGuYE#3Koag?N!f zBne4IIwGBr&PW%eE7A?=j`)xsNKd2}(i`c6^hNq1{gDC4Kx7ay7#V^LMTQ~6krBv9 zWE3(Q8H0>P#v$X83CKib5;7T?f=orGA=8l=$V_AwG8>tL%thuQ^N|I}LSzxL7+HcW zMV2AUkrl{FWEHX+S%a)a)*$A={B1$WCMzvK!fh>_zq=`;i04 zLF5o}7&(F*MUElIkrT*C

rmIfI-<&LQWK3&=&}5^@>2f?P$eA=i-`$W7!HavQmW z+(qso_mKz4L*xWZ7 z$WH`7K@>t^6hToGLvfTqNt8lqltEdPLwQs{MN~p%R6$i#Lv_?ZP1J>^L(`)f(2Qs% zG&7n7&5CA2v!glCoM;jtEsPdHi=xHQ;%Eu9Bw7kBjg~>n zqUF%?Xa%$)S_!R;Rza(x)zIo_4YVd&3$2aTK?BjcXgxFtt&cW98={TS#%L4NjW$J_ zq0P}2XiKye+8PZ;+n^z6TQn36L&MPsG!kuxwnsf^6dH|oKx5EYG!BhN6Hp8FqKRk{ znv8ZtJE5J?E@)S@8`>T9p*_%^XfL!k+6V26_Cx!l1JHr!AapP~1RaVFLx-ay(2?jU zbTm2!9gB`b$Da%dI!CW z-b3%B5739`BlI!)1bvD=L!YBB(3j{d^fmeheT%+B-=iPUkLV}#Gx`Pnihe`Cqd(A} zD1d<&guxhsp%{kY7=e)(h0z#;u^5N(n1G3xgvpqKshEc8n1Pv?3rmNk$1-3Uu}oNI zEDM$u%Z6pga$q^JTvz~>8_R>`#qweKu>x2@tPoZhD}oipiebgE5?D#B6jmB5gO$a~ zVdb$3SVgQ7RvD{;RmG}d)v+2_O{^AH8>@o_Vs){4SP)hpYk)Px8exsGCYT#*iZ#QU zV=b_jSSzeG7L2vQLa?@2C>Dl=V-Z*+)(&frd9Wxf8tZ_?V6j*n7LO%h7Usngu_P=R z>xgy2I%8e1u2?s$JLbcBU_G&3SZ}Nk))(uC^~VNa1F=EaU~C9B6dQ&O$3|cyu~FD) zYz#IQ8;6a@CSVh>N!Vm;3N{s+hE2z2U^B5<*lcVLHW!<#u7dxyQpK42fQPuOSd3-%TJhJD9=U_UVc z2XP38aRf(k499T-Cvgg=aRz5`4(D+J7jX%faRpa#4cBo4H*pu94o{C~z%$~R@XUA? zJS(0J&yMH7bK<%106aII2hWS=!}H?>@Pc?Dyf9t_FNzn#i{mBml6Wb+G+qWTi;3?Gh z5CIbiff5*j69hpL6hRXV!4e$769OR;5+M@`p%NOQ69!=tE+QR~p2$FCBr*}1i7Z4` zA{&vN$U)>JauESUZXyqnm&ixtCkhY+i9$qSq6krxC`J?~N)RQ9QbcK@3{jRSN0cWj z5EY3^L}j81QI)7hR3~Z>HHlh8ZK4hlNYo|j5kW+Kq5;v6Xhbw7nhvG(VrMV3?v2-gNY%;P+}M{oESljBt{XVi7~`j zVjMA^m_SS!#9m?_v7b0V93&1AhlwM^ zQQ{bJoH#+8Bu){hi8I7m;v8|FxIkPaE)kcBE5ude8gZStLEI#65x0pu#9iVZai4fV zJR}|wkBKM5Q{ox%oOnUJBwi7(i8sVs;vMmx_&|IlJ`taZFT_{k8}Xg^LHr~D5+orK zCJ_=PF%l;Uk|ZgTCK-|?Ig%#@QY0l(CKXa8HBu)H(j;AEIx;<(fy_u|A~Ta&$gE^G zGCP@r%t_`V1IXND9x^YPkIYXNAPbU($iie1vM5=MEKZgnOOmC?(qtL3ELn~$PgWo+ zl9kBHWEHY1S&ght)*x$=waD6J9Ws!tOV%TU$ogahvLV@sY)m#G-DFd;8QGj{LAE4Y zk*&#KvJDwRwk1Q!FfyEsAS20kWP8#>Mv>8E2Qr3?CF96=GJ&*6FPTUtk;!C7vJ=^v z>_T=WyOG^VAK8QKN%kUplYPj(WIwV$Ie;8U4k8DWL&%}zFmgCKf*eVXB1e;B$g$)& zay&VKoJdY0CzDgispK?rIyr-!NzNi?lXJ+qRBHiXxJGq10N$w(dlY7X$r{B2SZN$g|`*@;rHgyhvUmFOyfutK>EEI(dV@;&*1{78NxKa*d`ujDuKJNbkBNdgo|K@?0O z6iQ(fP7xGIQ4~!v6iaawPYIMrNt8?}luBuoP8pO*xu|qhdMX2zk;+76rm|33sccks zDhHL5%0&fGxv4xQb$GE`Zr995pGKvkqF zQI)AGR8^`PRh_Cq)ud`swW&H(AXS&DM+H&!sRmR-su9(gYC^fGrc^VkIn{z{NwuO{ zQ^8alDuilFg;HTuI2A!fQthbr_W#aBQPETfDu#-s;;4Aa{$D)GOC?fCR5I0(>O^&> zx=>xIZd7;5NA;k3QoX3&R3EA@)sN~=4WI^6gQ&sO5Naqjj2cdjphi-osL|9IYAiL5 z8c$82CQ_5A$Sra5^5>6j9N~upjJ|= zsMXXOYAv;nT2F1DHd33Y&D0iZE47WMV7RI!|4oE>f4M%hVO>Ds_#zPTinxQn#qv)E(+Bb&tAFJ)j;^ zkEqAg6Y44TjCxMJpk7k1sMpjR>Miw-dQW|zK2o2k&(s&{EA@@~PW_;MQUDFo5Dn7^ zjnWv6(*#Y@6iw3%&C(pr(*iBh5-rmTt5x&hsgZbUbxo6v5$Dcy{2PPd?2(yi#$ zbTHk94x!u9p>!A>PDjv@bUV5|?V+RSXu1O(L&wr_bUd9vTeO!>q?71mx+C3*?o4-~ zyVBk0?zE5YLHDG4(Y@(DbYHq3-Jc#n52OdtgXtmkPUT(X;6}^jvx#J)d4cFQgaIi|HlwQhFJ^oL)h%q*u|a z={59PdL6x<-av1pH_@BvE%a7;8@-+0LGPq@(YxtA^j>-&y`MfnAEXb_hv_5qQTiBt zoIXLHq)*YO=`-|M`W$_pzCd53FVUCjEA&e%hY3nnEFfurXkaaY0NZX+)PuZ8Pl9;!L(#rF|CFeaRdU?Q1zOnb(|L^07!2PTGzW#X84CV{aSFO$e5G099vrW4bd>B4kn zx-s1uAJc>B$@F4+Gkuu8Oh2YSGk_V$3}OZ|Lztn=FlIP2f*Hw-Vn#D#n6b<_W;`>2 znaE6HCNoo*smwHHIx~Zr$;@JAGjo`^%sgg3vw&I1EMgWjOPHn1GG;lmf?3I|VpcP2 zn6=D0W<9fk*~n~SHZxn8t;{xNJF|n?$?RfwGkci5%sys6bAUO>9AXYLN0_6`G3GdP zf;q{YVooz>n6u0|<~(zOxyW2%E;Cn{tIRd#I&*`$$=qUYGk2J~%su8l^MHBCJYpU* zPnf67Gv+z-f_cfjVqP zY*n@zTb-@J)?{n3wb?psAX}HM#|E+W*#>Mwwh`NyZNj?Qrff5|IopD5$+lu!v%zc| zHiT`(YFvGHsIYq4H7kxgQg*^X={wlmv>?aFpz zyR$yF2iueF#r9_VuzlHnY=3qDJCGg34rYh2L)l^MaCQVck{!j4X2-B&*>UW6b^<$* zoy1ONr?6AmY3y`%20N3T#m;8uuyfgY?0j|syO3SPE@qdoOW9@Ya&`r~l3m5FX4kN5 z*>&uCb_2VS-NbHYx3F8;ZR~b-2fLHq#qMVJuzT5k?0)tDdyqZE9%hfQN7-ZSarOjz zl0C(qX3wx^*>mi9_5yp6y~JK-udr9yYwUIQ278me#olJ`uy@&e?0xnD`;dLaK4zb= zPuXYebM^)Ml6}R#X5X-H*>~)F_5=Ho{ltD|zp!7~Z|ryW2m6x+IFN%lm_s;}!#JEH zIFh3{nqxSY<2arZIFXY$nNv8G(>R?oIFoa6>A3V<1}-C)iObAo;j(hsxa?dGE+?0Z z3*d5ddAPh>J}y63fGfxq;tF#`xT0J!t~ghME6J7ON^@nnvRpZ?JXe9M$W`Jhb5*#i zTs5vbSA(m`)#7S%b+|yTE?18W;_7n^xQ1LKt})kyb8}6(W?XZw1=o^m#kJ;wxi(w~ z*Om+A!nklQf{WzZaqT$|7sW+$9k>`SmW$)!xdhJQyj&ue#3gebxlUYXt_#&A8G zd|VH%C)bPX&Gq5>a{aje+yHJMH;5a|4dI4z!?@wx2yP@diW|+1;l^^~xbfTsZX!2{ zo6Jq&rgGD`>D&x%CO3se+stj@wsPCJ?c5G-C%22+&F$g#a{IXb+yU+&cZfU89pR30$GGF%3GO6! ziaX7n;m&gBxbxfv?jm=IyUbnTu5#D7>)Z|QCU=Xw&E4Vda`(9V+ym|*_lSGUJ>i~m z&$#E@3+^TNihIqy;ofrZxcA%#?j!e!`^G=$NMm`gtna{#!<+JhG`5b&sJ{KRr z=jQY9dHH;Ne!c)-kT1j+=8Nz}`C@!=z64*AFU6PU%kX9Sa(sEd0$-7@#8>94@KyP0 ze09DCUz4xJ*XHZ+fqY%Q9v{Tl=Ns@1`9^$Wz6tNK zpTbY&r}5MI8T?Fs7C)Px!_VdC@$>lw{6c;aznEXbFXfl<%lQ@jN`4i;nqR}O<=64+ z`3?L=eiOf$-@!7VfunhDK?7D7v*mC#xU7TO3QLR%qJ z2ou7E2q98vC$twlLX;3KbP!^MSRqb`7ZL6K!XRO=Fhm$C3=@V6BZQH{C}FfPMi?uM6UGY@go(l=VX`nq zm?}&YrVBHKnZhh#wlGJSE6fw-3k!sW!Xja@utZoYEEARsD}Y^c)47juX?#av>5m|M&v z<`wga`NaZaL9vinSS%tI6^n_*#S&skv6NU^EF+c`%ZcU13SvdEl2}=+B32cviPgm# zVokA@SX-PmSQWhwHPe65kthbVyGA< zhKmtmq}WbuFM7l%FkMQjyPAGC(aiahzrF<;$m@$xKvywE*DpbE5%jfYH^LYR$M2p7dMC- z#ZBU7af`TB+$L@pcZfU1UE*$WkGNOdC+-&yhzG?(;$iWKcvL(l9v4rDC&g3ZY4MDB zRy-%37cYnx#Y^I4@rrm=ye3{3Z-_U=TjFi;j(AtRC*Btyh!4d_;$!iN_*8r*J{Mnz zFU42lYw?ZvR(vPE7e9y}#ZTgA@r(FX{3d=Ee~3RtKmsL5f+a*kB}~F4LLwzfq9sOR zB~IccK@ufNk|jk_B~8*LLoy|oluk-7WsovTnWW587AdQgP0B9ika9}7qyQ@r8skBr^Dl3(f%1afbic%%1vQ$N?DpixJOEsjL zQZ1>rR7VPw>Pq#bAgR98Kx!y8k{U}*B)8O5Y9=+8T1YLWR#IyzSZX7MNNuH1DNG8N zBBV&Eoz!0PNKsO>)Io}oVx>4KUP_QG$txvFNm8=ZQR*ahmbyq?rEXGp$tU%YdP=>d z-clc_uhdWKFAb0eN`s`q(hzB=G)x*UjgUr4qomQ&7-_6DP8u&wkS0o#q{-40X{t0$ znl8q|4G3>8f;1x-Q+2Zc4YL+tMBBu5?ejFFlYRN{^(+(i7>a^h|m#y^vl? zucX(~8|kg|PI@nWkUmPEq|ee9>8tcj`Y!#DeoBB0%8(4ph>XgZjLU>f%9KpYjLgcM z%*%o-%91S0imb|-tjmUM$}TyboL&ZcKeYt_$P;MkQmYc|KxvAVtZZ5ZwTgt8E)^f1iMh=nN%Asr8r93#idadNzzAX~CmPLz}6WVxfxPz9HX~Z^^giJMvxmo_t?^AU~8J$&ckH@>BVl{9Jw^zm#9e zujM!LTlt;*Uj86|lt0Ozbb1y&FRRWJot2!&KAg;p4aRXBxL z1VvONMOG9=RWwCc48>GjN;)OIl0nI+WKuFKS(L0wHYK}~L&>S+QUa9RN**Pzl26I6 z6i^B(g_Ocd5v8b7OewCEP)aJLl+sEWrL0m;DX&yeDk_zf%1RZbs!~m8bQmdMkaD zzDhr(zcN4>s0>mDD?^l_$}nZPGC~=tj8aA`W0bMVIAy#tL7AvbQYI@?l&Q)zWx6s$ znW@ZDW-D`)xyn3czOq1Bs4P+zD@&B6$}(lSvO-y@tWs7hYm~LhI%U1GLD{HmQZ_4F zl(WxKLN*{SSOb}M_7y~;jizj8o1s2oxbD@T;0$}#1*azZ(&oKj9JXOy$bIpw@^ zLAj`0QZ6f3l&i`$<+^f1xvAVzZYy_`yUIP~zVbkMs60|0D^HZC$}{D;@&MPS=DT6b~T5ZQ_ZCYsJYcVYF;&;nqMuT z7E}wVh1DWzQMH&_TrHuNR7XwVYaBt)Ny^E2)*$Dr!}=np$10q1IGuskPNQ zYM@$It)~X5_01`@ zerkVpfI3heqz+bxs6*9Z>Tq?0I#L~_j#kI0W7To$cy)q0QJthtR;Q>_)oJQT-33x>8-Gu2$EmYt?n?dUb=kQQf3&R=22I z)oto_b%(lB-KFkU_o#c-ed>PofO=3pq#jm}s7KXf>T&gidQv^5o>tGOXVr7+dG&&N zQN5&IRT~sl`ci$RzEiH0snybIYjw0h zt*%y23)1Rq4YY<@BdxL4M00CRwPsp#t%cT7Yo)c;g0(hUh}KpM)xxxJEkcXb+G*`I zj~1mxYaO&0Emn)u;#g)q(WYwCwCUOmZKgI$ zo2|{!=4$h_`Pu?)p|(g{tS!-&YRk0c+6rx@wn|&At$LUS25qCZN!zS#(Y9*a zwC&msZKt+N+pX=<_G9|hlq)zFy&giVp>AWuJqAuyO zuIQ?+>AG&{rtZ?y>FM|YLXVtUm+4UTHPCb_%py$@}=y~;gdValtUQjQj z7uJjDMfGBOalM3IQZJ>K*30N+^>TW7y@Fm*ucTMjtLRnrYI=3OhF(*zrPtQ$=z)4& zy`CPV*Vh~94fRHPW4(#))|=|h^yYdCy`|ntZ>EU{W9;vs}+v^@Z zN{`k%=rMY%9;e6a3A&|w^+Y{MPu4r?o%GIn7rm?AP4BMz^d5Roy_eow@1ytC`|17l z0s26FkUm%+q7T)F>BIFA`bd40K3X56kJZQNC5#M`bvG3zFJ?SuhrM->-7!#MtzgMS>K{>)wk)} z^&R?7eV4vl-=pu<_v!of1NuSzkbYP{q94_d>BsdG`bqtiep)}HpViOl=k*KvMg5X~ zS-+xR)vxK-^&9$4{g!@PzoXyP@9FpT2l_+(k^WeJqCeH2>Cg2S`b+(l{#t*dzt!LA z@AVJ*NBxujS^uJc)xYWA^&k3A9WX!xGGGHSPy;h?gD^;gGH8P_Sc5ZoLoh@`GGs$B zR6{d#!!S(4Wu!CG8ySp@MkXV(k;TYrWHYiGIgFe}E+fFmZR9cX8u^U;MggOsQOGE4 z6fue##f;)c38SP@$|!A=G0Ga{jPgbWqoPsCsBBa*sv6ad>P8KtrcukNZPYOWjk-oX zBgm+4G%y+(jf}=d6T@vZHJTaCjTS~rqm|Lx2sYXnAx2vx)Ce=ejR+&sXlJxHJVule zZFDeVj94Sih&K`p%kUbBMv{?ibTm2{osBL=SEHNJ-S8PbjGjg>qqot==xg*d`Wpj` zfyN+Xurb6KY78@m8zYR7#wcU7F~%5cj5Ed?6O4(*BxABM#h7YLGo~9ejG4wPW41BJ zm}|^4<{Jx)g~lRdv9ZKhYAiFB8!L>J#wugAvBp?ytTWad8;p&{CS$X)#n@_WGqxK$ zjGe|VW4E!#*lX-F_8SL`gT^7_uyMpVY8*3;8z+pD#wp{pamF}noHNcF7mSO>CF8Pj z#kgu*Gp-vqjGM+SO2C*!m6#rSG`Grk)?jGqQzf+l3bCSsx{X5uDck|t%+CS$TDXY!_Cil$`Bredn5 zX6mM4nx@N4XQnqZm>JDXW@a;snbpi@W;b(~In7*VfSKFOW9BvUnfc8EWJ46HZ&WVjm;*e+iYq!Gn<<&%$8;=v$Yv)wlPD@wq~dqW`>&)W~AB9Y;StZC^OpZ zV8)oSW}F#sCYYA#H51JwGuiBDb}~DgUCgd#H?zCxGkcgl&0c12vya)=>}U2j2bcrR zLFQm{h&j|8W)3$;m?O#+-L4L510qdL*`-gh{48+ zOLOTi!)3Z$u5_;St_-e>u1v1Xt}L#su57OCt{kqMu3WAFS8i7xS6){>SAJIkS3y@H zS7BEXS5a3nS8-PfS4meXS7}!nS6Np%S9wq|tDY;!Ro~UX)$spe?Vf@q*}8BIw{3T7BC*=GZQHhOd$n!bwr$(CZJgfwfA`I~ zJ!jlJb7V!-RYs1isEBVE6^x2TC8M%Y#i(jjGpZXkjG9I*qqb4UsB6?S>KhG=hDIZ! zvC+h6YBV#N8!e2MMk}MW(Z*qqot==xg*d z`Wpj`fyN+Xurb6KY78?%jp4=!W27<47;TI(#v0>{@x}yWqA|&sY)mnx8q@oHl`;7g@0pp-?$T(~qF^(F?jN`@$8^Tq|^ zqH)Q%Y+Ny}8rO{L#tq}9am%=E+%fJN_l*0-1LL9b$ari#F`gRFjOWG+F2O~(|bG?l4M*Yr%^49pNSnVH;7 zVWu=wnW@b*W?D0yncmD`W;8RInawO_Rx_KK-OOR;G;^7`%{*paGoP8?EMOKi3z>z@ zB4$yum|5H`VU{#YnWfD#W?8eGS>CK*Rx~S_mCY(W?QqJ+1~76b~HPgoy{(0SF@Yh-RxoZG<%u7 z%|2#dv!B`D9AFMK2bqJ-A?8qXm>FsgH%FKw%~9rPbBsCG9A}ON#V|%~j@VbB(#yTxYH~H<%mE zP3C5Ei@DX@W^Olkm^;l~=5BM3x!2rh?l%vZ2hBs~Ve^Q2)I4S$H&2)+%~R%S^Ne}c zJZGLaFPIn2OXg+sih0$%W?naMm^aN^=56zidDpyW-ZvkZ56wsBWAlmm)O=<>H(!`9 z%~$4Y^Nsn|d}qElKbRlQPv&Ryi}}_3W_~w+m_N;5=5Od~qRrIpG`ZKbi&TIsCxRt77hmC4F%WwEka*{tkV4lAdX%gSx#vGQ8^to&91 ztDsfLDr^<8idx02;#LW(q*cl)ZI!XgTIH+GuUEHd|Y)t=2YcyS2mGY3;IhTYId%);?>$b-+4k9kLEvN35gPG3&T>!a8Z4 zvQArPth3fR>%4Wrx@cXpE?ZZutJXE^x^=_4Y2C7JTX(Fx);;UK^}u>)J+dBKPpqfb zGwZqa!g^`FvR+$nthd%X>%H~C`e=Q!K3iX`uhuu~yY<8RY5lT(TYs!Dc33-{9o~*$ zN3tZQHShEp26M z+qFI0w*x!GPG%>!Q`jl(RCa1Rjh)s`XQ#I_*ct6ic4j+^oz>1}XSZ|MIqh6_Zaa^i z*Uo3>w+q+>?Lu~8yNF%XE@l_EOV}mtQg&&(j9u0)XP37t*cI(cc4fPYUDd8;SGQ}} zHSJn|oT5%Kr?^wXDe07QN;_qovQ9atyi>uc=u~nlJ5`*j zPBo{xQ^Tq0)N*P&b)33RJ*U3Yz-j0-avD2LoTg4Qr@7O@Y3a0bT03o=woW^zz0<+z z=yY;AJ6)WvPB*8!)5GcM^m2MTeVo2dKc~Mlz!~Taat1p?oT1JzC)644jBrLeqny#s z7-y_A&Kd7aa3(sFoXO4?<{Z@I*Xje&Jt&-v&>oU ztZ-I3tDM!&8fUGu&ROqla5g%doXyS_XREW#+3xIcb~?M9-Oe6oud~nD?;LOrI)|LY z&JpLRbIdvJoN!J$r<~Ky8Rx8X&N=T~a4tHRoXgG?=c;qfx$fL>ZaTM|+s+;5u5-`1 z?>ulGI***k&J*XU^UQhfyl`GRubkJ;8|SU_&Ux>Aa6USpoX^e|=d1J0`R@F1emcLL z-_9Q=j0h{jiSQzVh$te7$Rdh}Dx!(#B8G@5Vu{!yj)*JbiTEOcNGKAC#3G4EDhy!? zOW48@LP(*67OwDwF9H!Fl8NLZg-9tvWe^>hsY^% ziQFQO$Sd-R{Gxy;C<=+fqKGIeiizT)geWOWiPEBsC@ac|@}h#MC@P7{qKc?0s)_2N zhNvlOiQ1x$s4MD;`l5koC>n{zqKRlKnu+G3g=i^SiPoZxXe-)@_M(I6C_0JGqKoJ% zx{2pTg5i9UF;A$#V)a1>=Ap#KCxdM5C_E}aabG?N5wI5T$~Um#VK)GoDpZm zIdNWG5EsQIaamjuSH(4PUEB~i#Vv7L+!1%hJ#k+=5D@mM?&PsKCwT)Yr3#Vhez zyb*83JMmt85Ff=S@mYKkU&S}^UHlL~#V_$&{1IVfSQ$=+ml0${8A(Q#QDjsZO-7e7 zWK0=L#+GqpTp3TsmkDG-nMfv)r6+wE$Pk%KCYLE>N|{Qg zmT6>KnNFsc8DvJ8NoJN=WLB9?W|ui+PMJ&QmU(1enNQ}I1!O^4NEVhwWKmg67MCSt zNm)vkmStpFSx%Oh6=X$ONmiCsWK~&BR+lwoO<7CUmUU!ZSx?rN4P-;vNH&&DWK-Ep zHkU1AOW8`cmThEP*-o~X9b`w@Np_Z9WLMcuc9%V5PuWZMmVIPj*-!SD1LQzCNDh`m zP1aa*13jm&xUFgTyUC^yN?a*Nz5x5@2thukT5$=z~~+$;CV z{qlf3C=bcQ@`yYtkICcmgghxv$rx{9GY;k7UaGh1qx!0Ts=peb2C6}7uo|L4zNF7#3)KPUz9aksRNp(t{R%g^% zbxxgE7t}>{NnKV~)Kzs&T~{~MO?6A%R(I50bx++_57a~TNIh0h)Km3LJy$Q(OZ7^< zR&Uf>^-jH4AJj+nNqtsd)K~RQeOEu!PxVXvR)16&9ae|a;dKNZQAg5|brc;{N7K=D z3>{O)(y?_M9aqQG@pS^7P$$xfbrPLa8`{*CwzZ>$mRf18UF~UK2RcM2)5&!Tol>XL zsdXBiR;SbHbq1YLXVRH<7M)dR)7f5fSJIVr6%bmSNGHX^#DCk57LA6 z5Is~6)1i8}9-&9-QF^oS=nqo}p*zS$ejfqvz^*dcIzu z7wScNv0kE=>ScPlUZGd&ReH5vqu1(ndcEGDH|kA#v)-b&>TPSOx2KA}(QQ~I<%qtEJd`nTCMCzM*gGTl%)X zqwnf_`o4akAL>W?v3{bT>Sy}7exYCLSNgSnqu=Ux`n~?3Kk85Vv;LyL>TmkH{-J;B zU;4NHqraJo7_#|rgT%esogYgS~s1W-p$}M;mYq_=EI&NLJo?G8-;5Kv{xsBZ>Zd13J+uUv8wsc#$t=%?m zTeqFt-tFLabUV47-7aodx0~DD?cw%xd%3;cK5k#PpWELZ;0|;Lxr5yy?ofA_8|n^s zN4O*1QSNAWj62pH=Z<$LxD(w;?qqk0JJp@$PIqUxGu>J4YjxEI|^?q&Cid)2+>UUzS}H{DzA zZTF6Q*S+W7cOSS9-AC?Y_lf(|eda!QU$`&bSMF=~jr-Pp=e~D8xF6k5?q~Ol`_=vC zes_PkKiyyMZ}*QI#tZ9(^TK-(yog>TFR~ZKi|R%5qI)sCm|iR|wim~X>&5fpdkMUR zULr5Cm&8lz8J_7`p6xlF@T8|a?YW-k`Cj0Kc*(rvUJ5Uzm&!}+rSZ~w>Adt_1}~$R z$;<3z@v?f^yzE{MFQ=Ew%kAay@_PBa{9XaCpjXH%>=p5fdd0lrUJ0+HSIR5xmGR1Y z<-GD<1+Su4$*b&D@v3^&yy{*JuclYatL@eC>U#CO`d$OCq1VW3>^1S4dd+SXN`g;Am{@ws@pf|`H><#gT zdc(X>Z@4$Y8|jVmMtfttvEDduyf?v{=uPq_dsDor-ZXEzH^ZCh&GKe@bG*6UJa4|Y zz+31o@)mnbyrteUZ@IU^Tj{OxR(or_wca{!y|=;J=xy>gdt1D%-ZpQ$x5L}%?ecbe zd%V5gK5xHwz&q$2@(z1PyrbSR@3?ouJL#SBPJ3s(v)(!Hym!I7=w0$Idsn=x-Zk&K zcf-5s-STdGcf7maJ@3BvzYnedTN4^*!JB13$!1<|p@4_$mEVeri9BpVm+3 zr}s1X8U0LtWP zerdmqU)C?@m-j3975z$nWxtAF)vxAP_iOky{aSu)zm8wmujkkI8~6?VMt);!pLb`P2Ow{!D+CKii+< z&-Lf|^Zf<>LVuCJ*k9r=^_Tg}{T2R7f0e)5U*oU!*ZJ%H4gN-dlfT*D;&1i0`P=;+ z{!V|FzuVvA@Adcj`~3s{LI03{*gxVQ^^f_-{S*F4|CE2)KjWYE&-v&53;sp_l7HF1 z;$QWz`Pcm${!Rauf7`#~-}UeL_x%U{L;sQg*ni?b^`H6A{TKdA|CRsRf8)RP-}&$T z5B^90lmFTO;(ztO`QQB?{!jmx|J(oLhY7+4;ezl%gdk!NDTo|I38Dtkg6KhvAZ8FN zh#kZU;s)`8_(6goVUQ?D93%;n21Z~8R$vECAOabvKnHH%1%40&AwjYrd5|JV8KeqQ z2Wf(|LAoG)kRiwzWC}6|S%R!Vwjg_uBgh%#3UUW|g1kY#Ab(IGC>Rt93I|1kqCv5s zcu*oJ8I%f22W5h?LAjuOP$8%oR0=8wRf4KPwV--XBd8hF3Tg*+g1SMypnlLGXc#mK z8V5~+ra`lydC($g8MF#o2W^73LA#)R&>`p;bP75LU4pJbx1f8_Bj_3Q3VH{9g1$k& zpnotR7#Iu+1_wiep~0{qG#DO?2u22@g3-a4U~Dih7#~asCI*v&$-$IhYA`LB9?S@4 z2D5_M!JJ@jFfW)NEC?0`i-N_$l3;1DELa|_2v!EGg4MyAU~RB2SRZT%HU^u5&B2yn zYp^ZY9_$Eq2D^gY!Jc4murJsj90(2uhl0bwk>F@>EI1yV2u=p4g44m7;B0U%I3HXH zE(Vu^%fXf4YH%&M9^43S2DgIS!JXi4a4)zYJO~~JkAla+li+FaEO;Kg2wn!Sg4e;D z;BD|OcprQSJ_etH&%u}AYw#`j9{dP?2ET&e!Ji;ZNZ62YA>l(JghUL96cRZkN=Vd@ zXd%%0+%<00Vcp*}xzNhd>;4y6_cw`d{ohM}Q`$xE4jcZS z{_l*vjsILDmQIIO>X+?rPyKiLf6WyAC;s!FivB+fQ?e=9yFz=W6x6JrugiUyi!p^Xj-l&DaniyrzIUw&m$7U`4Eim9Yv|#cEg`YhX>Rg|)E`*2Q{Q9~)ppY=n)m2{y%M*c@A6 zOKgR$u?@DxcGw;}U`OnPov{mc#ctRgdtguOg}t#4_QihK9|zz-9E5{$2oA+z7>dJj z1dhZ}I2y;`SR9AraRN@nNjMp&;8dK3({TpQ#925S=ipqNhx2g(F2qH+7?_uyXKhx_pW9>ha<7?0plJch^d z1fIlGcpA^(Sv-g5@d94NOL!Tt;8nba*YO74#9Me9@8Dg$hxhRTKEy}(7@y!%e1^~Q z1-`^r_!{5fTYQJ_@dJLuPxu+X;8*;H-|+|j#9#Ou|KQ)e*?%i6hQsg}0V850jEqq* zDn`TT7z1NsER2o+Bw7DcaWNkL6J`BRCBTIE&$fntDlsO(q-dat7TV~bK#2-9y6B;g z0ft~QOpYlqC8omEmkgV;gLX?XW#|z>e4nJ7X8@irug~_Q0Ol3wvW9 z?2G-dKMufwI0y&h5FCobFcgR52pox{a5Rp=u{aLL;{=?DlW;Ol!KpY6r{fHqiL-Dv z&cV4j59i|oT!@QsF)qQSxD1!$3S5b+a5b*MwYUz~;|AP_n{YF3!L7Irx8n}niMwz& z?!mpd5BK8%Jcx(zFdo69cnpu@2|S6X@HC#mvv>~A;|08km+&%P!K-);uj388iMQ}J z-od+g5AWjxe29{VlK>$c`z^L!~9qP3t}NG zj76|07Q^CL0!v~kERAKbESAIaSOF_yC9I59uqsx=>R1D7VlAwVb+9hh!}{0&8)74D zj7_j9HpAxF0$XA$Y>jQOEw;n<*a16YC+v(}uq$@M?$`r+VlV8CeXuX~!~Qq`2jU6G62FKz!9FG%lB2L1|I0dKTG@Onza3;>e**FL1;yj#>3veMW z!o|1*m*O&9jw^5_uEN#02G`;`T#p-YBW}XYxCOW3Hr$Roa3}7<-M9z$;y&Du2k;;s z!ozq3kK!>rjwkRWp2E|32G8O-JdYRfB3{DFcm=QGHN1{D@Fw2E+js}>;yt{N5AY#A z!pHaopW-uojxX>fzQWh|2H)a4e2*XSBYwiq_yxb>H~fx2@F)Jl-}ndrTOJlRJo6vJ zRx^VRVdvF)ct8Ud)I2u>cmt zLRc7!U{NfF#jymI#8Oxq%V1e7hvl&XR>VqJ8LMDb{C6eP-}|#VeGROMwXinU!Ma!v z>th3Kh>fr@Ho>OY44Y#MY>BO~HMYUF*bduc2keNQurqeSuGkH`V-M_!y|6d-!M@lJ z`{Mu{h=Xu24#A-~3`21^j=+&P3Pcz=gO77vmCKipy|0uE3SJ3RmMAT#M^)J#N5_xCuAo7Tk*4a69h6owy5k;~w0L z`*1%Vz=L=Q591L$ipTIcp1_lM3Qyx1Jd5Y>JYK+ycnL4#6}*bq@H*bWn|KRv;~l(< z_wYVGz=!w;O(V-YNh#jrS*z>-)BOJf- zus$}xhS&%jV-swO&9FJPz?RqwTVoq+i|w#IcEFC<2|HsK?26s6JNCey*b94OAMA_$ zus;sKfj9^U;}9H*!!Q(w;|Lsyqi{5i!Lc|F$KwQ?h?8(KPQj@-4X5J_oQbn=HqODh zI1lIJ0$hlTa4{~yrML{2;|g4ft8g{0!L_&!*W(7kM!LxV{&*KHWh?np(Ucsw)4X@)3yotB)Hr~Oz zcn|O61AK^&@G(BYr}zw?;|qL=ukba#!MFGh-{S}Th@bE?e!;K!4Zq_L{E5HtH~zuD zduIQwuow=*V+4$dkuWkw!KfGwqhkz=iLo#?#=*E4594D3Oo)jvF($#JXrPG}+UTG_ zi3&Bk=%J4RhF~&GjwvuDroz;i2Ge3XOph5bBWA+Pm<6+9Hq4GWFem21+?WURVm{1| z1+X9%!opYti()Y>jwP@pmcr6l2FqeOERPkiB38o6SOu%%zZRg|)E` z*2Q{Q9~)ppY=n)m2{y%M*c@A6OKgR$u?@DxcGw;}U`OnPov{mc#ctRgdtguOg}t#4 z_QihK9|zz-9E5{$2oA+z7>dJj1dhZ}I2y;`SR9AraRN@nNjMp&;8dK3({TpQ#925S z=ipqNhx2g(F2qH+7? z_uyXKhx_pW9>ha<7?0plJch^d1fIlGcpA^(Sv-g5@d94NOL!Tt;8nba*YO74#9Me9 z@8Dg$hxhRTKEy}(7@y!%e1^~Q1-`^r_!{5fTYQJ_@dJLuPxu+X;8*;H-|+|j#9#Ou z|KQ&(^Z%Rw7!Jc@1dNE0FfvBLs2B~SV+@Rmu`o8q!MGR?<6{C$h>0*UCc&g=potdR z=%7G}3N^aup^pKEU@}aODKI6b!qk`s(_%VIj~Or{X2Q&v1+!u{%#JxQC+5Q3m zKFp5=upkz~!dL{0Vlga^C9oux!qQj<%VIe!j}@>YR>I0y1*>8;td2FXCf35*SO@E3 zJ*D!}YiUH{vGTj9YLkZo}=k19##s+>Lv1 zFYd$rcmNOLAv}yn@F*U`<9Gs3;we0hXYeeZ!}E9nFXAP8n18?Fjyp4D8 zF5biY_y8Z`BYccc@F_mS=lB9&;wyZOZ}2U?!}s_BKjJ6+j9>68e#7th1ApQ#{EdGw zOl0OihQsg}0V850jEqq*Dn`TT7z1NsER2nDFfPW!_?Q3_Vj@h8NiZoIXrhHSIw(-0 zLX9qZ=wpB(m<*F+3QUQqFg2#Zw3rUlV+PEKnJ_bE!K|1Kvttg-iMcR0=E1y}5A$OI zEQp1$Fc!h0SPY9}2`q`Fur!vzvRDqwV+E{;m9R2a!Kzpdt78qUiM6mc*1@`159?zC zY>17pF*d=b*bJLv3v7w4ur;>9w%88aV+ZVrov<@@!LHa1yJHXRiM_Bl_QAf`5BuW) z9EgK(Fb=_?I1EE^IF7)PI0{GO7#xe^a6C@Hi8u)-;}o2V({MV@z?nD;XX6~4i}P?k zF2IGj2p8iLT#CzZIj+E!xC&R}8eEI(a6N9ojkpOn;}+bC+i*MXz@4}YcjF%1i~Ddt z9>9Zm2oK{CJc`HgIG(_hcnVMB89a;U@H}3?i+Bky;}yJ$*YG;tz?*mrZ{r=ji}&z8 zKEQ|g2p{7Ue2UNTIljP`_zGX+8+?oJ@I8LOkN62c;}`sj-|##Bz@PXFf8!qv6NUMY z;V?W#z=#+LBV!bdiqSAS#=w{u3u9v(jEnIwJ|@6~m{VlK>$c`z^L!~9qP3t}NG zj76|07Q^CL0!v~kERAKbESAIaSOF_yC9I59uqsx=>R1D7VlAwVb+9hh!}{0&8)74D zj7_j9HpAxF0$XA$Y>jQOEw;n<*a16YC+v(}uq$@M?$`r+VlV8CeXuX~!~Qq`2jU6G62FKz!9FG%lB2L1|I0dKTG@Onza3;>e**FL1;yj#>3veMW z!o|1*m*O&9jw^5_uEN#02G`;`T#p-YBW}XYxCOW3Hr$Roa3}7<-M9z$;y&Du2k;;s z!ozq3kK!>rjwkRWp2E|32G8O-JdYRfB3{DFcm=QGHN1{D@Fw2E+js}>;yt{N5AY#A z!pHaopW-uojxX>fzQWh|2H)a4e2*XSBYwiq_yxb>H~fx2@F)Jl-}nc^L}mVCI1G;w zFd|06$QT8qVl<47F)${^!q^xG<6=CFj|ng#Cc?y+1e2nHCR%8tg90Tg)aaszJ_Z;O(V-YNh z#jrS*z>-)BOJf-us$}xhS&%jV-swO z&9FJPz?RqwTVoq+i|w#IcEFC<2|HsK?26s6JNCey*b94OAMA_$us;sKfj9^U;}9H* z!!Q(w;|Lsyqi{5i!Lc|F$KwQ?h?8(KPQj@-4X5J_oQbn=HqODhI1lIJ0$hlTa4{~y zrML{2;|g4ft8g{0!L_&!*W(7kM!LxV{&*KHWh?np(Ucsw)4X@)3yotB)Hr~Ozcn|O61AK^&@G(BY zr}zw?;|qL=ukba#!MFGh-{S}Th@bE?e!;K!4Zq_L{E5HtH~zse(U|`j4#Q&vjEIpi zGDg9u7!9Li42+4fFgC`)xEK%PV**Twi7+uH!K7%Qi5A-Epg@TVHM;1bj{$~YGE9ys zFeRqK)R+d-VmeHZ889Pe!pxWjvtl;PjyW(V=EB^V2lHY+%#Q`IAQr;HSOkk=F)WTH zuq2kk(pUz|VmU026|f>!!pc|$t70{*jy13**23CY2kT-ztd9+_AvVIs*aVwmGi;76 zuqC#_*4PHyVmoY)9k3&I!p_(QyJ9!&jy)Jra4e3)@i+k|;v}4mQ*bIy!|6B!XW}fJjdO4=&cpe*02ksST#QR_DK5k1 zxB^$=DqM|ga4oLG^|%2y;wIdTTW~9G!|k{Ocj7MGjeBq}?!*0f01x6JJd8*1C?3P( zcmhx2DLjp5@GPFg^LPO-;w8L{SMVxc!|QkhZ{jVyjd$=a-oyL&03YHbe2h=_xJ%n;wSu!U+^n_!|(V5f8sCvjeqdJpx&_2|Mwmc4#Q&vjEIpi zGDg9u7!9Li42+4fFgC`)xEK%PV**Twi7+uH!K7%Qi5A-Epg@TVHM;1bj{$~YGE9ys zFeRqK)R+d-VmeHZ889Pe!pxWjvtl;PjyW(V=EB^V2lHY+%#Q`IAQr;HSOkk=F)WTH zuq2kk(pUz|VmU026|f>!!pc|$t70{*jy13**23CY2kT-ztd9+_AvVIs*aVwmGi;76 zuqC#_*4PHyVmoY)9k3&I!p_(QyJ9!&jy)Jra4e3)@i+k|;v}4mQ*bIy!|6B!XW}fJjdO4=&cpe*02ksST#QR_DK5k1 zxB^$=DqM|ga4oLG^|%2y;wIdTTW~9G!|k{Ocj7MGjeBq}?!*0f01x6JJd8*1C?3P( zcmhx2DLjp5@GPFg^LPO-;w8L{SMVxc!|QkhZ{jVyjd$=a-oyL&03YHbe2h=_xJ%n;wSu!U+^n_!|(V5f8sCvjeqdJfc~&CnEx0aBVa^~gpn}{ zM#X3t9b;fjjD@i=4#vfJ7#|a0LQI5-F$pF`15LEhMh68-RH)HK4}AtTItfDN$`HpV8{6q{jlY=JGY z6}HAU*cRJid+dN6u@iR2F4z^jVR!6-J+T+|#y;2=`(b|^fCF(54#puk6o+9b4#yEV z5=Y@^9D`$V9FE5cI1wk|WSoLiaT-p?88{PX;cT3Pb8#Nd#|5|$7vW-Df=h83F2@zP z5?A4BT!U+I9j?a>xDhwuX54~XaT{*O9k>&B;cnc6dvPD`#{+l}58+`vf=BTf9>)`S z5>Mf2JcDQP9G=Guco8q*WxRq{@fu#o8+a3M;cdKwckv$H#|QWjAK_zsf=}@oKF1gM z5?|qKe1mWC9lpm8_z^$hXZ(U+@f&`}ANUi0;cxtd|1IVT87|{8{=SHjEC_t0Vc#mm>82_QZ&#+3vF~zphSflUG&h$07EbtCdU+*5>sJn zOoM4L9j3<&m=QB!X3T_y7RM4;5=&ue zEQ4jS9G1rlSP?5>Wvqf#u^Lv#8dwu+VQs8~b+I1S#|GFC8)0K?f=#g*Hpdp&5?f(w zY=dpF9k#~~*bzHnXY7Jqu^V>B9@rCmVQ=h%eX$?*#{oDH2jO5Gffg^Dg zj>a)K7RTXuoPZN?5>Cb`I2EVibew@RaTdnch zFeb*r*cb=nVmyqG2{0ih!o-*alcIqpT4Js)Gh-IairFwb=D?ho3v**0%!~OjKNi4(SO^Pa5iE+uusD{$l2{5$V;L-q z<*+*1(!r3u|K?tc&%qJ~qIH*a#bA6KsmjusOECme>kgV;gLX z?XW#|z>e4nJ7X8@irug~_Q0Ol3wvW9?2G-dKMufwI0y&h5FCobFcgR52pox{a5Rp= zu{aLL;{=?DlW;Ol!KpY6r{fHqiL-Dv&cV4j59i|oT!@QsF)qQSxD1!$3S5b+a5b*M zwYUz~;|AP_n{YF3!L7Irx8n}niMwz&?!mpd5BK8%Jcx(zFdo69cnpu@2|S6X@HC#m zvv>~A;|08km+&%P!K-);uj388iMQ}J-od+g5AWjxe29Vx% zJ$As3*ax}57z<-# z9E^+cFg_;0gqR2uV-ie?2AXK0jSdQws8FMe9{Lzy2qweim;zH`Dol-OFfFFT^q2uN zVkXRtSuiVR!|a#?b7C&cjd?IH=EMA001ILvER034C>F!wSOQC8DJ+d;uq>9t@>l^Y zVkNAMRj?{n!|GTAYho>|jdidt*2DVP02^W>Y>Z8?DK^9A*aBN(D{PHzur0R3_SgYC zVkhj3U9c;5!|vDvdtxu_jeW2$_QU=-00-hA9E?M7C=SC=9F8M!B#y$-I0nb!I2?}? za3W5^$v6e4;xwF&GjJx(!r3?n=i)q^j|*@iF2cpQ1efA6T#hSnC9cBNxCYnaI$Vz% za3gNQ&A0`(;x^olJ8&oN!rizB_u@X>j|cD|9>T+T1drk|JdP*uB%Z?4cm~hnIXsUS z@FHHq%XkH^;x)XEH}EFj!rOQU@8UhYj}P!6KElWN1fSwFe2y>hCBDMf_y*tNJA98H z@FRZ0&-ewu;y3(`Kkz61!r%A@!^CC&V>k?t5ilY~!pIl}qhd6SjxjJM#=_Vb2jgNq zjE@O0Atu7am;{refhJmLqk{q^D%9wrhdu@vg2^yBrofb#3R7bmOpEC-J!Zg+mVx%J$As3*a0*UCc&g=potdR=%7G}3N^aup^pKEU@}aODKI6b!qk`s(_%VIj~Or{X2Q&v1+!u{ z%#JxQC+5Q3mKFp5=upkz~!dL{0Vlga^C9oux!qQj<%VIe!j}@>YR>I0y1*>8; ztd2FXCf35*SO@E3J*D!}YiUH{vGTj9YLk zZo}=k19##s+>Lv1FYd$rcmNOLAv}yn@F*U`<9Gs3;we0hXYeeZ!}E9nFXAP8n18?Fjyp4D8F5biY_y8Z`BYccc@F_mS=lB9&;wyZOZ}2U?!}s_BKjJ6+j9>68 ze#7th1ApQ#{EdGwOnl})hQsg}0V850jEqq*Dn`TT7z1NsER2nDFfPW!_?Q3_Vj@h8 zNiZoIXrhHSIw(-0LX9qZ=wpB(m<*F+3QUQqFg2#Zw3rUlV+PEKnJ_bE!K|1Kvttg- ziMcR0=E1y}5A$OIEQp1$Fc!h0|A&{m45%XL8#X>O3y9d=UD(})9Viyqh?FAs0qkR= zVt03UcXxMpcX!9TbIt`Sa^KJMe0k4@{q4@q&hGwaW@njm6suzmtcmVe3u~hX*1@`1 z59?zC^h7Ugh>fr@Ho>OY44b1jwm=_jiN5HE{uqFP*a}-?5VpZ!Y>Vx%J$As3*a|i>#ctRgdtguOg;wm1eXuX~!~Qq`2Vyu5!ofHMBXB4V!{ImrN8%_Pjbm^u zj>GXd0Vm=loQzX&Do(@cI0I+mES!yVa4ycn`M3ZV;v!s(OK>SJ!{xXFSK=yMjcaf% zuEX`X0XO0%+>BdrD{jN>xC3|MF5HcKa4+t|{dfQm;vqbYNAM^f!{c}YPvR*&jc4#I zp2PEa0Wabuyo^`yDqh3ucmr?ZExe6)@GjoN`}hDK;v;;FPw*)|!{_({U*ao#jc@QR zzQgzU0YBm={ET1lD}KZ8_yd39FBC}`|52fV4(NzZ7z>>-Ho9OOjEnIwJ|@6~mJs)Gh-IairFwb=0I1>iMcR0=E1y}5A$OIEQp1$ zFc!h0SPY9}2`q`Fur!vzvRDqwqZ?MhidYFNV->85)v!9&z?$fewXimNU>&TB^{_rR zKu`3-hS&%jV-swO&9FIoV+-`bmgtLq=#K#yh^??S24Ncv#ZzFARfZQcm$8)F+7eZ@FbqX(|88Y;yFBz z7w{rp!pnFCui`bljyLco-oo2>2k+uNypIp?AwI&#_ynKgGklIO@Fl*&*Z2nC;yZkg zAMhi7!q4~xzv4Iijz91x{z8$A@gEf$=zxysgt5>WW1|bk!MGR?<6{C$h>0*UCc&hb z43lFDOo^#5HKxI|m=4op2F!?=Ff(Sste6e6V-9r1oR|x9V;;17pF*d=b*bJMaH?}|@Y>B?;hyECVf!GRLV-U8%U~G%+uswFbj@Su1qXk1S6vMC! zcExVk9eZF;?1fhBjeW2$_QU=-00&|?4#L4W1S4=L4#VL%0!QK~9F1deERMtRH~}Z( zB%F*>a4Js2={N&t;w+qvb8s%s!}+)X7vdsZj7xASF2m)x0$1WHT#ajREw01$xB)lf zCftl$a4T-Z?YIMX;x62cdvGuA!~J*w58@#_j7RV&9>e2!0#D*8JdJ1YES|&jcmXfs zCA^GR@G4%z>v#ii;w`+5cknLW!~6IEAL1i?j8E_>KEvnu0$<`Qe2s7LExyC|_yIrS zC;W_G@GE}9@Aw0M;x81*8UInCfez@1P8bWFF*dqj9E^+cFg_;0gqR2uV-ie?$uK#l zz?7H@Q)3!Ti|H^uX26V?2{U6B%!=7CJLW)F%!#=$H|D{-m=E(~0W64xurL*1($RjKQ~H3nfD492$D4%=e~?1-JPGg>eNLop1yU{~yh z-LVJu#9nB{-q;8GVn6JU18^XQ;~*T2Lofn|;xHVJBXA^+!qGSe$Kp5~j}verPQuAJ z1*hUPoQ^YaCeFgyI0xtAJe-dUa3LSeNC+@=CxCi&*KHQH7@E{(-!*~Rb;xRmqC-5Ym!qa#L&*C{ej~DPFUc$?G z1+U^YypA{UCf>r^cn9y|J-m+(@F70J$M^)F;xl}XFYqP4!q@l)-{L!bk00yhEV*~U=FKmd7urW5l zrq~Rdqc^rdA8d)f=!gCofPvTwTVoKm!C-8Q?XW#|z>e4nJEH|dFcibE3wFhB*d2Rd zPwa(O?2Ub}FZRR!H~)Jra4e3)@i+k|;v}4mQ*bIy z!|6B!XW}fJjdO4=&cpe*02ksST#QR_DK5k1xB^$=DqM|ga4oLG^|%2y;wIdTTW~9G z!|k{Ocj7MGjeBq}?!*0f01x6JJd8*1C?3P(cmhx2DLjp5@GPFg^LPO-;w8L{SMVxc z!|QkhZ{jVyjd$=a-oyL&03YHbe2h=_xJ%n;wSu!U+^n_ z!|(V5f8s9`DH;D!p@9zQh)x&_oiR4LU>uB#@i0Cnz=W6x6JrugipelJrofb#3R7bm zOpEC-J!Zg+mLgW zIeKFY^udj0T_s_ur&r@8w|#_*bduc2keNQurpdP1Vb?lyI@!BhTX9T_QYOj z#opKl`(i)rj{|TZhT|X{j6*O2hvG0Cjw5g+j>6G62FKz!9FG%lB2L1|I0dKTG@Onz za3;>e**FL1;yj#>3veMW!o|1*m*O&9jw^5_uEN#02G`;`T#p-YBW}XYxCOW3Hr$Ro za3}7<-M9z$;y&Du2k;;s!ozq3kK!>rjwkRWp2E|32G8O-JdYRfB3{DFcm=QGHN1{D z@Fw2E+js}>;yt{N5AY#A!pHaopW-uojxX>fzQWh|2H)a4e2*XSBYwiq_yxb>H~fx2 z@F)I4k&5vj6&mP(j_8E3&>3T+3&z2?7!TuP0!)aBFfk^th4-L@#WJjj%B`!KT;@o1-_j zKp$+0zUYVk7=VG;3R`0kw!vU*i|w#IcEFC<2|J?&LogJ>unTs@ZrB}rU{CCYR_u*^ zurKz*{x|>!VmJ=M!8imXa3~JL;Wz?E;wT)AV{j~v!|^x)C*mZWj8kwbPQ&Rq183qa zoQ-pEF3!XGxBwU8B3z71a49as<+uV@;woH?Yj7>D!}YiUH{vGTj9YLkZo}=k19##s z+>Lv1FYd$rcmNOLAv}yn@F*U`<9Gs3;we0hXYeeZ!}E9nFXAP8n18?Fj zyp4D8F5biY_y8Z`BYccc@F_mS=lB9&;wyZOZ}2U?!}s_BKjJ6+j9>68e#7th1ApQ# z6sZ~iQK5kj=!i}j3!O1Gx?miPi}5f%CcuQ42oqxxOp3`cIi|prmus$|GPxQiu*a#bA6KsmjusM2T3-rO3 z=!<^nj{z8nt*|u)VH*s_w%88aV+ZVrov<@nFa$#}47*@g?1tU32lm8XXvN;x2m4|_ z?2iL*Aco^09E?LS0*B%-9F8M!B#y$-I0nb!I2?}?a3W5^$v6e4;xwF&GjJx(!r3?n z=i)q^j|*@iF2cpQ1efA6T#hSnC9cBNxCYnaI$Vz%a3gNQ&A0`(;x^olJ8&oN!rizB z_u@X>j|cD|9>T+T1drk|JdP*uB%Z?4cm~hnIXsUS@FHHq%XkH^;x)XEH}EFj!rOQU z@8UhYj}P!6KElWN1fSwFe2y>hCBDMf_y*tNJA98H@FRZ0&-ewu;y3(`Kkz61LXn2? z9~BztfR5;dvCtV~qYK8txEK%PV**Twi7+uH!K9cBlVb`@iK#F(roptB4%1@>%!rvV zGiJf8m<_XI4s^wwm;O(V-YNh#jrS*z>-)BOJf-7)R4Xa}ftcmVe3u~hX*1@`159?zC^h7Ugh>fr@Ho>OY44b1jwm=_jiN5HE z{uqFP*a}-?5VpZ!Y>Vx%J$As3*a|i>#ctRgdtguOg;wm1eXuX~!~Qq` z2Vyu5!ofHMBXB4V!{ImrN8%_Pjbm^uj>GXd0Vm=loQzX&Do(@cI0I+mES!yVa4ycn z`M3ZV;v!s(OK>SJ!{xXFSK=yMjcaf%uEX`X0XO0%+>BdrD{jN>xC3|MF5HcKa4+t| z{dfQm;vqbYNAM^f!{c}YPvR*&jc4#Ip2PEa0Wabuyo^`yDqh3ucmr?ZExe6)@GjoN z`}hDK;v;;FPw*)|!{_({U*ao#jc@QRzQgzU0YBm={ET1lD}KZ8_yd39FBEAR|52fV z4(NzZ7z>>-Ho9OOjEnIwJ|@6~mJs)Gh-Ia zirFwb=0I1>iMcR0=E1y}5A$OIEQp1$Fc!h0SPY9}2`q`Fur!vzvRDqwqZ?MhidYFN zV->85)v!9&z?$fewXimNU>&TB^{_rRKu`3-hS&%jV-swO&9FIoV+-`bmgtLq=#K#y zh^??S24Ncv#ZzF zARfZQcm$8)F+7eZ@FbqX(|88Y;yFBz7w{rp!pnFCui`bljyLco-oo2>2k+uNypIp? zAwI&#_ynKgGklIO@Fl*&*Z2nC;yZkgAMhi7!q4~xzv4Iijz91x{z8$C@gEf$=zxys zgt5>WW1|bk!MGR?<6{C$h>0*UCc&hb43lFDOo^#5HKxI|m=4op2F!?=Ff(Sste6e6 zV-9r1oR|x9V;;17pF*d=b*bJMaH?}|@Y>B?;hyECVf!GRL zV-U8%U~G%+uswFbj@Su1qXk1S6vMC!cExVk9eZF;?1fhBjeW2$_QU=-00&|?4#L4W z1S4=L4#VL%0!QK~9F1deERMtRH~}Z(B%F*>a4Js2={N&t;w+qvb8s%s!}+)X7vdsZ zj7xASF2m)x0$1WHT#ajREw01$xB)lfCftl$a4T-Z?YIMX;x62cdvGuA!~J*w58@#_ zj7RV&9>e2!0#D*8JdJ1YES|&jcmXfsCA^GR@G4%z>v#ii;w`+5cknLW!~6IEAL1i? zj8E_>KEvnu0$<`Qe2s7LExyC|_yIrSC;W_G@GE}9@Aw0M;x82G8UInCfez@1P8bWF zF*dqj9E^+cFg_;0gqR2uV-ie?$uK#lz?7H@Q)3!Ti|H^uX26V?2{U6B%!=7CJLW)F z%!#=$H|D{-m=E(~0W64xurL z*1($RjKQ~H3nfD z492$D4%=e~?1-JPGg>eNLop1yU{~yh-LVJu#9nB{-q;8GVn6JU18^XQ;~*T2Lofn| z;xHVJBXA^+!qGSe$Kp5~j}verPQuAJ1*hUPoQ^YaCeFgyI0xtAJe-dUa3LSeNC+@=CxCi&*KHQH7@E{(-!*~Rb z;xRmqC-5Ym!qa#L&*C{ej~DPFUc$?G1+U^YypA{UCf>r^cn9y|J-m+(@F70J$M^)F z;xl}XFYqP4!q@l)-{L!bk00yhEV*~U=FKmd7urW5lrq~Rdqc^rdA8d)f=!gCofPvTwTVoKm!C-8Q z?XW#|z>e4nJEH|dFcibE3wFhB*d2RdPwa(O?2Ub}FZRR!H~)Jra4e3)@i+k|;v}4mQ*bIy!|6B!XW}fJjdO4=&cpe*02ksST#QR_DK5k1 zxB^$=DqM|ga4oLG^|%2y;wIdTTW~9G!|k{Ocj7MGjeBq}?!*0f01x6JJd8*1C?3P( zcmhx2DLjp5@GPFg^LPO-;w8L{SMVxc!|QkhZ{jVyjd$=a-oyL&03YHbe2h=_xJ%n;wSu!U+^n_!|(V5f8s9`85#dkp@9zQh)x&_oiR4LU>uB# z@i0Cnz=W6x6JrugipelJrofb#3R7bmOpEC-J!Zg+mLgWIeKFY^udj0T_s_ur&r@8w|#_*bduc z2keNQurpdP1Vb?lyI@!BhTX9T_QYOj#opKl`(i)rj{|TZhT|X{j6*O2hvG0Cjw5g+ zj>6G62FKz!9FG%lB2L1|I0dKTG@Onza3;>e**FL1;yj#>3veMW!o|1*m*O&9jw^5_ zuEN#02G`;`T#p-YBW}XYxCOW3Hr$Roa3}7<-M9z$;y&Du2k;;s!ozq3kK!>rjwkRW zp2E|32G8O-JdYRfB3{DFcm=QGHN1{D@Fw2E+js}>;yt{N5AY#A!pHaopW-uojxX>f zzQWh|2H)a4e2*XSBYwiq_yxb>H~fx2@F)I4kxAG-5)~TgfR5;dvCtV~qYK8txEK%P zV**Twi7+uH!K9cBlVb`@iK#F(roptB4%1@>%!rvVGiJf8m<_XI4s^wwm;O(V-YNh#jrS*z>-)BOJf-7)R4Xa}ftcmVe3u~hX z*1@`159?zC^h7Ugh>fr@Ho>OY44b1jwm=_jiN5HE{uqFP*a}-?5VpZ!Y>Vx%J$As3 z*a|i>#ctRgdtguOg;wm1eXuX~!~Qq`2Vyu5!ofHMBXB4V!{ImrN8%_P zjbm^uj>GXd0Vm=loQzX&Do(@cI0I+mES!yVa4ycn`M3ZV;v!s(OK>SJ!{xXFSK=yM zjcaf%uEX`X0XO0%+>BdrD{jN>xC3|MF5HcKa4+t|{dfQm;vqbYNAM^f!{c}YPvR*& zjc4#Ip2PEa0Wabuyo^`yDqh3ucmr?ZExe6)@GjoN`}hDK;v;;FPw*)|!{_({U*ao# zjc@QRzQgzU0YBm={ET1lD}KZ8_yd39FBF*>|52fV4(NzZ7z>>-Ho9OOjEnIwJ|@6~ zmJs)Gh-IairFwb=0I1>iMcR0=E1y}5A$OI zEQp1$Fc!h0SPY9}2`q`Fur!vzvRDqwqZ?MhidYFNV->85)v!9&z?$fewXimNU>&TB z^{_rRKu`3-hS&%jV-swO&9FIoV+-`bmgtLq=#K#yh^??S24Ncv#ZzFARfZQcm$8)F+7eZ@FbqX(|88Y z;yFBz7w{rp!pnFCui`bljyLco-oo2>2k+uNypIp?AwI&#_ynKgGklIO@Fl*&*Z2nC z;yZkgAMhi7!q4~xzv4Iijz91x{z8$3@gEf$=zxysgt5>WW1|bk!MGR?<6{C$h>0*U zCc&hb43lFDOo^#5HKxI|m=4op2F!?=Ff(Sste6e6V-9r1oR|x9V;;17pF*d=b*bJMaH?}|@Y>B?;hyECVf!GRLV-U8%U~G%+uswFbj@Su1qXk1S z6vMC!cExVk9eZF;?1fhBjeW2$_QU=-00&|?4#L4W1S4=L4#VL%0!QK~9F1deERMtR zH~}Z(B%F*>a4Js2={N&t;w+qvb8s%s!}+)X7vdsZj7xASF2m)x0$1WHT#ajREw01$ zxB)lfCftl$a4T-Z?YIMX;x62cdvGuA!~J*w58@#_j7RV&9>e2!0#D*8JdJ1YES|&j zcmXfsCA^GR@G4%z>v#ii;w`+5cknLW!~6IEAL1i?j8E_>KEvnu0$<`Qe2s7LExyC| z_yIrSC;W_G@GE}9@Aw0M;x80g8UInCfez@1P8bWFF*dqj9E^+cFg_;0gqR2uV-ie? z$uK#lz?7H@Q)3!Ti|H^uX26V?2{U6B%!=7CJLW)F%!#=$H|D{-m=E(~0W64xurL*1($RjKQ~H3nfD492$D4%=e~?1-JPGg>eNLop1y zU{~yh-LVJu#9nB{-q;8GVn6JU18^XQ;~*T2Lofn|;xHVJBXA^+!qGSe$Kp5~j}ver zPQuAJ1*hUPoQ^YaCeFgyI0xtAJe-dUa3LSeNC+@=CxCi&*KHQH7@E{(-!*~Rb;xRmqC-5Ym!qa#L&*C{ej~DPF zUc$?G1+U^YypA{UCf>r^cn9y|J-m+(@F70J$M^)F;xl}XFYqP4!q@l)-{L!bk00yhEV*~U=FKmd7 zurW5lrq~Rdqc^rdA8d)f=!gCofPvTwTVoKm!C-8Q?XW#|z>e4nJEH|dFcibE3wFhB z*d2RdPwa(O?2Ub}FZRR!H~)Jra4e3)@i+k|;v}4m zQ*bIy!|6B!XW}fJjdO4=&cpe*02ksST#QR_DK5k1xB^$=DqM|ga4oLG^|%2y;wIdT zTW~9G!|k{Ocj7MGjeBq}?!*0f01x6JJd8*1C?3P(cmhx2DLjp5@GPFg^LPO-;w8L{ zSMVxc!|QkhZ{jVyjd$=a-oyL&03YHbe2h=_xJ%n;wSu! zU+^n_!|(V5f8s9`*%|*)p@9zQh)x&_oiR4LU>uB#@i0Cnz=W6x6JrugipelJrofb# z3R7bmOpEC-J!Zg+mLgWIeKFY^udj0T_s_ur&r@8w|#_*bduc2keNQurpdP1Vb?lyI@!BhTX9T z_QYOj#opKl`(i)rj{|TZhT|X{j6*O2hvG0Cjw5g+j>6G62FKz!9FG%lB2L1|I0dKT zG@Onza3;>e**FL1;yj#>3veMW!o|1*m*O&9jw^5_uEN#02G`;`T#p-YBW}XYxCOW3 zHr$Roa3}7<-M9z$;y&Du2k;;s!ozq3kK!>rjwkRWp2E|32G8O-JdYRfB3{DFcm=QG zHN1{D@Fw2E+js}>;yt{N5AY#A!pHaopW-uojxX>fzQWh|2H)a4e2*XSBYwiq_yxb> zH~fx2@F)I4k%RFc6&mP(j_8E3&>3T+3&z2?7!TuP0u1#FO6?IgsJ>-`6e7&e%dt&| z(1OJ*8_liYW#%GhKg%W)t7WsfbPZl@I6RHo}8fo9hvt zr(@|ml0peXI0#4KBw`6?5nH&3I3liyC*q3)BB4km5{o1vsYoW0ixeWINF`E>G$O4? zC(?@yBBRJ8GK(xCtH>s@n;~))IYlm!TjUXWMLv;V6c7bPAyHTq5k*BYQCyS|B}FMw zT9grGMLAJkxQPm)qNpS)iz=e3s3xk58lt9f7qvuf;UVgXx}u(_FB%9>;UyZ1MxwE3 zBASY3qPg%EErgF~DSU;W@D~9hP_z=QMUZGCf<;@=PP7*tL`Ts{bQTs7B0@!&=pwp` zZlb&BA$p2l!YX=;KBBMaC;E#4VxR~YgT!DlL_~<8Vwe~%Mu?GOlo&0>h_Pav7%wJ> ziDHtNET)L5Vw#vPW{8<$mY6N(h`C~(m@gKHg<_FdES89+VwqSjR*02il~^s-h_zy! zST8n+jbfA7EVhWPVw>15c8Hx~m)I@#h`nN;*e?!@Ui{g^FEUt*F;+nWFZit)WmbfkMh`ZvRxGx@vhvJcVES`v`;+c3ZUWk|C zm3S@Qh_~XMcrQMPkK&W~EWU`Z;+yy`eu$sqms$N%Drrau=_s9KEa@y`OBWeO#+C78 ze3?Kdl!;_wnM5X)$z*bwLZ+0dWNMj4rj_YrdYM6Hl$m5^nMG!m*<^N^L%PbGGMCIP z^T@n1pUf`{$bzzvEG&!2qOzDQE=$OgvXm?>%gC~_oGdThWCdAKR+5!v6UPv1mj~oQc}O0XN90j?OdgjfZCd=iwaSpDok}z zT~#;LUG-2sRWD^#y;UF8SM^i<)c`e6g{whouo|Kw)KE1{4Ob)7NHt20R%6syHBOCJ z6VyaCNljK$)KoQ1O;4zNF7#3)KPUz9aksRNp(t{ zR%g^%bxxgE7t}>{NnKV~)Kzs&T~{~MO?6A%R(I50bx++_57a~TNIh0h)Km3LJy$Q( zOZ7^^-jH4AJj+nNqtsd)K~RQeOEu!PxZ@u^h-k-hT&j18cs$m!`X;!xEOJa zxJEo9zLCI4Xe2Tc8%d0$MlvJ0k-|u6q%u+)X^gZ+IwQT2!N_Q2GBO)kjI2gBBfF8q za5Zuoxs2RK9wV=j&&Y2SFbW!ljKW3{qo`5LC~lN6N*bk%(ncAhtWnM=Z@3v1jEY7j zqq0%OsA^O*sv9+onufbk%cyO57sCBh&~px)@!JZbo;bhtbpM zWmt{gMjxZE(a-2_3@`>7;l?0iurb7lFoqh#jN!%zW27<47;TI(#v0>{@x}yWqA|&s zY)mnx8q@oHl`;7g@0pp-?$T(~qF^(F?jN`@$8^Tq|^qH)Q%Y+Ny}8rO{L#tq}9am%=E+%fJN_l*0-1LL9b$O!cdUZV&1 z;I-y5D1A@{t7WUX<{Fgbua|*sI?etv5R^H>(=CJj-NybtU|&}x8R&qH=!CYH2y@+; z?bzsoaWF2%!}yp06JjDvj7cylCd1^I0#jltOpR$UEvCct7R1D7qC3{Y+US9GurAia`q%(H(F+@5BW#RKuqigf=ID(r&<9(hFZ!WB z24Enz!qymsZ7>+yVmoY)9k3&I!p>;H5DdjI?1Ejf8+OMY*b{r96?9Zm2oK{CJc`HgIG(_hcnVMB89a;U@H}3?i+Bky;}yJ$*YG;tz?*mrZ{r=ji}&z8 zKEQ|g2p{7Ue2UNTIljP`_zGX+8+?oJ@I8LOkN62c;}`sj-|##Bz@PXF&4~cpN1{Rl z9ncY-FcvyvY;?gm7#HJVd`y4|F%c%lB$yPFVRB4?DKQnM#x$4~(_wndfEh6pX2vX- z6|-S>%z>_$6LVp1%!7F`ALhpbSP%nj16|oXl z#wu79t6_Dlfi=+`Yhi8lz&cnL>tTItfS%}u4Y3h6#wOSln_+YG#un&sUZ z5L;nu48k@TjBT+Uw#N?G5j$aLv|tE^Vi3T+3&z2?7!TuP0!)aBFfk^th4-L@#WJjj%B`!KT;@o1-_jKp$+0zUYVk7=VG; z3R`0kw!vU*i|w#IcEFC<2|J?&LogJ>unTs@ZrB}rU{CCYR_u*^urKz*{x|>!VmJ=M z!8imXa3~JL;Wz?E;wT)AV{j~v!|^x)C*mZWj8kwbPQ&Rq183qaoQ-pEF3!XGxBwU8 zB3z71a49as<+uV@;woH?Yj7>D!}YiUH{vGTj9YLkZo}=k19##s+>Lv1FYd$rcmNOL zAv}yn@F*U`<9Gs3;we0hXYeeZ!}E9nFXAP8n18?Fjyp4D8F5biY_y8Z` zBYccc@F_mS=lB9&;wyZOZ}2U?!}s_BKjJ6+j9>68e#7th1ApQ#G=BtOAOBIIfez@1 zP8bWFF*dqj9E^+cFg_;0gqR2uV-ie?$uK#lz?7H@Q)3!Ti|H^uX26V?2{U6B%!=7C zJLW)F%!#=$H|D{-m=E(~0W64xurL*1($RjKQ~ zH3nfD492$D4%=e~?1-JPGg>eNLop1yU{~yh-LVJu#9nB{-q;8GVn6JU18^XQ;~*T2 zLofn|;xHVJBXA^+!qGSe$Kp5~j}verPQuAJ1*hUPoQ^YaCeFgyI0xtAJe-dUa3LSeNC+@=CxCi&*KHQH7@E{(- z!*~Rb;xRmqC-5Ym!qa#L&*C{ej~DPFUc$?G1+U^YypA{UCf>r^cn9y|J-m+(@F70J zsNd)5i5Bzsc@F09^GaCsY)ju%-2Byom#h7SMF=zXuTS*tP(QOU zJ)dMhtDaGc>8yH&$=7Pp6HLJ_=E7>xb4;$madm>e=-_zf!rP)}oU9f--{cycP$wrc z7w*E{(OsIqv()oX!AbN&Uu~FgScqAJ$@O*$bD?k0FLWnD=8%%&HSyZ{bSyj?PDuZU!X2g zPrn5QFEp37AIm;9SA4xKdJ^uhmZWFnxOd%r{%B10GGCXca5uZon9$AEnDiuGRE_AF zyvQ2Svw8p2$ZMTwYqtMGjp(_*Xc_;m5j`mwLyhP;LTW@$6Go4to-)+M{%>kTPb=DM zL{BV6FG)`_>XQC1HKHdZ|ELi?FKPBNJuOKu(=(IwGTqYYWqO{{YSFWlG4(P%YiaLg zx+Y`nWkD|^yO=QBp4B4F<-c7_=~QovVPbzeIOv2Jo=J{oy4jMPbjCk_R~<{|w^#1} zsU>~xV{1vyx;)#%Ft#ozh7-G(>1M#{2jT(?>ho6CPgmqe#}TaudC?;x2@h~W;Bo9SlgQs|71 zK~7dnN?S(fpewFHcWchx`s$M)EKdFnRGcpaYcQJ9)$e6)A-n{IL`ZTs0%A^a7;r=q~j8;n)6KW`{&S|e9 z9Uf{Zo4IPWWVh}6w}x`)jJ6umCyud(f>Y{dPt~~EO3P_0E&9NbOQ(8Ua+}yAo<}DH zIeQS*yym9WlFybHEvotTG0~!GtF!`9MR-IDbV0qx475wQ4s=~14nDr>WCm6w>(S9m z8xY4~zINU8$#1nPU)~C4z(u`Xdq!zz*KK%H`|8fqJeN$%h4ksE9pRAl=%wEkQb=E# z{U1RTHdoEMDWX&U?2Sc#UyAvLU|x#-V}{N4G56X&|7j?3Vt*`j#@J}dCZ6PVH z&-Od2CCp8$rKBw}T2xEvV`7SG>8K*2N41RJ^Zy~LW%Z@mqgu{fH5+ny6B@Fcz6g6m z){TjVT)|wmS}NN1{n?ORY;Qo7bVgf4*0m91Lk`Ls*@`RMimGBODtarfs#Co!)lBRi zu)0o&p##=1)6LdUQ)m3MHMr~iwkJR^Z^X51C7kjI8el$KYMUEYi-#@Atgk`tam{Cm zrH;9+*F$)!xOX$3HFeFz;20L>d$f7tdioICBci^ouz%lZ8<^>4WIc5;E@o@ATD){l zdt~(u64{34s@2lSw(rl#+TSf3>x{O@>N|@uvR+0&SSL#poss86Q*+&FX=X0}eS|mH zsooZE6Z3V({-;F?offT!`{=a40@+fhG}is9f^AvRwyb1ZR<@`A{u{&B%xs3q&*ZQA z@&8@y|7q;xEi6En7kSx%x~yoI-RgJw)PHN8V!u4w^1ohokeS)6v^FMGTChIcUTHdJ zR9ahe)oN*H+xKs!wbvPKm8Neu=1OyH-=#S3~Efy1d zvkTD)F?5VjGu;e)n9lfT$LON-|5cw|bxJiJbHe;<>_m-%g^Cp_T%bsSKRzxV9%g6g zX66l^Vb*;$Hx96OgYNn?wryM=d?#u-wqM&ZLV4^eQf*w zjc8w;(H2pCA2CN%1%z7q>3oExFK$zn@F9%)Mdy0Y2MYvERuYeLxI%GS^HuD`B1ql`voDv{!--1eLJB zT(w#j+V=ff35IQGT%lflhHY}e+p^MJw@*h5FhddaKDd&JnRAuS z<84{3iF&54v2FeRPe<13G7+?P}qc?Y&o8})gyLA44u41=7_K&OBJK@v|#mCFDl8a@ZnUu4>Wxvkz&zTSC{C}KT{MfzVhk54z!KgDI zG>vrTk9_+&YNps5if>eL$IP^-Vvfg9%!z-BIT=|@#oxu8 z`m>nRF%)y=pJL8N7E|eWG3U&*K&$1v3EljHKF;3Fb?2a)U(~5q%O%^+Kl{1)Z&%F` z^0Llp>*u<)gjp?DqGdEEV{93(MrG6$YG%9^Eu(U`KRK>PWz_Kx3)It!<}7nOf8S6a zbB@-hRlAP9p_Usu7k&Sxxo)-GGM9{a|EcTW)>*tQcQjEoao4u>cZJ^5X=ck&Q5AY$ zr~KLVe|P!^<}Ujq^`Wh(-|xhcgTo^;-E2sYZM***PM_!$^E~D_Fi21IrsNTz-w|ye zbHD9ljttA}kFTd@lGXA|ANcR6@|^Pi7o*Axoi*C1^78lLJn>%H&hwu}mDlE8FDD;= zU;m&$%NujUYI&=Z96AKFX>WOFuDZ*RFhBFw-<#{dL;k_G^>@fW>NFjSsE~g$Q|zy< zzgz8RGcBs-zQj<>*MExn7FkS%-^F}4)6B;I!-U5FQy*t<{JMG2_Wr@-m{@Mh)soz{@6TtO{gIVIXS6-rbPVk8Fy`Fb%g9>O^Ym6rD%;WjwboMWEZ&wh zny8yhYuoy}*3#*;ziKVLPKo&@Gnl)A9nI*PwU*Ib|EtzAMV4gNTCn|3&ZvsBSI2*v z`2XDJzwb}zX5Y`WZf1Sv$coFN&l;`bvPND>RK;b}DKXzuc5|0maXCz=I9Hw7UU52p zR9sGT)oRIQ+xKt9<<=Q(6{o`xS#kC+qZl*t*b2yNE8xG@T|S+~+mc@sb)N-nTYuMG zL7nzj-4)U)G2drlbC+4#P_qwMEk$%bzUV5d*Q0-bRZJ(EMLS0RvGAY1=qmniMrHoT z2fx4QDq%a-c=NQu6U;^A7hNT7XN|1IQnszX@2)f@|9+m7u@x0HG}y+&U|q8Qa;mJk zGb&o;VkoaX<(VTDLyeoQJpCP9WBq+sXpki^&{Dxnw0|Y1U!!c-tc$N`CjaqGOC`PO zZKrPBW|icN6p0DSviI`}*%!xfW&y`>ULf zt-#-}a*P9od$Z9MLbC}r zSFM(|wtfGvm+K79q6otu9}(pPOO)6ZMIF@9NE#)85-cOef=V3!eB&@q{BaW!U5TP{ zcEzZJv3HHV_kz7)$3CNj6)P6h!7ldadAHo|-6c_A%#Xac&%XO!Zui+|_uf75S)(`j zZFCgYu+ywMx0JZS?`Us5xT8(Ypo>xJc3j7*1Hb#(-5*MqvO0{$J-L!nNQ}dYQ5D>i z&jga5YMsC|7mkn^2^Wec=W`@*aA6jV-JKtW>sTGl2HD;DF@$knXlOTNuB)Xuppc*P znN82sc*RL;qnO9aZA5{?Y|nA1i1dE^cwV}l`1Gl{;7Le2FC{$p_IVudbNg&Aqok1rkKW9{5Uv|aN@R9C?+oHlPZ z?a0N=3#uwpaUSvF*nR7x#17M4}a{piv8 zxJpL#X(@%H`V2Alup8B9fu!fjbHE%qp3e#MLMF_MHjFn<7WiRa$_evwCd?}~4D$5$ zKXZK55A#}1nAbC5-mqc(v?Va6En&>8eUt6I+t5svSs90xX6NQ&n@=SZ@_@%@ye&2N6-9LXlD11*E))Z-wYX)mIOS@1r@ zb*w(Z?|v4%kLglYpU}8b|5QpLc|Ie?$?3?mm`HDupz%Z)K8LdwhA$*|Rv5kn4jO+Y z)xIz+A+mCW;cG9{iU`9uew-B$hHp)rA~nzEPKia-gNQN^arQ@?^bzN}cLE*F;u?@X zW=0n-gO7H`av=aOX%yHtUoG?FU!u(>xcuMfAA7)ujnBOvCez##f zCHTV+^Jh+&zf71U*YGzHc`Ch7H6?uHN3sxv0Wd}oinug_z}a8~VIa|1RY+x45LRJ( z5d^Xn(|1tH(F($<&XF91<7z2KD+q&~BS{9wQp&N|JgB*dBa|V|ku0);fYVWYlHS^; zhN3!Ft4m|PFbBt>;!>JQ$C6qDJ~-f9QyQ!#4Z>Z74Oxl0#?1q!f~^ ziWtb2yil)8B%>VO=&T0^trqJ`z^qzq;5;@=dDz#ijeuh^Y)nUAPBx)G{~UaeUYui+ zoJ)gkK;i#;>DKqHo}}$4V{449HMY*!dSe@m9c}CwW5*gh&e%p{#~VAr*opdOe^d62 z-B}N3zocI3HnV-@M1ON4eGT0RIN%L$3m7x8wqz5%(vmD@Vr_*>eCsK7{=CvJ`y=Tn z^NPb|-|!+?;tXH6mH^vGfRL|INYriVf^R)(+|zC+rI4uG69Y360jVY;dBrI+TW2(> z9Z-(=D-n`Wgm?%N4Z$=7;cD0>U|cN`s;$qsUefAm<`v9{+3)MEwdo(5cF*jA>w=qd zv2%B{yIyOd4#AJbt?jK|ww?9zxRyi>QVP3uwEasQiN*ktZcO%hV*$Cr8J82KF%xBc zHp&D*Q1ywdDdEqL)sAeY$wvYh^6f-4R+FUCXP?e5G|^Mo$DxA;Pfj^nRo~e;vb(JY zxSK>6n5qmVgX0@AR@i#h&ov{157x&CrWbU6AjlK z-3vfK(Y+ajVSS4B1gvnPxcn5=@&0RjOLd#+^eI2RtoGrvSpH4rbEHIUU;Av1fBO-U yE{npB+8-4VuW2xbKP}=a|H6rbWB79bF7Xwr)cN$$2Y`H!)AV7tTJh@ato{e9*BrP2 literal 0 HcmV?d00001 diff --git a/pandas/tests/io/data/legacy_pickle/0.20.3/0.20.3_x86_64_darwin_2.7.14.pickle b/pandas/tests/io/data/legacy_pickle/0.20.3/0.20.3_x86_64_darwin_2.7.14.pickle index f3e40618432313391922b80c30e2a14646ba38f7..963e533c4d2b4bc670b33e10422c5d9b2ac658d0 100644 GIT binary patch delta 15953 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 delta 13403 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 gOwLi1vq9stBBL_M^0p>7qZ