client/src/components/Navbar.js
author ymh <ymh.work@gmail.com>
Thu, 08 Nov 2018 16:03:28 +0100
changeset 171 03334a31130a
parent 170 7da1d5137b0b
child 172 4b780ebbedc6
permissions -rw-r--r--
Add translation with react-i18next
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
145
5d2bc8c877ea Adding class for specific css in App, Navbar and SessionList components
Riwad Salim
parents: 143
diff changeset
     1
import '../index.css';
143
cfcbf4bc66f1 Remove react-bootstrap from components except Modal, Collapse and Dropdown
salimr <riwad.salim@yahoo.fr>
parents: 134
diff changeset
     2
import './Navbar.css';
12
48ddaa42b810 Draft implementation of sessions.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
     3
import PropTypes from 'prop-types';
48ddaa42b810 Draft implementation of sessions.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
     4
import React, { Component } from 'react';
48ddaa42b810 Draft implementation of sessions.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
     5
import { connect } from 'react-redux';
105
0a1d6560acac Introduce authenticated routes.
Alexandre Segura <mex.zktk@gmail.com>
parents: 104
diff changeset
     6
import { withRouter } from 'react-router';
52
96f8a4a59bd9 Implement logout.
Alexandre Segura <mex.zktk@gmail.com>
parents: 44
diff changeset
     7
import { bindActionCreators } from 'redux';
171
03334a31130a Add translation with react-i18next
ymh <ymh.work@gmail.com>
parents: 170
diff changeset
     8
import { withNamespaces, Trans } from 'react-i18next';
03334a31130a Add translation with react-i18next
ymh <ymh.work@gmail.com>
parents: 170
diff changeset
     9
12
48ddaa42b810 Draft implementation of sessions.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    10
// import logo from './logo.svg';
146
4f4bb2b3ef39 Removing Modal from react-bootstrap and adding react-modal
salimr <riwad.salim@yahoo.fr>
parents: 145
diff changeset
    11
import Modal from 'react-modal';
52
96f8a4a59bd9 Implement logout.
Alexandre Segura <mex.zktk@gmail.com>
parents: 44
diff changeset
    12
import * as authActions from '../actions/authActions';
155
e55ae84508bf Clean CreateSession component and remove trace of previous create session button
ymh <ymh.work@gmail.com>
parents: 154
diff changeset
    13
import * as sessionsActions from '../actions/sessionsActions';
129
d48946d164c6 Add a first version of synchronisation
ymh <ymh.work@gmail.com>
parents: 107
diff changeset
    14
import { forceSync } from '../actions/networkActions';
134
be36eed5e6e0 add menu to change current group and create a new group
ymh <ymh.work@gmail.com>
parents: 130
diff changeset
    15
import { groupSetCurrent } from '../actions/groupActions';
be36eed5e6e0 add menu to change current group and create a new group
ymh <ymh.work@gmail.com>
parents: 130
diff changeset
    16
import { isAuthenticated, getCurrentUser, getOnline, getCurrentGroup, getGroups } from '../selectors/authSelectors';
be36eed5e6e0 add menu to change current group and create a new group
ymh <ymh.work@gmail.com>
parents: 130
diff changeset
    17
import { isSynchronizing, isSynchronized } from '../selectors/syncSelectors';
151
57d63a248f0d Update to Bootstrap 4
salimr <riwad.salim@yahoo.fr>
parents: 150
diff changeset
    18
import CreateSession from './CreateSession';
148
fcce52a159bc remove react-bootstrap
ymh <ymh.work@gmail.com>
parents: 146
diff changeset
    19
import NavbarLogin from './NavbarLogin';
fcce52a159bc remove react-bootstrap
ymh <ymh.work@gmail.com>
parents: 146
diff changeset
    20
import NavbarGroup from './NavbarGroup';
65
14989b339e5d Use a fonctionnal component for the login part of the navbar
ymh <ymh.work@gmail.com>
parents: 62
diff changeset
    21
129
d48946d164c6 Add a first version of synchronisation
ymh <ymh.work@gmail.com>
parents: 107
diff changeset
    22
const Online = ({ online }) => {
81
a6bd1aaddc34 Add online/offline indicator.
Alexandre Segura <mex.zktk@gmail.com>
parents: 65
diff changeset
    23
  return (
151
57d63a248f0d Update to Bootstrap 4
salimr <riwad.salim@yahoo.fr>
parents: 150
diff changeset
    24
    <li className="nav-item">
57d63a248f0d Update to Bootstrap 4
salimr <riwad.salim@yahoo.fr>
parents: 150
diff changeset
    25
      <a className="nav-link">
57d63a248f0d Update to Bootstrap 4
salimr <riwad.salim@yahoo.fr>
parents: 150
diff changeset
    26
        <span  className="material-icons" style={{ color: online ? '#2ECC71' : '#F95B5B' }}>signal_wifi_4_bar</span>
143
cfcbf4bc66f1 Remove react-bootstrap from components except Modal, Collapse and Dropdown
salimr <riwad.salim@yahoo.fr>
parents: 134
diff changeset
    27
      </a>
cfcbf4bc66f1 Remove react-bootstrap from components except Modal, Collapse and Dropdown
salimr <riwad.salim@yahoo.fr>
parents: 134
diff changeset
    28
    </li>
129
d48946d164c6 Add a first version of synchronisation
ymh <ymh.work@gmail.com>
parents: 107
diff changeset
    29
  )
d48946d164c6 Add a first version of synchronisation
ymh <ymh.work@gmail.com>
parents: 107
diff changeset
    30
}
d48946d164c6 Add a first version of synchronisation
ymh <ymh.work@gmail.com>
parents: 107
diff changeset
    31
143
cfcbf4bc66f1 Remove react-bootstrap from components except Modal, Collapse and Dropdown
salimr <riwad.salim@yahoo.fr>
parents: 134
diff changeset
    32
const SyncButton = ({ isAuthenticated, onSyncClick, isSynchronizing, isSynchronized, id }) => {
130
78246db1cbac make synchronization recurent, improve synchronization status display
ymh <ymh.work@gmail.com>
parents: 129
diff changeset
    33
  const classnames = "material-icons"
78246db1cbac make synchronization recurent, improve synchronization status display
ymh <ymh.work@gmail.com>
parents: 129
diff changeset
    34
    + ((!isSynchronized)?" sync-button-not-synchronized":"")
78246db1cbac make synchronization recurent, improve synchronization status display
ymh <ymh.work@gmail.com>
parents: 129
diff changeset
    35
    + ((isSynchronizing)?" sync-button-synchronizing":"");
78246db1cbac make synchronization recurent, improve synchronization status display
ymh <ymh.work@gmail.com>
parents: 129
diff changeset
    36
  let title = "Synchronize";
78246db1cbac make synchronization recurent, improve synchronization status display
ymh <ymh.work@gmail.com>
parents: 129
diff changeset
    37
  let clickCb = onSyncClick;
78246db1cbac make synchronization recurent, improve synchronization status display
ymh <ymh.work@gmail.com>
parents: 129
diff changeset
    38
  if(isSynchronizing) {
78246db1cbac make synchronization recurent, improve synchronization status display
ymh <ymh.work@gmail.com>
parents: 129
diff changeset
    39
    title = "Synchronizing...";
78246db1cbac make synchronization recurent, improve synchronization status display
ymh <ymh.work@gmail.com>
parents: 129
diff changeset
    40
    clickCb = () => {};
78246db1cbac make synchronization recurent, improve synchronization status display
ymh <ymh.work@gmail.com>
parents: 129
diff changeset
    41
  } else if (!isSynchronized) {
78246db1cbac make synchronization recurent, improve synchronization status display
ymh <ymh.work@gmail.com>
parents: 129
diff changeset
    42
    title += ": not synchronized";
78246db1cbac make synchronization recurent, improve synchronization status display
ymh <ymh.work@gmail.com>
parents: 129
diff changeset
    43
  }
78246db1cbac make synchronization recurent, improve synchronization status display
ymh <ymh.work@gmail.com>
parents: 129
diff changeset
    44
143
cfcbf4bc66f1 Remove react-bootstrap from components except Modal, Collapse and Dropdown
salimr <riwad.salim@yahoo.fr>
parents: 134
diff changeset
    45
  if (isAuthenticated) {
cfcbf4bc66f1 Remove react-bootstrap from components except Modal, Collapse and Dropdown
salimr <riwad.salim@yahoo.fr>
parents: 134
diff changeset
    46
    return (
151
57d63a248f0d Update to Bootstrap 4
salimr <riwad.salim@yahoo.fr>
parents: 150
diff changeset
    47
      <li className="nav-item">
57d63a248f0d Update to Bootstrap 4
salimr <riwad.salim@yahoo.fr>
parents: 150
diff changeset
    48
        <a className="nav-link" title={title} onClick={clickCb} id={id || null}>
143
cfcbf4bc66f1 Remove react-bootstrap from components except Modal, Collapse and Dropdown
salimr <riwad.salim@yahoo.fr>
parents: 134
diff changeset
    49
        <span className={classnames}>&#xE627;</span> </a>
cfcbf4bc66f1 Remove react-bootstrap from components except Modal, Collapse and Dropdown
salimr <riwad.salim@yahoo.fr>
parents: 134
diff changeset
    50
      </li>
cfcbf4bc66f1 Remove react-bootstrap from components except Modal, Collapse and Dropdown
salimr <riwad.salim@yahoo.fr>
parents: 134
diff changeset
    51
    );
cfcbf4bc66f1 Remove react-bootstrap from components except Modal, Collapse and Dropdown
salimr <riwad.salim@yahoo.fr>
parents: 134
diff changeset
    52
  }
129
d48946d164c6 Add a first version of synchronisation
ymh <ymh.work@gmail.com>
parents: 107
diff changeset
    53
  return (
143
cfcbf4bc66f1 Remove react-bootstrap from components except Modal, Collapse and Dropdown
salimr <riwad.salim@yahoo.fr>
parents: 134
diff changeset
    54
      <li>
cfcbf4bc66f1 Remove react-bootstrap from components except Modal, Collapse and Dropdown
salimr <riwad.salim@yahoo.fr>
parents: 134
diff changeset
    55
        <a>
cfcbf4bc66f1 Remove react-bootstrap from components except Modal, Collapse and Dropdown
salimr <riwad.salim@yahoo.fr>
parents: 134
diff changeset
    56
          <span></span>
cfcbf4bc66f1 Remove react-bootstrap from components except Modal, Collapse and Dropdown
salimr <riwad.salim@yahoo.fr>
parents: 134
diff changeset
    57
        </a>
cfcbf4bc66f1 Remove react-bootstrap from components except Modal, Collapse and Dropdown
salimr <riwad.salim@yahoo.fr>
parents: 134
diff changeset
    58
    </li>
cfcbf4bc66f1 Remove react-bootstrap from components except Modal, Collapse and Dropdown
salimr <riwad.salim@yahoo.fr>
parents: 134
diff changeset
    59
  );
81
a6bd1aaddc34 Add online/offline indicator.
Alexandre Segura <mex.zktk@gmail.com>
parents: 65
diff changeset
    60
}
a6bd1aaddc34 Add online/offline indicator.
Alexandre Segura <mex.zktk@gmail.com>
parents: 65
diff changeset
    61
163
78c54cb473cd Add offline message
salimr <riwad.salim@yahoo.fr>
parents: 161
diff changeset
    62
const OffLineMessage = ({isAuthenticated}) => {
78c54cb473cd Add offline message
salimr <riwad.salim@yahoo.fr>
parents: 161
diff changeset
    63
  if (!isAuthenticated) {
78c54cb473cd Add offline message
salimr <riwad.salim@yahoo.fr>
parents: 161
diff changeset
    64
    return (
171
03334a31130a Add translation with react-i18next
ymh <ymh.work@gmail.com>
parents: 170
diff changeset
    65
        <span className="sticky-top text-warning text-right float-right mr-4 offline-message"><Trans i18nKey="navbar.offline_message"></Trans></span>
163
78c54cb473cd Add offline message
salimr <riwad.salim@yahoo.fr>
parents: 161
diff changeset
    66
    );
78c54cb473cd Add offline message
salimr <riwad.salim@yahoo.fr>
parents: 161
diff changeset
    67
  }
78c54cb473cd Add offline message
salimr <riwad.salim@yahoo.fr>
parents: 161
diff changeset
    68
    return (
78c54cb473cd Add offline message
salimr <riwad.salim@yahoo.fr>
parents: 161
diff changeset
    69
      <span></span>
78c54cb473cd Add offline message
salimr <riwad.salim@yahoo.fr>
parents: 161
diff changeset
    70
  );
78c54cb473cd Add offline message
salimr <riwad.salim@yahoo.fr>
parents: 161
diff changeset
    71
}
78c54cb473cd Add offline message
salimr <riwad.salim@yahoo.fr>
parents: 161
diff changeset
    72
143
cfcbf4bc66f1 Remove react-bootstrap from components except Modal, Collapse and Dropdown
salimr <riwad.salim@yahoo.fr>
parents: 134
diff changeset
    73
12
48ddaa42b810 Draft implementation of sessions.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    74
class AppNavbar extends Component {
146
4f4bb2b3ef39 Removing Modal from react-bootstrap and adding react-modal
salimr <riwad.salim@yahoo.fr>
parents: 145
diff changeset
    75
  constructor(props) {
4f4bb2b3ef39 Removing Modal from react-bootstrap and adding react-modal
salimr <riwad.salim@yahoo.fr>
parents: 145
diff changeset
    76
    super(props);
4f4bb2b3ef39 Removing Modal from react-bootstrap and adding react-modal
salimr <riwad.salim@yahoo.fr>
parents: 145
diff changeset
    77
    this.state = { modalIsOpen: false };
4f4bb2b3ef39 Removing Modal from react-bootstrap and adding react-modal
salimr <riwad.salim@yahoo.fr>
parents: 145
diff changeset
    78
  }
12
48ddaa42b810 Draft implementation of sessions.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    79
151
57d63a248f0d Update to Bootstrap 4
salimr <riwad.salim@yahoo.fr>
parents: 150
diff changeset
    80
  componentWillMount() {
57d63a248f0d Update to Bootstrap 4
salimr <riwad.salim@yahoo.fr>
parents: 150
diff changeset
    81
    Modal.setAppElement('body');
57d63a248f0d Update to Bootstrap 4
salimr <riwad.salim@yahoo.fr>
parents: 150
diff changeset
    82
}
57d63a248f0d Update to Bootstrap 4
salimr <riwad.salim@yahoo.fr>
parents: 150
diff changeset
    83
146
4f4bb2b3ef39 Removing Modal from react-bootstrap and adding react-modal
salimr <riwad.salim@yahoo.fr>
parents: 145
diff changeset
    84
  openModal = () => {
4f4bb2b3ef39 Removing Modal from react-bootstrap and adding react-modal
salimr <riwad.salim@yahoo.fr>
parents: 145
diff changeset
    85
    this.setState({modalIsOpen: true});
107
e6f85e26b08c Confirm logout when pending requests, try to purge offline.outbox
Alexandre Segura <mex.zktk@gmail.com>
parents: 105
diff changeset
    86
  }
e6f85e26b08c Confirm logout when pending requests, try to purge offline.outbox
Alexandre Segura <mex.zktk@gmail.com>
parents: 105
diff changeset
    87
e6f85e26b08c Confirm logout when pending requests, try to purge offline.outbox
Alexandre Segura <mex.zktk@gmail.com>
parents: 105
diff changeset
    88
  closeModal = () => {
146
4f4bb2b3ef39 Removing Modal from react-bootstrap and adding react-modal
salimr <riwad.salim@yahoo.fr>
parents: 145
diff changeset
    89
    this.setState({modalIsOpen: false});
4f4bb2b3ef39 Removing Modal from react-bootstrap and adding react-modal
salimr <riwad.salim@yahoo.fr>
parents: 145
diff changeset
    90
  }
4f4bb2b3ef39 Removing Modal from react-bootstrap and adding react-modal
salimr <riwad.salim@yahoo.fr>
parents: 145
diff changeset
    91
4f4bb2b3ef39 Removing Modal from react-bootstrap and adding react-modal
salimr <riwad.salim@yahoo.fr>
parents: 145
diff changeset
    92
  handleModalCloseRequest = () => {
4f4bb2b3ef39 Removing Modal from react-bootstrap and adding react-modal
salimr <riwad.salim@yahoo.fr>
parents: 145
diff changeset
    93
    // opportunity to validate something and keep the modal open even if it
4f4bb2b3ef39 Removing Modal from react-bootstrap and adding react-modal
salimr <riwad.salim@yahoo.fr>
parents: 145
diff changeset
    94
    // requested to be closed
4f4bb2b3ef39 Removing Modal from react-bootstrap and adding react-modal
salimr <riwad.salim@yahoo.fr>
parents: 145
diff changeset
    95
    this.setState({modalIsOpen: false});
107
e6f85e26b08c Confirm logout when pending requests, try to purge offline.outbox
Alexandre Segura <mex.zktk@gmail.com>
parents: 105
diff changeset
    96
  }
e6f85e26b08c Confirm logout when pending requests, try to purge offline.outbox
Alexandre Segura <mex.zktk@gmail.com>
parents: 105
diff changeset
    97
12
48ddaa42b810 Draft implementation of sessions.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    98
  onClickHome = (e) => {
48ddaa42b810 Draft implementation of sessions.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    99
    e.preventDefault();
48ddaa42b810 Draft implementation of sessions.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
   100
    this.props.history.push('/');
48ddaa42b810 Draft implementation of sessions.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
   101
  }
48ddaa42b810 Draft implementation of sessions.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
   102
129
d48946d164c6 Add a first version of synchronisation
ymh <ymh.work@gmail.com>
parents: 107
diff changeset
   103
  isSynchronized = () => {
d48946d164c6 Add a first version of synchronisation
ymh <ymh.work@gmail.com>
parents: 107
diff changeset
   104
    return this.props.isSynchronized;
107
e6f85e26b08c Confirm logout when pending requests, try to purge offline.outbox
Alexandre Segura <mex.zktk@gmail.com>
parents: 105
diff changeset
   105
  }
e6f85e26b08c Confirm logout when pending requests, try to purge offline.outbox
Alexandre Segura <mex.zktk@gmail.com>
parents: 105
diff changeset
   106
e6f85e26b08c Confirm logout when pending requests, try to purge offline.outbox
Alexandre Segura <mex.zktk@gmail.com>
parents: 105
diff changeset
   107
  onClickLogout = (e) => {
e6f85e26b08c Confirm logout when pending requests, try to purge offline.outbox
Alexandre Segura <mex.zktk@gmail.com>
parents: 105
diff changeset
   108
    e.preventDefault();
129
d48946d164c6 Add a first version of synchronisation
ymh <ymh.work@gmail.com>
parents: 107
diff changeset
   109
    const isSynchronized = this.isSynchronized();
d48946d164c6 Add a first version of synchronisation
ymh <ymh.work@gmail.com>
parents: 107
diff changeset
   110
    if (isSynchronized) {
107
e6f85e26b08c Confirm logout when pending requests, try to purge offline.outbox
Alexandre Segura <mex.zktk@gmail.com>
parents: 105
diff changeset
   111
      this.logout();
e6f85e26b08c Confirm logout when pending requests, try to purge offline.outbox
Alexandre Segura <mex.zktk@gmail.com>
parents: 105
diff changeset
   112
    } else {
146
4f4bb2b3ef39 Removing Modal from react-bootstrap and adding react-modal
salimr <riwad.salim@yahoo.fr>
parents: 145
diff changeset
   113
      this.openModal()
107
e6f85e26b08c Confirm logout when pending requests, try to purge offline.outbox
Alexandre Segura <mex.zktk@gmail.com>
parents: 105
diff changeset
   114
    }
e6f85e26b08c Confirm logout when pending requests, try to purge offline.outbox
Alexandre Segura <mex.zktk@gmail.com>
parents: 105
diff changeset
   115
  }
e6f85e26b08c Confirm logout when pending requests, try to purge offline.outbox
Alexandre Segura <mex.zktk@gmail.com>
parents: 105
diff changeset
   116
e6f85e26b08c Confirm logout when pending requests, try to purge offline.outbox
Alexandre Segura <mex.zktk@gmail.com>
parents: 105
diff changeset
   117
  confirmLogout = () => {
129
d48946d164c6 Add a first version of synchronisation
ymh <ymh.work@gmail.com>
parents: 107
diff changeset
   118
    const isSynchronized = this.isSynchronized();
d48946d164c6 Add a first version of synchronisation
ymh <ymh.work@gmail.com>
parents: 107
diff changeset
   119
    if (!isSynchronized) {
d48946d164c6 Add a first version of synchronisation
ymh <ymh.work@gmail.com>
parents: 107
diff changeset
   120
      this.props.authActions.resetAll();
107
e6f85e26b08c Confirm logout when pending requests, try to purge offline.outbox
Alexandre Segura <mex.zktk@gmail.com>
parents: 105
diff changeset
   121
    }
e6f85e26b08c Confirm logout when pending requests, try to purge offline.outbox
Alexandre Segura <mex.zktk@gmail.com>
parents: 105
diff changeset
   122
    this.logout();
e6f85e26b08c Confirm logout when pending requests, try to purge offline.outbox
Alexandre Segura <mex.zktk@gmail.com>
parents: 105
diff changeset
   123
    this.closeModal();
e6f85e26b08c Confirm logout when pending requests, try to purge offline.outbox
Alexandre Segura <mex.zktk@gmail.com>
parents: 105
diff changeset
   124
  }
e6f85e26b08c Confirm logout when pending requests, try to purge offline.outbox
Alexandre Segura <mex.zktk@gmail.com>
parents: 105
diff changeset
   125
e6f85e26b08c Confirm logout when pending requests, try to purge offline.outbox
Alexandre Segura <mex.zktk@gmail.com>
parents: 105
diff changeset
   126
  logout = () => {
e6f85e26b08c Confirm logout when pending requests, try to purge offline.outbox
Alexandre Segura <mex.zktk@gmail.com>
parents: 105
diff changeset
   127
    this.props.authActions.logout();
e6f85e26b08c Confirm logout when pending requests, try to purge offline.outbox
Alexandre Segura <mex.zktk@gmail.com>
parents: 105
diff changeset
   128
    this.props.history.push('/');
e6f85e26b08c Confirm logout when pending requests, try to purge offline.outbox
Alexandre Segura <mex.zktk@gmail.com>
parents: 105
diff changeset
   129
  }
e6f85e26b08c Confirm logout when pending requests, try to purge offline.outbox
Alexandre Segura <mex.zktk@gmail.com>
parents: 105
diff changeset
   130
12
48ddaa42b810 Draft implementation of sessions.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
   131
  onClickSessions = (e) => {
48ddaa42b810 Draft implementation of sessions.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
   132
    e.preventDefault();
48ddaa42b810 Draft implementation of sessions.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
   133
    this.props.history.push('/sessions');
48ddaa42b810 Draft implementation of sessions.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
   134
  }
48ddaa42b810 Draft implementation of sessions.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
   135
129
d48946d164c6 Add a first version of synchronisation
ymh <ymh.work@gmail.com>
parents: 107
diff changeset
   136
  onSyncClick = (e) => {
d48946d164c6 Add a first version of synchronisation
ymh <ymh.work@gmail.com>
parents: 107
diff changeset
   137
    e.preventDefault();
d48946d164c6 Add a first version of synchronisation
ymh <ymh.work@gmail.com>
parents: 107
diff changeset
   138
    this.props.networkActions.forceSync();
d48946d164c6 Add a first version of synchronisation
ymh <ymh.work@gmail.com>
parents: 107
diff changeset
   139
  }
d48946d164c6 Add a first version of synchronisation
ymh <ymh.work@gmail.com>
parents: 107
diff changeset
   140
134
be36eed5e6e0 add menu to change current group and create a new group
ymh <ymh.work@gmail.com>
parents: 130
diff changeset
   141
  onGroupSelect = (groupName) => {
be36eed5e6e0 add menu to change current group and create a new group
ymh <ymh.work@gmail.com>
parents: 130
diff changeset
   142
    if(groupName === "__create_group__") {
be36eed5e6e0 add menu to change current group and create a new group
ymh <ymh.work@gmail.com>
parents: 130
diff changeset
   143
      this.props.history.push('/create-group');
be36eed5e6e0 add menu to change current group and create a new group
ymh <ymh.work@gmail.com>
parents: 130
diff changeset
   144
    } else {
be36eed5e6e0 add menu to change current group and create a new group
ymh <ymh.work@gmail.com>
parents: 130
diff changeset
   145
      this.props.groupActions.groupSetCurrent(groupName);
be36eed5e6e0 add menu to change current group and create a new group
ymh <ymh.work@gmail.com>
parents: 130
diff changeset
   146
    }
be36eed5e6e0 add menu to change current group and create a new group
ymh <ymh.work@gmail.com>
parents: 130
diff changeset
   147
  }
be36eed5e6e0 add menu to change current group and create a new group
ymh <ymh.work@gmail.com>
parents: 130
diff changeset
   148
12
48ddaa42b810 Draft implementation of sessions.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
   149
  render() {
171
03334a31130a Add translation with react-i18next
ymh <ymh.work@gmail.com>
parents: 170
diff changeset
   150
    const t = this.props.t;
12
48ddaa42b810 Draft implementation of sessions.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
   151
    return (
163
78c54cb473cd Add offline message
salimr <riwad.salim@yahoo.fr>
parents: 161
diff changeset
   152
      <div>
167
1f340f3597a8 Adapt css for CreateSession and Navbar components
salimr <riwad.salim@yahoo.fr>
parents: 163
diff changeset
   153
      <nav className="navbar navbar-expand-lg navbar-light bg-primary sticky-top">
1f340f3597a8 Adapt css for CreateSession and Navbar components
salimr <riwad.salim@yahoo.fr>
parents: 163
diff changeset
   154
        <div className="container-fluid">
1f340f3597a8 Adapt css for CreateSession and Navbar components
salimr <riwad.salim@yahoo.fr>
parents: 163
diff changeset
   155
        <div className="navbar-header">
1f340f3597a8 Adapt css for CreateSession and Navbar components
salimr <riwad.salim@yahoo.fr>
parents: 163
diff changeset
   156
        <a className="navbar-brand" /*onClick={this.onClickHome}*/ href="/">IRI Notes</a>
1f340f3597a8 Adapt css for CreateSession and Navbar components
salimr <riwad.salim@yahoo.fr>
parents: 163
diff changeset
   157
        <button className="navbar-toggler mr-auto" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
1f340f3597a8 Adapt css for CreateSession and Navbar components
salimr <riwad.salim@yahoo.fr>
parents: 163
diff changeset
   158
              <span className="navbar-toggler-icon"></span>
1f340f3597a8 Adapt css for CreateSession and Navbar components
salimr <riwad.salim@yahoo.fr>
parents: 163
diff changeset
   159
              <span className="icon-bar"></span>
1f340f3597a8 Adapt css for CreateSession and Navbar components
salimr <riwad.salim@yahoo.fr>
parents: 163
diff changeset
   160
              <span className="icon-bar"></span>
1f340f3597a8 Adapt css for CreateSession and Navbar components
salimr <riwad.salim@yahoo.fr>
parents: 163
diff changeset
   161
              <span className="icon-bar"></span>
1f340f3597a8 Adapt css for CreateSession and Navbar components
salimr <riwad.salim@yahoo.fr>
parents: 163
diff changeset
   162
            </button>
1f340f3597a8 Adapt css for CreateSession and Navbar components
salimr <riwad.salim@yahoo.fr>
parents: 163
diff changeset
   163
          </div>
1f340f3597a8 Adapt css for CreateSession and Navbar components
salimr <riwad.salim@yahoo.fr>
parents: 163
diff changeset
   164
          <div className="collapse navbar-collapse text-center" id="navbarSupportedContent">
1f340f3597a8 Adapt css for CreateSession and Navbar components
salimr <riwad.salim@yahoo.fr>
parents: 163
diff changeset
   165
            <ul className="navbar-nav mr-auto">
1f340f3597a8 Adapt css for CreateSession and Navbar components
salimr <riwad.salim@yahoo.fr>
parents: 163
diff changeset
   166
              <li className="nav-item text-secondary">
171
03334a31130a Add translation with react-i18next
ymh <ymh.work@gmail.com>
parents: 170
diff changeset
   167
                <a className="nav-link text-capitalize" onClick={this.onClickSessions} href="/sessions">{t('common.session', {count: 2})}</a>
167
1f340f3597a8 Adapt css for CreateSession and Navbar components
salimr <riwad.salim@yahoo.fr>
parents: 163
diff changeset
   168
                {/* <CreateSession
1f340f3597a8 Adapt css for CreateSession and Navbar components
salimr <riwad.salim@yahoo.fr>
parents: 163
diff changeset
   169
                    history={this.props.history}
1f340f3597a8 Adapt css for CreateSession and Navbar components
salimr <riwad.salim@yahoo.fr>
parents: 163
diff changeset
   170
                    group={this.props.currentGroup}
1f340f3597a8 Adapt css for CreateSession and Navbar components
salimr <riwad.salim@yahoo.fr>
parents: 163
diff changeset
   171
                    createSession={this.props.sessionsActions.createSession}
1f340f3597a8 Adapt css for CreateSession and Navbar components
salimr <riwad.salim@yahoo.fr>
parents: 163
diff changeset
   172
                  /> */}
1f340f3597a8 Adapt css for CreateSession and Navbar components
salimr <riwad.salim@yahoo.fr>
parents: 163
diff changeset
   173
              </li>
1f340f3597a8 Adapt css for CreateSession and Navbar components
salimr <riwad.salim@yahoo.fr>
parents: 163
diff changeset
   174
            </ul>
1f340f3597a8 Adapt css for CreateSession and Navbar components
salimr <riwad.salim@yahoo.fr>
parents: 163
diff changeset
   175
            <ul className="navbar-nav navbar-center">
1f340f3597a8 Adapt css for CreateSession and Navbar components
salimr <riwad.salim@yahoo.fr>
parents: 163
diff changeset
   176
                <li className="nav-item text-secondary">
1f340f3597a8 Adapt css for CreateSession and Navbar components
salimr <riwad.salim@yahoo.fr>
parents: 163
diff changeset
   177
                {/* <a className="nav-link " onClick={this.onClickSessions} href="/sessions">Sessions</a> */}
1f340f3597a8 Adapt css for CreateSession and Navbar components
salimr <riwad.salim@yahoo.fr>
parents: 163
diff changeset
   178
                  <CreateSession
1f340f3597a8 Adapt css for CreateSession and Navbar components
salimr <riwad.salim@yahoo.fr>
parents: 163
diff changeset
   179
                    history={this.props.history}
1f340f3597a8 Adapt css for CreateSession and Navbar components
salimr <riwad.salim@yahoo.fr>
parents: 163
diff changeset
   180
                    group={this.props.currentGroup}
1f340f3597a8 Adapt css for CreateSession and Navbar components
salimr <riwad.salim@yahoo.fr>
parents: 163
diff changeset
   181
                    createSession={this.props.sessionsActions.createSession}
1f340f3597a8 Adapt css for CreateSession and Navbar components
salimr <riwad.salim@yahoo.fr>
parents: 163
diff changeset
   182
                  />
151
57d63a248f0d Update to Bootstrap 4
salimr <riwad.salim@yahoo.fr>
parents: 150
diff changeset
   183
                </li>
167
1f340f3597a8 Adapt css for CreateSession and Navbar components
salimr <riwad.salim@yahoo.fr>
parents: 163
diff changeset
   184
            </ul>
1f340f3597a8 Adapt css for CreateSession and Navbar components
salimr <riwad.salim@yahoo.fr>
parents: 163
diff changeset
   185
            <ul className="nav navbar-nav ml-auto">
1f340f3597a8 Adapt css for CreateSession and Navbar components
salimr <riwad.salim@yahoo.fr>
parents: 163
diff changeset
   186
              <NavbarGroup currentGroup={this.props.currentGroup} groups={this.props.groups} onSelect={this.onGroupSelect}/>
1f340f3597a8 Adapt css for CreateSession and Navbar components
salimr <riwad.salim@yahoo.fr>
parents: 163
diff changeset
   187
              <SyncButton id='sync-button' isAuthenticated={this.props.isAuthenticated} onSyncClick={this.onSyncClick} isSynchronizing={this.props.isSynchronizing} isSynchronized={this.props.isSynchronized} />
1f340f3597a8 Adapt css for CreateSession and Navbar components
salimr <riwad.salim@yahoo.fr>
parents: 163
diff changeset
   188
              <Online {...this.props} />
1f340f3597a8 Adapt css for CreateSession and Navbar components
salimr <riwad.salim@yahoo.fr>
parents: 163
diff changeset
   189
              <NavbarLogin {...this.props} onLogout={this.onClickLogout} />
1f340f3597a8 Adapt css for CreateSession and Navbar components
salimr <riwad.salim@yahoo.fr>
parents: 163
diff changeset
   190
            </ul>
1f340f3597a8 Adapt css for CreateSession and Navbar components
salimr <riwad.salim@yahoo.fr>
parents: 163
diff changeset
   191
          </div>
1f340f3597a8 Adapt css for CreateSession and Navbar components
salimr <riwad.salim@yahoo.fr>
parents: 163
diff changeset
   192
          <Modal
1f340f3597a8 Adapt css for CreateSession and Navbar components
salimr <riwad.salim@yahoo.fr>
parents: 163
diff changeset
   193
          className="Modal__Bootstrap modal-dialog modal-dialog-centered"
1f340f3597a8 Adapt css for CreateSession and Navbar components
salimr <riwad.salim@yahoo.fr>
parents: 163
diff changeset
   194
          // closeTimeoutMS={150}
1f340f3597a8 Adapt css for CreateSession and Navbar components
salimr <riwad.salim@yahoo.fr>
parents: 163
diff changeset
   195
          isOpen={this.state.modalIsOpen}
1f340f3597a8 Adapt css for CreateSession and Navbar components
salimr <riwad.salim@yahoo.fr>
parents: 163
diff changeset
   196
          onRequestClose={this.handleModalCloseRequest}
1f340f3597a8 Adapt css for CreateSession and Navbar components
salimr <riwad.salim@yahoo.fr>
parents: 163
diff changeset
   197
          >
1f340f3597a8 Adapt css for CreateSession and Navbar components
salimr <riwad.salim@yahoo.fr>
parents: 163
diff changeset
   198
            <div id="logout-modal" className="modal-content">
1f340f3597a8 Adapt css for CreateSession and Navbar components
salimr <riwad.salim@yahoo.fr>
parents: 163
diff changeset
   199
              <span id="logout-close-modal-button" className="material-icons p-0 text-right" onClick={ this.handleModalCloseRequest }>close</span>
1f340f3597a8 Adapt css for CreateSession and Navbar components
salimr <riwad.salim@yahoo.fr>
parents: 163
diff changeset
   200
              <div className="modal-body text-center">
1f340f3597a8 Adapt css for CreateSession and Navbar components
salimr <riwad.salim@yahoo.fr>
parents: 163
diff changeset
   201
              <span className="material-icons modal-warning text-info pb-5">warning</span>
171
03334a31130a Add translation with react-i18next
ymh <ymh.work@gmail.com>
parents: 170
diff changeset
   202
                <p className="modal-text"><Trans i18nKey="navbar.logout_modal">
167
1f340f3597a8 Adapt css for CreateSession and Navbar components
salimr <riwad.salim@yahoo.fr>
parents: 163
diff changeset
   203
                  Certaines sessions n'ont pas encore été sauvegardées.
1f340f3597a8 Adapt css for CreateSession and Navbar components
salimr <riwad.salim@yahoo.fr>
parents: 163
diff changeset
   204
                  <br />
1f340f3597a8 Adapt css for CreateSession and Navbar components
salimr <riwad.salim@yahoo.fr>
parents: 163
diff changeset
   205
                  Si vous continuez, elles seront perdues.
171
03334a31130a Add translation with react-i18next
ymh <ymh.work@gmail.com>
parents: 170
diff changeset
   206
                  </Trans></p>
03334a31130a Add translation with react-i18next
ymh <ymh.work@gmail.com>
parents: 170
diff changeset
   207
              <button type="button" className="btn btn-danger text-secondary font-weight-bold py-1 px-2 mb-3 text-capitalize" id="logout-modal-button" onClick={ this.confirmLogout }>{t('common.confirm')}</button>
167
1f340f3597a8 Adapt css for CreateSession and Navbar components
salimr <riwad.salim@yahoo.fr>
parents: 163
diff changeset
   208
              </div>
163
78c54cb473cd Add offline message
salimr <riwad.salim@yahoo.fr>
parents: 161
diff changeset
   209
            </div>
167
1f340f3597a8 Adapt css for CreateSession and Navbar components
salimr <riwad.salim@yahoo.fr>
parents: 163
diff changeset
   210
          </Modal>
1f340f3597a8 Adapt css for CreateSession and Navbar components
salimr <riwad.salim@yahoo.fr>
parents: 163
diff changeset
   211
        </div>
1f340f3597a8 Adapt css for CreateSession and Navbar components
salimr <riwad.salim@yahoo.fr>
parents: 163
diff changeset
   212
      </nav>
1f340f3597a8 Adapt css for CreateSession and Navbar components
salimr <riwad.salim@yahoo.fr>
parents: 163
diff changeset
   213
      <OffLineMessage isAuthenticated={this.props.isAuthenticated} />
163
78c54cb473cd Add offline message
salimr <riwad.salim@yahoo.fr>
parents: 161
diff changeset
   214
      </div>
12
48ddaa42b810 Draft implementation of sessions.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
   215
    );
48ddaa42b810 Draft implementation of sessions.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
   216
  }
48ddaa42b810 Draft implementation of sessions.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
   217
}
48ddaa42b810 Draft implementation of sessions.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
   218
48ddaa42b810 Draft implementation of sessions.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
   219
AppNavbar.propTypes = {
48ddaa42b810 Draft implementation of sessions.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
   220
  isAuthenticated: PropTypes.bool.isRequired
48ddaa42b810 Draft implementation of sessions.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
   221
};
48ddaa42b810 Draft implementation of sessions.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
   222
48ddaa42b810 Draft implementation of sessions.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
   223
function mapStateToProps(state, props) {
48ddaa42b810 Draft implementation of sessions.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
   224
  return {
134
be36eed5e6e0 add menu to change current group and create a new group
ymh <ymh.work@gmail.com>
parents: 130
diff changeset
   225
    isAuthenticated: isAuthenticated(state),
be36eed5e6e0 add menu to change current group and create a new group
ymh <ymh.work@gmail.com>
parents: 130
diff changeset
   226
    currentUser: getCurrentUser(state),
be36eed5e6e0 add menu to change current group and create a new group
ymh <ymh.work@gmail.com>
parents: 130
diff changeset
   227
    online: getOnline(state),
be36eed5e6e0 add menu to change current group and create a new group
ymh <ymh.work@gmail.com>
parents: 130
diff changeset
   228
    isSynchronizing: isSynchronizing(state),
be36eed5e6e0 add menu to change current group and create a new group
ymh <ymh.work@gmail.com>
parents: 130
diff changeset
   229
    isSynchronized: isSynchronized(state),
be36eed5e6e0 add menu to change current group and create a new group
ymh <ymh.work@gmail.com>
parents: 130
diff changeset
   230
    currentGroup: getCurrentGroup(state),
161
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 155
diff changeset
   231
    groups: getGroups(state),
12
48ddaa42b810 Draft implementation of sessions.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
   232
  };
48ddaa42b810 Draft implementation of sessions.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
   233
}
48ddaa42b810 Draft implementation of sessions.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
   234
52
96f8a4a59bd9 Implement logout.
Alexandre Segura <mex.zktk@gmail.com>
parents: 44
diff changeset
   235
function mapDispatchToProps(dispatch) {
96f8a4a59bd9 Implement logout.
Alexandre Segura <mex.zktk@gmail.com>
parents: 44
diff changeset
   236
  return {
96f8a4a59bd9 Implement logout.
Alexandre Segura <mex.zktk@gmail.com>
parents: 44
diff changeset
   237
    authActions: bindActionCreators(authActions, dispatch),
134
be36eed5e6e0 add menu to change current group and create a new group
ymh <ymh.work@gmail.com>
parents: 130
diff changeset
   238
    networkActions: bindActionCreators({ forceSync }, dispatch),
155
e55ae84508bf Clean CreateSession component and remove trace of previous create session button
ymh <ymh.work@gmail.com>
parents: 154
diff changeset
   239
    groupActions: bindActionCreators({ groupSetCurrent }, dispatch),
e55ae84508bf Clean CreateSession component and remove trace of previous create session button
ymh <ymh.work@gmail.com>
parents: 154
diff changeset
   240
    sessionsActions: bindActionCreators(sessionsActions, dispatch),
52
96f8a4a59bd9 Implement logout.
Alexandre Segura <mex.zktk@gmail.com>
parents: 44
diff changeset
   241
  }
96f8a4a59bd9 Implement logout.
Alexandre Segura <mex.zktk@gmail.com>
parents: 44
diff changeset
   242
}
96f8a4a59bd9 Implement logout.
Alexandre Segura <mex.zktk@gmail.com>
parents: 44
diff changeset
   243
171
03334a31130a Add translation with react-i18next
ymh <ymh.work@gmail.com>
parents: 170
diff changeset
   244
export default withNamespaces()(connect(mapStateToProps, mapDispatchToProps)(withRouter(AppNavbar)));
.N3uxeW~QvfoW8/Xc]'my˲l!*4TJ7q1rLrrZMqDzwn钨AE}-?pe/]TEߛ@փI$Dѱ86-?7HCV:nU^鬳luv)jTTRwy5x5ˉj}>9cHMf++:_^PԷ[7G*2UhRDFGuif 5sYs{Tq EA I^.UPb~PlHxz0 A4,(S BF*!*˃.&&)bUY4J)nvjevҘ ,8c#Mzd2(n٧HOy4J {/>jI%oiS鐬Zz ö`oMoZu:qUI7wAѾ4ٳ\o)Xv0!`ZL v5宰WA-]G޽aMj﷿~׏E'laI7H}M{)Tj>s͌5:XT,PTulJzL0[[F+Y"=FĔ+ )l`V9h|+1SDAx3vCP13=7֓V#*I^'BO 汘xɊJ~+-2`vp)WnR5̉͡gg Ni䶮JuySKzaҠ(MΖՈ>8 'ϮힰF1-$KfX,R7A˗eQ4- ҤWNE8 ˁةHLAb80&6BDl$yx$A<;n;@L|Wz Mag>Xǀ2;֗,7 $J aapPit6j.p k &=1D ܞjwc*2< >VŪ&0p罆13LS&m6ʔ+1]S;5)fUN9TwZݘ M>6sfvW :Sue9m.Rc%v}M Ž LWDh\gw}O֣mjFYkZeTN*D j'Kjګ֟!mS.($~Oj]|p0` [h`R֫13GafLuJno461 g9%idɇs[t큻ц &4pUH{?©a R"° 'pQETWqv?Qd3G/z'{ݸC ia&Z& D;@Hyj^q&ژm Dvl·h(3wM1$K#c|=A`ZF SuC΃\UX:: x8 tB.8( OHUA:k#`y@ B@%"Hux}]JT0KA,HŘk}!p֥6RܚbXJD(`ڭmlm 0 (!2,QD4o "lR+6J+a=ՙjlF̠3)k my䎜62 8S̊!s! ;xCqAcW.-fN7k!8DDP \(*O?ʄ<_G?[kn)#?u|p|)-U"Elo0<:m*$&MK* RX.6j6[V_{[ {w=I*2|/q _"fx߂VdQ(=Mw KU)j,ZT`sIj؁2\Ҹ $I>;H^,{>bZMA F}`-f61J), U 7,4]54[Lۨ &Rd4P(فD͆m09Oe ۇTB6V3:3Echz@P 8qU_شsw26ލYSv,lᠲ fc|u-%Fêv "Eg7ɢʔj2QW086QTM b!E:1FAG฻`J)RP냝 Xs[⎺E)Jyo*18';uc*љWVCJ"#)ks+kW$(#` nP^:slwbWfaNRrkq"өN"رc2㍧V a *AA 9\*49f9Q@GW>SIFK'׋{4;Aul DR޾;⊢#Mu>@>5η̪-YWwb?b>%l_WDPC}$P}+a޲iW:c޵% Dܝ__}{WU~Si4ܪ'"& P厇ƅو"!ƀpǚ>0@"(*me1 \53#_hr?a$,Cԫ!byB~ 4 H JѪVbԦmQ%Zd3mVɬhM*bZLf6EmF#Lf*K*m@K2M53lY&Hj1iU ZMFfѪRU#m1Hҡ&ڸK^ARul.:eFH ZKj,HljibJg_:y~O&~0nUǚ4>~zqfAJeH#0VMBқVR)"ʗAOk E,G"xDrK|"BjTah>I6lUZSkh֍h+۶UHV+Fƶ4ԙD 52@D6 Wlͳ6r%bFQU?lJ%8"*:{|f9tl >4aTD_y|i4}|v")dMgq g\>{Zt:Ǚȉ 5|ۻp-fF %DkHPw=WHB( :;]Ő)!! vwMֈP [A:  PhT$ ,їӁ51]H(ֳ@}s=O}w|<|oU];>W6,L=т-'lmbU}{Gze{oM1ۼa^w]a9pĬTTРlc5Phu\Ce]RfKP*Su|uzIqhתVv}a){u]}$$I!&X5t{yvG6>2˳% g&UL|nh)xP{ay)*|[V`>A(Sż.f/vw3ەw9= YP6+_vقK01okJU|{e\[`aۉmMj^}>֕tC'e%Fi"DWl]=>slj.z=(_;_O>S[wǯaEefvvPP@(@AAB@$@i&&L i&  &F4ɓC@C@4A@A$  4h4&@4LI 22GhSLjzzTM<ʟ2`&Q~TSOHoTzMO)Ğ"@4Fɠ*ʞɪxCiQ$(؇iƧѨ&TC6M14d#ȌI@ML@d@Ѣ M 䍩=iM?A➔Q=4ѪyF5STߩSSS (MSS)=f5SMS"R 40i2a0b`d4M0ɣ L LM&SMi@D_%̤ANw63 Y̻B$4{Y|79n#"t To2=X詇[Ro|f`oÛ][߁9,T"Ӊe@s65QEⴿV#G`EL&H]ȝ@j^bđ%K>X@+ nl $[ vCjvwÁA (1UDwNuqcg7Ci&? N'|:bzj k$҂΋75=pG &L ߿5ؗQyѻX/g{3?HYgTWU< +fq(RoPOVV-҈sLl^{* S]~h܏U5} Ҩ C+1axR,"aM|scs5M?eLf@N麍M^֖u+UJ*':7Cs}.`f}^`8j8j8׍XWҿ cg*nX ,^ *w(y|;M?&~KHmT;YOf[ADF-!0(F좇 ׽(PhA>հ[j~X=ȸ,|y4ɀHb+9Lpr$0m(iOYaY :tlNyx-9^}/#֜' bL &#Fa )c[-Vx',hN4LftQ 9?Ȑ" Ԋ6[ Ѐ,ҜZć[P ufp(/׷fPW~/w\=7$B*ipq.G+sјe"Ρ?_) }DZ)2oZ tjei+$0zojz:fGHrZx&g^ߝ,˒vWd7ȁIF&= rR2ۇh92ݠlڎ\+Qd[=E^ILP=jl`7}}Շ:8Rn}ďؽ0] Tp(Us;؄3 8.:h&Z&<01e L5AeO9]F 坄UObp9|~4G!6FAQylA Tz. ]'Q`P0x*XD@$ Ҫ^0 {k}Asݯn -x d&ٱ=KEhģg8"2.[@d]P*whs8$37lB`UMY &}.oluHXPh5f55Lw!8c,鞳\L˄8F<ȶB³Ј*4-l7dZzU ?$J7B30gC_'|酯hZhZ@!AL1&]$?ݟxH4 x98|2tGuDMqNvB/f -xzlw-Cd}Ƙk+5?( Pk\eӄL/]g಻մƅ2=!aN9&Ġu@jI$2dh<<[7@@7V@&xݵjbDn2QU*4hM~4wwt ȉɪaD8}X@^`\$4 U ~géAgQ&SkaEv\<.nxg Q^A7'eՔUSM[@7Y20"`>G 2yѧ?#%`KS,p:X'VY[ f56`g&YeD82*$X"H$DupqYje]ڿƵz: ut!ۚp%>4a;[10ϖ*>lܖ l@g}MAX k C+9,@PM)UlԘ|o *FTt1ȆbƔx" B;-RCu= 3@[Hi«+nBFỵiTCW WƁ4{{ _BqߢT : J}q P"3#:4bT*e,r +>')ݑoשmM-@*`UhaDdT/p\ <p^HD()dw>XcķnrK"{x#VbIC ̽wѷE6^J@hGUE$aT(n¿Y5nNPճQCPIHq#'k`AipZ5J{H":;:--qݔ*l.}GHVۂ"!U 0*Mh>97txs,CsϧPekx,Jr$0>GQpb>&YA0t`헭ِsRLs ˧}GM3Y!mM k4D\t a7?nZxy~fF$,QR}Yf~h-0<}Y`ma'0ph[! 5T##v״ezoOӮ!rXeShH!_QS/"MЬ'u.J1),j=3:D;Ue:YVA *9R=%—Q7˗*(&M3S$ZJeSVt)VY7d6;ѷu$(ȴfykqv~7PW㆟ PdPff ]M$;FS2/Te?!:=6 M>8b(i&<fտoڦ."&]*Vӳ {EyaLꡙxm6h+xz"(܍DŽs[$^kI9@̶b6ć|w0{}Ƣ2$*X|pe B$RHQ+LFR4fW mZ5'.+t`H" ~A69AȜ%0H\X?J_ , uAS/JP"u7=K/ݤOTD>X  *bfh "ZZi%B$"E!qR)*fa-B ġ]YoI9{=@t&&"boy{ "Jw\ zZs@$ B`>l<Oðo(H{jy20$00"&S/gD42JA}mmTϹ'zUnǚg߯yD) $DS݆-T0D4BD0ߗ*%*&`? KX"`2m~7ja DTđ 4OdTRQLDTA4Q1DІ4h%b߬S`ڭ@2F0FDߢtRu}J|Wgu?lRX~ Ywa#Ys.yUz){HZ{m.*1K|zEfgGRp!g#^m- o޵߱?O֩p|OARĄ$P?^UiaD\zIi ./Ztzưݔ51>vc&8UU2Ie T"L5GKD $C<Rhpfl:Χ>deH~?D]S0Ql[#՛PjcZσ)7hbT0QI{N.as>0Ïwc:]c>?ډW\޽@CL PFEjH'403vyQ)@C!n;SZij߽HU CN8ֈk:`ca KƃGO[fI PpK zr*$tMm5M>UY,;OH@Bsz8$2IdCLTQVfMSGfbr3w] 0?ex(h9p>cᰖ([icC@."$(a2,C  yCp-U.+`;Rw0t/ Cmճu1^VF˼!!ÃpsfS1"1P!yLjk!,!Gy@lbXN.-&W[:C1@:?1i !pd`;X;?/zaL +Nk)Pлfe  8E;ƞ7Aۣ~!x}A:08tuǘ˰805!(^P@SI4S 0za=:2c:ψu88N`:8C[J9_rxBQ  GjYgYN;7GzjK)M^ iPmUާq!{/+PK;[n(NtIJOF䡘H2]>fa?O|q!VfхX)I9Sʃ B!h?ܹ58 M_1Kk+JhOv)!IA*rHR+ ss7C$ F,O#"p5n8f$J_x~߫p, hUaD(TBMw!ߌIq@@ ýP]zΰKS%ZUD:5QOi !-UpTlc!LtS!B2U !eL;0 Jq *w݌9#_yOGVJ;SV.*7;԰FD$|G^k~Y)JI=JO@P ڽSswW/PJ7rVLG߻LJ_xڶn|r`O_Q! tz{gHbxd FWy߼'e׻r=;AR~:F eU;6͡`,;/adQK؍.Go: 5|AĦ+8z) 9Q jvQIH@<Cswuf^,D*L{JF:J ?A5E6W=% ʄg6jE&!bېt|fRtG$d1\ܢ^xGn %&V;4DUL-oj NJ8Cg#A\* q(>#OЮ}4AL :4٨ 7^<Ljaf| > +p J+ WO ldvA\Š}y2`~,f,75h %`[x>g[[x`YÞˤƩ59fUEsQƦct"'S/]#\CKoV*36~涹aUY[ubuQ]#b]:zyzpf2(w f~0Z<2EYJу9AE0 #4 ჵAA2in;`'=„(vzWWdF*Tn@8P0*ug.MQEKp(;#_N:&sC7 騜~G@ܟQ `As؅NB!ߞ>"^οl G]#4 cZin]7`kf_9bAqRˡX""i?1D1M% x"$"%֡a U4̵4x< B> IԩJyffg3WTHDQ 4QDS:JLY5V N@D 9eP4 B{'7ЁӠ U%Aa'*>>L@2H$E]ezGUu= ړIHe婔/׽f4eu:4JiP_3= S_N kIwO6<3tы'ʹ:͂_Sg޵ҵOH'L! Do8H}F38WNdJHLaȃTElu4D2un *NHo#8; <dmMva%(vlÉ ,)_U4.g=ť݀P*}Jƻeet?[|l8ZC}4q6^l@DXif<ؤY{^PKa&يt ik}p5i,cMIm pNdsoZjK/TYr+ʼnGVhTY Ͼ].|@ wuf=2FHyg>mE:`LQzHbx{[n>馴İ ]7}%Zd(;ˣ}"徔_T &26Ʊ-cyi ,nO%H8{yX8T~ɛ pyC__uO-tTMI@p}6RE;;~nXEյbnAhAJ.jؽǥ~?gf<8!s1yn E.ox#?U;@&,:MAD5AɈSG&nAOX#zv{;%WP43:к{Uٙl:-Ii ?^uYo7M>F'A<&TQOQY gFθifpLl$اhXkIɃY t`l= [}ZAOʫtA 5P>%[hTOX똽ڭoaeċq)yDįW\#eѷ4NJOl:D %i1vBUH[lQ6w,2=氹,E ux]$|.Q\8u5;Ccmƫ2^Q,mݗhF3иH3)ʸIǔ*9Vc735]Ah2;Lo| GJ%5 ߹r#C-Ĵdk= lZ6NfP}2Dr-ju_-]T,@3d+3{B%%!'^Ewd}l)_\-5FT :h)[%1GC~ɥ>$L9Z%> 732b_ Of@~;`Ա,|VB&tyn *Xy߰=y! y`Biь y5_'yb 5S@Jk/̭؞A:MA)wɗҜwcdIɥggyrC6Z 5wIB$;6℧fgw}"SMג w-ot_Ʀ R^I_ѐPyhHkq}.P4EQ cv@ d较T> f^mOGEl8B4qQ,744IՀ:4w .9& A;#\{ղ黐6ǥ{7NʟGa,h7Fo>.X[McݛyŐ{munWl4|3im]jM[W" |N(\Khf>v4 'Wi"d /=**C(.Hh="a!#ZPSL<)&Y,RZ3|3v>n>@+6+x?@)\6Pmb5fl=%;7F أrW2/~bSo<LT[R9 lNߧAf ָ!-&K&d%Op~ॻvLj?#HUdr,AgoPYPȝ ZҎwq&' t>6@( pF[~$Hqu1R;D8Ky!Re[άqEM=3~OͰ+e&ef7}utTE &o!񍗿Qo!r?@CKBe^s3=ϡ0?\֒L椔IPrV{N XцL+[{5!!DI֓cŋwqԽ(b5Ox-kڵ/r3яW(o$C7@/I.+$n0F0}>&~14) =ؓ`Dh#IEej+YjƓELK…y)ekU)y[^rl%`&a˱M8aP@0 /fX|QWX\bwb$6zImG8Р@ܞ6h]<$(Km'zJ{PvC1"0xT/r5oheUַBenm!3Av=teQ뇭¹'oq%Kdj 槗m():KL Z,kCfi7#c=U;7dVWWj8rRlvqb 8p%ɜwkZDK$7:H^'[XaN{,}"BRn`lW Wߠ,9̴)8etݳ*AIZ+m:[m cd~A\-YUm|JJuA'ԿD+;PC1Oqe#vl91wS+ea: <9p<#^Rpܬ Gɂq 33W0TcT-g>[9j "<-->3wTGh,lP 736Et/_c VbmZZTA ʭ畹=-dQ\Jo: ˵ڣ6 q[4I粪\O)U#~0@TWN:1jp @2dW-@X8*~&k8RA|%' q<1#\,B]n_G<$i؍K&vvyb(X$y7LD04="ށB2A5eA]KH-"*ơ>Xq1VD̹(%/Ύς'(]$"CX/薢O*+ܖ E1gm&yɉX˜>sxl+Ɨ5bu ƛ(gay=VcXVAޱh#m`*wuLDM&Q4.J}d =϶?DgY,T(9'B 8dĈ~3Vd4f'ب*7#g+uaEQD2b\%_迁*"1/'M2B*1QyNZ &dizh?$n4]"3|6O2]KԙD~>iQ463F$aY^BT3^r>H6U P3 ~@<* O+IsO'qt{ +Y ֢S8_~UYOͻV_5o)ZoK2[#j(8t[vS#Һ/!o"SIfтPI.r 7IR@Pij]ky lB͈!!"y>^[96[HZf'qG/u>Bz 1D@FkLM?08!3$H@=Qڒf+uݮ_#|nzmMͳ YSJ+JG?Won(Ǥ~&Tr7'T4HcJM< H F@@-<~8%Z a]%NZ<.FNV_=Ten.Al[fH=P ѶVj{R~Τ:;2n#<:@VSL[bJ?Pv4NV>4b_ Ղ7€3 " 4ɷSX @@]-z#{`Bl0}я`Ē>jR鑼g }b_F7ᅨ߱%>rh?ϟ'_-vR?)` 1f:Slۭ޳l.lzvR8Sj'dShվs7x~7~"WH&+ utbՕ~΃w߈@,Y7խ_0D'o}ŸI%29d/ص4DS_f(ę R V%T @1fj-;Jgh%Ggi }|C3H]!lrQUI0 ݝߏ`ڛ*%xPe!rFvM'ij<5?4MlM3;r(Q*K 6ٙvTO0CO rc療 j(BBlR@Q/@l*p3*臒QG"ԊP* d^ñ@+ qU!@*C\brŢ`H0źcGELUi& 5u[٬|;>!1OY'OZQ׆qðiLj>V& a kҭhHDf!{3HZm#f, 0V!k{F=/u22jt)!Ls3fs!RC?^Ӣ)cH:׎=8قjݙA#q-ݬVz_ .aH )V|TPzL%?Ocfb`|!0A_dg}QTUUUH`0`6(W80 .wsD0ca/ሥ`Rf fIIItL0(V b( `&I8Ch2 sq!d711LmTjޜP$8!t Ȕ޴`h㱄qF|EQ j8 $@'>l М!(vOlnM UAMwn潋ȡ1~@!1r,G{:~J"t}Erwqdi`6{>aG ?G"~V׎l5tR!Wz=Ôz`,]r4L5CIb 礪Qf&aIP lW˜Giojvn,]DA/l[-}+t8ώ˿zkc_$0墡 $ %c004ѹeeeJ }3S|L=3 aD kAG4"!<GQS P؟P "+s9 oڻ"/M~\Py[)Nmfb 0۾ydm.%;nlaah>_ɛAT{/阕s{UL bf{u (q<R3%wB|h6h\Dp 0k!{ ̾20g[up~9}jHq-zm=>l(Ȝt8D~|#${#%}ˏKiiŬe0ZkuرA) ɏ曋m ϗD3Kw.v3>eMzlW|NM[.A&z#|*eel|*Jp0WVNVތ 8U&yFO+ꨵVݬ@VZinV\Vrfs+-dz mx̷3,W>̓VZݎm pB0QW.Oy0lr)4?0"&~yo1w58j>Ghk!bp̐  T]ⱄoYc`t!sC)$L̗IA*`Dk[6G0|^䬰+ׯ^zׯ^zׯ^z׸AHś^EBNu >{E^0u.uMU^]=N.oYuLCH@P7,Ѿ1`X.ٗkgssA q{e˛K\8{'=C7sG g~w]96Nha`'kCC P^ywru#n Ledž/u ci×O]5BEo^ujiQ: >7V+{~jқf&"|d'32"&'#3uE+Fy}N)?鰴>ˬv74r_yԆkX. FeXz㌎|rOUJ;8B+$@ I@yDN]w;dl^SnUsriM"Cd U[nͿfN =o%b*%@ "@U$naK{XS6Y1C ķb$"Cw6%1lv!CY0V|Rxljۘw9llj^ @:`]oO_MtYahmR+Tcx+}PRf[a*T^s̺Ɏm6qu}*s!u$*ӄtΧ٦-~IoJ0MWs xFV8d@!ںsX'޽Gg9) lQ5'вr(%\Bah1 DtQ,@s A1 v *U ZUZUB!o>I'`Fg^?RƻZ TpFnH׿/ۂmyehS'`v2a!E?w8#=>ޡ3?x[n08an˘ܤ:~fs rI%-kXBqc¼UoFsDx檓Xęq5 /lBYFLZ:sZ/w\Z K>0RZyRe4 ٜfHV̸ *@pJP:o?}.v\Onh(=p2}3e٣Z)~]SW)Lݵo+b5;ywFAL @ͱӯȈ;ni̐(CNq_^r a\ȼvP:wW:(3D2Yv%o7BP̲¼!JhUU\,u42 ~iOǶl'{#[vQX@o`(ޝI&N/#ۿq7= ;p5UeQ2fKR]8৾zq.r9lWw V7uqq]c-%+뒳&܁1<;re{h}T#/볜$ֹ3PZ-h[lHL+u[+unrx9kva4ɀF5 UD(ݬ!%5$Aǣ셽{r6U]YlP,(,7"ɲŀLk'Ýǣ?bBeVϻ 2< B*'X.'omj8pg -1;))ϙ#»ER]Ly펿 XBw_Hb11F4նLtA4ѻ0'rorpOxX5Τ",6_%ǀ̴aW"y[GS'?Gtv)%Xܜ~}e.Mf~J0[m9TfwIzRoLL&LJ "4 ЃB 4 ЃB 4 ЃB 4 ЃB 4 ЃB 4 ЃB 4#("ĀHB" *O:w}7!wXx/I) CVZRUUj$ dA1f`^˱ފkTŇ&3uEDˮ8cha0%MLQc)lvLh}_"=OIm.i; ߢM|tLj2ksR^'zԈ::g*Wϯ%۟tbx:~Nb|({4%G,IS !J1ߚ-N,U;ϞLҤFa 7h# 0nT);QYW-o~-,yw^2M־ʄx`#=pb)SONcRfkОRधC0O*ɴu]j]kE KUϳHh˃c%N.krJS/[ k+J ݍ,lپ}廾j; *C79vZ%'8?:ȫp= K6OVr#K?V[kk'zИ3;9fY$ۣ}doqdg{Wm,ek/]Ky B}u*g`u  D `dW#'8wj )w ~?6z}xt2egggG} $dek[A>N\5KƺrGe}+wF}:X{ļd[wB @Z]yd\&x[gXsMa -=#02sB?3g`ʻ][.ɆiBAdwlK#~D i;I0`k`koe:Vcg^6F&Ҝ3ĺ|DuZV€Kr^zG i83W&#_C;q k[N^R&`8S|09J Ꭸ[D9xl0iiR D&vUTļ(mb.\`r\nC_߾'SFq݂69}4<2r 3;3jbxAiE7|;D}XU?V 7Io>u1zc#+okׅZp cN6 \X@E\3)uWZհt{>,o"]%Dq3/Ϥytk:w)(uqᠱ֜ؕ/}D[Loѫ0fDRY7 4Uv%x%L'P9TmY`UwT N`kE% ;=|mWmB۽Ҕ:HMuuk'%Z>-u{T\v'0'kOEVSVNr1 G[+E=2p՝7NCa{25]bwT*釟!# [$=n̳< f ص4JVқZS> -1bX,+(,>+֜VSѰj<`rI.9$+.K/CLaa0lGb˻ž:6*# 7ߌ 00;\ve׿|%gN] 埃ӌwս>玾}eu K[Fps\B3ϳ.R%SPJMMK˗ol?S<ssn>ge_MӴzUrLI>fkpr)tc+wT<1|0I\˜c,^DOýf &A28_|aaVe: ZND 0V6g&ʏ;xKfe;-#PdžӍ|ChĔKavsLԓT`}g#:hUWXYBb4\VC+y._c1Ӗ1^I%% ̓01rSzmٜ<xGJrLr7,@]20[YkVaͮ`zkxsJauZ݅*q2xMс_/5pq#}}[dXy<7i=L%dj%<jkC-W[V}fs[3#ΗF];sݰ]䬞usQE +H7/sO/OВSVxJplS7IVS`v^2VkNDnn;S&}aKn>E~ "5}ތx!cZ<ϧ*Zͪ罻kϋ;,~:tȻS& ɸdi{ ɒ)R`_X ccficIFʙλ~0;2wwx/nbLz-E@]Ol9T\c _ [hK;{2lěڜX;vr'zջpt=Zml<'=R"/fi9?Q8f Pe68}3Kkt2f br2iV:3ӳJ`ؘ&kV^ ^Yᖃv9-J|ró_=u\~Y{q({ԶRmNTlt݌n&uO,<ki<ÛȒTʜam"}~kO72o"H^q>i5[s.YZpS&$8 C:X"by<8%sH(b茡T]hnS0zJVF. 9w7m2IZ +0Uumx5,_M"*}#>gU zr'즇pYLš,2jc} L^'̑iZ(H@#ȘM"@A&ojp-K/X87[/qȷEg:1XnES"#BtI؀N0&ǻly}du9R @RZ:u^.qΎt©gn q_߷K~/Gfr(=֠ҝFZ~O,:\'0%D;xDyLHƟ 'ъܔMR B-##+ :*+u*^z,7[ \װ )K|'2<0K J~@L3^-25UJJ$p燘DJ`hoā8u{NܬIWq41<먱vWnW WYo!ЈuVD;&(ևFvUꭽ>ƸcB3yuE& V h_QVw*UWBEBa'R Hf!蹝fB*W܅!VV*4*C#o(Δ>l3}@*[[4 Tz$ B.Q+AkՀgPaYƦmϗa ~pr֓t=ʾ# 7؟mZu:=ڡ8DV@ B"JA@ߺ,TpB0IB!!!b!!!  CP !j8!( А B ` :8 И'BB` `&`t& p\LK & $B (|6!K`PrA$  ]HB2A&(z(hiBRA7=vHhN !J Kb`&D2B Hh$!a7ġ)Q4 !CB!k$0B] ! P'Ή&bf<7M8CP H$CBBD=!0OIb&F"21 ܂6AtA P BiB!A.HnBC PD;C=8 h!6b (Rd)&"X|H&LhB!HhBu!HqƆ.PP LK BPD'u z=غ'rNTtp_|i?>>*$tU)Q~e F*!Έ@p@4b0TpTpGGPPHABP P TMQ m󽴥{?nogy}6< 7s>-)I!t?C$"P؅pZUC~e @ ~pZ+(q*7U03f@"!zĮ74)OY (aAB]Bt`t :=sj~/7\y_ɵp޵zІ UTvD]pGP> E<-B ) ?=ү*oyG 1UP}_W3D?LAxwT5P{;:Sx 75{7*,:l7"rAAhA/u0Pp1^=J0CZa*l `Jv:i(:hhq Ë8suATTpEu^D!lTNQ0P81 N;%Hߘ<(X\ IHP, Wb,nB=(D\!}h@l>CRnB) rRlLa^"Pf9к 7bB' W8:P!78"i@C@"8! `SoĀOo, UUUPUt  U;z׾Q^QAj*-U@y#ﰵPU! 3?nfnBUI?! KsoSAX`@E;>y :(P"F TB;C$WLTD5FUoLrCdX@% 1P%6 iFBEϧF!!*_=T'HB!"VRx栅utCxTP%B$XBeR!pG2SDDKu`yPME'A T!$W݈'TUdH@ _eEUPBhBYX J_&(?6 { @>B>gzDN BH0@T% &*@@(*EP**?>HƑ5>QDB&B@$ !(@HHJ2 @+& !bb @& BBB,$'?%9mOO_y'{T3"3:@g|$yPCwY .- Y uN T_O}Z<貂m c+‹"vͰEd)}b8aӜfZ-8 "4IQtC] JM%Z0RlV( 6Q$ [d9x(+7f0n3Ћ >N[nkgjnˮu/]@$-4ٿwc}Ү# _WR9AC ,!@!$@F>׊{4HX2@I@)򿃁j) ר]/ [bqdA "d~QXT{oW9kbDxUM3Ze jeJ^[%ء~mHI .Un=Ֆ5I/ 3T ug ե>?Rd2c2 #@c[GΊiOո hIsΠ=(bF8q3#i_ 0n;.U#@F~|Rz->d3EV.:'w%j.soXI:T(b_s$(]ajfYD/zc-Iy|,W/eʰ  r67zYFFo[^u. M{*2L!=H :Ԥ~ DNyUDZoCՒ:fa+Ό I5%VIFZVב?{۾/]⠠AQ1}V)lͣ k=;$@ Y Lx!(k$TCf7H}b L=GA*AH $5'}Ĵ]2!J4N :xlޛMNSTaocmn;wњs8[u(;jG˜Po0h8PG~$M)>*CY0"Q cZjK7b 8}كW]}Zۦ>7M6[nLހ Ld(&H+s~g9> C#G/~ l"y@/a'4kmS 1߲ŚU@S nCWU6=u Z Wʱ 7MܫuVύ g&b@"yr7,QLH?~`@ dm9u*5 9euefpMmNW/Vgמ:T{Ss1a݆'*/xit=HgCZ JHZ"$dr+S*}իՑ|I^Z~E6C`f|="PɻpPA Qyrp0ψ xgD%f['4S=ο ,O/T( wGMM %jZF=c _r00^CjézִǃQ#cil By^ 69u]҇9$px4X8?D nݿꖾ6@6u ?}c?{[yW?ȫ.Ԟp*9{`)LQH'FyG{+ߍRZ/> K7lY(Sh!gu3MMP;0dޯ!{:i$^~{jWvcuo/;֎?9UӚ{?@VΈE2!Oj\y/4a>ϭ@`ꗒ20Cle N댥D&My>5~N(M-. R1k#񫊺LB,Kv}46|H#G3;Qq2ecMEw ,0g%nن9 ;~n#A@Ld$c9F򾒬1+?iloCjian8e֤K) `jU.K!bbK1f>rb3]b˨ⰕvG.d/X*ٯa8GJz. ZHC]<]pȭJFnAF}}6Wo ڧ:67Q}afۍr>ģϖ<|gE$lbl-r,u=>zāMxU-_gOl^cl/ ,` $CT7$58\E'gs@L1ãv _K6]I[ EBMdžݕ7Q6A`d0S74kĺWhpLU V`/ R/+R[Ɂ(@1Qп0'f+Q ]Z@Ft-)&0x9yR͏ @~`xT"lHYZA(k2,bټC\jO56h3ZS98%IbkUU{2իgVuT@?'o˜xOegIP"g}e+;p .h?6ƛ6r= /0;>w8g&8Wx^cupww#$^6$[bd}U=f#9Z:$MoK.Q*eX>K!/gOHKy+%:OG #9,|R,/=[P1;F,@Mؔ|L0Jbڝ %`kGFc>+)L&4ϗ}NZ1!*A95'ZU>Nx?2y@-gX9'<>-b7)ܞ9Ӌ Mzv UׅT6}A-v跧rw 9rZA1(1y\[('(baxTrޅ^T͆ަeCpf3ǂP{F"++>Ib^dƅI#w+\p3-1  @/)qtayX+:4睳k#K5֊U SXY{ ·687Gю\;6_ǝoC#mCsqlk"bpf\d=cɼv$69k_V&Fz$ echOIQI9-Ʋ f%p͛K|@Vl޽t|Ԯ31I.>_ /,^,g~q<]nV]q d# 1@UP~p#3NiɅ30VJHܸmOz_{en3)gt '05Bv ")s3B1GkWpz;oᔤWXniI7c@Y%lXLrcGv?&>G_<FUIˌPbTK]}}:ԢkZz!2{׷I /VM֤ߕom9˹$\|j\YgLF RHfĘa)MC۷BOB`}~/+x|/MMjQcRPe"%$2PW6J?-:kY~DJv_{ j<A890Az%6RA݊zoϟ *G'uX02jjĆ0 @7,Xw>D o&|44^ lMx mܷk:Wf낆] }ΉV\D@L X*S$u4> GS:}FM*omHٝ~W EwԝK=q)'G?3(،I²K$/XR+sAՖҏss޳겸^iQ3fd3)hf~s(HDPƀ/|oϫjy/Qk)JFMWQ`Hbz31/r9'v2Ƹ5ai_Q ANXV~:L=?ibvjλ,ꫩz8]%l =HLy |?9;}7Yܜ7uD0.aIs:/>L||>eR䲃 JQ^ݙު?/%;Pd&L0/D‘ƽ.5QK[;˃23 ~3>\"#"18<˂#(ǟR0zΰ*Drcn8rcy66afvWns'AN{K}ޖZC^s֚qNiz}T5*/Ky10ݻvد❼`P7%bWH~HqB-<{.\_ʯ??<MA-VK/rA|n]]|+qzp?>L"Qk5'rX3dq-)7hص7(30{@Ӻl.t@ ϟװ߮H kv$M$yI[WBx\5VH#R˳z޷brnD%*\u^9RD ac4T{SAY&X5)+MO3AG+o$.7OLuҹ)ۢ[\5e;1Zhz3\}s\o`˻^}YRl@2tZDDܞsf318HG1ޙ y3Q[MJAiID RHTd)Hⳉޔr-K"5t : 9neY!JBHȥ~,|Sx#3dl)h $ S0n2LY;4erv"G^t2΄Y(.'g'ZM3*C diIoSZpJ3LJ#'ES|J @PԹ8鬊d 琓Yu*3#s^-smtor_7ۍg+p+Wf՜v( q8'8e 1W2ߣ ``bapfl|)20x>y}gL<<xr-_x\2"dr&5X{:qV8lh=wr- [4)O@Ϝ1fyR dN3 { V=iGcICד L Wiw& ?Ưx ރC`:qWƓӝ[ giE!";[N#l+϶eq]e_9TCC}Oϡ6hVF@A$YS.o~s_s0mAD8U[_k[x{g+.u W'GEԆ  g%aBn cuׯ"K:>:D1W:>0C0(t}Q{:r"?FQPDy҂#b##7DϒQb#b#D}DwH{ɟs>|[|!:YAڑGOi+B̲HA"63٪}XzXI( LLQ̋~N(p0n!KeTW`0Tdl5XW.$/\.SU ,? 'LDeFMdcDsk(t38 !(7SUsa^}fD ! z)JJp%pLɦL|~Մ#d]"-y4XI0Q ULS(]Oߗ6;4X4r-t$"Q ɚ*KpqqFi=;Oz`$yÏ>ndY @f^SדTT+"敥|^A4eAJ÷mRH :P_@R/Ν;7elX48/$zX?$(iB&S| #jmds\Ge}ǣӻANv &/Wj2/OP=XVތAr)蜪s*U;G7qpWj6ԃWlj*'m)l,!Ἥ˘S⎾+Q򵁑a܁#>.ЛR) pё1=VX+vnkA|>]q0N %Ebibp ׂ3NSx4ugx]Wj˻ F۹\,h4]qd #_靖r!MH#<}CY"5#?$ 8Ny $ûɨ|2éq&Cnv}|w3Oz:!oyx)^үrpV#{`"_C@Oײ&wIW ȂaG֨ P0D: Y5JVl5dI,](q'V j@y̺UEZ6f[Z8gw^AULp C{ 590I4l 6a0p/Ggn^UMu&Fص @-iP@,gVYbl6>OYxuAQGD;̀ybZ_Y۬B! P҆<05!CBC"ЂR!CZ iC0ByhC0Bd(R ЈQ Hy TeBxT P|*AxT طA= T P|*A:8RP%") a$Y BQ$$5 C0CP8 4HHH0MD& HBpO$%$P HEa0H ӆ)L 0d` 0` 0`20vVD,RO! N+tS I_ e<{gWA^_~/s|"B2 ~~~[]3|NuyĨ@@(6iqQuyۘuc;?Z?dߜx)u~p2 Eb؅Hǧa%i.~D>5M*@OPe YdYd`/]ԍQEUoxq9gVkU q1L sh@Nbf LwNhy~Z!סhq€5H cԪ48 1؄;27imކVP4Q^8-jl@!ǩ>HI ֏4oF,#ڋ\:-zQO+a77ߎF!Ю DJ \ l֘$" CCG:01 _A|@ShPUIBSʝTa0S@*B5(w k ׈z2K " ؚAEOMB?gV$SsЎ+b*~@;"*hF. f+:F,ѻ`A.-_e054f TSۢթ0}MQq ЈMnRbZ,& $7S"T.lWxOqy)]3 ]ZcDg(عWk`)1zSHN|׿t~+o$aNiױCh9u$d vpckOӭ_:^"ģ%ESCUVܶڐ;:jC DD%fLd)v{Q鬳k 5579}g4CH @$@=P5!מ)TU=l+0fgvm g&6ͶeYbWJz].@h.mg8,\&2 zjA_* GJN_wjnGdWcy_/{ܦͿPۍ7tLuOÑB WTUG[ EF tt)HT ܙ6iȐ]mցޔ>]Һij~@vw8 >;#`w0e4a5qe?MTNyvbBlX; u:.WͺQUDF,>HU{+m?w3@5BB2!! -^L}'lM!+Pd;#ie9~s:1:1,c ,$?䟺BH57M"IzGg\&:mAEP_PFgBH ͮRl/kŦe&L?,| ˤWG (~oll3HaOsIC;{{L-WEi\ĭ:M5NX ;\rvDχy$NaHJ{Y6th,Yj韏Ciw͋WD`Qn0l;[}Z~4"@T6-d1̀Tfߤx{LgD8^.Erp^ Y$o(Fw)N rV \ L'KF%u #hBئy8`[80"=GdA?VfIEcɨII$7Td؄ _s8Hm xsFp^Vz7YIOI[0tCQ "P)e4j}ǻ}>/Oqrw-`R$ Hڹ w೻MiTΧ)M'Gx+3 ktT F@}RH&H (YYsJξ jf Yh۶fEE,F'VG0 2h"!DS cwCwy(ܲkvf=g CTP"Jʬ< R9QV'7hpZ1q;5E$S *ȩ!Y}H]BcKY|/kܿS_5G~|5yi[??҇_o7Ap!:Y Xfoi3Յbg*Hzӎ(߷oR9{y4C}>>WxxD  Ge\@A&edC ˀl_ݶ}! z.ܵ\t1̺Hg\f\#320df C!6\q޻w)cw*vf}Oe=._b9uv:|# qhnf&ZPDV\iZzGq^+s56`fwX@3&W ysTVQ[{θ2dRG2@Jg,J #Wdw;'2qf{"xp3چ5o+/3բt+qc BM_O)o&K}E&G^3ƳX,w}\ߎ7$r:l9?oE% AWiO] &o]rHspbcƿs5?2'=t&Щ՜03P.6|-'a5TY;S)ݻǹ{|oo"W5d{䄜 D{~86떵1g_],`QhϚ,PQYwi/K!^k(τPt?@ƕ K2fS YD/Ѽ:6~)b4% ?ℐ_µk{_MO11F j12 -镙0<G[wb# %[eV4`F|;N!3c[MCι`&0נ#=|2:u7<w 0`C:QV Li /Ñ6˚40p`ãE&,yedc-BS30[bö!O*(hgZCҩ&ldsۢ,mZ23rSEUR/ڮk0@w8?A='ўPAS|uY4bR:]-8K0#2`\&% ]7 fzn}gʋlv66coɤ"Nk2?06_.<㟗ū |m.(8S.yP] *DFp\-B`  ̚:"M긬dqD!ިP2"" $"*LYvNGiX9.2kP0u#4bB,BۍiۏwK}/UcJK/M  H{C xfZ^@H$~ߡ+CE #0٫((ӌRJҨI:YU/:d$(zZ^ ?(\%&*Q0~fXfJbD:̦[;N;[p-8h&'_m[M-YbqڍS ~5oO6 5*)2ԱX &fH?[=z*262\$ZżF,%<h3;EZ"6(cbNHGZf=Z%0ͅB\$U(C~2?1Z-)Aj>H͏`d?`F"NiC<>[O/"z].xh;΢8͚F !`~ppKߦ翛7hLuJ1n].@]3c  Jh32ɸ @24bh8SAI4/r1\Q TDh$J~6oYK_U]h1 '$;kZGi}DBpn48,3eockp@2aXשǨLTiOҹkT67Āy4~Ȫ#h<$jAG߶–^o<6>Eƙ!vՀ޳gt_1ׂ]Kbޛ'DR+4!ߜֻ'8v/,W¦%i@̓ƇjJ㴸? OgNޕ|]PB0C+r=FTx,c` `_5>BH߲b ~V jkmdžc~ƙN:jej"HNZ@=Ҧ2D &0P$XS=J+>~9ALP7%L  1[5hP(OM) &Ȩv۔{/Ҟ)'Fѿ ̇D$vU!fG z.iumgѭsG HDs(N׎_{ۀ&2"UäUdI˨TKcB *锓'Y)Q˝?{p.ߟ )B* bqC_S˘nV4.kUQ)!VtR3nE igP|uɂF+ɻ匋dbeVO2b\ (&fsR(RʀO(ynns2ڃxƞeɬ:[4œ4Ы9N1aW2z2%9yXFAYf1uG΃y-5εu%$ޓE4*pD(DD-LDj0:*qHD?oqKtD؉OS5m;4qYNA}mV!Iuu+S=" v}7ӓUwqvhT*ޡfX8ƪW9>Z,6,F Ǎκ%9U32kiTky$$NFބ9]w[wY#E LR:ꀪF>{p3۠[[RT!pXAtH|Ou 21 z$/Ok+UK6:SX\kq^ˈM] #劷4 ѴlaFPf ֹ^ܜe"P2_LKQad6Ǔ\ HqE2n ÍS33"?U:%E7"D0x`]vU0s9g[oVi T|ř bno{w?Ƅ}Q+ 3qR]^lt'| !x~JSaãVp3b+ȉ̅39ۦgk{ yz@vl~ٻɳ &󕓄}`e >L9Rfcnj~0B!;t<ã cއ!~)us02Z`P2K3'B:.# }4g~F'<uruW4h{;ȯL2TiLJm_;-]в2O-6[$ lhi֗Wi|{#P>/gxrN1Wj#eQj`ʣ͙Źى~2!9|"Sroaڌ>#ݹĈ;InǮY&QW0yKi mo$ I^nU@$jM#:tXF-۵+5?KmLW:BeIO|c|s|M;&y]}ɏ?*ֶ 쮖UN="S^MS ѣat@~2m*7;?}BͧM686[i\X:Bl'd)*[{C-e&6蜣WB>5u?(?|}.=OGd $s8s\9x3spxww)(A)L&CZkK(7yVbrYGm0TNoذ"3\4'dU-*;7{VPJ!Mz<~]^38GbJ0̃22+ m- ) ! 3r*# pii830ƌHcbݳ700^vd]>gھsSL2Zf^snQ}9y`1L6b"eЌjFHII"jDMܯt&1į2}g8tV|,R6U e!sTp*@#Eks,E}ϐg.Z(p8ǡ{ pezV>7 -FJ1~Ϸ6E/vDK kIV fL+JPeyO-+ej&>3T6')9ԫXVRy8riۃo7׶FCjw9W˷{;,L?~~g̓vی;?ʕA|8l!42rhJl7|0x\ `>cbӳ\ǂo5_tܝJЙ:Rf>j~hK#&X]h#0= ^?@κ*/w#֓9gdew#i*}7`A4x{!bW1<Ͽ{w/Ղ`_1eF88ֶ%'gyҖZLWg"Z]׾qLmԞq*ɢV]weB׵Em<1(|okbϕlwSemXum>2F'xw}‹<޴j6C\=֜ոJ2$yZ=c[C` H3QXcdJ ӵ\Gw8Skg.kXkuJ76sVuR6s|s|尜sjM # !SU*#Ӆ~ikgbU:ހP1F]P$15uU<TS:b`!ٴok{cY:h+lg;[V> :mLǼ,_ʉQa'Dg}ܥqo5ԉP`ru;;i{mTH+_.l< ţZ7}w$OQqrƎʲyU>*pPJl㢺_-o~cXa?~% @^u@u~~b{P߀=؀,2̳,2c9c9c9c9cX#i%3w4bD4e!jCF.!!X!!Э !ԡ0P D> mBRP;C5!P5 SR |=~_~_(<]>/x/żonU܃dAɞU>:K)8d6>hA Ph&ׁ7w;``~?~? @>vסd0l x*`! jT*oncٓ lwC " ʠ2p"4M̨R2 Jl̵hќxcP 72vQԑE$5gsaMlnwëUv[ۅ3I@UTTP{َ15x Ȯ0,0",3,(diH`PPYYɢ&*)B v H  bF&1oû'b^Kct>/D|zk7ӫY:e*ٰYFX,Ỉʛff>o["0֛/s|[[/?6o;}u77mظYaD~ǿ/.5 8rȁf3"%$H !9jg04yʡMQ9?kGaMBҗէ.o=nsMn+C) !Hvwx A6jbګB ,6  0t9)0̈w{F5xX˕1'}r.sӝs0-30͹`KÝz G*DWHRt̢Fnu%y9ng \+q;JA"NC5;%W)$/7) /W4~>|=޵ʨ90?70Kdv}:BD1Y HKjߜ3oO: x7ˣ#8cw҂9z-􈎇Q}M|^?^o}5).bq65}ڿ [6aNw|۶K{Ol[ z,)=ͬxR=~{ŝvn!1T>'!r 3 *RHP}v]C4:uTqe?m<.趕V<ΧG k-aQ B)OgëF(m﫬 ȘQ0BVV'2BU 5M/ ˿=l/:jL0fp[Vi6ع.pWfA8aa/u!a3)368 ԁgJ0 t4`9D/@$|O7Lt|{}/G?qKu[fr.JI[M{ط37'&~Rxx2~9uc69;sQ#}te.hf]di|k~Cc,^ufp͚ZakhiOrS G-:^3w |oo=/.wCܴKv`XU63E#չnxJ̪ꚞnw6 ^k>!30 ji]3etEA <i3x|d 3,&sa h@hX{{?5Ʋ73$s3<gu_YҟG<"&FO #XQAEUuFBbD6TTރ RDI\nV6.Ӣ;(eiH6^ίM15vGlvD(yu?cwwvSd,+/"91+ȈEjQD۠Noc8󻊥l͠M 3ڻ7m*x~rssi.Zhz"~'T<~y4^R߷OߥK9ZG*x£̥T&DiqO/F ^qCw"7܎Ч%e m>Gu`ƳN@39$d$%=9жʸBb{oŮJ(wT!b||F*HVAt!$M Y "hZ) +.а Y ?7o!   0A * H(]6!M7(*;GAip$%]Ǹ==WF i ȹr4UdH3 ԫ.|:>(gS쐐 '`;oWUy `.11aUiWXIae!DA"~;? }^~v~gǣ>й] B4U!D YECt6* ͶIeh︴p Mn 1 14RE*RE*RTPR)AH"PR)AH"PPE"4P҉CJ% (4H2 >JP R?o#b[X7}鰕,&[_b(P\nh(nPv_"tsG~4G:$ Җ!VP~!TЪ@\h!4tFuC琁(#PE4UUUUUUUUUUUUbZj\|< UֆPC52ҪHB]sZ~VB0d HTV*b-?_'D*]q!ޏE-.a0QFY*Bb?$ @_YRDWT>QReTVQ=S̉8gkP:Q ~yEMUR"DF~ sS kA7ȠtP Јv UJAJ⃿PhT ??r+{jD_JUO9Z޾t|y.PqZ\g]ꡞH]芞dCqL`[dsoÜq]sR#ի鹶(J [:l1?}wieis͍Nzz f$ AΓՊA侹̮ɳ7s ]}?cuB[wc?ҼJD#1]qtg j]k{f{恑v·Y?uoQúo]E`VݼjʖH=>rqݐKZH 2>fz "uz)pq-aDr kԊLV j{c!>SbT>YBtd?'F8=LR"Y]_-ccTpAtgɗJAU$Cm{9c\~\?p$cHU7.ދKѠlj]yuOMR7^Rcy>yܝr` B[jvjE}YK$GKTߋY;ՍqC&N@(4 }13>PchQml[l,aHBPfˤH:)"'sGҪ^{v?\)[$)/& Ip{έT:88þbx|A$S&8;°6w36zi'8dOH5PoH 24*.pӟ]h/{ ߦj>ϐ{Hd/3h7 ?M`cl[67!kq;> %$66Vz+ks3*t qhc`̕{Kz1/gU|\XaU[}53m5M!$4&ڕ~)(PI2,{ Ƞ?)4^$qV4L4ևl *jT(~ʵl$"Esookv23w06%?8l#7t^hށ=D`WD?hiY{lgUٙMe?ꪫFVX.s(LJhKA œ*erQAOᛀ9Hxˇ4x>~l s$ڦwfUs*F@MD 04W'& !XN5{K^ծw. 3xPn5k"9.1>W5[iK> Tbfzn= [:7%IN ':֒ ԆKv=c02AM@OC a1`' _C5O`\oF#g-՘^6@5 YfW[S89u"WI00y]*%H4 1m!lb=W.kV mw%AD[q-T/kj3NEOKڽH1݂˹N,BըMBI1G$-YAYlcєm Xog0LgZTq/۶N66CHvel²eQ1R/v/0a~RZol2˚q"+}u1/4g@1]/,^ΣrF~55{ 9 H( P1Bi$ρ~r/~N|_y|30TG5%{nGGrwg+#g[W+`+ Ŧm-܁cjAe)6 w65:3$6R聅 8n.8iaÈ8/+I%4 ^lvsYR^1\tCoh^YUA (hqɌqͯA4P8%[*S\!rf{3CA|`$ehxi3_͙Cq3=_?@<oԀ%>A݊v`/ ?R Yg'I )ŴB@33G4AIJ# z 31 7xAz{OϻGSLX}d!h;tč1s0=yٟwVR1D8r*0~}+ Hq6(O9nG /&'ZW}P͢C2ǝ?d;5~8kע5.U`z`VOqΊ$t*!uY(FzkHq]1 XG[`A(xl?G}Z-I 7ab/]l5ЉmJ`1>;򰋎Vdž<^ >_41dfFᥑ3H4l ]nL^6:BQ5sԇ}Z{Y-Jmd0¨KHB@"K6q5Ȣ$! Rg e؈$_ぢm n<{}|D găS`T\ $N8GsZ p$ގFοu\? tm^Gq!I10AzN&رt-/Mn-<<ݧt/jcM2 qջ 6Њ`!;޾za!#F1w>?7`Vb::W2m;A{W 6#FweПiiRݭ%1g]ʘn; ;P  sl t5ЛGW嬫u!}>;Aw}{>ײԝ򢽫9,D< .eqYNc!>~9!j}!>p{g )H 9b%~0I۩RB-LC@R)=2 4ٳ;Noަmt\\Ub6_&]Mj*L:$[/'{㤰 Yɗ[7]r靈)UɾׄQ4صՀxDB|ۃzݸT [@ wrz\pnu;~L 7E>wGf}Vє z Awwh9|!B {/A{%xsv.d=M5 Hk[H7$%xxkpțyݍ; ^z>n3W{xJrn}du礜4ivI-Y  NY?,V9#y.D1l@S߇WK$:z р!Co!WP=\2*qpU'Ԛx zkYx>-738r(0 @@HHK@Ea=|嵳H\_U*zliqB`~}㹰D"'Ƣz3U|Wyٽ% #տ:(nTf =9( >6b 8!zH|0IhƪNeZljlV\]ke\;OQ }w`)zo3hܾdjG hT*@nuJt @c^ִ`Wy~À"8:HDEtU1) o.jWk³D,b -1pQƍX ҦCtK8g@L'M9er?r&YO?#f*K;X{t*b>zo+ z㮸rmCu|õذݦs7i+w6\ΦP+Q?-9oPbyu<sv7^Ki#gU+)(|EQ([ѫP m$UbTE  .p7HPvG4+ِZn¬-ĨCbp O@=qcSֶK?^ޕBꏟ :4 j+COyFW)XgvvS:5Gl 9)49@ʟpidハBJ'A%euyL ol&=/lX+Tp~cn@̫>y7lOpIɺ֨Y)3s(~-> N롒 @ue_o9bh`>MÉgt{P5 dM@ "'iJiuVj|XA$HgoxЄ1 O=ve(AX-_, Ip<N$0#X-@Bw>mVk7gpx M80b7 Y'eNL.쳚 :k([\&f&D㩠M AJ@G3&#%(2͌@,9mX,ԹYx$9gh>~9NjȉbbHSO3wxI@&~ѼC+VU8V5$k*/pX pQ_4^>a,t3&ANnE^tRlw,2(.r ץk~kG'2B޳z ]`~"/B#@j<*tS=%:`pQu:#jrۇQC${w>c² 7w2Fچwi~&'3|ƀy<(eU> " DZD.)QKt"qyM[Ap";s׉BPJ5m}Z4+SPzFvP a+E@  D=?k WۻLg?15\ho;^&rc@,ߨ{,5F!Kѥfs;} Oi~'cV>?TMiRlT}WTfLi>:ZͿА1._׾5Yl$@0 4_Ӷ٦-Zk,UnUe%p_C5{9wWSCO b72HBO _t[\&@]8*/~јTpX:~GhLMpQΈX1!xrX>׵Qi`r`CF=CH #:z}sZ4BZoz*Xuǭ6\_[ 3AW{xO?qaA) `$\ ]cO1s`jO-~% Nd`,TYW,AgՋW^Bo*m7۹SjD6I*oQVt- +uۘjuRo%5b e?^`229:;gY!\%2]Gq70ЪEuXt+MhUjY$ Yٺ&O {ek#}WO=dym Mq@ =_*8q-x21G z%`@M%ċ4i%&Hr3&R$Ej+ 8kK{ ~$ Kn_mzbru﷩i$:? t PXjP!fё?;\K-AZ 13]qSxfZHK, |fu3s3 .3q4}#sbX(}xp38,‰vգNY#^ tGcO{!qcjh+`2!CjwUFCcLy gN ղߧT @N3WO>!= ZEJ04G7rwO~  |8V-moFj\%Dg>#~ֵ۴hDHfVnlqv6WBS3cٰºZ-&Q$?+G%*_R'd@ӌ̢_G !QݑM)6{Aciz"d$>J%Sx,\ ש@F?B 8=` U g>zTMwݓ5=E P$H#KlƐPY<3⵸%`AN e3p;TF/詑_gք&U"vOk2iaNi=s6to=Yfaǂ~sk}@^_(| M.lzcn29$3υז0˾c5)DyzGLC0\b,*~vٌ8fp<3+d7 OʠDAQ<5\-7C&P@coo# `+.Mc.υl@$(}=Iꐧܼ?{u<NW#C eYV0`EDPkxO u*zP*i [TN"7B3YQ:OnՔZ=TۈpFFj04~NJUZ0V|%Lɛhhm~*Y&"Π`*!*& p AA:@ 5oP7dC42[7R;o 5s.t ^P3oA^UovD O\Wf_pK!EX_{,uw yF0X>7/U^qYex20N6Wa OO*.‘ЪUa4 aak ceh,ξ7ion0 ›5weº꠷6iK,`& =˙.3F;o;ڛ0XHZPmyү~8ߑ@]"{1 @rR,C 5G$JU|+xxT6 bՁ]t(B!L7B>>po>A?̠f$>ϸLs_Uow_=tBr4TsAryO'BQ~C]Ѐ9H~=f=n^@5}kDg4@@*}e U%hPGLz?ft^vxR!G' Ì#2@&zb-U|| "VU}_ZIov"KӂҬ6@!A0 w[*I ᐣo5$&A4D@-^wu}LoZ2&꜒ 9e޼o8us OtxYbK}͜F))/p ùvEֆx f~|GdͣGΚ`r+3+P2>Qd4Ct6J8{5fbcDžWRGsٰ.Ƚ!lx?X&|n,*zRoGxQU0P9dyscǓ 1jտe~ SG~U`ZtXb\%%%p0ʀAWAbL(D A$H]{ ovpoiaT̆>׍ [` R:'@$Kc"h¹=]=Ր_ϓjN 7M1L?hX (@f&3h-R#84 k (\ YN_;e.ʮm |ޣiKJ?h P@\[-GI-?-@ͼ *:s0>_3zYV z *`´|4D)xs__"'M%:rHVI$i7T) )2Hh+SX&b먣 RF> C.#_1ä-.&3PȎ; 06 p sG( F?ޓ3 &pܞaM*N[J-HGKɤ}X& K葃M-I= yt;7;rz}1m,ȋv2Y<\kmՑOB^<7er NKd>pQ7p#udۉlg](j쩁TBqܨMyW0$33,ܽ6~ad] D_03DC޳=ʯlk)ܧ] ЦVqWGDp =]Um(N@[d+5*'4[36WŎblee3GH;. 4J.bzY3oޔu esXvq%bAA :xt>qd 0E_20_F5nkVGo3 H H~\* 5&9n}'ߣ1Ս oYsf2BtMw WԬ D>WJF;ᥝit'A1susͽx*H4].|yGu%Pc eeXMz HKSs/3N/>{OX=7^e`ftσu?sv˙Q `,h-f0nKWA d2<_ȫ hRNۜ=&t,U֦I w[kh4c1qN<1ɜ}#z$]_~"2,##o9^_>[b;y_{o.p<F@OP(A8!QPdc p',anuϴ lv-`@;wEX7(ddi -wykns[  ]GIT|:^b%FGAV^ JqO@7OUy8`a ]c <_ TS8e5A͛mphc?)g8/ ~ܔ S[22 FL @Zre}XNۺycps (Bte[ȭd#?*L{d#`'q`aUQ( 5"g "/.,*[G}2AXmoJ o 43 GF"a8S~_uA]{$QY?6r"A ض;jT? +E(au?b~M#opJnpӵU i hl(m0`~͛?ܼ2en IfӶcJ@w1 0+<#f4?RĀ .W ]+fH8xj AHC}ʒY؎ZWwX7oZR$'uhfi_) #7f>7J{Ո,ި}ΰ!S!'4θ# ejfEdCIEƘ"$Rlq Cc) ¦~,1>Ysj d|n`}8 _%h$9ߣIQd^vUc3LQyv;)'PY$IK*%tڪVwS[$»vuV L>R|pJphV>-?!%fW)1} g{i,.,I<ҝIJjT?JR(멡ӼdeHz;bDؙ/\׳_б!xTD $H |mͿǠ+ "?Y L_7T{f;_elƖ LD FYHZ$(&ilݩcqkV6ظձ:vm5 8uު^v_p|bUUZ3Vёt7MpOg7JN~INϫMj)}`Z)2cu{!c6jΖk1}ܾܬ?-%3xTWS_ܸ柸6*kpH >\r`, J=+]9^7~8k7 jG;a6So^~v``rƥxW)NF@ڻX` &FxiPXO@jpiwB/w$h!Y{ NB [12QēB @D"ҷ`_ t`NW?l (o]u9}. "kjp?.iN/DtNsS;mM W=6pQ;xxpl=;ktJ0sAX~ty/| DB'aC#^S-#\ %|.mxj@ŃYDF߾kz%B;Xe <\(YB\dŲr /.NօTљlNȱWB1P}>qAkqځШ%C!+zOY.Wr&-IzzJ\=by;uԼ0$ 5PBL?/ 9Hz 1Ob(Շ&ّ,H  e u*T`IdHYP8\5!~%Jb$ET6AIqt[4Uogbw-֮T$H1 "ġŀ)dVv ru6?.y pChqvV|$Kp84@w:Z⮇!]f(i> 7Ęk΁b &lo(px d%ABo;[YJ(@ͺu4D6PeP+Vx{ˆbTvnӺvb'ЄLǤz u"8Zi1ux)_Opso)(Fq$fpuO ~pY@#U(5TRUJf(9bf(9bf(9bf(9bf(9bUJ U(5fYHyrn u&\ߒ%UZ4ECx>7U_J"R+QA"$i>_@&9HcHX3ָ$bDYe.d "f ,DHJ>II A38 û@ .QH]-*XXr9561#\u]5TSPQМQE͡>D"D?ˇ»L~`%)zo ?QbAXVSM :` P^ !B9THKRPv$!=;pT5.һ( rñ Xt@{NrD BC=A€ÿ`1!^GBd-y@"?Q]A9j߁9(#twylHnAO.I 4"f93(9 HC^"8_oRcڒ@ziG^wPs)e=#‡t I0 $*ӹ*TPIU Ԉ|J9y;amFHb*ˁ!HaqV8ACh{CC_axϓ! _G# ̢ I(G|!pZ i ۃ$'H!#&$!VB$t91pzHЩN^#c;Ɗ=lb7TBBBBBBUHHBq?`e@+?-\,!4ZʤV-#';81smG#Aɱ^[;#<Kֿ\/B'Iʴ P 6עJ-`̻Ra}c.*Fb_#-tm i2 Enӑ2 ! mcutWDp|2\ @M )snK҈s/顀:<3xP@g- i װNm;9"U N_Vn`C!wq낀j=VYPoC}mw|kD08dFa6 9;jfio8r-͊k $҃R@'>/ Ht]vA) :o$PY|a h\M@Bʖqe[@~Cov{6BHZBP^W#E PݢT]Og cݯ6h(C kPMDRT??cڎY 5[Lߴ0,@P-2¤ AI_?P#G8vAw#@PBk({?|=oХP u@'/l#Ho?n(Rc}P$`3(z_Hjg!VLh=OGY`An[K9q?7:yaLlSiTr͑C޻O!넪)Q/pu|  } ?-$ujlC/Mj[[?=rL$L&.:OƀUJW/y~xjxrxo_=[!C"Oɤ|}P(38Ƣ@EU ]13qPU_sls~z,Hn2."kn>7Ev~=)[Mi C,O8uW0o[|-!/bۃ%T(@pX Ȋ5ݣ7׆pj*NZ{>IO$ O+tk _@0(!bi)IHU Bp7ڳmGh {_؜ ICͳj@𾗵<,K{A0bԀ4ۇ4SuST0&_3aO|'HbC٪ m#YUo! =3@O v{Ns}*sfnTmPg C& Qc2l`O9ж`!X`P (daϪ<8n, $au$>v*}/\${*ۖ`azs9IaBB yBUXHQFȘ> !Hh"F̂M!ʣdi ԱD5 T.,Z>Mjj9T l H&4JQ(K(%@I$ Q6VȘ"(pL{|c)-W/ CYaD.Gdt.D:vQ ò󍪦'N)T9CV隼Y$38~G 7/X$,ʩWI`1B^t%[?kQꁵÁtl`>Q?09AmD aÜr04 @33 -"t;8fTfN9bYfRƙcHBهK#PԨ"=jJ ZU%nBod,r-U5:B=" ڢSJ6ŃICCk _} 3z#)OC1BԆ7qГH U`C.YEձATdhQ@-았*4,fcIV1W|@ hb qehS6cava>PJR -(($0CVٟGN7{\2B$C s!̅:qqۮ?~0$`ֆ,hO}9a@B!!!!&! IBR%D  J(j?jd \Z! DO@+M/ow %i8b nsL~ch^gyM`ijA=]ׯngQƜ\<}Oq6MFiŃ[@~?F.^o+$ŏ$'Tl|]%s5f#*L˛ (*'Y tE"~.42N`\npgًj f \v\J|^ӫ?37G #*yAkWڜ CZ7@ן*}N: 垀\ش."oL`mgtH7sX]I 灀gswrwgÔ2.w,- 4̛ϒ7Ff' <]tY0gCNw[{q,ηa:uxv^9:`0r2LGzv䏶 _NGy-S :]W|pfm3r+\9L4aoeD"3b0$)A? D%Mi Q)$B-OEi9Z|OkYnj%B Z1 Xo_ꢡ;_?ӷ{_l8}]3ӣ4;R~yB!HR!HR`X4֯f?[HY 0LR {Cl!jJEu=@ x!??Ud &'(*2(DHV0S:QC l1E8) RE3u Rb@31!:d JĥT)#NiB B3sER uUJ-PD{n >9ۈee8. 3_kD>d[1,[YIںBH#>wE6h%LDIZ;NT"Pw;?j<(:" m]*( N0Te /GqL@&Vfxf;I8<>FPqՊ$1g% d"a'=ǦQأ .B"lrᡥԆ,:i=~ݠ FAQkN t1= Da)@KjJvYph*J0| HXథ[_qx;DD(|v\CU4z'>ו™$BA!ҏ,"&Q"gi&u}T{eJ ޓZ_AO`[lGyBOiH1P}ȊG#69$âINhfE^]\ޕNcd x` zLxp'=g]a@߳@{¤*t64#tS :$,zˠ7n3zqpAhhp 0 ? `d\Zv!]Q/.GU1 .0] 4VbpIX<2huﷇ"EHf%օ6&(C8&2 |BΨ5BUĕݒʛ3=f77DYmR$ɒAVѣC(6-pf]]g}B) 1[NV,D5akKL!уJCll󣶗LDoQݬE@ܭQ]006ɡ.R̫XKMQR+504Ib΋k21"Ξu,mvkA&q!,)Id Oh27D @(^m`2a;R ! K$B ,&bb!LELEPb"0Q$,DM"2A1Hb BA4 .XMP&"! Hh% Cb кC15\JUV<)*,Cʏk0C)Bz3wrlC}ٯRF n&f%„xoRz]}!AAt ( )Vl邡$BCg1VعfҗI`q&d_,au}n ,d6q"3ͫCbcS[KcF/1l{8đ]33u,E&ʳE"BS0vSP@M34bݓ#]A @E20B F!( *#>@1}0X8(bHH!"ٞ(a}ER.!! O[3_ޑT1Dq,Agͩ5AARhj|/Du?Ap<_n1 Al9d(>'pS.I\Bl)h )W4t>Ң0D}bfсPPP tѬ-Ue ߠg{HBUwA>PI}_q zX?W|j-iHpSS#R%"_fO\` !͉aS=񈈈0vvi;I"x_jB]٬ԱF%"2 )Wg%zRՆfj;Ӗ˼s:"^{} @dUebA_P::^G žw!L ۶^SnbNɠ.η  ~<.1p?'8ޟ4x`f<fHƾL e@R2A;u5 T+Cw P$y{_g4qYkzRIN'xaI,.T-Uc UR{FxE1.V`>_UM* ;B5ud2L(١1+HH1@M*BB'o$J#0!@B^`8U쪙4UE%H,IwCןlvGdrG(r@(7=أJ59$023"O(!N䡫|y`7fᾇ33m:b_TVaE5ߖ;c ``C\RJ&N4tMA|Ka^k׀E/@$~۫vb~4njh<,*A%P CTrB&Ԭ533A%!!P !!F5 CtIL7Hv !Б! ``HBHJEd̒Tc N"®׬"kk羁zHЬʌ,Нj}g7̭"pv1 Thf(D+ .,?!##;XnкT%! 8ycJ`GKŐAʈ uFHXC 8\4 *EԔJD"QI0޶aXB!Ȯ3dO|`.!uC-Pz=P{`!AB188mfDP2Fp(Z$"^V-~ BIQb t8Hw4 + Dw4HIe04\LϚX̤ ݅L3l"hih'""J(UTb,Rmz{Sژ! p o?{0Iy`':X)0p֐R6QJSG¿ DK^-'JgN4Q(FqT@@ hp]dpLR7>':,ǵ#u7pΞAaAMV RvO.!cɪUCD,k)ocKø-f]U$-zO}@\X C58 u6!=JuY: 1P#C)FP{! a'!f*<3L#)+*Ȍ˜19sa*"563ʹEJKF~@G45)ծ󁰩>3c8-jlTHdEH2*Z.ET8ķ(T D;X,8WE tT.šhwy ;=^C9';W@ SS!C#pNjN$H |BZW>aC W6buOtuu59˕3l jqltlF!+w|si-}ߪF̅`Ƅ2 )kJ6c$}k-oUGߗ( uchsTDU_Oܮ9mw"_gꜯiR;3T^hvs@N`0tbt}]noaNrY.|{]X0'R&Zq=_AB0u&l!XaJ4tK1sO>z!  Byp*qsJ<O~NbRQe!-d? ?FG¤zE"%}&`&N*(HmbD aL섐2BBng@I>׾6#qPusƩ0n/99@]i^_ uRʈR*!!IaY\Zv{:rK|mR *[=/kx&f_lYpD<@)Sc3OK] Q%5Wr6sp[qIPD$A y PdA݌Bp!RjD,C=J`' 5![U>C"p9WZ;^DG3|q DIQ0Z݌*" @OjNdb=`&`cz7B#̱X2 tm7QQW7}j$i PՐt,l /:P$,9{AƧhfP!Co뿵"NڐPm-EUii,aBZ)-6.`Q0'=T"R 2D"J%0)h( ? ޥ) B_mHW4ʞr<βv̤ ?:&2h!BKt/k] kϴ{1@ $HPo_BP<!B!PR L0#@DTPLLHD QSA4L@R!J1RC SHȒiH}T')ˎ`.tCB*H%(YwcA՟0ȧk xUk?~-˖QDRH0>vp>\!@(h$d(+LaMt\_:l}) mI8dDl'G?Op}30' *(f$)(PbUȫm?( 8wAԕP (^jʼn'^8(1]G!Gi IdMI~[@@t!)UC[X@@&@@y5]c@2ތ@A@ Uy^uWh@S?n#Ugh7''hBP) ZySNgm5%5 _jM q܂d0 q}4z{\GYy!FyeJVOڞ 1G]Ei^d9Z:iXqXlxv)(^_jT2*=g}.Nw}f1oM83 @+AYNH&4 ڔ0 "'|j΄[#e"BS=Dfznv+ot+Fyp+Sr X7*Ck)~y }~Hr0^ 3~uјXdF>D ^#dVPZywRҎEK0Q *OW_{w0`nqMo3`v2Nw| 3>׻G% r&{ &_hTZy$vb'8iMʬLA͑DUD`'ʟ4K' Tďӑ;\T>5譊4fUWQ5XDKP'[$y>j!@Gi?Mb HJ<(W4p[[>W7䤒*I) HP }#CfffC!|ߡ%;e=?o S:tA! 4u " b@:PCI$hK*z}Q܀!RD|2C,|'AE<8S{8FiN-C h\wBjcpg#04 !ae㌽bb{XC PM$9@;T!)چO m_&2FB(Q9k@KEa;BlBo߷`(dN}#|Xe_"p@rVn΅J0kJWo Y."F<=G^`Ǔ̾I0&a7<346}Ċԑ{R(K /k0 c)>rLbRJ^hNʽ[lP f4 4q. +HMBn8lGS}Yաȭ,o(!̗=>q\Ry,# v梪psXz!X,i(5Z"D(RT^`l*2A;1qPq":),yhp!! 0==ڂQLA}S|~O=#}n 2QJTL"%A 7`OrϬ-tr5HBHzbEaPL AAݕ8qH:Xl,0`h`rɎ1bs{wBn 8@+#Hpݚx"j{_- HD P ,>~@:z|,l3e{XȌ:@T]˯8 Pý|7i^ӱo $! TѷvEX!h=ELA$H[Çw36=L^m-y]?>#n9UE5Hx,BR3wEL |30r;pPN1y _(rł);h/!lb~lGDY$a#k1+M8o649W7=7:Z@s?~#Jbz^ީ-Y@4/$,0s05 0QZw4o|7=]}6r[ٙ.|Ev+ۯ!"-"- 0B* wv"j(FӟgqaTOB()d!t2*AE Nq+BjCAs a;Ȧؓ+n3]EGFN CIg|ѺǪ{<:X޸HJ.?%a as!র1Imwp)@T]ǑDF=ie6Y *?7ksѦ=%P-x12 ܿResc-x=)b:Su_M*_DƒVAԢ*e,kǝ[f_q oo c҇u@:HBFPSo?3pOOTh.HɬmuX_'i@H"`y;]I!)J6%(%Rl-0bS}%vӣa(JXtk|U/ rgaXu(iP)Vx5nbK͹Ywͫϻxt Rq 6{ߜpDRywx¬{K'häaۯ|NwP_hOS^A7_"#aJRJBmn$ xaXpRn GǍwgT8x U$H̨"^YT`"8¢'.Ę%d r$㰉A2jU==P1 T4OR(xPrRAfC:^C>7*۬m{X%]~~|b> !H!fd>緆iP< (+__|A&lXPa7JJC!l"0 ';w~ieg=E: a4i dݟ/zx:VÆs9w:^Ҋx2 QF*>4$OY\nle\#|BX9?oj4J!*"n"Btw"l} ӊ)~bv)U0+ (+BD %03!0Af!cgJO->+oA(!DB fn{j)%B7 $)Q ?ڎIBʳIJUEBfN UJqhi>`3QY1;H%7 ī*́MQQG6//|oPTN<6d)~`C !Wj)@D0$@PA׏4QN\e \nDȘg6>q!8mQ`ʋ)Bo&mc "9D !He3B;A> `O)Q.J,1#%Ly1p@yޒHL|&&("Tv|"v m,"dn! 'gVa"ë `Ӌ>5}EHcN(5͙^k *Ԫh   ߅)>Ļ! #2R,0q<CE(q}J  l,^ls l0B l  }>#R_743nzÎX`34lsԺ"MVI0D r-laܕ%uLY}11wY 1]<,w{sc { ʶPlЕ)G ߔRwAh cQu_ KjN:w۶YĒ_-_ԖzuhQ/APuxV6=\Ws#YwXB@C]+语V?]a(x*uX02Eӳ g{n=i΃Gsw0qY5&a śy͝'Sp.ȉTBC/5{+\} C´$+q\r]hE_?ةԀA/>1R ˭5~m&EI^0+RĄTQo F @+ym".<rDQVI֏Q ]W~_P>Sи$Cߍ@"PNh]Nł>14tCdߪ _v1T1yц#78[Ffw`;nyU=x(9:َ63,7S s 0"+,9G6̏ߨr)avєA3j3qw4k ˸TH Ȓ*Rz>X(C@HUf i*(*&1Bb8:9,R"Epx[RL;bĐ@$@(OKl"J dB&4|s_Q&KpV'&BqX!0T*x̍h"ׇ@>X8"lA*AR*$y!F$%}Eou Ix+ P<DNEfW_+2c_nb Ӡw\ QN JUf 1 OiWCJ >-lwm0N0"x:X7| x:E~.!z(xb) BP4C=Gj`ԉ5a,%P&8*8AORA}C(EWB9O_Z C؊'9`a$ԑm=wt{# xv-@[)!D@Bx'=S, h6a#ʞ+!m (*QQ'DbM4wmDFg!X )F7T }R•$ mnie2pOgbog$TbiξwoyG~,E@Kȱ eVU[7uCzN޻zܬj q̵R(nr-*<͉N|3qCxMM"3 (l), ;7a:W`&ތN< SVˁ``rt9>1͙9DJ6tn]G ˬ.f|]S.tM&N;q>טuu8V !x\:2{ ,8 >-.WEez/g4;{O[/|vC?(J b HR @Py;|s=(?@<1UyzS`Gp0>ENBzuCA ?+;IU?Pxzϫ¤xa]3L1)VYaOM_s^VR+ 1ڪt PBX`dہ_MSKgBsW,v2y ASTQ7fuh!A:L<DB #4@E*mE06`XPj4 _ i1Lj~i"{ʻmNwPu8-"!}YP-ED$t`wxaF?k7 sjK*H>C~/h%4%>fȥ!y"B!P[ ;⠊yQrG{0G$` `!Y;TAI<A^T~ 0no!s153q6 q6\aHR;`8L tpuhOe:Nh&&*x!.`A(EJNé#PL CC EANiJQJDHT&0EDM$0REEC`|0A{4*FfjȆr>l-@@L$A9d4"0 P I<1Ψ@2)($P%6D4D TC0Xe$(~'0%  }"0-sHzbH`)UY D9sL` 踭"P!!X$T8:EJ)ՊƞAPW72&4!9J=bm4݅d&Ac'1*`C!ber{ _Y#wB'E-}'MV *@(hEI@AHU!0'?ъn Ⴒ$?"gcu:)ۃ;bM Fs]iD C8/')"hĦr:'HQki*]M2$_u OT w`[PJF,@OWk4^ 𔓽!ihQ<+glc:T`ϺNHs p[>ZS#y"J#_.f.K}R "A{駿Tw:Rz}'8cWԼjWJ[& Hv*9%(} =<(DiӍ<$>A$?޾JfNL}6Y`"Q#m/_ ؁`*چCTPUb*-AP^J?ig+z$Ӹ˽bnVe ! ¿|pR[Vvړ5t:qFP!Yzף! %R 6fXR|VODŽ78޲k@7T<&A9 0AԨ5P !B؄SWѐ@j&$DWvupE҄@XSXĹu!@NHyPS$ 覓Nph]!~LAي|}rAAQUw Y`?7G(^,B2pPUKPUP%!"<$T Ɇia @ $bA8%$%oZh>@O5D"EhrEF ПMêBT,xW8)iV jC"7BɮԏL:˂ZUB u Yfm#E&7ģ|#D@5ɲ'Ų~L]NjiYڅG^"KnMh:<4-M4#anB"!,8aYA n/@Pp1 zp$ 1M<վz* !(ʼFm\8 3UkkrQQ q#EdlN}HTUjzuk,aȍ]?pF]@Kc@0vSpဎ(Bc zN4^/"U&wK(@D$фU_q?s&ߵz PBV*5T=Z0s922 H߭χH /qVEX1{x c=6UxL >=Th(uhPIͽ=! ȗcgw")5 ݏˁ>nrR=WO*tZ*ͽ:MKIv*UiqiZY.5øxoȐ& J D"?VP|jB #@c}5wu\w@-Y$ w060SZ-$"6u{_OGm(j ɇDEQDCZB&%@3-\4r^qdŇO4` !"i~9fI9#/>"r^/={֝2Ʉ@?_1LETD#Qat#A\Hb~9 Ǫ2 u 2%rLgPV;`qMUR" ka=ZTf Bi غtwljw9]mrm W㦆Eu DDYDi@I.cEO/e"RS>ke"q;F<'N~~‡*Qp0៑" QMݕI[ Hn ! )O`p֊ؚv:%=bz!ù l5 N<2@41/U3(oon(~@dREQ) >_!1 &|l;*&n&C ǧ*zT _NQpT@ H$)rh&0}W*<:YPнb DR-5 Y,:NwrU>6G{ś)}t6Q 3p`D&!YzEGU;]i+̧߲+OQOuNJ|>TqeA (!)[Eݔ2*m NrNqJanu 40"Bu XJˁ ǥ=g}H;zeAJ.6*w[Jd!o֠rJdf\ǧ ̕n::6+'h͉Hn[ifgHpz:5 d@b~Wߒne~^6-DQ dPk,9ָ96& C;-q b&2I,b Ȋ|P]sΧʂ3 = R]?{, ca$26"# 򏠎HD A^J.BA$CHI`Xfq p:+`& (ɂpÆL]4W^ nwZaZ`%Wh? +!VJ{0S,C ο"^$IRY"vXtZa`ij^2QEUTH+ ̲@l tҩdHLD,x04y;S|Q@#sC$m:imɲ0a *@,ֱ3޻%S_EI,E)<~;#0Laxq3"B"R U1S#P`,2X©!1R "p f^Ez[n@G׾֭T#!alvHH D?)gdJ$"U7~r""~oϩۧ>wnrL<~Ž> H g`gg$gSwĄ6byE.t>ZBp(m 4]s5`EfCj[+cV Aj3HIgreY^Z"oΒo~0Fd /+5S=>UʉUt*e2;` +z:!-b]'fO wf5lf@;&4WA#nd*;0dISZu_:-kq`hfԭ!DbuU w#@xau 9Aq ;M߮v3}iz}^vU;TpzL%S!|[9JjB ǚs=O$ 1k>5xL|O*b )V3Fa`رv!/* RQ+DW: Jfvj̪eQJC uYRь88!Lġ%q$s@4.~9w : J Qf'J{.Hs C6rY'@ߵϰ ,3 r>uUUUU%'Z4lƹeVff`oH ?i֗'T,Mjڥfw{d8"􉈚Tn9*q[ hRY;\>FAQ"dhQRbn$P{2 @F&*0 #tI7~5BPtb?$z]&aDQ!Mo7\;aضJsH;)7QG@EcН 6vU3^B0&WҲCb[.EQJ.aڪpL@<̯v}I0WrS㶷,VO<1'@BI 0*B@!R{=~+9}9Z-˲̙h^L i|3]l$'VʍynOy!Ϲ8{x+kΫ%et᫾*FB Z]ST~PhodXҼt |4p JA 7 [(*pۉ")A Yڤ\Ɩ=) hW=Ay^T`a& e؝mO[.ʹVtv Ԍ0̵I5ZhZWLh-JĹ,TR3c(Xk5DgI( {̭RL`C*c  5DiVwg͔N&YZ"U,̙ )0,N/& + H;ȪAgy (boV1jQ=70f*AXI?mӝ&AlWiC%U؂ViM h, T6HjCH14 j D\EXDC0(dhh15hҪ:ֆ(XBʬD /kCZ  G^uYFze_?C74~Jc{nx<861$c:eI␳E1fHh̹YZDȱ Ѭ0'|LvS$/4f@n~ %01-Kn@fnZ9HZ7$0)!yo/6 ФvENg]q c7:B Nt v6dѼ9*q8`$ʡmYO <*I BCC$=q `HV5A=[Z!uf!bNC^xXI27 } )=R:GS^꣣ Un?01܃6HH,!DTLB{|S%ϗ*I(r(ȣ0̩H*s0;o]A"zA"Ѐɾ]*Yr1 NA߇ !sn%d Cp0^#YNl=EPC'`E%(y44A܂8%$"r뛃rFCq8B;ZeYhd-GbUeFr L80^ZGֽLcY)M1KsO)BȮr6 A\OLz:T:BB$B,@ fR3B )ejh$W]-mzX]2J9'|H5z1dBCJ]T&}s0scpI bvlq|<$`E"ɾ FG$!j  EX\4 Gj_} RP2IJ2H0p`DJzX+9b hHT]ARk^E4X%ix!o:C9SN ygXA@QG[՝Z>{OTٌ>O,P CAC¾V&Y`VERB #w=[zAq= :4dT3̜G](fOB+xd'!PZMO )#`E f^(D#,Ր *aDi bv(A )Éϝ 9~:}u6Rb rcaWuorLk_]'N0hdA _3{}fr#=iN'- D @ |@+ I`UCÚ?AU\&։1! ' O-EoX3qYmh#aL+GY0d|>osCK.HT3RlxISUvO=Ts>78 h;(=)RDI\*~𩒁PdԟX}龖]'n(3W @E D Ip* 2(Fu4RA8;FhN 08|A%MBBBI dK$@? B/㿇 v %QGӞӫA 8 f 7oAh?wa'ΣQ ,X# !, p|!n@4-4 x,>σ^%)L%TՀ7À(AJ*sE@Q"й[B%T)hZHHdTglseFv? `,wAG1$npVJR> 0XP!ׇ]BB$>7 H"C$B?&o!U=ʒ|޴OQf*B_K|(U1C!{DDZ9d1[:8=:*T3B*=:Hl7|@+௛f-)3 )lEIA (! Ӏȇ)wpBVC⁌D ݜ*!jf.Ъ뱬>#3#HE4V;*Nwk56L+Kn,G%k=rϸwG`dI_Vs'!F"6* '[ɹG"EE=E1{]16_}4e:mdvWSDTF﨧v2t% Ru+cy0 c6̢8n/Rٟ~ih3#WKOYΎ w_k yu{K5$ A/x?-?O3ZGR!J$TJJKrlw˝<[G_}xa2^N!XPD#|Aqk}RIJ)~aFb9nߖ&9]vьFW6l~B{ >_&־=2b\}M(r NNo8g\.D ɨq5nkDuu7OOmfzBW5DhPOfQ! MY?P`Y=nźG/<µVTԎFD1=b#@~o9'73jN,CCg|osbsN7B( NҡBUPSbz=p5zfw_ SUZ|k}9ğˤՉD sBs?{٫ ̼ ~DS.V@\H}HHb!RB!> Z-c)Z>(DA7{ ngZkpʢ h̻tO l"]qpc[=9@Wa:~K<ͅ[)˵sLB U&9S77g\6դN h(oZj4պ L44NPl 3ԫfTo7 4k" 'jbz1:k Soq+%I)@$DO-pL_?~*QtMt{$-65NKT ۢ(%K?羀 _i`BrIutmp\?+R&^YhHE)i)Bo.H&κ4?wOn[Gy( oX@~pG7Qg~7;.P @L{|逦ܸҤO%GI~w>_ q(6 _v®#AO]v ]s8L3'0Zn|=ԺXO~hysGc\㋷VxާORёe,NZ&qDZ6LD(io k.7J^-(1Rsp{=eIsl?-Zk市6w(RX1-U+hًSqI_}fyNu{Ow{oDlXқ0 0fL7?3G=֜̆O3,`nzX1[hg*/8e{bMRq:sWTE7q8+ghj$xulHWksdrl1!RbZ X!J& R,C_є?GVtzFBidބC2 5.(?:''^w}u?>n}jj4ZЅ1 (ڐ݃ v] YC's e(SQLgvXHE o_#~ ֋mH" &D Nsz?~ݛPPyP zaS;o~tCWaCEkuPhh\jdVڈVήU-#l|eZ懧7?q >Zv0;]N*$D\,"p򦝁0O15+/L^+Eo0/gz*+x#7W8c5ͼ\7QUӝs]57V ,C\cD|wYGldkl||rTz" kO%`L^ ?8?s0M-{Cl/Z.E& Nr9)}`ud P[ݺ>֕ '>. T$﹪-.l,'m2$iS@B>9^>- }Y6ߥω'8/_7y籸w}utmWb5D"ʃzj&Hk(hZ'fG3?tܵ88LWSA1+k]n_v4pD5ub;@&@p<)j A础8l/XI!5HgJsS1)?IAxPd;a&H`d| K[C~{_k` #LWYZBD2VϨ] I6%+ܣ舱R2a MQ!b@2v:UMkdv( !rr/}A#=$ >M90T r|9p?i=ťݷ:/2vSnź&ijan@5H{3niYo8Գ>c{ .ULhAF. 5[XӺ ݑ fpaXv-K tH1JZ Jph BPᘘM{UѐXA ~^è达5Q}ss+N%A&y#>V('1pB,d:[ "V]!ej*۵~>ч@3ik5ѳ5X8io:YԷP6r7a0~])mw "~ CEPGV-jBʉ>@xO/Mzuy9KlTU"R0_?4EHP ;~+ .|N_{2*_)O/B벁0FB ʚn<"Iݼ;5xzܜ+*Ffb8grD## 2 }卷CU-r2\ }-wK(]@C_{>zywyN\`;(:F+2pIBa5\M(.0}KK*;1[|j>q(hEmj3B{x[FlӠ ۞öI{~"k{Dj=>qȔ4l?_ښ5RԱ1hOI>uO <{|JHs/eӟ~y:8Ĺy 6jwC!̩aDbS,rW:no)QҘ" ]H2m%aioS A enW8bc7Ex}.9mXW,S٥XfY%qXsdGPUz6"_\t0`9tʌ\Ӯ9 @o^ Ml$ _>7񪸽k>x4WؽqV0$FN}}J 0Ek|;=jfrJeGogTrřuJzmWx{q ]~ӇIfe.\ q/AQ-9%ul/& F7ZLf>f;Cj#gv"Zbk@:J{QmsƿFUyi#"T-1*C ("/D)b9nF:NMnSh0PmiQ79?oW8i9vwoۓОMtpӭ@fXb)*B@ Y|9f"pvt'3+5eM@%]~sC"dĝQ%3町*߱'WݥTN0qAR_,J}XΔ7==yQ50' :,l˰nhiygq: Ai3NO"RИ[AT2po:׿/`6I/̮?̃+**NKm-*t$y@ 0@Gޘ! fNf==Qv_geRhmBd282ihg7$@;% PX B/,ٛ Pnc4&B$Z!قt(zHaELucqܦ &Qy(o"LY?dYqIHlwx^( O҅084|ab+ Im#GǛjox> CJ^sF,o"wH?ˈZZa&4MCކDhɘWCMxxqiES(.=~[xb=!̯s3MA4T%ҹ[G=\\!L|R =gn3l0?^p})_vgGBq^F'Dž#j m!6CMYtD/ 1B9L9.qR1cˀ }=vppaUEQA5Vx0Tĩ}cK-T9|C #x֍#iwMg~ b߈2aO.cTY y*P|QNs)F[YIX'( GQ=cUlya3M5~usAf~4ЂBap(n5m%&^KF@TIUBI0$Mˢ!S%VwsY! 9R@X:{c>,v]ahA=v)** k&ʰ)Pְblܝz=BSxy];o֜i3 }P %a{.M N'Rm@7|WUI &DN/ظ4%1q#ޖFVKiFY͞ǔ%9{C@1{qt.l /RMkEy>Ej^Q^Y*Sx"`>mք6,cPEN)J2:?]0*LRqM1bv+$Ut#=}l,#}AJcZu]\R^ p  t,L9TjspuEAZY<K&e)SB 若}*S:Sxӂ.mBm0J}mK_FWȔq46YC&1\o\147OۛZ˺v;_0^3V9~OͰG(*QQwݬy> 'I]?=֕ soFS_ӱ]$횞'!X)Ådf3 &?wbzG<Ƚ+n>(pnru"IF,E%OL'C_gtuAFr%eBGGMeƌXNY:Ohn_4~xͩ-#3!xȽ(uE2f |9pDKH0qظ%.AOiSh́71%:C'OJT-H V |0]e8ɀ8QG V/>09=B\YGT NV,?yqja@ٗcKicwQp+0 <bLB ī aGKw{nUJXjs.*yK;=|\ ]5'8t[hb :TvJudS84s$͙ew1g6 V LI_=rlhX曼Yq e<{#pCZ͒"Go1΂-C1;~1 W~&NTkZb"d/!Y_!Pڱ? `q&pb,@/z p'ݼHRAD>1q!;ݾs6 xwI|#ߕF"kV|C O@Pa}[KX Rg?~2V[G]7d+o~Sڞ@s+f87ǭ6H&E'Y&I4G9Sf:(κ+Ei\B̽q ; z(ϴfv),>}H0V0iB#iǘPym +~2(<$qX:-t۝_;9GԢF "Όq7KBYp?<_#@@,p'PA_HTL)S8/W+NO.r)/}3G؏DVk/w϶!"!Urf'_0~5H2P6-/AOL\DA,,.l<Cˣe ]q?gk}zSjNl s7 O$EW`E ]})v2̇qG&+V_lؔdLK'3Rj|'|:Ap@ OFhAI6P{%5YÞl2C |Qz#q8OMtQ_s&>ND2Gٙ"Y0zdvdyMMl26!TrE][Vl(nJ*P[ ޙ% 5J :a|eKqnJAsu^.WpLW%B5&XH \yn'&n3ȵߡ܁'ׯx9'o֐\ :nхӀX3ݜbsl(aE†Rn\сreCx7H߿gSyI1!S0&P-l ضwj4m(T?$\zU"zXF[~_2JylnyW>EMtWNHY4;=?ojOGS*CNha=^AE۳VmK;Qe:g;B$( G917EYhG:4AUmw{*UP{tQI_/ofp #C0gy _!8=A{ԼZ11Eo։ 0bW<(B(xAs|\ "za(tJ53`ak7&KwSwʹ\ŏ UhØW'U?p6^vz}qK GB(HZk9eXjj ξt`Ê]D "3H4B* oqmEelqQ Sc^7D82(Ejz>PJ>\G %kbVUXP8"|OTa՞odub}#EdujȪvʫl0u`1'~7oY?Y<4wjmåSAo;&zHvӼ&2.)`fco-m:27tE'\ ެnqKlY(~I @%,%sESK変 ָTdىґ{/vHE2AtN%@%ITeΝ/U2S\]A}/:d hTnL \ QM݇Vc5瑈4!dB_T\$+[V)s迨`Jd%ϙ-|#&>ix}}㇥)nƖN݌+Pt%qF6.RGA'{ Vl_K׎Q iuݽzt SYa`fRh[O,Bi:m\\^߫2ZWi 7#JΜ7("Џcd|q f½O }Hε8pEĀ"$dsq o=?O"82[9yifg&=fFhמu ,EߟwfcV8~ϟxE`lAy<xں栬7d Ij/&~@3Q۩-]?`: Ri-\ۛk3H c%-_wyˌsW!mn+_ mn>yuxa" CbPM9cNWҁ Uq(P쌔IuzStWm b=&ܩO.Z&hsw}͓|ȑª7dR{)+?ťok_FA 7SSITbۤq#TK/%w(z&V5 w X?𤀞 f l2""btu5\Uq3oKBx#e}pχLoj76"m|r^iI |÷= )9!QxSkm|OM[+u@V6Z*F.$mm}HԴ]^wK8ZDž>EM@?> ȠQ +)JU`L-f+VyOwS\p;~nlj," 1RPV  "JqDI;_GhTuCK agZt@g]g ߙyb`+f 9N ش-bfe5[Ƃ4y'Q ,ľoiv8(ajдE7yXqxPc`+4 oYψPN[䵪#m(wDЊz&\@Ҕ-CG}ŮD+Vs.3PEH_gdh(aEO?@Q>MnфSɃVc jYgb9h ts=|sDu~UωHƩtY:T)K4dy~zrm*rKgڔnyEĩiɽ?a[9c!u.riɡT+n=3%8 {-UPGG˴Tb81o֚{Xk?gw2X]:h_ZN1 Wy+kA#˳ֆ_?!ZJHo8hWHg4raTZ2(J7W! #u m_ˢp:GH{K\dp6glo"H0hBp|nJ5`v~9=o_|8qZXxSUI^㩨w0)ڝePB`Ky71J$V\>x[k͏@wӼ_ZFT;=_ "&G#Fx1hO!QVJ+ۉ#yH8*b EA6`$ڱ%?= 8(\ο*G]L:(+(fR{ξ+ʵ mȰɂ&%<*Ã8|:q>IqQgfg/UGu|a n^@ ᱨl"x[g@N6wCP#1쏠ᏜZZLF浮NtXZp={qB吖zW˴["eU: CSFT]yFj*dngPD}V^a7͈ rT(urD>+*Bbfs#_=.wA;UJҬNYBFijFDB[x -ū,;U[aERRQ縛Trv= ͦx;tp)Q i"/v  Bn1QLZj[iOzqW.t06^k{$蟮ļONŨ\%{c ]s}x[|!F8e t]?ye6 ӊ Ir19u5y / Uc 2٘wx /#!x_PJyŠ!+_ zoJG"Y$)9SqjZlFzLhOB_)2C Ecz<P۩ LP2t5_xP`מ9g^/0j˞9Fr$!\xm"i`FRPrEITB`3Af|HfH#5⅐ܹgXw݊ף2h٤}_VW4;ɳ,@K~ubE3Ơd!Qֿz!iy?4,`c_MZp4z£ ˲ Gɟ !P̒XKN#V9-X׿F7g *Yj$c`"}GyR ׀dr; YDd #~ }}TbL SX;i#0j1*nCLЂ mp&vCTg=IXA2D5:9o@/?p ka;u'582C\)p'S',6G}RweyIhP;}%wU82':mֱ&qD]rp/9nol@C*\_k[%"ԛD&e06亂:I"*N^LdR_Fu3O`W I21dZO4qnp[&Ȗ.ߔ>L~k_aN].!dm|ی!cYUĦ 1 !{$Gb90Y WOMlihAC d8‑b]'hUî.4Um&.Lt}wN5s.,4 p{Uy<0_(ϝku+J Cy;>G۰Ɇ̪gR[,2}j4߫qn%Bj "QSߩrE{y,b+0, t><5/l1 "tQ(de7z"xR|[HYq@ģV-PooƄKd˖BePDѲþ*ڠMMRK*&;X#r3@Pf'ģ䨀.eY~pJst8C[7Tw5v¨%=]"3/ON*8:'8l%tލۑBW Q Q(;rb3<QĶ -"g:Ck@5X&ٝ=/&k?AuW9eqZ)^T30NEnK_DeD6~@d${]oɉ ;'Gef{RZ_X;avVR3δC M#~LD>Zc94x&G;;ǘ.w3}4m:A&UC(>ե?H}Ո4 〄͒ăn&3>>(*!&;4t>7n!͌UrQ3GpKSںIiG6gjo 3fdMF :qG"rQ!SC]S=љ,uAn bKq@j#(\#"##sNTR!^j"?ba4ρ5&3ln w>ay' f.` ~csܕostoJ_jiDoJEAHpz_ch˟L{O2RÏ] E GJ,(Nzc3g!1O wiѱG9D + O,A"Z}iJr\r,T,a@yl#`xQ\~hflZZ =ceVT/LVؐCpըsvh4,նI$4c|gFCa߀OǛ=ӽEG}Uiyisӥ}XF)w-Ě]y8{LnI\#]([XVKdAsB}K3)Ni k~[`{22}[`2ET), mX"ۮוVwTl UdIw 'H`G6 q1K&ɐGDpvRJ?!q_6o bnmk1cOxv?WH~>XT{UH:A)Xf5v8Qu\Z ܄0 n.v KZX Kė^I7 G~;G*" vH9?lU6;Y ~)O'^{ XB 9   I<8'_0Ab2SDx &1-=iA'- 21GG*[qk-˲GZ?-I)hP5nakA`GK>F6p(U5KcoEuzaû($rN ?1&VQm̷RlatUM' j?IQ &g,U߼#bE!kݎM8b3E}'i$JUfS ~W:mnmvt~ a_@#{3?"!jVN VfDV\=X4= 2IܙZ {Ur;qh֍v*y`# 9r=uqx8Hr?mHǸý X%}U`lmy./fجK F~ҝUl5TMс lf̟EcWR#/*w)Q.f aW_AC'.mH ~;{٤Aו&M=ո}7yߧ;5 4Jqӹq 7GP"ݔkT$ D~bd_N8%o<l~L;Øm KT4>ꌗ]xMdh!M*UyG\#8d=D.KZwK q`@!=' D%%36E=7a;Tu/C߭hON^s\f;,iѺI<OofWl>$,jvrbXRR˴ $s^܍.Mt..p M_]&ֻPSX}G3!ٱ0ZE}gNƄ2"tVs ҿ0U&ge?ە/ X4{a.Ҡ(` >1Ԅ~s4K-" (#[ P8BѶ##wB@0";mp1Ʀl^,dPC@I"uqjqdžJ.0i0Or?,rߺQ腪&H&Ͼth#$TKoT$Ѽ[A0<*EaAtV"453 |rt`\!{nʵ7/9\“f5_O pu3rJ5+0:}6wH6{I\JI(7D+\7];J"CQ&.JAßqJ1DFo4I䥷 bm5Ov6Sy`wʄyĢv 6rwQauJk};VM@zɩVd~h)^sE>g1:ėug1p#=\M(E5AeT Z0ct KPo潌:,Cg,\)[Z},F&IҐ(-A)\OV6Օ("翓 qR5ZqeS%(_/ ~gjl=vM7$vgmPdba:xN5u^E/D쟐}[m uHڇPDˆ"_ gpq% %1"z:iг2(9te%~$)^B6GG J)%.&vY=uM8}dӹyUR0_'͵ɋ1 pX<9/G%ۡyp_@[[ ޲i RO 0`#T ًC"Z9q…M^H[*S,}`94d_R iip~kjC#>rHEazBՌT{A*&\* ݄垐 4J 0v%Ĝ!*p#' Fj]ihDq^ʛķ]Fқ^_ Ժ:~!?ߌixqdnE3s9,EHmR?rt-9{pIrϙ4 r+>:-:NN2 yh3S4܏`n xt+d-^:H`-,%FvP}t]n_ *jss;5GYPWcBc 2b,nؓ.R̡}vpm:-`F[ՠh-egilQU=V}>g5:{m2?GܰĵuQo7(Ѱ.-Hjo ECO4PWRBFyLR-X f*@fe#9Q#kRT (X0 iZ|YrYŒY+.rʫZ+<$[ƁT!nKK#G,U;‡dx ƌm' #6 HNRQݛg_uM.Hڭ =ESqqMkЉm<{x}/7uQދ3j!G2!KL2㹜FSr3|Q`[pV6K8}k1HݏZw&+)~zdc ϔȌ+dd,H^+Wq_Ώ8T+x}[ʮ=3ng5\Y1b՛G&1s@AL[LFinYEbnͅ|k(%9ڪ&tkK2Od?~1[ / ~~ ZW 7hh]DY]qUl]HS:24WO_!zlYY)u>$B3US`3pWE ompydJDIҧr%tI?OxޕpZͼs^ yHB_Y٘';C8%q   w7= 3<i&/?  $_A=J'zYS6Oc޻͓VBh2.y-S/RU=؄l!j&)keG챕jF<yiCaZ^(0S5`II!ZefI+1 g%S r#C7$Rt>Lq (w΃Ir  JJ@ n-uDaH,`G)&OHxZҀ1;021rCͥ;"ꡤ^Xh{J >~k]F.n5acGg.*HÁ[9Rcp=̈71/ů_1M>2&zd2z$R,BT0 VN8%/׃{午HL]9U CXP@l UWz?Я*ůK݉~@ØѮwa'IF~H-uE0 *.I!SL*.of3Gu6~뗶 @~lRyR:QBr!.Z}:v=];cm[{.&G(< `Ȑ73%Bn;yRb}B&Dk5&?И@'މG!ʔ6!Q1tڣMiX(o`04 t?bEaWC>UTyDo,`2*H'&C mnHv`f$(?]TB,{b{x`T٢V)&Ze>I XdSp%pI?AnS "3*x 'kAVf*Ή YTC%ӁԄ&9>g` EM;Mm˒FȻp܋ ${zpb%K,>%-o8:ʼnymrCM5_ΆDg4Pd4En?A7\$(ؙr#4EYU9IVm5wrSLb`nRR뒡Qֈ~Nr-bˢ˄|ALG;-{OW>~ @ !u׊(Du33t' %mKK NI@CU2:v_-5Im?Q"f7L1opHIܯ?2acHVP#I}_YGAT ~rLew6F[M^!a;v\!~5DR*JT2hbWi{jȇc ʀ WEn, B b3"ԓ_XV|++N6L>,J eGrlZq~z0]&KҗNU<د-_MBl&Ҫ˷Ȅ>^`&UMI` p}_IS©WP5K"r-F垩&8%}*6>x1Tr/wZщP&GeIHbAFN,c>/ƷrwF³:w!|d 3ۧ7Vhy 07 8zH|{}HZF}< ly_> q}PݑaXh2۵_6޿4;|Az-*brzl*?1ti'źXR X *=b%A{|qC <憊qս~ؐ@04p)gnPO}ɭ_EI)n=oP`."7!9<ܣw0h_/p9:\z÷ȫ "hཫ?(]֞9oᢅ~k|X"J1^5v%GA89SA`"wxW0 ɇ}Zv3m+b#MK̵ yx“Tgf]DB 1'Lg2 ]92Kˆ1Fat/\~&d)cDj 83OGu>~#6G9׌@f~S=\঍TEr~yDTTٜx{l4 vO)jA Iwnȩ*FePK.18m0ޚ(Ӗ 39T+%.眼V5t>X 8&="3Is<`s1XcںzV7\ v̉udlhp sHw(5p]BN%r|k5ZD!v"d+!HSBJY I}|à ͗\$eBT("ς81w->앨4((9bc3^wП" f-o{#$~_j}&o:&APO8d&\݁Z9Isa'N'Q!'tEZ>O*;MЅ PXTH ΡCߋT8ݲmP|Tf|ʼNO;#y'Nm80$GnFԚj4J# skFKkp"-K_%}Yͩ[MОȄ,RG䰓;J ŻeŌ}RF.""E/,sd/5YfI:3խ|9 `0'%.&і&9m56 6.)%9QrXa`*7?dDJm\*ReNzB)Yq 0IR- 0eQ3* 푳92DiTVaD(*6!3iė@z')_51r̂0Y(7)8kP㗿F#_R/muO8Ka37 Tׅ ~*yO#L xc))t_OlwV:d0Jjv apaQZ9g%F$8B |cX:Whث+gGF f=w# 2I*41 I18ە&=b0aL^rF3 u_J`ۧ>Ax=6TkۓEp˺ߎ !H*e3ce":7k_e2иψRUʹ!@;G:}ς C4_5U߼]tbW֞K_Q ̉w+Wy @Hl8_DQ ;h1Xi%Ψ!vHT<K(|}I[7g*wJEQ_g57eyްfpC0dNN*_JZopH 2Mo52`Uy[ҿ)<\v5|=U^ɳ oSZ(%3ϋ7(,L9mLdIu)e;GH7*xQO:ErE@^?d%|"R1RX\YETVݢ]?SCP,([|FEE7L]3d t v %"D +G)t\YK.`"ɵ  *l6Նu4=BOdjvԢ'dcjXY{RԣYO&:)NOς&A?zÃTͥؔMGNo~ƨzљ_v|܆Z][uW\n<x۰W+ʯѦlc8E"|`wbg[d/[v/^h=@ ܞZOg`ĎjN>nx'4Ex?8\~ @@r5b6HnSAEc0ZC8ŕ?H_-lC XR<*Zh:ӽCr4TXڦ)3;\^)Z/s66]2 &+ <›37(=RӐ˧CЧ CI=26\C|HѻV¶$WpK%'tMa)<]y:%j@XonB 4f`F\ϸ<[ւ4\h>F0Q6zOY 14E@DEx0~Yb `n}yP":ҕW#xm0-ilފVAWrJ=576屛(kZsSM%GaFyw:\ȰJu܏joY㛈0A퇃jk8s̯Cch@ ۏ7n84 ~(FGZ[;$,̷! Y~IϷnrA+䐪v,,KkB#h<" U@FXEl17 FLL:!̪=c)E Ua.K]]B mw.&⻡2 iO3-Vr-̭Dp/|})fF̬Q}379x@0)cIiGN/b7 3WDXfJ žOp_SNࠃ"$()` ,~<\D񡉰 ($IHD| :{߲al #/,+k a.Clw,OsJx3/Eަ>p [lRƥ)~\Felh} . Ea43JX\rU!$՞@ǽ7Fs~¥OkM׺60aCp$>h(WVr( i5R(VH9Me&ؒI>:cvZL:tub"p$xSFtT>fz %-(wUxnnA2.ݕ}y4Cz^4Ơ}~&R3% Kl?tH`^AuM%z5ktn(s %$0=E`w1zb8 Х!g&Í~ jl@4PŐG /6{mM8'Ub( 4JO`wu  񑧢?\YeQBqw"{*i v̑^H&2 ,/^>zZ"zV* 7ҔNu n☘:!_6e+v3QcMn\V0ֹnY.4 (|_Ȥَ軒:[չǖ_s`[%3(S,z:T,ΞKR/(~$j2JxX8UfٔH){O@ 1腇vk(uwkDzw<2Jq?hi<M8joA 9x-XuZb.-9DfW`h/"2`k{"|pV8/_ŘF*f E a8'jQHm'q5\KcQ$,vkO7aZ {1+ćy~NÓwbdtj%jWʾT&8>v7WtuQ #<@pD쭕W֐ W_lԇt g(%#'G/䷿`0-z-b ğDu"k%z=|A`Sȫ!*y {N "f=S<@O|0.Ԭ8g7RLC77EF no`y:rB(߿lCa>IUxWpbϺזU Bvc:YvÂ">^+%b2ayYM.Hd.nLH |'_k[ʮITG"Rlq~<}kȟLT%N,->80bemP[H_U邳u9-@\ajOz},vbi:#TR_HJ+ջZ0~ Ig2 _GwfPVy5,ykmb\^>G g1 l߿.6@hH:,ό4[R0 ?ĉۛ95'`Wc3M@v/+&@_ogHۈRw'W\y^I|pl-BRSġY Ԗ!z/5"(ELm>&NrѕsDwA S |wwdmt|)|ҞJ'MWZXbxv붱 OM3[@л1<>&ߦk? jo6C ISٳ| 3kU|1c\mk\bB.UtO{nl.-ݱApRtzjj-O(&d**2ֶ7^`vTqǐΠCJ\VԊ) M^byHtnZی?M5Xm8p.ʩ ܇hB+/ :H{',Eq$0 :C8Chg2OlB^@+JW+oU^YE"X42H(~ (M2)3Y@tR*m''ʓ?K (:بwxݬ(D` [s 1.~%\вtN~Riе7:x$R'A}XskW.Z08_ы Z J 3\rAKXօHO'@:V&AA¯抻P SD&DE Ov. k!OLlN |2-Y_/³t&Y 1MϦ c$[_G*ٱN^@O/"g-ܪ^ro'2d9oRQgIHv[*A{ 0B09^uQX9e+ty41B> Op;"3^?_OAM=;B$f=S/[>61])9Mui>Qwc[xiy#D6vgB*&ٶM&=tH50&?H\QN8gE]f>.&8i.Ԛ7I5+吋|id;!_%k'ڭĝI(} {qӷן}2Byq6])p1%?>HrjU6]l!D V)|e?)Le;'Z3fn1)*x/((=x׏pq&ࢀOB{BDM%5eGhN4 8wxxc3u_,m_7TÓMy6lA Q*1gB랏P5mM avK!h*n9`%$ڴ Z$b]@"FGS *qɲ @uV&tXrt%9RunhW?Nli{_qx#Lva;R  UD}rpޜ_jnu;B-Ԟ;;UTLE^lDz4izDDˡ"d=OBgb o%k(Ƭ%OhyU dnwK:bNU;1^]F{颏odu\ ȎıO,E {12o} ߅{񬛲P>q`2\lmGvP=j0ϓ֐*ծ8#:iv[{8J 3M߂[~6CF_d=x}%EFCQeVSlLe?۱J]+"W}I]RqA\: C%R`03ݴ/a#b$%aZWe}b7w\<`o:Iz`L-mӟH5@NԢ6h kkO髠;*m{{u*6j]$b6)wZ׺^XKW#Ȫ2 RgM!|ʾ&ю"k= [iI*&觀y[\Rs{LW!Uzj\"N(+TƧ [*j[SZuX4 ftv__䔂PIғ_[j@iΗ&;Ivѹ{1Oʂ¬&4L Zh/ǭBP/id{iT Q`l2s(UY@b&>jQ9,`Lt^;#<0tF])IUt]]N[)VEw6A!~J5ۦBL]$VStBRL!j*1\P5j3]pM WS%y?e*7XFgv6]l5c @P=kA>"|A^-pw0CHYh0!E #k0#W;Z&ipC&ƽM}Y>pZ\.ЗnrLm|Hgjv7iQ؛bؖl%'%FfT  p/M?~anJ}9ZEZ!j_yְ4rNyU \* ^giϒE~M=D-o+!P9W =e^`G~mQ~r9nkޫ~L?sf]!} W1S<%n6q&!ecuMN0EulVA<[1/|=eyg+em / !%3S$k:}Y _7?9oA柦pEu_{s3  ڏg6S`B JeKb3;O@J<9krLp.hz٥,#GY:w壟"swu?-ǽ)N{zAZT;9NG=eE2# Q+em@NPEz$fQJ W? ؛ eyYLTBssDH u@эBT_.|}GSLWq`KA1xc(NMFꔃsNax709u(giOxTh=W89ϴ-H`W#7FMjpEyY"~gI(Ê*\\$b-x OHT9 ʀiN# XGfB,V p!(&՛ȏ}t'ԥ`LOl˙C86F]CL9Ɨ g&90ElwÂI^wL")JQ-$cpTbkEb!Z? ~Upe[߄.6a0ˉH<.|UuYPH0wFk+Vq0:oIxmamVCUա?EЧ庨!avXx'vΝۉl 8%m=q8Ñ5:G~"Dٕ~rh6-ːX "*uz^$‘>aթHCC"{X"\ZWKx1H̖P#PJjDWWB|gG r.ϻIlI|:/$ę_E>A$cQ2r\BéRJNf=}6oDt77u(xqCBϨ/)rj)N6E]*'2QSj~DM^pz!sRd(0@!}ɫ Auv3p~`-T ?EʬۓG! I7NxX 5K|8m ӊT6W˷6`(,ϕ?݅ݚIr@ QJ]_z1OMfu]>c8@9٦N2B^5+16^: ݻa[ UN7s^]XV $'~|g ]p}Gj-o7 zE}k)SRi0d- Xֈ4m ٷ0Kuy_׻,nϕ9FA;W3ɰmze}L7TE$NM}8@:\jK2| '[CY\_?)f|jkY/p\ Dn6@2A)#0I]GT<…T͚[H3C8 orN^o]4{[pYEͩ{S30L ?`̍}aߵ+fN>D4_|e;4/Ʉ)rќE>a={ ϯ@G$sII?"fpƑ8H Jh8HbJC*[>)nVsȕol ,vo6ES֧M7#'/ҴGٍOi!uh}[8;[=|O3ۇp|vJYW'>KNA6}im%$Z)=4( !snE-ˆ {p+{JuZ UAm^C+1`c[&O8B"$V.h|+Ko"ls#1zPq*pZ"~EF\)za5>^hwRZ)W5n[IAe@C\YGi ~vC\JŤ! @*D(ЂgDdچ9YyYY3qǠ%N?gu{+L@ޮ C䙃I7k,\<ꘙ(8[4ͺ莝piUHk)@^x͊ kMϒ( $ ԗ^^TL9w6hzMk3BD<$9zo!iV/٫\hܲHPEh]-+1 =`3b.UnZsN4C|J 5FuL+j4J2xu#Pޡ&LT]%ͱ[ ¤NgkĦƆG;M71.*jw3|P@ yt_f]o׬֝oy )n wSQTrX1~.נ4N3'Ye-L Ӄ b<&=EUVtkb,\񶈨5*LP2Dh?Rm"4:9pt`t̐nX%=*WB3+JAe]7ηWLkuw'FyF~}J ɇ Y5sKQL~YG5KhEgIޏ$a޾*J͟)ÍNjVZ9Aēl42SLGXDӯS ̡|לCΎ4mۋf1h &qﱎj$ǒ8 Ysj )߫,ݖg{J6ֺ pUvX|c#e RF+𥣻W+2( cbX"Z񽖯' DCȸj17';f ò? ElAW1-hb|&CG1v-?=s0(|K>I͆%sT&-z_lT$ڈ&ѭܪ|;8rX"*!@t؜+Y:Y]DQfg ,7i/ff.fvt"(|w}2Q)}{EY-2уMM[&,n`} PlFr!~MHIkhz\G?,mMƬR Ng'w*~G58bV>=gcB , \ų|(G?քBH7X y" Sб|4Db"J$JDТ0|7s.su$fB &eة C'΅/XzXӈA>J *7~S8bZ%jfTHG!n/MD^RP3Qy Zxbf2 tt/I "d)_ ߦ]lL jPn ky~|uUB>bOP] A.ů/%)=VTL F$[:lUo i S@1Ȕ` #@\ ;DéUNk3)0 'u DTxݪ\MEd8bġaLG" "J,,g4a{n2o~ymA'uU}|₧5& bAuS@LT?KvO)kH@ۤEѼsJoId;FS2(SEsUpH&_^ċ״0z/&z0Zfj0 Y7%M o(hrp3Dzf=3 3p4 sƗP`HD>dm#:F OW[kbtF 0w5kZ W|[@czua]eމkyBV㪲KHNttS8\kV FekS"-A\y -({UߜGuQA!4 R}Oəyї)`}5D)sIHȓ|ŨcϤ]1oTOHiyDաq)$dz)nQ!$޵!J2is=⅏EXG%e*#E9gH+ ٦bJuj $`l$=BT@N*&N^D]^w!ز ێ8>{ΥT2qSenrd5W1w'm nkq;'M6ue ԖMAYnCWr"Iy<գ?-O4뉌sO#SM)(#{ȆO{X1ncFcR^*Ѝ.ٟTsb0Y`dwwW<+ }iĘdC ,v ĐmhxrNV2n_w$ӑ(vF:<*P;Β2x ~P;aGk%rܴSa)!e)[?"A|-juڭ5ḚXz2.JS:8ӞȀ[, +-㌭[s [wv 1{q q⏖W7N%\b fltu{V"ͪKYRujMX1GK&- N"C6ĵ&\vlTIjӱF> qBr f;! EUo )"8QTIviE%'G9Zc$6PЫV)ü*jԿ< t(4FʫZ.ap`SЈX@j٪@Z{!?;)3b%, s"ݠupǙݨI C\MM@@uKKntC \CCwD˿~H< BC^gҕ|fEC"T+TrVvZ,Y7b,~-tT!E},Zķzн30lEQ#wɜ)L%_#*m4=*`e\I@"<<wX;qvY =dQ*4ŢੳnfXRu,İT'z'UX0`,\N_*BDLރu(fDycU9 aXT\ \KLŦ(*\B_P'0opKyE#&볶h&¢sףeʏI~NI ؏_ bf, +dvh:^'lT˅I!Q;h缓𛭚lߛ^fRmYŁ7Vgy8ҵ{&k}e%Zw 5d$sI uta`ƺ4ꥎhko2.ɮ4)@&$"J#z`K؍|$`.11򅝹~Mz1a xT\/|mf "$,(u\N"$r ,:0n0so KqeygH&̱@vĂF6>hu1+^xkpBm~kwtjR@'խN(L62ITA;/'U@4!L_j]J1?;۽`ĝK"K6l)7%͸DŦ+S${s|I@}[4<*CRlpV¡M1aI |ĭ(|vKK~z!tYB_[G'ԋj'9Cn`Oi$ʆcFܤQ /lL񸻞dsCZ[vz܉ ;=ΚU"qCY]Ooԗ?`m4HV?]ʖ䷈rdJpq[1 S(+$k.'yEGs;뉹Q`&FF&& biM4M MBQ42 mPL4 h%0Sɦ4QouN i0% G;PIPMrĸdCPhPm-t:ݲ''N:vvIiβ%YӢ.Q]yoke1RF±LBܺE:v;1m; &RL0-BSP  QUABr+.AFm -Am6 2lE׷N Ϝ. I2GTIHt(a8`^N7AE)Y!3X+5Y" !YT ֨AYV ]  l ayAP" V, hŏNFR͛VK12Ӣt 9~V P6mVDVJ<3u:*h]^3of``ID,7(@&%lzrZBŖY ,R UĂ83jVQbƱ`kdCS Ch%6e,%oߕ’JiËl=9ؑ|8YB~{\V `lYcMRI9ڻۿoN8vf7`ѤMs E7ٶ +e(*;m}x8j ,fa]. D(hh7뀭9+: l5C" *e{`!R@.p!