From d4b085081a5112488d9bc70352d8c30574ef045a Mon Sep 17 00:00:00 2001 From: Anders Melchiorsen Date: Fri, 21 Apr 2017 07:46:12 +0200 Subject: [PATCH 001/169] LIFX light effects (#7145) * Refactor into find_hsbk This will be useful for new methods that also have to find passed in colors. * Add AwaitAioLIFX This encapsulates the callback and Event that aiolifx needs and thus avoids an explosion of those when new calls are added. The refresh_state is now generally useful, so move it into its own method. * Initial effects support for LIFX These effects are useful as notifications. They mimic the breathe and pulse effects from the LIFX HTTP API: https://api.developer.lifx.com/docs/breathe-effect https://api.developer.lifx.com/docs/pulse-effect However, this implementation runs locally with the LIFX LAN protocol. * Saturate LIFX no color value Now the color is "full saturation, no brightness". This avoids a lot of temporary white when fading from the "no color" value and into a real color. * Organize LIFX effects in classes This is to move the setup/restore away from the actual effect, making it quite simple to add additional effects. * Stop running LIFX effects on conflicting service calls Turning the light on/off or starting a new effect will now stop the running effect. * Present default LIFX effects as light.turn_on effects This makes the effects (with default parameters) easily accessible from the UI. * Add LIFX colorloop effect This cycles the HSV colors, so that is added as an internal way to set a color. * Move lifx to its own package and split effects into a separate file * Always show LIFX light name in logs The name is actually the easiest way to identify a bulb so just using it as a fallback was a bit odd. * Compact effect getter * Always use full brightness for random flash color This is a stopgap. When a bit more infrastructure is in place, the intention is to turn the current hue some degrees. This will guarantee a flash color that is both unlike the current color and unlike white. * Clear effects concurrently We have to wait for the bulbs, so let us wait for all of them at once. * Add lifx_effect_stop The colorloop effect is most impressive if run on many lights. Testing this has revealed the need for an easy way to stop effects on all lights and return to the initial state of each bulb. This new call does just that. Calling turn_on/turn_off could also stop the effect but that would not restore the initial state. * Always calculate the initial effect color To fade nicely from power off, the breathe effect needs to keep an unchanging hue. So give up on using a static start color and just find the correct hue from the target color. The colorloop effect can start from anything but we use a random color just to keep things a little interesting during power on. * Fix lint * Update .coveragerc --- .coveragerc | 2 +- .../light/{lifx.py => lifx/__init__.py} | 190 +++++++--- .../components/light/lifx/effects.py | 338 ++++++++++++++++++ .../components/light/lifx/services.yaml | 99 +++++ 4 files changed, 571 insertions(+), 58 deletions(-) rename homeassistant/components/light/{lifx.py => lifx/__init__.py} (74%) create mode 100644 homeassistant/components/light/lifx/effects.py create mode 100644 homeassistant/components/light/lifx/services.yaml diff --git a/.coveragerc b/.coveragerc index 623e985c8f5..c8e59e55357 100644 --- a/.coveragerc +++ b/.coveragerc @@ -231,7 +231,7 @@ omit = homeassistant/components/light/flux_led.py homeassistant/components/light/hue.py homeassistant/components/light/hyperion.py - homeassistant/components/light/lifx.py + homeassistant/components/light/lifx/*.py homeassistant/components/light/lifx_legacy.py homeassistant/components/light/limitlessled.py homeassistant/components/light/mystrom.py diff --git a/homeassistant/components/light/lifx.py b/homeassistant/components/light/lifx/__init__.py similarity index 74% rename from homeassistant/components/light/lifx.py rename to homeassistant/components/light/lifx/__init__.py index 945c163435b..7c7bdd4eeea 100644 --- a/homeassistant/components/light/lifx.py +++ b/homeassistant/components/light/lifx/__init__.py @@ -10,19 +10,24 @@ import asyncio import sys from functools import partial from datetime import timedelta +import async_timeout import voluptuous as vol from homeassistant.components.light import ( - ATTR_BRIGHTNESS, ATTR_COLOR_TEMP, ATTR_RGB_COLOR, ATTR_TRANSITION, + Light, PLATFORM_SCHEMA, ATTR_BRIGHTNESS, ATTR_COLOR_NAME, ATTR_RGB_COLOR, + ATTR_COLOR_TEMP, ATTR_TRANSITION, ATTR_EFFECT, SUPPORT_BRIGHTNESS, SUPPORT_COLOR_TEMP, SUPPORT_RGB_COLOR, - SUPPORT_TRANSITION, Light, PLATFORM_SCHEMA) + SUPPORT_TRANSITION, SUPPORT_EFFECT) from homeassistant.util.color import ( color_temperature_mired_to_kelvin, color_temperature_kelvin_to_mired) from homeassistant import util from homeassistant.core import callback from homeassistant.helpers.event import async_track_point_in_utc_time import homeassistant.helpers.config_validation as cv +import homeassistant.util.color as color_util + +from . import effects as lifx_effects _LOGGER = logging.getLogger(__name__) @@ -35,18 +40,19 @@ BULB_LATENCY = 500 CONF_SERVER = 'server' +ATTR_HSBK = 'hsbk' + BYTE_MAX = 255 SHORT_MAX = 65535 SUPPORT_LIFX = (SUPPORT_BRIGHTNESS | SUPPORT_COLOR_TEMP | SUPPORT_RGB_COLOR | - SUPPORT_TRANSITION) + SUPPORT_TRANSITION | SUPPORT_EFFECT) PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ vol.Optional(CONF_SERVER, default='0.0.0.0'): cv.string, }) -# pylint: disable=unused-argument @asyncio.coroutine def async_setup_platform(hass, config, async_add_devices, discovery_info=None): """Setup the LIFX platform.""" @@ -65,6 +71,9 @@ def async_setup_platform(hass, config, async_add_devices, discovery_info=None): local_addr=(server_addr, UDP_BROADCAST_PORT)) hass.async_add_job(coro) + + lifx_effects.setup(hass, lifx_manager) + return True @@ -104,10 +113,42 @@ class LIFXManager(object): entity = self.entities[device.mac_addr] _LOGGER.debug("%s unregister", entity.who) entity.device = None - entity.updated_event.set() self.hass.async_add_job(entity.async_update_ha_state()) +class AwaitAioLIFX: + """Wait for an aiolifx callback and return the message.""" + + def __init__(self, light): + """Initialize the wrapper.""" + self.light = light + self.device = None + self.message = None + self.event = asyncio.Event() + + @callback + def callback(self, device, message): + """Callback that aiolifx invokes when the response is received.""" + self.device = device + self.message = message + self.event.set() + + @asyncio.coroutine + def wait(self, method): + """Call an aiolifx method and wait for its response or a timeout.""" + self.event.clear() + method(self.callback) + + while self.light.available and not self.event.is_set(): + try: + with async_timeout.timeout(1.0, loop=self.light.hass.loop): + yield from self.event.wait() + except asyncio.TimeoutError: + pass + + return self.message + + def convert_rgb_to_hsv(rgb): """Convert Home Assistant RGB values to HSV values.""" red, green, blue = [_ / BYTE_MAX for _ in rgb] @@ -125,8 +166,8 @@ class LIFXLight(Light): def __init__(self, device): """Initialize the light.""" self.device = device - self.updated_event = asyncio.Event() self.blocker = None + self.effect_data = None self.postponed_update = None self._name = device.label self.set_power(device.power_level) @@ -145,10 +186,10 @@ class LIFXLight(Light): @property def who(self): """Return a string identifying the device.""" + ip_addr = '-' if self.device: - return self.device.ip_addr[0] - else: - return "(%s)" % self.name + ip_addr = self.device.ip_addr[0] + return "%s (%s)" % (ip_addr, self.name) @property def rgb_color(self): @@ -178,11 +219,21 @@ class LIFXLight(Light): _LOGGER.debug("is_on: %d", self._power) return self._power != 0 + @property + def effect(self): + """Return the currently running effect.""" + return self.effect_data.effect.name if self.effect_data else None + @property def supported_features(self): """Flag supported features.""" return SUPPORT_LIFX + @property + def effect_list(self): + """Return the list of supported effects.""" + return lifx_effects.effect_list() + @callback def update_after_transition(self, now): """Request new status after completion of the last transition.""" @@ -213,13 +264,85 @@ class LIFXLight(Light): @asyncio.coroutine def async_turn_on(self, **kwargs): """Turn the device on.""" + yield from self.stop_effect() + + if ATTR_EFFECT in kwargs: + yield from lifx_effects.default_effect(self, **kwargs) + return + if ATTR_TRANSITION in kwargs: fade = int(kwargs[ATTR_TRANSITION] * 1000) else: fade = 0 + hsbk, changed_color = self.find_hsbk(**kwargs) + _LOGGER.debug("turn_on: %s (%d) %d %d %d %d %d", + self.who, self._power, fade, *hsbk) + + if self._power == 0: + if changed_color: + self.device.set_color(hsbk, None, 0) + self.device.set_power(True, None, fade) + else: + self.device.set_power(True, None, 0) # racing for power status + if changed_color: + self.device.set_color(hsbk, None, fade) + + self.update_later(0) + if fade < BULB_LATENCY: + self.set_power(1) + self.set_color(*hsbk) + + @asyncio.coroutine + def async_turn_off(self, **kwargs): + """Turn the device off.""" + yield from self.stop_effect() + + if ATTR_TRANSITION in kwargs: + fade = int(kwargs[ATTR_TRANSITION] * 1000) + else: + fade = 0 + + self.device.set_power(False, None, fade) + + self.update_later(fade) + if fade < BULB_LATENCY: + self.set_power(0) + + @asyncio.coroutine + def async_update(self): + """Update bulb status (if it is available).""" + _LOGGER.debug("%s async_update", self.who) + if self.available and self.blocker is None: + yield from self.refresh_state() + + @asyncio.coroutine + def stop_effect(self): + """Stop the currently running effect (if any).""" + if self.effect_data: + yield from self.effect_data.effect.async_restore(self) + + @asyncio.coroutine + def refresh_state(self): + """Ask the device about its current state and update our copy.""" + msg = yield from AwaitAioLIFX(self).wait(self.device.get_color) + if msg is not None: + self.set_power(self.device.power_level) + self.set_color(*self.device.color) + self._name = self.device.label + + def find_hsbk(self, **kwargs): + """Find the desired color from a number of possible inputs.""" changed_color = False + hsbk = kwargs.pop(ATTR_HSBK, None) + if hsbk is not None: + return [hsbk, True] + + color_name = kwargs.pop(ATTR_COLOR_NAME, None) + if color_name is not None: + kwargs[ATTR_RGB_COLOR] = color_util.color_name_to_rgb(color_name) + if ATTR_RGB_COLOR in kwargs: hue, saturation, brightness = \ convert_rgb_to_hsv(kwargs[ATTR_RGB_COLOR]) @@ -242,54 +365,7 @@ class LIFXLight(Light): else: kelvin = self._kel - hsbk = [hue, saturation, brightness, kelvin] - _LOGGER.debug("turn_on: %s (%d) %d %d %d %d %d", - self.who, self._power, fade, *hsbk) - - if self._power == 0: - if changed_color: - self.device.set_color(hsbk, None, 0) - self.device.set_power(True, None, fade) - else: - self.device.set_power(True, None, 0) # racing for power status - if changed_color: - self.device.set_color(hsbk, None, fade) - - self.update_later(0) - if fade < BULB_LATENCY: - self.set_power(1) - self.set_color(*hsbk) - - @asyncio.coroutine - def async_turn_off(self, **kwargs): - """Turn the device off.""" - if ATTR_TRANSITION in kwargs: - fade = int(kwargs[ATTR_TRANSITION] * 1000) - else: - fade = 0 - - self.device.set_power(False, None, fade) - - self.update_later(fade) - if fade < BULB_LATENCY: - self.set_power(0) - - @callback - def got_color(self, device, msg): - """Callback that gets current power/color status.""" - self.set_power(device.power_level) - self.set_color(*device.color) - self._name = device.label - self.updated_event.set() - - @asyncio.coroutine - def async_update(self): - """Update bulb status (if it is available).""" - _LOGGER.debug("%s async_update", self.who) - if self.available and self.blocker is None: - self.updated_event.clear() - self.device.get_color(self.got_color) - yield from self.updated_event.wait() + return [[hue, saturation, brightness, kelvin], changed_color] def set_power(self, power): """Set power state value.""" diff --git a/homeassistant/components/light/lifx/effects.py b/homeassistant/components/light/lifx/effects.py new file mode 100644 index 00000000000..e2ba0a73534 --- /dev/null +++ b/homeassistant/components/light/lifx/effects.py @@ -0,0 +1,338 @@ +"""Support for light effects for the LIFX light platform.""" +import logging +import asyncio +import random +from os import path + +import voluptuous as vol + +from homeassistant.components.light import ( + DOMAIN, ATTR_BRIGHTNESS, ATTR_COLOR_NAME, ATTR_RGB_COLOR, ATTR_EFFECT) +from homeassistant.config import load_yaml_config_file +from homeassistant.const import (ATTR_ENTITY_ID) +from homeassistant.helpers.service import extract_entity_ids +import homeassistant.helpers.config_validation as cv + +_LOGGER = logging.getLogger(__name__) + +SERVICE_EFFECT_BREATHE = 'lifx_effect_breathe' +SERVICE_EFFECT_PULSE = 'lifx_effect_pulse' +SERVICE_EFFECT_COLORLOOP = 'lifx_effect_colorloop' +SERVICE_EFFECT_STOP = 'lifx_effect_stop' + +ATTR_POWER_ON = 'power_on' +ATTR_PERIOD = 'period' +ATTR_CYCLES = 'cycles' +ATTR_SPREAD = 'spread' +ATTR_CHANGE = 'change' + +# aiolifx waveform modes +WAVEFORM_SINE = 1 +WAVEFORM_PULSE = 4 + +LIFX_EFFECT_SCHEMA = vol.Schema({ + vol.Optional(ATTR_ENTITY_ID): cv.entity_ids, + vol.Optional(ATTR_POWER_ON, default=True): cv.boolean, +}) + +LIFX_EFFECT_BREATHE_SCHEMA = LIFX_EFFECT_SCHEMA.extend({ + ATTR_BRIGHTNESS: vol.All(vol.Coerce(int), vol.Clamp(min=0, max=255)), + ATTR_COLOR_NAME: cv.string, + ATTR_RGB_COLOR: vol.All(vol.ExactSequence((cv.byte, cv.byte, cv.byte)), + vol.Coerce(tuple)), + vol.Optional(ATTR_PERIOD, default=1.0): vol.All(vol.Coerce(float), + vol.Range(min=0.05)), + vol.Optional(ATTR_CYCLES, default=1.0): vol.All(vol.Coerce(float), + vol.Range(min=1)), +}) + +LIFX_EFFECT_PULSE_SCHEMA = LIFX_EFFECT_BREATHE_SCHEMA + +LIFX_EFFECT_COLORLOOP_SCHEMA = LIFX_EFFECT_SCHEMA.extend({ + ATTR_BRIGHTNESS: vol.All(vol.Coerce(int), vol.Clamp(min=0, max=255)), + vol.Optional(ATTR_PERIOD, default=60): vol.All(vol.Coerce(float), + vol.Clamp(min=1)), + vol.Optional(ATTR_CHANGE, default=20): vol.All(vol.Coerce(float), + vol.Clamp(min=0, max=360)), + vol.Optional(ATTR_SPREAD, default=30): vol.All(vol.Coerce(float), + vol.Clamp(min=0, max=360)), +}) + +LIFX_EFFECT_STOP_SCHEMA = vol.Schema({ + vol.Optional(ATTR_ENTITY_ID): cv.entity_ids, + vol.Optional(ATTR_POWER_ON, default=False): cv.boolean, +}) + + +def setup(hass, lifx_manager): + """Register the LIFX effects as hass service calls.""" + @asyncio.coroutine + def async_service_handle(service): + """Internal func for applying a service.""" + entity_ids = extract_entity_ids(hass, service) + if entity_ids: + devices = [entity for entity in lifx_manager.entities.values() + if entity.entity_id in entity_ids] + else: + devices = list(lifx_manager.entities.values()) + + if devices: + yield from start_effect(hass, devices, + service.service, **service.data) + + descriptions = load_yaml_config_file( + path.join(path.dirname(__file__), 'services.yaml')) + + hass.services.async_register( + DOMAIN, SERVICE_EFFECT_BREATHE, async_service_handle, + descriptions.get(SERVICE_EFFECT_BREATHE), + schema=LIFX_EFFECT_BREATHE_SCHEMA) + + hass.services.async_register( + DOMAIN, SERVICE_EFFECT_PULSE, async_service_handle, + descriptions.get(SERVICE_EFFECT_PULSE), + schema=LIFX_EFFECT_PULSE_SCHEMA) + + hass.services.async_register( + DOMAIN, SERVICE_EFFECT_COLORLOOP, async_service_handle, + descriptions.get(SERVICE_EFFECT_COLORLOOP), + schema=LIFX_EFFECT_COLORLOOP_SCHEMA) + + hass.services.async_register( + DOMAIN, SERVICE_EFFECT_STOP, async_service_handle, + descriptions.get(SERVICE_EFFECT_STOP), + schema=LIFX_EFFECT_STOP_SCHEMA) + + +@asyncio.coroutine +def start_effect(hass, devices, service, **data): + """Start a light effect.""" + tasks = [] + for light in devices: + tasks.append(hass.async_add_job(light.stop_effect())) + yield from asyncio.wait(tasks, loop=hass.loop) + + if service in SERVICE_EFFECT_BREATHE: + effect = LIFXEffectBreathe(hass, devices) + elif service in SERVICE_EFFECT_PULSE: + effect = LIFXEffectPulse(hass, devices) + elif service == SERVICE_EFFECT_COLORLOOP: + effect = LIFXEffectColorloop(hass, devices) + elif service == SERVICE_EFFECT_STOP: + effect = LIFXEffectStop(hass, devices) + + hass.async_add_job(effect.async_perform(**data)) + + +@asyncio.coroutine +def default_effect(light, **kwargs): + """Start an effect with default parameters.""" + service = kwargs[ATTR_EFFECT] + data = { + ATTR_ENTITY_ID: light.entity_id, + } + if service in (SERVICE_EFFECT_BREATHE, SERVICE_EFFECT_PULSE): + data[ATTR_RGB_COLOR] = [ + random.randint(1, 127), + random.randint(1, 127), + random.randint(1, 127), + ] + data[ATTR_BRIGHTNESS] = 255 + yield from light.hass.services.async_call(DOMAIN, service, data) + + +def effect_list(): + """Return the list of supported effects.""" + return [ + SERVICE_EFFECT_COLORLOOP, + SERVICE_EFFECT_BREATHE, + SERVICE_EFFECT_PULSE, + SERVICE_EFFECT_STOP, + ] + + +class LIFXEffectData(object): + """Structure describing a running effect.""" + + def __init__(self, effect, power, color): + """Initialize data structure.""" + self.effect = effect + self.power = power + self.color = color + + +class LIFXEffect(object): + """Representation of a light effect running on a number of lights.""" + + def __init__(self, hass, lights): + """Initialize the effect.""" + self.hass = hass + self.lights = lights + + @asyncio.coroutine + def async_perform(self, **kwargs): + """Do common setup and play the effect.""" + yield from self.async_setup(**kwargs) + yield from self.async_play(**kwargs) + + @asyncio.coroutine + def async_setup(self, **kwargs): + """Prepare all lights for the effect.""" + for light in self.lights: + yield from light.refresh_state() + if not light.device: + self.lights.remove(light) + else: + light.effect_data = LIFXEffectData( + self, light.is_on, light.device.color) + + # Temporarily turn on power for the effect to be visible + if kwargs[ATTR_POWER_ON] and not light.is_on: + hsbk = self.from_poweroff_hsbk(light, **kwargs) + light.device.set_color(hsbk) + light.device.set_power(True) + + # pylint: disable=no-self-use + @asyncio.coroutine + def async_play(self, **kwargs): + """Play the effect.""" + yield None + + @asyncio.coroutine + def async_restore(self, light): + """Restore to the original state (if we are still running).""" + if light.effect_data: + if light.effect_data.effect == self: + if light.device and not light.effect_data.power: + light.device.set_power(False) + yield from asyncio.sleep(0.5) + if light.device: + light.device.set_color(light.effect_data.color) + yield from asyncio.sleep(0.5) + light.effect_data = None + self.lights.remove(light) + + def from_poweroff_hsbk(self, light, **kwargs): + """The initial color when starting from a powered off state.""" + return None + + +class LIFXEffectBreathe(LIFXEffect): + """Representation of a breathe effect.""" + + def __init__(self, hass, lights): + """Initialize the breathe effect.""" + super(LIFXEffectBreathe, self).__init__(hass, lights) + self.name = SERVICE_EFFECT_BREATHE + self.waveform = WAVEFORM_SINE + + @asyncio.coroutine + def async_play(self, **kwargs): + """Play the effect on all lights.""" + for light in self.lights: + self.hass.async_add_job(self.async_light_play(light, **kwargs)) + + @asyncio.coroutine + def async_light_play(self, light, **kwargs): + """Play a light effect on the bulb.""" + period = kwargs[ATTR_PERIOD] + cycles = kwargs[ATTR_CYCLES] + hsbk, _ = light.find_hsbk(**kwargs) + + # Start the effect + args = { + 'transient': 1, + 'color': hsbk, + 'period': int(period*1000), + 'cycles': cycles, + 'duty_cycle': 0, + 'waveform': self.waveform, + } + light.device.set_waveform(args) + + # Wait for completion and restore the initial state + yield from asyncio.sleep(period*cycles) + yield from self.async_restore(light) + + def from_poweroff_hsbk(self, light, **kwargs): + """Initial color is the target color, but no brightness.""" + hsbk, _ = light.find_hsbk(**kwargs) + return [hsbk[0], hsbk[1], 0, hsbk[2]] + + +class LIFXEffectPulse(LIFXEffectBreathe): + """Representation of a pulse effect.""" + + def __init__(self, hass, lights): + """Initialize the pulse effect.""" + super(LIFXEffectPulse, self).__init__(hass, lights) + self.name = SERVICE_EFFECT_PULSE + self.waveform = WAVEFORM_PULSE + + +class LIFXEffectColorloop(LIFXEffect): + """Representation of a colorloop effect.""" + + def __init__(self, hass, lights): + """Initialize the colorloop effect.""" + super(LIFXEffectColorloop, self).__init__(hass, lights) + self.name = SERVICE_EFFECT_COLORLOOP + + @asyncio.coroutine + def async_play(self, **kwargs): + """Play the effect on all lights.""" + period = kwargs[ATTR_PERIOD] + spread = kwargs[ATTR_SPREAD] + change = kwargs[ATTR_CHANGE] + direction = 1 if random.randint(0, 1) else -1 + + # Random start + hue = random.randint(0, 359) + + while self.lights: + hue = (hue + direction*change) % 360 + + random.shuffle(self.lights) + lhue = hue + + transition = int(1000 * random.uniform(period/2, period)) + for light in self.lights: + if spread > 0: + transition = int(1000 * random.uniform(period/2, period)) + + if ATTR_BRIGHTNESS in kwargs: + brightness = int(65535/255*kwargs[ATTR_BRIGHTNESS]) + else: + brightness = light.effect_data.color[2] + + hsbk = [ + int(65535/359*lhue), + int(random.uniform(0.8, 1.0)*65535), + brightness, + 4000, + ] + light.device.set_color(hsbk, None, transition) + + # Adjust the next light so the full spread is used + if len(self.lights) > 1: + lhue = (lhue + spread/(len(self.lights)-1)) % 360 + + yield from asyncio.sleep(period) + + def from_poweroff_hsbk(self, light, **kwargs): + """Start from a random hue.""" + return [random.randint(0, 65535), 65535, 0, 4000] + + +class LIFXEffectStop(LIFXEffect): + """A no-op effect, but starting it will stop an existing effect.""" + + def __init__(self, hass, lights): + """Initialize the stop effect.""" + super(LIFXEffectStop, self).__init__(hass, lights) + self.name = SERVICE_EFFECT_STOP + + @asyncio.coroutine + def async_perform(self, **kwargs): + """Do nothing.""" + yield None diff --git a/homeassistant/components/light/lifx/services.yaml b/homeassistant/components/light/lifx/services.yaml new file mode 100644 index 00000000000..1b34c54f253 --- /dev/null +++ b/homeassistant/components/light/lifx/services.yaml @@ -0,0 +1,99 @@ +lifx_effect_breathe: + description: Run a breathe effect by fading to a color and back. + + fields: + entity_id: + description: Name(s) of entities to run the effect on + example: 'light.kitchen' + + brightness: + description: Number between 0..255 indicating brightness when the effect peaks + example: 120 + + color_name: + description: A human readable color name + example: 'red' + + rgb_color: + description: Color for the fade in RGB-format + example: '[255, 100, 100]' + + period: + description: Duration of the effect in seconds (default 1.0) + example: 3 + + cycles: + description: Number of times the effect should run (default 1.0) + example: 2 + + power_on: + description: Powered off lights are temporarily turned on during the effect (default True) + example: False + +lifx_effect_pulse: + description: Run a flash effect by changing to a color and back. + + fields: + entity_id: + description: Name(s) of entities to run the effect on + example: 'light.kitchen' + + brightness: + description: Number between 0..255 indicating brightness of the temporary color + example: 120 + + color_name: + description: A human readable color name + example: 'red' + + rgb_color: + description: The temporary color in RGB-format + example: '[255, 100, 100]' + + period: + description: Duration of the effect in seconds (default 1.0) + example: 3 + + cycles: + description: Number of times the effect should run (default 1.0) + example: 2 + + power_on: + description: Powered off lights are temporarily turned on during the effect (default True) + example: False + +lifx_effect_colorloop: + description: Run an effect with looping colors. + + fields: + entity_id: + description: Name(s) of entities to run the effect on + example: 'light.disco1, light.disco2, light.disco3' + + brightness: + description: Number between 0..255 indicating brightness of the effect. Leave this out to maintain the current brightness of each participating light + example: 120 + + period: + description: Duration between color changes (deafult 60) + example: 180 + + change: + description: Hue movement per period, in degrees on a color wheel (default 20) + example: 45 + + spread: + description: Maximum hue difference between participating lights, in degrees on a color wheel (default 30) + example: 0 + + power_on: + description: Powered off lights are temporarily turned on during the effect (default True) + example: False + +lifx_effect_stop: + description: Stop a running effect. + + fields: + entity_id: + description: Name(s) of entities to stop effects on. Leave out to stop effects everywhere. + example: 'light.bedroom' From 0acc52b23b12aa40c9a1a05cce6f336bda7a1640 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Fri, 21 Apr 2017 12:20:19 +0200 Subject: [PATCH 002/169] HassIO API v2 (#7201) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add an optional extended description… --- homeassistant/components/hassio.py | 10 ++++++++-- homeassistant/components/services.yaml | 3 +++ tests/components/test_hassio.py | 18 ++++++++++++++++++ 3 files changed, 29 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/hassio.py b/homeassistant/components/hassio.py index 25da7a67f4b..c74918dbfa0 100644 --- a/homeassistant/components/hassio.py +++ b/homeassistant/components/hassio.py @@ -31,9 +31,11 @@ SERVICE_HOST_SHUTDOWN = 'host_shutdown' SERVICE_HOST_REBOOT = 'host_reboot' SERVICE_HOST_UPDATE = 'host_update' -SERVICE_SUPERVISOR_UPDATE = 'supervisor_update' SERVICE_HOMEASSISTANT_UPDATE = 'homeassistant_update' +SERVICE_SUPERVISOR_UPDATE = 'supervisor_update' +SERVICE_SUPERVISOR_RELOAD = 'supervisor_reload' + SERVICE_ADDON_INSTALL = 'addon_install' SERVICE_ADDON_UNINSTALL = 'addon_uninstall' SERVICE_ADDON_UPDATE = 'addon_update' @@ -61,8 +63,9 @@ SERVICE_MAP = { SERVICE_HOST_SHUTDOWN: None, SERVICE_HOST_REBOOT: None, SERVICE_HOST_UPDATE: SCHEMA_SERVICE_UPDATE, - SERVICE_SUPERVISOR_UPDATE: SCHEMA_SERVICE_UPDATE, SERVICE_HOMEASSISTANT_UPDATE: SCHEMA_SERVICE_UPDATE, + SERVICE_SUPERVISOR_UPDATE: SCHEMA_SERVICE_UPDATE, + SERVICE_SUPERVISOR_RELOAD: None, SERVICE_ADDON_INSTALL: SCHEMA_SERVICE_ADDONS_VERSION, SERVICE_ADDON_UNINSTALL: SCHEMA_SERVICE_ADDONS, SERVICE_ADDON_START: SCHEMA_SERVICE_ADDONS, @@ -117,6 +120,9 @@ def async_setup(hass, config): elif service.service == SERVICE_SUPERVISOR_UPDATE: yield from hassio.send_command( "/supervisor/update", payload=version) + elif service.service == SERVICE_SUPERVISOR_RELOAD: + yield from hassio.send_command( + "/supervisor/reload", timeout=LONG_TASK_TIMEOUT) elif service.service == SERVICE_HOMEASSISTANT_UPDATE: yield from hassio.send_command( "/homeassistant/update", payload=version, diff --git a/homeassistant/components/services.yaml b/homeassistant/components/services.yaml index cf5999200d8..6cff6d5f4f4 100644 --- a/homeassistant/components/services.yaml +++ b/homeassistant/components/services.yaml @@ -338,6 +338,9 @@ hassio: description: Optional or it will be use the latest version. example: '0.3' + supervisor_reload: + description: Reload HassIO supervisor addons/updates/configs. + homeassistant_update: description: Update HomeAssistant docker image. fields: diff --git a/tests/components/test_hassio.py b/tests/components/test_hassio.py index bde419c4104..2574e7fa9f3 100644 --- a/tests/components/test_hassio.py +++ b/tests/components/test_hassio.py @@ -53,6 +53,8 @@ class TestHassIOSetup(object): assert self.hass.services.has_service( ho.DOMAIN, ho.SERVICE_SUPERVISOR_UPDATE) + assert self.hass.services.has_service( + ho.DOMAIN, ho.SERVICE_SUPERVISOR_RELOAD) assert self.hass.services.has_service( ho.DOMAIN, ho.SERVICE_ADDON_INSTALL) @@ -216,6 +218,22 @@ class TestHassIOComponent(object): assert len(aioclient_mock.mock_calls) == 2 assert aioclient_mock.mock_calls[-1][2]['version'] == '0.4' + def test_rest_command_http_supervisor_reload(self, aioclient_mock): + """Call a hassio for supervisor reload.""" + aioclient_mock.get( + "http://127.0.0.1/supervisor/ping", json=self.ok_msg) + with assert_setup_component(0, ho.DOMAIN): + setup_component(self.hass, ho.DOMAIN, self.config) + + aioclient_mock.get( + self.url.format("supervisor/reload"), json=self.ok_msg) + + self.hass.services.call( + ho.DOMAIN, ho.SERVICE_SUPERVISOR_RELOAD, {}) + self.hass.block_till_done() + + assert len(aioclient_mock.mock_calls) == 2 + def test_rest_command_http_homeassistant_update(self, aioclient_mock): """Call a hassio for homeassistant update.""" aioclient_mock.get( From f5dd25c87fcdc4f7e16ef900f5b8ce48b43e67c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pierre=20St=C3=A5hl?= Date: Fri, 21 Apr 2017 14:15:05 +0200 Subject: [PATCH 003/169] Capture and log pip install error output (#7200) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add an optional extended description… --- homeassistant/util/package.py | 13 +++++--- tests/util/test_package.py | 57 +++++++++++++++++++++-------------- 2 files changed, 42 insertions(+), 28 deletions(-) diff --git a/homeassistant/util/package.py b/homeassistant/util/package.py index 9a4fa038cfe..ed533a3872f 100644 --- a/homeassistant/util/package.py +++ b/homeassistant/util/package.py @@ -1,9 +1,9 @@ """Helpers to install PyPi packages.""" import logging import os -import subprocess import sys import threading +from subprocess import Popen, PIPE from urllib.parse import urlparse from typing import Optional @@ -36,12 +36,15 @@ def install_package(package: str, upgrade: bool=True, if constraints is not None: args += ['--constraint', constraints] - try: - return subprocess.call(args) == 0 - except subprocess.SubprocessError: - _LOGGER.exception('Unable to install package %s', package) + process = Popen(args, stdin=PIPE, stdout=PIPE, stderr=PIPE) + _, stderr = process.communicate() + if process.returncode != 0: + _LOGGER.error('Unable to install package %s: %s', + package, stderr.decode('utf-8').lstrip().strip()) return False + return True + def check_package_exists(package: str, lib_dir: str) -> bool: """Check if a package is installed globally or in lib_dir. diff --git a/tests/util/test_package.py b/tests/util/test_package.py index 20fb8ca9a2f..e0682d79f57 100644 --- a/tests/util/test_package.py +++ b/tests/util/test_package.py @@ -1,11 +1,11 @@ """Test Home Assistant package util methods.""" import os import pkg_resources -import subprocess import unittest +from subprocess import PIPE from distutils.sysconfig import get_python_lib -from unittest.mock import call, patch +from unittest.mock import call, patch, Mock import homeassistant.util.package as package @@ -18,13 +18,20 @@ TEST_ZIP_REQ = 'file://{}#{}' \ .format(os.path.join(RESOURCE_DIR, 'pyhelloworld3.zip'), TEST_NEW_REQ) -@patch('homeassistant.util.package.subprocess.call') +@patch('homeassistant.util.package.Popen') @patch('homeassistant.util.package.check_package_exists') class TestPackageUtilInstallPackage(unittest.TestCase): """Test for homeassistant.util.package module.""" - def test_install_existing_package(self, mock_exists, mock_subprocess): + def setUp(self): + """Setup the tests.""" + self.mock_process = Mock() + self.mock_process.communicate.return_value = (b'message', b'error') + self.mock_process.returncode = 0 + + def test_install_existing_package(self, mock_exists, mock_popen): """Test an install attempt on an existing package.""" + mock_popen.return_value = self.mock_process mock_exists.return_value = True self.assertTrue(package.install_package(TEST_EXIST_REQ)) @@ -32,52 +39,54 @@ class TestPackageUtilInstallPackage(unittest.TestCase): self.assertEqual(mock_exists.call_count, 1) self.assertEqual(mock_exists.call_args, call(TEST_EXIST_REQ, None)) - self.assertEqual(mock_subprocess.call_count, 0) + self.assertEqual(self.mock_process.communicate.call_count, 0) @patch('homeassistant.util.package.sys') - def test_install(self, mock_sys, mock_exists, mock_subprocess): + def test_install(self, mock_sys, mock_exists, mock_popen): """Test an install attempt on a package that doesn't exist.""" mock_exists.return_value = False - mock_subprocess.return_value = 0 + mock_popen.return_value = self.mock_process self.assertTrue(package.install_package(TEST_NEW_REQ, False)) self.assertEqual(mock_exists.call_count, 1) - self.assertEqual(mock_subprocess.call_count, 1) + self.assertEqual(self.mock_process.communicate.call_count, 1) + self.assertEqual(mock_popen.call_count, 1) self.assertEqual( - mock_subprocess.call_args, + mock_popen.call_args, call([ mock_sys.executable, '-m', 'pip', 'install', '--quiet', TEST_NEW_REQ - ]) + ], stdin=PIPE, stdout=PIPE, stderr=PIPE) ) @patch('homeassistant.util.package.sys') - def test_install_upgrade(self, mock_sys, mock_exists, mock_subprocess): + def test_install_upgrade(self, mock_sys, mock_exists, mock_popen): """Test an upgrade attempt on a package.""" mock_exists.return_value = False - mock_subprocess.return_value = 0 + mock_popen.return_value = self.mock_process self.assertTrue(package.install_package(TEST_NEW_REQ)) self.assertEqual(mock_exists.call_count, 1) - self.assertEqual(mock_subprocess.call_count, 1) + self.assertEqual(self.mock_process.communicate.call_count, 1) + self.assertEqual(mock_popen.call_count, 1) self.assertEqual( - mock_subprocess.call_args, + mock_popen.call_args, call([ mock_sys.executable, '-m', 'pip', 'install', '--quiet', TEST_NEW_REQ, '--upgrade' - ]) + ], stdin=PIPE, stdout=PIPE, stderr=PIPE) ) @patch('homeassistant.util.package.sys') - def test_install_target(self, mock_sys, mock_exists, mock_subprocess): + def test_install_target(self, mock_sys, mock_exists, mock_popen): """Test an install with a target.""" target = 'target_folder' mock_exists.return_value = False - mock_subprocess.return_value = 0 + mock_popen.return_value = self.mock_process self.assertTrue( package.install_package(TEST_NEW_REQ, False, target=target) @@ -85,26 +94,28 @@ class TestPackageUtilInstallPackage(unittest.TestCase): self.assertEqual(mock_exists.call_count, 1) - self.assertEqual(mock_subprocess.call_count, 1) + self.assertEqual(self.mock_process.communicate.call_count, 1) + self.assertEqual(mock_popen.call_count, 1) self.assertEqual( - mock_subprocess.call_args, + mock_popen.call_args, call([ mock_sys.executable, '-m', 'pip', 'install', '--quiet', TEST_NEW_REQ, '--target', os.path.abspath(target) - ]) + ], stdin=PIPE, stdout=PIPE, stderr=PIPE) ) @patch('homeassistant.util.package._LOGGER') @patch('homeassistant.util.package.sys') def test_install_error(self, mock_sys, mock_logger, mock_exists, - mock_subprocess): + mock_popen): """Test an install with a target.""" mock_exists.return_value = False - mock_subprocess.side_effect = [subprocess.SubprocessError] + mock_popen.return_value = self.mock_process + self.mock_process.returncode = 1 self.assertFalse(package.install_package(TEST_NEW_REQ)) - self.assertEqual(mock_logger.exception.call_count, 1) + self.assertEqual(mock_logger.error.call_count, 1) class TestPackageUtilCheckPackageExists(unittest.TestCase): From 2657668a86e374a2e1ce5669f25e8b931532aec0 Mon Sep 17 00:00:00 2001 From: Anders Melchiorsen Date: Sat, 22 Apr 2017 05:16:36 +0200 Subject: [PATCH 004/169] Support xy_color with LIFX lights (#7208) --- homeassistant/components/light/lifx/__init__.py | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/homeassistant/components/light/lifx/__init__.py b/homeassistant/components/light/lifx/__init__.py index 7c7bdd4eeea..4d3cd0d4931 100644 --- a/homeassistant/components/light/lifx/__init__.py +++ b/homeassistant/components/light/lifx/__init__.py @@ -16,9 +16,9 @@ import voluptuous as vol from homeassistant.components.light import ( Light, PLATFORM_SCHEMA, ATTR_BRIGHTNESS, ATTR_COLOR_NAME, ATTR_RGB_COLOR, - ATTR_COLOR_TEMP, ATTR_TRANSITION, ATTR_EFFECT, + ATTR_XY_COLOR, ATTR_COLOR_TEMP, ATTR_TRANSITION, ATTR_EFFECT, SUPPORT_BRIGHTNESS, SUPPORT_COLOR_TEMP, SUPPORT_RGB_COLOR, - SUPPORT_TRANSITION, SUPPORT_EFFECT) + SUPPORT_XY_COLOR, SUPPORT_TRANSITION, SUPPORT_EFFECT) from homeassistant.util.color import ( color_temperature_mired_to_kelvin, color_temperature_kelvin_to_mired) from homeassistant import util @@ -46,7 +46,7 @@ BYTE_MAX = 255 SHORT_MAX = 65535 SUPPORT_LIFX = (SUPPORT_BRIGHTNESS | SUPPORT_COLOR_TEMP | SUPPORT_RGB_COLOR | - SUPPORT_TRANSITION | SUPPORT_EFFECT) + SUPPORT_XY_COLOR | SUPPORT_TRANSITION | SUPPORT_EFFECT) PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ vol.Optional(CONF_SERVER, default='0.0.0.0'): cv.string, @@ -358,6 +358,14 @@ class LIFXLight(Light): else: brightness = self._bri + if ATTR_XY_COLOR in kwargs: + hue, saturation, _ = \ + color_util.color_xy_brightness_to_hsv( + *kwargs[ATTR_XY_COLOR], + ibrightness=(brightness // (BYTE_MAX + 1))) + saturation = saturation * (BYTE_MAX + 1) + changed_color = True + if ATTR_COLOR_TEMP in kwargs: kelvin = int(color_temperature_mired_to_kelvin( kwargs[ATTR_COLOR_TEMP])) From 1194690c420027f4ba49762002435d84c71ac301 Mon Sep 17 00:00:00 2001 From: Nikolas Beutler Date: Sat, 22 Apr 2017 05:16:59 +0200 Subject: [PATCH 005/169] Update ios.py (#7160) * Update ios.py as discussed. the part: if battery_state == ios.ATTR_BATTERY_STATE_FULL: returning_icon_level = DEFAULT_ICON_LEVEL kinda screws up the charging icon. i might just miss a logical solution for that though. let me know what you think. it might not be beautiful but i think its an overall improve over the current "double battery" solution * Update ios.py chound fix and full_battery_charge fix * Update ios.py removed new line * Update ios.py * Update ios.py * Update ios.py * Update ios.py * Update ios.py * Update ios.py * merged request from robbie * Update ios.py * Update ios.py * Update ios.py --- homeassistant/components/sensor/ios.py | 42 ++++++++++++++++++-------- 1 file changed, 29 insertions(+), 13 deletions(-) diff --git a/homeassistant/components/sensor/ios.py b/homeassistant/components/sensor/ios.py index 35f03d7a1c1..3173eec4285 100644 --- a/homeassistant/components/sensor/ios.py +++ b/homeassistant/components/sensor/ios.py @@ -14,7 +14,8 @@ SENSOR_TYPES = { "state": ["Battery State", None] } -DEFAULT_ICON = "mdi:battery" +DEFAULT_ICON_LEVEL = "mdi:battery" +DEFAULT_ICON_STATE = "mdi:power-plug" def setup_platform(hass, config, add_devices, discovery_info=None): @@ -62,7 +63,6 @@ class IOSSensor(Entity): @property def unit_of_measurement(self): """Return the unit of measurement this sensor expresses itself in.""" - return self._unit_of_measurement @property def device_state_attributes(self): @@ -84,28 +84,44 @@ class IOSSensor(Entity): battery_state = device_battery[ios.ATTR_BATTERY_STATE] battery_level = device_battery[ios.ATTR_BATTERY_LEVEL] rounded_level = round(battery_level, -1) - returning_icon = DEFAULT_ICON + returning_icon_level = DEFAULT_ICON_LEVEL if battery_state == ios.ATTR_BATTERY_STATE_FULL: - returning_icon = DEFAULT_ICON + returning_icon_level = DEFAULT_ICON_LEVEL + if battery_state == ios.ATTR_BATTERY_STATE_CHARGING: + returning_icon_state = DEFAULT_ICON_STATE + else: + returning_icon_state = "{}-off".format(DEFAULT_ICON_STATE) elif battery_state == ios.ATTR_BATTERY_STATE_CHARGING: # Why is MDI missing 10, 50, 70? if rounded_level in (20, 30, 40, 60, 80, 90, 100): - returning_icon = "{}-charging-{}".format(DEFAULT_ICON, - str(rounded_level)) + returning_icon_level = "{}-charging-{}".format( + DEFAULT_ICON_LEVEL, str(rounded_level)) + returning_icon_state = DEFAULT_ICON_STATE else: - returning_icon = "{}-charging".format(DEFAULT_ICON) + returning_icon_level = "{}-charging".format( + DEFAULT_ICON_LEVEL) + returning_icon_state = DEFAULT_ICON_STATE elif battery_state == ios.ATTR_BATTERY_STATE_UNPLUGGED: if rounded_level < 10: - returning_icon = "{}-outline".format(DEFAULT_ICON) + returning_icon_level = "{}-outline".format( + DEFAULT_ICON_LEVEL) + returning_icon_state = "{}-off".format(DEFAULT_ICON_STATE) elif battery_level > 95: - returning_icon = DEFAULT_ICON + returning_icon_state = "{}-off".format(DEFAULT_ICON_STATE) + returning_icon_level = "{}-outline".format( + DEFAULT_ICON_LEVEL) else: - returning_icon = "{}-{}".format(DEFAULT_ICON, - str(rounded_level)) + returning_icon_level = "{}-{}".format(DEFAULT_ICON_LEVEL, + str(rounded_level)) + returning_icon_state = "{}-off".format(DEFAULT_ICON_STATE) elif battery_state == ios.ATTR_BATTERY_STATE_UNKNOWN: - returning_icon = "{}-unknown".format(DEFAULT_ICON) + returning_icon_level = "{}-unknown".format(DEFAULT_ICON_LEVEL) + returning_icon_state = "{}-unknown".format(DEFAULT_ICON_LEVEL) - return returning_icon + if self.type == "state": + return returning_icon_state + else: + return returning_icon_level def update(self): """Get the latest state of the sensor.""" From b77b22b01ad87f9146180f66ef5c8dd749451896 Mon Sep 17 00:00:00 2001 From: Sean Dague Date: Fri, 21 Apr 2017 23:22:36 -0400 Subject: [PATCH 006/169] Fix arwn platform to update hass state when events are received (#7202) The arwn platform was refactored to be asyncio friendly, however in doing so one thing was missed which was explicitly telling hass when something interesting has happened. This led to the very interesting to debug issue that the state cards were all out of date, even though the graphs were not. --- homeassistant/components/sensor/arwn.py | 1 + 1 file changed, 1 insertion(+) diff --git a/homeassistant/components/sensor/arwn.py b/homeassistant/components/sensor/arwn.py index 0bf68e68b0d..d2e148b8204 100644 --- a/homeassistant/components/sensor/arwn.py +++ b/homeassistant/components/sensor/arwn.py @@ -116,6 +116,7 @@ class ArwnSensor(Entity): """Update the sensor with the most recent event.""" self.event = {} self.event.update(event) + self.hass.async_add_job(self.async_update_ha_state()) @property def state(self): From 8e716780b7caf5862f90f82545255c6c69523bdb Mon Sep 17 00:00:00 2001 From: Henrik Nicolaisen Date: Sat, 22 Apr 2017 05:24:21 +0200 Subject: [PATCH 007/169] Issue 6749 updated pylgtv to 0.1.6 to fix thread leak in asyncio loop (#7199) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * updated pylgtv module to fix problems with timeouts * - update pylgtv to 0.1.6 - handle new TimeoutError exception from pylgtv * used full name for exception handling of concurrent.futures._base.TimeoutError * the exception handling should now follow the rules * float typecasting should not be necessary * use asyncio for TimeoutError it’s an alias for concurrent.futures.TimeoutError --- homeassistant/components/media_player/webostv.py | 12 ++++++++---- homeassistant/components/notify/webostv.py | 2 +- requirements_all.txt | 2 +- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/homeassistant/components/media_player/webostv.py b/homeassistant/components/media_player/webostv.py index b8f43486db1..c1b51e2d32a 100644 --- a/homeassistant/components/media_player/webostv.py +++ b/homeassistant/components/media_player/webostv.py @@ -5,6 +5,7 @@ For more details about this platform, please refer to the documentation at https://home-assistant.io/components/media_player.webostv/ """ import logging +import asyncio from datetime import timedelta from urllib.parse import urlparse @@ -24,7 +25,7 @@ from homeassistant.const import ( from homeassistant.loader import get_component import homeassistant.helpers.config_validation as cv -REQUIREMENTS = ['pylgtv==0.1.5', +REQUIREMENTS = ['pylgtv==0.1.6', 'websockets==3.2', 'wakeonlan==0.2.2'] @@ -99,7 +100,8 @@ def setup_tv(host, mac, name, customize, config, hass, add_devices): _LOGGER.warning( "Connected to LG webOS TV %s but not paired", host) return - except (OSError, ConnectionClosed): + except (OSError, ConnectionClosed, TypeError, + asyncio.TimeoutError): _LOGGER.error("Unable to connect to host %s", host) return else: @@ -196,7 +198,8 @@ class LgWebOSDevice(MediaPlayerDevice): app = self._app_list[source['appId']] self._source_list[app['title']] = app - except (OSError, ConnectionClosed): + except (OSError, ConnectionClosed, TypeError, + asyncio.TimeoutError): self._state = STATE_OFF @property @@ -257,7 +260,8 @@ class LgWebOSDevice(MediaPlayerDevice): self._state = STATE_OFF try: self._client.power_off() - except (OSError, ConnectionClosed): + except (OSError, ConnectionClosed, TypeError, + asyncio.TimeoutError): pass def turn_on(self): diff --git a/homeassistant/components/notify/webostv.py b/homeassistant/components/notify/webostv.py index 50788b8cccf..0e91fc8698a 100644 --- a/homeassistant/components/notify/webostv.py +++ b/homeassistant/components/notify/webostv.py @@ -14,7 +14,7 @@ from homeassistant.components.notify import ( ATTR_DATA, BaseNotificationService, PLATFORM_SCHEMA) from homeassistant.const import (CONF_FILENAME, CONF_HOST, CONF_ICON) -REQUIREMENTS = ['pylgtv==0.1.5'] +REQUIREMENTS = ['pylgtv==0.1.6'] _LOGGER = logging.getLogger(__name__) diff --git a/requirements_all.txt b/requirements_all.txt index 7775d07fb63..e98df3bf99b 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -564,7 +564,7 @@ pylast==1.8.0 # homeassistant.components.media_player.webostv # homeassistant.components.notify.webostv -pylgtv==0.1.5 +pylgtv==0.1.6 # homeassistant.components.litejet pylitejet==0.1 From 40f480c24ef7ecc0352c457383e577d31885aac0 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Fri, 21 Apr 2017 23:32:51 -0700 Subject: [PATCH 008/169] tradfri: Improve color temp support detection (#7211) --- homeassistant/components/light/tradfri.py | 32 ++++++++++++++--------- script/dev_docker | 1 + virtualization/Docker/Dockerfile.dev | 3 ++- 3 files changed, 22 insertions(+), 14 deletions(-) diff --git a/homeassistant/components/light/tradfri.py b/homeassistant/components/light/tradfri.py index 542f8dae8ef..ee4aa273224 100644 --- a/homeassistant/components/light/tradfri.py +++ b/homeassistant/components/light/tradfri.py @@ -13,13 +13,11 @@ from homeassistant.util import slugify _LOGGER = logging.getLogger(__name__) DEPENDENCIES = ['tradfri'] -SUPPORTED_FEATURES = (SUPPORT_BRIGHTNESS | SUPPORT_RGB_COLOR) -SUPPORTED_FEATURES_IKEA = (SUPPORT_BRIGHTNESS | SUPPORT_COLOR_TEMP) PLATFORM_SCHEMA = LIGHT_PLATFORM_SCHEMA -IKEA = 'ikea_of_sweden' - -ALLOWED_TEMPERATURES = {IKEA: {2200: 'efd275', 2700: 'f1e0b5', 4000: 'f5faf6'}} -ALLOWED_FEATURES = {IKEA: SUPPORTED_FEATURES_IKEA} +IKEA = 'IKEA of Sweden' +ALLOWED_TEMPERATURES = { + IKEA: {2200: 'efd275', 2700: 'f1e0b5', 4000: 'f5faf6'} +} def setup_platform(hass, config, add_devices, discovery_info=None): @@ -46,8 +44,14 @@ class Tradfri(Light): self._light_data = light.light_control.lights[0] self._name = light.name self._rgb_color = None - self._features = ALLOWED_FEATURES.get( - slugify(self._light.device_info.manufacturer), SUPPORTED_FEATURES) + self._features = SUPPORT_BRIGHTNESS + + if self._light_data.hex_color is not None: + if self._light.device_info.manufacturer == IKEA: + self._features &= SUPPORT_COLOR_TEMP + else: + self._features &= SUPPORT_RGB_COLOR + self._ok_temps = ALLOWED_TEMPERATURES.get( slugify(self._light.device_info.manufacturer)) @@ -74,16 +78,18 @@ class Tradfri(Light): @property def color_temp(self): """Return the CT color value in mireds.""" - if not self.supported_features & SUPPORT_COLOR_TEMP or \ - not self._ok_temps: - return + if (self._light_data.hex_color is None or + self.supported_features & SUPPORT_COLOR_TEMP == 0 or + not self._ok_temps): + return None + kelvin = next(( kelvin for kelvin, hex_color in self._ok_temps.items() if hex_color == self._light_data.hex_color), None) if kelvin is None: _LOGGER.error( - 'unexpected color temperature found %s', - self._light_data.hex_color) + 'unexpected color temperature found for %s: %s', + self.name, self._light_data.hex_color) return return color_util.color_temperature_kelvin_to_mired(kelvin) diff --git a/script/dev_docker b/script/dev_docker index 73c4ee60d0a..514fce73477 100755 --- a/script/dev_docker +++ b/script/dev_docker @@ -27,6 +27,7 @@ else -v /etc/localtime:/etc/localtime:ro \ -v `pwd`:/usr/src/app \ -v `pwd`/config:/config \ + --rm \ -t -i home-assistant-dev fi diff --git a/virtualization/Docker/Dockerfile.dev b/virtualization/Docker/Dockerfile.dev index 62c9f9f6596..5d16e9400ef 100644 --- a/virtualization/Docker/Dockerfile.dev +++ b/virtualization/Docker/Dockerfile.dev @@ -12,6 +12,7 @@ MAINTAINER Paulus Schoutsen #ENV INSTALL_OPENZWAVE no #ENV INSTALL_LIBCEC no #ENV INSTALL_PHANTOMJS no +#ENV INSTALL_COAP_CLIENT no VOLUME /config @@ -25,7 +26,7 @@ RUN virtualization/Docker/setup_docker_prereqs # Install hass component dependencies COPY requirements_all.txt requirements_all.txt RUN pip3 install --no-cache-dir -r requirements_all.txt && \ - pip3 install --no-cache-dir mysqlclient psycopg2 uvloop + pip3 install --no-cache-dir mysqlclient psycopg2 uvloop cchardet # BEGIN: Development additions From 3f47bf6b778adf12ca82ca5bff6709598e0cc19a Mon Sep 17 00:00:00 2001 From: Martin Hjelmare Date: Sat, 22 Apr 2017 09:31:23 +0200 Subject: [PATCH 009/169] Fix tradfri lights (#7212) * Remove leftover use of slugify * The IKEA manufacturer key is now exactly as found in device info. * Fix bitwise addition of supported features --- homeassistant/components/light/tradfri.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/homeassistant/components/light/tradfri.py b/homeassistant/components/light/tradfri.py index ee4aa273224..9c0284c22f6 100644 --- a/homeassistant/components/light/tradfri.py +++ b/homeassistant/components/light/tradfri.py @@ -8,7 +8,6 @@ from homeassistant.components.light import \ PLATFORM_SCHEMA as LIGHT_PLATFORM_SCHEMA from homeassistant.components.tradfri import KEY_GATEWAY from homeassistant.util import color as color_util -from homeassistant.util import slugify _LOGGER = logging.getLogger(__name__) @@ -48,12 +47,12 @@ class Tradfri(Light): if self._light_data.hex_color is not None: if self._light.device_info.manufacturer == IKEA: - self._features &= SUPPORT_COLOR_TEMP + self._features |= SUPPORT_COLOR_TEMP else: - self._features &= SUPPORT_RGB_COLOR + self._features |= SUPPORT_RGB_COLOR self._ok_temps = ALLOWED_TEMPERATURES.get( - slugify(self._light.device_info.manufacturer)) + self._light.device_info.manufacturer) @property def supported_features(self): @@ -123,7 +122,7 @@ class Tradfri(Light): kelvin = color_util.color_temperature_mired_to_kelvin( kwargs[ATTR_COLOR_TEMP]) # find closest allowed kelvin temp from user input - kelvin = min(self._ok_temps.keys(), key=lambda x: abs(x-kelvin)) + kelvin = min(self._ok_temps.keys(), key=lambda x: abs(x - kelvin)) self._light_control.set_hex_color(self._ok_temps[kelvin]) def update(self): From 8c72a57344ceecfabc58f7eebaceea449a0cf6af Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sat, 22 Apr 2017 11:52:24 +0200 Subject: [PATCH 010/169] Bump version to 0.44.0.dev0 (#7217) --- homeassistant/const.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/homeassistant/const.py b/homeassistant/const.py index a65b721625c..c6aa14417f5 100644 --- a/homeassistant/const.py +++ b/homeassistant/const.py @@ -1,7 +1,7 @@ # coding: utf-8 """Constants used by Home Assistant components.""" MAJOR_VERSION = 0 -MINOR_VERSION = 43 +MINOR_VERSION = 44 PATCH_VERSION = '0.dev0' __short_version__ = '{}.{}'.format(MAJOR_VERSION, MINOR_VERSION) __version__ = '{}.{}'.format(__short_version__, PATCH_VERSION) From 1b83ce87590caefe222b5cd4f8beb2c9020a1998 Mon Sep 17 00:00:00 2001 From: Joakim af Sandeberg Date: Sat, 22 Apr 2017 14:01:30 +0200 Subject: [PATCH 011/169] Pushbullet notification sensor (#7182) * Added the pushbullet sensor component * Updated requirements_all.txt and .coveragerc with the new sensor * Updated acording to houndci-bots comments * Some more changes * Final change by the hound (?) * Fixes from balloobs review and from houndci-bot This changes the sensors information to only contain one attribute as information, and the rest as device_state_attributes. * Added leading space to comments * Added docstrings, removed API_KEY from log, changed imports * The hound is at it again * Fix remaining issues * Fix pylint issue --- .coveragerc | 1 + homeassistant/components/sensor/pushbullet.py | 134 ++++++++++++++++++ requirements_all.txt | 1 + 3 files changed, 136 insertions(+) create mode 100644 homeassistant/components/sensor/pushbullet.py diff --git a/.coveragerc b/.coveragerc index c8e59e55357..f9936f26256 100644 --- a/.coveragerc +++ b/.coveragerc @@ -391,6 +391,7 @@ omit = homeassistant/components/sensor/pi_hole.py homeassistant/components/sensor/plex.py homeassistant/components/sensor/pocketcasts.py + homeassistant/components/sensor/pushbullet.py homeassistant/components/sensor/pvoutput.py homeassistant/components/sensor/qnap.py homeassistant/components/sensor/sabnzbd.py diff --git a/homeassistant/components/sensor/pushbullet.py b/homeassistant/components/sensor/pushbullet.py new file mode 100644 index 00000000000..acbe6487e9f --- /dev/null +++ b/homeassistant/components/sensor/pushbullet.py @@ -0,0 +1,134 @@ +""" +Pushbullet platform for sensor component. + +For more details about this platform, please refer to the documentation at +https://home-assistant.io/components/sensor.pushbullet/ +""" +import logging + +import voluptuous as vol + +from homeassistant.const import (CONF_API_KEY, CONF_MONITORED_CONDITIONS) +from homeassistant.components.sensor import PLATFORM_SCHEMA +import homeassistant.helpers.config_validation as cv +from homeassistant.helpers.entity import Entity + +REQUIREMENTS = ['pushbullet.py==0.10.0'] + +_LOGGER = logging.getLogger(__name__) + +SENSOR_TYPES = { + 'application_name': ['Application name'], + 'body': ['Body'], + 'notification_id': ['Notification ID'], + 'notification_tag': ['Notification tag'], + 'package_name': ['Package name'], + 'receiver_email': ['Receiver email'], + 'sender_email': ['Sender email'], + 'source_device_iden': ['Sender device ID'], + 'title': ['Title'], + 'type': ['Type'], +} + +PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ + vol.Required(CONF_API_KEY): cv.string, + vol.Optional(CONF_MONITORED_CONDITIONS, default=['title', 'body']): + vol.All(cv.ensure_list, vol.Length(min=1), [vol.In(SENSOR_TYPES)]), +}) + + +def setup_platform(hass, config, add_devices, discovery_info=None): + """Set up the Pushbllet Sensor platform.""" + from pushbullet import PushBullet + from pushbullet import InvalidKeyError + try: + pushbullet = PushBullet(config.get(CONF_API_KEY)) + except InvalidKeyError: + _LOGGER.error("Wrong API key for Pushbullet supplied") + return False + + pbprovider = PushBulletNotificationProvider(pushbullet) + + devices = [] + for sensor_type in config[CONF_MONITORED_CONDITIONS]: + devices.append(PushBulletNotificationSensor(pbprovider, sensor_type)) + add_devices(devices) + + +class PushBulletNotificationSensor(Entity): + """Representation of a Pushbullet Sensor.""" + + def __init__(self, pb, element): + """Initialize the Pushbullet sensor.""" + self.pushbullet = pb + self._element = element + self._state = None + self._state_attributes = None + + def update(self): + """Fetch the latest data from the sensor. + + This will fetch the 'sensor reading' into self._state but also all + attributes into self._state_attributes. + """ + try: + self._state = self.pushbullet.data[self._element] + self._state_attributes = self.pushbullet.data + except (KeyError, TypeError): + pass + + @property + def name(self): + """Return the name of the sensor.""" + return '{} {}'.format('Pushbullet', self._element) + + @property + def state(self): + """Return the current state of the sensor.""" + return self._state + + @property + def device_state_attributes(self): + """Return all known attributes of the sensor.""" + return self._state_attributes + + +class PushBulletNotificationProvider(): + """Provider for an account, leading to one or more sensors.""" + + def __init__(self, pb): + """Start to retrieve pushes from the given Pushbullet instance.""" + import threading + self.pushbullet = pb + self._data = None + self.listener = None + self.thread = threading.Thread(target=self.retrieve_pushes) + self.thread.daemon = True + self.thread.start() + + def on_push(self, data): + """Method to update the current data. + + Currently only monitors pushes but might be extended to monitor + different kinds of Pushbullet events. + """ + if data['type'] == 'push': + self._data = data['push'] + + @property + def data(self): + """The current data stored in the provider.""" + return self._data + + def retrieve_pushes(self): + """The method to run the daemon thread in. + + Spawn a new Listener and links it to self.on_push. + """ + from pushbullet import Listener + self.listener = Listener(account=self.pushbullet, on_push=self.on_push) + _LOGGER.debug("Getting pushes") + try: + self.listener.run_forever() + finally: + self.listener.close() diff --git a/requirements_all.txt b/requirements_all.txt index e98df3bf99b..11e25e8160a 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -460,6 +460,7 @@ psutil==5.2.2 pubnubsub-handler==1.0.2 # homeassistant.components.notify.pushbullet +# homeassistant.components.sensor.pushbullet pushbullet.py==0.10.0 # homeassistant.components.notify.pushetta From 1836c7a358fca4aba4c9362488efbc4164ef3709 Mon Sep 17 00:00:00 2001 From: John Arild Berentsen Date: Sat, 22 Apr 2017 16:23:39 +0200 Subject: [PATCH 012/169] Zwave cover workaround for graber shades. (#7204) * wierd pylint complaint * Workaround for Graber csz1 shades * logging * Try direct * Try direct * Use workaround * Review changes and tests * test * reset test * Use Bright and Dim also as open and close is --- homeassistant/components/zwave/discovery_schemas.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/zwave/discovery_schemas.py b/homeassistant/components/zwave/discovery_schemas.py index f6e56ce79c8..17c37556aea 100644 --- a/homeassistant/components/zwave/discovery_schemas.py +++ b/homeassistant/components/zwave/discovery_schemas.py @@ -81,12 +81,12 @@ DISCOVERY_SCHEMAS = [ }, 'open': { const.DISC_COMMAND_CLASS: [const.COMMAND_CLASS_SWITCH_MULTILEVEL], - const.DISC_LABEL: ['Open', 'Up'], + const.DISC_LABEL: ['Open', 'Up', 'Bright'], const.DISC_OPTIONAL: True, }, 'close': { const.DISC_COMMAND_CLASS: [const.COMMAND_CLASS_SWITCH_MULTILEVEL], - const.DISC_LABEL: ['Close', 'Down'], + const.DISC_LABEL: ['Close', 'Down', 'Dim'], const.DISC_OPTIONAL: True, }})}, {const.DISC_COMPONENT: 'cover', # Garage Door From d229787fa6209b356b6a32182abf83c891956929 Mon Sep 17 00:00:00 2001 From: Alok Saboo Date: Sat, 22 Apr 2017 14:43:17 -0400 Subject: [PATCH 013/169] Fixed typo and clarified details for Lifx effects (#7226) * Fixed typo * Update services.yaml * Clarified service details for Lifx effects --- homeassistant/components/light/lifx/services.yaml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/homeassistant/components/light/lifx/services.yaml b/homeassistant/components/light/lifx/services.yaml index 1b34c54f253..d939e1432bc 100644 --- a/homeassistant/components/light/lifx/services.yaml +++ b/homeassistant/components/light/lifx/services.yaml @@ -71,19 +71,19 @@ lifx_effect_colorloop: example: 'light.disco1, light.disco2, light.disco3' brightness: - description: Number between 0..255 indicating brightness of the effect. Leave this out to maintain the current brightness of each participating light + description: Number between 0 and 255 indicating brightness of the effect. Leave this out to maintain the current brightness of each participating light example: 120 period: - description: Duration between color changes (deafult 60) + description: Duration (in seconds) between color changes (default 60) example: 180 change: - description: Hue movement per period, in degrees on a color wheel (default 20) + description: Hue movement per period, in degrees on a color wheel (ranges from 0 to 360, default 20) example: 45 spread: - description: Maximum hue difference between participating lights, in degrees on a color wheel (default 30) + description: Maximum hue difference between participating lights, in degrees on a color wheel (ranges from 0 to 360, default 30) example: 0 power_on: From 5bfe5b3f70d98582bf7159ae190383f27406eb9f Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sat, 22 Apr 2017 21:13:04 +0200 Subject: [PATCH 014/169] Remove superfluous comments and update ordering (#7227) * Remove superfluous comments and update ordering * Fix pylint issues --- .../components/binary_sensor/maxcube.py | 18 +++------ homeassistant/components/climate/maxcube.py | 37 +++---------------- homeassistant/components/maxcube.py | 29 +++++---------- 3 files changed, 20 insertions(+), 64 deletions(-) diff --git a/homeassistant/components/binary_sensor/maxcube.py b/homeassistant/components/binary_sensor/maxcube.py index 77448fd6adc..276396e3ffe 100644 --- a/homeassistant/components/binary_sensor/maxcube.py +++ b/homeassistant/components/binary_sensor/maxcube.py @@ -4,7 +4,6 @@ Support for MAX! Window Shutter via MAX! Cube. For more details about this platform, please refer to the documentation https://home-assistant.io/components/maxcube/ """ - import logging from homeassistant.components.binary_sensor import BinarySensorDevice @@ -15,27 +14,24 @@ _LOGGER = logging.getLogger(__name__) def setup_platform(hass, config, add_devices, discovery_info=None): - """Iterate through all MAX! Devices and add window shutters to HASS.""" + """Iterate through all MAX! Devices and add window shutters.""" cube = hass.data[MAXCUBE_HANDLE].cube - - # List of devices devices = [] for device in cube.devices: - # Create device name by concatenating room name + device name - name = "%s %s" % (cube.room_by_id(device.room_id).name, device.name) + name = "{} {}".format( + cube.room_by_id(device.room_id).name, device.name) # Only add Window Shutters if cube.is_windowshutter(device): - # add device to HASS devices.append(MaxCubeShutter(hass, name, device.rf_address)) - if len(devices) > 0: + if len(devices): add_devices(devices) class MaxCubeShutter(BinarySensorDevice): - """MAX! Cube BinarySensor device.""" + """Representation of a MAX! Cube Binary Sensor device.""" def __init__(self, hass, name, rf_address): """Initialize MAX! Cube BinarySensorDevice.""" @@ -68,9 +64,5 @@ class MaxCubeShutter(BinarySensorDevice): def update(self): """Get latest data from MAX! Cube.""" self._cubehandle.update() - - # Get the device we want to update device = self._cubehandle.cube.device_by_rf(self._rf_address) - - # Update our internal state self._state = device.is_open diff --git a/homeassistant/components/climate/maxcube.py b/homeassistant/components/climate/maxcube.py index a04a547f534..8eb5a9c13b7 100644 --- a/homeassistant/components/climate/maxcube.py +++ b/homeassistant/components/climate/maxcube.py @@ -4,7 +4,6 @@ Support for MAX! Thermostats via MAX! Cube. For more details about this platform, please refer to the documentation https://home-assistant.io/components/maxcube/ """ - import socket import logging @@ -15,29 +14,27 @@ from homeassistant.const import STATE_UNKNOWN _LOGGER = logging.getLogger(__name__) -STATE_MANUAL = "manual" -STATE_BOOST = "boost" -STATE_VACATION = "vacation" +STATE_MANUAL = 'manual' +STATE_BOOST = 'boost' +STATE_VACATION = 'vacation' def setup_platform(hass, config, add_devices, discovery_info=None): """Iterate through all MAX! Devices and add thermostats to HASS.""" cube = hass.data[MAXCUBE_HANDLE].cube - # List of devices devices = [] for device in cube.devices: - # Create device name by concatenating room name + device name - name = "%s %s" % (cube.room_by_id(device.room_id).name, device.name) + name = '{} {}'.format( + cube.room_by_id(device.room_id).name, device.name) # Only add thermostats and wallthermostats if cube.is_thermostat(device) or cube.is_wallthermostat(device): # Add device to HASS devices.append(MaxCubeClimate(hass, name, device.rf_address)) - # Add all devices at once - if len(devices) > 0: + if len(devices): add_devices(devices) @@ -66,19 +63,13 @@ class MaxCubeClimate(ClimateDevice): @property def min_temp(self): """Return the minimum temperature.""" - # Get the device we want (does not do any IO, just reads from memory) device = self._cubehandle.cube.device_by_rf(self._rf_address) - - # Map and return minimum temperature return self.map_temperature_max_hass(device.min_temperature) @property def max_temp(self): """Return the maximum temperature.""" - # Get the device we want (does not do any IO, just reads from memory) device = self._cubehandle.cube.device_by_rf(self._rf_address) - - # Map and return maximum temperature return self.map_temperature_max_hass(device.max_temperature) @property @@ -89,7 +80,6 @@ class MaxCubeClimate(ClimateDevice): @property def current_temperature(self): """Return the current temperature.""" - # Get the device we want (does not do any IO, just reads from memory) device = self._cubehandle.cube.device_by_rf(self._rf_address) # Map and return current temperature @@ -98,10 +88,7 @@ class MaxCubeClimate(ClimateDevice): @property def current_operation(self): """Return current operation (auto, manual, boost, vacation).""" - # Get the device we want (does not do any IO, just reads from memory) device = self._cubehandle.cube.device_by_rf(self._rf_address) - - # Mode Mapping return self.map_mode_max_hass(device.mode) @property @@ -112,22 +99,15 @@ class MaxCubeClimate(ClimateDevice): @property def target_temperature(self): """Return the temperature we try to reach.""" - # Get the device we want (does not do any IO, just reads from memory) device = self._cubehandle.cube.device_by_rf(self._rf_address) - - # Map and return target temperature return self.map_temperature_max_hass(device.target_temperature) def set_temperature(self, **kwargs): """Set new target temperatures.""" - # Fail is target temperature has not been supplied as argument if kwargs.get(ATTR_TEMPERATURE) is None: return False - # Determine the new target temperature target_temperature = kwargs.get(ATTR_TEMPERATURE) - - # Write the target temperature to the MAX! Cube. device = self._cubehandle.cube.device_by_rf(self._rf_address) cube = self._cubehandle.cube @@ -141,13 +121,9 @@ class MaxCubeClimate(ClimateDevice): def set_operation_mode(self, operation_mode): """Set new operation mode.""" - # Get the device we want to update device = self._cubehandle.cube.device_by_rf(self._rf_address) - - # Mode Mapping mode = self.map_mode_hass_max(operation_mode) - # Write new mode to thermostat if mode is None: return False @@ -160,7 +136,6 @@ class MaxCubeClimate(ClimateDevice): def update(self): """Get latest data from MAX! Cube.""" - # Update the CubeHandle self._cubehandle.update() @staticmethod diff --git a/homeassistant/components/maxcube.py b/homeassistant/components/maxcube.py index c0c9bd16674..a0a8db6ba4d 100644 --- a/homeassistant/components/maxcube.py +++ b/homeassistant/components/maxcube.py @@ -4,25 +4,25 @@ Platform for the MAX! Cube LAN Gateway. For more details about this component, please refer to the documentation https://home-assistant.io/components/maxcube/ """ - -from socket import timeout import logging import time +from socket import timeout from threading import Lock +import voluptuous as vol + +import homeassistant.helpers.config_validation as cv from homeassistant.helpers.discovery import load_platform from homeassistant.const import CONF_HOST, CONF_PORT -import homeassistant.helpers.config_validation as cv -import voluptuous as vol REQUIREMENTS = ['maxcube-api==0.1.0'] _LOGGER = logging.getLogger(__name__) -DOMAIN = 'maxcube' -MAXCUBE_HANDLE = 'maxcube' - DEFAULT_PORT = 62910 +DOMAIN = 'maxcube' + +MAXCUBE_HANDLE = 'maxcube' CONFIG_SCHEMA = vol.Schema({ DOMAIN: vol.Schema({ @@ -37,11 +37,9 @@ def setup(hass, config): from maxcube.connection import MaxCubeConnection from maxcube.cube import MaxCube - # Read Config host = config.get(DOMAIN).get(CONF_HOST) port = config.get(DOMAIN).get(CONF_PORT) - # Assign Cube Handle to global variable try: cube = MaxCube(MaxCubeConnection(host, port)) except timeout: @@ -51,13 +49,9 @@ def setup(hass, config): hass.data[MAXCUBE_HANDLE] = MaxCubeHandle(cube) - # Load Climate (for Thermostats) load_platform(hass, 'climate', DOMAIN) - - # Load BinarySensor (for Window Shutter) load_platform(hass, 'binary_sensor', DOMAIN) - # Initialization successfull return True @@ -66,13 +60,8 @@ class MaxCubeHandle(object): def __init__(self, cube): """Initialize the Cube Handle.""" - # Cube handle self.cube = cube - - # Instantiate Mutex self.mutex = Lock() - - # Update Timestamp self._updatets = time.time() def update(self): @@ -81,7 +70,7 @@ class MaxCubeHandle(object): with self.mutex: # Only update every 60s if (time.time() - self._updatets) >= 60: - _LOGGER.debug("UPDATE: Updating") + _LOGGER.debug("Updating") try: self.cube.update() @@ -91,4 +80,4 @@ class MaxCubeHandle(object): self._updatets = time.time() else: - _LOGGER.debug("UPDATE: Skipping") + _LOGGER.debug("Skipping update") From 2c39038507a1cba936f5fffe97d4e0df39a54896 Mon Sep 17 00:00:00 2001 From: Dan Ports Date: Sat, 22 Apr 2017 12:16:06 -0700 Subject: [PATCH 015/169] lyft sensor: re-enable Prime Time rate attribute (#6982) Turns out this does work correctly even without a user login (assuming that sandbox mode is disabled) --- homeassistant/components/sensor/lyft.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/homeassistant/components/sensor/lyft.py b/homeassistant/components/sensor/lyft.py index 3962be0aa2f..2b71c82ece7 100644 --- a/homeassistant/components/sensor/lyft.py +++ b/homeassistant/components/sensor/lyft.py @@ -137,10 +137,8 @@ class LyftSensor(Entity): params['Trip duration (in seconds)'] = estimate.get( 'estimated_duration_seconds') - # Ignore the Prime Time percentage -- the Lyft API always - # returns 0 unless a user is logged in. - # params['Prime Time percentage'] = estimate.get( - # 'primetime_percentage') + params['Prime Time percentage'] = estimate.get( + 'primetime_percentage') if self._product.get("eta") is not None: eta = self._product['eta'] From 7b3cc9fe1f10fa0e85fd5e76c950d9fe83bf45d5 Mon Sep 17 00:00:00 2001 From: Matthew Garrett Date: Sun, 23 Apr 2017 00:20:58 -0700 Subject: [PATCH 016/169] Bump a couple of dependencies (#7231) * avion light: Bump python-avion dependency version The dependencies in python-avion weren't sufficiently strict. This is now fixed, but means we need to depend on a new version. * decora light: Bump python-decora dependency There's a new version of python-decora with a reliability fix, so depend on that. --- homeassistant/components/light/avion.py | 2 +- homeassistant/components/light/decora.py | 2 +- requirements_all.txt | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/homeassistant/components/light/avion.py b/homeassistant/components/light/avion.py index 929b2bc33ac..9b717c64c86 100644 --- a/homeassistant/components/light/avion.py +++ b/homeassistant/components/light/avion.py @@ -14,7 +14,7 @@ from homeassistant.components.light import ( PLATFORM_SCHEMA) import homeassistant.helpers.config_validation as cv -REQUIREMENTS = ['avion==0.5'] +REQUIREMENTS = ['avion==0.6'] _LOGGER = logging.getLogger(__name__) diff --git a/homeassistant/components/light/decora.py b/homeassistant/components/light/decora.py index eaae90f486e..856fcacd967 100644 --- a/homeassistant/components/light/decora.py +++ b/homeassistant/components/light/decora.py @@ -14,7 +14,7 @@ from homeassistant.components.light import ( PLATFORM_SCHEMA) import homeassistant.helpers.config_validation as cv -REQUIREMENTS = ['decora==0.3'] +REQUIREMENTS = ['decora==0.4'] _LOGGER = logging.getLogger(__name__) diff --git a/requirements_all.txt b/requirements_all.txt index 11e25e8160a..9c3789b24b1 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -71,7 +71,7 @@ apns2==0.1.1 astral==1.4 # homeassistant.components.light.avion -# avion==0.5 +# avion==0.6 # homeassistant.components.sensor.linux_battery batinfo==0.4.2 @@ -123,7 +123,7 @@ crimereports==1.0.0 datapoint==0.4.3 # homeassistant.components.light.decora -# decora==0.3 +# decora==0.4 # homeassistant.components.media_player.denonavr denonavr==0.3.1 From b6a4a0d9afdc1337766c3601bf4fb4e413cbde56 Mon Sep 17 00:00:00 2001 From: Adam Mills Date: Sun, 23 Apr 2017 03:23:00 -0400 Subject: [PATCH 017/169] Refactor lyft sensor update (#7233) --- homeassistant/components/sensor/lyft.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/homeassistant/components/sensor/lyft.py b/homeassistant/components/sensor/lyft.py index 2b71c82ece7..8a8609f8914 100644 --- a/homeassistant/components/sensor/lyft.py +++ b/homeassistant/components/sensor/lyft.py @@ -159,13 +159,14 @@ class LyftSensor(Entity): self._product = self.data.products[self._product_id] except KeyError: return + self._state = None if self._sensortype == 'time': eta = self._product['eta'] if (eta is not None) and (eta.get('is_valid_estimate')): - time_estimate = eta.get('eta_seconds', 0) + time_estimate = eta.get('eta_seconds') + if time_estimate is None: + return self._state = int(time_estimate / 60) - else: - self._state = 0 elif self._sensortype == 'price': estimate = self._product['estimate'] if (estimate is not None) and \ @@ -173,8 +174,6 @@ class LyftSensor(Entity): self._state = (int( (estimate.get('estimated_cost_cents_min', 0) + estimate.get('estimated_cost_cents_max', 0)) / 2) / 100) - else: - self._state = 0 class LyftEstimate(object): From 91b8eea6ad4074677a7a6f24d0683f4378a0249f Mon Sep 17 00:00:00 2001 From: Anders Melchiorsen Date: Sun, 23 Apr 2017 09:24:08 +0200 Subject: [PATCH 018/169] LIFX: avoid "Unable to remove unknown listener" warning (#7235) Forget the cancelled update handler so it is not cancelled a second time later on (if when <= BULB_LATENCY) and thus invoking the warning. --- homeassistant/components/light/lifx/__init__.py | 1 + 1 file changed, 1 insertion(+) diff --git a/homeassistant/components/light/lifx/__init__.py b/homeassistant/components/light/lifx/__init__.py index 4d3cd0d4931..47fb9a7b4be 100644 --- a/homeassistant/components/light/lifx/__init__.py +++ b/homeassistant/components/light/lifx/__init__.py @@ -256,6 +256,7 @@ class LIFXLight(Light): if self.postponed_update: self.postponed_update() + self.postponed_update = None if when > BULB_LATENCY: self.postponed_update = async_track_point_in_utc_time( self.hass, self.update_after_transition, From efe8b465760e025b1fac35ceb0d7bdf82c6d9a01 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sun, 23 Apr 2017 09:24:26 +0200 Subject: [PATCH 019/169] Upgrade pygatt to 3.1.1 (#7220) * Upgrade pygatt to 3.1.1 * Fix mess --- homeassistant/components/sensor/skybeacon.py | 14 +++++++------- requirements_all.txt | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/homeassistant/components/sensor/skybeacon.py b/homeassistant/components/sensor/skybeacon.py index dd6a117d447..0e8e2c6d2e9 100644 --- a/homeassistant/components/sensor/skybeacon.py +++ b/homeassistant/components/sensor/skybeacon.py @@ -16,7 +16,7 @@ from homeassistant.components.sensor import PLATFORM_SCHEMA from homeassistant.const import ( CONF_NAME, CONF_MAC, TEMP_CELSIUS, STATE_UNKNOWN, EVENT_HOMEASSISTANT_STOP) -REQUIREMENTS = ['pygatt==3.0.0'] +REQUIREMENTS = ['pygatt==3.1.1'] _LOGGER = logging.getLogger(__name__) @@ -38,7 +38,7 @@ CONNECT_TIMEOUT = 30 # pylint: disable=unused-argument def setup_platform(hass, config, add_devices, discovery_info=None): - """Set up the sensor.""" + """Set up the Skybeacon sensor.""" name = config.get(CONF_NAME) mac = config.get(CONF_MAC) _LOGGER.debug("Setting up...") @@ -57,7 +57,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None): class SkybeaconHumid(Entity): - """Representation of a humidity sensor.""" + """Representation of a Skybeacon humidity sensor.""" def __init__(self, name, mon): """Initialize a sensor.""" @@ -89,7 +89,7 @@ class SkybeaconHumid(Entity): class SkybeaconTemp(Entity): - """Representation of a temperature sensor.""" + """Representation of a Skybeacon temperature sensor.""" def __init__(self, name, mon): """Initialize a sensor.""" @@ -146,9 +146,9 @@ class Monitor(threading.Thread): while True: try: _LOGGER.info("Connecting to %s", self.name) - # we need concurrent connect, so lets not reset the device + # We need concurrent connect, so lets not reset the device adapter.start(reset_on_start=False) - # seems only one connection can be initiated at a time + # Seems only one connection can be initiated at a time with CONNECT_LOCK: device = adapter.connect(self.mac, CONNECT_TIMEOUT, @@ -157,7 +157,7 @@ class Monitor(threading.Thread): # HACK: inject handle mapping collected offline # pylint: disable=protected-access device._characteristics[UUID(BLE_TEMP_UUID)] = cached_char - # magic: writing this makes device happy + # Magic: writing this makes device happy device.char_write_handle(0x1b, bytearray([255]), False) device.subscribe(BLE_TEMP_UUID, self._update) _LOGGER.info("Subscribed to %s", self.name) diff --git a/requirements_all.txt b/requirements_all.txt index 9c3789b24b1..41df2f8221e 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -534,7 +534,7 @@ pyfido==1.0.1 pyfttt==0.3 # homeassistant.components.sensor.skybeacon -pygatt==3.0.0 +pygatt==3.1.1 # homeassistant.components.remote.harmony pyharmony==1.0.12 From b60b06a0622fa87f5684ba953aaefb47c5b97b4c Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sun, 23 Apr 2017 09:24:53 +0200 Subject: [PATCH 020/169] Upgrade mutagen to 1.37.0 (#7216) --- homeassistant/components/tts/__init__.py | 31 ++++++++++++------------ requirements_all.txt | 2 +- 2 files changed, 16 insertions(+), 17 deletions(-) diff --git a/homeassistant/components/tts/__init__.py b/homeassistant/components/tts/__init__.py index c175290f451..bbef4d57e45 100644 --- a/homeassistant/components/tts/__init__.py +++ b/homeassistant/components/tts/__init__.py @@ -29,9 +29,10 @@ from homeassistant.exceptions import HomeAssistantError from homeassistant.helpers import config_per_platform import homeassistant.helpers.config_validation as cv +REQUIREMENTS = ["mutagen==1.37.0"] + DOMAIN = 'tts' DEPENDENCIES = ['http'] -REQUIREMENTS = ["mutagen==1.36.2"] _LOGGER = logging.getLogger(__name__) @@ -79,7 +80,7 @@ SCHEMA_SERVICE_CLEAR_CACHE = vol.Schema({}) @asyncio.coroutine def async_setup(hass, config): - """Setup TTS.""" + """Set up TTS.""" tts = SpeechManager(hass) try: @@ -101,7 +102,7 @@ def async_setup(hass, config): @asyncio.coroutine def async_setup_platform(p_type, p_config, disc_info=None): - """Setup a tts platform.""" + """Set up a tts platform.""" platform = yield from async_prepare_setup_platform( hass, config, DOMAIN, p_type) if platform is None: @@ -116,12 +117,12 @@ def async_setup(hass, config): None, platform.get_engine, hass, p_config) if provider is None: - _LOGGER.error('Error setting up platform %s', p_type) + _LOGGER.error("Error setting up platform %s", p_type) return tts.async_register_engine(p_type, provider, p_config) except Exception: # pylint: disable=broad-except - _LOGGER.exception('Error setting up platform %s', p_type) + _LOGGER.exception("Error setting up platform %s", p_type) return @asyncio.coroutine @@ -209,8 +210,7 @@ class SpeechManager(object): self.cache_dir = yield from self.hass.loop.run_in_executor( None, init_tts_cache_dir, cache_dir) except OSError as err: - raise HomeAssistantError( - "Can't init cache dir {}".format(err)) + raise HomeAssistantError("Can't init cache dir {}".format(err)) def get_cache_files(): """Return a dict of given engine files.""" @@ -231,8 +231,7 @@ class SpeechManager(object): cache_files = yield from self.hass.loop.run_in_executor( None, get_cache_files) except OSError as err: - raise HomeAssistantError( - "Can't read cache dir {}".format(err)) + raise HomeAssistantError("Can't read cache dir {}".format(err)) if cache_files: self.file_cache.update(cache_files) @@ -273,14 +272,14 @@ class SpeechManager(object): msg_hash = hashlib.sha1(bytes(message, 'utf-8')).hexdigest() use_cache = cache if cache is not None else self.use_cache - # languages + # Languages language = language or provider.default_language if language is None or \ language not in provider.supported_languages: raise HomeAssistantError("Not supported language {0}".format( language)) - # options + # Options if provider.default_options and options: options = provider.default_options.copy().update(options) options = options or provider.default_options @@ -297,14 +296,14 @@ class SpeechManager(object): key = KEY_PATTERN.format( msg_hash, language, options_key, engine).lower() - # is speech allready in memory + # Is speech already in memory if key in self.mem_cache: filename = self.mem_cache[key][MEM_CACHE_FILENAME] - # is file store in file cache + # Is file store in file cache elif use_cache and key in self.file_cache: filename = self.file_cache[key] self.hass.async_add_job(self.async_file_to_mem(key)) - # load speech from provider into memory + # Load speech from provider into memory else: filename = yield from self.async_get_tts_audio( engine, key, message, use_cache, language, options) @@ -327,13 +326,13 @@ class SpeechManager(object): raise HomeAssistantError( "No TTS from {} for '{}'".format(engine, message)) - # create file infos + # Create file infos filename = ("{}.{}".format(key, extension)).lower() data = self.write_tags( filename, data, provider, message, language, options) - # save to memory + # Save to memory self._async_store_to_memcache(key, filename, data) if cache: diff --git a/requirements_all.txt b/requirements_all.txt index 41df2f8221e..4c48b4f6a8d 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -392,7 +392,7 @@ mficlient==0.3.0 miflora==0.1.16 # homeassistant.components.tts -mutagen==1.36.2 +mutagen==1.37.0 # homeassistant.components.sensor.usps myusps==1.0.5 From e9eb7edda6bb09bef5656f6328b86c79c894e56a Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sun, 23 Apr 2017 09:25:11 +0200 Subject: [PATCH 021/169] Upgrade speedtest-cli to 1.0.5 (#7215) --- homeassistant/components/sensor/speedtest.py | 2 +- requirements_all.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/sensor/speedtest.py b/homeassistant/components/sensor/speedtest.py index 5035e2464b3..3a8cfd24ba5 100644 --- a/homeassistant/components/sensor/speedtest.py +++ b/homeassistant/components/sensor/speedtest.py @@ -20,7 +20,7 @@ from homeassistant.helpers.entity import Entity from homeassistant.helpers.event import track_time_change from homeassistant.helpers.restore_state import async_get_last_state -REQUIREMENTS = ['speedtest-cli==1.0.4'] +REQUIREMENTS = ['speedtest-cli==1.0.5'] _LOGGER = logging.getLogger(__name__) _SPEEDTEST_REGEX = re.compile(r'Ping:\s(\d+\.\d+)\sms[\r\n]+' diff --git a/requirements_all.txt b/requirements_all.txt index 4c48b4f6a8d..f8b2f40ed74 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -739,7 +739,7 @@ snapcast==1.2.2 somecomfort==0.4.1 # homeassistant.components.sensor.speedtest -speedtest-cli==1.0.4 +speedtest-cli==1.0.5 # homeassistant.components.recorder # homeassistant.scripts.db_migrator From ec5e9fcd0d7edac22895eff4aeff9b7508b1962e Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sun, 23 Apr 2017 09:25:34 +0200 Subject: [PATCH 022/169] Upgrade paho-mqtt to 1.2.3 (#7214) --- homeassistant/components/mqtt/__init__.py | 2 +- requirements_all.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/mqtt/__init__.py b/homeassistant/components/mqtt/__init__.py index 2b6774939da..458c5952a69 100644 --- a/homeassistant/components/mqtt/__init__.py +++ b/homeassistant/components/mqtt/__init__.py @@ -28,7 +28,7 @@ from homeassistant.const import ( CONF_PASSWORD, CONF_PORT, CONF_PROTOCOL, CONF_PAYLOAD) from homeassistant.components.mqtt.server import HBMQTT_CONFIG_SCHEMA -REQUIREMENTS = ['paho-mqtt==1.2.2'] +REQUIREMENTS = ['paho-mqtt==1.2.3'] _LOGGER = logging.getLogger(__name__) diff --git a/requirements_all.txt b/requirements_all.txt index f8b2f40ed74..1a8f56d67a3 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -419,7 +419,7 @@ openhomedevice==0.2.1 orvibo==1.1.1 # homeassistant.components.mqtt -paho-mqtt==1.2.2 +paho-mqtt==1.2.3 # homeassistant.components.media_player.panasonic_viera panasonic_viera==0.2 From 209da6f338f2487be73cb5c42f94507091b5ad4f Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sun, 23 Apr 2017 09:25:58 +0200 Subject: [PATCH 023/169] Upgrade aiohttp_cors to 0.5.3 (#7213) --- homeassistant/components/http/__init__.py | 2 +- requirements_all.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/http/__init__.py b/homeassistant/components/http/__init__.py index ee107ec5cfa..536517604fc 100644 --- a/homeassistant/components/http/__init__.py +++ b/homeassistant/components/http/__init__.py @@ -34,7 +34,7 @@ from .static import ( staticresource_middleware, CachingFileResponse, CachingStaticResource) from .util import get_real_ip -REQUIREMENTS = ['aiohttp_cors==0.5.2'] +REQUIREMENTS = ['aiohttp_cors==0.5.3'] DOMAIN = 'http' diff --git a/requirements_all.txt b/requirements_all.txt index 1a8f56d67a3..b4f80461319 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -45,7 +45,7 @@ aiodns==1.1.1 # homeassistant.components.emulated_hue # homeassistant.components.http -aiohttp_cors==0.5.2 +aiohttp_cors==0.5.3 # homeassistant.components.light.lifx aiolifx==0.4.4 From fa4a912a86049b93f4b4ab0e740659b13029d9dc Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sun, 23 Apr 2017 13:54:39 +0200 Subject: [PATCH 024/169] Use consts and string formatting (#7243) --- homeassistant/components/notify/instapush.py | 29 ++++++++++++-------- 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/homeassistant/components/notify/instapush.py b/homeassistant/components/notify/instapush.py index 1af08420726..1058293b3b5 100644 --- a/homeassistant/components/notify/instapush.py +++ b/homeassistant/components/notify/instapush.py @@ -13,7 +13,8 @@ import voluptuous as vol import homeassistant.helpers.config_validation as cv from homeassistant.components.notify import ( ATTR_TITLE, ATTR_TITLE_DEFAULT, PLATFORM_SCHEMA, BaseNotificationService) -from homeassistant.const import CONF_API_KEY +from homeassistant.const import ( + CONF_API_KEY, HTTP_HEADER_CONTENT_TYPE, CONTENT_TYPE_JSON) _LOGGER = logging.getLogger(__name__) _RESOURCE = 'https://api.instapush.im/v1/' @@ -24,6 +25,9 @@ CONF_TRACKER = 'tracker' DEFAULT_TIMEOUT = 10 +HTTP_HEADER_APPID = 'x-instapush-appid' +HTTP_HEADER_APPSECRET = 'x-instapush-appsecret' + PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ vol.Required(CONF_API_KEY): cv.string, vol.Required(CONF_APP_SECRET): cv.string, @@ -34,25 +38,25 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ def get_service(hass, config, discovery_info=None): """Get the Instapush notification service.""" - headers = {'x-instapush-appid': config[CONF_API_KEY], - 'x-instapush-appsecret': config[CONF_APP_SECRET]} + headers = { + HTTP_HEADER_APPID: config[CONF_API_KEY], + HTTP_HEADER_APPSECRET: config[CONF_APP_SECRET], + } try: response = requests.get( '{}{}'.format(_RESOURCE, 'events/list'), headers=headers, timeout=DEFAULT_TIMEOUT).json() except ValueError: - _LOGGER.error('Unexpected answer from Instapush API.') + _LOGGER.error('Unexpected answer from Instapush API') return None if 'error' in response: _LOGGER.error(response['msg']) return None - if len([app for app in response - if app['title'] == config[CONF_EVENT]]) == 0: - _LOGGER.error("No app match your given value. " - "Please create an app at https://instapush.im") + if not [app for app in response if app['title'] == config[CONF_EVENT]]: + _LOGGER.error("No app match your given value") return None return InstapushNotificationService( @@ -70,16 +74,17 @@ class InstapushNotificationService(BaseNotificationService): self._event = event self._tracker = tracker self._headers = { - 'x-instapush-appid': self._api_key, - 'x-instapush-appsecret': self._app_secret, - 'Content-Type': 'application/json'} + HTTP_HEADER_APPID: self._api_key, + HTTP_HEADER_APPSECRET: self._app_secret, + HTTP_HEADER_CONTENT_TYPE: CONTENT_TYPE_JSON, + } def send_message(self, message="", **kwargs): """Send a message to a user.""" title = kwargs.get(ATTR_TITLE, ATTR_TITLE_DEFAULT) data = { 'event': self._event, - 'trackers': {self._tracker: title + ' : ' + message} + 'trackers': {self._tracker: '{} : {}'.format(title, message)} } response = requests.post( From 4cd024d91ec432a65e951a2bcecc4e085585a8cb Mon Sep 17 00:00:00 2001 From: Oliver Date: Sun, 23 Apr 2017 21:00:00 +0200 Subject: [PATCH 025/169] Pushed to version 0.4.0 of denonavr which also includes experimental support for Marantz receivers (#7250) --- homeassistant/components/media_player/denonavr.py | 2 +- requirements_all.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/media_player/denonavr.py b/homeassistant/components/media_player/denonavr.py index 5e91a5418e2..0b54bbe5d5a 100644 --- a/homeassistant/components/media_player/denonavr.py +++ b/homeassistant/components/media_player/denonavr.py @@ -19,7 +19,7 @@ from homeassistant.const import ( CONF_NAME, STATE_ON) import homeassistant.helpers.config_validation as cv -REQUIREMENTS = ['denonavr==0.3.1'] +REQUIREMENTS = ['denonavr==0.4.0'] _LOGGER = logging.getLogger(__name__) diff --git a/requirements_all.txt b/requirements_all.txt index b4f80461319..ddea058959d 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -126,7 +126,7 @@ datapoint==0.4.3 # decora==0.4 # homeassistant.components.media_player.denonavr -denonavr==0.3.1 +denonavr==0.4.0 # homeassistant.components.media_player.directv directpy==0.1 From 48eeb551981055aa5105188ba71a7756546a18b6 Mon Sep 17 00:00:00 2001 From: clayton craft Date: Sun, 23 Apr 2017 19:59:26 -0700 Subject: [PATCH 026/169] Add notice regarding submission of analytics (#7263) --- homeassistant/config.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/homeassistant/config.py b/homeassistant/config.py index 1508493a6d1..6e349ea486a 100644 --- a/homeassistant/config.py +++ b/homeassistant/config.py @@ -68,6 +68,10 @@ http: # base_url: example.duckdns.org:8123 # Checks for available updates +# Note: This component will send some information about your system to +# the developers to assist with development of Home Assistant. +# For more information, please see: +# https://home-assistant.io/blog/2016/10/25/explaining-the-updater/ updater: # Discover some devices automatically From 15b2473224e71db0af6055bcb3e00f77066040a4 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Mon, 24 Apr 2017 05:16:52 +0200 Subject: [PATCH 027/169] Iterating the dictionary directly (#7251) --- homeassistant/components/lock/verisure.py | 13 ++++++------- homeassistant/components/media_player/lg_netcast.py | 6 +++--- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/homeassistant/components/lock/verisure.py b/homeassistant/components/lock/verisure.py index 7e73ceb680e..e4fa2104da6 100644 --- a/homeassistant/components/lock/verisure.py +++ b/homeassistant/components/lock/verisure.py @@ -16,13 +16,13 @@ _LOGGER = logging.getLogger(__name__) def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the Verisure platform.""" + """Set up the Verisure platform.""" locks = [] if int(hub.config.get(CONF_LOCKS, 1)): hub.update_locks() locks.extend([ VerisureDoorlock(device_id) - for device_id in hub.lock_status.keys() + for device_id in hub.lock_status ]) add_devices(locks) @@ -31,7 +31,7 @@ class VerisureDoorlock(LockDevice): """Representation of a Verisure doorlock.""" def __init__(self, device_id): - """Initialize the lock.""" + """Initialize the Verisure lock.""" self._id = device_id self._state = STATE_UNKNOWN self._digits = hub.config.get(CONF_CODE_DIGITS) @@ -72,8 +72,7 @@ class VerisureDoorlock(LockDevice): self._state = STATE_LOCKED elif hub.lock_status[self._id].status != 'pending': _LOGGER.error( - 'Unknown lock state %s', - hub.lock_status[self._id].status) + "Unknown lock state %s", hub.lock_status[self._id].status) self._changed_by = hub.lock_status[self._id].name @property @@ -84,13 +83,13 @@ class VerisureDoorlock(LockDevice): def unlock(self, **kwargs): """Send unlock command.""" hub.my_pages.lock.set(kwargs[ATTR_CODE], self._id, 'UNLOCKED') - _LOGGER.info('verisure doorlock unlocking') + _LOGGER.debug("Verisure doorlock unlocking") hub.my_pages.lock.wait_while_pending() self.update() def lock(self, **kwargs): """Send lock command.""" hub.my_pages.lock.set(kwargs[ATTR_CODE], self._id, 'LOCKED') - _LOGGER.info('verisure doorlock locking') + _LOGGER.debug("Verisure doorlock locking") hub.my_pages.lock.wait_while_pending() self.update() diff --git a/homeassistant/components/media_player/lg_netcast.py b/homeassistant/components/media_player/lg_netcast.py index 00e405c17b2..8afdf89a2e4 100644 --- a/homeassistant/components/media_player/lg_netcast.py +++ b/homeassistant/components/media_player/lg_netcast.py @@ -47,8 +47,8 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ def setup_platform(hass, config, add_devices, discovery_info=None): """Setup the LG TV platform.""" from pylgnetcast import LgNetCastClient - client = LgNetCastClient(config.get(CONF_HOST), - config.get(CONF_ACCESS_TOKEN)) + client = LgNetCastClient( + config.get(CONF_HOST), config.get(CONF_ACCESS_TOKEN)) add_devices([LgTVDevice(client, config[CONF_NAME])]) @@ -110,7 +110,7 @@ class LgTVDevice(MediaPlayerDevice): self._sources = dict(zip(channel_names, channel_list)) # sort source names by the major channel number source_tuples = [(k, self._sources[k].find('major').text) - for k in self._sources.keys()] + for k in self._sources] sorted_sources = sorted( source_tuples, key=lambda channel: int(channel[1])) self._source_names = [n for n, k in sorted_sources] From cfc023e12892df71a6b6e458528b4516521f4db2 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Mon, 24 Apr 2017 05:41:09 +0200 Subject: [PATCH 028/169] Don't use len(SEQUENCE) as condition value (#7249) * Don't use len(SEQUENCE) as condition value * Update volvooncall.py --- .../components/binary_sensor/maxcube.py | 2 +- .../components/binary_sensor/volvooncall.py | 2 +- homeassistant/components/climate/maxcube.py | 2 +- homeassistant/components/climate/tado.py | 2 +- .../components/device_tracker/__init__.py | 5 +- .../components/device_tracker/tado.py | 8 +- homeassistant/components/downloader.py | 6 +- homeassistant/components/emoncms_history.py | 18 ++- homeassistant/components/feedreader.py | 59 +++++----- homeassistant/components/homematic.py | 55 +++++---- .../microsoft_face_identify.py | 6 +- homeassistant/components/influxdb.py | 4 +- .../components/light/insteon_local.py | 2 +- .../components/media_player/braviatv.py | 14 +-- homeassistant/components/media_player/demo.py | 4 +- .../components/media_player/gpmdp.py | 4 +- .../components/media_player/itunes.py | 2 +- homeassistant/components/media_player/kodi.py | 20 ++-- homeassistant/components/media_player/plex.py | 108 +++++++----------- homeassistant/components/notify/apns.py | 37 +++--- homeassistant/components/pilight.py | 16 ++- homeassistant/components/qwikswitch.py | 4 +- homeassistant/components/scsgate.py | 2 +- homeassistant/components/sensor/broadlink.py | 12 +- .../components/sensor/dublin_bus_transport.py | 21 ++-- .../sensor/eddystone_temperature.py | 41 +++---- .../components/sensor/imap_email_content.py | 61 ++++------ homeassistant/components/sensor/influxdb.py | 14 +-- homeassistant/components/sensor/isy994.py | 16 +-- homeassistant/components/sensor/miflora.py | 6 +- homeassistant/components/sensor/rfxtrx.py | 9 +- homeassistant/components/sensor/tado.py | 40 ++++--- homeassistant/components/sensor/xbox_live.py | 4 +- .../components/switch/insteon_local.py | 8 +- homeassistant/components/switch/neato.py | 19 +-- homeassistant/components/switch/netio.py | 6 +- homeassistant/components/tellstick.py | 17 ++- homeassistant/components/tts/__init__.py | 2 +- homeassistant/core.py | 2 +- homeassistant/helpers/config_validation.py | 2 +- homeassistant/helpers/template.py | 2 +- homeassistant/loader.py | 6 +- homeassistant/scripts/check_config.py | 4 +- 43 files changed, 319 insertions(+), 355 deletions(-) diff --git a/homeassistant/components/binary_sensor/maxcube.py b/homeassistant/components/binary_sensor/maxcube.py index 276396e3ffe..13610939a5d 100644 --- a/homeassistant/components/binary_sensor/maxcube.py +++ b/homeassistant/components/binary_sensor/maxcube.py @@ -26,7 +26,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None): if cube.is_windowshutter(device): devices.append(MaxCubeShutter(hass, name, device.rf_address)) - if len(devices): + if devices: add_devices(devices) diff --git a/homeassistant/components/binary_sensor/volvooncall.py b/homeassistant/components/binary_sensor/volvooncall.py index e72e17a9bfe..f97c670270d 100644 --- a/homeassistant/components/binary_sensor/volvooncall.py +++ b/homeassistant/components/binary_sensor/volvooncall.py @@ -28,7 +28,7 @@ class VolvoSensor(VolvoEntity, BinarySensorDevice): """Return True if the binary sensor is on.""" val = getattr(self.vehicle, self._attribute) if self._attribute == 'bulb_failures': - return len(val) > 0 + return bool(val) elif self._attribute in ['doors', 'windows']: return any([val[key] for key in val if 'Open' in key]) else: diff --git a/homeassistant/components/climate/maxcube.py b/homeassistant/components/climate/maxcube.py index 8eb5a9c13b7..210d159a250 100644 --- a/homeassistant/components/climate/maxcube.py +++ b/homeassistant/components/climate/maxcube.py @@ -34,7 +34,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None): # Add device to HASS devices.append(MaxCubeClimate(hass, name, device.rf_address)) - if len(devices): + if devices: add_devices(devices) diff --git a/homeassistant/components/climate/tado.py b/homeassistant/components/climate/tado.py index 734b13dc7e7..600ea41e603 100644 --- a/homeassistant/components/climate/tado.py +++ b/homeassistant/components/climate/tado.py @@ -48,7 +48,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None): climate_devices.append(create_climate_device( tado, hass, zone, zone['name'], zone['id'])) - if len(climate_devices) > 0: + if climate_devices: add_devices(climate_devices, True) return True else: diff --git a/homeassistant/components/device_tracker/__init__.py b/homeassistant/components/device_tracker/__init__.py index f2a538507a0..c654ab05266 100644 --- a/homeassistant/components/device_tracker/__init__.py +++ b/homeassistant/components/device_tracker/__init__.py @@ -37,6 +37,8 @@ from homeassistant.const import ( ATTR_GPS_ACCURACY, ATTR_LATITUDE, ATTR_LONGITUDE, DEVICE_DEFAULT_NAME, STATE_HOME, STATE_NOT_HOME, ATTR_ENTITY_ID) +_LOGGER = logging.getLogger(__name__) + DOMAIN = 'device_tracker' DEPENDENCIES = ['zone'] @@ -86,7 +88,6 @@ PLATFORM_SCHEMA = cv.PLATFORM_SCHEMA.extend({ DISCOVERY_PLATFORMS = { SERVICE_NETGEAR: 'netgear', } -_LOGGER = logging.getLogger(__name__) def is_on(hass: HomeAssistantType, entity_id: str=None): @@ -125,7 +126,7 @@ def async_setup(hass: HomeAssistantType, config: ConfigType): async_log_exception(ex, DOMAIN, config, hass) return False else: - conf = conf[0] if len(conf) > 0 else {} + conf = conf[0] if conf else {} consider_home = conf.get(CONF_CONSIDER_HOME, DEFAULT_CONSIDER_HOME) track_new = conf.get(CONF_TRACK_NEW, DEFAULT_TRACK_NEW) diff --git a/homeassistant/components/device_tracker/tado.py b/homeassistant/components/device_tracker/tado.py index 3c21037d028..63ed3e8819e 100644 --- a/homeassistant/components/device_tracker/tado.py +++ b/homeassistant/components/device_tracker/tado.py @@ -11,21 +11,19 @@ from collections import namedtuple import asyncio import aiohttp import async_timeout - import voluptuous as vol -import homeassistant.helpers.config_validation as cv +import homeassistant.helpers.config_validation as cv from homeassistant.const import CONF_USERNAME, CONF_PASSWORD from homeassistant.util import Throttle from homeassistant.components.device_tracker import ( DOMAIN, PLATFORM_SCHEMA, DeviceScanner) from homeassistant.helpers.aiohttp_client import async_create_clientsession -# Configuration constant specific for tado -CONF_HOME_ID = 'home_id' - _LOGGER = logging.getLogger(__name__) +CONF_HOME_ID = 'home_id' + MIN_TIME_BETWEEN_SCANS = timedelta(seconds=30) PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ diff --git a/homeassistant/components/downloader.py b/homeassistant/components/downloader.py index 4330ad5be2f..2e26b306673 100644 --- a/homeassistant/components/downloader.py +++ b/homeassistant/components/downloader.py @@ -48,7 +48,7 @@ def setup(hass, config): if not os.path.isdir(download_path): _LOGGER.error( - "Download path %s does not exist. File Downloader not active.", + "Download path %s does not exist. File Downloader not active", download_path) return False @@ -76,7 +76,7 @@ def setup(hass, config): match = re.findall(r"filename=(\S+)", req.headers['content-disposition']) - if len(match) > 0: + if match: filename = match[0].strip("'\" ") if not filename: @@ -84,7 +84,7 @@ def setup(hass, config): url).strip() if not filename: - filename = "ha_download" + filename = 'ha_download' # Remove stuff to ruin paths filename = sanitize_filename(filename) diff --git a/homeassistant/components/emoncms_history.py b/homeassistant/components/emoncms_history.py index b2bc3967bc8..34d9fd0f458 100644 --- a/homeassistant/components/emoncms_history.py +++ b/homeassistant/components/emoncms_history.py @@ -7,13 +7,13 @@ https://home-assistant.io/components/emoncms_history/ import logging from datetime import timedelta -import voluptuous as vol import requests +import voluptuous as vol +import homeassistant.helpers.config_validation as cv from homeassistant.const import ( CONF_API_KEY, CONF_WHITELIST, CONF_URL, STATE_UNKNOWN, STATE_UNAVAILABLE, CONF_SCAN_INTERVAL) -import homeassistant.helpers.config_validation as cv from homeassistant.helpers import state as state_helper from homeassistant.helpers.event import track_point_in_time from homeassistant.util import dt as dt_util @@ -50,14 +50,13 @@ def setup(hass, config): timeout=5) except requests.exceptions.RequestException: - _LOGGER.error("Error saving data '%s' to '%s'", - payload, fullurl) + _LOGGER.error("Error saving data '%s' to '%s'", payload, fullurl) else: if req.status_code != 200: - _LOGGER.error("Error saving data '%s' to '%s'" + - "(http status code = %d)", payload, - fullurl, req.status_code) + _LOGGER.error( + "Error saving data %s to %s (http status code = %d)", + payload, fullurl, req.status_code) def update_emoncms(time): """Send whitelisted entities states reguarly to Emoncms.""" @@ -71,12 +70,11 @@ def setup(hass, config): continue try: - payload_dict[entity_id] = state_helper.state_as_number( - state) + payload_dict[entity_id] = state_helper.state_as_number(state) except ValueError: continue - if len(payload_dict) > 0: + if payload_dict: payload = "{%s}" % ",".join("{}:{}".format(key, val) for key, val in payload_dict.items()) diff --git a/homeassistant/components/feedreader.py b/homeassistant/components/feedreader.py index a563b51402e..3d73901b4d8 100644 --- a/homeassistant/components/feedreader.py +++ b/homeassistant/components/feedreader.py @@ -36,7 +36,7 @@ CONFIG_SCHEMA = vol.Schema({ def setup(hass, config): - """Setup the feedreader component.""" + """Set up the Feedreader component.""" urls = config.get(DOMAIN)[CONF_URLS] data_file = hass.config.path("{}.pickle".format(DOMAIN)) storage = StoredData(data_file) @@ -45,7 +45,7 @@ def setup(hass, config): class FeedManager(object): - """Abstraction over feedparser module.""" + """Abstraction over Feedparser module.""" def __init__(self, url, hass, storage): """Initialize the FeedManager object, poll every hour.""" @@ -56,46 +56,45 @@ class FeedManager(object): self._storage = storage self._last_entry_timestamp = None self._has_published_parsed = False - hass.bus.listen_once(EVENT_HOMEASSISTANT_START, - lambda _: self._update()) - track_utc_time_change(hass, lambda now: self._update(), - minute=0, second=0) + hass.bus.listen_once( + EVENT_HOMEASSISTANT_START, lambda _: self._update()) + track_utc_time_change( + hass, lambda now: self._update(), minute=0, second=0) def _log_no_entries(self): """Send no entries log at debug level.""" - _LOGGER.debug('No new entries to be published in feed "%s"', self._url) + _LOGGER.debug("No new entries to be published in feed %s", self._url) def _update(self): """Update the feed and publish new entries to the event bus.""" import feedparser - _LOGGER.info('Fetching new data from feed "%s"', self._url) + _LOGGER.info("Fetching new data from feed %s", self._url) self._feed = feedparser.parse(self._url, etag=None if not self._feed else self._feed.get('etag'), modified=None if not self._feed else self._feed.get('modified')) if not self._feed: - _LOGGER.error('Error fetching feed data from "%s"', self._url) + _LOGGER.error("Error fetching feed data from %s", self._url) else: if self._feed.bozo != 0: - _LOGGER.error('Error parsing feed "%s"', self._url) + _LOGGER.error("Error parsing feed %s", self._url) # Using etag and modified, if there's no new data available, # the entries list will be empty - elif len(self._feed.entries) > 0: - _LOGGER.debug('%s entri(es) available in feed "%s"', - len(self._feed.entries), - self._url) + elif self._feed.entries: + _LOGGER.debug("%s entri(es) available in feed %s", + len(self._feed.entries), self._url) if len(self._feed.entries) > MAX_ENTRIES: - _LOGGER.debug('Processing only the first %s entries ' - 'in feed "%s"', MAX_ENTRIES, self._url) + _LOGGER.debug("Processing only the first %s entries " + "in feed %s", MAX_ENTRIES, self._url) self._feed.entries = self._feed.entries[0:MAX_ENTRIES] self._publish_new_entries() if self._has_published_parsed: - self._storage.put_timestamp(self._url, - self._last_entry_timestamp) + self._storage.put_timestamp( + self._url, self._last_entry_timestamp) else: self._log_no_entries() - _LOGGER.info('Fetch from feed "%s" completed', self._url) + _LOGGER.info("Fetch from feed %s completed", self._url) def _update_and_fire_entry(self, entry): """Update last_entry_timestamp and fire entry.""" @@ -103,12 +102,12 @@ class FeedManager(object): # it to publish only new available entries since the last run if 'published_parsed' in entry.keys(): self._has_published_parsed = True - self._last_entry_timestamp = max(entry.published_parsed, - self._last_entry_timestamp) + self._last_entry_timestamp = max( + entry.published_parsed, self._last_entry_timestamp) else: self._has_published_parsed = False - _LOGGER.debug('No `published_parsed` info available ' - 'for entry "%s"', entry.title) + _LOGGER.debug("No published_parsed info available for entry %s", + entry.title) entry.update({'feed_url': self._url}) self._hass.bus.fire(EVENT_FEEDREADER, entry) @@ -129,7 +128,7 @@ class FeedManager(object): self._update_and_fire_entry(entry) new_entries = True else: - _LOGGER.debug('Entry "%s" already processed', entry.title) + _LOGGER.debug("Entry %s already processed", entry.title) if not new_entries: self._log_no_entries() self._firstrun = False @@ -150,13 +149,13 @@ class StoredData(object): """Fetch data stored into pickle file.""" if self._cache_outdated and exists(self._data_file): try: - _LOGGER.debug('Fetching data from file %s', self._data_file) + _LOGGER.debug("Fetching data from file %s", self._data_file) with self._lock, open(self._data_file, 'rb') as myfile: self._data = pickle.load(myfile) or {} self._cache_outdated = False # pylint: disable=bare-except except: - _LOGGER.error('Error loading data from pickled file %s', + _LOGGER.error("Error loading data from pickled file %s", self._data_file) def get_timestamp(self, url): @@ -165,16 +164,16 @@ class StoredData(object): return self._data.get(url) def put_timestamp(self, url, timestamp): - """Update timestamp for given url.""" + """Update timestamp for given URL.""" self._fetch_data() with self._lock, open(self._data_file, 'wb') as myfile: self._data.update({url: timestamp}) - _LOGGER.debug('Overwriting feed "%s" timestamp in storage file %s', + _LOGGER.debug("Overwriting feed %s timestamp in storage file %s", url, self._data_file) try: pickle.dump(self._data, myfile) # pylint: disable=bare-except except: - _LOGGER.error('Error saving pickled data to %s', - self._data_file) + _LOGGER.error( + "Error saving pickled data to %s", self._data_file) self._cache_outdated = True diff --git a/homeassistant/components/homematic.py b/homeassistant/components/homematic.py index e40cab05b29..aa9a704f9d4 100644 --- a/homeassistant/components/homematic.py +++ b/homeassistant/components/homematic.py @@ -21,9 +21,10 @@ from homeassistant.helpers.entity import Entity from homeassistant.helpers.event import track_time_interval from homeassistant.config import load_yaml_config_file -DOMAIN = 'homematic' REQUIREMENTS = ["pyhomematic==0.1.24"] +DOMAIN = 'homematic' + SCAN_INTERVAL_HUB = timedelta(seconds=300) SCAN_INTERVAL_VARIABLES = timedelta(seconds=30) @@ -124,20 +125,20 @@ CONF_LOCAL_IP = 'local_ip' CONF_LOCAL_PORT = 'local_port' CONF_IP = 'ip' CONF_PORT = 'port' -CONF_CALLBACK_IP = "callback_ip" -CONF_CALLBACK_PORT = "callback_port" +CONF_CALLBACK_IP = 'callback_ip' +CONF_CALLBACK_PORT = 'callback_port' CONF_RESOLVENAMES = 'resolvenames' CONF_VARIABLES = 'variables' CONF_DEVICES = 'devices' CONF_DELAY = 'delay' CONF_PRIMARY = 'primary' -DEFAULT_LOCAL_IP = "0.0.0.0" +DEFAULT_LOCAL_IP = '0.0.0.0' DEFAULT_LOCAL_PORT = 0 DEFAULT_RESOLVENAMES = False DEFAULT_PORT = 2001 -DEFAULT_USERNAME = "Admin" -DEFAULT_PASSWORD = "" +DEFAULT_USERNAME = 'Admin' +DEFAULT_PASSWORD = '' DEFAULT_VARIABLES = False DEFAULT_DEVICES = True DEFAULT_DELAY = 0.5 @@ -145,7 +146,7 @@ DEFAULT_PRIMARY = False DEVICE_SCHEMA = vol.Schema({ - vol.Required(CONF_PLATFORM): "homematic", + vol.Required(CONF_PLATFORM): 'homematic', vol.Required(ATTR_NAME): cv.string, vol.Required(ATTR_ADDRESS): cv.string, vol.Required(ATTR_PROXY): cv.string, @@ -242,14 +243,14 @@ def reconnect(hass): # pylint: disable=unused-argument def setup(hass, config): - """Setup the Homematic component.""" + """Set up the Homematic component.""" from pyhomematic import HMConnection hass.data[DATA_DELAY] = config[DOMAIN].get(CONF_DELAY) hass.data[DATA_DEVINIT] = {} hass.data[DATA_STORE] = [] - # create hosts list for pyhomematic + # Create hosts list for pyhomematic remotes = {} hosts = {} for rname, rconfig in config[DOMAIN][CONF_HOSTS].items(): @@ -278,7 +279,7 @@ def setup(hass, config): localport=config[DOMAIN].get(CONF_LOCAL_PORT), remotes=remotes, systemcallback=bound_system_callback, - interface_id="homeassistant" + interface_id='homeassistant' ) # Start server thread, connect to peer, initialize to receive events @@ -288,13 +289,13 @@ def setup(hass, config): hass.bus.listen_once( EVENT_HOMEASSISTANT_STOP, hass.data[DATA_HOMEMATIC].stop) - # init homematic hubs + # Init homematic hubs entity_hubs = [] for _, hub_data in hosts.items(): entity_hubs.append(HMHub( hass, hub_data[CONF_NAME], hub_data[CONF_VARIABLES])) - # regeister homematic services + # Regeister homematic services descriptions = load_yaml_config_file( os.path.join(os.path.dirname(__file__), 'services.yaml')) @@ -304,24 +305,24 @@ def setup(hass, config): channel = service.data.get(ATTR_CHANNEL) param = service.data.get(ATTR_PARAM) - # device not found + # Device not found hmdevice = _device_from_servicecall(hass, service) if hmdevice is None: _LOGGER.error("%s not found for service virtualkey!", address) return - # if param exists for this device + # If param exists for this device if param not in hmdevice.ACTIONNODE: _LOGGER.error("%s not datapoint in hm device %s", param, address) return - # channel exists? + # Channel exists? if channel not in hmdevice.ACTIONNODE[param]: _LOGGER.error("%i is not a channel in hm device %s", channel, address) return - # call key + # Call key hmdevice.actionNodeData(param, True, channel) hass.services.register( @@ -369,13 +370,13 @@ def setup(hass, config): param = service.data.get(ATTR_PARAM) value = service.data.get(ATTR_VALUE) - # device not found + # Device not found hmdevice = _device_from_servicecall(hass, service) if hmdevice is None: _LOGGER.error("%s not found!", address) return - # call key + # Call key hmdevice.setValue(param, value, channel) hass.services.register( @@ -394,18 +395,16 @@ def _system_callback_handler(hass, config, src, *args): (interface_id, dev_descriptions) = args proxy = interface_id.split('-')[-1] - # device support active? + # Device support active? if not hass.data[DATA_DEVINIT][proxy]: return - ## # Get list of all keys of the devices (ignoring channels) key_dict = {} for dev in dev_descriptions: key_dict[dev['ADDRESS'].split(':')[0]] = True - ## - # remove device they allready init by HA + # Remove device they allready init by HA tmp_devs = key_dict.copy() for dev in tmp_devs: if dev in hass.data[DATA_STORE]: @@ -419,11 +418,11 @@ def _system_callback_handler(hass, config, src, *args): for dev in key_dict: hmdevice = hass.data[DATA_HOMEMATIC].devices[proxy].get(dev) - # have events? - if len(hmdevice.EVENTNODE) > 0: + # Have events? + if hmdevice.EVENTNODE: _LOGGER.debug("Register Events from %s", dev) - hmdevice.setEventCallback(callback=bound_event_callback, - bequeath=True) + hmdevice.setEventCallback( + callback=bound_event_callback, bequeath=True) # If configuration allows autodetection of devices, # all devices not configured are added. @@ -559,7 +558,7 @@ def _hm_event_handler(hass, proxy, device, caller, attribute, value): })) return - _LOGGER.warning("Event is unknown and not forwarded to HA") + _LOGGER.warning("Event is unknown and not forwarded") def _device_from_servicecall(hass, service): @@ -727,7 +726,7 @@ class HMDevice(Entity): def link_homematic(self): """Connect to Homematic.""" - # device is already linked + # Device is already linked if self._connected: return True diff --git a/homeassistant/components/image_processing/microsoft_face_identify.py b/homeassistant/components/image_processing/microsoft_face_identify.py index ec4549dfe0c..273a00c294d 100644 --- a/homeassistant/components/image_processing/microsoft_face_identify.py +++ b/homeassistant/components/image_processing/microsoft_face_identify.py @@ -42,7 +42,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ @asyncio.coroutine def async_setup_platform(hass, config, async_add_devices, discovery_info=None): - """Set up the microsoft face identify platform.""" + """Set up the Microsoft face identify platform.""" api = hass.data[DATA_MICROSOFT_FACE] face_group = config[CONF_GROUP] confidence = config[CONF_CONFIDENCE] @@ -197,7 +197,7 @@ class MicrosoftFaceIdentifyEntity(ImageProcessingFaceEntity): {'faceIds': face_ids, 'personGroupId': self._face_group}) except HomeAssistantError as err: - _LOGGER.error("Can't process image on microsoft face: %s", err) + _LOGGER.error("Can't process image on Microsoft face: %s", err) return # parse data @@ -205,7 +205,7 @@ class MicrosoftFaceIdentifyEntity(ImageProcessingFaceEntity): total = 0 for face in detect: total += 1 - if len(face['candidates']) == 0: + if not face['candidates']: continue data = face['candidates'][0] diff --git a/homeassistant/components/influxdb.py b/homeassistant/components/influxdb.py index 4e44296bc0c..430c5cbe4c6 100644 --- a/homeassistant/components/influxdb.py +++ b/homeassistant/components/influxdb.py @@ -101,7 +101,7 @@ def setup(hass, config): return try: - if len(whitelist) > 0 and state.entity_id not in whitelist: + if whitelist and state.entity_id not in whitelist: return _state = float(state_helper.state_as_number(state)) @@ -154,7 +154,7 @@ def setup(hass, config): try: influx.write_points(json_body) except exceptions.InfluxDBClientError: - _LOGGER.exception('Error saving event "%s" to InfluxDB', json_body) + _LOGGER.exception("Error saving event %s to InfluxDB", json_body) hass.bus.listen(EVENT_STATE_CHANGED, influx_event_listener) diff --git a/homeassistant/components/light/insteon_local.py b/homeassistant/components/light/insteon_local.py index 27f297a82f0..e115235706c 100644 --- a/homeassistant/components/light/insteon_local.py +++ b/homeassistant/components/light/insteon_local.py @@ -33,7 +33,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None): insteonhub = hass.data['insteon_local'] conf_lights = config_from_file(hass.config.path(INSTEON_LOCAL_LIGHTS_CONF)) - if len(conf_lights): + if conf_lights: for device_id in conf_lights: setup_light(device_id, conf_lights[device_id], insteonhub, hass, add_devices) diff --git a/homeassistant/components/media_player/braviatv.py b/homeassistant/components/media_player/braviatv.py index fbfc207c59a..96c1e3726a8 100644 --- a/homeassistant/components/media_player/braviatv.py +++ b/homeassistant/components/media_player/braviatv.py @@ -97,16 +97,16 @@ def _config_from_file(filename, config=None): # pylint: disable=unused-argument def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the Sony Bravia TV platform.""" + """Set up the Sony Bravia TV platform.""" host = config.get(CONF_HOST) if host is None: - return # if no host configured, do not continue + return pin = None bravia_config = _config_from_file(hass.config.path(BRAVIA_CONFIG_FILE)) - while len(bravia_config): - # Setup a configured TV + while bravia_config: + # Set up a configured TV host_ip, host_config = bravia_config.popitem() if host_ip == host: pin = host_config['pin'] @@ -119,7 +119,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None): def setup_bravia(config, pin, hass, add_devices): - """Setup a Sony Bravia TV based on host parameter.""" + """Set up a Sony Bravia TV based on host parameter.""" host = config.get(CONF_HOST) name = config.get(CONF_NAME) @@ -236,7 +236,7 @@ class BraviaTVDevice(MediaPlayerDevice): self._state = STATE_ON playing_info = self._braviarc.get_playing_info() self._reset_playing_info() - if playing_info is None or len(playing_info) == 0: + if playing_info is None or not playing_info: self._channel_name = 'App' else: self._program_name = playing_info.get('programTitle') @@ -275,7 +275,7 @@ class BraviaTVDevice(MediaPlayerDevice): self._muted = volume_info.get('mute') def _refresh_channels(self): - if len(self._source_list) == 0: + if not self._source_list: self._content_mapping = self._braviarc. \ load_source_list() self._source_list = [] diff --git a/homeassistant/components/media_player/demo.py b/homeassistant/components/media_player/demo.py index aab75f702d4..90253895882 100644 --- a/homeassistant/components/media_player/demo.py +++ b/homeassistant/components/media_player/demo.py @@ -250,12 +250,12 @@ class DemoMusicPlayer(AbstractDemoPlayer): @property def media_title(self): """Return the title of current playing media.""" - return self.tracks[self._cur_track][1] if len(self.tracks) > 0 else "" + return self.tracks[self._cur_track][1] if self.tracks else "" @property def media_artist(self): """Return the artist of current playing media (Music track only).""" - return self.tracks[self._cur_track][0] if len(self.tracks) > 0 else "" + return self.tracks[self._cur_track][0] if self.tracks else "" @property def media_album_name(self): diff --git a/homeassistant/components/media_player/gpmdp.py b/homeassistant/components/media_player/gpmdp.py index c3283aca382..ca79d0a7f35 100644 --- a/homeassistant/components/media_player/gpmdp.py +++ b/homeassistant/components/media_player/gpmdp.py @@ -154,9 +154,9 @@ def _save_config(filename, config): def setup_platform(hass, config, add_devices_callback, discovery_info=None): - """Setup the GPMDP platform.""" + """Set up the GPMDP platform.""" codeconfig = _load_config(hass.config.path(GPMDP_CONFIG_FILE)) - if len(codeconfig): + if codeconfig: code = codeconfig.get('CODE') elif discovery_info is not None: if 'gpmdp' in _CONFIGURING: diff --git a/homeassistant/components/media_player/itunes.py b/homeassistant/components/media_player/itunes.py index 5d53518256e..ab7d89e9b2a 100644 --- a/homeassistant/components/media_player/itunes.py +++ b/homeassistant/components/media_player/itunes.py @@ -124,7 +124,7 @@ class Itunes(object): [playlist for playlist in playlists if (playlist_id_or_name in [playlist["name"], playlist["id"]])] - if len(found_playlists) > 0: + if found_playlists: playlist = found_playlists[0] path = '/playlists/' + playlist['id'] + '/play' return self._request('PUT', path) diff --git a/homeassistant/components/media_player/kodi.py b/homeassistant/components/media_player/kodi.py index e10886d6916..9993ed2cdc6 100644 --- a/homeassistant/components/media_player/kodi.py +++ b/homeassistant/components/media_player/kodi.py @@ -108,7 +108,7 @@ SERVICE_TO_METHOD = { @asyncio.coroutine def async_setup_platform(hass, config, async_add_devices, discovery_info=None): - """Setup the Kodi platform.""" + """Set up the Kodi platform.""" host = config.get(CONF_HOST) port = config.get(CONF_PORT) tcp_port = config.get(CONF_TCP_PORT) @@ -303,7 +303,7 @@ class KodiDevice(MediaPlayerDevice): if self._players is None: return STATE_OFF - if len(self._players) == 0: + if not self._players: return STATE_IDLE if self._properties['speed'] == 0 and not self._properties['live']: @@ -356,7 +356,7 @@ class KodiDevice(MediaPlayerDevice): ['volume', 'muted'] ) - if len(self._players) > 0: + if self._players: player_id = self._players[0]['playerid'] assert isinstance(player_id, int) @@ -475,7 +475,7 @@ class KodiDevice(MediaPlayerDevice): def media_artist(self): """Artist of current playing media, music track only.""" artists = self._item.get('artist', []) - if len(artists) > 0: + if artists: return artists[0] else: return None @@ -484,7 +484,7 @@ class KodiDevice(MediaPlayerDevice): def media_album_artist(self): """Album artist of current playing media, music track only.""" artists = self._item.get('albumartist', []) - if len(artists) > 0: + if artists: return artists[0] else: return None @@ -551,7 +551,7 @@ class KodiDevice(MediaPlayerDevice): """Helper method for play/pause/toggle.""" players = yield from self._get_players() - if players is not None and len(players) != 0: + if players is not None and players: yield from self.server.Player.PlayPause( players[0]['playerid'], state) @@ -585,7 +585,7 @@ class KodiDevice(MediaPlayerDevice): """Stop the media player.""" players = yield from self._get_players() - if len(players) != 0: + if players: yield from self.server.Player.Stop(players[0]['playerid']) @asyncio.coroutine @@ -593,9 +593,9 @@ class KodiDevice(MediaPlayerDevice): """Helper method used for previous/next track.""" players = yield from self._get_players() - if len(players) != 0: + if players: if direction == 'previous': - # first seek to position 0. Kodi goes to the beginning of the + # First seek to position 0. Kodi goes to the beginning of the # current track if the current track is not at the beginning. yield from self.server.Player.Seek(players[0]['playerid'], 0) @@ -637,7 +637,7 @@ class KodiDevice(MediaPlayerDevice): time['hours'] = int(position) - if len(players) != 0: + if players: yield from self.server.Player.Seek(players[0]['playerid'], time) @cmd diff --git a/homeassistant/components/media_player/plex.py b/homeassistant/components/media_player/plex.py index ee8ae4840b2..f601bf86944 100644 --- a/homeassistant/components/media_player/plex.py +++ b/homeassistant/components/media_player/plex.py @@ -12,34 +12,24 @@ from urllib.parse import urlparse import requests import voluptuous as vol + from homeassistant import util from homeassistant.components.media_player import ( - MEDIA_TYPE_MUSIC, - MEDIA_TYPE_TVSHOW, - MEDIA_TYPE_VIDEO, - PLATFORM_SCHEMA, - SUPPORT_NEXT_TRACK, - SUPPORT_PAUSE, - SUPPORT_PLAY, - SUPPORT_PREVIOUS_TRACK, - SUPPORT_STOP, - SUPPORT_TURN_OFF, - SUPPORT_VOLUME_MUTE, - SUPPORT_VOLUME_SET, - MediaPlayerDevice, -) + MEDIA_TYPE_MUSIC, MEDIA_TYPE_TVSHOW, MEDIA_TYPE_VIDEO, PLATFORM_SCHEMA, + SUPPORT_NEXT_TRACK, SUPPORT_PAUSE, SUPPORT_PLAY, SUPPORT_PREVIOUS_TRACK, + SUPPORT_STOP, SUPPORT_TURN_OFF, SUPPORT_VOLUME_MUTE, SUPPORT_VOLUME_SET, + MediaPlayerDevice) from homeassistant.const import ( - DEVICE_DEFAULT_NAME, - STATE_IDLE, - STATE_OFF, - STATE_PAUSED, - STATE_PLAYING, -) + DEVICE_DEFAULT_NAME, STATE_IDLE, STATE_OFF, STATE_PAUSED, STATE_PLAYING) from homeassistant.helpers import config_validation as cv from homeassistant.helpers.event import track_utc_time_change from homeassistant.loader import get_component REQUIREMENTS = ['plexapi==2.0.2'] + +_CONFIGURING = {} +_LOGGER = logging.getLogger(__name__) + MIN_TIME_BETWEEN_SCANS = timedelta(seconds=10) MIN_TIME_BETWEEN_FORCED_SCANS = timedelta(seconds=1) @@ -59,10 +49,6 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ cv.boolean, }) -# Map ip to request id for configuring -_CONFIGURING = {} -_LOGGER = logging.getLogger(__name__) - def config_from_file(filename, config=None): """Small configuration file management function.""" @@ -72,7 +58,7 @@ def config_from_file(filename, config=None): with open(filename, 'w') as fdesc: fdesc.write(json.dumps(config)) except IOError as error: - _LOGGER.error('Saving config file failed: %s', error) + _LOGGER.error("Saving config file failed: %s", error) return False return True else: @@ -82,7 +68,7 @@ def config_from_file(filename, config=None): with open(filename, 'r') as fdesc: return json.loads(fdesc.read()) except IOError as error: - _LOGGER.error('Reading config file failed: %s', error) + _LOGGER.error("Reading config file failed: %s", error) # This won't work yet return False else: @@ -94,7 +80,7 @@ def setup_platform(hass, config, add_devices_callback, discovery_info=None): # get config from plex.conf file_config = config_from_file(hass.config.path(PLEX_CONFIG_FILE)) - if len(file_config): + if file_config: # Setup a configured PlexServer host, token = file_config.popitem() token = token['token'] @@ -102,7 +88,7 @@ def setup_platform(hass, config, add_devices_callback, discovery_info=None): elif discovery_info is not None: # Parse discovery data host = discovery_info.get('host') - _LOGGER.info('Discovered PLEX server: %s', host) + _LOGGER.info("Discovered PLEX server: %s", host) if host in _CONFIGURING: return @@ -133,14 +119,14 @@ def setup_plexserver(host, token, hass, config, add_devices_callback): request_id = _CONFIGURING.pop(host) configurator = get_component('configurator') configurator.request_done(request_id) - _LOGGER.info('Discovery configuration done!') + _LOGGER.info("Discovery configuration done") # Save config if not config_from_file( hass.config.path(PLEX_CONFIG_FILE), {host: { 'token': token }}): - _LOGGER.error('failed to save config file') + _LOGGER.error("Failed to save configuration file") _LOGGER.info('Connected to: http://%s', host) @@ -158,7 +144,7 @@ def setup_plexserver(host, token, hass, config, add_devices_callback): _LOGGER.exception('Error listing plex devices') return except OSError: - _LOGGER.error('Could not connect to plex server at http://%s', + _LOGGER.error("Could not connect to plex server at http://%s", host) return @@ -204,7 +190,7 @@ def setup_plexserver(host, token, hass, config, add_devices_callback): try: sessions = plexserver.sessions() except plexapi.exceptions.BadRequest: - _LOGGER.exception('Error listing plex sessions') + _LOGGER.exception("Error listing plex sessions") return plex_sessions.clear() @@ -386,9 +372,8 @@ class PlexClient(MediaPlayerDevice): # media type if self._session_type == 'clip': - _LOGGER.debug('Clip content type detected, ' - 'compatibility may vary: %s', - self.entity_id) + _LOGGER.debug("Clip content type detected, compatibility may " + "vary: %s", self.entity_id) self._media_content_type = MEDIA_TYPE_TVSHOW elif self._session_type == 'episode': self._media_content_type = MEDIA_TYPE_TVSHOW @@ -447,9 +432,8 @@ class PlexClient(MediaPlayerDevice): self._session.originalTitle) # use album artist if track artist is missing if self._media_artist is None: - _LOGGER.debug( - 'Using album artist because track artist ' - 'was not found: %s', self.entity_id) + _LOGGER.debug("Using album artist because track artist was " + "not found: %s", self.entity_id) self._media_artist = self._media_album_artist else: self._media_album_name = None @@ -475,8 +459,8 @@ class PlexClient(MediaPlayerDevice): self._session.grandparentThumb) if thumb_url is None: - _LOGGER.debug('Using media art because media thumb ' - 'was not found: %s', self.entity_id) + _LOGGER.debug("Using media art because media thumb " + "was not found: %s", self.entity_id) thumb_url = self._get_thumbnail_url(self._session.art) self._media_image_url = thumb_url @@ -570,9 +554,8 @@ class PlexClient(MediaPlayerDevice): def media_content_type(self): """Content type of current playing media.""" if self._session_type == 'clip': - _LOGGER.debug('Clip content type detected, ' - 'compatibility may vary: %s', - self.entity_id) + _LOGGER.debug("Clip content type detected, " + "compatibility may vary: %s", self.entity_id) return MEDIA_TYPE_TVSHOW elif self._session_type == 'episode': return MEDIA_TYPE_TVSHOW @@ -657,8 +640,8 @@ class PlexClient(MediaPlayerDevice): # no mute support elif self.make.lower() == "shield android tv": _LOGGER.debug( - 'Shield Android TV client detected, disabling mute ' - 'controls: %s', self.entity_id) + "Shield Android TV client detected, disabling mute " + "controls: %s", self.entity_id) return (SUPPORT_PAUSE | SUPPORT_PREVIOUS_TRACK | SUPPORT_NEXT_TRACK | SUPPORT_STOP | SUPPORT_VOLUME_SET | SUPPORT_PLAY | @@ -666,8 +649,8 @@ class PlexClient(MediaPlayerDevice): # Only supports play,pause,stop (and off which really is stop) elif self.make.lower().startswith("tivo"): _LOGGER.debug( - 'Tivo client detected, only enabling pause, play, ' - 'stop, and off controls: %s', self.entity_id) + "Tivo client detected, only enabling pause, play, " + "stop, and off controls: %s", self.entity_id) return (SUPPORT_PAUSE | SUPPORT_PLAY | SUPPORT_STOP | SUPPORT_TURN_OFF) # Not all devices support playback functionality @@ -693,8 +676,8 @@ class PlexClient(MediaPlayerDevice): # point controls to server since that's where the # playback is occuring _LOGGER.debug( - 'Local client detected, redirecting controls to ' - 'Plex server: %s', self.entity_id) + "Local client detected, redirecting controls to " + "Plex server: %s", self.entity_id) server_url = self.device.server.baseurl client_url = self.device.baseurl self.device.baseurl = "{}://{}:{}".format( @@ -830,7 +813,7 @@ class PlexClient(MediaPlayerDevice): break if target_season is None: - _LOGGER.error('Season not found: %s\\%s - S%sE%s', library_name, + _LOGGER.error("Season not found: %s\\%s - S%sE%s", library_name, show_name, str(season_number).zfill(2), str(episode_number).zfill(2)) @@ -847,7 +830,7 @@ class PlexClient(MediaPlayerDevice): break if target_episode is None: - _LOGGER.error('Episode not found: %s\\%s - S%sE%s', + _LOGGER.error("Episode not found: %s\\%s - S%sE%s", library_name, show_name, str(season_number).zfill(2), str(episode_number).zfill(2)) @@ -858,14 +841,14 @@ class PlexClient(MediaPlayerDevice): """Instruct Plex client to play a piece of media.""" if not (self.device and 'playback' in self._device_protocol_capabilities): - _LOGGER.error('Client cannot play media: %s', self.entity_id) + _LOGGER.error("Client cannot play media: %s", self.entity_id) return import plexapi.playqueue - playqueue = plexapi.playqueue.PlayQueue.create(self.device.server, - media, **params) + playqueue = plexapi.playqueue.PlayQueue.create( + self.device.server, media, **params) - # delete dynamic playlists used to build playqueue (ex. play tv season) + # Delete dynamic playlists used to build playqueue (ex. play tv season) if delete: media.delete() @@ -873,16 +856,13 @@ class PlexClient(MediaPlayerDevice): server_url = self.device.server.baseurl.split(':') self.device.sendCommand('playback/playMedia', **dict({ - 'machineIdentifier': - self.device.server.machineIdentifier, - 'address': - server_url[1].strip('/'), - 'port': - server_url[-1], - 'key': - media.key, + 'machineIdentifier': self.device.server.machineIdentifier, + 'address': server_url[1].strip('/'), + 'port': server_url[-1], + 'key': media.key, 'containerKey': - '/playQueues/%s?window=100&own=1' % playqueue.playQueueID, + '/playQueues/{}?window=100&own=1'.format( + playqueue.playQueueID), }, **params)) @property diff --git a/homeassistant/components/notify/apns.py b/homeassistant/components/notify/apns.py index 50842c69a61..83ae6d489a1 100644 --- a/homeassistant/components/notify/apns.py +++ b/homeassistant/components/notify/apns.py @@ -6,6 +6,7 @@ https://home-assistant.io/components/notify.apns/ """ import logging import os + import voluptuous as vol from homeassistant.helpers.event import track_state_change @@ -16,15 +17,17 @@ from homeassistant.const import CONF_NAME, CONF_PLATFORM import homeassistant.helpers.config_validation as cv from homeassistant.helpers import template as template_helper -APNS_DEVICES = "apns.yaml" -CONF_CERTFILE = "cert_file" -CONF_TOPIC = "topic" -CONF_SANDBOX = "sandbox" -DEVICE_TRACKER_DOMAIN = "device_tracker" -SERVICE_REGISTER = "apns_register" +REQUIREMENTS = ['apns2==0.1.1'] -ATTR_PUSH_ID = "push_id" -ATTR_NAME = "name" +APNS_DEVICES = 'apns.yaml' +CONF_CERTFILE = 'cert_file' +CONF_TOPIC = 'topic' +CONF_SANDBOX = 'sandbox' +DEVICE_TRACKER_DOMAIN = 'device_tracker' +SERVICE_REGISTER = 'apns_register' + +ATTR_PUSH_ID = 'push_id' +ATTR_NAME = 'name' PLATFORM_SCHEMA = vol.Schema({ vol.Required(CONF_PLATFORM): 'apns', @@ -39,8 +42,6 @@ REGISTER_SERVICE_SCHEMA = vol.Schema({ vol.Optional(ATTR_NAME, default=None): cv.string, }) -REQUIREMENTS = ["apns2==0.1.1"] - def get_service(hass, config, discovery_info=None): """Return push service.""" @@ -53,17 +54,15 @@ def get_service(hass, config, discovery_info=None): sandbox = config.get(CONF_SANDBOX) service = ApnsNotificationService(hass, name, topic, sandbox, cert_file) - hass.services.register(DOMAIN, - 'apns_{}'.format(name), - service.register, - descriptions.get(SERVICE_REGISTER), - schema=REGISTER_SERVICE_SCHEMA) + hass.services.register( + DOMAIN, 'apns_{}'.format(name), service.register, + descriptions.get(SERVICE_REGISTER), schema=REGISTER_SERVICE_SCHEMA) return service class ApnsDevice(object): """ - Apns Device class. + APNS Device class. Stores information about a device that is registered for push notifications. @@ -78,7 +77,7 @@ class ApnsDevice(object): @property def push_id(self): - """The apns id for the device.""" + """The APNS id for the device.""" return self.device_push_id @property @@ -104,7 +103,7 @@ class ApnsDevice(object): The full id of a device that is tracked by the device tracking component. """ - return DEVICE_TRACKER_DOMAIN + '.' + self.tracking_id + return '{}.{}'.format(DEVICE_TRACKER_DOMAIN, self.tracking_id) @property def disabled(self): @@ -140,7 +139,7 @@ def _write_device(out, device): out.write(device.push_id) out.write(": {") - if len(attributes) > 0: + if attributes: separator = ", " out.write(separator.join(attributes)) diff --git a/homeassistant/components/pilight.py b/homeassistant/components/pilight.py index e160d074bbe..1d5bf2563de 100644 --- a/homeassistant/components/pilight.py +++ b/homeassistant/components/pilight.py @@ -8,7 +8,6 @@ import logging import functools import socket import threading - from datetime import timedelta import voluptuous as vol @@ -24,8 +23,7 @@ REQUIREMENTS = ['pilight==0.1.1'] _LOGGER = logging.getLogger(__name__) - -CONF_SEND_DELAY = "send_delay" +CONF_SEND_DELAY = 'send_delay' DEFAULT_HOST = '127.0.0.1' DEFAULT_PORT = 5000 @@ -60,14 +58,14 @@ def setup(hass, config): host = config[DOMAIN][CONF_HOST] port = config[DOMAIN][CONF_PORT] - send_throttler = CallRateDelayThrottle(hass, - config[DOMAIN][CONF_SEND_DELAY]) + send_throttler = CallRateDelayThrottle( + hass, config[DOMAIN][CONF_SEND_DELAY]) try: pilight_client = pilight.Client(host=host, port=port) except (socket.error, socket.timeout) as err: - _LOGGER.error("Unable to connect to %s on port %s: %s", - host, port, err) + _LOGGER.error( + "Unable to connect to %s on port %s: %s", host, port, err) return False def start_pilight_client(_): @@ -92,7 +90,7 @@ def setup(hass, config): try: pilight_client.send_code(message_data) except IOError: - _LOGGER.error('Pilight send failed for %s', str(message_data)) + _LOGGER.error("Pilight send failed for %s", str(message_data)) hass.services.register( DOMAIN, SERVICE_NAME, send_code, schema=RF_CODE_SCHEMA) @@ -157,7 +155,7 @@ class CallRateDelayThrottle(object): with self._lock: self._next_ts = dt_util.utcnow() + self._delay - if len(self._queue) == 0: + if not self._queue: self._active = False else: next_action = self._queue.pop(0) diff --git a/homeassistant/components/qwikswitch.py b/homeassistant/components/qwikswitch.py index 2d497d38273..f4f1c6129a1 100644 --- a/homeassistant/components/qwikswitch.py +++ b/homeassistant/components/qwikswitch.py @@ -165,13 +165,13 @@ def setup(hass, config): # Load platforms for comp_name in ('switch', 'light'): - if len(QSUSB[comp_name]) > 0: + if QSUSB[comp_name]: load_platform(hass, comp_name, 'qwikswitch', {}, config) def qs_callback(item): """Typically a button press or update signal.""" if qsusb is None: # Shutting down - _LOGGER.info("Done") + _LOGGER.info("Botton press or updating signal done") return # If button pressed, fire a hass event diff --git a/homeassistant/components/scsgate.py b/homeassistant/components/scsgate.py index 549759f5e12..54e4b821c4b 100644 --- a/homeassistant/components/scsgate.py +++ b/homeassistant/components/scsgate.py @@ -141,7 +141,7 @@ class SCSGate(object): from scsgate.tasks import GetStatusTask with self._devices_to_register_lock: - while len(self._devices_to_register) != 0: + while self._devices_to_register: _, device = self._devices_to_register.popitem() self._devices[device.scs_id] = device self._device_being_registered = device.scs_id diff --git a/homeassistant/components/sensor/broadlink.py b/homeassistant/components/sensor/broadlink.py index 38806959f55..e0612c8b577 100644 --- a/homeassistant/components/sensor/broadlink.py +++ b/homeassistant/components/sensor/broadlink.py @@ -1,4 +1,3 @@ - """ Support for the Broadlink RM2 Pro (only temperature) and A1 devices. @@ -9,12 +8,13 @@ from datetime import timedelta import binascii import logging import socket + import voluptuous as vol from homeassistant.components.sensor import PLATFORM_SCHEMA -from homeassistant.const import (CONF_HOST, CONF_MAC, - CONF_MONITORED_CONDITIONS, - CONF_NAME, TEMP_CELSIUS, CONF_TIMEOUT) +from homeassistant.const import ( + CONF_HOST, CONF_MAC, CONF_MONITORED_CONDITIONS, CONF_NAME, TEMP_CELSIUS, + CONF_TIMEOUT) from homeassistant.helpers.entity import Entity from homeassistant.util import Throttle import homeassistant.helpers.config_validation as cv @@ -71,7 +71,7 @@ class BroadlinkSensor(Entity): def __init__(self, name, broadlink_data, sensor_type): """Initialize the sensor.""" - self._name = "%s %s" % (name, SENSOR_TYPES[sensor_type][0]) + self._name = '{} {}'.format(name, SENSOR_TYPES[sensor_type][0]) self._state = None self._type = sensor_type self._broadlink_data = broadlink_data @@ -119,7 +119,7 @@ class BroadlinkData(object): }) self.update = Throttle(interval)(self._update) if not self._auth(): - _LOGGER.warning("Failed to connect to device.") + _LOGGER.warning("Failed to connect to device") def _update(self, retry=3): try: diff --git a/homeassistant/components/sensor/dublin_bus_transport.py b/homeassistant/components/sensor/dublin_bus_transport.py index 10d2c2b39f0..ab921d1bbdd 100644 --- a/homeassistant/components/sensor/dublin_bus_transport.py +++ b/homeassistant/components/sensor/dublin_bus_transport.py @@ -1,4 +1,5 @@ -"""Support for Dublin RTPI information from data.dublinked.ie. +""" +Support for Dublin RTPI information from data.dublinked.ie. For more info on the API see : https://data.gov.ie/dataset/real-time-passenger-information-rtpi-for-dublin-bus-bus-eireann-luas-and-irish-rail/resource/4b9f2c4f-6bf5-4958-a43a-f12dab04cf61 @@ -22,11 +23,11 @@ import homeassistant.helpers.config_validation as cv _LOGGER = logging.getLogger(__name__) _RESOURCE = 'https://data.dublinked.ie/cgi-bin/rtpi/realtimebusinformation' -ATTR_STOP_ID = "Stop ID" -ATTR_ROUTE = "Route" -ATTR_DUE_IN = "Due in" -ATTR_DUE_AT = "Due at" -ATTR_NEXT_UP = "Later Bus" +ATTR_STOP_ID = 'Stop ID' +ATTR_ROUTE = 'Route' +ATTR_DUE_IN = 'Due in' +ATTR_DUE_AT = 'Due at' +ATTR_NEXT_UP = 'Later Bus' CONF_ATTRIBUTION = "Data provided by data.dublinked.ie" CONF_STOP_ID = 'stopid' @@ -36,7 +37,7 @@ DEFAULT_NAME = 'Next Bus' ICON = 'mdi:bus' MIN_TIME_BETWEEN_UPDATES = timedelta(seconds=60) -TIME_STR_FORMAT = "%H:%M" +TIME_STR_FORMAT = '%H:%M' PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ vol.Required(CONF_STOP_ID): cv.string, @@ -92,7 +93,7 @@ class DublinPublicTransportSensor(Entity): """Return the state attributes.""" if self._times is not None: next_up = "None" - if len(self._times) > 1: + if self._times: next_up = self._times[1][ATTR_ROUTE] + " in " next_up += self._times[1][ATTR_DUE_IN] @@ -108,7 +109,7 @@ class DublinPublicTransportSensor(Entity): @property def unit_of_measurement(self): """Return the unit this state is expressed in.""" - return "min" + return 'min' @property def icon(self): @@ -178,7 +179,7 @@ class PublicTransportData(object): due_in_minutes(due_at)} self.info.append(bus_data) - if len(self.info) == 0: + if not self.info: self.info = [{ATTR_DUE_AT: 'n/a', ATTR_ROUTE: self.route, ATTR_DUE_IN: 'n/a'}] diff --git a/homeassistant/components/sensor/eddystone_temperature.py b/homeassistant/components/sensor/eddystone_temperature.py index de51ff0d373..babc8ee60a6 100644 --- a/homeassistant/components/sensor/eddystone_temperature.py +++ b/homeassistant/components/sensor/eddystone_temperature.py @@ -1,13 +1,11 @@ -"""Read temperature information from Eddystone beacons. +""" +Read temperature information from Eddystone beacons. Your beacons must be configured to transmit UID (for identification) and TLM (for temperature) frames. For more details about this platform, please refer to the documentation at https://home-assistant.io/components/sensor.eddystone_temperature/ - -Original version of this code (for Skybeacons) by anpetrov. -https://github.com/anpetrov/skybeacon """ import logging @@ -24,7 +22,6 @@ REQUIREMENTS = ['beacontools[scan]==1.0.1'] _LOGGER = logging.getLogger(__name__) -# constants CONF_BEACONS = 'beacons' CONF_BT_DEVICE_ID = 'bt_device_id' CONF_INSTANCE = 'instance' @@ -45,8 +42,6 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ # pylint: disable=unused-argument def setup_platform(hass, config, add_devices, discovery_info=None): """Validate configuration, create devices and start monitoring thread.""" - _LOGGER.debug("Setting up...") - bt_device_id = config.get("bt_device_id") beacons = config.get("beacons") @@ -63,17 +58,17 @@ def setup_platform(hass, config, add_devices, discovery_info=None): else: devices.append(EddystoneTemp(name, namespace, instance)) - if len(devices) > 0: + if devices: mon = Monitor(hass, devices, bt_device_id) def monitor_stop(_service_or_event): """Stop the monitor thread.""" - _LOGGER.info("Stopping scanner for eddystone beacons") + _LOGGER.info("Stopping scanner for Eddystone beacons") mon.stop() def monitor_start(_service_or_event): """Start the monitor thread.""" - _LOGGER.info("Starting scanner for eddystone beacons") + _LOGGER.info("Starting scanner for Eddystone beacons") mon.start() add_devices(devices) @@ -88,9 +83,8 @@ def get_from_conf(config, config_key, length): """Retrieve value from config and validate length.""" string = config.get(config_key) if len(string) != length: - _LOGGER.error("Error in config parameter \"%s\": Must be exactly %d " - "bytes. Device will not be added.", - config_key, length/2) + _LOGGER.error("Error in config parameter %s: Must be exactly %d " + "bytes. Device will not be added", config_key, length/2) return None else: return string @@ -135,9 +129,9 @@ class Monitor(object): """Construct interface object.""" self.hass = hass - # list of beacons to monitor + # List of beacons to monitor self.devices = devices - # number of the bt device (hciX) + # Number of the bt device (hciX) self.bt_device_id = bt_device_id def callback(bt_addr, _, packet, additional_info): @@ -147,14 +141,13 @@ class Monitor(object): packet.temperature) # pylint: disable=import-error - from beacontools import (BeaconScanner, EddystoneFilter, - EddystoneTLMFrame) - # Create a device filter for each device + from beacontools import ( + BeaconScanner, EddystoneFilter, EddystoneTLMFrame) device_filters = [EddystoneFilter(d.namespace, d.instance) for d in devices] - self.scanner = BeaconScanner(callback, bt_device_id, device_filters, - EddystoneTLMFrame) + self.scanner = BeaconScanner( + callback, bt_device_id, device_filters, EddystoneTLMFrame) self.scanning = False def start(self): @@ -163,8 +156,8 @@ class Monitor(object): self.scanner.start() self.scanning = True else: - _LOGGER.debug("Warning: start() called, but scanner is already" - " running") + _LOGGER.debug( + "Warning: start() called, but scanner is already running") def process_packet(self, namespace, instance, temperature): """Assign temperature to hass device.""" @@ -185,5 +178,5 @@ class Monitor(object): _LOGGER.debug("Stopped") self.scanning = False else: - _LOGGER.debug("Warning: stop() called but scanner was not" - " running.") + _LOGGER.debug( + "Warning: stop() called but scanner was not running") diff --git a/homeassistant/components/sensor/imap_email_content.py b/homeassistant/components/sensor/imap_email_content.py index b5ff92860a0..65ae27b4de3 100644 --- a/homeassistant/components/sensor/imap_email_content.py +++ b/homeassistant/components/sensor/imap_email_content.py @@ -1,5 +1,5 @@ """ -EMail sensor support. +Email sensor support. For more details about this platform, please refer to the documentation at https://home-assistant.io/components/sensor.email/ @@ -7,24 +7,26 @@ https://home-assistant.io/components/sensor.email/ import logging import datetime import email - from collections import deque + +import voluptuous as vol + from homeassistant.helpers.entity import Entity from homeassistant.components.sensor import PLATFORM_SCHEMA from homeassistant.const import ( - CONF_NAME, CONF_PORT, CONF_USERNAME, CONF_PASSWORD, CONF_VALUE_TEMPLATE) + CONF_NAME, CONF_PORT, CONF_USERNAME, CONF_PASSWORD, CONF_VALUE_TEMPLATE, + CONTENT_TYPE_TEXT_PLAIN) import homeassistant.helpers.config_validation as cv -import voluptuous as vol _LOGGER = logging.getLogger(__name__) -CONF_SERVER = "server" -CONF_SENDERS = "senders" +CONF_SERVER = 'server' +CONF_SENDERS = 'senders' -ATTR_FROM = "from" -ATTR_BODY = "body" -ATTR_DATE = "date" -ATTR_SUBJECT = "subject" +ATTR_FROM = 'from' +ATTR_BODY = 'body' +ATTR_DATE = 'date' +ATTR_SUBJECT = 'subject' DEFAULT_PORT = 993 @@ -41,20 +43,15 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ def setup_platform(hass, config, add_devices, discovery_info=None): """Setup the EMail platform.""" reader = EmailReader( - config.get(CONF_USERNAME), - config.get(CONF_PASSWORD), - config.get(CONF_SERVER), - config.get(CONF_PORT)) + config.get(CONF_USERNAME), config.get(CONF_PASSWORD), + config.get(CONF_SERVER), config.get(CONF_PORT)) value_template = config.get(CONF_VALUE_TEMPLATE) if value_template is not None: value_template.hass = hass sensor = EmailContentSensor( - hass, - reader, - config.get(CONF_NAME, None) or config.get(CONF_USERNAME), - config.get(CONF_SENDERS), - value_template) + hass, reader, config.get(CONF_NAME) or config.get(CONF_USERNAME), + config.get(CONF_SENDERS), value_template) if sensor.connected: add_devices([sensor]) @@ -83,15 +80,13 @@ class EmailReader: self.connection.login(self._user, self._password) return True except imaplib.IMAP4.error: - _LOGGER.error("Failed to login to %s.", self._server) + _LOGGER.error("Failed to login to %s", self._server) return False def _fetch_message(self, message_uid): """Get an email message from a message id.""" _, message_data = self.connection.uid( - 'fetch', - message_uid, - '(RFC822)') + 'fetch', message_uid, '(RFC822)') raw_email = message_data[0][1] email_message = email.message_from_bytes(raw_email) @@ -103,7 +98,7 @@ class EmailReader: try: self.connection.select() - if len(self._unread_ids) == 0: + if not self._unread_ids: search = "SINCE {0:%d-%b-%Y}".format(datetime.date.today()) if self._last_id is not None: search = "UID {}:*".format(self._last_id) @@ -111,7 +106,7 @@ class EmailReader: _, data = self.connection.uid("search", None, search) self._unread_ids = deque(data[0].split()) - while len(self._unread_ids) > 0: + while self._unread_ids: message_uid = self._unread_ids.popleft() if self._last_id is None or int(message_uid) > self._last_id: self._last_id = int(message_uid) @@ -119,29 +114,23 @@ class EmailReader: except imaplib.IMAP4.error: _LOGGER.info( - "Connection to %s lost, attempting to reconnect", - self._server) + "Connection to %s lost, attempting to reconnect", self._server) try: self.connect() except imaplib.IMAP4.error: - _LOGGER.error("Failed to reconnect.") + _LOGGER.error("Failed to reconnect") class EmailContentSensor(Entity): """Representation of an EMail sensor.""" - def __init__(self, - hass, - email_reader, - name, - allowed_senders, + def __init__(self, hass, email_reader, name, allowed_senders, value_template): """Initialize the sensor.""" self.hass = hass self._email_reader = email_reader self._name = name - self._allowed_senders = \ - [sender.upper() for sender in allowed_senders] + self._allowed_senders = [sender.upper() for sender in allowed_senders] self._value_template = value_template self._last_id = None self._message = None @@ -202,7 +191,7 @@ class EmailContentSensor(Entity): message_untyped_text = None for part in email_message.walk(): - if part.get_content_type() == 'text/plain': + if part.get_content_type() == CONTENT_TYPE_TEXT_PLAIN: if message_text is None: message_text = part.get_payload() elif part.get_content_type() == 'text/html': diff --git a/homeassistant/components/sensor/influxdb.py b/homeassistant/components/sensor/influxdb.py index 89c9bbad4b2..035c894ba0c 100644 --- a/homeassistant/components/sensor/influxdb.py +++ b/homeassistant/components/sensor/influxdb.py @@ -168,15 +168,15 @@ class InfluxSensorData(object): @Throttle(MIN_TIME_BETWEEN_UPDATES) def update(self): """Get the latest data with a shell command.""" - _LOGGER.info('Running query: %s', self.query) + _LOGGER.info("Running query: %s", self.query) points = list(self.influx.query(self.query).get_points()) - if len(points) == 0: - _LOGGER.warning('Query returned no points, sensor state set' - ' to UNKNOWN : %s', self.query) + if not points: + _LOGGER.warning("Query returned no points, sensor state set" + " to UNKNOWN : %s", self.query) self.value = None else: - if len(points) > 1: - _LOGGER.warning('Query returned multiple points, only first' - ' one shown : %s', self.query) + if points: + _LOGGER.warning("Query returned multiple points, only first" + " one shown : %s", self.query) self.value = points[0].get('value') diff --git a/homeassistant/components/sensor/isy994.py b/homeassistant/components/sensor/isy994.py index d35c76b81dc..2f6d7346283 100644 --- a/homeassistant/components/sensor/isy994.py +++ b/homeassistant/components/sensor/isy994.py @@ -1,15 +1,15 @@ """ -Support for ISY994 binary sensors. +Support for ISY994 sensors. For more details about this platform, please refer to the documentation at -https://home-assistant.io/components/binary_sensor.isy994/ +https://home-assistant.io/components/sensor.isy994/ """ import logging from typing import Callable # noqa import homeassistant.components.isy994 as isy -from homeassistant.const import (TEMP_CELSIUS, TEMP_FAHRENHEIT, STATE_OFF, - STATE_ON) +from homeassistant.const import ( + TEMP_CELSIUS, TEMP_FAHRENHEIT, STATE_OFF, STATE_ON) from homeassistant.helpers.typing import ConfigType _LOGGER = logging.getLogger(__name__) @@ -238,17 +238,17 @@ BINARY_UOM = ['2', '78'] # pylint: disable=unused-argument def setup_platform(hass, config: ConfigType, add_devices: Callable[[list], None], discovery_info=None): - """Setup the ISY994 sensor platform.""" + """Set up the ISY994 sensor platform.""" if isy.ISY is None or not isy.ISY.connected: - _LOGGER.error('A connection has not been made to the ISY controller.') + _LOGGER.error("A connection has not been made to the ISY controller") return False devices = [] for node in isy.SENSOR_NODES: - if (len(node.uom) == 0 or node.uom[0] not in BINARY_UOM) and \ + if (not node.uom or node.uom[0] not in BINARY_UOM) and \ STATE_OFF not in node.uom and STATE_ON not in node.uom: - _LOGGER.debug('LOADING %s', node.name) + _LOGGER.debug("Loading %s", node.name) devices.append(ISYSensorDevice(node)) for node in isy.WEATHER_NODES: diff --git a/homeassistant/components/sensor/miflora.py b/homeassistant/components/sensor/miflora.py index 1a13faeee00..ac8646bb3c1 100644 --- a/homeassistant/components/sensor/miflora.py +++ b/homeassistant/components/sensor/miflora.py @@ -58,7 +58,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the MiFlora sensor.""" + """Set up the MiFlora sensor.""" from miflora import miflora_poller cache = config.get(CONF_CACHE) @@ -77,7 +77,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None): unit = SENSOR_TYPES[parameter][1] prefix = config.get(CONF_NAME) - if len(prefix) > 0: + if prefix: name = "{} {}".format(prefix, name) devs.append(MiFloraSensor( @@ -145,7 +145,7 @@ class MiFloraSensor(Entity): self.name) # Remove old data from median list or set sensor value to None # if no data is available anymore - if len(self.data) > 0: + if self.data: self.data = self.data[1:] else: self._state = None diff --git a/homeassistant/components/sensor/rfxtrx.py b/homeassistant/components/sensor/rfxtrx.py index 5085dc942cc..5f7eb8e5577 100644 --- a/homeassistant/components/sensor/rfxtrx.py +++ b/homeassistant/components/sensor/rfxtrx.py @@ -5,6 +5,7 @@ For more details about this platform, please refer to the documentation at https://home-assistant.io/components/sensor.rfxtrx/ """ import logging + import voluptuous as vol import homeassistant.components.rfxtrx as rfxtrx @@ -13,8 +14,8 @@ from homeassistant.const import CONF_PLATFORM from homeassistant.helpers.entity import Entity from homeassistant.util import slugify from homeassistant.components.rfxtrx import ( - ATTR_AUTOMATIC_ADD, ATTR_NAME, ATTR_FIREEVENT, - CONF_DEVICES, ATTR_DATA_TYPE, DATA_TYPES, ATTR_ENTITY_ID) + ATTR_AUTOMATIC_ADD, ATTR_NAME, ATTR_FIREEVENT, CONF_DEVICES, DATA_TYPES, + ATTR_DATA_TYPE, ATTR_ENTITY_ID) DEPENDENCIES = ['rfxtrx'] @@ -28,7 +29,7 @@ PLATFORM_SCHEMA = vol.Schema({ def setup_platform(hass, config, add_devices_callback, discovery_info=None): - """Setup the RFXtrx platform.""" + """Set up the RFXtrx platform.""" from RFXtrx import SensorEvent sensors = [] for packet_id, entity_info in config[CONF_DEVICES].items(): @@ -40,7 +41,7 @@ def setup_platform(hass, config, add_devices_callback, discovery_info=None): sub_sensors = {} data_types = entity_info[ATTR_DATA_TYPE] - if len(data_types) == 0: + if not data_types: data_types = [''] for data_type in DATA_TYPES: if data_type in event.values: diff --git a/homeassistant/components/sensor/tado.py b/homeassistant/components/sensor/tado.py index 3e5d0101ade..371d7e3e1c9 100644 --- a/homeassistant/components/sensor/tado.py +++ b/homeassistant/components/sensor/tado.py @@ -1,20 +1,29 @@ -"""tado component to create some sensors for each zone.""" +""" +Tado component to create some sensors for each zone. +For more details about this platform, please refer to the documentation at +https://home-assistant.io/components/sensor.tado/ +""" import logging from homeassistant.const import TEMP_CELSIUS from homeassistant.helpers.entity import Entity -from homeassistant.components.tado import ( - DATA_TADO) +from homeassistant.components.tado import (DATA_TADO) _LOGGER = logging.getLogger(__name__) + +ATTR_DATA_ID = 'data_id' +ATTR_DEVICE = 'device' +ATTR_ID = 'id' +ATTR_NAME = 'name' +ATTR_ZONE = 'zone' + SENSOR_TYPES = ['temperature', 'humidity', 'power', 'link', 'heating', 'tado mode', 'overlay'] def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the sensor platform.""" - # get the PyTado object from the hub component + """Set up the sensor platform.""" tado = hass.data[DATA_TADO] try: @@ -36,7 +45,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None): tado, me_data, me_data['homes'][0]['name'], me_data['homes'][0]['id'], "tado bridge status")) - if len(sensor_items) > 0: + if sensor_items: add_devices(sensor_items, True) return True else: @@ -48,10 +57,10 @@ def create_zone_sensor(tado, zone, name, zone_id, variable): data_id = 'zone {} {}'.format(name, zone_id) tado.add_sensor(data_id, { - "zone": zone, - "name": name, - "id": zone_id, - "data_id": data_id + ATTR_ZONE: zone, + ATTR_NAME: name, + ATTR_ID: zone_id, + ATTR_DATA_ID: data_id }) return TadoSensor(tado, name, zone_id, variable, data_id) @@ -62,10 +71,10 @@ def create_device_sensor(tado, device, name, device_id, variable): data_id = 'device {} {}'.format(name, device_id) tado.add_sensor(data_id, { - "device": device, - "name": name, - "id": device_id, - "data_id": data_id + ATTR_DEVICE: device, + ATTR_NAME: name, + ATTR_ID: device_id, + ATTR_DATA_ID: data_id }) return TadoSensor(tado, name, device_id, variable, data_id) @@ -133,8 +142,7 @@ class TadoSensor(Entity): data = self._store.get_data(self._data_id) if data is None: - _LOGGER.debug('Recieved no data for zone %s', - self.zone_name) + _LOGGER.debug("Recieved no data for zone %s", self.zone_name) return unit = TEMP_CELSIUS diff --git a/homeassistant/components/sensor/xbox_live.py b/homeassistant/components/sensor/xbox_live.py index 010812b58de..3b59f06be31 100644 --- a/homeassistant/components/sensor/xbox_live.py +++ b/homeassistant/components/sensor/xbox_live.py @@ -8,9 +8,9 @@ import logging import voluptuous as vol +import homeassistant.helpers.config_validation as cv from homeassistant.components.sensor import PLATFORM_SCHEMA from homeassistant.const import (CONF_API_KEY, STATE_UNKNOWN) -import homeassistant.helpers.config_validation as cv from homeassistant.helpers.entity import Entity REQUIREMENTS = ['xboxapi==0.1.1'] @@ -39,7 +39,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None): if new_device.success_init: devices.append(new_device) - if len(devices) > 0: + if devices: add_devices(devices) else: return False diff --git a/homeassistant/components/switch/insteon_local.py b/homeassistant/components/switch/insteon_local.py index 2017ad96a47..5332d420499 100644 --- a/homeassistant/components/switch/insteon_local.py +++ b/homeassistant/components/switch/insteon_local.py @@ -31,7 +31,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None): conf_switches = config_from_file(hass.config.path( INSTEON_LOCAL_SWITCH_CONF)) - if len(conf_switches): + if conf_switches: for device_id in conf_switches: setup_switch( device_id, conf_switches[device_id], insteonhub, hass, @@ -48,8 +48,8 @@ def setup_platform(hass, config, add_devices, discovery_info=None): hass, add_devices) -def request_configuration(device_id, insteonhub, model, hass, - add_devices_callback): +def request_configuration( + device_id, insteonhub, model, hass, add_devices_callback): """Request configuration steps from the user.""" configurator = get_component('configurator') @@ -81,7 +81,7 @@ def setup_switch(device_id, name, insteonhub, hass, add_devices_callback): request_id = _CONFIGURING.pop(device_id) configurator = get_component('configurator') configurator.request_done(request_id) - _LOGGER.info("Device configuration done!") + _LOGGER.info("Device configuration done") conf_switch = config_from_file(hass.config.path(INSTEON_LOCAL_SWITCH_CONF)) if device_id not in conf_switch: diff --git a/homeassistant/components/switch/neato.py b/homeassistant/components/switch/neato.py index b6cf6549cae..e61a46f78a6 100644 --- a/homeassistant/components/switch/neato.py +++ b/homeassistant/components/switch/neato.py @@ -24,12 +24,12 @@ SWITCH_TYPES = { def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the Neato switches.""" + """Set up the Neato switches.""" dev = [] for robot in hass.data[NEATO_ROBOTS]: for type_name in SWITCH_TYPES: dev.append(NeatoConnectedSwitch(hass, robot, type_name)) - _LOGGER.debug('Adding switches %s', dev) + _LOGGER.debug("Adding switches %s", dev) add_devices(dev) @@ -41,25 +41,26 @@ class NeatoConnectedSwitch(ToggleEntity): self.type = switch_type self.robot = robot self.neato = hass.data[NEATO_LOGIN] - self._robot_name = self.robot.name + ' ' + SWITCH_TYPES[self.type][0] + self._robot_name = '{} {}'.format( + self.robot.name, SWITCH_TYPES[self.type][0]) try: self._state = self.robot.state except (requests.exceptions.ConnectionError, requests.exceptions.HTTPError) as ex: - _LOGGER.warning('Neato connection error: %s', ex) + _LOGGER.warning("Neato connection error: %s", ex) self._state = None self._schedule_state = None self._clean_state = None def update(self): """Update the states of Neato switches.""" - _LOGGER.debug('Running switch update') + _LOGGER.debug("Running switch update") self.neato.update_robots() try: self._state = self.robot.state except (requests.exceptions.ConnectionError, requests.exceptions.HTTPError) as ex: - _LOGGER.warning('Neato connection error: %s', ex) + _LOGGER.warning("Neato connection error: %s", ex) self._state = None return _LOGGER.debug('self._state=%s', self._state) @@ -71,14 +72,14 @@ class NeatoConnectedSwitch(ToggleEntity): self._clean_state = STATE_ON else: self._clean_state = STATE_OFF - _LOGGER.debug('schedule_state=%s', self._schedule_state) + _LOGGER.debug("Schedule state: %s", self._schedule_state) if self.type == SWITCH_TYPE_SCHEDULE: - _LOGGER.debug('self._state=%s', self._state) + _LOGGER.debug("State: %s", self._state) if self.robot.schedule_enabled: self._schedule_state = STATE_ON else: self._schedule_state = STATE_OFF - _LOGGER.debug('schedule_state=%s', self._schedule_state) + _LOGGER.debug("Shedule state: %s", self._schedule_state) @property def name(self): diff --git a/homeassistant/components/switch/netio.py b/homeassistant/components/switch/netio.py index ee3d9588a7e..4148371d22b 100644 --- a/homeassistant/components/switch/netio.py +++ b/homeassistant/components/switch/netio.py @@ -58,14 +58,14 @@ def setup_platform(hass, config, add_devices, discovery_info=None): password = config.get(CONF_PASSWORD) port = config.get(CONF_PORT) - if len(DEVICES) == 0: + if not DEVICES: hass.http.register_view(NetioApiView) dev = Netio(host, port, username, password) DEVICES[host] = Device(dev, []) - # Throttle the update for all NetioSwitches of one Netio + # Throttle the update for all Netio switches of one Netio dev.update = util.Throttle(MIN_TIME_BETWEEN_SCANS)(dev.update) for key in config[CONF_OUTLETS]: @@ -123,7 +123,7 @@ class NetioApiView(HomeAssistantView): class NetioSwitch(SwitchDevice): - """Provide a netio linked switch.""" + """Provide a Netio linked switch.""" def __init__(self, netio, outlet, name): """Defined to handle throttle.""" diff --git a/homeassistant/components/tellstick.py b/homeassistant/components/tellstick.py index e6031a91ab4..ea71ef3cdef 100644 --- a/homeassistant/components/tellstick.py +++ b/homeassistant/components/tellstick.py @@ -13,17 +13,16 @@ from homeassistant.helpers import discovery from homeassistant.const import EVENT_HOMEASSISTANT_STOP from homeassistant.helpers.entity import Entity -DOMAIN = 'tellstick' - REQUIREMENTS = ['tellcore-py==1.1.2'] _LOGGER = logging.getLogger(__name__) -ATTR_SIGNAL_REPETITIONS = 'signal_repetitions' -DEFAULT_SIGNAL_REPETITIONS = 1 - -ATTR_DISCOVER_DEVICES = 'devices' ATTR_DISCOVER_CONFIG = 'config' +ATTR_DISCOVER_DEVICES = 'devices' +ATTR_SIGNAL_REPETITIONS = 'signal_repetitions' + +DEFAULT_SIGNAL_REPETITIONS = 1 +DOMAIN = 'tellstick' # Use a global tellstick domain lock to avoid getting Tellcore errors when # calling concurrently. @@ -42,8 +41,8 @@ CONFIG_SCHEMA = vol.Schema({ def _discover(hass, config, component_name, found_tellcore_devices): - """Setup and send the discovery event.""" - if not len(found_tellcore_devices): + """Set up and send the discovery event.""" + if not found_tellcore_devices: return _LOGGER.info("Discovered %d new %s devices", len(found_tellcore_devices), @@ -66,7 +65,7 @@ def setup(hass, config): tellcore_lib = TelldusCore( callback_dispatcher=AsyncioCallbackDispatcher(hass.loop)) except OSError: - _LOGGER.exception('Could not initialize Tellstick') + _LOGGER.exception("Could not initialize Tellstick") return False # Get all devices, switches and lights alike diff --git a/homeassistant/components/tts/__init__.py b/homeassistant/components/tts/__init__.py index bbef4d57e45..e5570a6922d 100644 --- a/homeassistant/components/tts/__init__.py +++ b/homeassistant/components/tts/__init__.py @@ -84,7 +84,7 @@ def async_setup(hass, config): tts = SpeechManager(hass) try: - conf = config[DOMAIN][0] if len(config.get(DOMAIN, [])) > 0 else {} + conf = config[DOMAIN][0] if config.get(DOMAIN, []) else {} use_cache = conf.get(CONF_CACHE, DEFAULT_CACHE) cache_dir = conf.get(CONF_CACHE_DIR, DEFAULT_CACHE_DIR) time_memory = conf.get(CONF_TIME_MEMORY, DEFAULT_TIME_MEMORY) diff --git a/homeassistant/core.py b/homeassistant/core.py index a467cf28e51..c9cba0a1357 100644 --- a/homeassistant/core.py +++ b/homeassistant/core.py @@ -253,7 +253,7 @@ class HomeAssistant(object): pending = [task for task in self._pending_tasks if not task.done()] self._pending_tasks.clear() - if len(pending) > 0: + if pending: yield from asyncio.wait(pending, loop=self.loop) else: yield from asyncio.sleep(0, loop=self.loop) diff --git a/homeassistant/helpers/config_validation.py b/homeassistant/helpers/config_validation.py index 4bcde01c132..a3011ceb318 100644 --- a/homeassistant/helpers/config_validation.py +++ b/homeassistant/helpers/config_validation.py @@ -242,7 +242,7 @@ def slugify(value): if value is None: raise vol.Invalid('Slug should not be None') slg = util_slugify(str(value)) - if len(slg) > 0: + if slg: return slg raise vol.Invalid('Unable to slugify {}'.format(value)) diff --git a/homeassistant/helpers/template.py b/homeassistant/helpers/template.py index 4eabf1d071b..ce5cc9e918d 100644 --- a/homeassistant/helpers/template.py +++ b/homeassistant/helpers/template.py @@ -1,4 +1,4 @@ -"""Template helper methods for rendering strings with HA data.""" +"""Template helper methods for rendering strings with Home Assistant data.""" from datetime import datetime import json import logging diff --git a/homeassistant/loader.py b/homeassistant/loader.py index a24f89c0e3f..586988a3436 100644 --- a/homeassistant/loader.py +++ b/homeassistant/loader.py @@ -202,15 +202,15 @@ def _load_order_component(comp_name: str, load_order: OrderedSet, # If we are already loading it, we have a circular dependency. if dependency in loading: - _LOGGER.error('Circular dependency detected: %s -> %s', + _LOGGER.error("Circular dependency detected: %s -> %s", comp_name, dependency) return OrderedSet() dep_load_order = _load_order_component(dependency, load_order, loading) # length == 0 means error loading dependency or children - if len(dep_load_order) == 0: - _LOGGER.error('Error loading %s dependency: %s', + if not dep_load_order: + _LOGGER.error("Error loading %s dependency: %s", comp_name, dependency) return OrderedSet() diff --git a/homeassistant/scripts/check_config.py b/homeassistant/scripts/check_config.py index f8f4a3e9a6d..1e06f96b3e4 100644 --- a/homeassistant/scripts/check_config.py +++ b/homeassistant/scripts/check_config.py @@ -50,7 +50,7 @@ def color(the_color, *args, reset=None): """Color helper.""" from colorlog.escape_codes import escape_codes, parse_colors try: - if len(args) == 0: + if not args: assert reset is None, "You cannot reset if nothing being printed" return parse_colors(the_color) return parse_colors(the_color) + ' '.join(args) + \ @@ -106,7 +106,7 @@ def run(script_args: List) -> int: the_color = '' if yfn in res['yaml_files'] else 'red' print(color(the_color, '-', yfn)) - if len(res['except']) > 0: + if res['except']: print(color('bold_white', 'Failed config')) for domain, config in res['except'].items(): domain_info.append(domain) From 6a8a656fefa9dcca9f4ce6de561cd1d24ed375b4 Mon Sep 17 00:00:00 2001 From: Greg Dowling Date: Mon, 24 Apr 2017 07:18:43 +0100 Subject: [PATCH 029/169] Workround for wemo subscription bug. (#7245) --- homeassistant/components/switch/wemo.py | 2 ++ homeassistant/components/wemo.py | 2 +- requirements_all.txt | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/switch/wemo.py b/homeassistant/components/switch/wemo.py index c92523ad705..700d9d25b5a 100644 --- a/homeassistant/components/switch/wemo.py +++ b/homeassistant/components/switch/wemo.py @@ -76,6 +76,8 @@ class WemoSwitch(SwitchDevice): @property def should_poll(self): """No polling needed with subscriptions.""" + if self._model_name == 'Insight': + return True return False @property diff --git a/homeassistant/components/wemo.py b/homeassistant/components/wemo.py index a4b6674af74..98eefbc42d8 100644 --- a/homeassistant/components/wemo.py +++ b/homeassistant/components/wemo.py @@ -14,7 +14,7 @@ from homeassistant.helpers import config_validation as cv from homeassistant.const import EVENT_HOMEASSISTANT_STOP -REQUIREMENTS = ['pywemo==0.4.18'] +REQUIREMENTS = ['pywemo==0.4.19'] DOMAIN = 'wemo' diff --git a/requirements_all.txt b/requirements_all.txt index ddea058959d..bf1b921cc21 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -679,7 +679,7 @@ pyvera==0.2.26 pywebpush==0.6.1 # homeassistant.components.wemo -pywemo==0.4.18 +pywemo==0.4.19 # homeassistant.components.zabbix pyzabbix==0.7.4 From 0e662c400779b84a1ec4b163d4d0f93baf89cb25 Mon Sep 17 00:00:00 2001 From: Martin Hjelmare Date: Mon, 24 Apr 2017 08:20:04 +0200 Subject: [PATCH 030/169] Fix telegram webhooks (#7236) * Always register the view if a webhook exists. * Return True if platform is set up succesfully, False otherwise. * Remove the webhook when home assistant stops. Webhooks and long polling are mutually excklusive. If a webhook is left after home assistant is stopped, a polling telegram bot is unable to be set up, on next start of home assistant. --- .../components/telegram_bot/__init__.py | 12 ++++----- .../components/telegram_bot/webhooks.py | 25 ++++++++++--------- 2 files changed, 18 insertions(+), 19 deletions(-) diff --git a/homeassistant/components/telegram_bot/__init__.py b/homeassistant/components/telegram_bot/__init__.py index 92a87153d99..1cd77491c51 100644 --- a/homeassistant/components/telegram_bot/__init__.py +++ b/homeassistant/components/telegram_bot/__init__.py @@ -50,7 +50,7 @@ def async_setup(hass, config): _LOGGER.error("Unknown notification service specified") return - _LOGGER.info("Setting up1 %s.%s", DOMAIN, p_type) + _LOGGER.info("Setting up %s.%s", DOMAIN, p_type) try: if hasattr(platform, 'async_setup_platform'): @@ -73,8 +73,6 @@ def async_setup(hass, config): _LOGGER.exception('Error setting up platform %s', p_type) return - return True - setup_tasks = [async_setup_platform(p_type, p_config) for p_type, p_config in config_per_platform(config, DOMAIN)] @@ -103,10 +101,10 @@ class BaseTelegramBotEntity: """Check for basic message rules and fire an event if message is ok.""" data = data.get('message') - if (not data - or 'from' not in data - or 'text' not in data - or data['from'].get('id') not in self.allowed_chat_ids): + if (not data or + 'from' not in data or + 'text' not in data or + data['from'].get('id') not in self.allowed_chat_ids): # Message is not correct. _LOGGER.error("Incoming message does not have required data.") return False diff --git a/homeassistant/components/telegram_bot/webhooks.py b/homeassistant/components/telegram_bot/webhooks.py index 3ffc03780bd..9fddf18d278 100644 --- a/homeassistant/components/telegram_bot/webhooks.py +++ b/homeassistant/components/telegram_bot/webhooks.py @@ -11,9 +11,8 @@ from ipaddress import ip_network import voluptuous as vol - from homeassistant.const import ( - HTTP_BAD_REQUEST, HTTP_UNAUTHORIZED) + EVENT_HOMEASSISTANT_STOP, HTTP_BAD_REQUEST, HTTP_UNAUTHORIZED) import homeassistant.helpers.config_validation as cv from homeassistant.components.http import HomeAssistantView from homeassistant.components.telegram_bot import CONF_ALLOWED_CHAT_IDS, \ @@ -27,6 +26,7 @@ REQUIREMENTS = ['python-telegram-bot==5.3.0'] _LOGGER = logging.getLogger(__name__) TELEGRAM_HANDLER_URL = '/api/telegram_webhooks' +REMOVE_HANDLER_URL = '' CONF_TRUSTED_NETWORKS = 'trusted_networks' DEFAULT_TRUSTED_NETWORKS = [ @@ -50,20 +50,21 @@ def setup_platform(hass, config, async_add_devices, discovery_info=None): bot = telegram.Bot(config[CONF_API_KEY]) current_status = bot.getWebhookInfo() - handler_url = "{0}{1}".format(hass.config.api.base_url, - TELEGRAM_HANDLER_URL) + handler_url = '{0}{1}'.format( + hass.config.api.base_url, TELEGRAM_HANDLER_URL) if current_status and current_status['url'] != handler_url: if bot.setWebhook(handler_url): _LOGGER.info("set new telegram webhook %s", handler_url) - - hass.http.register_view( - BotPushReceiver( - hass, - config[CONF_ALLOWED_CHAT_IDS], - config[CONF_TRUSTED_NETWORKS])) - else: _LOGGER.error("set telegram webhook failed %s", handler_url) + return False + + hass.bus.listen_once( + EVENT_HOMEASSISTANT_STOP, + lambda event: bot.setWebhook(REMOVE_HANDLER_URL)) + hass.http.register_view(BotPushReceiver( + hass, config[CONF_ALLOWED_CHAT_IDS], config[CONF_TRUSTED_NETWORKS])) + return True class BotPushReceiver(HomeAssistantView, BaseTelegramBotEntity): @@ -71,7 +72,7 @@ class BotPushReceiver(HomeAssistantView, BaseTelegramBotEntity): requires_auth = False url = TELEGRAM_HANDLER_URL - name = "telegram_webhooks" + name = 'telegram_webhooks' def __init__(self, hass, allowed_chat_ids, trusted_networks): """Initialize the class.""" From 64da8cd47db8eb42ef8f7b3bd33f9a9922daa946 Mon Sep 17 00:00:00 2001 From: Klaas Hoekema Date: Mon, 24 Apr 2017 02:58:17 -0400 Subject: [PATCH 031/169] Work around bad content-type in Hook api response (#7267) --- homeassistant/components/switch/hook.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/homeassistant/components/switch/hook.py b/homeassistant/components/switch/hook.py index 58d3813f6fa..00fb7fdd909 100644 --- a/homeassistant/components/switch/hook.py +++ b/homeassistant/components/switch/hook.py @@ -47,7 +47,9 @@ def async_setup_platform(hass, config, async_add_devices, discovery_info=None): data={ 'username': username, 'password': password}) - data = yield from response.json() + # The Hook API returns JSON but calls it 'text/html'. Setting + # content_type=None disables aiohttp's content-type validation. + data = yield from response.json(content_type=None) except (asyncio.TimeoutError, aiohttp.ClientError) as error: _LOGGER.error("Failed authentication API call: %s", error) return False @@ -63,7 +65,7 @@ def async_setup_platform(hass, config, async_add_devices, discovery_info=None): response = yield from websession.get( '{}{}'.format(HOOK_ENDPOINT, 'device'), params={"token": token}) - data = yield from response.json() + data = yield from response.json(content_type=None) except (asyncio.TimeoutError, aiohttp.ClientError) as error: _LOGGER.error("Failed getting devices: %s", error) return False @@ -110,7 +112,7 @@ class HookSmartHome(SwitchDevice): with async_timeout.timeout(TIMEOUT, loop=self.hass.loop): response = yield from websession.get( url, params={"token": self._token}) - data = yield from response.json() + data = yield from response.json(content_type=None) except (asyncio.TimeoutError, aiohttp.ClientError) as error: _LOGGER.error("Failed setting state: %s", error) From 575f57a24ec5546b884b2c94ca4ece95d1eb1a3d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20H=C3=B8yer=20Iversen?= Date: Mon, 24 Apr 2017 13:42:26 +0200 Subject: [PATCH 032/169] Rfxtrx upgrade lib 0.18 (#7273) --- homeassistant/components/rfxtrx.py | 2 +- requirements_all.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/rfxtrx.py b/homeassistant/components/rfxtrx.py index 6eaf9ad1cf9..1370aa73e1f 100644 --- a/homeassistant/components/rfxtrx.py +++ b/homeassistant/components/rfxtrx.py @@ -14,7 +14,7 @@ from homeassistant.const import EVENT_HOMEASSISTANT_STOP from homeassistant.helpers.entity import Entity from homeassistant.const import (ATTR_ENTITY_ID, TEMP_CELSIUS) -REQUIREMENTS = ['pyRFXtrx==0.17.0'] +REQUIREMENTS = ['pyRFXtrx==0.18.0'] DOMAIN = "rfxtrx" diff --git a/requirements_all.txt b/requirements_all.txt index bf1b921cc21..c9af77608d6 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -482,7 +482,7 @@ pyCEC==0.4.13 pyHS100==0.2.4.2 # homeassistant.components.rfxtrx -pyRFXtrx==0.17.0 +pyRFXtrx==0.18.0 # homeassistant.components.alarm_control_panel.alarmdotcom pyalarmdotcom==0.3.0 From ead457f31292ebd1d441bef6a791c9c2ce9cd340 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Mon, 24 Apr 2017 15:16:28 +0200 Subject: [PATCH 033/169] WIP: HassIO allow to access to container logs. (#7271) * HassIO allow to access to container logs. * Add unittest & make a fixture for env * Add unittest to check if no env exists * Fix lint --- homeassistant/components/hassio.py | 54 +++++++++++++- tests/components/test_hassio.py | 114 ++++++++++++++++++++--------- 2 files changed, 131 insertions(+), 37 deletions(-) diff --git a/homeassistant/components/hassio.py b/homeassistant/components/hassio.py index c74918dbfa0..382c453ca0c 100644 --- a/homeassistant/components/hassio.py +++ b/homeassistant/components/hassio.py @@ -96,9 +96,12 @@ def async_setup(hass, config): hass.http.register_view(HassIOBaseView(hassio, base)) for base in ('supervisor', 'network'): hass.http.register_view(HassIOBaseEditView(hassio, base)) + for base in ('supervisor', 'homeassistant'): + hass.http.register_view(HassIOBaseLogsView(hassio, base)) # register view for addons hass.http.register_view(HassIOAddonsView(hassio)) + hass.http.register_view(HassIOAddonsLogsView(hassio)) @asyncio.coroutine def async_service_handler(service): @@ -185,7 +188,7 @@ class HassIO(object): return False @asyncio.coroutine - def send_raw(self, cmd, payload=None, timeout=DEFAULT_TIMEOUT): + def send_raw(self, cmd, payload=None, timeout=DEFAULT_TIMEOUT, json=True): """Send raw request to API.""" try: with async_timeout.timeout(timeout, loop=self.loop): @@ -198,7 +201,11 @@ class HassIO(object): _LOGGER.error("%s return code %d.", cmd, request.status) return - return (yield from request.json()) + if json: + return (yield from request.json()) + + # get raw output + return (yield from request.read()) except asyncio.TimeoutError: _LOGGER.error("Timeout on api request %s.", cmd) @@ -249,6 +256,28 @@ class HassIOBaseEditView(HassIOBaseView): return web.json_response(response) +class HassIOBaseLogsView(HomeAssistantView): + """HassIO view to handle base logs part.""" + + requires_auth = True + + def __init__(self, hassio, base): + """Initialize a hassio base view.""" + self.hassio = hassio + self._url_logs = "/{}/logs".format(base) + + self.url = "/api/hassio/logs/{}".format(base) + self.name = "api:hassio:logs:{}".format(base) + + @asyncio.coroutine + def get(self, request): + """Get logs.""" + data = yield from self.hassio.send_raw(self._url_logs, json=False) + if not data: + raise HTTPBadGateway() + return web.Response(body=data) + + class HassIOAddonsView(HomeAssistantView): """HassIO view to handle addons part.""" @@ -279,3 +308,24 @@ class HassIOAddonsView(HomeAssistantView): if not response: raise HTTPBadGateway() return web.json_response(response) + + +class HassIOAddonsLogsView(HomeAssistantView): + """HassIO view to handle addons logs part.""" + + requires_auth = True + url = "/api/hassio/logs/addons/{addon}" + name = "api:hassio:logs:addons" + + def __init__(self, hassio): + """Initialize a hassio addon view.""" + self.hassio = hassio + + @asyncio.coroutine + def get(self, request, addon): + """Get addon data.""" + data = yield from self.hassio.send_raw( + "/addons/{}/logs".format(addon), json=False) + if not data: + raise HTTPBadGateway() + return web.Response(body=data) diff --git a/tests/components/test_hassio.py b/tests/components/test_hassio.py index 2574e7fa9f3..959643f7986 100644 --- a/tests/components/test_hassio.py +++ b/tests/components/test_hassio.py @@ -1,8 +1,10 @@ """The tests for the hassio component.""" import asyncio import os +from unittest.mock import patch import aiohttp +import pytest import homeassistant.components.hassio as ho from homeassistant.setup import setup_component, async_setup_component @@ -11,6 +13,13 @@ from tests.common import ( get_test_home_assistant, assert_setup_component) +@pytest.fixture +def hassio_env(): + """Fixture to inject hassio env.""" + with patch.dict(os.environ, {'HASSIO': "127.0.0.1"}) as env_mock: + yield env_mock + + class TestHassIOSetup(object): """Test the hassio component.""" @@ -22,13 +31,11 @@ class TestHassIOSetup(object): ho.DOMAIN: {}, } - os.environ['HASSIO'] = "127.0.0.1" - def teardown_method(self): """Stop everything that was started.""" self.hass.stop() - def test_setup_component(self, aioclient_mock): + def test_setup_component(self, aioclient_mock, hassio_env): """Test setup component.""" aioclient_mock.get("http://127.0.0.1/supervisor/ping", json={ 'result': 'ok', 'data': {} @@ -36,7 +43,17 @@ class TestHassIOSetup(object): with assert_setup_component(0, ho.DOMAIN): setup_component(self.hass, ho.DOMAIN, self.config) - def test_setup_component_test_service(self, aioclient_mock): + def test_setup_component_bad(self, aioclient_mock): + """Test setup component bad.""" + aioclient_mock.get("http://127.0.0.1/supervisor/ping", json={ + 'result': 'ok', 'data': {} + }) + with assert_setup_component(0, ho.DOMAIN): + assert not setup_component(self.hass, ho.DOMAIN, self.config) + + assert len(aioclient_mock.mock_calls) == 0 + + def test_setup_component_test_service(self, aioclient_mock, hassio_env): """Test setup component and check if service exits.""" aioclient_mock.get("http://127.0.0.1/supervisor/ping", json={ 'result': 'ok', 'data': {} @@ -78,7 +95,6 @@ class TestHassIOComponent(object): ho.DOMAIN: {}, } - os.environ['HASSIO'] = "127.0.0.1" self.url = "http://127.0.0.1/{}" self.error_msg = { @@ -94,7 +110,7 @@ class TestHassIOComponent(object): """Stop everything that was started.""" self.hass.stop() - def test_rest_command_timeout(self, aioclient_mock): + def test_rest_command_timeout(self, aioclient_mock, hassio_env): """Call a hassio with timeout.""" aioclient_mock.get( "http://127.0.0.1/supervisor/ping", json=self.ok_msg) @@ -109,7 +125,7 @@ class TestHassIOComponent(object): assert len(aioclient_mock.mock_calls) == 2 - def test_rest_command_aiohttp_error(self, aioclient_mock): + def test_rest_command_aiohttp_error(self, aioclient_mock, hassio_env): """Call a hassio with aiohttp exception.""" aioclient_mock.get( "http://127.0.0.1/supervisor/ping", json=self.ok_msg) @@ -124,7 +140,7 @@ class TestHassIOComponent(object): assert len(aioclient_mock.mock_calls) == 2 - def test_rest_command_http_error(self, aioclient_mock): + def test_rest_command_http_error(self, aioclient_mock, hassio_env): """Call a hassio with status code 503.""" aioclient_mock.get( "http://127.0.0.1/supervisor/ping", json=self.ok_msg) @@ -139,7 +155,7 @@ class TestHassIOComponent(object): assert len(aioclient_mock.mock_calls) == 2 - def test_rest_command_http_error_api(self, aioclient_mock): + def test_rest_command_http_error_api(self, aioclient_mock, hassio_env): """Call a hassio with status code 503.""" aioclient_mock.get( "http://127.0.0.1/supervisor/ping", json=self.ok_msg) @@ -154,7 +170,7 @@ class TestHassIOComponent(object): assert len(aioclient_mock.mock_calls) == 2 - def test_rest_command_http_host_reboot(self, aioclient_mock): + def test_rest_command_http_host_reboot(self, aioclient_mock, hassio_env): """Call a hassio for host reboot.""" aioclient_mock.get( "http://127.0.0.1/supervisor/ping", json=self.ok_msg) @@ -169,7 +185,7 @@ class TestHassIOComponent(object): assert len(aioclient_mock.mock_calls) == 2 - def test_rest_command_http_host_shutdown(self, aioclient_mock): + def test_rest_command_http_host_shutdown(self, aioclient_mock, hassio_env): """Call a hassio for host shutdown.""" aioclient_mock.get( "http://127.0.0.1/supervisor/ping", json=self.ok_msg) @@ -184,7 +200,7 @@ class TestHassIOComponent(object): assert len(aioclient_mock.mock_calls) == 2 - def test_rest_command_http_host_update(self, aioclient_mock): + def test_rest_command_http_host_update(self, aioclient_mock, hassio_env): """Call a hassio for host update.""" aioclient_mock.get( "http://127.0.0.1/supervisor/ping", json=self.ok_msg) @@ -201,7 +217,8 @@ class TestHassIOComponent(object): assert len(aioclient_mock.mock_calls) == 2 assert aioclient_mock.mock_calls[-1][2]['version'] == '0.4' - def test_rest_command_http_supervisor_update(self, aioclient_mock): + def test_rest_command_http_supervisor_update(self, aioclient_mock, + hassio_env): """Call a hassio for supervisor update.""" aioclient_mock.get( "http://127.0.0.1/supervisor/ping", json=self.ok_msg) @@ -218,7 +235,8 @@ class TestHassIOComponent(object): assert len(aioclient_mock.mock_calls) == 2 assert aioclient_mock.mock_calls[-1][2]['version'] == '0.4' - def test_rest_command_http_supervisor_reload(self, aioclient_mock): + def test_rest_command_http_supervisor_reload(self, aioclient_mock, + hassio_env): """Call a hassio for supervisor reload.""" aioclient_mock.get( "http://127.0.0.1/supervisor/ping", json=self.ok_msg) @@ -234,7 +252,8 @@ class TestHassIOComponent(object): assert len(aioclient_mock.mock_calls) == 2 - def test_rest_command_http_homeassistant_update(self, aioclient_mock): + def test_rest_command_http_homeassistant_update(self, aioclient_mock, + hassio_env): """Call a hassio for homeassistant update.""" aioclient_mock.get( "http://127.0.0.1/supervisor/ping", json=self.ok_msg) @@ -251,7 +270,7 @@ class TestHassIOComponent(object): assert len(aioclient_mock.mock_calls) == 2 assert aioclient_mock.mock_calls[-1][2]['version'] == '0.4' - def test_rest_command_http_addon_install(self, aioclient_mock): + def test_rest_command_http_addon_install(self, aioclient_mock, hassio_env): """Call a hassio for addon install.""" aioclient_mock.get( "http://127.0.0.1/supervisor/ping", json=self.ok_msg) @@ -271,7 +290,8 @@ class TestHassIOComponent(object): assert len(aioclient_mock.mock_calls) == 2 assert aioclient_mock.mock_calls[-1][2]['version'] == '0.4' - def test_rest_command_http_addon_uninstall(self, aioclient_mock): + def test_rest_command_http_addon_uninstall(self, aioclient_mock, + hassio_env): """Call a hassio for addon uninstall.""" aioclient_mock.get( "http://127.0.0.1/supervisor/ping", json=self.ok_msg) @@ -289,7 +309,7 @@ class TestHassIOComponent(object): assert len(aioclient_mock.mock_calls) == 2 - def test_rest_command_http_addon_update(self, aioclient_mock): + def test_rest_command_http_addon_update(self, aioclient_mock, hassio_env): """Call a hassio for addon update.""" aioclient_mock.get( "http://127.0.0.1/supervisor/ping", json=self.ok_msg) @@ -309,7 +329,7 @@ class TestHassIOComponent(object): assert len(aioclient_mock.mock_calls) == 2 assert aioclient_mock.mock_calls[-1][2]['version'] == '0.4' - def test_rest_command_http_addon_start(self, aioclient_mock): + def test_rest_command_http_addon_start(self, aioclient_mock, hassio_env): """Call a hassio for addon start.""" aioclient_mock.get( "http://127.0.0.1/supervisor/ping", json=self.ok_msg) @@ -327,7 +347,7 @@ class TestHassIOComponent(object): assert len(aioclient_mock.mock_calls) == 2 - def test_rest_command_http_addon_stop(self, aioclient_mock): + def test_rest_command_http_addon_stop(self, aioclient_mock, hassio_env): """Call a hassio for addon stop.""" aioclient_mock.get( "http://127.0.0.1/supervisor/ping", json=self.ok_msg) @@ -347,10 +367,8 @@ class TestHassIOComponent(object): @asyncio.coroutine -def test_async_hassio_host_view(aioclient_mock, hass, test_client): +def test_async_hassio_host_view(aioclient_mock, hass, test_client, hassio_env): """Test that it fetches the given url.""" - os.environ['HASSIO'] = "127.0.0.1" - aioclient_mock.get("http://127.0.0.1/supervisor/ping", json={ 'result': 'ok', 'data': {} }) @@ -383,10 +401,9 @@ def test_async_hassio_host_view(aioclient_mock, hass, test_client): @asyncio.coroutine -def test_async_hassio_homeassistant_view(aioclient_mock, hass, test_client): +def test_async_hassio_homeassistant_view(aioclient_mock, hass, test_client, + hassio_env): """Test that it fetches the given url.""" - os.environ['HASSIO'] = "127.0.0.1" - aioclient_mock.get("http://127.0.0.1/supervisor/ping", json={ 'result': 'ok', 'data': {} }) @@ -411,12 +428,21 @@ def test_async_hassio_homeassistant_view(aioclient_mock, hass, test_client): assert data['version'] == '0.41' assert data['current'] == '0.41.1' + aioclient_mock.get('http://127.0.0.1/homeassistant/logs', + content=b"That is a test log") + + resp = yield from client.get('/api/hassio/logs/homeassistant') + data = yield from resp.read() + + assert len(aioclient_mock.mock_calls) == 3 + assert resp.status == 200 + assert data == b"That is a test log" + @asyncio.coroutine -def test_async_hassio_supervisor_view(aioclient_mock, hass, test_client): +def test_async_hassio_supervisor_view(aioclient_mock, hass, test_client, + hassio_env): """Test that it fetches the given url.""" - os.environ['HASSIO'] = "127.0.0.1" - aioclient_mock.get("http://127.0.0.1/supervisor/ping", json={ 'result': 'ok', 'data': {} }) @@ -457,12 +483,21 @@ def test_async_hassio_supervisor_view(aioclient_mock, hass, test_client): assert resp.status == 200 assert aioclient_mock.mock_calls[-1][2]['beta'] + aioclient_mock.get('http://127.0.0.1/supervisor/logs', + content=b"That is a test log") + + resp = yield from client.get('/api/hassio/logs/supervisor') + data = yield from resp.read() + + assert len(aioclient_mock.mock_calls) == 4 + assert resp.status == 200 + assert data == b"That is a test log" + @asyncio.coroutine -def test_async_hassio_network_view(aioclient_mock, hass, test_client): +def test_async_hassio_network_view(aioclient_mock, hass, test_client, + hassio_env): """Test that it fetches the given url.""" - os.environ['HASSIO'] = "127.0.0.1" - aioclient_mock.get("http://127.0.0.1/supervisor/ping", json={ 'result': 'ok', 'data': {} }) @@ -508,10 +543,9 @@ def test_async_hassio_network_view(aioclient_mock, hass, test_client): @asyncio.coroutine -def test_async_hassio_addon_view(aioclient_mock, hass, test_client): +def test_async_hassio_addon_view(aioclient_mock, hass, test_client, + hassio_env): """Test that it fetches the given url.""" - os.environ['HASSIO'] = "127.0.0.1" - aioclient_mock.get("http://127.0.0.1/supervisor/ping", json={ 'result': 'ok', 'data': {} }) @@ -559,3 +593,13 @@ def test_async_hassio_addon_view(aioclient_mock, hass, test_client): assert resp.status == 200 assert aioclient_mock.mock_calls[-1][2]['boot'] == 'manual' assert aioclient_mock.mock_calls[-1][2]['options']['bla'] + + aioclient_mock.get('http://127.0.0.1/addons/smb_config/logs', + content=b"That is a test log") + + resp = yield from client.get('/api/hassio/logs/addons/smb_config') + data = yield from resp.read() + + assert len(aioclient_mock.mock_calls) == 4 + assert resp.status == 200 + assert data == b"That is a test log" From 4f5ec3e36080d0001c4d2340220efbcefc3ab72a Mon Sep 17 00:00:00 2001 From: Anders Melchiorsen Date: Mon, 24 Apr 2017 21:09:14 +0200 Subject: [PATCH 034/169] Update aiolifx (#7279) This contains a fix for TypeError bug seen only with LIFX Z. --- homeassistant/components/light/lifx/__init__.py | 2 +- requirements_all.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/light/lifx/__init__.py b/homeassistant/components/light/lifx/__init__.py index 47fb9a7b4be..552e1d8f77f 100644 --- a/homeassistant/components/light/lifx/__init__.py +++ b/homeassistant/components/light/lifx/__init__.py @@ -31,7 +31,7 @@ from . import effects as lifx_effects _LOGGER = logging.getLogger(__name__) -REQUIREMENTS = ['aiolifx==0.4.4'] +REQUIREMENTS = ['aiolifx==0.4.5'] UDP_BROADCAST_PORT = 56700 diff --git a/requirements_all.txt b/requirements_all.txt index c9af77608d6..0f73982eac4 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -48,7 +48,7 @@ aiodns==1.1.1 aiohttp_cors==0.5.3 # homeassistant.components.light.lifx -aiolifx==0.4.4 +aiolifx==0.4.5 # homeassistant.components.alarmdecoder alarmdecoder==0.12.1.0 From 7960206e2e4f8a223cb8a9b492f37e76ac1311e7 Mon Sep 17 00:00:00 2001 From: Stuart Mumford Date: Mon, 24 Apr 2017 20:43:02 +0100 Subject: [PATCH 035/169] Refactor matrix notify service (#7122) * Refactor matrix notify service. This refactor aims to close #6118 by making the save / restore of the authentication tokens much more resilient to failure. It also refactors the module so that all the functionality is part of the class and that a login failure causes the service to fail on setup rather than at message send time. * Make the linter overlords happy * Improve logger levels and messages * small style change * Fix indentation issue --- homeassistant/components/notify/matrix.py | 230 +++++++++++++--------- 1 file changed, 135 insertions(+), 95 deletions(-) diff --git a/homeassistant/components/notify/matrix.py b/homeassistant/components/notify/matrix.py index 15da3f053d8..f1e59f048ba 100644 --- a/homeassistant/components/notify/matrix.py +++ b/homeassistant/components/notify/matrix.py @@ -7,12 +7,13 @@ https://home-assistant.io/components/notify.matrix/ import logging import json import os +from urllib.parse import urlparse import voluptuous as vol import homeassistant.helpers.config_validation as cv -from homeassistant.components.notify import ( - ATTR_TARGET, PLATFORM_SCHEMA, BaseNotificationService) +from homeassistant.components.notify import (ATTR_TARGET, PLATFORM_SCHEMA, + BaseNotificationService) from homeassistant.const import CONF_USERNAME, CONF_PASSWORD, CONF_VERIFY_SSL REQUIREMENTS = ['matrix-client==0.0.6'] @@ -20,7 +21,6 @@ REQUIREMENTS = ['matrix-client==0.0.6'] _LOGGER = logging.getLogger(__name__) SESSION_FILE = 'matrix.conf' -AUTH_TOKENS = dict() CONF_HOMESERVER = 'homeserver' CONF_DEFAULT_ROOM = 'default_room' @@ -36,120 +36,160 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ def get_service(hass, config, discovery_info=None): """Get the Matrix notification service.""" - if not AUTH_TOKENS: - load_token(hass.config.path(SESSION_FILE)) + from matrix_client.client import MatrixRequestError - return MatrixNotificationService( - config.get(CONF_HOMESERVER), - config.get(CONF_DEFAULT_ROOM), - config.get(CONF_VERIFY_SSL), - config.get(CONF_USERNAME), - config.get(CONF_PASSWORD) - ) + try: + return MatrixNotificationService( + os.path.join(hass.config.path(), SESSION_FILE), + config.get(CONF_HOMESERVER), + config.get(CONF_DEFAULT_ROOM), + config.get(CONF_VERIFY_SSL), + config.get(CONF_USERNAME), + config.get(CONF_PASSWORD)) + + except MatrixRequestError: + return None class MatrixNotificationService(BaseNotificationService): - """Wrapper for the Matrix Notification Client.""" + """Send Notifications to a Matrix Room.""" - def __init__(self, homeserver, default_room, verify_ssl, + def __init__(self, config_file, homeserver, default_room, verify_ssl, username, password): - """Buffer configuration data for send_message.""" + """Setup the client.""" + self.session_filepath = config_file + self.auth_tokens = self.get_auth_tokens() + self.homeserver = homeserver self.default_room = default_room self.verify_tls = verify_ssl self.username = username self.password = password - def send_message(self, message, **kwargs): - """Wrapper function pass default parameters to actual send_message.""" - send_message( - message, - self.homeserver, - kwargs.get(ATTR_TARGET) or [self.default_room], - self.verify_tls, - self.username, - self.password - ) + self.mx_id = "{user}@{homeserver}".format( + user=username, homeserver=urlparse(homeserver).netloc) + # Login, this will raise a MatrixRequestError if login is unsuccessful + self.client = self.login() -def load_token(session_file): - """Load authentication tokens from persistent storage, if exists.""" - if not os.path.exists(session_file): - return + def get_auth_tokens(self): + """ + Read sorted authentication tokens from disk. - with open(session_file) as handle: - data = json.load(handle) + Returns the auth_tokens dictionary. + """ + if not os.path.exists(self.session_filepath): + return {} - for mx_id, token in data.items(): - AUTH_TOKENS[mx_id] = token - - -def store_token(mx_id, token): - """Store authentication token to session and persistent storage.""" - AUTH_TOKENS[mx_id] = token - - with open(SESSION_FILE, 'w') as handle: - handle.write(json.dumps(AUTH_TOKENS)) - - -def send_message(message, homeserver, target_rooms, verify_tls, - username, password): - """Do everything thats necessary to send a message to a Matrix room.""" - from matrix_client.client import MatrixClient, MatrixRequestError - - def login_by_token(): - """Login using authentication token.""" try: - return MatrixClient( - base_url=homeserver, - token=AUTH_TOKENS[mx_id], - user_id=username, - valid_cert_check=verify_tls - ) - except MatrixRequestError as ex: - _LOGGER.info("login_by_token: (%d) %s", ex.code, ex.content) + with open(self.session_filepath) as handle: + data = json.load(handle) + + auth_tokens = {} + for mx_id, token in data.items(): + auth_tokens[mx_id] = token + + return auth_tokens + + except (OSError, IOError, PermissionError) as ex: + _LOGGER.warning( + "Loading authentication tokens from file '%s' failed: %s", + self.session_filepath, str(ex)) + return {} + + def store_auth_token(self, token): + """Store authentication token to session and persistent storage.""" + self.auth_tokens[self.mx_id] = token - def login_by_password(): - """Login using password authentication.""" try: - _client = MatrixClient( - base_url=homeserver, valid_cert_check=verify_tls) - _client.login_with_password(username, password) - store_token(mx_id, _client.token) - return _client - except MatrixRequestError as ex: - _LOGGER.error("login_by_password: (%d) %s", ex.code, ex.content) + with open(self.session_filepath, 'w') as handle: + handle.write(json.dumps(self.auth_tokens)) - # This is as close as we can get to the mx_id, since there is no - # homeserver discovery protocol we have to fall back to the homeserver url - # instead of the actual domain it serves. - mx_id = "{user}@{homeserver}".format(user=username, homeserver=homeserver) + # Not saving the tokens to disk should not stop the client, we can just + # login using the password every time. + except (OSError, IOError, PermissionError) as ex: + _LOGGER.warning( + "Storing authentication tokens to file '%s' failed: %s", + self.session_filepath, str(ex)) - if mx_id in AUTH_TOKENS: - client = login_by_token() + def login(self): + """Login to the matrix homeserver and return the client instance.""" + from matrix_client.client import MatrixRequestError + + # Attempt to generate a valid client using either of the two possible + # login methods: + client = None + + # If we have an authentication token + if self.mx_id in self.auth_tokens: + try: + client = self.login_by_token() + _LOGGER.debug("Logged in using stored token.") + + except MatrixRequestError as ex: + _LOGGER.warning( + "Login by token failed, falling back to password. " + "login_by_token raised: (%d) %s", + ex.code, ex.content) + + # If we still don't have a client try password. if not client: - client = login_by_password() - if not client: + try: + client = self.login_by_password() + _LOGGER.debug("Logged in using password.") + + except MatrixRequestError as ex: _LOGGER.error( - "Login failed, both token and username/password invalid") - return - else: - client = login_by_password() - if not client: - _LOGGER.error("Login failed, username/password invalid") - return + "Login failed, both token and username/password invalid " + "login_by_password raised: (%d) %s", + ex.code, ex.content) - rooms = client.get_rooms() - for target_room in target_rooms: - try: - if target_room in rooms: - room = rooms[target_room] - else: - room = client.join_room(target_room) + # re-raise the error so the constructor can catch it. + raise - _LOGGER.debug(room.send_text(message)) - except MatrixRequestError as ex: - _LOGGER.error( - "Unable to deliver message to room '%s': (%d): %s", - target_room, ex.code, ex.content - ) + return client + + def login_by_token(self): + """Login using authentication token and return the client.""" + from matrix_client.client import MatrixClient + + return MatrixClient( + base_url=self.homeserver, + token=self.auth_tokens[self.mx_id], + user_id=self.username, + valid_cert_check=self.verify_tls) + + def login_by_password(self): + """Login using password authentication and return the client.""" + from matrix_client.client import MatrixClient + + _client = MatrixClient( + base_url=self.homeserver, + valid_cert_check=self.verify_tls) + + _client.login_with_password(self.username, self.password) + + self.store_auth_token(_client.token) + + return _client + + def send_message(self, message, **kwargs): + """Send the message to the matrix server.""" + from matrix_client.client import MatrixRequestError + + target_rooms = kwargs.get(ATTR_TARGET) or [self.default_room] + + rooms = self.client.get_rooms() + for target_room in target_rooms: + try: + if target_room in rooms: + room = rooms[target_room] + else: + room = self.client.join_room(target_room) + + _LOGGER.debug(room.send_text(message)) + + except MatrixRequestError as ex: + _LOGGER.error( + "Unable to deliver message to room '%s': (%d): %s", + target_room, ex.code, ex.content) From 104d372dfacad7780926ea7555f0102c96d9e9e3 Mon Sep 17 00:00:00 2001 From: LvivEchoes Date: Mon, 24 Apr 2017 22:43:56 +0300 Subject: [PATCH 036/169] Add support for Ukrainian Language in Google TTS (#7278) --- homeassistant/components/tts/google.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/homeassistant/components/tts/google.py b/homeassistant/components/tts/google.py index e88022a8ba9..88bf9be29b8 100644 --- a/homeassistant/components/tts/google.py +++ b/homeassistant/components/tts/google.py @@ -28,7 +28,7 @@ SUPPORT_LANGUAGES = [ 'hr', 'cs', 'da', 'nl', 'en', 'en-au', 'en-uk', 'en-us', 'eo', 'fi', 'fr', 'de', 'el', 'hi', 'hu', 'is', 'id', 'it', 'ja', 'ko', 'la', 'lv', 'mk', 'no', 'pl', 'pt', 'pt-br', 'ro', 'ru', 'sr', 'sk', 'es', 'es-es', - 'es-us', 'sw', 'sv', 'ta', 'th', 'tr', 'vi', 'cy', + 'es-us', 'sw', 'sv', 'ta', 'th', 'tr', 'vi', 'cy', 'uk', ] DEFAULT_LANG = 'en' From aad375b713c521cfe0d7b845c4c1802487bbbe80 Mon Sep 17 00:00:00 2001 From: Fabrizio Furnari Date: Mon, 24 Apr 2017 22:01:00 +0200 Subject: [PATCH 037/169] Add https certificate expiry sensor (#7272) * fixing rebase issues * cert_expiry: added .coveragerc entry * cert_expiry: renamed to SCAN_INTERVAL, removed Throttle * cert_expiry: better socket exception management * cert_expiry: splitted line too long * Update cert_expiry.py * Fix hass style --- .coveragerc | 1 + .../components/sensor/cert_expiry.py | 97 +++++++++++++++++++ 2 files changed, 98 insertions(+) create mode 100644 homeassistant/components/sensor/cert_expiry.py diff --git a/.coveragerc b/.coveragerc index f9936f26256..c2448f4143a 100644 --- a/.coveragerc +++ b/.coveragerc @@ -335,6 +335,7 @@ omit = homeassistant/components/sensor/broadlink.py homeassistant/components/sensor/dublin_bus_transport.py homeassistant/components/sensor/coinmarketcap.py + homeassistant/components/sensor/cert_expiry.py homeassistant/components/sensor/comed_hourly_pricing.py homeassistant/components/sensor/cpuspeed.py homeassistant/components/sensor/crimereports.py diff --git a/homeassistant/components/sensor/cert_expiry.py b/homeassistant/components/sensor/cert_expiry.py new file mode 100644 index 00000000000..5aca7c49d13 --- /dev/null +++ b/homeassistant/components/sensor/cert_expiry.py @@ -0,0 +1,97 @@ +"""Counts the days an HTTPS (TLS) certificate will expire (days). + +For more details about this sensor please refer to the +documentation at https://home-assistant.io/components/sensor.cert_expiry +""" +import logging +import ssl +import socket +import datetime +import voluptuous as vol + +import homeassistant.helpers.config_validation as cv +from homeassistant.components.sensor import PLATFORM_SCHEMA +from homeassistant.helpers.entity import Entity +from homeassistant.const import (CONF_NAME, CONF_HOST, CONF_PORT) + +_LOGGER = logging.getLogger(__name__) + +DEFAULT_NAME = 'SSL Certificate Expiry' +DEFAULT_PORT = 443 + +SCAN_INTERVAL = datetime.timedelta(hours=12) +TIMEOUT = 10.0 + +PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ + vol.Required(CONF_HOST): cv.string, + vol.Optional(CONF_PORT, default=DEFAULT_PORT): cv.port, + vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string, +}) + + +def setup_platform(hass, config, add_devices, discovery_info=None): + """Setup certificate expiry sensor.""" + server_name = config.get(CONF_HOST) + server_port = config.get(CONF_PORT) + sensor_name = config.get(CONF_NAME) + add_devices([SSLCertificate(sensor_name, server_name, server_port)]) + + +class SSLCertificate(Entity): + """Implements certificate expiry sensor.""" + + def __init__(self, sensor_name, server_name, server_port): + """Initialize the sensor.""" + self.server_name = server_name + self.server_port = server_port + self._name = sensor_name + self._state = None + + @property + def name(self): + """Return the name of the sensor.""" + return self._name + + @property + def unit_of_measurement(self): + """Return the unit this state is expressed in.""" + return 'days' + + @property + def state(self): + """Return the state of the sensor.""" + return self._state + + @property + def icon(self): + """Icon to use in the frontend, if any.""" + return 'mdi:certificate' + + def update(self): + """Fetch certificate information.""" + try: + ctx = ssl.create_default_context() + sock = ctx.wrap_socket(socket.socket(), + server_hostname=self.server_name) + sock.settimeout(TIMEOUT) + sock.connect((self.server_name, self.server_port)) + except socket.gaierror: + _LOGGER.error('Cannot resolve name %s', self.server_name) + except socket.timeout: + _LOGGER.error('Connection timeout with server %s', + self.server_name) + except OSError as excp: + _LOGGER.error('Cannot connect to %s', self.server_name) + raise excp + + try: + cert = sock.getpeercert() + except OSError as excp: + _LOGGER.error('Cannot fetch certificate from %s', + (self.server_name)) + raise excp + + ts_seconds = ssl.cert_time_to_seconds(cert['notAfter']) + timestamp = datetime.datetime.fromtimestamp(ts_seconds) + expiry = timestamp - datetime.datetime.today() + self._state = expiry.days From 16227704d7cfe196d9ef8f3a1b9147368d7773da Mon Sep 17 00:00:00 2001 From: Nils Uliczka Date: Mon, 24 Apr 2017 22:08:06 +0200 Subject: [PATCH 038/169] Fix telegram_polling no first_name or last_name (#7281) * Default to 'N/A' if sender has no first_name or last_name * Fixed as requested --- homeassistant/components/telegram_bot/__init__.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/telegram_bot/__init__.py b/homeassistant/components/telegram_bot/__init__.py index 1cd77491c51..e0adff19731 100644 --- a/homeassistant/components/telegram_bot/__init__.py +++ b/homeassistant/components/telegram_bot/__init__.py @@ -112,8 +112,8 @@ class BaseTelegramBotEntity: event = EVENT_TELEGRAM_COMMAND event_data = { ATTR_USER_ID: data['from']['id'], - ATTR_FROM_FIRST: data['from']['first_name'], - ATTR_FROM_LAST: data['from']['last_name']} + ATTR_FROM_FIRST: data['from'].get('first_name', 'N/A'), + ATTR_FROM_LAST: data['from'].get('last_name', 'N/A')} if data['text'][0] == '/': pieces = data['text'].split(' ') From 215987d5a7ac4a0b1d808d3eb642b1ee15cf1bb3 Mon Sep 17 00:00:00 2001 From: Jan Losinski Date: Mon, 24 Apr 2017 23:01:09 +0200 Subject: [PATCH 039/169] Add script to import state events to InfluxDB (#7254) * Add script to import state events to InfluxDB This adds a script to import recorded events from a recorder database to a InfluxDB instance. This can be useful for initial importing after setup of a InfluxDB. Signed-off-by: Jan Losinski * Fix step argument handling in Influx import Signed-off-by: Jan Losinski * Correct typo in InfluxDB Importer Signed-off-by: Jan Losinski * Update influxdb_import.py --- homeassistant/scripts/influxdb_import.py | 220 +++++++++++++++++++++++ 1 file changed, 220 insertions(+) create mode 100644 homeassistant/scripts/influxdb_import.py diff --git a/homeassistant/scripts/influxdb_import.py b/homeassistant/scripts/influxdb_import.py new file mode 100644 index 00000000000..2d9af4c7529 --- /dev/null +++ b/homeassistant/scripts/influxdb_import.py @@ -0,0 +1,220 @@ +"""Script to import recorded data into influxdb.""" +import argparse +import json +import os + +from typing import List + +import homeassistant.config as config_util + + +def run(script_args: List) -> int: + """The actual script body.""" + from sqlalchemy import create_engine + from sqlalchemy.orm import sessionmaker + from influxdb import InfluxDBClient + from homeassistant.components.recorder import models + from homeassistant.helpers import state as state_helper + from homeassistant.core import State + + parser = argparse.ArgumentParser( + description="import data to influxDB.") + parser.add_argument( + '-c', '--config', + metavar='path_to_config_dir', + default=config_util.get_default_config_dir(), + help="Directory that contains the Home Assistant configuration") + parser.add_argument( + '--uri', + type=str, + help="Connect to URI and import (if other than default sqlite) " + "eg: mysql://localhost/homeassistant") + parser.add_argument( + '-d', '--dbname', + metavar='dbname', + required=True, + help="InfluxDB database name") + parser.add_argument( + '-H', '--host', + metavar='host', + default='127.0.0.1', + help="InfluxDB host address") + parser.add_argument( + '-P', '--port', + metavar='port', + default=8086, + help="InfluxDB host port") + parser.add_argument( + '-u', '--username', + metavar='username', + default='root', + help="InfluxDB username") + parser.add_argument( + '-p', '--password', + metavar='password', + default='root', + help="InfluxDB password") + parser.add_argument( + '-s', '--step', + metavar='step', + default=1000, + help="How many points to import at the same time") + parser.add_argument( + '-t', '--tags', + metavar='tags', + default="", + help="Comma separated list of tags (key:value) for all points") + parser.add_argument( + '-D', '--default-measurement', + metavar='default_measurement', + default="", + help="Store all your points in the same measurement") + parser.add_argument( + '-o', '--override-measurement', + metavar='override_measurement', + default="", + help="Store all your points in the same measurement") + parser.add_argument( + '-e', '--exclude_entities', + metavar='exclude_entities', + default="", + help="Comma separated list of excluded entities") + parser.add_argument( + '-E', '--exclude_domains', + metavar='exclude_domains', + default="", + help="Comma separated list of excluded domains") + parser.add_argument( + "-S", "--simulate", + default=False, + action="store_true", + help=("Do not write points but simulate preprocessing and print " + "statistics")) + parser.add_argument( + '--script', + choices=['influxdb_import']) + + args = parser.parse_args() + simulate = args.simulate + + client = None + if not simulate: + client = InfluxDBClient(args.host, args.port, + args.username, args.password) + client.switch_database(args.dbname) + + config_dir = os.path.join(os.getcwd(), args.config) # type: str + + # Test if configuration directory exists + if not os.path.isdir(config_dir): + if config_dir != config_util.get_default_config_dir(): + print(('Fatal Error: Specified configuration directory does ' + 'not exist {} ').format(config_dir)) + return 1 + + src_db = '{}/home-assistant_v2.db'.format(config_dir) + + if not os.path.exists(src_db) and not args.uri: + print("Fatal Error: Database '{}' does not exist " + "and no uri given".format(src_db)) + return 1 + + uri = args.uri or "sqlite:///{}".format(src_db) + engine = create_engine(uri, echo=False) + session_factory = sessionmaker(bind=engine) + session = session_factory() + step = int(args.step) + + tags = {} + if args.tags: + tags.update(dict(elem.split(":") for elem in args.tags.split(","))) + excl_entities = args.exclude_entities.split(",") + excl_domains = args.exclude_domains.split(",") + override_measurement = args.override_measurement + default_measurement = args.default_measurement + + query = session.query(models.Events).filter( + models.Events.event_type == "state_changed").order_by( + models.Events.time_fired) + + points = [] + count = 0 + from collections import defaultdict + entities = defaultdict(int) + + for event in query: + event_data = json.loads(event.event_data) + state = State.from_dict(event_data.get("new_state")) + + if not state or ( + excl_entities and state.entity_id in excl_entities) or ( + excl_domains and state.domain in excl_domains): + session.expunge(event) + continue + + try: + _state = float(state_helper.state_as_number(state)) + _state_key = "value" + except ValueError: + _state = state.state + _state_key = "state" + + if override_measurement: + measurement = override_measurement + else: + measurement = state.attributes.get('unit_of_measurement') + if measurement in (None, ''): + if default_measurement: + measurement = default_measurement + else: + measurement = state.entity_id + + point = { + 'measurement': measurement, + 'tags': { + 'domain': state.domain, + 'entity_id': state.object_id, + }, + 'time': event.time_fired, + 'fields': { + _state_key: _state, + } + } + + for key, value in state.attributes.items(): + if key != 'unit_of_measurement': + # If the key is already in fields + if key in point['fields']: + key = key + "_" + # Prevent column data errors in influxDB. + # For each value we try to cast it as float + # But if we can not do it we store the value + # as string add "_str" postfix to the field key + try: + point['fields'][key] = float(value) + except (ValueError, TypeError): + new_key = "{}_str".format(key) + point['fields'][new_key] = str(value) + + entities[state.entity_id] += 1 + point['tags'].update(tags) + points.append(point) + session.expunge(event) + if len(points) >= step: + if not simulate: + print("Write {} points to the database".format(len(points))) + client.write_points(points) + count += len(points) + points = [] + + if points: + if not simulate: + print("Write {} points to the database".format(len(points))) + client.write_points(points) + count += len(points) + + print("\nStatistics:") + print("\n".join(["{:6}: {}".format(v, k) for k, v + in sorted(entities.items(), key=lambda x: x[1])])) + print("\nImport finished {} points written".format(count)) + return 0 From f58d200ecb83f45db8d798bbc9c6ce1fb1c76d2c Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Mon, 24 Apr 2017 23:22:40 +0200 Subject: [PATCH 040/169] Fix HassIO bug with supervisor update & log (#7282) --- homeassistant/components/hassio.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/hassio.py b/homeassistant/components/hassio.py index 382c453ca0c..1783dc1fb09 100644 --- a/homeassistant/components/hassio.py +++ b/homeassistant/components/hassio.py @@ -122,7 +122,8 @@ def async_setup(hass, config): yield from hassio.send_command("/host/shutdown") elif service.service == SERVICE_SUPERVISOR_UPDATE: yield from hassio.send_command( - "/supervisor/update", payload=version) + "/supervisor/update", payload=version, + timeout=LONG_TASK_TIMEOUT) elif service.service == SERVICE_SUPERVISOR_RELOAD: yield from hassio.send_command( "/supervisor/reload", timeout=LONG_TASK_TIMEOUT) @@ -183,8 +184,9 @@ class HassIO(object): ) if answer and answer['result'] == 'ok': return answer['data'] if answer['data'] else True + elif answer: + _LOGGER.error("%s return error %s.", cmd, answer['message']) - _LOGGER.error("%s return error %s.", cmd, answer['message']) return False @asyncio.coroutine From 9738bffc3fd4e7459c5f67b6b8ac0b1f9c9e7567 Mon Sep 17 00:00:00 2001 From: Patrick Easters Date: Mon, 24 Apr 2017 17:32:12 -0400 Subject: [PATCH 041/169] Updating ping binary sensor with Windows support (#7253) Fixed ping command syntax and updated regex match --- .../components/binary_sensor/ping.py | 29 ++++++++++++++----- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/homeassistant/components/binary_sensor/ping.py b/homeassistant/components/binary_sensor/ping.py index cee5b81f00d..4a23b2e42ca 100644 --- a/homeassistant/components/binary_sensor/ping.py +++ b/homeassistant/components/binary_sensor/ping.py @@ -35,6 +35,9 @@ SCAN_INTERVAL = timedelta(minutes=5) PING_MATCHER = re.compile( r'(?P\d+.\d+)\/(?P\d+.\d+)\/(?P\d+.\d+)\/(?P\d+.\d+)') +WIN32_PING_MATCHER = re.compile( + r'(?P\d+)ms.+(?P\d+)ms.+(?P\d+)ms') + PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ vol.Required(CONF_HOST): cv.string, vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string, @@ -102,7 +105,7 @@ class PingData(object): if sys.platform == 'win32': self._ping_cmd = [ - 'ping', '-n', str(self._count), '-w 1000', self._ip_address] + 'ping', '-n', str(self._count), '-w', '1000', self._ip_address] else: self._ping_cmd = [ 'ping', '-n', '-q', '-c', str(self._count), '-W1', @@ -114,13 +117,23 @@ class PingData(object): self._ping_cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE) try: out = pinger.communicate() - match = PING_MATCHER.search(str(out).split('\n')[-1]) - rtt_min, rtt_avg, rtt_max, rtt_mdev = match.groups() - return { - 'min': rtt_min, - 'avg': rtt_avg, - 'max': rtt_max, - 'mdev': rtt_mdev} + _LOGGER.debug("Output is %s", str(out)) + if sys.platform == 'win32': + match = WIN32_PING_MATCHER.search(str(out).split('\n')[-1]) + rtt_min, rtt_avg, rtt_max = match.groups() + return { + 'min': rtt_min, + 'avg': rtt_avg, + 'max': rtt_max, + 'mdev': ''} + else: + match = PING_MATCHER.search(str(out).split('\n')[-1]) + rtt_min, rtt_avg, rtt_max, rtt_mdev = match.groups() + return { + 'min': rtt_min, + 'avg': rtt_avg, + 'max': rtt_max, + 'mdev': rtt_mdev} except (subprocess.CalledProcessError, AttributeError): return False From 17bdb9558a056cf550083932327e3d4c581b3da6 Mon Sep 17 00:00:00 2001 From: Keaton Taylor Date: Mon, 24 Apr 2017 19:59:51 -0500 Subject: [PATCH 042/169] Fixes utf-8 encoding no longer required by python-openzwave0.3.3 (#7266) * Fixes utf-8 encoding no longer required by libopenzwave0.3.3 Removes byte encoding for values operation mode, fan mode and swing mode. * Fix zwave climate tests for utf-8 change --- homeassistant/components/climate/zwave.py | 7 ++-- tests/components/climate/test_zwave.py | 40 +++++++++++------------ 2 files changed, 23 insertions(+), 24 deletions(-) diff --git a/homeassistant/components/climate/zwave.py b/homeassistant/components/climate/zwave.py index 74fadb8c5fd..a0fe3ce4c11 100755 --- a/homeassistant/components/climate/zwave.py +++ b/homeassistant/components/climate/zwave.py @@ -189,19 +189,18 @@ class ZWaveClimate(ZWaveDeviceEntity, ClimateDevice): def set_fan_mode(self, fan): """Set new target fan mode.""" if self.values.fan_mode: - self.values.fan_mode.data = bytes(fan, 'utf-8') + self.values.fan_mode.data = fan def set_operation_mode(self, operation_mode): """Set new target operation mode.""" if self.values.mode: - self.values.mode.data = bytes(operation_mode, 'utf-8') + self.values.mode.data = operation_mode def set_swing_mode(self, swing_mode): """Set new target swing mode.""" if self._zxt_120 == 1: if self.values.zxt_120_swing_mode: - self.values.zxt_120_swing_mode.data = bytes( - swing_mode, 'utf-8') + self.values.zxt_120_swing_mode.data = swing_mode @property def device_state_attributes(self): diff --git a/tests/components/climate/test_zwave.py b/tests/components/climate/test_zwave.py index ed9e0cf9daa..fbd6ea7f798 100644 --- a/tests/components/climate/test_zwave.py +++ b/tests/components/climate/test_zwave.py @@ -16,8 +16,8 @@ def device(hass, mock_openzwave): values = MockEntityValues( primary=MockValue(data=1, node=node), temperature=MockValue(data=5, node=node, units=None), - mode=MockValue(data=b'test1', data_items=[0, 1, 2], node=node), - fan_mode=MockValue(data=b'test2', data_items=[3, 4, 5], node=node), + mode=MockValue(data='test1', data_items=[0, 1, 2], node=node), + fan_mode=MockValue(data='test2', data_items=[3, 4, 5], node=node), operating_state=MockValue(data=6, node=node), fan_state=MockValue(data=7, node=node), ) @@ -34,12 +34,12 @@ def device_zxt_120(hass, mock_openzwave): values = MockEntityValues( primary=MockValue(data=1, node=node), temperature=MockValue(data=5, node=node, units=None), - mode=MockValue(data=b'test1', data_items=[0, 1, 2], node=node), - fan_mode=MockValue(data=b'test2', data_items=[3, 4, 5], node=node), + mode=MockValue(data='test1', data_items=[0, 1, 2], node=node), + fan_mode=MockValue(data='test2', data_items=[3, 4, 5], node=node), operating_state=MockValue(data=6, node=node), fan_state=MockValue(data=7, node=node), zxt_120_swing_mode=MockValue( - data=b'test3', data_items=[6, 7, 8], node=node), + data='test3', data_items=[6, 7, 8], node=node), ) device = zwave.get_device(hass, node=node, values=values, node_config={}) @@ -54,16 +54,16 @@ def test_zxt_120_swing_mode(device_zxt_120): assert device._zxt_120 == 1 # Test set mode - assert device.values.zxt_120_swing_mode.data == b'test3' + assert device.values.zxt_120_swing_mode.data == 'test3' device.set_swing_mode('test_swing_set') - assert device.values.zxt_120_swing_mode.data == b'test_swing_set' + assert device.values.zxt_120_swing_mode.data == 'test_swing_set' # Test mode changed value_changed(device.values.zxt_120_swing_mode) - assert device.current_swing_mode == b'test_swing_set' - device.values.zxt_120_swing_mode.data = b'test_swing_updated' + assert device.current_swing_mode == 'test_swing_set' + device.values.zxt_120_swing_mode.data = 'test_swing_updated' value_changed(device.values.zxt_120_swing_mode) - assert device.current_swing_mode == b'test_swing_updated' + assert device.current_swing_mode == 'test_swing_updated' def test_temperature_unit(device): @@ -104,16 +104,16 @@ def test_target_value_set(device): def test_operation_value_set(device): """Test values changed for climate device.""" - assert device.values.mode.data == b'test1' + assert device.values.mode.data == 'test1' device.set_operation_mode('test_set') - assert device.values.mode.data == b'test_set' + assert device.values.mode.data == 'test_set' def test_fan_mode_value_set(device): """Test values changed for climate device.""" - assert device.values.fan_mode.data == b'test2' + assert device.values.fan_mode.data == 'test2' device.set_fan_mode('test_fan_set') - assert device.values.fan_mode.data == b'test_fan_set' + assert device.values.fan_mode.data == 'test_fan_set' def test_target_value_changed(device): @@ -134,18 +134,18 @@ def test_temperature_value_changed(device): def test_operation_value_changed(device): """Test values changed for climate device.""" - assert device.current_operation == b'test1' - device.values.mode.data = b'test_updated' + assert device.current_operation == 'test1' + device.values.mode.data = 'test_updated' value_changed(device.values.mode) - assert device.current_operation == b'test_updated' + assert device.current_operation == 'test_updated' def test_fan_mode_value_changed(device): """Test values changed for climate device.""" - assert device.current_fan_mode == b'test2' - device.values.fan_mode.data = b'test_updated_fan' + assert device.current_fan_mode == 'test2' + device.values.fan_mode.data = 'test_updated_fan' value_changed(device.values.fan_mode) - assert device.current_fan_mode == b'test_updated_fan' + assert device.current_fan_mode == 'test_updated_fan' def test_operating_state_value_changed(device): From 335362ffc4afb7e4bd4fe30ed3152f2ed700497c Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Mon, 24 Apr 2017 20:51:03 -0700 Subject: [PATCH 043/169] Recorder: Check for ENTITY_ID key that contains None value (#7287) --- homeassistant/components/recorder/__init__.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/recorder/__init__.py b/homeassistant/components/recorder/__init__.py index 7e31523f7d1..04322646f80 100644 --- a/homeassistant/components/recorder/__init__.py +++ b/homeassistant/components/recorder/__init__.py @@ -246,8 +246,8 @@ class Recorder(threading.Thread): self.queue.task_done() continue - if ATTR_ENTITY_ID in event.data: - entity_id = event.data[ATTR_ENTITY_ID] + entity_id = event.data.get(ATTR_ENTITY_ID) + if entity_id is not None: domain = split_entity_id(entity_id)[0] # Exclude entities OR From fb297981aff6ab565084205aa938137453f4c854 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Mon, 24 Apr 2017 21:57:27 -0700 Subject: [PATCH 044/169] Upgrade pytradfri to 1.1 (#7290) --- homeassistant/components/light/tradfri.py | 5 +++-- homeassistant/components/tradfri.py | 2 +- requirements_all.txt | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/homeassistant/components/light/tradfri.py b/homeassistant/components/light/tradfri.py index 9c0284c22f6..ca1d5a38330 100644 --- a/homeassistant/components/light/tradfri.py +++ b/homeassistant/components/light/tradfri.py @@ -129,7 +129,8 @@ class Tradfri(Light): """Fetch new state data for this light.""" self._light.update() - # Handle Hue lights paired with the gatway - if self._light_data.hex_color is not None: + # Handle Hue lights paired with the gateway + # hex_color is 0 when bulb is unreachable + if self._light_data.hex_color not in (None, '0'): self._rgb_color = color_util.rgb_hex_to_rgb_list( self._light_data.hex_color) diff --git a/homeassistant/components/tradfri.py b/homeassistant/components/tradfri.py index 098b1788742..3fd51a68db0 100644 --- a/homeassistant/components/tradfri.py +++ b/homeassistant/components/tradfri.py @@ -21,7 +21,7 @@ DOMAIN = 'tradfri' CONFIG_FILE = 'tradfri.conf' KEY_CONFIG = 'tradfri_configuring' KEY_GATEWAY = 'tradfri_gateway' -REQUIREMENTS = ['pytradfri==1.0'] +REQUIREMENTS = ['pytradfri==1.1'] CONFIG_SCHEMA = vol.Schema({ DOMAIN: vol.Schema({ diff --git a/requirements_all.txt b/requirements_all.txt index 0f73982eac4..b13ee19dc79 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -664,7 +664,7 @@ python-wink==1.2.3 pytrackr==0.0.5 # homeassistant.components.tradfri -pytradfri==1.0 +pytradfri==1.1 # homeassistant.components.device_tracker.unifi pyunifi==2.0 From f65d8e12544efc664e3fbe479cc2681aea71ec84 Mon Sep 17 00:00:00 2001 From: Ron Klinkien Date: Tue, 25 Apr 2017 06:57:38 +0200 Subject: [PATCH 045/169] Adding group control to tradfri light component (#7248) * Added initial support for tradfri group control * Tried to keep original variable structure * pylint and pep8 fixes * Fixed lint error about docstring * Removed unneeded stuff, renamed _light. Needs to be released pytradfri version. * Better naming of variables inside add_devices call. --- homeassistant/components/light/tradfri.py | 47 +++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/homeassistant/components/light/tradfri.py b/homeassistant/components/light/tradfri.py index ca1d5a38330..fe30c0f370c 100644 --- a/homeassistant/components/light/tradfri.py +++ b/homeassistant/components/light/tradfri.py @@ -30,6 +30,53 @@ def setup_platform(hass, config, add_devices, discovery_info=None): lights = [dev for dev in devices if dev.has_light_control] add_devices(Tradfri(light) for light in lights) + groups = gateway.get_groups() + add_devices(TradfriGroup(group) for group in groups) + + +class TradfriGroup(Light): + """The platform class required by hass.""" + + def __init__(self, light): + """Initialize a Group.""" + self._group = light + self._name = light.name + + @property + def supported_features(self): + """Flag supported features.""" + return SUPPORT_BRIGHTNESS + + @property + def name(self): + """Return the display name of this group.""" + return self._name + + @property + def is_on(self): + """Return true if group lights are on.""" + return self._group.state + + @property + def brightness(self): + """Brightness of the group lights (an integer in the range 1-255).""" + return self._group.dimmer + + def turn_off(self, **kwargs): + """Instruct the group lights to turn off.""" + return self._group.set_state(0) + + def turn_on(self, **kwargs): + """Instruct the group lights to turn on, or dim.""" + if ATTR_BRIGHTNESS in kwargs: + self._group.set_dimmer(kwargs[ATTR_BRIGHTNESS]) + else: + self._group.set_state(1) + + def update(self): + """Fetch new state data for this group.""" + self._group.update() + class Tradfri(Light): """The platform class required by hass.""" From 699cc7213d9d11fae58fdd1f175f0ee422885914 Mon Sep 17 00:00:00 2001 From: micw Date: Tue, 25 Apr 2017 07:16:47 +0200 Subject: [PATCH 046/169] Feature/rss feed template (#7032) * rss_feed_template initial checking * lint * Remove use of deprecated cgi-escape() * Switching back to chardet==2.3 (resolve failing tests with 3.0) * Code and test improvments * Option 'requires_api_password', default is True --- homeassistant/components/rss_feed_template.py | 104 ++++++++++++++++++ tests/components/test_rss_feed_template.py | 49 +++++++++ 2 files changed, 153 insertions(+) create mode 100644 homeassistant/components/rss_feed_template.py create mode 100644 tests/components/test_rss_feed_template.py diff --git a/homeassistant/components/rss_feed_template.py b/homeassistant/components/rss_feed_template.py new file mode 100644 index 00000000000..a94ab2d04af --- /dev/null +++ b/homeassistant/components/rss_feed_template.py @@ -0,0 +1,104 @@ +""" +Exports sensor values via RSS feed. + +For more details about this platform, please refer to the documentation at +https://home-assistant.io/components/rss_feed_template/ +""" + +import asyncio +from html import escape +from aiohttp import web + +import voluptuous as vol + +from homeassistant.components.http import HomeAssistantView +import homeassistant.helpers.config_validation as cv + +DOMAIN = "rss_feed_template" +DEPENDENCIES = ['http'] + +CONTENT_TYPE_XML = "text/xml" + +CONFIG_SCHEMA = vol.Schema({ + DOMAIN: cv.ordered_dict( + vol.Schema({ + vol.Optional('requires_api_password', default=True): cv.boolean, + vol.Optional('title'): cv.template, + vol.Required('items'): vol.All( + cv.ensure_list, + [{ + vol.Optional('title'): cv.template, + vol.Optional('description'): cv.template, + }] + ) + }) + ) + }, extra=vol.ALLOW_EXTRA) + + +def setup(hass, config): + """Setup the RSS feeds.""" + for (feeduri, feedconfig) in config[DOMAIN].items(): + url = '/api/rss_template/%s' % feeduri + + requires_auth = feedconfig.get('requires_api_password') + + title = feedconfig.get('title') + if title is not None: + title.hass = hass + + items = feedconfig.get('items') + for item in items: + if 'title' in item: + item['title'].hass = hass + if 'description' in item: + item['description'].hass = hass + + rss_view = RssView(url, requires_auth, title, items) + hass.http.register_view(rss_view) + + return True + + +class RssView(HomeAssistantView): + """Export states and other values as RSS.""" + + requires_auth = True + url = None + name = 'rss_template' + _title = None + _items = None + + def __init__(self, url, requires_auth, title, items): + """Initialize the rss view.""" + self.url = url + self.requires_auth = requires_auth + self._title = title + self._items = items + + @asyncio.coroutine + def get(self, request, entity_id=None): + """Generate the rss view XML.""" + response = '\n\n' + + response += '\n' + if self._title is not None: + response += (' %s\n' % + escape(self._title.async_render())) + + for item in self._items: + response += ' \n' + if 'title' in item: + response += ' ' + response += escape(item['title'].async_render()) + response += '\n' + if 'description' in item: + response += ' ' + response += escape(item['description'].async_render()) + response += '\n' + response += ' \n' + + response += '\n' + + return web.Response( + body=response, content_type=CONTENT_TYPE_XML, status=200) diff --git a/tests/components/test_rss_feed_template.py b/tests/components/test_rss_feed_template.py new file mode 100644 index 00000000000..60eb2530ea1 --- /dev/null +++ b/tests/components/test_rss_feed_template.py @@ -0,0 +1,49 @@ +"""The tests for the rss_feed_api component.""" +import asyncio +from xml.etree import ElementTree + +import pytest + +from homeassistant.setup import async_setup_component + + +@pytest.fixture +def mock_http_client(loop, hass, test_client): + """Setup test fixture.""" + config = { + 'rss_feed_template': { + 'testfeed': { + 'title': 'feed title is {{states.test.test1.state}}', + 'items': [{ + 'title': 'item title is {{states.test.test2.state}}', + 'description': 'desc {{states.test.test3.state}}'}]}}} + + loop.run_until_complete(async_setup_component(hass, + 'rss_feed_template', + config)) + return loop.run_until_complete(test_client(hass.http.app)) + + +@asyncio.coroutine +def test_get_noexistant_feed(mock_http_client): + """Test if we can retrieve the correct rss feed.""" + resp = yield from mock_http_client.get('/api/rss_template/otherfeed') + assert resp.status == 404 + + +@asyncio.coroutine +def test_get_rss_feed(mock_http_client, hass): + """Test if we can retrieve the correct rss feed.""" + hass.states.async_set('test.test1', 'a_state_1') + hass.states.async_set('test.test2', 'a_state_2') + hass.states.async_set('test.test3', 'a_state_3') + + resp = yield from mock_http_client.get('/api/rss_template/testfeed') + assert resp.status == 200 + + text = yield from resp.text() + + xml = ElementTree.fromstring(text) + assert xml[0].text == 'feed title is a_state_1' + assert xml[1][0].text == 'item title is a_state_2' + assert xml[1][1].text == 'desc a_state_3' From d79f89e168badb5b483aa8504936370a4247cc31 Mon Sep 17 00:00:00 2001 From: Russell Cloran Date: Mon, 24 Apr 2017 22:24:57 -0700 Subject: [PATCH 047/169] Add support for Zigbee Home Automation (#6263) * Add support for Zigbee Home Automation * Fewer magic numbers * Make optional device config work * Remove non-zha device_tracker stuff * Always return boolean from is_on * Only pass through JSON serializable discovery_info * Update to bellows 0.2.4 * Fewer magic numbers in binary sensor * Populate const structures from a function * Update bellows to 0.2.6 * Fewer magic numbers in light * Take all possible clusters when overriding * Update bellows to 0.2.7 --- .coveragerc | 4 + homeassistant/components/binary_sensor/zha.py | 89 ++++++ homeassistant/components/light/zha.py | 132 ++++++++ homeassistant/components/sensor/zha.py | 99 ++++++ homeassistant/components/switch/zha.py | 49 +++ homeassistant/components/zha/__init__.py | 301 ++++++++++++++++++ homeassistant/components/zha/const.py | 52 +++ requirements_all.txt | 3 + 8 files changed, 729 insertions(+) create mode 100644 homeassistant/components/binary_sensor/zha.py create mode 100644 homeassistant/components/light/zha.py create mode 100644 homeassistant/components/sensor/zha.py create mode 100644 homeassistant/components/switch/zha.py create mode 100644 homeassistant/components/zha/__init__.py create mode 100644 homeassistant/components/zha/const.py diff --git a/.coveragerc b/.coveragerc index c2448f4143a..365a3a23fc1 100644 --- a/.coveragerc +++ b/.coveragerc @@ -154,6 +154,10 @@ omit = homeassistant/components/tado.py homeassistant/components/*/tado.py + homeassistant/components/zha/__init__.py + homeassistant/components/zha/const.py + homeassistant/components/*/zha.py + homeassistant/components/alarm_control_panel/alarmdotcom.py homeassistant/components/alarm_control_panel/concord232.py homeassistant/components/alarm_control_panel/nx584.py diff --git a/homeassistant/components/binary_sensor/zha.py b/homeassistant/components/binary_sensor/zha.py new file mode 100644 index 00000000000..c12aa38bc24 --- /dev/null +++ b/homeassistant/components/binary_sensor/zha.py @@ -0,0 +1,89 @@ +""" +Binary sensors on Zigbee Home Automation networks. + +For more details on this platform, please refer to the documentation +at https://home-assistant.io/components/binary_sensor.zha/ +""" +import asyncio +import logging + +from homeassistant.components.binary_sensor import DOMAIN, BinarySensorDevice +from homeassistant.components import zha + +_LOGGER = logging.getLogger(__name__) + +DEPENDENCIES = ['zha'] + +# ZigBee Cluster Library Zone Type to Home Assistant device class +CLASS_MAPPING = { + 0x000d: 'motion', + 0x0015: 'opening', + 0x0028: 'smoke', + 0x002a: 'moisture', + 0x002b: 'gas', + 0x002d: 'vibration', +} + + +@asyncio.coroutine +def async_setup_platform(hass, config, async_add_devices, discovery_info=None): + """Setup Zigbee Home Automation binary sensors.""" + discovery_info = zha.get_discovery_info(hass, discovery_info) + if discovery_info is None: + return + + from bellows.zigbee.zcl.clusters.security import IasZone + + clusters = discovery_info['clusters'] + + device_class = None + cluster = [c for c in clusters if isinstance(c, IasZone)][0] + if discovery_info['new_join']: + yield from cluster.bind() + ieee = cluster.endpoint.device.application.ieee + yield from cluster.write_attributes({'cie_addr': ieee}) + + try: + zone_type = yield from cluster['zone_type'] + device_class = CLASS_MAPPING.get(zone_type, None) + except Exception: # pylint: disable=broad-except + # If we fail to read from the device, use a non-specific class + pass + + sensor = BinarySensor(device_class, **discovery_info) + async_add_devices([sensor]) + + +class BinarySensor(zha.Entity, BinarySensorDevice): + """ZHA Binary Sensor.""" + + _domain = DOMAIN + + def __init__(self, device_class, **kwargs): + """Initialize ZHA binary sensor.""" + super().__init__(**kwargs) + self._device_class = device_class + from bellows.zigbee.zcl.clusters.security import IasZone + self._ias_zone_cluster = self._clusters[IasZone.cluster_id] + + @property + def is_on(self) -> bool: + """Return True if entity is on.""" + if self._state == 'unknown': + return False + return bool(self._state) + + @property + def device_class(self): + """Return the class of this device, from component DEVICE_CLASSES.""" + return self._device_class + + def cluster_command(self, aps_frame, tsn, command_id, args): + """Handle commands received to this cluster.""" + if command_id == 0: + self._state = args[0] & 3 + _LOGGER.debug("Updated alarm state: %s", self._state) + self.schedule_update_ha_state() + elif command_id == 1: + _LOGGER.debug("Enroll requested") + self.hass.add_job(self._ias_zone_cluster.enroll_response(0, 0)) diff --git a/homeassistant/components/light/zha.py b/homeassistant/components/light/zha.py new file mode 100644 index 00000000000..928850ad512 --- /dev/null +++ b/homeassistant/components/light/zha.py @@ -0,0 +1,132 @@ +""" +Lights on Zigbee Home Automation networks. + +For more details on this platform, please refer to the documentation +at https://home-assistant.io/components/light.zha/ +""" +import asyncio +import logging + +from homeassistant.components import light, zha +from homeassistant.util.color import HASS_COLOR_MIN, color_RGB_to_xy + +_LOGGER = logging.getLogger(__name__) + +DEPENDENCIES = ['zha'] + + +@asyncio.coroutine +def async_setup_platform(hass, config, async_add_devices, discovery_info=None): + """Setup Zigbee Home Automation lights.""" + discovery_info = zha.get_discovery_info(hass, discovery_info) + if discovery_info is None: + return + + endpoint = discovery_info['endpoint'] + try: + primaries = yield from endpoint.light_color['num_primaries'] + discovery_info['num_primaries'] = primaries + except (AttributeError, KeyError): + pass + + async_add_devices([Light(**discovery_info)]) + + +class Light(zha.Entity, light.Light): + """ZHA or ZLL light.""" + + _domain = light.DOMAIN + + def __init__(self, **kwargs): + """Initialize ZHA light.""" + super().__init__(**kwargs) + self._supported_features = 0 + self._color_temp = None + self._xy_color = None + self._brightness = None + + import bellows.zigbee.zcl.clusters as zcl_clusters + if zcl_clusters.general.LevelControl.cluster_id in self._clusters: + self._supported_features |= light.SUPPORT_BRIGHTNESS + self._brightness = 0 + if zcl_clusters.lighting.Color.cluster_id in self._clusters: + # Not sure all color lights necessarily support this directly + # Should we emulate it? + self._supported_features |= light.SUPPORT_COLOR_TEMP + self._color_temp = HASS_COLOR_MIN + # Silly heuristic, not sure if it works widely + if kwargs.get('num_primaries', 1) >= 3: + self._supported_features |= light.SUPPORT_XY_COLOR + self._supported_features |= light.SUPPORT_RGB_COLOR + self._xy_color = (1.0, 1.0) + + @property + def is_on(self) -> bool: + """Return True if entity is on.""" + if self._state == 'unknown': + return False + return bool(self._state) + + @asyncio.coroutine + def async_turn_on(self, **kwargs): + """Turn the entity on.""" + duration = 5 # tenths of s + if light.ATTR_COLOR_TEMP in kwargs: + temperature = kwargs[light.ATTR_COLOR_TEMP] + yield from self._endpoint.light_color.move_to_color_temp( + temperature, duration) + self._color_temp = temperature + + if light.ATTR_XY_COLOR in kwargs: + self._xy_color = kwargs[light.ATTR_XY_COLOR] + elif light.ATTR_RGB_COLOR in kwargs: + xyb = color_RGB_to_xy( + *(int(val) for val in kwargs[light.ATTR_RGB_COLOR])) + self._xy_color = (xyb[0], xyb[1]) + self._brightness = xyb[2] + if light.ATTR_XY_COLOR in kwargs or light.ATTR_RGB_COLOR in kwargs: + yield from self._endpoint.light_color.move_to_color( + int(self._xy_color[0] * 65535), + int(self._xy_color[1] * 65535), + duration, + ) + + if self._brightness is not None: + brightness = kwargs.get('brightness', self._brightness or 255) + self._brightness = brightness + # Move to level with on/off: + yield from self._endpoint.level.move_to_level_with_on_off( + brightness, + duration + ) + self._state = 1 + return + + yield from self._endpoint.on_off.on() + self._state = 1 + + @asyncio.coroutine + def async_turn_off(self, **kwargs): + """Turn the entity off.""" + yield from self._endpoint.on_off.off() + self._state = 0 + + @property + def brightness(self): + """Return the brightness of this light between 0..255.""" + return self._brightness + + @property + def xy_color(self): + """Return the XY color value [float, float].""" + return self._xy_color + + @property + def color_temp(self): + """Return the CT color value in mireds.""" + return self._color_temp + + @property + def supported_features(self): + """Flag supported features.""" + return self._supported_features diff --git a/homeassistant/components/sensor/zha.py b/homeassistant/components/sensor/zha.py new file mode 100644 index 00000000000..ef1fe36873b --- /dev/null +++ b/homeassistant/components/sensor/zha.py @@ -0,0 +1,99 @@ +""" +Sensors on Zigbee Home Automation networks. + +For more details on this platform, please refer to the documentation +at https://home-assistant.io/components/sensor.zha/ +""" +import asyncio +import logging + +from homeassistant.components.sensor import DOMAIN +from homeassistant.components import zha +from homeassistant.const import TEMP_CELSIUS +from homeassistant.util.temperature import convert as convert_temperature + +_LOGGER = logging.getLogger(__name__) + +DEPENDENCIES = ['zha'] + + +@asyncio.coroutine +def async_setup_platform(hass, config, async_add_devices, discovery_info=None): + """Setup Zigbee Home Automation sensors.""" + discovery_info = zha.get_discovery_info(hass, discovery_info) + if discovery_info is None: + return + + sensor = yield from make_sensor(discovery_info) + async_add_devices([sensor]) + + +@asyncio.coroutine +def make_sensor(discovery_info): + """Factory function for ZHA sensors.""" + from bellows.zigbee import zcl + if isinstance(discovery_info['clusters'][0], + zcl.clusters.measurement.TemperatureMeasurement): + sensor = TemperatureSensor(**discovery_info) + else: + sensor = Sensor(**discovery_info) + + clusters = discovery_info['clusters'] + attr = sensor.value_attribute + if discovery_info['new_join']: + cluster = clusters[0] + yield from cluster.bind() + yield from cluster.configure_reporting( + attr, + 300, + 600, + sensor.min_reportable_change, + ) + + return sensor + + +class Sensor(zha.Entity): + """Base ZHA sensor.""" + + _domain = DOMAIN + value_attribute = 0 + min_reportable_change = 1 + + def __init__(self, **kwargs): + """Initialize ZHA sensor.""" + super().__init__(**kwargs) + + @property + def state(self) -> str: + """Return the state of the entity.""" + if isinstance(self._state, float): + return str(round(self._state, 2)) + return self._state + + def attribute_updated(self, attribute, value): + """Handle attribute update from device.""" + _LOGGER.debug("Attribute updated: %s %s %s", self, attribute, value) + if attribute == self.value_attribute: + self._state = value + self.schedule_update_ha_state() + + +class TemperatureSensor(Sensor): + """ZHA temperature sensor.""" + + min_reportable_change = 50 # 0.5'C + + @property + def unit_of_measurement(self): + """Return the unit of measurement of this entityy.""" + return self.hass.config.units.temperature_unit + + @property + def state(self): + """Return the state of the entity.""" + if self._state == 'unknown': + return 'unknown' + celsius = round(float(self._state) / 100, 1) + return convert_temperature(celsius, TEMP_CELSIUS, + self.unit_of_measurement) diff --git a/homeassistant/components/switch/zha.py b/homeassistant/components/switch/zha.py new file mode 100644 index 00000000000..fb327d3ddd9 --- /dev/null +++ b/homeassistant/components/switch/zha.py @@ -0,0 +1,49 @@ +""" +Switches on Zigbee Home Automation networks. + +For more details on this platform, please refer to the documentation +at https://home-assistant.io/components/switch.zha/ +""" +import asyncio +import logging + +from homeassistant.components.switch import DOMAIN, SwitchDevice +from homeassistant.components import zha + +_LOGGER = logging.getLogger(__name__) + +DEPENDENCIES = ['zha'] + + +def setup_platform(hass, config, add_devices, discovery_info=None): + """Setup Zigbee Home Automation switches.""" + discovery_info = zha.get_discovery_info(hass, discovery_info) + if discovery_info is None: + return + + add_devices([Switch(**discovery_info)]) + + +class Switch(zha.Entity, SwitchDevice): + """ZHA switch.""" + + _domain = DOMAIN + + @property + def is_on(self) -> bool: + """Return if the switch is on based on the statemachine.""" + if self._state == 'unknown': + return False + return bool(self._state) + + @asyncio.coroutine + def async_turn_on(self, **kwargs): + """Turn the entity on.""" + yield from self._endpoint.on_off.on() + self._state = 1 + + @asyncio.coroutine + def async_turn_off(self, **kwargs): + """Turn the entity off.""" + yield from self._endpoint.on_off.off() + self._state = 0 diff --git a/homeassistant/components/zha/__init__.py b/homeassistant/components/zha/__init__.py new file mode 100644 index 00000000000..e9e21b634d1 --- /dev/null +++ b/homeassistant/components/zha/__init__.py @@ -0,0 +1,301 @@ +""" +Support for ZigBee Home Automation devices. + +For more details about this component, please refer to the documentation at +https://home-assistant.io/components/zha/ +""" +import asyncio +import logging + +import voluptuous as vol + +from homeassistant import const as ha_const +from homeassistant.helpers import discovery, entity +from homeassistant.util import slugify +import homeassistant.helpers.config_validation as cv + + +# Definitions for interfacing with the rest of HA +REQUIREMENTS = ['bellows==0.2.7'] + +DOMAIN = 'zha' + +CONF_USB_PATH = 'usb_path' +CONF_DATABASE = 'database_path' +CONF_DEVICE_CONFIG = 'device_config' +DATA_DEVICE_CONFIG = 'zha_device_config' + +DEVICE_CONFIG_SCHEMA_ENTRY = vol.Schema({ + vol.Optional(ha_const.CONF_TYPE): cv.string, +}) + +CONFIG_SCHEMA = vol.Schema({ + DOMAIN: vol.Schema({ + CONF_USB_PATH: cv.string, + CONF_DATABASE: cv.string, + vol.Optional(CONF_DEVICE_CONFIG, default={}): + vol.Schema({cv.string: DEVICE_CONFIG_SCHEMA_ENTRY}), + }) +}, extra=vol.ALLOW_EXTRA) + +ATTR_DURATION = "duration" + +SERVICE_PERMIT = "permit" +SERVICE_DESCRIPTIONS = { + SERVICE_PERMIT: { + "description": "Allow nodes to join the Zigbee network", + "fields": { + "duration": { + "description": "Time to permit joins, in seconds", + "example": "60", + }, + }, + }, +} +SERVICE_SCHEMAS = { + SERVICE_PERMIT: vol.Schema({ + vol.Optional(ATTR_DURATION, default=60): + vol.All(vol.Coerce(int), vol.Range(1, 254)), + }), +} + + +# ZigBee definitions +CENTICELSIUS = 'C-100' +# Key in hass.data dict containing discovery info +DISCOVERY_KEY = 'zha_discovery_info' + +# Internal definitions +APPLICATION_CONTROLLER = None +_LOGGER = logging.getLogger(__name__) + + +@asyncio.coroutine +def async_setup(hass, config): + """Setup ZHA. + + Will automatically load components to support devices found on the network. + """ + global APPLICATION_CONTROLLER + + import bellows.ezsp + from bellows.zigbee.application import ControllerApplication + + ezsp_ = bellows.ezsp.EZSP() + usb_path = config[DOMAIN].get(CONF_USB_PATH) + yield from ezsp_.connect(usb_path) + + database = config[DOMAIN].get(CONF_DATABASE) + APPLICATION_CONTROLLER = ControllerApplication(ezsp_, database) + listener = ApplicationListener(hass, config) + APPLICATION_CONTROLLER.add_listener(listener) + yield from APPLICATION_CONTROLLER.startup(auto_form=True) + + for device in APPLICATION_CONTROLLER.devices.values(): + hass.async_add_job(listener.async_device_initialized(device, False)) + + @asyncio.coroutine + def permit(service): + """Allow devices to join this network.""" + duration = service.data.get(ATTR_DURATION) + _LOGGER.info("Permitting joins for %ss", duration) + yield from APPLICATION_CONTROLLER.permit(duration) + + hass.services.async_register(DOMAIN, SERVICE_PERMIT, permit, + SERVICE_DESCRIPTIONS[SERVICE_PERMIT], + SERVICE_SCHEMAS[SERVICE_PERMIT]) + + return True + + +class ApplicationListener: + """Handlers for events that happen on the ZigBee application.""" + + def __init__(self, hass, config): + """Initialize the listener.""" + self._hass = hass + self._config = config + hass.data[DISCOVERY_KEY] = hass.data.get(DISCOVERY_KEY, {}) + + def device_joined(self, device): + """Handle device joined. + + At this point, no information about the device is known other than its + address + """ + # Wait for device_initialized, instead + pass + + def device_initialized(self, device): + """Handle device joined and basic information discovered.""" + self._hass.async_add_job(self.async_device_initialized(device, True)) + + @asyncio.coroutine + def async_device_initialized(self, device, join): + """Handle device joined and basic information discovered (async).""" + import bellows.zigbee.profiles + import homeassistant.components.zha.const as zha_const + zha_const.populate_data() + + for endpoint_id, endpoint in device.endpoints.items(): + if endpoint_id == 0: # ZDO + continue + + discovered_info = yield from _discover_endpoint_info(endpoint) + + component = None + used_clusters = [] + device_key = '%s-%s' % (str(device.ieee), endpoint_id) + node_config = self._config[DOMAIN][CONF_DEVICE_CONFIG].get( + device_key, {}) + + if endpoint.profile_id in bellows.zigbee.profiles.PROFILES: + profile = bellows.zigbee.profiles.PROFILES[endpoint.profile_id] + if zha_const.DEVICE_CLASS.get(endpoint.profile_id, + {}).get(endpoint.device_type, + None): + used_clusters = profile.CLUSTERS[endpoint.device_type] + profile_info = zha_const.DEVICE_CLASS[endpoint.profile_id] + component = profile_info[endpoint.device_type] + + if ha_const.CONF_TYPE in node_config: + component = node_config[ha_const.CONF_TYPE] + used_clusters = zha_const.COMPONENT_CLUSTERS[component] + + if component: + clusters = [endpoint.clusters[c] for c in used_clusters if c in + endpoint.clusters] + discovery_info = { + 'endpoint': endpoint, + 'clusters': clusters, + 'new_join': join, + } + discovery_info.update(discovered_info) + self._hass.data[DISCOVERY_KEY][device_key] = discovery_info + + yield from discovery.async_load_platform( + self._hass, + component, + DOMAIN, + {'discovery_key': device_key}, + self._config, + ) + + for cluster_id, cluster in endpoint.clusters.items(): + cluster_type = type(cluster) + if cluster_id in used_clusters: + continue + if cluster_type not in zha_const.SINGLE_CLUSTER_DEVICE_CLASS: + continue + + component = zha_const.SINGLE_CLUSTER_DEVICE_CLASS[cluster_type] + discovery_info = { + 'endpoint': endpoint, + 'clusters': [cluster], + 'new_join': join, + } + discovery_info.update(discovered_info) + cluster_key = '%s-%s' % (device_key, cluster_id) + self._hass.data[DISCOVERY_KEY][cluster_key] = discovery_info + + yield from discovery.async_load_platform( + self._hass, + component, + DOMAIN, + {'discovery_key': cluster_key}, + self._config, + ) + + +class Entity(entity.Entity): + """A base class for ZHA entities.""" + + _domain = None # Must be overriden by subclasses + + def __init__(self, endpoint, clusters, manufacturer, model, **kwargs): + """Initialize ZHA entity.""" + self._device_state_attributes = {} + ieeetail = ''.join([ + '%02x' % (o, ) for o in endpoint.device.ieee[-4:] + ]) + if manufacturer and model is not None: + self.entity_id = '%s.%s_%s_%s_%s' % ( + self._domain, + slugify(manufacturer), + slugify(model), + ieeetail, + endpoint.endpoint_id, + ) + self._device_state_attributes['friendly_name'] = '%s %s' % ( + manufacturer, + model, + ) + else: + self.entity_id = "%s.zha_%s_%s" % ( + self._domain, + ieeetail, + endpoint.endpoint_id, + ) + for cluster in clusters: + cluster.add_listener(self) + self._endpoint = endpoint + self._clusters = {c.cluster_id: c for c in clusters} + self._state = ha_const.STATE_UNKNOWN + + def attribute_updated(self, attribute, value): + """Handle an attribute updated on this cluster.""" + pass + + def zdo_command(self, aps_frame, tsn, command_id, args): + """Handle a ZDO command received on this cluster.""" + pass + + @property + def device_state_attributes(self): + """Return device specific state attributes.""" + return self._device_state_attributes + + +@asyncio.coroutine +def _discover_endpoint_info(endpoint): + """Find some basic information about an endpoint.""" + extra_info = { + 'manufacturer': None, + 'model': None, + } + if 0 not in endpoint.clusters: + return extra_info + + result, _ = yield from endpoint.clusters[0].read_attributes( + ['manufacturer', 'model'], + allow_cache=True, + ) + extra_info.update(result) + + for key, value in extra_info.items(): + if isinstance(value, bytes): + try: + extra_info[key] = value.decode('ascii') + except UnicodeDecodeError: + # Unsure what the best behaviour here is. Unset the key? + pass + + return extra_info + + +def get_discovery_info(hass, discovery_info): + """Get the full discovery info for a device. + + Some of the info that needs to be passed to platforms is not JSON + serializable, so it cannot be put in the discovery_info dictionary. This + component places that info we need to pass to the platform in hass.data, + and this function is a helper for platforms to retrieve the complete + discovery info. + """ + if discovery_info is None: + return + + discovery_key = discovery_info.get('discovery_key', None) + all_discovery_info = hass.data.get(DISCOVERY_KEY, {}) + discovery_info = all_discovery_info.get(discovery_key, None) + return discovery_info diff --git a/homeassistant/components/zha/const.py b/homeassistant/components/zha/const.py new file mode 100644 index 00000000000..5e2dfb12d6f --- /dev/null +++ b/homeassistant/components/zha/const.py @@ -0,0 +1,52 @@ +"""Constants related to the zha component.""" + +# Populated by populate_data() when zha component is initialized +DEVICE_CLASS = {} +SINGLE_CLUSTER_DEVICE_CLASS = {} +COMPONENT_CLUSTERS = {} + + +def populate_data(): + """Populate data using constants from bellows. + + These cannot be module level, as importing bellows must be done in a + in a function. + """ + from bellows.zigbee import zcl + from bellows.zigbee.profiles import PROFILES, zha, zll + + DEVICE_CLASS[zha.PROFILE_ID] = { + zha.DeviceType.ON_OFF_SWITCH: 'switch', + zha.DeviceType.SMART_PLUG: 'switch', + + zha.DeviceType.ON_OFF_LIGHT: 'light', + zha.DeviceType.DIMMABLE_LIGHT: 'light', + zha.DeviceType.COLOR_DIMMABLE_LIGHT: 'light', + zha.DeviceType.ON_OFF_LIGHT_SWITCH: 'light', + zha.DeviceType.DIMMER_SWITCH: 'light', + zha.DeviceType.COLOR_DIMMER_SWITCH: 'light', + } + DEVICE_CLASS[zll.PROFILE_ID] = { + zll.DeviceType.ON_OFF_LIGHT: 'light', + zll.DeviceType.ON_OFF_PLUGIN_UNIT: 'switch', + zll.DeviceType.DIMMABLE_LIGHT: 'light', + zll.DeviceType.DIMMABLE_PLUGIN_UNIT: 'light', + zll.DeviceType.COLOR_LIGHT: 'light', + zll.DeviceType.EXTENDED_COLOR_LIGHT: 'light', + zll.DeviceType.COLOR_TEMPERATURE_LIGHT: 'light', + } + + SINGLE_CLUSTER_DEVICE_CLASS.update({ + zcl.clusters.general.OnOff: 'switch', + zcl.clusters.measurement.TemperatureMeasurement: 'sensor', + zcl.clusters.security.IasZone: 'binary_sensor', + }) + + # A map of hass components to all Zigbee clusters it could use + for profile_id, classes in DEVICE_CLASS.items(): + profile = PROFILES[profile_id] + for device_type, component in classes.items(): + if component not in COMPONENT_CLUSTERS: + COMPONENT_CLUSTERS[component] = set() + clusters = profile.CLUSTERS[device_type] + COMPONENT_CLUSTERS[component].update(clusters) diff --git a/requirements_all.txt b/requirements_all.txt index b13ee19dc79..5fde3397faa 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -83,6 +83,9 @@ batinfo==0.4.2 # homeassistant.components.sensor.scrape beautifulsoup4==4.5.3 +# homeassistant.components.zha +bellows==0.2.7 + # homeassistant.components.blink blinkpy==0.5.2 From 28aab33cd167443f0532e591e4e6be568b051bbe Mon Sep 17 00:00:00 2001 From: Alan Fischer Date: Tue, 25 Apr 2017 01:17:25 -0600 Subject: [PATCH 048/169] Added scene controller support to the vera component, along with proper polling when a vera device needs it (#7234) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add an optional extended description… --- homeassistant/components/sensor/vera.py | 12 ++++++++++++ homeassistant/components/vera.py | 8 +++++--- requirements_all.txt | 2 +- 3 files changed, 18 insertions(+), 4 deletions(-) diff --git a/homeassistant/components/sensor/vera.py b/homeassistant/components/sensor/vera.py index e0fa16d7907..f6ae00f02a6 100644 --- a/homeassistant/components/sensor/vera.py +++ b/homeassistant/components/sensor/vera.py @@ -5,6 +5,7 @@ For more details about this platform, please refer to the documentation at https://home-assistant.io/components/sensor.vera/ """ import logging +from datetime import timedelta from homeassistant.const import ( TEMP_CELSIUS, TEMP_FAHRENHEIT) @@ -18,6 +19,8 @@ DEPENDENCIES = ['vera'] _LOGGER = logging.getLogger(__name__) +SCAN_INTERVAL = timedelta(seconds=5) + def setup_platform(hass, config, add_devices, discovery_info=None): """Perform the setup for Vera controller devices.""" @@ -33,6 +36,7 @@ class VeraSensor(VeraDevice, Entity): """Initialize the sensor.""" self.current_value = None self._temperature_units = None + self.last_changed_time = None VeraDevice.__init__(self, vera_device, controller) self.entity_id = ENTITY_ID_FORMAT.format(self.vera_id) @@ -70,6 +74,14 @@ class VeraSensor(VeraDevice, Entity): self.current_value = self.vera_device.light elif self.vera_device.category == "Humidity Sensor": self.current_value = self.vera_device.humidity + elif self.vera_device.category == "Scene Controller": + value = self.vera_device.get_last_scene_id(True) + time = self.vera_device.get_last_scene_time(True) + if time == self.last_changed_time: + self.current_value = None + else: + self.current_value = value + self.last_changed_time = time elif self.vera_device.category == "Power meter": power = convert(self.vera_device.power, float, 0) self.current_value = int(round(power, 0)) diff --git a/homeassistant/components/vera.py b/homeassistant/components/vera.py index 9d7494147e0..d01a2965cf9 100644 --- a/homeassistant/components/vera.py +++ b/homeassistant/components/vera.py @@ -20,7 +20,7 @@ from homeassistant.const import ( EVENT_HOMEASSISTANT_STOP) from homeassistant.helpers.entity import Entity -REQUIREMENTS = ['pyvera==0.2.26'] +REQUIREMENTS = ['pyvera==0.2.27'] _LOGGER = logging.getLogger(__name__) @@ -118,6 +118,8 @@ def map_vera_device(vera_device, remap): return 'climate' if isinstance(vera_device, veraApi.VeraCurtain): return 'cover' + if isinstance(vera_device, veraApi.VeraSceneController): + return 'sensor' if isinstance(vera_device, veraApi.VeraSwitch): if vera_device.device_id in remap: return 'light' @@ -153,8 +155,8 @@ class VeraDevice(Entity): @property def should_poll(self): - """No polling needed.""" - return False + """Get polling requirement from vera device.""" + return self.vera_device.should_poll @property def device_state_attributes(self): diff --git a/requirements_all.txt b/requirements_all.txt index 5fde3397faa..f2b1185fcf9 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -676,7 +676,7 @@ pyunifi==2.0 # pyuserinput==0.1.11 # homeassistant.components.vera -pyvera==0.2.26 +pyvera==0.2.27 # homeassistant.components.notify.html5 pywebpush==0.6.1 From f29e0bf53eec22dca65e3a62336cf84797e36bf2 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Tue, 25 Apr 2017 12:40:13 +0200 Subject: [PATCH 049/169] Don't stack up error messages, fix link, and ordering (#7291) --- .../components/sensor/cert_expiry.py | 55 ++++++++++--------- 1 file changed, 30 insertions(+), 25 deletions(-) diff --git a/homeassistant/components/sensor/cert_expiry.py b/homeassistant/components/sensor/cert_expiry.py index 5aca7c49d13..dfc15510d6f 100644 --- a/homeassistant/components/sensor/cert_expiry.py +++ b/homeassistant/components/sensor/cert_expiry.py @@ -1,18 +1,20 @@ -"""Counts the days an HTTPS (TLS) certificate will expire (days). - -For more details about this sensor please refer to the -documentation at https://home-assistant.io/components/sensor.cert_expiry """ -import logging -import ssl -import socket +Counter for the days till a HTTPS (TLS) certificate will expire. + +For more details about this sensor please refer to the documentation at +https://home-assistant.io/components/sensor.cert_expiry/ +""" import datetime +import logging +import socket +import ssl + import voluptuous as vol import homeassistant.helpers.config_validation as cv from homeassistant.components.sensor import PLATFORM_SCHEMA -from homeassistant.helpers.entity import Entity from homeassistant.const import (CONF_NAME, CONF_HOST, CONF_PORT) +from homeassistant.helpers.entity import Entity _LOGGER = logging.getLogger(__name__) @@ -20,25 +22,27 @@ DEFAULT_NAME = 'SSL Certificate Expiry' DEFAULT_PORT = 443 SCAN_INTERVAL = datetime.timedelta(hours=12) + TIMEOUT = 10.0 PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ vol.Required(CONF_HOST): cv.string, - vol.Optional(CONF_PORT, default=DEFAULT_PORT): cv.port, vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string, + vol.Optional(CONF_PORT, default=DEFAULT_PORT): cv.port, }) def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup certificate expiry sensor.""" + """Set up certificate expiry sensor.""" server_name = config.get(CONF_HOST) server_port = config.get(CONF_PORT) sensor_name = config.get(CONF_NAME) - add_devices([SSLCertificate(sensor_name, server_name, server_port)]) + + add_devices([SSLCertificate(sensor_name, server_name, server_port)], True) class SSLCertificate(Entity): - """Implements certificate expiry sensor.""" + """Implementation of the certificate expiry sensor.""" def __init__(self, sensor_name, server_name, server_port): """Initialize the sensor.""" @@ -68,28 +72,29 @@ class SSLCertificate(Entity): return 'mdi:certificate' def update(self): - """Fetch certificate information.""" + """Fetch the certificate information.""" try: ctx = ssl.create_default_context() - sock = ctx.wrap_socket(socket.socket(), - server_hostname=self.server_name) + sock = ctx.wrap_socket( + socket.socket(), server_hostname=self.server_name) sock.settimeout(TIMEOUT) sock.connect((self.server_name, self.server_port)) except socket.gaierror: - _LOGGER.error('Cannot resolve name %s', self.server_name) + _LOGGER.error("Cannot resolve hostname: %s", self.server_name) + return except socket.timeout: - _LOGGER.error('Connection timeout with server %s', - self.server_name) - except OSError as excp: - _LOGGER.error('Cannot connect to %s', self.server_name) - raise excp + _LOGGER.error( + "Connection timeout with server: %s", self.server_name) + return + except OSError: + _LOGGER.error("Cannot connect to %s", self.server_name) + return try: cert = sock.getpeercert() - except OSError as excp: - _LOGGER.error('Cannot fetch certificate from %s', - (self.server_name)) - raise excp + except OSError: + _LOGGER.error("Cannot fetch certificate from %s", self.server_name) + return ts_seconds = ssl.cert_time_to_seconds(cert['notAfter']) timestamp = datetime.datetime.fromtimestamp(ts_seconds) From 8bb952e416412c4758c5c160a040114b8ddc7943 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Tue, 25 Apr 2017 20:18:23 -0700 Subject: [PATCH 050/169] Fix breaking SSL in test HTML5 (#7310) --- homeassistant/components/notify/html5.py | 3 ++- requirements_all.txt | 3 +++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/homeassistant/components/notify/html5.py b/homeassistant/components/notify/html5.py index dbd698fd5a2..419e5aba2f8 100644 --- a/homeassistant/components/notify/html5.py +++ b/homeassistant/components/notify/html5.py @@ -25,7 +25,8 @@ from homeassistant.components.http import HomeAssistantView from homeassistant.components.frontend import add_manifest_json_key from homeassistant.helpers import config_validation as cv -REQUIREMENTS = ['pywebpush==0.6.1', 'PyJWT==1.4.2'] +# pyelliptic is dependency of pywebpush and 1.5.8 contains a breaking change +REQUIREMENTS = ['pywebpush==0.6.1', 'PyJWT==1.4.2', 'pyelliptic==1.5.7'] DEPENDENCIES = ['frontend'] diff --git a/requirements_all.txt b/requirements_all.txt index f2b1185fcf9..36afd132e52 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -524,6 +524,9 @@ pydroid-ipcam==0.8 # homeassistant.components.sensor.ebox pyebox==0.1.0 +# homeassistant.components.notify.html5 +pyelliptic==1.5.7 + # homeassistant.components.media_player.emby pyemby==1.2 From 760d2f1f0a0a4398c0c20b673f53ab4beea79f85 Mon Sep 17 00:00:00 2001 From: Daniel Perna Date: Wed, 26 Apr 2017 05:20:10 +0200 Subject: [PATCH 051/169] Upgrade pyhomematic, extend device support (#7303) --- homeassistant/components/homematic.py | 11 ++++++----- requirements_all.txt | 2 +- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/homeassistant/components/homematic.py b/homeassistant/components/homematic.py index aa9a704f9d4..0b0d073fe1d 100644 --- a/homeassistant/components/homematic.py +++ b/homeassistant/components/homematic.py @@ -21,7 +21,7 @@ from homeassistant.helpers.entity import Entity from homeassistant.helpers.event import track_time_interval from homeassistant.config import load_yaml_config_file -REQUIREMENTS = ["pyhomematic==0.1.24"] +REQUIREMENTS = ["pyhomematic==0.1.25"] DOMAIN = 'homematic' @@ -54,21 +54,22 @@ SERVICE_SET_DEV_VALUE = 'set_dev_value' HM_DEVICE_TYPES = { DISCOVER_SWITCHES: [ 'Switch', 'SwitchPowermeter', 'IOSwitch', 'IPSwitch', - 'IPSwitchPowermeter', 'KeyMatic', 'HMWIOSwitch'], - DISCOVER_LIGHTS: ['Dimmer', 'KeyDimmer'], + 'IPSwitchPowermeter', 'KeyMatic', 'HMWIOSwitch', 'Rain', 'EcoLogic'], + DISCOVER_LIGHTS: ['Dimmer', 'KeyDimmer', 'IPKeyDimmer'], DISCOVER_SENSORS: [ 'SwitchPowermeter', 'Motion', 'MotionV2', 'RemoteMotion', 'MotionIP', 'ThermostatWall', 'AreaThermostat', 'RotaryHandleSensor', 'WaterSensor', 'PowermeterGas', 'LuxSensor', 'WeatherSensor', 'WeatherStation', 'ThermostatWall2', 'TemperatureDiffSensor', - 'TemperatureSensor', 'CO2Sensor', 'IPSwitchPowermeter', 'HMWIOSwitch'], + 'TemperatureSensor', 'CO2Sensor', 'IPSwitchPowermeter', 'HMWIOSwitch', + 'FillingLevel', 'ValveDrive', 'EcoLogic'], DISCOVER_CLIMATE: [ 'Thermostat', 'ThermostatWall', 'MAXThermostat', 'ThermostatWall2', 'MAXWallThermostat', 'IPThermostat'], DISCOVER_BINARY_SENSORS: [ 'ShutterContact', 'Smoke', 'SmokeV2', 'Motion', 'MotionV2', 'RemoteMotion', 'WeatherSensor', 'TiltSensor', 'IPShutterContact', - 'HMWIOSwitch', 'MaxShutterContact'], + 'HMWIOSwitch', 'MaxShutterContact', 'Rain', 'WiredSensor'], DISCOVER_COVER: ['Blind', 'KeyBlind'] } diff --git a/requirements_all.txt b/requirements_all.txt index 36afd132e52..087cb30b554 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -549,7 +549,7 @@ pyharmony==1.0.12 pyhik==0.1.2 # homeassistant.components.homematic -pyhomematic==0.1.24 +pyhomematic==0.1.25 # homeassistant.components.sensor.hydroquebec pyhydroquebec==1.1.0 From 615691efc3ba54e1a7b3c0abb3bf19d940b23852 Mon Sep 17 00:00:00 2001 From: Henrik Nicolaisen Date: Wed, 26 Apr 2017 05:20:54 +0200 Subject: [PATCH 052/169] Issue 7218 update pylgtv to 0.1.7 (#7302) * update pylgtv module to 0.1.7 * update pylgtv to 0.1.7 requirements --- homeassistant/components/media_player/webostv.py | 2 +- homeassistant/components/notify/webostv.py | 2 +- requirements_all.txt | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/homeassistant/components/media_player/webostv.py b/homeassistant/components/media_player/webostv.py index c1b51e2d32a..68de934d28b 100644 --- a/homeassistant/components/media_player/webostv.py +++ b/homeassistant/components/media_player/webostv.py @@ -25,7 +25,7 @@ from homeassistant.const import ( from homeassistant.loader import get_component import homeassistant.helpers.config_validation as cv -REQUIREMENTS = ['pylgtv==0.1.6', +REQUIREMENTS = ['pylgtv==0.1.7', 'websockets==3.2', 'wakeonlan==0.2.2'] diff --git a/homeassistant/components/notify/webostv.py b/homeassistant/components/notify/webostv.py index 0e91fc8698a..c70b198a333 100644 --- a/homeassistant/components/notify/webostv.py +++ b/homeassistant/components/notify/webostv.py @@ -14,7 +14,7 @@ from homeassistant.components.notify import ( ATTR_DATA, BaseNotificationService, PLATFORM_SCHEMA) from homeassistant.const import (CONF_FILENAME, CONF_HOST, CONF_ICON) -REQUIREMENTS = ['pylgtv==0.1.6'] +REQUIREMENTS = ['pylgtv==0.1.7'] _LOGGER = logging.getLogger(__name__) diff --git a/requirements_all.txt b/requirements_all.txt index 087cb30b554..d6a2112d2ed 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -571,7 +571,7 @@ pylast==1.8.0 # homeassistant.components.media_player.webostv # homeassistant.components.notify.webostv -pylgtv==0.1.6 +pylgtv==0.1.7 # homeassistant.components.litejet pylitejet==0.1 From 00f034cef21359bb9e871872dad21494f79f57a2 Mon Sep 17 00:00:00 2001 From: Adam Mills Date: Tue, 25 Apr 2017 23:21:16 -0400 Subject: [PATCH 053/169] Version bump of aioautomatic (#7300) * Version bump of aioautomatic * Update requirements_all.txt --- homeassistant/components/device_tracker/automatic.py | 6 ++++-- requirements_all.txt | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/homeassistant/components/device_tracker/automatic.py b/homeassistant/components/device_tracker/automatic.py index 53d49fd38d9..5f14c3a6785 100644 --- a/homeassistant/components/device_tracker/automatic.py +++ b/homeassistant/components/device_tracker/automatic.py @@ -17,7 +17,7 @@ from homeassistant.helpers.aiohttp_client import async_get_clientsession import homeassistant.helpers.config_validation as cv from homeassistant.helpers.event import async_track_time_interval -REQUIREMENTS = ['aioautomatic==0.1.1'] +REQUIREMENTS = ['aioautomatic==0.2.0'] _LOGGER = logging.getLogger(__name__) @@ -27,6 +27,8 @@ CONF_DEVICES = 'devices' DEFAULT_TIMEOUT = 5 +SCOPE = ['location', 'vehicle:profile', 'trip'] + PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ vol.Required(CONF_CLIENT_ID): cv.string, vol.Required(CONF_SECRET): cv.string, @@ -49,7 +51,7 @@ def async_setup_scanner(hass, config, async_see, discovery_info=None): request_kwargs={'timeout': DEFAULT_TIMEOUT}) try: session = yield from client.create_session_from_password( - config[CONF_USERNAME], config[CONF_PASSWORD]) + SCOPE, config[CONF_USERNAME], config[CONF_PASSWORD]) data = AutomaticData(hass, session, config[CONF_DEVICES], async_see) except aioautomatic.exceptions.AutomaticError as err: _LOGGER.error(str(err)) diff --git a/requirements_all.txt b/requirements_all.txt index d6a2112d2ed..5d260cc09b1 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -38,7 +38,7 @@ SoCo==0.12 TwitterAPI==2.4.5 # homeassistant.components.device_tracker.automatic -aioautomatic==0.1.1 +aioautomatic==0.2.0 # homeassistant.components.sensor.dnsip aiodns==1.1.1 From 569ea0cc01a7a791ff20b288c267d1166835dcd5 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Wed, 26 Apr 2017 10:50:08 +0200 Subject: [PATCH 054/169] Upgrade python-telegram-bot to 5.3.1 (#7311) --- homeassistant/components/notify/telegram.py | 37 +++++++++---------- .../components/telegram_bot/polling.py | 2 +- .../components/telegram_bot/webhooks.py | 2 +- requirements_all.txt | 2 +- 4 files changed, 21 insertions(+), 22 deletions(-) diff --git a/homeassistant/components/notify/telegram.py b/homeassistant/components/notify/telegram.py index 0020c67eefb..7ca2e1ed262 100644 --- a/homeassistant/components/notify/telegram.py +++ b/homeassistant/components/notify/telegram.py @@ -19,7 +19,7 @@ from homeassistant.const import ( _LOGGER = logging.getLogger(__name__) -REQUIREMENTS = ['python-telegram-bot==5.3.0'] +REQUIREMENTS = ['python-telegram-bot==5.3.1'] ATTR_PHOTO = 'photo' ATTR_KEYBOARD = 'keyboard' @@ -47,7 +47,7 @@ def get_service(hass, config, discovery_info=None): api_key = config.get(CONF_API_KEY) bot = telegram.Bot(token=api_key) username = bot.getMe()['username'] - _LOGGER.info("Telegram bot is '%s'", username) + _LOGGER.debug("Telegram bot is '%s'", username) except urllib.error.HTTPError: _LOGGER.error("Please check your access token") return None @@ -59,7 +59,7 @@ def load_data(url=None, file=None, username=None, password=None): """Load photo/document into ByteIO/File container from a source.""" try: if url is not None: - # load photo from url + # Load photo from URL if username is not None and password is not None: req = requests.get(url, auth=(username, password), timeout=15) else: @@ -67,7 +67,7 @@ def load_data(url=None, file=None, username=None, password=None): return io.BytesIO(req.content) elif file is not None: - # load photo from file + # Load photo from file return open(file, "rb") else: _LOGGER.warning("Can't load photo no photo found in params!") @@ -96,7 +96,7 @@ class TelegramNotificationService(BaseNotificationService): title = kwargs.get(ATTR_TITLE) data = kwargs.get(ATTR_DATA) - # exists data for send a photo/location + # Exists data for send a photo/location if data is not None and ATTR_PHOTO in data: photos = data.get(ATTR_PHOTO, None) photos = photos if isinstance(photos, list) else [photos] @@ -120,11 +120,10 @@ class TelegramNotificationService(BaseNotificationService): parse_mode = telegram.parsemode.ParseMode.MARKDOWN - # send message + # Send message try: - self.bot.sendMessage(chat_id=self._chat_id, - text=text, - parse_mode=parse_mode) + self.bot.sendMessage( + chat_id=self._chat_id, text=text, parse_mode=parse_mode) except telegram.error.TelegramError: _LOGGER.exception("Error sending message") @@ -135,8 +134,8 @@ class TelegramNotificationService(BaseNotificationService): keyboard = telegram.ReplyKeyboardMarkup([ [key.strip() for key in row.split(",")] for row in keys]) try: - self.bot.sendMessage(chat_id=self._chat_id, text=message, - reply_markup=keyboard) + self.bot.sendMessage( + chat_id=self._chat_id, text=message, reply_markup=keyboard) except telegram.error.TelegramError: _LOGGER.exception("Error sending message") @@ -145,7 +144,7 @@ class TelegramNotificationService(BaseNotificationService): import telegram caption = data.get(ATTR_CAPTION) - # send photo + # Send photo try: photo = load_data( url=data.get(ATTR_URL), @@ -153,8 +152,8 @@ class TelegramNotificationService(BaseNotificationService): username=data.get(ATTR_USERNAME), password=data.get(ATTR_PASSWORD), ) - self.bot.sendPhoto(chat_id=self._chat_id, - photo=photo, caption=caption) + self.bot.sendPhoto( + chat_id=self._chat_id, photo=photo, caption=caption) except telegram.error.TelegramError: _LOGGER.exception("Error sending photo") @@ -171,8 +170,8 @@ class TelegramNotificationService(BaseNotificationService): username=data.get(ATTR_USERNAME), password=data.get(ATTR_PASSWORD), ) - self.bot.sendDocument(chat_id=self._chat_id, - document=document, caption=caption) + self.bot.sendDocument( + chat_id=self._chat_id, document=document, caption=caption) except telegram.error.TelegramError: _LOGGER.exception("Error sending document") @@ -182,9 +181,9 @@ class TelegramNotificationService(BaseNotificationService): latitude = float(gps.get(ATTR_LATITUDE, 0.0)) longitude = float(gps.get(ATTR_LONGITUDE, 0.0)) - # send location + # Send location try: - self.bot.sendLocation(chat_id=self._chat_id, - latitude=latitude, longitude=longitude) + self.bot.sendLocation( + chat_id=self._chat_id, latitude=latitude, longitude=longitude) except telegram.error.TelegramError: _LOGGER.exception("Error sending location") diff --git a/homeassistant/components/telegram_bot/polling.py b/homeassistant/components/telegram_bot/polling.py index 3e0dfa89375..d46c3f539d2 100644 --- a/homeassistant/components/telegram_bot/polling.py +++ b/homeassistant/components/telegram_bot/polling.py @@ -16,7 +16,7 @@ from homeassistant.helpers.aiohttp_client import async_get_clientsession _LOGGER = logging.getLogger(__name__) -REQUIREMENTS = ['python-telegram-bot==5.3.0'] +REQUIREMENTS = ['python-telegram-bot==5.3.1'] PLATFORM_SCHEMA = PLATFORM_SCHEMA diff --git a/homeassistant/components/telegram_bot/webhooks.py b/homeassistant/components/telegram_bot/webhooks.py index 9fddf18d278..3444c58809a 100644 --- a/homeassistant/components/telegram_bot/webhooks.py +++ b/homeassistant/components/telegram_bot/webhooks.py @@ -21,7 +21,7 @@ from homeassistant.const import CONF_API_KEY from homeassistant.components.http.util import get_real_ip DEPENDENCIES = ['http'] -REQUIREMENTS = ['python-telegram-bot==5.3.0'] +REQUIREMENTS = ['python-telegram-bot==5.3.1'] _LOGGER = logging.getLogger(__name__) diff --git a/requirements_all.txt b/requirements_all.txt index 5d260cc09b1..7de498f24cc 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -655,7 +655,7 @@ python-synology==0.1.0 # homeassistant.components.notify.telegram # homeassistant.components.telegram_bot.polling # homeassistant.components.telegram_bot.webhooks -python-telegram-bot==5.3.0 +python-telegram-bot==5.3.1 # homeassistant.components.sensor.twitch python-twitch==1.3.0 From d2fb4675e1547e701d2f6cc354425925d3cee88e Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Wed, 26 Apr 2017 07:37:05 -0700 Subject: [PATCH 055/169] Disable Open Z-Wave in Docker (#7315) --- Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index 579229d154a..1ecb0f1fe65 100644 --- a/Dockerfile +++ b/Dockerfile @@ -5,7 +5,7 @@ MAINTAINER Paulus Schoutsen #ENV INSTALL_TELLSTICK no #ENV INSTALL_OPENALPR no #ENV INSTALL_FFMPEG no -#ENV INSTALL_OPENZWAVE no +ENV INSTALL_OPENZWAVE no #ENV INSTALL_LIBCEC no #ENV INSTALL_PHANTOMJS no #ENV INSTALL_COAP_CLIENT no @@ -27,4 +27,4 @@ RUN pip3 install --no-cache-dir -r requirements_all.txt && \ # Copy source COPY . . -CMD [ "python", "-m", "homeassistant", "--config", "/config" ] \ No newline at end of file +CMD [ "python", "-m", "homeassistant", "--config", "/config" ] From ffb8872f959d4e9b935c3dcded7b33dbd99b7d4f Mon Sep 17 00:00:00 2001 From: Anders Melchiorsen Date: Wed, 26 Apr 2017 17:21:14 +0200 Subject: [PATCH 056/169] LIFX: use white light when setting a specific temperature (#7256) * Default to white when setting LIFX temperature Changing the temperature of a saturated color is possible but not very interesting. So assume that a change of the temperature implies setting the color to white, unless a different color is actually specified. This makes the frontend temperature picker much more useful because it can now be used to get away from a colored light. * Default to a neutral white temperature when setting LIFX colors This means that setting a particular color will always give the same output, no matter what the temperature was previously at. * Find brightness after colors Now the color_temp logic will not see a changed color when setting temperature+brightness and thus we will actually get a white light in this situation. The XY conversion can then not use brightness as input. This is not an issue because XY only affects hue and saturation, not brightness. So we can just use an arbitrary value as brightness input. * Add a simple comment to a complex conditional --- .../components/light/lifx/__init__.py | 36 +++++++++++-------- 1 file changed, 21 insertions(+), 15 deletions(-) diff --git a/homeassistant/components/light/lifx/__init__.py b/homeassistant/components/light/lifx/__init__.py index 552e1d8f77f..c43b901e910 100644 --- a/homeassistant/components/light/lifx/__init__.py +++ b/homeassistant/components/light/lifx/__init__.py @@ -353,27 +353,33 @@ class LIFXLight(Light): saturation = self._sat brightness = self._bri + if ATTR_XY_COLOR in kwargs: + hue, saturation, _ = \ + color_util.color_xy_brightness_to_hsv( + *kwargs[ATTR_XY_COLOR], + ibrightness=255) + saturation = saturation * (BYTE_MAX + 1) + changed_color = True + + # When color or temperature is set, use a default value for the other + if ATTR_COLOR_TEMP in kwargs: + kelvin = int(color_temperature_mired_to_kelvin( + kwargs[ATTR_COLOR_TEMP])) + if not changed_color: + saturation = 0 + changed_color = True + else: + if changed_color: + kelvin = 3500 + else: + kelvin = self._kel + if ATTR_BRIGHTNESS in kwargs: brightness = kwargs[ATTR_BRIGHTNESS] * (BYTE_MAX + 1) changed_color = True else: brightness = self._bri - if ATTR_XY_COLOR in kwargs: - hue, saturation, _ = \ - color_util.color_xy_brightness_to_hsv( - *kwargs[ATTR_XY_COLOR], - ibrightness=(brightness // (BYTE_MAX + 1))) - saturation = saturation * (BYTE_MAX + 1) - changed_color = True - - if ATTR_COLOR_TEMP in kwargs: - kelvin = int(color_temperature_mired_to_kelvin( - kwargs[ATTR_COLOR_TEMP])) - changed_color = True - else: - kelvin = self._kel - return [[hue, saturation, brightness, kelvin], changed_color] def set_power(self, power): From 3374169c741f8890a24bd9c4996ebd143c4e3b34 Mon Sep 17 00:00:00 2001 From: Jan Losinski Date: Wed, 26 Apr 2017 21:14:52 +0200 Subject: [PATCH 057/169] Allow InfluxDB to blacklist domains (#7264) * Allow InfluxDB to blacklist domains This adds an option to InfluxDB to blacklist whole domains. This is useful for domains like automation or script, where no statistic data is needed. Signed-off-by: Jan Losinski * Add unittest for InfluxDB domain blacklist Signed-off-by: Jan Losinski * Use common include/exclude config for InfluxDB. Its now the same syntax as it is for recorder. Signed-off-by: Jan Losinski * Add unittests for InfluxDB include whitelist. There where no tests for that feature before. Signed-off-by: Jan Losinski --- homeassistant/components/influxdb.py | 33 +++++-- tests/components/test_influxdb.py | 132 ++++++++++++++++++++++++++- 2 files changed, 153 insertions(+), 12 deletions(-) diff --git a/homeassistant/components/influxdb.py b/homeassistant/components/influxdb.py index 430c5cbe4c6..58479b6c14e 100644 --- a/homeassistant/components/influxdb.py +++ b/homeassistant/components/influxdb.py @@ -10,8 +10,8 @@ import voluptuous as vol from homeassistant.const import ( EVENT_STATE_CHANGED, STATE_UNAVAILABLE, STATE_UNKNOWN, CONF_HOST, - CONF_PORT, CONF_SSL, CONF_VERIFY_SSL, CONF_USERNAME, CONF_BLACKLIST, - CONF_PASSWORD, CONF_WHITELIST) + CONF_PORT, CONF_SSL, CONF_VERIFY_SSL, CONF_USERNAME, CONF_PASSWORD, + CONF_EXCLUDE, CONF_INCLUDE, CONF_DOMAINS, CONF_ENTITIES) from homeassistant.helpers import state as state_helper import homeassistant.helpers.config_validation as cv @@ -23,6 +23,7 @@ CONF_DB_NAME = 'database' CONF_TAGS = 'tags' CONF_DEFAULT_MEASUREMENT = 'default_measurement' CONF_OVERRIDE_MEASUREMENT = 'override_measurement' +CONF_BLACKLIST_DOMAINS = "blacklist_domains" DEFAULT_DATABASE = 'home_assistant' DEFAULT_VERIFY_SSL = True @@ -34,8 +35,16 @@ CONFIG_SCHEMA = vol.Schema({ vol.Optional(CONF_HOST): cv.string, vol.Inclusive(CONF_USERNAME, 'authentication'): cv.string, vol.Inclusive(CONF_PASSWORD, 'authentication'): cv.string, - vol.Optional(CONF_BLACKLIST, default=[]): - vol.All(cv.ensure_list, [cv.entity_id]), + vol.Optional(CONF_EXCLUDE, default={}): vol.Schema({ + vol.Optional(CONF_ENTITIES, default=[]): cv.entity_ids, + vol.Optional(CONF_DOMAINS, default=[]): + vol.All(cv.ensure_list, [cv.string]) + }), + vol.Optional(CONF_INCLUDE, default={}): vol.Schema({ + vol.Optional(CONF_ENTITIES, default=[]): cv.entity_ids, + vol.Optional(CONF_DOMAINS, default=[]): + vol.All(cv.ensure_list, [cv.string]) + }), vol.Optional(CONF_DB_NAME, default=DEFAULT_DATABASE): cv.string, vol.Optional(CONF_PORT): cv.port, vol.Optional(CONF_SSL): cv.boolean, @@ -43,8 +52,6 @@ CONFIG_SCHEMA = vol.Schema({ vol.Optional(CONF_OVERRIDE_MEASUREMENT): cv.string, vol.Optional(CONF_TAGS, default={}): vol.Schema({cv.string: cv.string}), - vol.Optional(CONF_WHITELIST, default=[]): - vol.All(cv.ensure_list, [cv.entity_id]), vol.Optional(CONF_VERIFY_SSL, default=DEFAULT_VERIFY_SSL): cv.boolean, }), }, extra=vol.ALLOW_EXTRA) @@ -77,8 +84,12 @@ def setup(hass, config): if CONF_SSL in conf: kwargs['ssl'] = conf[CONF_SSL] - blacklist = conf.get(CONF_BLACKLIST) - whitelist = conf.get(CONF_WHITELIST) + include = conf.get(CONF_INCLUDE, {}) + exclude = conf.get(CONF_EXCLUDE, {}) + whitelist_e = set(include.get(CONF_ENTITIES, [])) + whitelist_d = set(include.get(CONF_DOMAINS, [])) + blacklist_e = set(exclude.get(CONF_ENTITIES, [])) + blacklist_d = set(exclude.get(CONF_DOMAINS, [])) tags = conf.get(CONF_TAGS) default_measurement = conf.get(CONF_DEFAULT_MEASUREMENT) override_measurement = conf.get(CONF_OVERRIDE_MEASUREMENT) @@ -97,11 +108,13 @@ def setup(hass, config): state = event.data.get('new_state') if state is None or state.state in ( STATE_UNKNOWN, '', STATE_UNAVAILABLE) or \ - state.entity_id in blacklist: + state.entity_id in blacklist_e or \ + state.domain in blacklist_d: return try: - if whitelist and state.entity_id not in whitelist: + if (whitelist_e and state.entity_id not in whitelist_e) or \ + (whitelist_d and state.domain not in whitelist_d): return _state = float(state_helper.state_as_number(state)) diff --git a/tests/components/test_influxdb.py b/tests/components/test_influxdb.py index c1ad2672365..ab1f8916c37 100644 --- a/tests/components/test_influxdb.py +++ b/tests/components/test_influxdb.py @@ -96,7 +96,10 @@ class TestInfluxDB(unittest.TestCase): 'host': 'host', 'username': 'user', 'password': 'pass', - 'blacklist': ['fake.blacklisted'] + 'exclude': { + 'entities': ['fake.blacklisted'], + 'domains': ['another_fake'] + } } } assert setup_component(self.hass, influxdb.DOMAIN, config) @@ -273,6 +276,129 @@ class TestInfluxDB(unittest.TestCase): self.assertFalse(mock_client.return_value.write_points.called) mock_client.return_value.write_points.reset_mock() + def test_event_listener_blacklist_domain(self, mock_client): + """Test the event listener against a blacklist.""" + self._setup() + + for domain in ('ok', 'another_fake'): + state = mock.MagicMock( + state=1, domain=domain, + entity_id='{}.something'.format(domain), + object_id='something', attributes={}) + event = mock.MagicMock(data={'new_state': state}, time_fired=12345) + body = [{ + 'measurement': '{}.something'.format(domain), + 'tags': { + 'domain': domain, + 'entity_id': 'something', + }, + 'time': 12345, + 'fields': { + 'value': 1, + }, + }] + self.handler_method(event) + if domain == 'ok': + self.assertEqual( + mock_client.return_value.write_points.call_count, 1 + ) + self.assertEqual( + mock_client.return_value.write_points.call_args, + mock.call(body) + ) + else: + self.assertFalse(mock_client.return_value.write_points.called) + mock_client.return_value.write_points.reset_mock() + + def test_event_listener_whitelist(self, mock_client): + """Test the event listener against a whitelist.""" + config = { + 'influxdb': { + 'host': 'host', + 'username': 'user', + 'password': 'pass', + 'include': { + 'entities': ['fake.included'], + } + } + } + assert setup_component(self.hass, influxdb.DOMAIN, config) + self.handler_method = self.hass.bus.listen.call_args_list[0][0][1] + + for entity_id in ('included', 'default'): + state = mock.MagicMock( + state=1, domain='fake', entity_id='fake.{}'.format(entity_id), + object_id=entity_id, attributes={}) + event = mock.MagicMock(data={'new_state': state}, time_fired=12345) + body = [{ + 'measurement': 'fake.{}'.format(entity_id), + 'tags': { + 'domain': 'fake', + 'entity_id': entity_id, + }, + 'time': 12345, + 'fields': { + 'value': 1, + }, + }] + self.handler_method(event) + if entity_id == 'included': + self.assertEqual( + mock_client.return_value.write_points.call_count, 1 + ) + self.assertEqual( + mock_client.return_value.write_points.call_args, + mock.call(body) + ) + else: + self.assertFalse(mock_client.return_value.write_points.called) + mock_client.return_value.write_points.reset_mock() + + def test_event_listener_whitelist_domain(self, mock_client): + """Test the event listener against a whitelist.""" + config = { + 'influxdb': { + 'host': 'host', + 'username': 'user', + 'password': 'pass', + 'include': { + 'domains': ['fake'], + } + } + } + assert setup_component(self.hass, influxdb.DOMAIN, config) + self.handler_method = self.hass.bus.listen.call_args_list[0][0][1] + + for domain in ('fake', 'another_fake'): + state = mock.MagicMock( + state=1, domain=domain, + entity_id='{}.something'.format(domain), + object_id='something', attributes={}) + event = mock.MagicMock(data={'new_state': state}, time_fired=12345) + body = [{ + 'measurement': '{}.something'.format(domain), + 'tags': { + 'domain': domain, + 'entity_id': 'something', + }, + 'time': 12345, + 'fields': { + 'value': 1, + }, + }] + self.handler_method(event) + if domain == 'fake': + self.assertEqual( + mock_client.return_value.write_points.call_count, 1 + ) + self.assertEqual( + mock_client.return_value.write_points.call_args, + mock.call(body) + ) + else: + self.assertFalse(mock_client.return_value.write_points.called) + mock_client.return_value.write_points.reset_mock() + def test_event_listener_invalid_type(self, mock_client): """Test the event listener when an attirbute has an invalid type.""" self._setup() @@ -343,7 +469,9 @@ class TestInfluxDB(unittest.TestCase): 'username': 'user', 'password': 'pass', 'default_measurement': 'state', - 'blacklist': ['fake.blacklisted'] + 'exclude': { + 'entities': ['fake.blacklisted'] + } } } assert setup_component(self.hass, influxdb.DOMAIN, config) From b14c07a60c25c96b9a8d8fde120df5ea1267261f Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Wed, 26 Apr 2017 22:36:48 -0700 Subject: [PATCH 058/169] Hassio api v3 (#7323) * HassIO rest API v3 * fix content type * fix lint * Update comment * fix content type * change proxy handling * fix handling * fix register * fix addons * fix routing * Update hassio to just proxy * Fix tests * Lint --- homeassistant/components/hassio.py | 361 +++++---------- tests/components/test_hassio.py | 707 ++++++----------------------- 2 files changed, 261 insertions(+), 807 deletions(-) diff --git a/homeassistant/components/hassio.py b/homeassistant/components/hassio.py index 1783dc1fb09..24f25d97d7c 100644 --- a/homeassistant/components/hassio.py +++ b/homeassistant/components/hassio.py @@ -7,70 +7,52 @@ https://home-assistant.io/components/hassio/ import asyncio import logging import os +import re import aiohttp from aiohttp import web -from aiohttp.web_exceptions import HTTPBadGateway +from aiohttp.web_exceptions import ( + HTTPBadGateway, HTTPNotFound, HTTPMethodNotAllowed) +from aiohttp.hdrs import CONTENT_TYPE import async_timeout -import voluptuous as vol -from homeassistant.config import load_yaml_config_file +from homeassistant.const import CONTENT_TYPE_TEXT_PLAIN from homeassistant.components.http import HomeAssistantView from homeassistant.helpers.aiohttp_client import async_get_clientsession -import homeassistant.helpers.config_validation as cv DOMAIN = 'hassio' DEPENDENCIES = ['http'] _LOGGER = logging.getLogger(__name__) -LONG_TASK_TIMEOUT = 900 -DEFAULT_TIMEOUT = 10 +TIMEOUT = 10 -SERVICE_HOST_SHUTDOWN = 'host_shutdown' -SERVICE_HOST_REBOOT = 'host_reboot' +HASSIO_REST_COMMANDS = { + 'host/shutdown': ['POST'], + 'host/reboot': ['POST'], + 'host/update': ['GET'], + 'host/info': ['GET'], + 'supervisor/info': ['GET'], + 'supervisor/update': ['POST'], + 'supervisor/options': ['POST'], + 'supervisor/reload': ['POST'], + 'supervisor/logs': ['GET'], + 'homeassistant/info': ['GET'], + 'homeassistant/update': ['POST'], + 'homeassistant/logs': ['GET'], + 'network/info': ['GET'], + 'network/options': ['GET'], +} -SERVICE_HOST_UPDATE = 'host_update' -SERVICE_HOMEASSISTANT_UPDATE = 'homeassistant_update' - -SERVICE_SUPERVISOR_UPDATE = 'supervisor_update' -SERVICE_SUPERVISOR_RELOAD = 'supervisor_reload' - -SERVICE_ADDON_INSTALL = 'addon_install' -SERVICE_ADDON_UNINSTALL = 'addon_uninstall' -SERVICE_ADDON_UPDATE = 'addon_update' -SERVICE_ADDON_START = 'addon_start' -SERVICE_ADDON_STOP = 'addon_stop' - -ATTR_ADDON = 'addon' -ATTR_VERSION = 'version' - - -SCHEMA_SERVICE_UPDATE = vol.Schema({ - vol.Optional(ATTR_VERSION): cv.string, -}) - -SCHEMA_SERVICE_ADDONS = vol.Schema({ - vol.Required(ATTR_ADDON): cv.slug, -}) - -SCHEMA_SERVICE_ADDONS_VERSION = SCHEMA_SERVICE_ADDONS.extend({ - vol.Optional(ATTR_VERSION): cv.string, -}) - - -SERVICE_MAP = { - SERVICE_HOST_SHUTDOWN: None, - SERVICE_HOST_REBOOT: None, - SERVICE_HOST_UPDATE: SCHEMA_SERVICE_UPDATE, - SERVICE_HOMEASSISTANT_UPDATE: SCHEMA_SERVICE_UPDATE, - SERVICE_SUPERVISOR_UPDATE: SCHEMA_SERVICE_UPDATE, - SERVICE_SUPERVISOR_RELOAD: None, - SERVICE_ADDON_INSTALL: SCHEMA_SERVICE_ADDONS_VERSION, - SERVICE_ADDON_UNINSTALL: SCHEMA_SERVICE_ADDONS, - SERVICE_ADDON_START: SCHEMA_SERVICE_ADDONS, - SERVICE_ADDON_STOP: SCHEMA_SERVICE_ADDONS, - SERVICE_ADDON_UPDATE: SCHEMA_SERVICE_ADDONS_VERSION, +ADDON_REST_COMMANDS = { + 'install': ['POST'], + 'uninstall': ['POST'], + 'start': ['POST'], + 'stop': ['POST'], + 'update': ['POST'], + 'options': ['POST'], + 'info': ['GET'], + 'logs': ['GET'], } @@ -91,71 +73,7 @@ def async_setup(hass, config): _LOGGER.error("Not connected with HassIO!") return False - # register base api views - for base in ('host', 'homeassistant'): - hass.http.register_view(HassIOBaseView(hassio, base)) - for base in ('supervisor', 'network'): - hass.http.register_view(HassIOBaseEditView(hassio, base)) - for base in ('supervisor', 'homeassistant'): - hass.http.register_view(HassIOBaseLogsView(hassio, base)) - - # register view for addons - hass.http.register_view(HassIOAddonsView(hassio)) - hass.http.register_view(HassIOAddonsLogsView(hassio)) - - @asyncio.coroutine - def async_service_handler(service): - """Handle HassIO service calls.""" - addon = service.data.get(ATTR_ADDON) - if ATTR_VERSION in service.data: - version = {ATTR_VERSION: service.data[ATTR_VERSION]} - else: - version = None - - # map to api call - if service.service == SERVICE_HOST_UPDATE: - yield from hassio.send_command( - "/host/update", payload=version) - elif service.service == SERVICE_HOST_REBOOT: - yield from hassio.send_command("/host/reboot") - elif service.service == SERVICE_HOST_SHUTDOWN: - yield from hassio.send_command("/host/shutdown") - elif service.service == SERVICE_SUPERVISOR_UPDATE: - yield from hassio.send_command( - "/supervisor/update", payload=version, - timeout=LONG_TASK_TIMEOUT) - elif service.service == SERVICE_SUPERVISOR_RELOAD: - yield from hassio.send_command( - "/supervisor/reload", timeout=LONG_TASK_TIMEOUT) - elif service.service == SERVICE_HOMEASSISTANT_UPDATE: - yield from hassio.send_command( - "/homeassistant/update", payload=version, - timeout=LONG_TASK_TIMEOUT) - elif service.service == SERVICE_ADDON_INSTALL: - yield from hassio.send_command( - "/addons/{}/install".format(addon), payload=version, - timeout=LONG_TASK_TIMEOUT) - elif service.service == SERVICE_ADDON_UNINSTALL: - yield from hassio.send_command( - "/addons/{}/uninstall".format(addon)) - elif service.service == SERVICE_ADDON_START: - yield from hassio.send_command("/addons/{}/start".format(addon)) - elif service.service == SERVICE_ADDON_STOP: - yield from hassio.send_command( - "/addons/{}/stop".format(addon), timeout=LONG_TASK_TIMEOUT) - elif service.service == SERVICE_ADDON_UPDATE: - yield from hassio.send_command( - "/addons/{}/update".format(addon), payload=version, - timeout=LONG_TASK_TIMEOUT) - - descriptions = yield from hass.loop.run_in_executor( - None, load_yaml_config_file, os.path.join( - os.path.dirname(__file__), 'services.yaml')) - - for service, schema in SERVICE_MAP.items(): - hass.services.async_register( - DOMAIN, service, async_service_handler, - descriptions[DOMAIN][service], schema=schema) + hass.http.register_view(HassIOView(hassio)) return True @@ -169,165 +87,122 @@ class HassIO(object): self.websession = websession self._ip = ip + @asyncio.coroutine def is_connected(self): """Return True if it connected to HassIO supervisor. - Return a coroutine. + This method is a coroutine. """ - return self.send_command("/supervisor/ping") + try: + with async_timeout.timeout(TIMEOUT, loop=self.loop): + request = yield from self.websession.get( + "http://{}{}".format(self._ip, "/supervisor/ping") + ) - @asyncio.coroutine - def send_command(self, cmd, payload=None, timeout=DEFAULT_TIMEOUT): - """Send request to API.""" - answer = yield from self.send_raw( - cmd, payload=payload, timeout=timeout - ) - if answer and answer['result'] == 'ok': - return answer['data'] if answer['data'] else True - elif answer: - _LOGGER.error("%s return error %s.", cmd, answer['message']) + if request.status != 200: + _LOGGER.error("Ping return code %d.", request.status) + return False + + answer = yield from request.json() + return answer and answer['result'] == 'ok' + + except asyncio.TimeoutError: + _LOGGER.error("Timeout on ping request") + + except aiohttp.ClientError as err: + _LOGGER.error("Client error on ping request %s", err) return False @asyncio.coroutine - def send_raw(self, cmd, payload=None, timeout=DEFAULT_TIMEOUT, json=True): - """Send raw request to API.""" + def command_proxy(self, path, request): + """Return a client request with proxy origin for HassIO supervisor. + + This method is a coroutine. + """ try: - with async_timeout.timeout(timeout, loop=self.loop): - request = yield from self.websession.get( - "http://{}{}".format(self._ip, cmd), - timeout=None, json=payload - ) + data = None + headers = None + with async_timeout.timeout(TIMEOUT, loop=self.loop): + data = yield from request.read() + if data: + headers = {CONTENT_TYPE: request.content_type} + else: + data = None - if request.status != 200: - _LOGGER.error("%s return code %d.", cmd, request.status) - return + method = getattr(self.websession, request.method.lower()) + client = yield from method( + "http://{}/{}".format(self._ip, path), data=data, + headers=headers + ) - if json: - return (yield from request.json()) + return client - # get raw output - return (yield from request.read()) + except aiohttp.ClientError as err: + _LOGGER.error("Client error on api %s request %s.", path, err) except asyncio.TimeoutError: - _LOGGER.error("Timeout on api request %s.", cmd) + _LOGGER.error("Client timeout error on api request %s.", path) - except aiohttp.ClientError: - _LOGGER.error("Client error on api request %s.", cmd) + raise HTTPBadGateway() -class HassIOBaseView(HomeAssistantView): +class HassIOView(HomeAssistantView): """HassIO view to handle base part.""" + name = "api:hassio" + url = "/api/hassio/{path:.+}" requires_auth = True - def __init__(self, hassio, base): - """Initialize a hassio base view.""" - self.hassio = hassio - self._url_info = "/{}/info".format(base) - - self.url = "/api/hassio/{}".format(base) - self.name = "api:hassio:{}".format(base) - - @asyncio.coroutine - def get(self, request): - """Get base data.""" - data = yield from self.hassio.send_command(self._url_info) - if not data: - raise HTTPBadGateway() - return web.json_response(data) - - -class HassIOBaseEditView(HassIOBaseView): - """HassIO view to handle base with options support.""" - - def __init__(self, hassio, base): - """Initialize a hassio base edit view.""" - super().__init__(hassio, base) - self._url_options = "/{}/options".format(base) - - @asyncio.coroutine - def post(self, request): - """Set options on host.""" - data = yield from request.json() - - response = yield from self.hassio.send_raw( - self._url_options, payload=data) - if not response: - raise HTTPBadGateway() - return web.json_response(response) - - -class HassIOBaseLogsView(HomeAssistantView): - """HassIO view to handle base logs part.""" - - requires_auth = True - - def __init__(self, hassio, base): - """Initialize a hassio base view.""" - self.hassio = hassio - self._url_logs = "/{}/logs".format(base) - - self.url = "/api/hassio/logs/{}".format(base) - self.name = "api:hassio:logs:{}".format(base) - - @asyncio.coroutine - def get(self, request): - """Get logs.""" - data = yield from self.hassio.send_raw(self._url_logs, json=False) - if not data: - raise HTTPBadGateway() - return web.Response(body=data) - - -class HassIOAddonsView(HomeAssistantView): - """HassIO view to handle addons part.""" - - requires_auth = True - url = "/api/hassio/addons/{addon}" - name = "api:hassio:addons" - def __init__(self, hassio): - """Initialize a hassio addon view.""" + """Initialize a hassio base view.""" self.hassio = hassio @asyncio.coroutine - def get(self, request, addon): - """Get addon data.""" - data = yield from self.hassio.send_command( - "/addons/{}/info".format(addon)) - if not data: - raise HTTPBadGateway() - return web.json_response(data) + def _handle(self, request, path): + """Route data to hassio.""" + if path.startswith('addons/'): + parts = path.split('/') - @asyncio.coroutine - def post(self, request, addon): - """Set options on host.""" - data = yield from request.json() + if len(parts) != 3: + raise HTTPNotFound() - response = yield from self.hassio.send_raw( - "/addons/{}/options".format(addon), payload=data) - if not response: - raise HTTPBadGateway() - return web.json_response(response) + allowed_methods = ADDON_REST_COMMANDS.get(parts[-1]) + else: + allowed_methods = HASSIO_REST_COMMANDS.get(path) + + if allowed_methods is None: + raise HTTPNotFound() + if request.method not in allowed_methods: + raise HTTPMethodNotAllowed(request.method, allowed_methods) + + client = yield from self.hassio.command_proxy(path, request) + + data = yield from client.read() + if path.endswith('/logs'): + return _create_response_log(client, data) + return _create_response(client, data) + + get = _handle + post = _handle -class HassIOAddonsLogsView(HomeAssistantView): - """HassIO view to handle addons logs part.""" +def _create_response(client, data): + """Convert a response from client request.""" + return web.Response( + body=data, + status=client.status, + content_type=client.content_type, + ) - requires_auth = True - url = "/api/hassio/logs/addons/{addon}" - name = "api:hassio:logs:addons" - def __init__(self, hassio): - """Initialize a hassio addon view.""" - self.hassio = hassio +def _create_response_log(client, data): + """Convert a response from client request.""" + # Remove color codes + log = re.sub(r"\x1b(\[.*?[@-~]|\].*?(\x07|\x1b\\))", "", data.decode()) - @asyncio.coroutine - def get(self, request, addon): - """Get addon data.""" - data = yield from self.hassio.send_raw( - "/addons/{}/logs".format(addon), json=False) - if not data: - raise HTTPBadGateway() - return web.Response(body=data) + return web.Response( + text=log, + status=client.status, + content_type=CONTENT_TYPE_TEXT_PLAIN, + ) diff --git a/tests/components/test_hassio.py b/tests/components/test_hassio.py index 959643f7986..53c8697b44a 100644 --- a/tests/components/test_hassio.py +++ b/tests/components/test_hassio.py @@ -1,605 +1,184 @@ """The tests for the hassio component.""" import asyncio import os -from unittest.mock import patch +from unittest.mock import patch, Mock, MagicMock -import aiohttp import pytest import homeassistant.components.hassio as ho -from homeassistant.setup import setup_component, async_setup_component +from homeassistant.setup import async_setup_component -from tests.common import ( - get_test_home_assistant, assert_setup_component) +from tests.common import mock_coro, mock_http_component_app @pytest.fixture def hassio_env(): """Fixture to inject hassio env.""" - with patch.dict(os.environ, {'HASSIO': "127.0.0.1"}) as env_mock: - yield env_mock - - -class TestHassIOSetup(object): - """Test the hassio component.""" - - def setup_method(self): - """Setup things to be run when tests are started.""" - self.hass = get_test_home_assistant() - - self.config = { - ho.DOMAIN: {}, - } - - def teardown_method(self): - """Stop everything that was started.""" - self.hass.stop() - - def test_setup_component(self, aioclient_mock, hassio_env): - """Test setup component.""" - aioclient_mock.get("http://127.0.0.1/supervisor/ping", json={ - 'result': 'ok', 'data': {} - }) - with assert_setup_component(0, ho.DOMAIN): - setup_component(self.hass, ho.DOMAIN, self.config) - - def test_setup_component_bad(self, aioclient_mock): - """Test setup component bad.""" - aioclient_mock.get("http://127.0.0.1/supervisor/ping", json={ - 'result': 'ok', 'data': {} - }) - with assert_setup_component(0, ho.DOMAIN): - assert not setup_component(self.hass, ho.DOMAIN, self.config) - - assert len(aioclient_mock.mock_calls) == 0 - - def test_setup_component_test_service(self, aioclient_mock, hassio_env): - """Test setup component and check if service exits.""" - aioclient_mock.get("http://127.0.0.1/supervisor/ping", json={ - 'result': 'ok', 'data': {} - }) - with assert_setup_component(0, ho.DOMAIN): - setup_component(self.hass, ho.DOMAIN, self.config) - - assert self.hass.services.has_service( - ho.DOMAIN, ho.SERVICE_HOST_REBOOT) - assert self.hass.services.has_service( - ho.DOMAIN, ho.SERVICE_HOST_SHUTDOWN) - assert self.hass.services.has_service( - ho.DOMAIN, ho.SERVICE_HOST_UPDATE) - - assert self.hass.services.has_service( - ho.DOMAIN, ho.SERVICE_SUPERVISOR_UPDATE) - assert self.hass.services.has_service( - ho.DOMAIN, ho.SERVICE_SUPERVISOR_RELOAD) - - assert self.hass.services.has_service( - ho.DOMAIN, ho.SERVICE_ADDON_INSTALL) - assert self.hass.services.has_service( - ho.DOMAIN, ho.SERVICE_ADDON_UNINSTALL) - assert self.hass.services.has_service( - ho.DOMAIN, ho.SERVICE_ADDON_UPDATE) - assert self.hass.services.has_service( - ho.DOMAIN, ho.SERVICE_ADDON_START) - assert self.hass.services.has_service( - ho.DOMAIN, ho.SERVICE_ADDON_STOP) - - -class TestHassIOComponent(object): - """Test the HassIO component.""" - - def setup_method(self): - """Setup things to be run when tests are started.""" - self.hass = get_test_home_assistant() - self.config = { - ho.DOMAIN: {}, - } - - self.url = "http://127.0.0.1/{}" - - self.error_msg = { - 'result': 'error', - 'message': 'Test error', - } - self.ok_msg = { - 'result': 'ok', - 'data': {}, - } - - def teardown_method(self): - """Stop everything that was started.""" - self.hass.stop() - - def test_rest_command_timeout(self, aioclient_mock, hassio_env): - """Call a hassio with timeout.""" - aioclient_mock.get( - "http://127.0.0.1/supervisor/ping", json=self.ok_msg) - with assert_setup_component(0, ho.DOMAIN): - setup_component(self.hass, ho.DOMAIN, self.config) - - aioclient_mock.get( - self.url.format("host/update"), exc=asyncio.TimeoutError()) - - self.hass.services.call(ho.DOMAIN, ho.SERVICE_HOST_UPDATE, {}) - self.hass.block_till_done() - - assert len(aioclient_mock.mock_calls) == 2 - - def test_rest_command_aiohttp_error(self, aioclient_mock, hassio_env): - """Call a hassio with aiohttp exception.""" - aioclient_mock.get( - "http://127.0.0.1/supervisor/ping", json=self.ok_msg) - with assert_setup_component(0, ho.DOMAIN): - setup_component(self.hass, ho.DOMAIN, self.config) - - aioclient_mock.get( - self.url.format("host/update"), exc=aiohttp.ClientError()) - - self.hass.services.call(ho.DOMAIN, ho.SERVICE_HOST_UPDATE, {}) - self.hass.block_till_done() - - assert len(aioclient_mock.mock_calls) == 2 - - def test_rest_command_http_error(self, aioclient_mock, hassio_env): - """Call a hassio with status code 503.""" - aioclient_mock.get( - "http://127.0.0.1/supervisor/ping", json=self.ok_msg) - with assert_setup_component(0, ho.DOMAIN): - setup_component(self.hass, ho.DOMAIN, self.config) - - aioclient_mock.get( - self.url.format("host/update"), status=503) - - self.hass.services.call(ho.DOMAIN, ho.SERVICE_HOST_UPDATE, {}) - self.hass.block_till_done() - - assert len(aioclient_mock.mock_calls) == 2 - - def test_rest_command_http_error_api(self, aioclient_mock, hassio_env): - """Call a hassio with status code 503.""" - aioclient_mock.get( - "http://127.0.0.1/supervisor/ping", json=self.ok_msg) - with assert_setup_component(0, ho.DOMAIN): - setup_component(self.hass, ho.DOMAIN, self.config) - - aioclient_mock.get( - self.url.format("host/update"), json=self.error_msg) - - self.hass.services.call(ho.DOMAIN, ho.SERVICE_HOST_UPDATE, {}) - self.hass.block_till_done() - - assert len(aioclient_mock.mock_calls) == 2 - - def test_rest_command_http_host_reboot(self, aioclient_mock, hassio_env): - """Call a hassio for host reboot.""" - aioclient_mock.get( - "http://127.0.0.1/supervisor/ping", json=self.ok_msg) - with assert_setup_component(0, ho.DOMAIN): - setup_component(self.hass, ho.DOMAIN, self.config) - - aioclient_mock.get( - self.url.format("host/reboot"), json=self.ok_msg) - - self.hass.services.call(ho.DOMAIN, ho.SERVICE_HOST_REBOOT, {}) - self.hass.block_till_done() - - assert len(aioclient_mock.mock_calls) == 2 - - def test_rest_command_http_host_shutdown(self, aioclient_mock, hassio_env): - """Call a hassio for host shutdown.""" - aioclient_mock.get( - "http://127.0.0.1/supervisor/ping", json=self.ok_msg) - with assert_setup_component(0, ho.DOMAIN): - setup_component(self.hass, ho.DOMAIN, self.config) - - aioclient_mock.get( - self.url.format("host/shutdown"), json=self.ok_msg) - - self.hass.services.call(ho.DOMAIN, ho.SERVICE_HOST_SHUTDOWN, {}) - self.hass.block_till_done() - - assert len(aioclient_mock.mock_calls) == 2 - - def test_rest_command_http_host_update(self, aioclient_mock, hassio_env): - """Call a hassio for host update.""" - aioclient_mock.get( - "http://127.0.0.1/supervisor/ping", json=self.ok_msg) - with assert_setup_component(0, ho.DOMAIN): - setup_component(self.hass, ho.DOMAIN, self.config) - - aioclient_mock.get( - self.url.format("host/update"), json=self.ok_msg) - - self.hass.services.call( - ho.DOMAIN, ho.SERVICE_HOST_UPDATE, {'version': '0.4'}) - self.hass.block_till_done() - - assert len(aioclient_mock.mock_calls) == 2 - assert aioclient_mock.mock_calls[-1][2]['version'] == '0.4' - - def test_rest_command_http_supervisor_update(self, aioclient_mock, - hassio_env): - """Call a hassio for supervisor update.""" - aioclient_mock.get( - "http://127.0.0.1/supervisor/ping", json=self.ok_msg) - with assert_setup_component(0, ho.DOMAIN): - setup_component(self.hass, ho.DOMAIN, self.config) - - aioclient_mock.get( - self.url.format("supervisor/update"), json=self.ok_msg) - - self.hass.services.call( - ho.DOMAIN, ho.SERVICE_SUPERVISOR_UPDATE, {'version': '0.4'}) - self.hass.block_till_done() - - assert len(aioclient_mock.mock_calls) == 2 - assert aioclient_mock.mock_calls[-1][2]['version'] == '0.4' - - def test_rest_command_http_supervisor_reload(self, aioclient_mock, - hassio_env): - """Call a hassio for supervisor reload.""" - aioclient_mock.get( - "http://127.0.0.1/supervisor/ping", json=self.ok_msg) - with assert_setup_component(0, ho.DOMAIN): - setup_component(self.hass, ho.DOMAIN, self.config) - - aioclient_mock.get( - self.url.format("supervisor/reload"), json=self.ok_msg) - - self.hass.services.call( - ho.DOMAIN, ho.SERVICE_SUPERVISOR_RELOAD, {}) - self.hass.block_till_done() - - assert len(aioclient_mock.mock_calls) == 2 - - def test_rest_command_http_homeassistant_update(self, aioclient_mock, - hassio_env): - """Call a hassio for homeassistant update.""" - aioclient_mock.get( - "http://127.0.0.1/supervisor/ping", json=self.ok_msg) - with assert_setup_component(0, ho.DOMAIN): - setup_component(self.hass, ho.DOMAIN, self.config) - - aioclient_mock.get( - self.url.format("homeassistant/update"), json=self.ok_msg) - - self.hass.services.call( - ho.DOMAIN, ho.SERVICE_HOMEASSISTANT_UPDATE, {'version': '0.4'}) - self.hass.block_till_done() - - assert len(aioclient_mock.mock_calls) == 2 - assert aioclient_mock.mock_calls[-1][2]['version'] == '0.4' - - def test_rest_command_http_addon_install(self, aioclient_mock, hassio_env): - """Call a hassio for addon install.""" - aioclient_mock.get( - "http://127.0.0.1/supervisor/ping", json=self.ok_msg) - with assert_setup_component(0, ho.DOMAIN): - setup_component(self.hass, ho.DOMAIN, self.config) - - aioclient_mock.get( - self.url.format("addons/smb_config/install"), json=self.ok_msg) - - self.hass.services.call( - ho.DOMAIN, ho.SERVICE_ADDON_INSTALL, { - 'addon': 'smb_config', - 'version': '0.4' - }) - self.hass.block_till_done() - - assert len(aioclient_mock.mock_calls) == 2 - assert aioclient_mock.mock_calls[-1][2]['version'] == '0.4' - - def test_rest_command_http_addon_uninstall(self, aioclient_mock, - hassio_env): - """Call a hassio for addon uninstall.""" - aioclient_mock.get( - "http://127.0.0.1/supervisor/ping", json=self.ok_msg) - with assert_setup_component(0, ho.DOMAIN): - setup_component(self.hass, ho.DOMAIN, self.config) - - aioclient_mock.get( - self.url.format("addons/smb_config/uninstall"), json=self.ok_msg) - - self.hass.services.call( - ho.DOMAIN, ho.SERVICE_ADDON_UNINSTALL, { - 'addon': 'smb_config' - }) - self.hass.block_till_done() - - assert len(aioclient_mock.mock_calls) == 2 - - def test_rest_command_http_addon_update(self, aioclient_mock, hassio_env): - """Call a hassio for addon update.""" - aioclient_mock.get( - "http://127.0.0.1/supervisor/ping", json=self.ok_msg) - with assert_setup_component(0, ho.DOMAIN): - setup_component(self.hass, ho.DOMAIN, self.config) - - aioclient_mock.get( - self.url.format("addons/smb_config/update"), json=self.ok_msg) - - self.hass.services.call( - ho.DOMAIN, ho.SERVICE_ADDON_UPDATE, { - 'addon': 'smb_config', - 'version': '0.4' - }) - self.hass.block_till_done() - - assert len(aioclient_mock.mock_calls) == 2 - assert aioclient_mock.mock_calls[-1][2]['version'] == '0.4' - - def test_rest_command_http_addon_start(self, aioclient_mock, hassio_env): - """Call a hassio for addon start.""" - aioclient_mock.get( - "http://127.0.0.1/supervisor/ping", json=self.ok_msg) - with assert_setup_component(0, ho.DOMAIN): - setup_component(self.hass, ho.DOMAIN, self.config) - - aioclient_mock.get( - self.url.format("addons/smb_config/start"), json=self.ok_msg) - - self.hass.services.call( - ho.DOMAIN, ho.SERVICE_ADDON_START, { - 'addon': 'smb_config', - }) - self.hass.block_till_done() - - assert len(aioclient_mock.mock_calls) == 2 - - def test_rest_command_http_addon_stop(self, aioclient_mock, hassio_env): - """Call a hassio for addon stop.""" - aioclient_mock.get( - "http://127.0.0.1/supervisor/ping", json=self.ok_msg) - with assert_setup_component(0, ho.DOMAIN): - setup_component(self.hass, ho.DOMAIN, self.config) - - aioclient_mock.get( - self.url.format("addons/smb_config/stop"), json=self.ok_msg) - - self.hass.services.call( - ho.DOMAIN, ho.SERVICE_ADDON_STOP, { - 'addon': 'smb_config' - }) - self.hass.block_till_done() - - assert len(aioclient_mock.mock_calls) == 2 + with patch.dict(os.environ, {'HASSIO': "127.0.0.1"}), \ + patch('homeassistant.components.hassio.HassIO.is_connected', + Mock(return_value=mock_coro(True))): + yield + + +@pytest.fixture +def hassio_client(hassio_env, hass, test_client): + """Create mock hassio http client.""" + app = mock_http_component_app(hass) + hass.loop.run_until_complete(async_setup_component(hass, 'hassio', {})) + hass.http.views['api:hassio'].register(app.router) + yield hass.loop.run_until_complete(test_client(app)) @asyncio.coroutine -def test_async_hassio_host_view(aioclient_mock, hass, test_client, hassio_env): - """Test that it fetches the given url.""" - aioclient_mock.get("http://127.0.0.1/supervisor/ping", json={ - 'result': 'ok', 'data': {} - }) - result = yield from async_setup_component(hass, ho.DOMAIN, {ho.DOMAIN: {}}) - assert result, 'Failed to setup hasio' - - client = yield from test_client(hass.http.app) - - aioclient_mock.get('http://127.0.0.1/host/info', json={ - 'result': 'ok', - 'data': { - 'os': 'resinos', - 'version': '0.3', - 'current': '0.4', - 'level': 16, - 'hostname': 'test', - } - }) - - resp = yield from client.get('/api/hassio/host') - data = yield from resp.json() - - assert len(aioclient_mock.mock_calls) == 2 - assert resp.status == 200 - assert data['os'] == 'resinos' - assert data['version'] == '0.3' - assert data['current'] == '0.4' - assert data['level'] == 16 - assert data['hostname'] == 'test' +def test_fail_setup_without_environ_var(hass): + """Fail setup if no environ variable set.""" + with patch.dict(os.environ, {}, clear=True): + result = yield from async_setup_component(hass, 'hassio', {}) + assert not result @asyncio.coroutine -def test_async_hassio_homeassistant_view(aioclient_mock, hass, test_client, - hassio_env): - """Test that it fetches the given url.""" - aioclient_mock.get("http://127.0.0.1/supervisor/ping", json={ - 'result': 'ok', 'data': {} - }) - result = yield from async_setup_component(hass, ho.DOMAIN, {ho.DOMAIN: {}}) - assert result, 'Failed to setup hasio' - - client = yield from test_client(hass.http.app) - - aioclient_mock.get('http://127.0.0.1/homeassistant/info', json={ - 'result': 'ok', - 'data': { - 'version': '0.41', - 'current': '0.41.1', - } - }) - - resp = yield from client.get('/api/hassio/homeassistant') - data = yield from resp.json() - - assert len(aioclient_mock.mock_calls) == 2 - assert resp.status == 200 - assert data['version'] == '0.41' - assert data['current'] == '0.41.1' - - aioclient_mock.get('http://127.0.0.1/homeassistant/logs', - content=b"That is a test log") - - resp = yield from client.get('/api/hassio/logs/homeassistant') - data = yield from resp.read() - - assert len(aioclient_mock.mock_calls) == 3 - assert resp.status == 200 - assert data == b"That is a test log" +def test_fail_setup_cannot_connect(hass): + """Fail setup if cannot connect.""" + with patch.dict(os.environ, {'HASSIO': "127.0.0.1"}), \ + patch('homeassistant.components.hassio.HassIO.is_connected', + Mock(return_value=mock_coro(False))): + result = yield from async_setup_component(hass, 'hassio', {}) + assert not result @asyncio.coroutine -def test_async_hassio_supervisor_view(aioclient_mock, hass, test_client, - hassio_env): - """Test that it fetches the given url.""" - aioclient_mock.get("http://127.0.0.1/supervisor/ping", json={ - 'result': 'ok', 'data': {} - }) - result = yield from async_setup_component(hass, ho.DOMAIN, {ho.DOMAIN: {}}) - assert result, 'Failed to setup hasio' +def test_invalid_path(hassio_client): + """Test requesting invalid path.""" + with patch.dict(ho.HASSIO_REST_COMMANDS, {}, clear=True): + resp = yield from hassio_client.post('/api/hassio/beer') - client = yield from test_client(hass.http.app) - - aioclient_mock.get('http://127.0.0.1/supervisor/info', json={ - 'result': 'ok', - 'data': { - 'version': '0.3', - 'current': '0.4', - 'beta': False, - } - }) - - resp = yield from client.get('/api/hassio/supervisor') - data = yield from resp.json() - - assert len(aioclient_mock.mock_calls) == 2 - assert resp.status == 200 - assert data['version'] == '0.3' - assert data['current'] == '0.4' - assert not data['beta'] - - aioclient_mock.get('http://127.0.0.1/supervisor/options', json={ - 'result': 'ok', - 'data': {}, - }) - - resp = yield from client.post('/api/hassio/supervisor', json={ - 'beta': True, - }) - data = yield from resp.json() - - assert len(aioclient_mock.mock_calls) == 3 - assert resp.status == 200 - assert aioclient_mock.mock_calls[-1][2]['beta'] - - aioclient_mock.get('http://127.0.0.1/supervisor/logs', - content=b"That is a test log") - - resp = yield from client.get('/api/hassio/logs/supervisor') - data = yield from resp.read() - - assert len(aioclient_mock.mock_calls) == 4 - assert resp.status == 200 - assert data == b"That is a test log" + assert resp.status == 404 @asyncio.coroutine -def test_async_hassio_network_view(aioclient_mock, hass, test_client, - hassio_env): - """Test that it fetches the given url.""" - aioclient_mock.get("http://127.0.0.1/supervisor/ping", json={ - 'result': 'ok', 'data': {} - }) - result = yield from async_setup_component(hass, ho.DOMAIN, {ho.DOMAIN: {}}) - assert result, 'Failed to setup hasio' +def test_invalid_method(hassio_client): + """Test requesting path with invalid method.""" + with patch.dict(ho.HASSIO_REST_COMMANDS, {'beer': ['POST']}): + resp = yield from hassio_client.get('/api/hassio/beer') - client = yield from test_client(hass.http.app) - - aioclient_mock.get('http://127.0.0.1/network/info', json={ - 'result': 'ok', - 'data': { - 'mode': 'dhcp', - 'ssid': 'my_wlan', - 'password': '123456', - } - }) - - resp = yield from client.get('/api/hassio/network') - data = yield from resp.json() - - assert len(aioclient_mock.mock_calls) == 2 - assert resp.status == 200 - assert data['mode'] == 'dhcp' - assert data['ssid'] == 'my_wlan' - assert data['password'] == '123456' - - aioclient_mock.get('http://127.0.0.1/network/options', json={ - 'result': 'ok', - 'data': {}, - }) - - resp = yield from client.post('/api/hassio/network', json={ - 'mode': 'dhcp', - 'ssid': 'my_wlan2', - 'password': '654321', - }) - data = yield from resp.json() - - assert len(aioclient_mock.mock_calls) == 3 - assert resp.status == 200 - assert aioclient_mock.mock_calls[-1][2]['ssid'] == 'my_wlan2' - assert aioclient_mock.mock_calls[-1][2]['password'] == '654321' + assert resp.status == 405 @asyncio.coroutine -def test_async_hassio_addon_view(aioclient_mock, hass, test_client, - hassio_env): - """Test that it fetches the given url.""" - aioclient_mock.get("http://127.0.0.1/supervisor/ping", json={ - 'result': 'ok', 'data': {} - }) - result = yield from async_setup_component(hass, ho.DOMAIN, {ho.DOMAIN: {}}) - assert result, 'Failed to setup hasio' +def test_forward_normal_path(hassio_client): + """Test fetching normal path.""" + response = MagicMock() + response.read.return_value = mock_coro('data') - client = yield from test_client(hass.http.app) + with patch.dict(ho.HASSIO_REST_COMMANDS, {'beer': ['POST']}), \ + patch('homeassistant.components.hassio.HassIO.command_proxy', + Mock(return_value=mock_coro(response))), \ + patch('homeassistant.components.hassio._create_response') as mresp: + mresp.return_value = 'response' + resp = yield from hassio_client.post('/api/hassio/beer') - aioclient_mock.get('http://127.0.0.1/addons/smb_config/info', json={ - 'result': 'ok', - 'data': { - 'name': 'SMB Config', - 'state': 'running', - 'boot': 'auto', - 'options': { - 'bla': False, - } - } - }) - - resp = yield from client.get('/api/hassio/addons/smb_config') - data = yield from resp.json() - - assert len(aioclient_mock.mock_calls) == 2 + # Check we got right response assert resp.status == 200 - assert data['name'] == 'SMB Config' - assert data['state'] == 'running' - assert data['boot'] == 'auto' - assert not data['options']['bla'] + body = yield from resp.text() + assert body == 'response' - aioclient_mock.get('http://127.0.0.1/addons/smb_config/options', json={ - 'result': 'ok', - 'data': {}, - }) + # Check we forwarded command + assert len(mresp.mock_calls) == 1 + assert mresp.mock_calls[0][1] == (response, 'data') - resp = yield from client.post('/api/hassio/addons/smb_config', json={ - 'boot': 'manual', - 'options': { - 'bla': True, - } - }) - data = yield from resp.json() - assert len(aioclient_mock.mock_calls) == 3 +@asyncio.coroutine +def test_forward_normal_log_path(hassio_client): + """Test fetching normal log path.""" + response = MagicMock() + response.read.return_value = mock_coro('data') + + with patch.dict(ho.HASSIO_REST_COMMANDS, {'beer/logs': ['GET']}), \ + patch('homeassistant.components.hassio.HassIO.command_proxy', + Mock(return_value=mock_coro(response))), \ + patch('homeassistant.components.hassio.' + '_create_response_log') as mresp: + mresp.return_value = 'response' + resp = yield from hassio_client.get('/api/hassio/beer/logs') + + # Check we got right response assert resp.status == 200 - assert aioclient_mock.mock_calls[-1][2]['boot'] == 'manual' - assert aioclient_mock.mock_calls[-1][2]['options']['bla'] + body = yield from resp.text() + assert body == 'response' - aioclient_mock.get('http://127.0.0.1/addons/smb_config/logs', - content=b"That is a test log") + # Check we forwarded command + assert len(mresp.mock_calls) == 1 + assert mresp.mock_calls[0][1] == (response, 'data') - resp = yield from client.get('/api/hassio/logs/addons/smb_config') - data = yield from resp.read() - assert len(aioclient_mock.mock_calls) == 4 +@asyncio.coroutine +def test_forward_addon_path(hassio_client): + """Test fetching addon path.""" + response = MagicMock() + response.read.return_value = mock_coro('data') + + with patch.dict(ho.ADDON_REST_COMMANDS, {'install': ['POST']}), \ + patch('homeassistant.components.hassio.' + 'HassIO.command_proxy') as proxy_command, \ + patch('homeassistant.components.hassio._create_response') as mresp: + proxy_command.return_value = mock_coro(response) + mresp.return_value = 'response' + resp = yield from hassio_client.post('/api/hassio/addons/beer/install') + + # Check we got right response assert resp.status == 200 - assert data == b"That is a test log" + body = yield from resp.text() + assert body == 'response' + + assert proxy_command.mock_calls[0][1][0] == 'addons/beer/install' + + # Check we forwarded command + assert len(mresp.mock_calls) == 1 + assert mresp.mock_calls[0][1] == (response, 'data') + + +@asyncio.coroutine +def test_forward_addon_log_path(hassio_client): + """Test fetching addon log path.""" + response = MagicMock() + response.read.return_value = mock_coro('data') + + with patch.dict(ho.ADDON_REST_COMMANDS, {'logs': ['GET']}), \ + patch('homeassistant.components.hassio.' + 'HassIO.command_proxy') as proxy_command, \ + patch('homeassistant.components.hassio.' + '_create_response_log') as mresp: + proxy_command.return_value = mock_coro(response) + mresp.return_value = 'response' + resp = yield from hassio_client.get('/api/hassio/addons/beer/logs') + + # Check we got right response + assert resp.status == 200 + body = yield from resp.text() + assert body == 'response' + + assert proxy_command.mock_calls[0][1][0] == 'addons/beer/logs' + + # Check we forwarded command + assert len(mresp.mock_calls) == 1 + assert mresp.mock_calls[0][1] == (response, 'data') + + +@asyncio.coroutine +def test_bad_request_when_wrong_addon_url(hassio_client): + """Test we cannot mess with addon url.""" + resp = yield from hassio_client.get('/api/hassio/addons/../../info') + assert resp.status == 404 + + resp = yield from hassio_client.get('/api/hassio/addons/info') + assert resp.status == 404 + + +@asyncio.coroutine +def test_bad_gateway_when_cannot_find_supervisor(hassio_client): + """Test we get a bad gateway error if we can't find supervisor.""" + with patch('homeassistant.components.hassio.async_timeout.timeout', + side_effect=asyncio.TimeoutError): + resp = yield from hassio_client.get('/api/hassio/addons/test/info') + assert resp.status == 502 From b532267596766617927d8c531aca53a830bee816 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Wed, 26 Apr 2017 23:23:18 -0700 Subject: [PATCH 059/169] HassIO API fix --- homeassistant/components/hassio.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/homeassistant/components/hassio.py b/homeassistant/components/hassio.py index 24f25d97d7c..d8f15ff9338 100644 --- a/homeassistant/components/hassio.py +++ b/homeassistant/components/hassio.py @@ -30,7 +30,7 @@ TIMEOUT = 10 HASSIO_REST_COMMANDS = { 'host/shutdown': ['POST'], 'host/reboot': ['POST'], - 'host/update': ['GET'], + 'host/update': ['POST'], 'host/info': ['GET'], 'supervisor/info': ['GET'], 'supervisor/update': ['POST'], From a732271793177ace0e100487902bbceade4c3a18 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Wed, 26 Apr 2017 23:24:02 -0700 Subject: [PATCH 060/169] HassIO API fix --- homeassistant/components/hassio.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/homeassistant/components/hassio.py b/homeassistant/components/hassio.py index d8f15ff9338..2aa608a70c7 100644 --- a/homeassistant/components/hassio.py +++ b/homeassistant/components/hassio.py @@ -41,7 +41,7 @@ HASSIO_REST_COMMANDS = { 'homeassistant/update': ['POST'], 'homeassistant/logs': ['GET'], 'network/info': ['GET'], - 'network/options': ['GET'], + 'network/options': ['POST'], } ADDON_REST_COMMANDS = { From 95273907361d3b5d84f54ff6b52cc6174d61f242 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Thu, 27 Apr 2017 00:57:40 -0700 Subject: [PATCH 061/169] Update frontend (#7324) * Initial version of hassio panel * Update frontend --- homeassistant/components/frontend/version.py | 13 +- .../frontend/www_static/frontend.html | 2 +- .../frontend/www_static/frontend.html.gz | Bin 140446 -> 140445 bytes .../www_static/home-assistant-polymer | 2 +- .../components/frontend/www_static/mdi.html | 2 +- .../frontend/www_static/mdi.html.gz | Bin 197240 -> 197577 bytes .../www_static/panels/ha-panel-config.html | 2 +- .../www_static/panels/ha-panel-config.html.gz | Bin 17179 -> 17286 bytes .../www_static/panels/ha-panel-hassio.html | 184 ++++++++++++++++++ .../www_static/panels/ha-panel-hassio.html.gz | Bin 0 -> 9012 bytes .../www_static/panels/ha-panel-history.html | 2 +- .../panels/ha-panel-history.html.gz | Bin 11893 -> 11901 bytes .../www_static/panels/ha-panel-logbook.html | 2 +- .../panels/ha-panel-logbook.html.gz | Bin 34871 -> 34876 bytes .../www_static/panels/ha-panel-zwave.html | 2 +- .../www_static/panels/ha-panel-zwave.html.gz | Bin 5961 -> 6092 bytes .../frontend/www_static/service_worker.js | 2 +- .../frontend/www_static/service_worker.js.gz | Bin 2518 -> 2516 bytes homeassistant/components/hassio.py | 5 + 19 files changed, 204 insertions(+), 14 deletions(-) create mode 100644 homeassistant/components/frontend/www_static/panels/ha-panel-hassio.html create mode 100644 homeassistant/components/frontend/www_static/panels/ha-panel-hassio.html.gz diff --git a/homeassistant/components/frontend/version.py b/homeassistant/components/frontend/version.py index c3bf78c7711..263c3f7c425 100644 --- a/homeassistant/components/frontend/version.py +++ b/homeassistant/components/frontend/version.py @@ -3,19 +3,20 @@ FINGERPRINTS = { "compatibility.js": "83d9c77748dafa9db49ae77d7f3d8fb0", "core.js": "5d08475f03adb5969bd31855d5ca0cfd", - "frontend.html": "8264c0ee8dafb09785ec7b934795d3b1", - "mdi.html": "d86ee142ae2476f49384bfe866a2885e", + "frontend.html": "1533f44c55927e814294de757cd7eada", + "mdi.html": "1cc8593d3684f7f6f3b3854403216f77", "micromarkdown-js.html": "93b5ec4016f0bba585521cf4d18dec1a", - "panels/ha-panel-config.html": "0b42cb4e709ce35ad2666ffeca6f9b14", + "panels/ha-panel-config.html": "39f00f769faa63ee61f1fe6fc85d67f7", "panels/ha-panel-dev-event.html": "2db9c218065ef0f61d8d08db8093cad2", "panels/ha-panel-dev-info.html": "61610e015a411cfc84edd2c4d489e71d", "panels/ha-panel-dev-service.html": "415552027cb083badeff5f16080410ed", "panels/ha-panel-dev-state.html": "d70314913b8923d750932367b1099750", "panels/ha-panel-dev-template.html": "567fbf86735e1b891e40c2f4060fec9b", - "panels/ha-panel-history.html": "be115906882752d220199abbaddc53e5", + "panels/ha-panel-hassio.html": "1d954cfe5f47c4be3cf4f6f5db9a83b2", + "panels/ha-panel-history.html": "89062c48c76206cad1cec14ddbb1cbb1", "panels/ha-panel-iframe.html": "d920f0aa3c903680f2f8795e2255daab", - "panels/ha-panel-logbook.html": "bf29de0c586a598113c6cc09ead12b00", + "panels/ha-panel-logbook.html": "6dd6a16f52117318b202e60f98400163", "panels/ha-panel-map.html": "31c592c239636f91e07c7ac232a5ebc4", - "panels/ha-panel-zwave.html": "f52d0c001f48e0c7b33a172f3a71b547", + "panels/ha-panel-zwave.html": "a81f82b48439da80286798558f414a2e", "websocket_test.html": "575de64b431fe11c3785bf96d7813450" } diff --git a/homeassistant/components/frontend/www_static/frontend.html b/homeassistant/components/frontend/www_static/frontend.html index 59d17b1c94b..827325cb058 100644 --- a/homeassistant/components/frontend/www_static/frontend.html +++ b/homeassistant/components/frontend/www_static/frontend.html @@ -743,4 +743,4 @@ return performance.now()};else var t=function(){return Date.now()};var e=functio this.hass.callService('media_player', service, serviceData); }, }); -}()); \ No newline at end of file +}()); \ No newline at end of file diff --git a/homeassistant/components/frontend/www_static/frontend.html.gz b/homeassistant/components/frontend/www_static/frontend.html.gz index ccc0ffb90ff26a46b8d031db862937cc9a68898f..46d65a09b0233e69bdc866d60d12bc94408c3127 100644 GIT binary patch delta 23267 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 diff --git a/homeassistant/components/frontend/www_static/home-assistant-polymer b/homeassistant/components/frontend/www_static/home-assistant-polymer index 3fdba359865..863ccb54861 160000 --- a/homeassistant/components/frontend/www_static/home-assistant-polymer +++ b/homeassistant/components/frontend/www_static/home-assistant-polymer @@ -1 +1 @@ -Subproject commit 3fdba359865823805e8ea756c8500d3913976158 +Subproject commit 863ccb548616236faafa3b3393a1f51429bb8afd diff --git a/homeassistant/components/frontend/www_static/mdi.html b/homeassistant/components/frontend/www_static/mdi.html index 8a4662d482f..0a4e6cffa38 100644 --- a/homeassistant/components/frontend/www_static/mdi.html +++ b/homeassistant/components/frontend/www_static/mdi.html @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/homeassistant/components/frontend/www_static/mdi.html.gz b/homeassistant/components/frontend/www_static/mdi.html.gz index 78f55cb811ff9790e1f3dcf44cd6abd83cc786dd..1c442302c66bba1c0b45621cdd2c980719309a88 100644 GIT binary patch delta 162757 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%0A4Hti}GdPX`#k;r(J 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

c)U*pUnK!!inHbNV@f#VyyUgmcH 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

>Zt5!d1ob&!HPA<5EoWwxF?`z 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 GqX__6`1Y6p diff --git a/homeassistant/components/frontend/www_static/panels/ha-panel-config.html b/homeassistant/components/frontend/www_static/panels/ha-panel-config.html index bbe911e4959..84813853c21 100644 --- a/homeassistant/components/frontend/www_static/panels/ha-panel-config.html +++ b/homeassistant/components/frontend/www_static/panels/ha-panel-config.html @@ -1,4 +1,4 @@ -

\ No newline at end of file diff --git a/homeassistant/components/frontend/www_static/panels/ha-panel-hassio.html.gz b/homeassistant/components/frontend/www_static/panels/ha-panel-hassio.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..6254eb394a6fe6509d2dc99c83bb41e00e32c50e GIT binary patch literal 9012 zcmV-4Bg@<$iwFp{qXAh01889_aA9s`Y%OSEb8~5LE@*UZYyjxB6?A7``Z<4Z;{o-@EKoT5rLy0sn-^2|IrWJn-|vzhIxE{^CC{~ zoOK$JjNUBP`M!LJ(>;{lFVbz6ZfQTv z^60l^en*QW%RenpvgIz{r)8RN7X<|h=^Z_Ovj+*|*PGiP(z}QMM|QjHzSHjmq5M$x zleFwECE+aybNnXV+*YiR$EP$d*NZz+K)YJdJ}>T(Lz#D%YntA!%Vr%c$4W=ujm~?J zC*9tD=sKEY8p~!?RVtJdK1Ot%XE818-3m$c+ij5_wsAkov%CPst!a^#%X~+ow7g#o zmsLAOWQA^5<1$D{OyfS#e<%yG6?zuLoWW%8uyG+pMc+HVxW)nGw!^GK>9Ok+c?PBf zJ#&R!eY{npH^@jxvzGdA7{;pi zoP80oHemT6@y!d64UL(}2o*R1_?MBji_nm_?z^H&YwMqDTu|A85$7cCIZX3ChkXXB z_<_c}b5RD9tBuU}4E&L7=oyq`m#>w{7ZvHQy!koL?l-jPJf!=DI<0%VBHz)XOzD2{ z0E$~Y$sstV8>vfMPWJ)4w?kLuI^7Sx9l(@d(m}puN?R$FYIp!PzFJ}Zj|JW5*&TgXL>*qh z9LeP+e*Orn-y76@=VI9HX@wx%g{PGLg{hlW>mCPTx{W!BZjXt=N8-7%07%P@Aw;WW z!=_}OA(_TA2Bs@EyFc>zQOQcX5A>xWE?p=E1>L|>Ud_dh3pHFp{M&)DYz+8{GN>1~ z*UTBM=*z1^k#*dw@91||ZubgYjHQbg^t?U}yU+u!sfAtL&lT4y-S7#*wXGSdyag=} z#rA@?7ar@&7yQbc%jG407H;A4vie42D~D=1X)=k z*`{9oo9$dzP7qjmUbPh-ckk>NpsN+nG?%+*}fM7nC<;rkM*)LhuClbo06 zTDJ6)^XuC;o%U(k9k4KY3pyS^te2J@_uB0)1t0pJ4l=sEE!X|w2TkTyT^Y(!y>P>_ z(NcMpRSM($BZ|cfx-aX`i~8et?(Q=iIL%475XL$xWh@b-h3i*7OXAJdy}?1L^5u(S zVqd;ky&eMhuf#PWZTeN(U8Wa?zh%Bpb+eT}OnVj~nj)iEl*`kM2rQ0B zjm_2KUhOhdOUVv*MyNbgyhwxTI_|LbiZ<=!@dN77q~Zz zBG1c*e*ZSlZ!-$w$Niz_Ext+oXcmo^8Zc%6oz9|}0ZbSWhrU0a>A;Ku(PTUy&1)cp zzzdl~)0iZYfp9LfkdS0%Ae@aq3MPqfAe_&5Je|eU8o4bf-6ErKMu$;sLY&iN7KQ;a zA^gXYEaej$6AFCLM zaxb_|*q?#mNO|nfKscv4Wq$_3`AmoG50D*!-I*9%V3N>~Qmq)7Cs7=awDJ*Woy^Ic zXyqu2n-P;Y1Li|I9qRzsY#a>3slgm)@n{%KLLK0`CGpUo%yfV& zHwZlHCpu7R*CPfksb1d;j4lfOg4`w>BK*s6I8}OoD0Ue|6^|*-4GrNU&>LoyAb2E^qfp+5_wrW9RTU_N+G7RU9 zR$S>m8Tvs(3{*P>lTMl#&REa)lCXjK(t?wD1LIN>0$4rBF{L|o1ZYfW$X+G z)43JrVuj;*9EVn%56FBnn{db8#JT7*@Ho+^MLed-*_ebgE6&GfLdO$j%BeW-{$x0c zNnpkKNcoe|jCfX@57&4IBWafp$1EHNL5qHI;AW8@w^iUOm`;XCTLtv_K!?`W1e^2p zHpkHmC{adFAh>i-BBBhOfVf2SgamPe9xm(iU>b!c#KoLM(=hUyQZOYYlVLb9AwE9i zxj!cjf*1~X<7A$g5FeFMFrLiECd3D1NJirsH6a{}Aez&pK@o>xGM>gsvmNi+IGzv- zCZzNe1ru=&sD2C!S*(|%L4+|?CMpL|?OsHbSz5Hj ztOH!#LmC9sXu-QNoX@68Aix2x>fvNMQHGTRT+v?a&&W^*gqla-`4R)+UG)8cG!WjE z(R?;i2?ikmvv^-kW+;gNIN#C^Rvept6U71rcfn^EDA6Sr{mN zDJjXMf=9_vFBb}q6J;UhfKYH0Mg}FJ;BZPJ9S{m8Qzd#4yir}#AkYD!;9x#8n2T=A z=2HU@3ZBj<26LfcKlVKxKn0T-+vOO@2pwpW#D>7A;9*Q*5*vtAa6;x8n|LWJwt9}~|v`QS1I zet#Sp2(G1c2D>f;!KE~u(2>bUL^bnd8kxcgWzQ3jP!p2oJe^HVNT@psCS${))Jji= zNuVfQg)t0`XspEbDvn!%2_2G&73af1XgmpqR@}!OKom_UE#k3Z45P76toRgzym0J~ ztT={n!8{q;<>!MmnFQe|vEp-abOH|7isOJqQIgC(dj$;CVUeBKHH?EdnztK~*);^s+6jdI*YdWj#6bpZD=Q%dKN4vfVx&t?-Hz#WcHhm!_x*6%ou#&aFu zBN9QhH8z;zhA0XBQK$ofICP0ez7F6%8P;O6<6@r-jz=@AO|@NvK-4!8ACEdf&z^yx zWUvq_NOknYcHK#=s8~D9f^k>eyMV-A9Y#Dhp|OC5%1jlII47ZW5;Ua{r%dC}gt)qs zI1ZEpAMI!iwhg0(7+mGaoCKprt2rJg%#vZF%kp>v)ZU;d4=6PCN=$amqF_`$Xn3k% zggt|nx(}2%1OXuig=udfLI~;wBLfkNk0;8R3nD_eh$u&3QUFAT-poKy>q$6n2rarp zyap18vz?@YpvseJ6OkH+eYz>ORCqk|8?9uQ{3byuU#LKN!JbA)eUE7aky3c!$b^Ix zQ4};<36+O4KQCeJZyGM zs-A>?6BAvV+h_{qPbZ#n=%J24Nau8Bh2^1gq@1LwcqP_+XvN3!>{eN9Ra}TZ!?Syv zczDD+8;z_uj*mYXDvPCx&rsby8P2VEfJdzUcxaao52cgw)U)?rj@g_BcKynMn^M1} zf>6OYZW$qQXdRDKYYL0}lL%kglYqGaU<@^bASW;oj13|}h;JYmHw}Y8nfHir34?g5 z9#BgG_!-h<;+uTgm zKZ#KQu~@VJ>45%(Mge&5!4nhlxhq(TfDo;Ub zbcRQ?6QXRnYm{qgJo9IMVnI<=)A5MM-7zVC>&NL`8Z&1oQ&txNd{u2U zYuD%E-Nsn8)*fPQ&6-*(3lT`f5>_qMs;70e0FTsF**{X%SIOFk8)I;Otfg1mQ(3|D z#3NU`y=i>qWH#9vrUD*lES_Dr+XXnWko_%Bm;y_bV1H5}EuCx=QEOB8xKfFND;>7t zjUI+kh=G?<$?V|NXMbiLt$*W){XrEjfX&{lLh|0xgdDOKi&o3J%IyIC>WDb%Bt?AA z)seck+PX*FD~1ld9XSxIUS(7O;#%Rew5rsR;qk`EgOhDXb$7Y3SueGtepKT3vXU1_utfe zb|^dR8@mOj-1e#M#i=j;{1xl*EbY2CH}Bt91mqPT{$DY2@U{MQ`tFb7m$kb;g1+_2 zjN8-ha-f9O9TzU8yJCiE5W_#CXS`QStGWAl1=XcirQ$S6R50z$#P9SrUG>r|tq1 z;(0E&I!J9RZa;`NZnsBlaD4;M?JnIt*R#7?v2N#yLoP1~%cT}+(EGNgJ*r%M zP>sE%V@~Z#_4@@!`_FJy4i>SETdB+Yk*;WuCAe$pYlEndOma?HtDvn-C#BP)|Ykrbojm=HD9{;qhiwNV6>6?bH48(;67`_psT8*_(eV$j+qYyszTr4-dB3iU~LD zT2}a4bR**K+4rrDwckQOS;)TD71zeso-}T0yar26a|q!}VqD@pz{k6EpUYc|KZXAQ zS0sGa!?9Og0zCGZYR{>)p^V#}MV^mV2cKA$BwAZ;J0!G>*6%9$UT>3J-lX8rUqPH^ zA+W|mSQeTD8cdjCAdtzjSG%<1f)8_hLRr_fYOYgg>UIaP`Pp_V3Z=a3Qq^0P1Eyj1 zuACG@3i}iRn7&W5W;ISR70P%TQ)T!b?2Cmpb9M8Lh+HaWH}-%%V5a+2!pcF>A5+#g|BqX>j^w0iZ%ylpFJUP$OJ z725n7|A3z3d7IX@r0H z<`DjsyA^B1UJa4UEuj8-^Fo!LgVH2qPgqzi*76@jQAc7uM|O+H@(@;+WG6}d0{w!( z6YM0*nWq&0s0?ds;-{m`P}2ltOfZ^9($&3w(HU7@3BTW^Tj-3#HZ6DfevE4kv0S&e z6g=w48`DM)%vo@xI$ah*WBt~s6nMfo7=bs7;M0iOOMifwZg=fKO^iw#yJL@a*NEau z+f;%J$t?~`5nJV)C!Jq(KFM5tz=F>UM1XEt^X{FF{eol~m{neq!R83q6om zXb*cOyXPss53~uu!>uPY!+Y)B<0Byg4_aA})8~PRYPW9VxR)QOu>Fn$V=kU;)#n$+ zS)r^r=%( zIgL7N9%^y>vsOKYGd_%AYae)o;tyT?%$fABF#BPD$_&Gp^sV^`Pn!PX5h^}l<&RKB z0Uo`uqGNqT{16=qcBU(ym)8^DHr-#L*e9pDY3bsPDGp=CO^4~9KRJbOTo2X32&5pFdht21?`Vp%JuI6h)tt9Dp1zNzNs>n#{@ zmc1)UdDwS2g)VERO5HrG`5LqSlLLBNI9HmPT=o70<%(51te(T?qWtVQ+@Kv{(Y)-) z+d0mbz#i(8SyOHuwW|Ad{^@UYdpKFyad5&o{OO=hfKRRyGF5Hgf2bPD)+e+rD2l0v zW0+z+8arRUI9EUBrBjt$Ei0mmrGUU<8ao|&Cu!mnfwZ6L1>ncLLQMASFmI$bT|d<| z49p}BmaF1;&Y0y5ZOCVlCo}at{=K+Ow+qi<@1Z>o_FV0am&UI1BK;>jYRkH!MPHoY zGTO4)&A&g`A1g|H0g8sL3XeM;1RZosoJ{3>fQU?4K|0LX`=Gr%%eX6}x9kN^%xTtD zoh1FtPKiWe2{s#&f-h?uuxYuZ;dEf02tVHskp1qGnAi^PQM|j6x z<$K!>6ZL+zoe;`#YsKZGzB5h%^xh6$gRl8J>=KxwAu9SaU6Z>sFa8G6_KLr@_K}LK z2URh5SRpTr1JZQM5&f;QwzQWPHGQlIGrk5x)qNguWq@!kW*YTTBOno4cIS-@hXTkzdHod+0^vwy#! z(ejDEWzfu3z#z`&K^*4P*7>wm9xaRbpcnt_vj~_JWE;_ilwjHaM8n_G(ux_0RmZ_5 z85>^v@^rd(r7{_RsBF<5wfl zE?pUgDrTxBbgyvHy1Cqj``xk`y;j_+gaX)3;DH7LoLN2Xne+S>HxV051P8gPu(@i$8I(&`(B$Y&Lj-!RCQO8T0tl@>4C3&jcsVbmjQ++#tghKuK( z?5u%)(86|>oc4EI4V5JIs?_%T6|g{p=Iq(v3JpAz{hlvq5MzS!-nKOJPBc@k%Nob# zNg}FoGizP5D{C|J>05rL;@FdB)+n|`2hc%jI9eBZ$8F_WG7c9GI-hS}vrn!OPxAq; z2BX6}#iD6g&?~QNyoUbUfdr1c8Xoqr`~-GR-CB8|*E8DwWgDN-5^Ax$s0L43y|lZ9 z+lm_P7{61k0B3D%G1nF*!7UGG51`0bx9q*t8&XE=&UN~8=jGykPCmq6*03yfud5%1 zP*$l_7Z#<$iiq@L;7J)fW8$B;bdhE|&a(2qmt>)lBknyFE~Q!%MWhCB2HZ zDCn7@Q1ZR;6^R-$fG=OXm09_v{&nHXpPjG~kUvO)E9QV_9{%;0zrCsVVh0NT^=~O= z;HX_^H2SPK?Y=Bn z5@O@-2}E-Rj3_APy$e1-+(i-Y^~Srrls}MgqXNKkpQRD)cs;eayQs>$m>yLKDy5+E zqAFc>%farjUw7R4=NQVtKk{_jabJYR^^M#8&b|C*IQ5p|OhHlXW3~Y^NS`ES{u|xy zSCsXKlX@xsg*nE3cIW!?`gYTEFUe-Nbh~x2i^cza$V;vK3d_G4&$Z$gSe)sVZ?N>1 zmx`aE_^++oU7*sr=~RQ%Q6y%Dpsrz--z;dc#8z^;`)?4et*f2`=RTY3-=*}^Gmqih zp3oin`84KlR@~g{Ao+<1k ztEY(9jn=lqe(?m6pDb(78h?*-f7>(H*O)HR{=`*z`pKoTJ==Ud0pqoNcBbS&v_Ftz zjJmeWie?^1E!c@-ik*JM7~ zZ9oi;`>YP?HuEZu`)r2novr%pbf7(PQKUS<_-wvklL%B3KV?C@g1yxq1+%0O@w7}^ z6PB>~Mo#wBaVIvad>!e9YgSn3W>_XjyW8+DS8RpUL*v1hYF*sW4F-+Mze|3%dO74mF#VbRQgN(45*9`-I>s&~b+o!&bF@TF)ker2Jv)ufrqwt3 z?P-?Kr)=4&otY_nwNjm}5&5bI*|4K`zlS8Pe7FQ>CAjf~h!)e} zRP6RqP5-A_h?ejsx5P@uo0dqICQhe%=)Lb&tYEkMOS+*jzdLnHfW^;PDx?LyrKA1c ztK*3zIGL-5-;RH(Q|+{CW>>egyy{8caE*C6*H_MW*bVsiir*~1>I$m*y)&o7z*>CA zxxRMzjWO0kB%uelRYj%&)|ma&-XSZUi`B}x;`b@9RCjKlPfI)l4mQeZp$PQJzTbRNij3kjvKaylU41C za6Z65(dSF&|G)d`#{s_hB~9*?#VCzCVkI?UvkX2$5N+5^-w*yprr|9XwCqa>s( z(O?rWqz?a;PmtML!apw@Yj&A96NDPyeOGIiwXD1oP_QVF=UY=CCTCJqy zYVzyrYJiSvVl0Yo=F`^R_tXff5)L zM);&|T;!-3s4JsNRxXm#c8mLJNCg*evb=d!Sqz60v4<&62V6T)Rh2dSDpXn}s^81+w?2o?8Qq3~a zZpGmqMwY?q8g&@p^qr~CUNmKUDTzYte^Z9JBB4A$uTJnC?cFS2@dA>scf7?x{~$_ud?hY!jNo!o~9eR)3~ zT}OZK5mb@M*9h*hOzfoas6=6R`VuTm6`+q_hrsuAp1KerYMi(dfi++w5Yace z`YO|=v^WI}xV|b-h2w8{y~YMb%GqcZ<;4in^~d7P4Tz!JOD48Qg)M26bw af~UU(=2|?GS(lsa=6?XsizgMajsO6yRiu{y literal 0 HcmV?d00001 diff --git a/homeassistant/components/frontend/www_static/panels/ha-panel-history.html b/homeassistant/components/frontend/www_static/panels/ha-panel-history.html index 507856d98ce..e5ee783bb96 100644 --- a/homeassistant/components/frontend/www_static/panels/ha-panel-history.html +++ b/homeassistant/components/frontend/www_static/panels/ha-panel-history.html @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/homeassistant/components/frontend/www_static/panels/ha-panel-history.html.gz b/homeassistant/components/frontend/www_static/panels/ha-panel-history.html.gz index 50006b9bb42d9689b8cf1da11ae94ad694e45aa1..74325f647e36cc30663e1a43475ab2e51c4ab243 100644 GIT binary patch delta 273 zcmV+s0q*|wT>V@KABzYGwW9%9u?Tl9e@d?h=@UTi)_?x=y6s^fHdYX5Ge*NU2LZf? z)5m~oXyjMpK{?HWxr2kx6kj&XX85Hx)7-)J1p{{^VZr60Z-ZywvRRRim7$fo;_6h? zoTnE$IEf}@(%K3U_0LVdFqu`xzt7%22K%GLOTb2+4k~vXpJ=Z-d_zw>?cV_le-L6S z{28Cnov3|`Ivn6L88f7PJU2mDX^)vqjiFNRE}0pI#%$ybApk{qVgWRx$DwnqdCLoa zexW~z6VcaGx|tq~<@<}tOjujUz;~P029&$C6M?ZC(o0Ge9a?3wM391j delta 265 zcmV+k0rvj=T=iTCABzYG%#Qb1u?Tl9f68+cukC&;S5?h5lo*LXF=K zJSe9*D|gKAnPRtw*$h9xW?C`0K1|>a5GmCnxXVU2ZPY0 zOd3%k{{6Yh7bXwN_-EJKr(1vUcL~_Y)3M@?;}h*Hhi~X$r`N=LI4Wf!~$qWk3;8J^OpDa{GNUgC!(*X zbm2T0%l8+PnJ}V|@$5FOeI++xC$M5SQkN7KI$K=cmUcI6+E@`UG# P;_!b1k^&`?Vy*xHIAMVj diff --git a/homeassistant/components/frontend/www_static/panels/ha-panel-logbook.html b/homeassistant/components/frontend/www_static/panels/ha-panel-logbook.html index d3a23fba566..57a39eecd74 100644 --- a/homeassistant/components/frontend/www_static/panels/ha-panel-logbook.html +++ b/homeassistant/components/frontend/www_static/panels/ha-panel-logbook.html @@ -1,2 +1,2 @@ \ No newline at end of file +return performance.now()};else var t=function(){return Date.now()};var e=function(t,e,i){this.target=t,this.currentTime=e,this.timelineTime=i,this.type="cancel",this.bubbles=!1,this.cancelable=!1,this.currentTarget=t,this.defaultPrevented=!1,this.eventPhase=Event.AT_TARGET,this.timeStamp=Date.now()},i=window.Element.prototype.animate;window.Element.prototype.animate=function(n,r){var o=i.call(this,n,r);o._cancelHandlers=[],o.oncancel=null;var a=o.cancel;o.cancel=function(){a.call(this);var i=new e(this,null,t()),n=this._cancelHandlers.concat(this.oncancel?[this.oncancel]:[]);setTimeout(function(){n.forEach(function(t){t.call(i.target,i)})},0)};var s=o.addEventListener;o.addEventListener=function(t,e){"function"==typeof e&&"cancel"==t?this._cancelHandlers.push(e):s.call(this,t,e)};var u=o.removeEventListener;return o.removeEventListener=function(t,e){if("cancel"==t){var i=this._cancelHandlers.indexOf(e);i>=0&&this._cancelHandlers.splice(i,1)}else u.call(this,t,e)},o}}}(),function(t){var e=document.documentElement,i=null,n=!1;try{var r=getComputedStyle(e).getPropertyValue("opacity"),o="0"==r?"1":"0";i=e.animate({opacity:[o,o]},{duration:1}),i.currentTime=0,n=getComputedStyle(e).getPropertyValue("opacity")==o}catch(t){}finally{i&&i.cancel()}if(!n){var a=window.Element.prototype.animate;window.Element.prototype.animate=function(e,i){return window.Symbol&&Symbol.iterator&&Array.prototype.from&&e[Symbol.iterator]&&(e=Array.from(e)),Array.isArray(e)||null===e||(e=t.convertToArrayForm(e)),a.call(this,e,i)}}}(c),function(t,e,i){function n(t){var i=e.timeline;i.currentTime=t,i._discardAnimations(),0==i._animations.length?o=!1:requestAnimationFrame(n)}var r=window.requestAnimationFrame;window.requestAnimationFrame=function(t){return r(function(i){e.timeline._updateAnimationsPromises(),t(i),e.timeline._updateAnimationsPromises()})},e.AnimationTimeline=function(){this._animations=[],this.currentTime=void 0},e.AnimationTimeline.prototype={getAnimations:function(){return this._discardAnimations(),this._animations.slice()},_updateAnimationsPromises:function(){e.animationsWithPromises=e.animationsWithPromises.filter(function(t){return t._updatePromises()})},_discardAnimations:function(){this._updateAnimationsPromises(),this._animations=this._animations.filter(function(t){return"finished"!=t.playState&&"idle"!=t.playState})},_play:function(t){var i=new e.Animation(t,this);return this._animations.push(i),e.restartWebAnimationsNextTick(),i._updatePromises(),i._animation.play(),i._updatePromises(),i},play:function(t){return t&&t.remove(),this._play(t)}};var o=!1;e.restartWebAnimationsNextTick=function(){o||(o=!0,requestAnimationFrame(n))};var a=new e.AnimationTimeline;e.timeline=a;try{Object.defineProperty(window.document,"timeline",{configurable:!0,get:function(){return a}})}catch(t){}try{window.document.timeline=a}catch(t){}}(0,e),function(t,e,i){e.animationsWithPromises=[],e.Animation=function(e,i){if(this.id="",e&&e._id&&(this.id=e._id),this.effect=e,e&&(e._animation=this),!i)throw new Error("Animation with null timeline is not supported");this._timeline=i,this._sequenceNumber=t.sequenceNumber++,this._holdTime=0,this._paused=!1,this._isGroup=!1,this._animation=null,this._childAnimations=[],this._callback=null,this._oldPlayState="idle",this._rebuildUnderlyingAnimation(),this._animation.cancel(),this._updatePromises()},e.Animation.prototype={_updatePromises:function(){var t=this._oldPlayState,e=this.playState;return this._readyPromise&&e!==t&&("idle"==e?(this._rejectReadyPromise(),this._readyPromise=void 0):"pending"==t?this._resolveReadyPromise():"pending"==e&&(this._readyPromise=void 0)),this._finishedPromise&&e!==t&&("idle"==e?(this._rejectFinishedPromise(),this._finishedPromise=void 0):"finished"==e?this._resolveFinishedPromise():"finished"==t&&(this._finishedPromise=void 0)),this._oldPlayState=this.playState,this._readyPromise||this._finishedPromise},_rebuildUnderlyingAnimation:function(){this._updatePromises();var t,i,n,r,o=!!this._animation;o&&(t=this.playbackRate,i=this._paused,n=this.startTime,r=this.currentTime,this._animation.cancel(),this._animation._wrapper=null,this._animation=null),(!this.effect||this.effect instanceof window.KeyframeEffect)&&(this._animation=e.newUnderlyingAnimationForKeyframeEffect(this.effect),e.bindAnimationForKeyframeEffect(this)),(this.effect instanceof window.SequenceEffect||this.effect instanceof window.GroupEffect)&&(this._animation=e.newUnderlyingAnimationForGroup(this.effect),e.bindAnimationForGroup(this)),this.effect&&this.effect._onsample&&e.bindAnimationForCustomEffect(this),o&&(1!=t&&(this.playbackRate=t),null!==n?this.startTime=n:null!==r?this.currentTime=r:null!==this._holdTime&&(this.currentTime=this._holdTime),i&&this.pause()),this._updatePromises()},_updateChildren:function(){if(this.effect&&"idle"!=this.playState){var t=this.effect._timing.delay;this._childAnimations.forEach(function(i){this._arrangeChildren(i,t),this.effect instanceof window.SequenceEffect&&(t+=e.groupChildDuration(i.effect))}.bind(this))}},_setExternalAnimation:function(t){if(this.effect&&this._isGroup)for(var e=0;e \ No newline at end of file diff --git a/homeassistant/components/frontend/www_static/panels/ha-panel-logbook.html.gz b/homeassistant/components/frontend/www_static/panels/ha-panel-logbook.html.gz index 49588c57be3aabdf067c6ae10bae4ed96e1c9f64..9919db308bea253295ca56cffa28b94a71ec147a 100644 GIT binary patch delta 8684 zcmVvKV`hJHRx=byTZ&DZQaMg?>s>p}#ZESRI-QCZ z$JT5pQpKVC2*s-VE%(#zmt4O9G%y%aQa1Ofx_wxj8NAWxZUEh1k7jFyU~51FgKqhq za+yJK4iT{&5^US0^DE>?>AGLBYa9lpjEjqI7=$Jfe$4yc8o2@$U$wX@#KVmX$m_lc~yBm?RjSi+LkK)A2z zrY!_-t-ZAi+Y?xalqp-`m<+f_!k;|i4;8Wy_L*j8*ns~LJ7PO7Cnrf7k4t(CB71T| zQLOP!-jezTdk=5f(r>fn4%e{VE+c=g`s)wxNdeHS*&@MJbb=@sl{&S5NjBq<1r}n9 z@yH1i4K?ucRx!6gbMEdDQ%&$+#PT9_KphHyD2tC@;X&W^b<%BhaWBDli&-^F#L_*d z!+>hgqT8gFx#wx|HCT%;bXs(y(~`R_ezHNwV1X`zOWzA(FFD?E!2-bJpK5=1l$cv3 zXJ%fZHB~$B;Z1q`Z9*8n(OzZq`Zv0Y1rhSJx H0T07rd_KJ_Cx3(gw=RlenK)G7 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 K{0Wft0RaFB8xSD? delta 8675 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 \ No newline at end of file + \ No newline at end of file diff --git a/homeassistant/components/frontend/www_static/panels/ha-panel-zwave.html.gz b/homeassistant/components/frontend/www_static/panels/ha-panel-zwave.html.gz index 5696f89a83274e933a50303ffa28316d59c56f41..89c637ad527637b6c4c3927ddf9556a5211043f4 100644 GIT binary patch delta 5527 zcmV;I6=>?oF3c}~ABzYGwW9%90t0AaEpTCOWo#{acVTvAE@*UZYyiz%3y<73lKv}g zWzU($cDMC@bbBV3OK!0Nve_U`aKIUcK}pn%HfpJ%*35V^ng4!87A5hevAw}AZhH~8 z_^}?WDi(_zv0vW|$L8ww4JGB(>mwb=s<$1LE z-PC1C+e^n;-AJJ3PI9 zh5fMmsy<&j#qD|Mj$7W~Te?pzUsl{lsT`Ja4Ope#pBIhpFwJ=D*ehZ=V|3 z!_#48u&vvFrf#Xq2iq3eN$`Y8Z4&dFuCIUV+JQ9t$Nwa!Q}b{!V(Y`G@wTjcS`2m9 z!r1N)veFu4Hd$qDdwNH~QJ*YxBzQ*l)MXixbb;rgEDo;8qmM$b#>``UITc&Rsxu(R<760>2A2elz7V7wOa<0#N zg=(Q)SKF5)`>H4(Mfo~OAdv(rNq{7QP7+Eap-K`WNvM-V5=o?zL`V|pB(X#it0Xa! z#5zfTB9SC2NrEJaPLfI_sY;R}Nve}%5=o|#WJr?fB%UjWgsTOCE26+P$UK?M)5yl) z@eDFK3_L9kJP`<<90})v^n)}(NmF09d)_)x^R{h0(BqjeZb)>nH%q(=+77fgm}9e* zyMW9li7RbOgC(>rYs)}eqr?;D7sXXtV>|+XR_+sMYt(JL{RdPTbyZVY`x7aC)r^hZ z9<~Lnv@mqp;LDI<^kr$9^>v;Cwl}L@Se7BX!>Tmvumng#NZ;K)CkJYyp|A7Xfi8+W zLq{qY9i9Uvv5WEq{YQl5bhxLqJv@t=9vf$iR#k}h^}*ggE4!8>jy9D%wJ|_hs~k^% zYE0{>wN;lPPjQLBI>lwgXwex@vs_ohoa!oOX)_Je)1kOA_=|QM`w=pmbmnR*k@_#B z5*4$w8Ht4VQG%224CGugNw#DWRlKFc5}?ig=hWa%vMXWw&w%aC=8SnxgE0aPC9I*T zfwo3@wZJL-to$ie7z(IK!mfwf=NZg@OqS0nCFjcpy+o#bPA$=88In!abRc)y`|?L+ zZ+usu>%4*4!oSo_Jv{7j2QTf}XM&zKWT@|;|EW9IxIq+6axGL3QU{WsVFLwY9=g-s zJ@obU%>e)A-2l6O_|nh{p5^Z6i_Mr&W?e%`>ZXp|tz+T^fNZd9J z42pT-Nc!u#1t~X_%k^CM?nY7d11+~qvsq!@CbUK6Mx_lxY`2r@12u>Rpi_U`KuFG; z?V=6R`PilGj@x5b-mPPk>Tdj+3jAz|MTvi_V0@h0-=Q< zJHMKHzjCf#L%ju2HH>FDSNofP?mRqd2PQn^W=~;k9n9$Y;#~hm%kPfY-`01=8Vmuo zKF9}3PhZr>Yc;G7_jNhk?C(eqbhDyc-n?NEvL1uL=!5Op>4^{H;w|U{k@jxAQZ!R% zlF?Px3iX7q1-z>NDx6KWyFJ^^cgdIyQ&dr(hw`mYY6 zg|wpA3vVL{lX{OrpEl@%B@vsR!Wvo(KX+dbV(Hw!a6#~xKP+?(77PwouUS?N@Yx58 z3ds6PE}Qgco>~-ue%n8`9Vg6Zf=i0d` z{^EtV-YAWr+zVG~`)_7$)@}W?%j>q}EY=&Q3irex)dfI*I$UT0ip&y( zUb5N!p3jd-SGs9d)v1!IK9YN zzyFSpEV;aYe2L#hT6p<#dZMLO!nB;2LRPX6!Rcc%zH+95!r?1|ZRKAY4^C*EW?ubG zI>#9&2&_C`IYWO-o&8-`mn+xCh8G1gm%6%OspiGZWG#;!o)6GvmcnM;DEWY?rKR_) zUw-=jVtJabcdSfq!NxnN_3GimdF8ARLJoaPcMWZSuZNqh_fFAy(N>zVbGahrtj&OHLT%<%x<1q|w0z5QpPXi=d{}QRN|-96T9oT!Rs@zrB-iHl zG=q|V=5AAx)PXT)f@pp1TwEcIEVmghmoz)by1ik4*dL6BIZ`)r?;pjItx(L3GZn_s zRKP)smD&76Pm~M_ld(x+;k4bh=glG|%|2HaGiC@u+1JYEcDVP;Pv4DG zcAW8|hTi>z?0)H+T|a&0kp}W{zIaNTv+4F&bft>?P? zFRHLeir}CC0Rw296p02z3@Gz33=$Pc7*Iq(=4UgIL*a!&int_Ip&?vKk`q!T8p6ed zei~JwhHyDS5GQ3kBiB7Uj^l#zgnC7(LtIjnLQotc+3};{;2hZFdV*eul!1BPchK^)K8Uv_6*~~E4)H!Ct_eJNmYf2k3i%{>WE2*fR}`! z3ZPCA`{Vosoa**hv}r*@TBz+PJI(V_BS6_7oo(0A1mdqR?24!$?S?0%(3W4bn;l(C}{T#+nRaaxiG6k)W}?)Pe{zL-^{5 z&@4}-u?&5I5B2 z;4%eyKPWT=*HW6mu1iC3e<{r)>g#euRg+b5p(`hhomDQOIy8oJoWwdL%w42Wpe2;q z=#^KclF?-t%g}WyLdbbOH(2ilf7dqN+02-T@1BSY#u+e}&O`NnBN~-9w@b zg^cXUtL0H_;<75IT08C{-6|{s6~MhrOlelAKp@4kx5uWXNXYF3TdwRDgS= zfNCqygyV*&%0oX_fm9s2lzylJxKD<)SRc69Cqv>Tmmm3Md3Nd0I6|nt9 zhXXirpM6vy!_y!3QO{DQ(bEDd4;zSOVpXPPVL>qt+?*DX1;wLWmxP2`P%IzQ%*_g` zQf!cJQl_~D#Y5aMrqW+QW;DSg+K5P7ld%vJe}CPU^<7=EWH`RUx?`8^M(j-ThP|*d zfivNm7F`S99wamhNA%R!M-@w1C}Rb^Aaevwp%Z8mI`h?qdOP>iFUgO@1N|_F*N5@t zX5>BGP$)`gaDA9bjQ5UBLcI$kp9k}-%(>e{Ioar0!l{=;hlXFKkZ?x8U%*qk+mo+s ze+{$ud@jB=e6`ry!`@0XEp`?vkb=FiYUwupwQg46BYkD@AL$y(Z0+vG8k`?%solc;$Q>uME>;T_$UuSk+x2o>KoZN@=kQD@uoorRXEeydAeU5BXyy@5CXsMy zz*gKCVP51|cuAe~0mdQw=zWy&1qJ&+e;2NRE#9n3^3l>#(C~eiE)SIkar)p;(hYG>zSe0uX{Y}ai)+F6Px8M zxjqQaJt^zk^WHywn6GCb%c|qk?s)849yx2h1CzOa`q&Sp?ATAQ(EiajOs>Juf1UUp zpi!0a-iQSAt3*1k-^Hf4@ff5NRhADyx=X?+e7tPT(-gRV13xj=>W|% z%^=uhJ?Dav9ViVf6{HAIbK%t z#h<@oKmL~XJesSwZzl%h6(9az;W>Dmzde8VN6O2}-5@s{ook+x>*O!?-9l#mUV)EK*I z9jr{1OE<#bC0JB^{aUcPe^5oQou{YG6yeGXtm7-?>?Qo>Or1Tx5YOM`mYuZp*6TGL zq}vaI##wKO4W4h{IqQRS=5}^2FWIoWYDHeYBs)!pVXttLxhus;1 z{YS7exh5zLmLJ~x4JHZWcF8ov3rFM;XQJWv(4M2<`GNJ<0$$Q_GpAfg{A$)U6Kw%G zZ7W>&$C9lXe}1^-94Esx6Sb-HX_M0A{@IhmHq`%L6J#mww6ME;;U4BGalngRp!<%E z@C{1A%TlP_My&oEP#%~r>)mhzMY=LwW=Y-5+y4P4 zto}w?e<=9+ab;3ecr|Njtn1*2X(eQaT#1_Y(h-b*pu>IF|0)C=vA@hj+8HmI37A5hep2-HgaWHN3 zV?9_^EEZ|euWyG#bN%|3lJffXfevI<+>)-R!seG%>AoYU-Qy&ce`NotV&-P`qr~XgT6rCR+XZd{&>J+>W=okW+AU(j_GU>C z??BE&J4@MlD{sY`6y|fQ@=0gK(uKr|eN@@-mg${Ft|_r~#ed%Eqo$0|LLGlj`numK zR1598+P);&S4H_K%GXH(i6l@-0wf7^l29TERgw@%LY*X%NFtRaLXt=)i6xR)C5e$F z)=3h7i6l`;5+q4S9Gk7& z1!Oi!TVgUzVm>U*{=cd$a0=Wf`(NtV**EOMoPVbnW>$IZzu7U7eo?x+t!P zj#Mz(KL<);7v%~1PYBEDa8K!R|14^HY@97xRUz8fdwct=>{^aE+Ent?#sFolay+Sj zF|DK4R$YcX#U%pk6qgaBMQ1$Ca$OB`s;ii#%`{9$hvL@YFWPPFN62i_nX9Qp>c5am zRLs(5Bof|72~NHoSOy) z#k_DJ-A#Q2DYul%^<4MvR#EjMEjLWFSz+ELv_<7cr42%Cx0C7vHHZbEQ-9h(NY0z> zq7Bmd*rjX_n?qZk+1X2Z<-X;=n7W#57W;qm_RTkfhBU)W(2$%q3;n-m80&ty>bru`T)%z=8ehK#-7uJ$ zj?jTKfWM5bT?IqmdF+yZDXrB1m~p}71VP-A@^Zy2f4O4sfh)d&x{zs6G%&fA*nG>t zAIO1z2B&ezucXOWboFVt{zuz99B6m(Sob@5T3?>J_QcN4Xuo>|!|fj1yr&&Z$er^6 zK7V^ljyJS)E{BH`-Tep)6iB=y&6(~T=jjs6xO+6ABc#|TU`_9TATfLo>WNPO-9ogG zqv-X*yOe}Uy+@%>m*|2e5tki>HMAIhYQGu8(z$!#g5WWKSm+!q7#yx%v#c86vkw*( zkoA{bHtEkiwI~4nwtGCbtQY~!VLYV#`?2BgpCRHV`CU}B>mYahJ{ruJay;-BH6ngE zA9C6$ZWn1(Cd8(HPfqp4m zD|$8D*8TR&Ell}6-L^+&v@5C83~wREudcBFhmJxmaz}sciVNPr63NS#`2GW|e&3_* zFJ5@-OQjK%d*MoL|HI79x~-qKd3`K7i}fW_g?r+U>H;8t9WFE_7B%xs&0I}0MP>;? zuh{JVz~{%LD_uX*uQhe)PHO1r0haP#;XZ;nV7|Re}(9avAw}ugLOYQ9D{-f$zwex<5a!YH5tS@Y1&)x9_rxzLP zx8Lw1OD->eU*da_7GA!bKGD)DVOma1AuCyk;PfdOUprGl;qVo~w(>8H2Pd>nGq3(8 zo#TuX1XiA}ouNBZXLr}u<;u0O;YESWrLHbms(CRpS<7RG&wJ=HOJTEal)T5(a-{dG zpWl9eu{=%JTUI6?!Nyyt_3GimdF8D4LJoaLw+%gi-VC=J@4ce)qOCMz$ywNlY>ZUi z<*Eih|A1=ohV|F;``!HZPtNHhbDWZ-7Z_t7nKQNs)*|&w??>k5>TXDoy8QN=6k@;q zX3csGlxz+%=5j^KS(gK@3ALG5>3Uzk(DE(IeR7(e@?m{xQNmOi)uLP4}m-VKO#JESzJz>3Fk9Nwd$D#f%w3P`3B5Fn`w;=L5KN%MSN`e*0#e zvg3>wHT3o^virGfw%zoWM;iRUy@jIm>1hpryC$r>p(LL+)t`Q@;iheG8Vc%{8_#uj zUsPd{6v18r0tV1HDH08c7*OV67$ho?FrbKn%+F>Zhr$bm6mdzaLPNNeBqyXwG=z%@ z{WPjV4dHTvAWq77Ms7NG9LELa3H6Fnhq$CD$@7%x5EtcESsA4|#AUg8>V}dP9%#dV zj)Ks11x<6`z__$3De|y1un0|_hpua2Twdj7fsBDF4?q0WS$d z6+oRL_T~Hpoa*B*Xw!m*v{2hocADp-$UGVc zD!?sUrd}Rv!f_V+UK-^pz->!PFN_iu;Kof;mxh%JOxAUY#%nZh=%(5bg?&K`Z(R%# z`Ni{MY4qprlXnW*0-F}IQwul&f8>bna;v1$+R;%y%`0C8e4#1TIiYjP(xsjXpj%?L zEzxD8(nT4n0J_2@MWL}8hmnv(1chVa!9 zp;?|vV;LxEMg#kmr?v|NmzA^-b3hol$P0~=FmN7|LIs3@Ni0<_LN=N!e@;^s5C%@O zL=!HCkz}z32m{AiqzM-W4$IJ00W>g4*e*vyd`zHKRcZ>OfxVK#B-W78z!jON=eVn6 zYiboq3#YV6Em9g6I>HqoQ5j2dB<)^PuSn8RLvY!TbFjam0CNni6Vhf25pL%&Aa1D3 z!DR~aeo$x#uB9}AU6+R7e^Q!9)Ys*RswS)ALRU^0JF8qmb!ZIdIEi&gn7c@$KuajI z(JQY?C8NtQmZ1eLrMh0maZ3 z3K`jxSIdLg#AQ`ZwRYS^x>Z;NDu8>Ln9{6Jfk3!9Ng@@%9ZpES$dJv(U6w_VsQ~v# z0o7KZ3C9glm4|+=0;xE3Dg96daGwlou|9CIPlm*!gwPU!39bjiyLr^nV z2qk1XdSbios+3HuTO4MA-=*{}AhA~mkC!?W2*{IWs({2f38hhLY9UUUf?S8VxvR2F zr2`-3XbiRuzM%#;d6kjWH>ff^PDm=x81i^L0cJNijt3Nqc}HvHi^CT>FNGM1WKQ^`CP?nksqSf=XFrh?5 ztp!T)2sO4q8Ro;tGojJ)rDqOoG(E{f6B9$rY&?bWqA1kmaL2@DSV)T^B6v&(HGhz32p-T;D6FW4 ze_%~S{lpLCYV!fZm#~-Gu6`3E0b;Rc|EYlb4UGiw(dQ+5>9XZ-ZX^IJ#E89A!1j#} z2XN#*d#ON%r$6kao~2Bqrv+3VHW16is!Yqmf?^!FIV~a!ibuIF2?@2JSU#qin-x~2 z*dX1cOmhp0hqz%(rEfuIG{Ga&;x@DK`Myw}!!yZ_f zz?rb8MSFyI4-y)MBYNuUgNmgrl(B+dkU4^;&t6J{MmbzFO?N%ektA*x#MKk#cH7f87L6nT`$K4B(a>m_RoX@dr*SCMuRL2a!EynW*+fm5($?E zY{iWc=0%Q$m()ogU>vfS-bWclCJ!m zt0Qx7%hi!peJq-DNk^s!fV!GA&U1H4j5{Rzy#2Tl&y(kE#|*`O-Q!u0Glh(pxLnSX z>%HLIk+MGbJOA`?zMg?BtCml@!=XL$$XV+hn9TLlr+z49%YJ%=c8|7Uat(&|f5h(q zjjD|IMkJVDCDL*IE{;XJ4a#1RO04Gl1lCJ8kazxTZ{E7W_ETH)>w^42x*mVOVOb{9 z&yu%8Jv11-k0(;{C*!@C{V)SFGkdsg=ZE9Rdwe>P?Nt|CErg((S^8Q(rwfy6Rb|VJ zC=6m=bepbUeQKCO01xujZYM7Df33E>qxhtb+KdL93_-fYneYeX`o}p^cHZgZ3be1w z75gq4Ui(pO1jz3YEqJfhOGW(t%awy;hxtE8ihRZ91#hw59;$nB*#^Ud^KKx(dIruogd;ac^l$VveKZ3vY%8YZV+~q(Gr#miOOFNx; zL1?;m^G2dF@19JS{hZr5Zz2(xe*y)FZBe$BC{JQ5 z%SFn!F+rh~*FSChGZg84zf$_mh2&D{qCY^p-b=jswbL!%1O1D9#Y3ScSDD?rv0i;Y zGA>f~dfGzH0nPf}{C%#4pU@b8VPomWxOxYBzE5piVI~(j-23y#>({dO92`So90@K2 zs60#Kkn0C>8vFeOf67BPgkWe|7IWf{%ykYKzGY{TSXZD(rEyj?9@{4kd)T0X#w)gx z-r-N{y;2a%9Z*Yy{7AZGl~|Y;>WaZ;EvCJ{=l_Ik$8tMryO=IPE*M-}5rhzX>vv=z ziWI@^@d?r*8*F)&Yt9eg)UoWw z%mdu|`PU?X;)Y#PVKZ&+y5c{mFf|Sk={bS92Z|i%@jNDyBLS=5vk8vxcx8Iq-t$hZ znSJ;hyvGVsrN%_SB4xvCMJDb4HvbDwSpAJ0VMXl5f0?bQ@M_l5NPggmDU&cmuEe5$ zxK^WlhL>0Cpd*^EK@ zZ*vj<6{cC{kL=@rKxliCWwxh(zsR;4@D?Npg!ikr?ESw@+(3KDsz1S}PmfS!#W~Gg y%ZXCS^}o9;l9$3yl|z{G)nW(=81_e#L)``Tqfp*ZaJaSpWb~o03=n diff --git a/homeassistant/components/frontend/www_static/service_worker.js b/homeassistant/components/frontend/www_static/service_worker.js index a72ef49fd22..a1ee58da087 100644 --- a/homeassistant/components/frontend/www_static/service_worker.js +++ b/homeassistant/components/frontend/www_static/service_worker.js @@ -1 +1 @@ -"use strict";function setOfCachedUrls(e){return e.keys().then(function(e){return e.map(function(e){return e.url})}).then(function(e){return new Set(e)})}function notificationEventCallback(e,t){firePushCallback({action:t.action,data:t.notification.data,tag:t.notification.tag,type:e},t.notification.data.jwt)}function firePushCallback(e,t){delete e.data.jwt,0===Object.keys(e.data).length&&e.data.constructor===Object&&delete e.data,fetch("/api/notify.html5/callback",{method:"POST",headers:new Headers({"Content-Type":"application/json",Authorization:"Bearer "+t}),body:JSON.stringify(e)})}var precacheConfig=[["/","7230be0c45b8b6faf702a0863293f3fb"],["/frontend/panels/dev-event-2db9c218065ef0f61d8d08db8093cad2.html","b5b751e49b1bba55f633ae0d7a92677d"],["/frontend/panels/dev-info-61610e015a411cfc84edd2c4d489e71d.html","6568377ee31cbd78fedc003b317f7faf"],["/frontend/panels/dev-service-415552027cb083badeff5f16080410ed.html","a4b1ec9bfa5bc3529af7783ae56cb55c"],["/frontend/panels/dev-state-d70314913b8923d750932367b1099750.html","c61b5b1461959aac106400e122993e9e"],["/frontend/panels/dev-template-567fbf86735e1b891e40c2f4060fec9b.html","d2853ecf45de1dbadf49fe99a7424ef3"],["/frontend/panels/map-31c592c239636f91e07c7ac232a5ebc4.html","182580419ce2c935ae6ec65502b6db96"],["/static/compatibility-83d9c77748dafa9db49ae77d7f3d8fb0.js","5f05c83be2b028d577962f9625904806"],["/static/core-5d08475f03adb5969bd31855d5ca0cfd.js","1cd99ba798bfcff9768c9d2bb2f58a7c"],["/static/frontend-8264c0ee8dafb09785ec7b934795d3b1.html","0f85166cf86014bcab9a48b208640aea"],["/static/mdi-d86ee142ae2476f49384bfe866a2885e.html","1a47930d13e98b823c3b00a824449f04"],["static/fonts/roboto/Roboto-Bold.ttf","d329cc8b34667f114a95422aaad1b063"],["static/fonts/roboto/Roboto-Light.ttf","7b5fb88f12bec8143f00e21bc3222124"],["static/fonts/roboto/Roboto-Medium.ttf","fe13e4170719c2fc586501e777bde143"],["static/fonts/roboto/Roboto-Regular.ttf","ac3f799d5bbaf5196fab15ab8de8431c"],["static/icons/favicon-192x192.png","419903b8422586a7e28021bbe9011175"],["static/icons/favicon.ico","04235bda7843ec2fceb1cbe2bc696cf4"],["static/images/card_media_player_bg.png","a34281d1c1835d338a642e90930e61aa"],["static/webcomponents-lite.min.js","32b5a9b7ada86304bec6b43d3f2194f0"]],cacheName="sw-precache-v3--"+(self.registration?self.registration.scope:""),ignoreUrlParametersMatching=[/^utm_/],addDirectoryIndex=function(e,t){var n=new URL(e);return"/"===n.pathname.slice(-1)&&(n.pathname+=t),n.toString()},cleanResponse=function(e){return e.redirected?("body"in e?Promise.resolve(e.body):e.blob()).then(function(t){return new Response(t,{headers:e.headers,status:e.status,statusText:e.statusText})}):Promise.resolve(e)},createCacheKey=function(e,t,n,a){var c=new URL(e);return a&&c.pathname.match(a)||(c.search+=(c.search?"&":"")+encodeURIComponent(t)+"="+encodeURIComponent(n)),c.toString()},isPathWhitelisted=function(e,t){if(0===e.length)return!0;var n=new URL(t).pathname;return e.some(function(e){return n.match(e)})},stripIgnoredUrlParameters=function(e,t){var n=new URL(e);return n.search=n.search.slice(1).split("&").map(function(e){return e.split("=")}).filter(function(e){return t.every(function(t){return!t.test(e[0])})}).map(function(e){return e.join("=")}).join("&"),n.toString()},hashParamName="_sw-precache",urlsToCacheKeys=new Map(precacheConfig.map(function(e){var t=e[0],n=e[1],a=new URL(t,self.location),c=createCacheKey(a,hashParamName,n,!1);return[a.toString(),c]}));self.addEventListener("install",function(e){e.waitUntil(caches.open(cacheName).then(function(e){return setOfCachedUrls(e).then(function(t){return Promise.all(Array.from(urlsToCacheKeys.values()).map(function(n){if(!t.has(n)){var a=new Request(n,{credentials:"same-origin"});return fetch(a).then(function(t){if(!t.ok)throw new Error("Request for "+n+" returned a response with status "+t.status);return cleanResponse(t).then(function(t){return e.put(n,t)})})}}))})}).then(function(){return self.skipWaiting()}))}),self.addEventListener("activate",function(e){var t=new Set(urlsToCacheKeys.values());e.waitUntil(caches.open(cacheName).then(function(e){return e.keys().then(function(n){return Promise.all(n.map(function(n){if(!t.has(n.url))return e.delete(n)}))})}).then(function(){return self.clients.claim()}))}),self.addEventListener("fetch",function(e){if("GET"===e.request.method){var t,n=stripIgnoredUrlParameters(e.request.url,ignoreUrlParametersMatching);t=urlsToCacheKeys.has(n);t||(n=addDirectoryIndex(n,"index.html"),t=urlsToCacheKeys.has(n));!t&&"navigate"===e.request.mode&&isPathWhitelisted(["^((?!(static|api|local|service_worker.js|manifest.json)).)*$"],e.request.url)&&(n=new URL("/",self.location).toString(),t=urlsToCacheKeys.has(n)),t&&e.respondWith(caches.open(cacheName).then(function(e){return e.match(urlsToCacheKeys.get(n)).then(function(e){if(e)return e;throw Error("The cached response that was expected is missing.")})}).catch(function(t){return console.warn('Couldn\'t serve response for "%s" from cache: %O',e.request.url,t),fetch(e.request)}))}}),self.addEventListener("push",function(e){var t;e.data&&(t=e.data.json(),e.waitUntil(self.registration.showNotification(t.title,t).then(function(e){firePushCallback({type:"received",tag:t.tag,data:t.data},t.data.jwt)})))}),self.addEventListener("notificationclick",function(e){var t;notificationEventCallback("clicked",e),e.notification.close(),e.notification.data&&e.notification.data.url&&(t=e.notification.data.url)&&e.waitUntil(clients.matchAll({type:"window"}).then(function(e){var n,a;for(n=0;nL`6Vww3ABzYGwW9%9kq9GyA_#&ctZFiM=}mj>-6fNk$%izT!OKEoLXj#7 z*>N5J_by0DmMkf`PCwWJL1K6D?6WU`x9(un*|t>Ho0@g4Y}wSK4(xODOsECuH*MAV z5Ztw3*KIw5=o8#_eh}FO)c$tC!3RsRI{jkZR`T7g{lYJdabMy9kHPtToM_2aLW($JU}BRIUFf*bvWPiVLMJ^6s7ErHGXg1> zL`uP!$tV>N>s;_8%X58RPg$F0oRN&g5ECX+LX=TO3R)*B)oH;YCwi+UV_8A-9Douf zbzT_IDvqh7BsaMc=DeDJ4%+Kd!8j$1;l7hx$+(~r{bCF=B#VnUMH6P^l)WS*~y(%c``uS)TJOG5E)Sc$^|hA1P=N9HeWS<2ov|WIW>%BcWhSGbLhW^dOfg&AAjgFQie% z@H{IN*NK#gVTH)mf!r-ZW5OskX{s24lS4t$gr^#EmMfiO#EUH~sbCsIC}+SG+R3S8 zxRfZW3Dq>E2hx|i9P1(jKyd<+G|$jYv`D3aBFjWl6byEMc#AaWG)6IimKO2s41YOGzH*NUOvsR%9$D zNR3<~jni*`8uk+A>q@j6X+lwxbFLX?DZ>cQjF6ahWTBx*(IxxRN>>;rMqInWnDFE? z{za>L?p#VZCQ(@+L}-x6At_?qp#&ZiLUMLiPK5t(eVitgNiA~J3T|5nu6Sbj0mwW?FIuD zBd@73y?0}bJ?tFHdI$rWNG7<`uf37uro;@@%uJF6+SI=CXee?1cEQr&gufh6<<-CqC$t-G= z9(7o1!5@?0;=+HJzMR=0#15o+)z?%%xDQnYqJ9Y-g4Dt6WKY$iADl^`pZcDw%U+4o zPhYgnvh3XJuBom8I}Z0QxWeD6k$&*F39|=(P1shYZ^OH7`+%`Nj6&zXwVN0Qo9EZ? z+3x1tgKPD!j_h!|Y5}W7-(CI_ZVxaF>rf0hs$(2S;^IO*pty7n@Me;2P|wQq_nl#x2H9h1GQ5GKg+OY2Vbgto(ile_ez*tM+%v z@BC@%_zZV8=C@Ib>ir+uR@_F|S}grXXhzqfT0`fO#{qzK9|h=Uguz8n59a{jOZfNN z`MwVC5HyYZEk)H`c^z6l#?!^TtiAgkQ-`ySIAP}?zxfo{Mcdr;IqIjjZ4kAMhLLI9 z;iSIwMuRZWBZ0#qkBx3hf4dkBsmUE-Hd$(?_#n@^SUm?6M60#ijqQnikKR0SpxyHT zI=cH*uHK>#2l~1N;TZzByQBhH@8RQvo4wbA51xOrms)(qyC!n-4QBXGdKE@&$t%2Sc|Ugy#eV(WQ>~fzw zxgTb~{cLu28=-Yqe;PyZ>9-hq|2rXv0{B?|9QqP{ybhfYJK9Z$B(X^luNN@tRqBUy zU>CxUZbUbN&#S(78kOA$8Q$T>B5$Co>Mb~t16&i`R4&}w+W-Dpv#xagukY>1;SCQu z`h@gd=Z#z{9W1ySefRwPL%cDQY_4>6(>?RgQ-8JY7AG>qe{{GXLib@I+uS^LF2=(B z#BibqUNkqq?Ok*ESglK2xsKu(=Ht7z{;teJwnKRh+S^>Ixm&c&t(*ICS7{HoXTjG3 zd;i7_6N0%a_%O5_00VN z6Xgb*8w~yCV8%Oj?b&y1p_n37FzDiG{g-VUIjt`*10=P;ZluO;#OcFq;Ie~h)Vgy` zzSt68ME#r}OmW553>Ru|d)2|N$UT1J+plNYLuVj*htBw_8}RGi3s~L%3znU9d1Dp; E03La=pa1{> delta 2440 zcmV;333v9?6V?+5ABzYG7(w`0kq9Gy0ziT$V<2^a*Y|KZxuCYJa=n;De=Doqn-ytNY;o{L&h3Mz6r)41Tt=rEYA0X-XyB z!%x>x+h?Mxq)?xH2yJj@$`)R%yTxwyPW0=pY%~l)Ev&$&eL0bv3$2(xp2w-s-mc&Z z?!yyHqK`Lr&$J`my+s--uz>sBt_aC&HhV5Vg0cg8!>b^wpq|^s#l_}R)zs*TwX#jS zTX1o4ATBgu)x!5CVpUFh^KPSmgB~e z`*+^6rnZRX_%&|UyYj?pRc$sp`PenJ7yhtDA#M4ee(uWq5kw2^$h)-nK`0x2d-ac3 z&wq;?bLu%-F*xm7w4+rE$}tBum~uXQ_s*Mmp_j3kNFXZVGMA|lCL>ILkUWi95u4aZ z?|q0LnzlDfPgbIas+(xI9)t7wm}yxkMst#KFvO%(=bGeN=A?*~(5y!R^++x=P9Z5I zl~QnS(l{1CbS4UxW|=;(r>spgPH9RB5XwbDsWK{0Kx?KFo#X{%RBzR!Jk8@Q1Bj`T zI?D}cMMx}TnwboDcV10@2kmvKV4P6SIU_7nlH{>OzZk;}O-W7?G-0PnB$9$Eq!C=I zn6m<*%W~WkPnG0ceMOTM7REXwF--~@%e-K*&Nu?b;xv<#6a_wQ^{A90b~H(8!3!Z2 zC22wkP{xWPh62v(v9MfKP8ClxBTb%WF$aq3&<#W}laQ1cw}q{LD$Q~pgE9%%Ks9dN zB!z*Z5LvX_!7Ypw)QMh|kS(nTRfR^-ws zV~Q-zRiT-b%Ok%mp>fXAL=gaIvLr>8b5NNq;v_4$jwRi~LQKwSnkw`Wp@~#N z79zQvjMU0W8TNnUc$##VVGB zh@2$}x|Srp;H}kYbT?@m+1O_Cvi}+X*i<^Q);MxtMo=o3agrjPC{0Ac6UKxPno5$! z-xBppIbYa~tW0tv^W0D-LFF`w4KkWhj3dSvW#2UGSJ35pxe;ancbCwNWJoJ!6wgym zC{iPnNaN&xn})rF`MMJAMw(Eu$%;aA%u_F_&6os1@9{Kw?HiTC21` zq8va}F2x)=tTe6uutaFY2aNk$Xg|pL#u^bPET@`(Dw@a0yf_zW!q61t2BcJoeQ7rs zuo!twjp@A`W9(t)P}V~j#7uHg$V_N~C4waAzEmc$jt!$lVu<(teb^V7-^3DTUUxIz zR-N&6JRWbwvwO0-xbe-&70v9`_L zO@3d0+vSJJ`%q~8SFHH1KHvUaYxq2SXkuL9ch#?+xjOsiV|^Hf&VOq+F$^}( zui>-Z&AA8H>Rlb#;da#mR*Sy7{3qNVU>Me+7;sd_IF7`{g?d17=^W&X;L8_ZMIE*$ zYH>N+4WD`!o^$Ob)T+_&=H<`Nwq(Q2UV1a{)SEg8LUrJRvU`CF-!71z6*33(BcGQH z#&_KvYBB+OR0PrRJ zd+mH*hj$2?#{HI}>aM&FEg$3QVqVtX{f?=_*+!hObCBPB3hbh7Zu%VcQ`H1FjE2^nM7~FFo;c9% zc>o>VeJWRP(T4+l-GcB80o-x*8i{qtfPtIaqw!gnO#ct2oH^6iC;3r-&H3(#9|SwG z!_gJL`6EE7s&t(I{)%$>4XApi9O8slcz^rpwbv)(c3?#`oP;+ZVr+k(&87as8r;Iy z`hj3-XOF!w5Pxd16xFk%E&=(1!Ht8VTMoi=0)puiJnwroHfVFlgTt+0t-824Do6f1 z?|0vS`otf)sxM+yesQ^~`m#A_ezT6c>R8Df7r+z+Aqu#jzTo;nv} z;eKK`(E~4rU1uF{_56*X*ROGgfZO=N{hg{BOzub118OHGoqINLo_rU$ReL#ilfHW9 z{(y;cgUtsEwCG@u^VyvFdMk+U>ddV zT$3-hgcngi=Lb_ Date: Thu, 27 Apr 2017 09:59:49 +0200 Subject: [PATCH 062/169] Reduce color_xy_brightness_to_hsv to color_xy_to_hs (#7320) This makes more sense because the input and output brightness is the same. We currently convert through RGB which does contain a brightness so we supply an arbitrary value as input and discard the output. --- homeassistant/components/light/hue.py | 10 ++++---- .../components/light/lifx/__init__.py | 5 +--- homeassistant/util/color.py | 8 +++---- tests/util/test_color.py | 24 +++++++++---------- 4 files changed, 21 insertions(+), 26 deletions(-) diff --git a/homeassistant/components/light/hue.py b/homeassistant/components/light/hue.py index 22e2541b271..c15acdd2b44 100644 --- a/homeassistant/components/light/hue.py +++ b/homeassistant/components/light/hue.py @@ -380,12 +380,10 @@ class HueLight(Light): if ATTR_XY_COLOR in kwargs: if self.info.get('manufacturername') == "OSRAM": - hsv = color_util.color_xy_brightness_to_hsv( - *kwargs[ATTR_XY_COLOR], - ibrightness=self.info['bri']) - command['hue'] = hsv[0] - command['sat'] = hsv[1] - command['bri'] = hsv[2] + hue, sat = color_util.color_xy_to_hs(*kwargs[ATTR_XY_COLOR]) + command['hue'] = hue + command['sat'] = sat + command['bri'] = self.info['bri'] else: command['xy'] = kwargs[ATTR_XY_COLOR] elif ATTR_RGB_COLOR in kwargs: diff --git a/homeassistant/components/light/lifx/__init__.py b/homeassistant/components/light/lifx/__init__.py index c43b901e910..33ed80bed06 100644 --- a/homeassistant/components/light/lifx/__init__.py +++ b/homeassistant/components/light/lifx/__init__.py @@ -354,10 +354,7 @@ class LIFXLight(Light): brightness = self._bri if ATTR_XY_COLOR in kwargs: - hue, saturation, _ = \ - color_util.color_xy_brightness_to_hsv( - *kwargs[ATTR_XY_COLOR], - ibrightness=255) + hue, saturation = color_util.color_xy_to_hs(*kwargs[ATTR_XY_COLOR]) saturation = saturation * (BYTE_MAX + 1) changed_color = True diff --git a/homeassistant/util/color.py b/homeassistant/util/color.py index 57d88c5328d..a925ea337fb 100644 --- a/homeassistant/util/color.py +++ b/homeassistant/util/color.py @@ -268,10 +268,10 @@ def color_RGB_to_hsv(iR: int, iG: int, iB: int) -> Tuple[int, int, int]: # pylint: disable=invalid-sequence-index -def color_xy_brightness_to_hsv(vX: float, vY: float, - ibrightness: int) -> Tuple[int, int, int]: - """Convert an xy brightness color to its hsv representation.""" - return color_RGB_to_hsv(*color_xy_brightness_to_RGB(vX, vY, ibrightness)) +def color_xy_to_hs(vX: float, vY: float) -> Tuple[int, int]: + """Convert an xy color to its hs representation.""" + h, s, _ = color_RGB_to_hsv(*color_xy_brightness_to_RGB(vX, vY, 255)) + return (h, s) # pylint: disable=invalid-sequence-index diff --git a/tests/util/test_color.py b/tests/util/test_color.py index bf2f4e5832f..43b5904a895 100644 --- a/tests/util/test_color.py +++ b/tests/util/test_color.py @@ -56,22 +56,22 @@ class TestColorUtil(unittest.TestCase): self.assertEqual((0, 255, 255), color_util.color_RGB_to_hsv(255, 0, 0)) - def test_color_xy_brightness_to_hsv(self): - """Test color_RGB_to_xy.""" - self.assertEqual(color_util.color_RGB_to_hsv(0, 0, 0), - color_util.color_xy_brightness_to_hsv(1, 1, 0)) + def test_color_xy_to_hs(self): + """Test color_xy_to_hs.""" + self.assertEqual((8609, 255), + color_util.color_xy_to_hs(1, 1)) - self.assertEqual(color_util.color_RGB_to_hsv(255, 243, 222), - color_util.color_xy_brightness_to_hsv(.35, .35, 255)) + self.assertEqual((6950, 32), + color_util.color_xy_to_hs(.35, .35)) - self.assertEqual(color_util.color_RGB_to_hsv(255, 0, 60), - color_util.color_xy_brightness_to_hsv(1, 0, 255)) + self.assertEqual((62965, 255), + color_util.color_xy_to_hs(1, 0)) - self.assertEqual(color_util.color_RGB_to_hsv(0, 255, 0), - color_util.color_xy_brightness_to_hsv(0, 1, 255)) + self.assertEqual((21845, 255), + color_util.color_xy_to_hs(0, 1)) - self.assertEqual(color_util.color_RGB_to_hsv(0, 63, 255), - color_util.color_xy_brightness_to_hsv(0, 0, 255)) + self.assertEqual((40992, 255), + color_util.color_xy_to_hs(0, 0)) def test_rgb_hex_to_rgb_list(self): """Test rgb_hex_to_rgb_list.""" From ce63bb0842ad9f06717a1f131b19c9c9f592e2a8 Mon Sep 17 00:00:00 2001 From: John Arild Berentsen Date: Thu, 27 Apr 2017 10:00:07 +0200 Subject: [PATCH 063/169] Fix broken docker build (#7316) * Fix broken docker build python3 branch * Update python_openzwave --- virtualization/Docker/scripts/python_openzwave | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/virtualization/Docker/scripts/python_openzwave b/virtualization/Docker/scripts/python_openzwave index f4eb233e53c..aff7bfbc16a 100755 --- a/virtualization/Docker/scripts/python_openzwave +++ b/virtualization/Docker/scripts/python_openzwave @@ -19,7 +19,7 @@ if [ -d python-openzwave ]; then git pull --recurse-submodules=yes git submodule update --init --recursive else - git clone --branch python3 --recursive --depth 1 https://github.com/OpenZWave/python-openzwave.git + git clone --branch python3 --recursive --depth 1 https://github.com/casaiq/python-openzwave/commit/4294892d7e6fca77f118ef5ac0826227d3270a46 cd python-openzwave fi @@ -29,4 +29,4 @@ PYTHON_EXEC=`which python3` make build PYTHON_EXEC=`which python3` make install mkdir -p /usr/local/share/python-openzwave -cp -R openzwave/config /usr/local/share/python-openzwave/config \ No newline at end of file +cp -R openzwave/config /usr/local/share/python-openzwave/config From 3e4e84e3a7d45d90da488c66d1a006a00142e16f Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Thu, 27 Apr 2017 01:02:14 -0700 Subject: [PATCH 064/169] Re-enable Open Z-Wave in Dockerfile (#7325) Turbo fixed it in #7316 --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 1ecb0f1fe65..f0ceb982982 100644 --- a/Dockerfile +++ b/Dockerfile @@ -5,7 +5,7 @@ MAINTAINER Paulus Schoutsen #ENV INSTALL_TELLSTICK no #ENV INSTALL_OPENALPR no #ENV INSTALL_FFMPEG no -ENV INSTALL_OPENZWAVE no +#ENV INSTALL_OPENZWAVE no #ENV INSTALL_LIBCEC no #ENV INSTALL_PHANTOMJS no #ENV INSTALL_COAP_CLIENT no From 6631e9e939ad4f91eb8c4bd420de3a58b0f3cde0 Mon Sep 17 00:00:00 2001 From: Adam Mills Date: Thu, 27 Apr 2017 08:01:30 -0400 Subject: [PATCH 065/169] Version bump for automatic (#7329) --- homeassistant/components/device_tracker/automatic.py | 2 +- requirements_all.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/device_tracker/automatic.py b/homeassistant/components/device_tracker/automatic.py index 5f14c3a6785..55ec3151227 100644 --- a/homeassistant/components/device_tracker/automatic.py +++ b/homeassistant/components/device_tracker/automatic.py @@ -17,7 +17,7 @@ from homeassistant.helpers.aiohttp_client import async_get_clientsession import homeassistant.helpers.config_validation as cv from homeassistant.helpers.event import async_track_time_interval -REQUIREMENTS = ['aioautomatic==0.2.0'] +REQUIREMENTS = ['aioautomatic==0.2.1'] _LOGGER = logging.getLogger(__name__) diff --git a/requirements_all.txt b/requirements_all.txt index 7de498f24cc..189349b0ad4 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -38,7 +38,7 @@ SoCo==0.12 TwitterAPI==2.4.5 # homeassistant.components.device_tracker.automatic -aioautomatic==0.2.0 +aioautomatic==0.2.1 # homeassistant.components.sensor.dnsip aiodns==1.1.1 From 9a67111a0f72e69017a4aa00125daf9cfb92f1af Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Thu, 27 Apr 2017 09:28:08 -0700 Subject: [PATCH 066/169] Right fix for Python Open Z-Wave in Docker (#7337) --- virtualization/Docker/scripts/python_openzwave | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/virtualization/Docker/scripts/python_openzwave b/virtualization/Docker/scripts/python_openzwave index aff7bfbc16a..85a41890186 100755 --- a/virtualization/Docker/scripts/python_openzwave +++ b/virtualization/Docker/scripts/python_openzwave @@ -16,14 +16,12 @@ cd build if [ -d python-openzwave ]; then cd python-openzwave - git pull --recurse-submodules=yes - git submodule update --init --recursive + git checkout v0.3.3 else - git clone --branch python3 --recursive --depth 1 https://github.com/casaiq/python-openzwave/commit/4294892d7e6fca77f118ef5ac0826227d3270a46 + git clone --branch v0.3.3 --recursive --depth 1 https://github.com/OpenZWave/python-openzwave.git cd python-openzwave fi -git checkout python3 pip3 install --upgrade cython==0.24.1 PYTHON_EXEC=`which python3` make build PYTHON_EXEC=`which python3` make install From 0298522fd53991b97f4f21ddd1c5a4f39012e4de Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Thu, 27 Apr 2017 18:30:34 +0200 Subject: [PATCH 067/169] Use four-digits year (#7336) --- homeassistant/bootstrap.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/homeassistant/bootstrap.py b/homeassistant/bootstrap.py index 7f8c586fd80..8bf03597b9b 100644 --- a/homeassistant/bootstrap.py +++ b/homeassistant/bootstrap.py @@ -214,7 +214,7 @@ def async_enable_logging(hass: core.HomeAssistant, verbose: bool=False, fmt = ("%(asctime)s %(levelname)s (%(threadName)s) " "[%(name)s] %(message)s") colorfmt = "%(log_color)s{}%(reset)s".format(fmt) - datefmt = '%y-%m-%d %H:%M:%S' + datefmt = '%Y-%m-%d %H:%M:%S' # suppress overly verbose logs from libraries that aren't helpful logging.getLogger("requests").setLevel(logging.WARNING) From 630516f309471da285e0381933ef77ed1291f63a Mon Sep 17 00:00:00 2001 From: Brian Cribbs Date: Thu, 27 Apr 2017 23:42:50 -0400 Subject: [PATCH 068/169] slider and tilt open/close seem to work --- get-pip.py | 20061 +++++++++++++++++++++++ homeassistant/components/cover/mqtt.py | 110 +- 2 files changed, 20166 insertions(+), 5 deletions(-) create mode 100644 get-pip.py diff --git a/get-pip.py b/get-pip.py new file mode 100644 index 00000000000..2bd2a16246d --- /dev/null +++ b/get-pip.py @@ -0,0 +1,20061 @@ +#!/usr/bin/env python +# +# Hi There! +# You may be wondering what this giant blob of binary data here is, you might +# even be worried that we're up to something nefarious (good for you for being +# paranoid!). This is a base85 encoding of a zip file, this zip file contains +# an entire copy of pip. +# +# Pip is a thing that installs packages, pip itself is a package that someone +# might want to install, especially if they're looking to run this get-pip.py +# script. Pip has a lot of code to deal with the security of installing +# packages, various edge cases on various platforms, and other such sort of +# "tribal knowledge" that has been encoded in its code base. Because of this +# we basically include an entire copy of pip inside this blob. We do this +# because the alternatives are attempt to implement a "minipip" that probably +# doesn't do things correctly and has weird edge cases, or compress pip itself +# down into a single file. +# +# If you're wondering how this is created, it is using an invoke task located +# in tasks/generate.py called "installer". It can be invoked by using +# ``invoke generate.installer``. + +import os.path +import pkgutil +import shutil +import sys +import struct +import tempfile + +# Useful for very coarse version differentiation. +PY2 = sys.version_info[0] == 2 +PY3 = sys.version_info[0] == 3 + +if PY3: + iterbytes = iter +else: + def iterbytes(buf): + return (ord(byte) for byte in buf) + +try: + from base64 import b85decode +except ImportError: + _b85alphabet = (b"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" + b"abcdefghijklmnopqrstuvwxyz!#$%&()*+-;<=>?@^_`{|}~") + + def b85decode(b): + _b85dec = [None] * 256 + for i, c in enumerate(iterbytes(_b85alphabet)): + _b85dec[c] = i + + padding = (-len(b)) % 5 + b = b + b'~' * padding + out = [] + packI = struct.Struct('!I').pack + for i in range(0, len(b), 5): + chunk = b[i:i + 5] + acc = 0 + try: + for c in iterbytes(chunk): + acc = acc * 85 + _b85dec[c] + except TypeError: + for j, c in enumerate(iterbytes(chunk)): + if _b85dec[c] is None: + raise ValueError( + 'bad base85 character at position %d' % (i + j) + ) + raise + try: + out.append(packI(acc)) + except struct.error: + raise ValueError('base85 overflow in hunk starting at byte %d' + % i) + + result = b''.join(out) + if padding: + result = result[:-padding] + return result + + +def bootstrap(tmpdir=None): + # Import pip so we can use it to install pip and maybe setuptools too + import pip + from pip.commands.install import InstallCommand + from pip.req import InstallRequirement + + # Wrapper to provide default certificate with the lowest priority + class CertInstallCommand(InstallCommand): + def parse_args(self, args): + # If cert isn't specified in config or environment, we provide our + # own certificate through defaults. + # This allows user to specify custom cert anywhere one likes: + # config, environment variable or argv. + if not self.parser.get_default_values().cert: + self.parser.defaults["cert"] = cert_path # calculated below + return super(CertInstallCommand, self).parse_args(args) + + pip.commands_dict["install"] = CertInstallCommand + + implicit_pip = True + implicit_setuptools = True + implicit_wheel = True + + # Check if the user has requested us not to install setuptools + if "--no-setuptools" in sys.argv or os.environ.get("PIP_NO_SETUPTOOLS"): + args = [x for x in sys.argv[1:] if x != "--no-setuptools"] + implicit_setuptools = False + else: + args = sys.argv[1:] + + # Check if the user has requested us not to install wheel + if "--no-wheel" in args or os.environ.get("PIP_NO_WHEEL"): + args = [x for x in args if x != "--no-wheel"] + implicit_wheel = False + + # We only want to implicitly install setuptools and wheel if they don't + # already exist on the target platform. + if implicit_setuptools: + try: + import setuptools # noqa + implicit_setuptools = False + except ImportError: + pass + if implicit_wheel: + try: + import wheel # noqa + implicit_wheel = False + except ImportError: + pass + + # We want to support people passing things like 'pip<8' to get-pip.py which + # will let them install a specific version. However because of the dreaded + # DoubleRequirement error if any of the args look like they might be a + # specific for one of our packages, then we'll turn off the implicit + # install of them. + for arg in args: + try: + req = InstallRequirement.from_line(arg) + except: + continue + + if implicit_pip and req.name == "pip": + implicit_pip = False + elif implicit_setuptools and req.name == "setuptools": + implicit_setuptools = False + elif implicit_wheel and req.name == "wheel": + implicit_wheel = False + + # Add any implicit installations to the end of our args + if implicit_pip: + args += ["pip"] + if implicit_setuptools: + args += ["setuptools"] + if implicit_wheel: + args += ["wheel"] + + delete_tmpdir = False + try: + # Create a temporary directory to act as a working directory if we were + # not given one. + if tmpdir is None: + tmpdir = tempfile.mkdtemp() + delete_tmpdir = True + + # We need to extract the SSL certificates from requests so that they + # can be passed to --cert + cert_path = os.path.join(tmpdir, "cacert.pem") + with open(cert_path, "wb") as cert: + cert.write(pkgutil.get_data("pip._vendor.requests", "cacert.pem")) + + # Execute the included pip and use it to install the latest pip and + # setuptools from PyPI + sys.exit(pip.main(["install", "--upgrade"] + args)) + finally: + # Remove our temporary directory + if delete_tmpdir and tmpdir: + shutil.rmtree(tmpdir, ignore_errors=True) + + +def main(): + tmpdir = None + try: + # Create a temporary working directory + tmpdir = tempfile.mkdtemp() + + # Unpack the zipfile into the temporary directory + pip_zip = os.path.join(tmpdir, "pip.zip") + with open(pip_zip, "wb") as fp: + fp.write(b85decode(DATA.replace(b"\n", b""))) + + # Add the zipfile to sys.path so that we can import it + sys.path.insert(0, pip_zip) + + # Run the bootstrap + bootstrap(tmpdir=tmpdir) + finally: + # Clean up our temporary working directory + if tmpdir: + shutil.rmtree(tmpdir, ignore_errors=True) + + +DATA = b""" +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 +Dl9dT#o@hb?KJ9Js +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 +z5bE(uMm`NgwvTPD~8a7n2X*W$(6) +Ksvd6AhOXV2fgfAjA3>z8NA*^AR3!fs3026NLEKf@;KA<^ch#dm;YQKi|Nx?0vijBisQdHC>blb7C9i +fW#E`{<^IH3u3M5`L}I`byTcKwX#Xxor#|dwV?C(y+|1>HC~uUdL&cZW>uznBS&KKILbyh2On$iI$it+RO+8Q2{X?s +!Zs#b0yWs(KU}agVyveWSclo^8(;wL*)4{<(k|2{OAd}C>NLYlMAV%JFo1!LyKmjgp{}c@*;qXJ5q`UXxuQssHB42@mKY}dl +Ac9LQl@Lr)Dviy$%SYYFea>h*+dgoUZc^7e!m5AQxB>W+kbspsumkF-w~i#{OWD +9_6f5WIZ|-A4Z4(d>FyAG>LfHrr;!ZM1ri`H5*AO`OKC0}8nYyhtSBn4VT +J2!x>gZZ1TP$;Sh>4Hh)T^KhJtbB25&PEN%5*&Bj7KDJPHbut8ie!HhfP-Jnxu|XSeoq?efs3ZWn*;? +x6<)Q)sP)HCIg}jypbzJ0SS~xxNr`HY890YfM{M!rL6GWl>OgNuJuu(jUf3ET}^2R!cJsaIl(9jUKpi +=vTcbI+}Y5y%;)d%8Pg&i6x{s_`k{U0p%XUcul5ZkS8Aq_d$2=QdO!W{kVVKaDeAY6rJIp?r +*pFm6{av^K1Q!)R!dPIt#su186Q6fn;t?I>Y1D +$U4&xJ8LE@`(Bbu2AoGWSb%M6ThHUC+;*WziF=(;0Et+V=O#u9dkCTo+`XKtiwH*8e=(>kLfCbYZ0cN ++#%iaj*qxq)wf!LM|#8W95-T>UQ6^%looWLnqbd?t7z_-=xYcYSj6P6btK=`vk@goKAN8JVs23l_2XyW~j$-x%BM*xc{IBB;YUcDP#~@jfE4fuC=%8y3LtAHFq)Le&U@7zOs&$%|)})V&sSm_p`vuIR +1W1)PNfLo}TucQxhU*O)J`A>_8orM0TUcK19$ +Mzvzv^o8^zPA=?bx1~8rla&Ogw!&+{IT+d{d0laxF(Z$TuqEiaG{fQnk=I?P$zI!zKS0M1?$@$^q3wN ++HJs2P%ss(*C0f?ruZ(JOPhSt*fn5f$N(_mBV+~Fv0MUrMl +HH&r09zc#m+t!z1_~w4_>s53y}g4i6{~FWJT+oT-b#GwNgQU}E?Pz~VSFlu3fnN3P+`X(D)TA9x0 +^y~sr5PH8l9h(zBfNKMyAnd%G2lm3G{ +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 +diNEoXc^i}UiBY@Lw!kZQNDwr|1u +Io!^hEW{UiNvy9rkkb5@-o9nHP{HiMKyZwyIfHX*)%hdGJR5>ro(m3%p0amiEb& +t>VuUupgik{LcB>q)k-i|pm^k#Nu7^1phIplzVIxe=*P5ZrA|)$NpAHg>u*hV4s^uyrhr#wN-JScrVW +@qJdqJP1c}LIkT~d$I_c^T=<$59z_{_Xe2M2u!G-(Aoc*eN7VGIxKD^@Wqf%JDbBBC}4S-A663%e9+)Z8@-vzrgZ*+$NDE +FDgDrL##-cE_2C=5ffVQxJ36Pm67j+bt{nIgnH;809UV~xUPjdauJ +AEdyVy4kh?y9&U-?%DywhKe!n4*SsLp(R?*v=TWfQBf^+K(H8esaD(zoVMh+3RVHBcD)0DnXcQ^S~2> +3l)*;!g93UUsM5g*!f-t-4qnT^Fv#+(=JU4JX8aBSJb#g98JZ5J`tiBB!Gy(#4g%}|k&$6Z83s&>byU +TqF$%IpzHGr7={vF9|4^KvyUBeNqYtFa=S~40U+X|A=yV4dVX2jyC@Lo$5MCkmF(m!Ga7&m&INS?16x +dF3y=k^Ry8Qh!**$oH{JeFRe%CDafG|g@IFm^ktZ)j)V);wH*$IOe{+{!se2$)|Jzs-~OB{V5pk)Rj^ +qTa_gc*rSV`XVT1$TGyfG{yM&A2e`G6lIsr&&3_y0hmnRrbz)2dr87H?enJWQICRt5K(Mv}Eu&{)I2Oc^<=Y+ScP)`)t+F{+i?1y9DCpVP8a +VhD7*&HMy?BZw8ktL?kYgSy5j|9skxq9w7k))9w24pOL2?dUNQH^L6Aw;|cKDuf=pIBF$In1SUxF1mg +YULmJp|rUMnjX_$G}JZ9%vsp?J_xQm(kd5NOloN{>SW!nEab=1eh{IzzhR6I@nDP-)8Kr*8a6uL8iRl +APA@0Kn1%<9WD5K%r)nv5L9C@?M-HgnEJZ6p~l*In^&7H$7Z@5S(p5BTxD$NdH~kzGp(Jl69tcaD6s) +=Cum3C1No>z*d>oiWnoA83T_B&&oJk&=9R4k%=f?0N$S9CMUH~4!tp}Y0qQ#wg!Ro#rmLl2O9LEi +vo&~cn&)b-;KWoP&lu4g9{0^1WvHm?5;(+qk}RuXE4X{_jLDzN_UQ2$p` +EID%P6`s~3}yxhp4dq=9>eG}FcZZ}@b!R5O9#|8AcFm%|@T4+14_b<;f6WY<()o*tm&9w0B5o2FRJ^+ +^#9X7kJ6zpx*8(iQ%R?~3Mj@&-~d>*~@j{VHuW?O$|cW*YBDVTc6{?x!fh3WhuLI_Ij4bE5w#%K%BO_-mdUZN{Cf2q39_-`Uul3@SM)oF(ygI~(lrBU_^_W{v88jarbZouxG{A}byla +ZyB%fEEzES>MN-=}K3Bo<^qo3_=;9g$l+B{ls&h2SmY=#noYEWjq!Cf;@K9^pL*62ELU^&5ic9`Z*;| +=Y_KTv9QyaN@K(t^6TuLHF-Kq^-s1rNO%#`Q +K{@dO^*L2lfyS0++KFwbV~7)?UMgLDmPT1j)nZcrf;3t2j1FAWuJ+cC+}5ufVO#tMuK~ZDsi16mbV=* +k)oHT^QBRa<#mPBrp2P8`Lcl8+4qaHxE$IpoGdaB;eD|3Syt=B4R=oRD5AMCN +!5^cDI+Q@j++-&XS5kmqH5uNfmg~{^vID +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 +kcPrV%mAM`*@dlHS&gwPF0E3m&~v~nU@iBjI +&9yG=OGQ?K-*1#CN!wZcCVOaa*p}L~kA_GcKCItt|C(Fk^g&(hIkNWNG@jTx!;Vtzp~2Mvw#fiFf<0B(-7`v5kSx-l4S;z`;;Xgi=}y0o%c +C-4sCd*E<~bnHa=yhN>S!|J&Gdkw@Y`fUXLM?b5mfs@H%4jd{}{8Fwr37vNkSY#K<*4vd`XQlOyD)}8 +XbL|o>ej%=htb=~YUaZv+v-WwZ&%QGG!Y-AOHKzNdOC8?D=Ko(AcF*_8R+B2uBp4>u$LM9vFov`4LG0 +EmVcV|jnFRxd$oM6CG`~h|e=%xc^4mc>*wtv8Zt9`dZY2d0CT +vcmeb1?XDvNGGSQWs`|R#^k_B{h;TCP*3su}V(0Joc5}^`y)OBS^lFTT=p?utdVMAG +FdZ*Rfii{1i}_xKQl+Rt{mWCWeEe@r^Xrt#D3SrJ1Xz5FlCo1ew)P)?r*D+^36kr9pe^d8>DesmG53%2wCNG +GJt5h##2|bI*T=Q3B)6W(wK<6mnMU#+)C72* +tTM9t8YmrB@J3aKXS+1A0Fx{}{ftIZdWj$<`%ubo&2C)#Je}iqg#f=Sk(6YSV;oeUhkhX^?9-{<?d-@N?q-@ia98M@c5>fO3PdV{_EdR@<9S&`g}Ur9*e5+rzgP+-e~{T)`N!Whzai{dhg_AGcYO0~HdF +)Te85vze!x|6BSf@)b$aB-;abPcosbGec2jLfm4GLsn#Ij=mzA}R6!d-JJEZz@Dj35oJ+%R^sLj}=(l +bXIxG+o$%#0EwX(MvBWkMN)%?9W+QXxnN(NP>ehq#CmYjpW_$v2_`8Vfc(;FX`@yA=iggoObZsrtxcf +?4mmR`WMrNuAXRQ*Y%`EZS?~9?Zu5M>&PBb%$_faE?9lB%j8Gc|iLxCNng+;MU=PM;HsTm4IS^FYAaN +mWwqisOCRkydY?i+J!lRO)e6eV|>xe4xE3rS)QJ_y1%it*Pai{TvZ-#Mp7{nE!isVQ9Ct!yN{@nF8ai +LIhHIC8jdWW=%&m;0pp$@j_6sj+uULji?q8srTJxIftHR5o!SP9R5Qz)avRS0Qb9Z&McF_e{^%(ElE` +z;a5ns5Mv4TR;W4^SQ(oH1(PUr%JmPiMpNQHUYG74)N7F!6}O3h5n0br>K-pVNr)D`}r$JVez6jft{_ +)smtPr>tF8=^{?k8Z7JuYfE>%wQveyQ{UhmLRF;Sd%B~4ma=t|f2ctsAg48f9H(0a0c3f2e)R7ku^Lb +oj|lNl&x5u20n_?mY2tez+u`GOh5PU07I+Be+z7IM#%RU>mxF?vuQLHHRDUWq&lDTjExd)ELE*YQbD@Bb>~?YQU7Bu!rcl(c6 +zwU<5ufWx#N!DF0-hHHfW`W6QAi}ConG7Z+OjQ1Myh(eVIZE{`~QR$OlN8j&2`F*tRw?Q;M)CTzSz2> +d?VBWN6Nm7;1xhuEUj@CFbVZx3u<0Tss*!@ko3vfiG>)e2X?LL?-SY#Orb$%mQjw)pE?9T&(h{Y&QnN +J?cG3tVUmOFv9)A_z6$VpJ=V$3A^DJ*!noM3+XT&TyV+;SN9}JGTV^ +EZ3UMI%XAOlAj)qT$6LB)WoSyg=Mt53)r)rFst({i&3OK*^GIy({-d(S-f&*)nH^rhxCtEtmX@aA_m7 +w0{=(Hvoq{Io&(NpIz@kg%Nh1`E-;CvT46u?dvE^?2m$^06GZaqm^cgK-Wz##IIa~~$^QmAo8FQMSz( +}c|lZP;bClfG)wHT#rc_M-%8kTZZ58sid8KA7Bq7o4Wy!F^WfnUAO$ +*Ag&R=sbqIsH#Z@w)a&$^eS+!7n1h$FN{F8Rv4u51Y=|6+DSkk?lU$`er0N)+=Qa7}*#53iB1l`|R|+ +*Sf;s_ke?JjMvJkt^g&GNi2YZttwsao?!*zH_o-7m$F>Ij +#!=(U#*V92wa*PZz{vPaLiB=|KuJd&G&!1JSDIhcy)qmn9%B1a+lGs@)JY+K +%yz^x*>Ih1nop9xTf6qkYhMZ2UFv+fq0F=Z?R&q6gUI#ER7zgwYSo7l98l*^606LEUL6)L$kJh&U&u{ge^YHXd-i0L+Th362B78=cG|LT{B2O#Dqs#X96o +y&j#B|aJk9v;69FYsoEknxOX)H}Kd!$dSOHgd)sgcYqc?2q!oBMal_er<%g2&2(;VXIfU*6i2(JY%Ki +8q}L|x(ZMqWb$;2AWpqa)N(&l_#sL>`U+db))R*$KYA0GWco&y>e_<^XP>4)K2@4a@SQa}~?p%jP_U2Vls30Y#lS>KW4t0}XtnLE9GEa_xYEKkk9!(O(d3;kjQ?d>A_%ZR<3H +f8Eng(najL{uD5SO221lX^m(;3?7LE(*Uy`ZrmZ*fq6EdA0>+hs0G8mj?I!dLfc6Tyas*o?8n_va5Xa +^HX_q|2biFpYC5G(O%WE1WI9E3Pkl2mH4LaqI +LG$4N597qw(zNU0H?oN3pjnq)IcesCLkCk{pTL=!Yh&#Sut#_@KSu4QTc!Brf(9UqEs(7_#jW>8}Q^+ +G}%dzq3^3pw9ikA{z}L_BK8Rw$;f8O~HMK{PuXCXOi(L|Kiz*%$}>-1n**2^>c4RSRVhx1XP)Z0MMEE +l49>urzcYpYQD9bsV9Iq@#~hsyCxVMCT-E$2~$v_&Nv9jt^dAVJ&?Y#O0BO#o3KO^Q~})@QF6!2|6sD +<{oz?b}ad^!yX7jiW3mUm&14$ccR@U0eeR1DOR=h_OvLP89y8Fv^~)QAfJGG<$;(mo>lpJ|BH?9<&(D +92oVfEWs%3171<56fVfPGV**@`o`55T-VbdlpcQgk!9P__-IGpOm2cij!|)&9YLF<&4G7cxmxoiUfx8w23d_6Oa^Rkz+t28B0O!UgT(oiIHQ$(di5hRL9kf=7N +GkFQ9|FEeWD*bC_s%7Fi%$nF1DN!pPKoC2hq}{^lBpmBUNg{(Kr1N^65b65u#Klb7smzIV<#FjC06il +##V1=F3=if+((ew`W(i$IwQ{cpQ^tB$ac4ae;|N&)XnG)KnMZ{d+I69Xv~81ew$Runsp#+ssm7RZd9) +0r*o^JpBq4leQiLL-Ma(*+riJX*er`K^1d_<)R%KD?4Du7&*cF&OfXCH;lHnuC49Aa;;PaoKoF*WW1~ +iD&4znxGc}5JJ&Vj5%`b%3KBADcVM&^6D@8ut!7l@myA^wVYC2(7BW9zQ5znfuGrrFtkm6H%iv)(P!M +>johEBtN>9^T@dtgxDzyA?nsC+!Ju0p>tZ(FyY8I8nXlQgMoyI1BZOs;d!UCYs8J{5LdsQ5t1cL1^2n ++ZX%?`nqZ*WuYMztFNQeEQqeeBwM=8{>S{1uux5dY;7{<^>qyX4M&5zr0LPEmb_JG)wUc-sAQ{H#jdL +G6?5=H_2LwfV(HeK{S|922Z&QWM70U$9SuWKu+xTnmO;SItccP)j#XcaM`qzvx+3UU`jzV-e6P4x(4;(E1(xi4DVoVyBfXN;r4=0|YvVqA +aG?Hjh9q2(Y`pbuCl`kJmQKM~cn*iRLV83b9J^-zj`6@n}kO?L+dmJYttOga}cyP#!${g{4>eFK|^?( +e&Z=Kn|4GB-kOO6{nv;{qce*S8NB!oUic|o%#*_Tms9ebP(r@hZ2=jwz1Q_6MG3Nn4M>21blDcq9nIW +yOma#L=%u9_d5O(n{g7{Jx0GiJ1S`cNOq*DpgWbB~1?6DK&O5Y&M%8uuj@&GMocCG64oBm3idVB>TO2 +fbjMXi9qWdfToBIjFjWCxDX +x=7a+2f4OqVAvB_8Iq|q+M-qD{+hiXAREw?5@PW+ +C6W7$-PZ!D`)SpO0$Bw1x!A^bOVQxys0lk_noBWy*tR(jk?6;ot5hMgTr9zD`za=U4RPXD(V2xu5zXLi!H3lPB`OR_fYCPO7(6s9599S19MM)SVRsa5q|z2YxChCFuDZ3e +=ZB0}kIiUjN*9A(Jha0D&crsb6irc(+8v4_C87A-X8rvrg8;pfT1EkWiw8EkPP*!(>IaS#qn{o;oK3! +{+q;ve1I^ay%&a?(VfIV8O`I4%ObZ$=p6mD^YB-F!r7+&9N!>L4EBtny5kCHZ|sxRH<<(8eoJpj`H_I=*t;fYH)wu0l;4|9(A_5?i +~B5K9PxsiO6qoc#fiPmZS4fw7zHxD%YHfm^uTI;h*D3NXH<&QUyR27K_c4{neMUNbyM%Qqmx)~vPF@%?Ay#V@Y&Tz*|U^y&Y7dKTGS2 +3+1$S+M4Vn9e8uIf?he3srPQ4Q%>RRzjya#%zfDV@sh!|Lzd0b5>Lih9uvq2F2haRpxt-go8aRk+FbF +7^NX_Hn%4}6k;r%`D$3xQSnkaf`Wbd3zOnj;W=PP8MP=+A&=cy0_C(2~k%1k_?=vxXu-g-nq!MSJmW9 +T7>2?)qnCfH%GGzpU<{>)V=%z_McpmdV;h&kE3^MS@;Y#3I_h_h#Z`|kIz-eA;|wRk9HgtH;L3Ggr>H +A0S9r>o$5JalHM%VK(F>NoP-vv`ay^XV^7r~f+3uAYpi_ODN#OyR{4)vxU3*k-SCj}aW3Pvka1g|~gTd+GQE)yGiwF +}DJW=*IzH?j2{ +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 +*V5^g!}-nWl^&hj?Omkm~@f96ciWB +3ciw1;7LVw&w0BQqSp@Z}dwpx?R2&8k87Gj2_NG>ul!vdQIDUxwNy<`PB#cyu}NGyMaoj%l=NG?-k4` +3d&^oOLj38>I9EoNIq{DCeR5!V~(m>GRi4Vyzji_VE?0UDCSXlnpJFSL6-_*yu0&lNQX1^!6S4Ct7qU +@m~M}5u3#$*9%<-qYc?408F5t&4ZTj)?C9v_QYgy;S;L^K`w8Dk$Tv)Inle6!^~d2EjP-2zXZMn5UPb +W!NJVb9+F=AcWy{&W*;GLHSCF-f+RONcEQ~wl_LZ3c+B||eHH~2iS56M%Oz;g7t+}d;+{W?_=|#tlld +Pv=>5njLICo&e0j(Hu%03fao?Pp=2$5*W%I9>+Hhn~P4T{*;$#Rt+YO_Pag%z?`?+Q86H$CRfwd{PUz +LK|i1PBZ0r8-f@Shf_ZA@jX0x0aY#TBrLxorAvIMBi&XHm%^fnZnly`SJ|@(XrR6jCdkWJlDYR40DJ; +Z_G_Hw?2745(Hxi@Yf~5P(-CP$jh`7HAEH71kwI3%x>PJ_no!&8pC83gA)Q^ZV3 +;6Z}PaEPAsg`ziq=UyUdD=HOZ-cl0Pkr&CscM=6xK?g+Ok7 +~PK4f@`9O#bOet?E&^n)|($AEL__g8i-0qH|~q|Y5R^)IqQ)N<)?jtp2mOKMgQuX57`)zL}Z%}ELeiP +m?mRGV?S191nLW2A4bA5N!LJq4IkKFLhC&n2&>ckZD_R?0WgXHH6^p?E|27AessfmOQ*uVQs4P6lJY= +Z^Ze175oZPOv^dMFd>vgyHUH$1ic0)2Fd4b?T(yywyF=x7by>hc|CIc`P4M;?rD5M`zZGt%30o9l9sL +z*k#9=9aeyvpFKmbiv(Uyc()+T;81NMYpp$b<47jYD-+0bHzDrbu^cB6_BD{lvebLz-PLajq>;NCiMS +MO9KQH0000805+CpNw*JonUM$p0QwaG01yBG0B~t=FKlmPVRUJ4ZgVbhdA(TQZ{xTTe%D{YIuDY!j@- +ooeQ*&J!LGLrF1tCbQ|uLKAkY$R^CF8nl8WOl_Wt&MLsGw-&2C#1^@}BPW;p!jo8eHC$>dt)+)7m$cG +w9m*g>#TsRy=En&qn6$gP<%SsBaAk{R1Wt+w}T4WiM`&wzs_}Zwlu_E*DQ543N> +7UY?+g2#n>6E)UQ0OQOlaN +;Y_Ra>FUGVn@=n3@u`N*#t7Yuj@;pOT}TaYqce6{*QNA0vbR!;+$t@FiT<`)e$3unV*Tvx)kk*GDy3v +M%Xz*N8Qzl#tWTye^>%r^yj^DRFF*bW&G*aI>hdp3=*4mTkLY$M4co|4F#Ojg&qcvp%+^P8k6DF17vz +Uvb|;uojm{BK4(Y~51JN{!ZmOK5$P&*V_|_RUO`Z#5HceR`Tl}zy6ARXIRluYK%xe)9q7)VaNmG^3V@ +K66E%xd$m?meZX$0@1pRRt&#=CoWb-ny>`QB|0KAn4G=cIUE1Q3s@eX=otDa3{yG>DRUv24%v12Ci&l +1_TMh!}oEPWt~u3JwZ_$15_g7;vnBne((?aAbj`h^p{0kT(5A$*Ny*#$Mjo)R{O)sH<93No#Dz;zK-T +2ur((+WSqvZYXuzO}@&AX+T6bRVAx!)>H*_9;LPoFGcm3oB;7rAVn*7s~hYYK#CYt2+9;^iI{TM>(AI +bUK+s^u+s-=1PC*<2OB$XxV1V#R$@O|@G`5l*vO}N+HXep>$)*fLK7OP7iGV@U|V5(JCijxBG{SC29h +t>j0OYFTHK1gD^6{Sm@zrdJazU`Yo(3jS*f-%CtJM-X?=9Xv~ +-0Qctb9zSL)pRc229DcdLN&j(JXurn0>%s89@Oh_{OGMbf^b>e7Eg;%VmcBFm{}T1rW+_I +2BLZ=)X)n2VZMn8ke8r^==LS5Km4w(KK72k><3;zY1mGtogn#lXowx$ck^ACFu@_C>PF3>KcUA)$P(x`4sP4k0kyL^g&*Pw#3s0_`vKp +6JV8VSz8mhM+#)_RHbw0nZ_AgH?k~LV*x*Q6~jbKP=7*)p$;f^O8vPl1{CbpF6d{hNxX}LO#e50rX{8 +$h41<7HJpk^Jfri2(j)W~XbENP1xm5y`7tv{CdBEanD&-^4TNfNC8!1SUn`%T$In-ob#o`~`H5kL`j7 +DW-(W+-{|z|l{|lYAbSs^^b5ju)*}O4&PKRkpg~FvN`qZl6x(Ib?qhW+9XxqY?VCk|nRN$Pc-{#kHO+ +|iwt+r@-dydZCMVoLhE{1H38cRdEmU{C$_#EPdup)mS22O6&|%x)<2HUpYA7tC+;RitLou#8ei|t`0x_gUO}BV<0gH49i*rBlJ*wQTCN+qnRz~WeL(p +6OVkFlb*vAEc(R&jZp&P63GvSp<0_BFQLP2Gx`NHUTicJ6RPoobqJrxq)l +DGz2wANNRR?1hTBXA0&X50(Pqq`Bs6kRE!-&;uF#oU|B}Q3>KJUoscXdr^=Iw5@ZshbeUuT_bq}rzfn +CG`*P^(4C$1CcVzWW#!qmna35~B81mA)+pLA$9r~x9HhPA^diK5Y@xRDhvhvXeZP{F# +pn#3s(0+q#R12NrI>vkLs4>PsM7YtBo#>g~fu8EuhfuUpQL0|Fmz>nq?`NjCgik6bkk@^#T6jK#C*# +k#o2-j$7O_yfpB0@{l?m~U$=!Pz?l)1F70sgfShCY;FA3Nv#RuQq+=o*>dYN*^TSK@)YF~R5a)cb@Qk +lQ{_r>F613x*R5;9QIln6(Ivho{r7CVuZGHeg4*6C6S&zJKxbchY?`GaAP}^0FyJd@@WY)ajV-ripW8 +4N)+F<8JZ8{aCI)tA@9iF7q}%N5VaY&Y#6doi;!p4hk(FhaHVUM6DYf?~H!W?ie1MNx)`uKb_vaz8?c +}D)LSE=tpipKU_!d-o0L&fH56?CJE=~zW`860|XQR000O8HkM{d`Y438OAY`4fnf#gVu>SUi#iNlDjCzI%5U01 +1*O*-m?z$VU)Z>)VUsTa_I-Sf_v +0`yNZ|X*gIA(HH7OG}^Rux%Oi&#HTCT3g-`>k46_Uk=Yxy%>sbD8maUZ|CQ&WgnX-cKgAS|3jsd^#FQ +kFsHMwz%LK%>EA5*O7&%vG|Ck^BiLk+z +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 +7R#ogByU^>_{N9 +<`t=eptfT6y>PwNtzX^yz3^R!Xlf2Vud)kTvoRWkqnJ5?^KOmQK#N%I1bs2f%5qVMTWpltJPoZP80tL +nJPA9R_kwuYuI-x+E_Ia>iqm$tgBdf38nbqLdx$g2CYsM1WAK{6z5l>nNvpeu3s@VBj?9u{ib=2h9~D +&bK8*Cq2rimxu}x~gaJ=q@et?9a#$uYf*fx>2*>Q`s;pDSi`K*hRHSJe^XQZ`xV`9<@rdWU=nb+h%qY^%{t~T(?neRhcx~yewU+b17j*T{JHgLK2mBv5i#p%7rsG$1`zF10agsWQdbg{jR!!B_K$Rh6p4WiAPtrwNR% +H$(&3{n|j`t|@#+&L+**aCZ%vW1s_9K!XiF#;*^I#g^uZ!u?(Vs3pTwT6(RH{qAn%DhaH#E30w0eyIixEq3T_ +~Dh)vyQ3vK#&V!1$yf>S`F03YJV5l?HwYu`|t!c}eVuFoairRErd-ivt6tQ~3ABW!$vf1wh%LK`Af`? +o|LH?k>-i+Zq9a7Mb$_(gqru(XtLVB~H$!D}YtjY3ty4kMD}AxI +)Q&!C9U77!_Q*m$+ui_v+)e6ccU#(llBCCFZH2~+Dp7hw9V%4X$Di486HL6(tN&F;^V=MsO0xYo@SCF +xkDUYKu&0wX;fOr9P8I%$l2*ADpUJ}8eKx7Jm0+z(6(ZIxn$12NV1rk0naR?npac)6`{juID=H +3ZK{5VX}6x_PGx&38`SdlJ|8TIAGSiG;#hpoMxR0Twm%>WaH$xRd*KefI2TCjGpAcJ`gU`R?p{d-MI- +&5iCCXz92B$P`D*B+yDXO?7X{naK)H6y~<^4jE3s(Ru*_68Z}|7xatqltosoD&|mU8DtZ&naqN3G|wI +l*7Cs$d~oeO)3Xw1niYfnWgj8AB}wufDnxTHZy2Yq0*9rcQ~5Gov|p^?_F;cvqg1n`IUj1-p|6NwB_< +bgi&X-b8=zlXh#J#`eUkbOMH=QF;KfJcE^tCf|*wuY)c&=OAx^d +)+f#1TbWWgtks(N=XmLtY;q-j$2-K%I!W55dn>jl^yo_dK~;nY6&>|@VvtE@PWkI6H`h;ZB3C5Yx$qh}((!iC??{W +HTA}cyXP^uhtLl8ptKAfqJCK;S4NSfBr@`-kA3S?vReI6pL#zx;uF4g_BtjFur0ALTs8shMf{wH;uyz +(J^OD{$BzXOVZfUVa&w?O0t>@DSr^3>b5gR2;ku@D}MFFd7Z^% +E_2Ce!&ecsz7!z*qZ8$xjdIK18Jwsd>FLJY>pjk9`A*)RrfM?f*X +4k}`r~_**E8vab_rbTe>m^RgzyH(RgUrM3%%?1Mz)tO#ox&Iam#XPmFr5x6PQ8^7$I7Aww3(xo_02bB +p?k2*9};%cFef@Z1y&I#JjcJ`3Cg2?{F_rOcG^~_{MfZ7Kh_-?R_K%jJ*Ej3>$F^fwV*leIQaSJpMwt +sNkz&jWznv~(>1TdZ?6QgsH5sEE +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 +*26lu}6y1u%s@4R$iVW0Ded77e +mH{J43wlO_zmbvb`U0ek$Z$@)}v;M8mAKoetq`zX6B$A{mVFiO5{u+8>mL4ei}V?Fr279 +A$GV_}bw^tJU-N@ETMu%^NbCRiEaLTglvg}7m}xvBe364(0O85!j9G~p$v_(6s9wVdS<5)QtxjODK^g +gnPnW(rA!Y!n)mE|4Y=&VQQauWO2%ennr+d$A7tkN?c(Iu){Sx5< +N7vQ*@xsDr!dcG6T=ZP-g5~$o}-ZbTncpAImPYh0ethb7u}}=8Jzb%37ud`oTxe!$yK0u6Y4NEI7G}P +e^FGL;+zko1qes)J}l46>%thN>~&gr*sPou*;YMfoPQV23dxb# +K~54f~}fHQ*AKL@3oHv}6A2JJ()k%Y?|_9IPo{P|!?X{O=7Cd~@x@d%ftIAZ_PWdDlMS=8Vg-?R5~~57NmMR(=UW~rm&QPBS;Q(izB4mgn(5Qw)rO{PdrwIrFUY95<@7RWPBD +Ryv7&~diP?}Qq9u;qA{?wI8xLZaV}ZyaHe6>XGIiYi+)pd_cf3oH3dANi3p#%R-4JZOGD1j9Uq@cdV! +G;R8W@TiG&8mT_tkWQdS-rsVaROIZVjaEKS2D6bRGR{_*(Pp-~b5!!I6t;7tJ#!A3@yQ!G;^TK`dTE) +KR@D>_jDWsA?BUcmKo8*R9iVgbI*z1tWd1~@!r6mlb!wCD=88gzy)#_05lH9E&_$2nxuQM$I5-$@$N1 +n0dG~<)H_siShkSOPcJ=hj=k#d1!}6wbI?wG5?ikaZf%6$NX8yxDR3Fi)dPlnI)AdI}Km0S2%5vlow0 +q1*&*RZ7H9VKKs;ASV=?TSoXRHgR51Oe=QIF@GchRG}xS9-pu8L!_-%$1O_=_RFBOw?p7s$yUIAXx`h +oTqs%^uGPp>7CpJ}gcJU(=pk?Np_Q&(xBDT^h1$$AJ1d4rH+6`&~3`yKA&JL`yu|gY$ORNQOQx3^fox<%X$9)mq^mP +c~xP)-!{aT5s<2dsUsN>d@4mf9RZV{p?Tg{73jIipUbMs2M(IUEq8P#97_FM+oB2Jg$pPUyqtD>5xg;&aRP(g=!4UqcbJ?TrJGLr~p{NcZp%zTokuLmcV91oo9*``A7fe>Snj)3+d$UDg`Kdk +K01oJ0(_rM?5H+}`5K6nDbf527j*a*N<+0mIvI#NDf!SRmBAR~;YVE8fH-NH;w&7YctSKy9ug=i=M^T`Z}Nl;lh72M`Mq0-#TE&qfly=`TivE^toG!7q9#8{O0w)1RCJhJ +BuvL3JxL|4N5#=N|{xQwMX><1-E6CipyH>c=CZ{irXYEZN7?Vviv87}TN3$qCmyftnL{^ltnnMuk`J3 +m>5cJ_{E2*}2PQB#uTWta~-<>RvLY=#)eWY`Xv2x#CIQ!9=094&lnkjIt`dA|^e-NFuuy4LG9D4Hl@w4aOfo8;

@#JN)PffAZ%Hk278BA1HHSi3UjBGWK45Zb7xvW9oFbaAvpI|}Xrhji#|%%z?M?1!6K<> +3iZh*({}yGy8|X@kG$f=ne;Pfb+W6`UaC!h^mH?J<}RwDP!y{m% +-pcT?$TR)3ejL;9#l3`_Gx@R +&BbPBlg99_lV+U{c?5lAg)!Nt+g_k!Py>7o0%pjTsS?AYT4)`xlG>Tt`iP|f-l90S< +95-_@-=zANoaarD)Bh`nI6}7$hU7Ld_x*xra~A~bks$VE0`li)__wf?P{RjA~EVg8rQ?8S6pS;6~^;2P#~$`mv +ur?pYBexa$(8iOa{{c`-0 +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 +mKcPHo5368JxEnte&`ZlOXb<0 +ufttwed9_p-MyA_4Yr<2R+>c3Eb1u}Z5BBNj&jn;rx1_}Q>K&zk#P_iKHoro3{GkCzW4|w(uglDr*m{ +Z@>i(ys*fJ%|y3jqi2CV1>zz)2Zg@M`uo9K~Dj%jTr*Gsrh5n7D(_953P%=C%a +?iVnrr^Rd>dqMao01vy}i&%`nbC7`YDK-uU;OW%g0PC$6(it!!DsIyf`iZ7$Q>zw-A?$uZ98|03CI%l +NKUE2kJ#ow6PQ@~Af>is57qA?f9h-2b1FGh}*?)C*a`w|MI~3#)Sw_f{ENzmA7%gc7HG*R?^2If$Bzi +NReLKLnDpu2o@8JCO^!zM?eE;vk+p?JbTF`Bcb{b~afF5HzW?>*DWy*=Pzs&MD8iI_l3LZq7r4(rWY3 +U`Oss+58OQnD&>vG=HWFm +Q12Am%!$NCFFXz&CK||BsUI!Un`25nP!=TWTXv^T#)$)&{NG&)3V1u3ntsTx@Y)J{bbnZ4TI4)?kFp! +4;cIbga0uw_(M;b{(gTwWl338+K<*&=^(2NW;c)R?(xC-+40Fw%lpUcD~t4*&CP-k3)-9B(6l$pOIq0 +31i{~Fq}yVSLS)YSxq?*rxYB})Rw-G%5ms2#;#Qbi&F`iQ_L*h)p%3;@gCA-zDeqhN!Ey|HKbs +qZHRa|x6kg|9CDsg|S9@UDayYj(Ip%zsY)#|EPAbMA2T&a;#(^Kh_Fa)UJSB! +9N)$iD?kwH{5!Cdb0vqKH#JWob<=QNjettUPacNm{U61ROt@QDuxzY=K$lvF)@S3vGY^vCR&PB%bH!- +*7rH=W2?6GS>W9bQu1>eB$d45ksR(1aa;k2Gz#U$ewKCj1Gq0eY}F;9E1}9~9<$OEYsx>ebI%l{=q@r +HjkqMSV1;;@es?eszEr^sn3tXrAbg~yu#qt642OTHIArv}Zc`~p6rjtKO|_#$BHGYfexhdiOan)lqHp +pZHYz??-GmPc?KE8m3zm7b5W#7h7}r6vQcSq|F~xcc@fWX?6ryZjWRscJWUZzB-!4_1r6%C4%>eWr-Bw+10RY1Am{p%TDUpKub9O77!dwBYAt(TqyL-AitoyZBduk-EXSyxiKkYbk0$b<~@!a{X9%Tx +<@iMtYX*)v22L`M~Jfgx#fX~U}F~W$cGq;( +Swzbj`S~m3n)PS65lu;VzOQjR+{vB4avh{1_VFpC{x8zy6R`F_=jxVycb*E_L$qneUbWX56Nw(KiRj< +S&i(6Klbgs*}a#Gsu+v;8@bNN`^5-pcTeWu*^r|CPTt{U~pHO=yP>lCH8XR%qDS(XvHC)C)fh9YHJ(tr%( +&-OU&UQnWV#^+Q^ogFg<)A-HZ7McVe@KFM~lyZ+OUav}x^mw3$*{DLnBN{4anI06=|w6$haudj6co94 +kroY*g0-#US6`jZ!a$y$$Dxmk4k8B1Q-XwMX9QG64LTLP6_91_hHP1fpJebQNW$$(8=v6L2?3nlAbWhDeyspNF-GdZ#8zsLePw5`rPD2s%xZ6QZv18JdR0>r^9Ne>on?YW +X>TfBJXTKo!Ji2Xwz^!>jTL^#-vQ;`AV$9xjMsRK3=je5Gqk*B!OVdrWP2s*e1Ou2I;J^OK?!Y%@glRZ^FIoMJ`lv``q^s+?Tk(-h)d`f_^uxLtRhRZv +;_0VFrERO)nP?IOu2knep5+NdEmKcxz_(`J09s>*;wBo!-ax%WXiRUBLDAH9e8|S$HD}{sH +0}op^T%FXdPuXDo#yPPBk6kdUL%R`HKN0uK=GyrcU*rI{3RId{qT76>C@-==6>wS9#Zci={Z!2q3q)# +LF&0yu80Ttx~AuB`|;!XE@_!Cw$bJW^<(Z`6)~_i%O+~+G@GKli+s+T26Ok7?#*o%tlvQuqw#Ues;p6 +*z;E%TNbH2@9>uYUs~W&k)(V4PE7O)nXQNgNDj#E3&c~Eqp}MUcM~yMRGGCG(x4*wTG44FRGZk+CurT +}e(;ELz4A#4k`Hn$%s9qVDZ<%Wo-u-@4&NB*0JLi>e9ngght__MR2j-D@zoG*x)#S +xQ53rJ}_l35%ncScDbA&a8}*ln+F1x?E~#udO0j@Bqg$eRWbaH(%W+TU(5B4sZ_xdGm;629`l7b6$_K*+V)BU%-i~Y+NY@KZv9Ge7if8$V; +8+E_l%H}t7xRR0TXoo&I>s;=i9USFD=Bk_WXH($J^zgj@u~g*Lz~TU;b$rpg{Pp6<;0YZT$WG-uRKl5 +uF6}0wLsg8-m!3S@q|eMAY5Z$3GP}nG5`E!pQOg&FhMwePsK#p1 +KLMB^{Zq +n91FxyGu{*vLl7V#yWoNV8tq=K(g1nc*D6Ax(gv;*YLG3Rs!dmhJJ&3a;R{XjjXbChS{CR*Yv8y%|=h +38eRPLEUC5Id!gN;aW*sd9?x3*e06cHH>-6v7~BIIwzptb_-?8`Kof9{1Jtj=SD;vV4haFkQ|iE!;h4 +%iYwoFfHNo>G&n8p@9074ByFJ_MLRtcdUT}@?4J$TQsTJw8id5bAk(eAL8fB{+|>!6XFhWzpaeI3^ZF<_eJvVk+zb1BG>~wc8$;q?`S*$5hOH%%5Hvjw02LOT~D9MSF-t9ZR*T +y7)!C<~H7z}_1;%TqKkCas{ +3`Pz$>w4wd?W%a&{dzh{l5T&+iWRj(XE(grC1gcKqQ5jB&ihgW-J$_NakXk%@%1A&Bsz)C*_oyQ9wcf +@plCxJ1-+B9YOg8JWcF!A}R^tX<06Y4&_^Wv;i$dh`AIl_ +%Zl2$YXaTs4qjSJ8jjlzOi|8Vk@U6@c*XukflljF!6xpP_j&cc5;-o0^sHcq$^m7&r(51U&1^fa%FxZs#(JiHVGfI0UKz4p&NAt>&OFhb3|eq0Hqq@F+@4pbLDxl0;Z +JlXIp8b>ziuInCxhq8qratvY+<+t<#)r?W>d>MWvVhKVrj!^bk`3w@k8C6hx89qT0fI!J{$-Z&%`w{C`EqUb}U?q1od4tzY~5<*dQ0uBCFwXE)^;<>R*L#*f}YaG +##LzZCQv~D_rb-Mt(Doek9CU~@=uEW)TCtSk@s~S0;#;&X1(=ufdbdZyE8AEmH0Qa)I6j`DF0)DH%id*yYw*s+IucxWJ(GO{M0pfOHzAeu|ez12P06if +S3t&P+f6%?WEYPF|Jrc)Wf7lW5%cBHjI-^%dhkp +YD_2d5GOR+0@4`n&-bwd(8ninZcaY>4bnl;C!(& +TqENi>!m?svhoE8_{GJOSM%IjG(H9=p!LxLy`cQL>-K7=)sz+NNfQ;z)HFN?zfcuyb_$^7-Dg!~Z(i +M`9lC1Nq*)zYEcfiG`1K0_L(@=5re85FVCJi}R80CJe-&Lh(lv(rTu?4G%S$jzrQ=LCt3;KPYmN7WBZ +3%6yT7E>wT@h9IkXG)`r2AjAW4On-|5Q-I9~0{}ZX1+2`s>ny)4*fb-Yd@56h^77|{XX5MdN#`znG$R +)XW}cw^o8;MyK9K`82h)$xz!OqMZE?L1b!cl9n~Z#oDotorluyCc{lk;fm&Y~6GGDwbxEY8i;SKRYya +2_3k(KB)&gRI-7GjDZm*_gkxZlwYYAXjO@buv56rO)QczFT{z1TZFJ$QKp=;Sg)-xdG_Y60uXKqMDi@ICyZ-|M@WpBp4KYdjrjV6AQQ +YHZ(Jf6;%vJ$f4`SpQW1Q~%!>j~{An7izdpEQVR!$(h_$^o$Gq$K#nVdPVeB+WT3pE%FaLQ8SVTF(C1mSbKqMj~iRn^^ITh|m+m9cDsMtTyBB~KhJK +N!1?at};GOKfJK#_No +-*Qv?y-%S(X^y6p^8}qh5`OlqC@5rId7QmV6RQ&E13@{Nb%1=Z?EUu9RpXg!jygrkH;tcX(D5Apv|Wr>5)Gb;Fek~oV+?YPy%GNaw2mu{#+q +jfJlIOQ47#GbncW!*lThAAkAvITwKUP{u%j_he15;P2vuToYE9E}=RDdF8^4>T`JJ&ohwcq@ +w$CdeoohG5GTO<8$?BflddczYUMNwkS7NPGb!JzEV9dm2-6 +xDO^ajw!$Z<;V#Ew}8D+4B;}kNuo`if6`|B7VRcP)u2tFDwBoHXLG5IVTyyaHppP67ivZhmcEo2mF8F +%TVr-V6)gS$6SncC%+E&JDcgFMWtYo^m?knuWxHiFjq^I=_7=mfEj4r`c~SD<0JuTtIiO#gVHyLhe1> +Xl;NZ246}4gvMxN576rhUeDoRqKGGZ{#=G$_%C~wV>gFaGh++qaCUle7WIFowo27ubDZxnHHLm|qy)& +UV4I(G_mveZq~CV1B1?m-Z#Qh+Ci?&XZ=YsTIZXJm`0D5N{!IZR`rJeLy+WYS<&qoOtWPg(_qftE&7A=+w17IPkv!*jKIK)j2FkVEJYrcum$-1@KweGnkL6$xlki4$acLR#bFAN +ZKB^|nJ==Unk>}ICN$H~ +?rI>5>o#Ut>$LkX*4xss}2$jg8+INiULnOS>;{^GQ +0>ym;EV5soVE9Q|3$6iUx+3PeUW+i5B25;etjRXz?U`96tW)(U&543QE=2O*IX>G2*9Iw?4>zE8A^=e +Te<`QCxi#V%uY%G1{}Sf%k*>7!&Urd4CJvB3-}h0xA+rV!N3STgZSCv62ceULKsD{(W>G#E``}PZp>o +e9C|P8E)AC +6+lTIW_#hpxtIEYcO$W(DJT%k@l6C#3G +|4JV-?_tQt*TdaZ7rDkY-t-F=WCRktR~0E5K8F@lCixL%Oo}VCnl-sBsHrY^w@Gf{%vT1Y~B>x54F*J +WJUjSODcBaMpApi53GJfnmjP23;2-w(^!;uknDSpiY9U3Oq`pB}NA|;VMZCJd>;62%uCp)@rO +)Vb4WWW}g>I43}qdQjII-NB7U%Wwq^5du*r#~g|RxLPRFX47rO6bDzQ4v&vUn@x4vpuFT#A2`Lapw{U +Ff>_w3aSU{AAYfTaftCvVsu|JdEv_6LbxW?#3?>TZJ!;uSF%^x#3Y-*|H$!UuKx;Yp-evZ?VW@rb3eT +3otUhw_nB|OWBb>h$!M%=Vp7pU=^jnq>1ZXh+bG}T{c*Nw~WPOZkuU%21QX|ir6t%j(I+pTPx3OIdrB +=8Wj*lxT(Ij*Y{6G{cEzrNtW-W_s!gq_en(H+hZNzn|ac574-4@nt5NI|2KHipt$CRt+gAmf+|=m +Y@eAEwdNHg!28H!;z7qAZ~qtap+W5`nd4HnER_QF7SUK*eZfGvl}Lkud&k>X!7jbbFix{VrnfkX>R9E +PaV){`-9?ng6iVdfNX+d-XgD1O4qgClX2c_%yP$Hq&|h7o?)1iLuv!MNR_Y^8=;AzL^f1=DwX{@fr?B +8aO1|tII;(|D`+bgc6dDPLC3wDRQSsO#5Z%N5(X+!}YOa^P5McoazXk}V)_uRVGX5u+r!R}kGFwnuu1 +?W^$QeHIL#X+%0u)ZmS^6EWW~>k>mK!BRdKS83&D~5?tH}~$ytzuF~y +M8mgqpXxwxY~G<^%=IAdgc-)Hn&z2A+nSJDKQ+FWm&T#)xG)V>(SSL?uINuX2r@vdmdwE!E!uh{n0tw +n7~b;!YCEcKB>ZQ%c9DOp>aWVt)#WGfj&D3s=Z@CDJ;h1l0YG@u;!PX=hF&bHp_rMOzM>$6(EAU6Z#$-|g7Cln9)*q*qanYe*JC{)ET16DiDJyqAo`nh=QX@5D#WCY$g+ZhF~(w|c&*#A5xd6Jevw +t;LKA-A4*%yCbQ?%P6X@S6R6noo2^0y*6^p7m~qj*sIOCkGI3UefMbWvdGhMk~qHpo(_FtC8+AlFJho`*4!^fB~5n%W^a7v4LDm!6u +~?3HkdUKt}&r6}Ex}rZ87^kdtW(X8hX$Wz1CbWr0+B4?0#Cc&Xmo=gpB+t%7z`k#Ph< +kN3SQjq^j5|?5s_On~`;u;Lz3#?clsAB-A~>6DdwNkXYutOP^qCEf!%vUJxmS+2+X41vKR`47Rhj<>m +`uMgIF{jF<-xbH>Hh_xE(o8|>Nf>ooJKHDA)4Fi_Ca?3n;e%8_h0BOD$V^{Q9IviI}13g7Na=}in`%y +bi7RE_C=bVM=3zYqY58;8+>%$H~$prcfmBf46q +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 +SWFc)I(n+D($SvMsa@O+FMR-m +t=1p!JQ<=^JXPX^DnR>ld`(#%dQ-c6?$&VUt@v(N1YZusSDq1#uaRE4%OXHT2P8EPd-{&HuWEm1AfDV +;`$0IUyzT8u-t5SUxiZ@RwROHO%Xlr9a%FX7Qojl| +gYZCIBc!{$u77)ry)aK!@2be6HLvowaT}{_6G{I*Hq +ym@q(#bMoxqgzcXPkZlp!GYrwF#@W1As*!0bXJOd%5Is}XmJJe*Kl)*s@kv|PEQ9g62IQ=10iTBbUmZ)Vdz7uk3|W6D+OaJ +c>WZPh~Ef?Kn(wiNXTf->9}>MmBk8}2A`=2tb7XyT2v?DgPFg^brXGNpDr(SRCsYm-m2jh&6!c)YHST +GZ67>$E`e4U+2(C}Ok5Rb6{f=ya5lLY?OM0o8p#Fn+7PBs1LEjVm>z<1F`Sc5y+=#P|oQ1Iz=T(Ys(o +`?f}-zEv9-i_QE?y@m?4A^3yoa3r`D6mtmJ{Umut6 +crL1J6gW%+4X}52ILL^3dO{$Xp-uCuy1(@1__2xJ0X)4pjZugkuIaMmJFsZz(@7=0KG-jOWP_hx;dZ+ +M!#!*WZI&4+(ojz0ouS$xLXnVW-uNYqm$O9?@M#oyQXMXl@BVo}Uib(PVdrIhZnN&<+pu~^xZ +EQCz32^USM*wyjY#TE_0~?ORl7fviMN_#+H72YRV5f5U*#5zJWDP?J0kv7rWz*tW(XfDx;m;-f(L-GH +qdh4XoQM28maX@*0Rq308mQ<1QY-O00;m!mS#!a#HIylI{*MMIRO9|0001RX>c!Jc4cm4Z*nhbaA9O* +a%FRKE^vA6eS3Esxv}T}`V<)HdPv$7MN%>?E0(g3$4+$4#GX6jB)jW%c$#EW>X_{2bT{?LX76X;s>1u +x&88%KJh{Vr^z(iKAFa85zkneu^)bV!`A +66&RGPt(lSpb>oUvP%ZogYmvLJ5c6N4mcVDu3RFqw|K%&<%kv{+7>gWLe7_nuPCad)#Dw8aQB9lDIZ& +{MEA8yObECmYhFOx$5P_VUVeVWHn86T{&Pw{~w5))+>r87p=Z%=j@d@9SZMV4N4cH*09yeiq-Xc@o +G^DO7JR#8#-G=Nj6ExJ}w(=H2t(ziekdd()cB{1*}|2~bjoXu}uCG`fs}gUcjsJP^f*p6*6KKK}F#HM=!|bdWlmb;0H~}q<(~I)b@2Ss}tWm*O +y;wjQc}w{9k?ucy&*`!ktj|DB;$LT{Y{(uzW`{#tR(X^Zv6#}m7zeby3svF^uyEPBWZ4{wq!%&Cymj8 +f|1P7F;f&htxbhKnr1qVI_VM<4$#`M0Js36TdoVn{599y&pWAT`<-3Z7Gd4O>|N55oZ|2TN_D;@S&EM +OsJYTLBv@*mqnlSAST9V7Ch+rOZ%Lc<*j=5Y~LS6Q-DosHB8|yOAo@va=OX$aSmbUQE{1Z-uVec8czK +rvj%p{9%lA;WlB1Nm6_~s)q+5#>sY*Cm5N*U)4u%Z@>-ZWdMWxHb!9F8=~lqMXSQR~;*$wmX(hUt@+G +{Ha~WxP5a*i#I@V`su#BxKZ~0{!dyGJ$nH0Ud+dy5ZX-Ud&jcm61I;B{Ig3>Hvc4#KEAEqI`Ncs}6zh1s?$!^Fo7hI?8BJKo8VagFTlRq4S`}A*7-MmXW(7pM11-&VTsp(f6<4{_*{vp!vfg{(GeU4U43*STFf5;IGkQ%^kJ2{;TK+ +?NjJmMqfj7xSgP#23jexk?7IBL6ChLm&>U5bRV)QCn3n9sFT%LwAB{>)ui4>pMaATwl=s%gKay2MUhO +R5DxstEio?nNM9H;hQ3sfkLSz$!k8tZjT81#kQDv~`VL(p0gcJdGxj!PtTs_Jn&L1o2mKNg*NO#3O|C83og<^qTq2>|~)GPoCYcI1H3f7SlN&|-s8HO$;`;`@rWr?OpN- +HbU%d%n8XMxUoObYQd>FKBo9UeQ||{Ap-S|JI|N7HFE{(P|Y(xln*8l^SR1S&y}B0^flfaGR}(KlHvL +v1x7NhE~NC*s#Npx*+gpVmdzVWhLLRvFVV7A^GT2HKu!KrJHrbB1VXgSgHstfR`pe +i7rNO^CTOv5$!j|A%%jc1n?k{gZepRl;xs;zA1LKP?W<_`t;3S(ZyeDa1{a!OfE-Hv?78lbz;p(G&Ay +jABZkNe)y@<4|#r%eOP2TBkE05VEDw1imfbDREoAgPN@=!f!!35lV>WrYPM;_EhnpeR`L%VkFY3S#*X +rHUSdrWIJNt;gWt0NvR&Bhq9i)a4i{xM#`7cos}S)0MibHsQJVcNi|$#tncNiOzzxV6J5lCoinr*ayC +bVXxIPh<~`>0U9

MH^uI}e81)*o$*(nq=_m +SI+5W}12w4Z}oSY6lm88RD73l!&LI(?L*;6pCaJk*s4Q+-M+Ke<`sP{hDc8GQZ6tq8q5I@vk)^6}LeI +3$tRjX-Q?I!9Z)O$z!&-ej8p#2LbVNKBkS84@+gn=t3wQWafxq@ +d^&!yQ-i5S}@CsLWxnLO!S9HL9^#U3JM(})9wCLmH^k@kg4@=}Yn(`{BzYFQ2DC0ChUIv9gKVyvoIwM +JEML3aV0zAN|=;1?pSp7(kG&Ph773tB`w +^WUoHc~hw{J3g63p_yA+3LZ?K@`huYJcH{!i^Y?xAqrj$5u6YqG}iA)ygQgwx0(w@D`F`SFC@nS9Qiy +h-BNOou$Z4r$AL+bk9sp2{IA-KV8yTF2yCCc&^c%Ow0}gUcL~1$@Wl=H%sOnc}RLtaupCS|LS{l)-*k&2+m3=UBt>jJWi2;T!rc5!~}O|As2{FOcj}g*NG%9D>qNpjff%tu^26+xc8b`TL1FBe=BnvRLxD6+YT)`YbJIoRC5YM4hNE|bgF^wDtDzi-18#1 +%fZBmxWWG1^@Cz?{zSm4Bpp(84@M1pRt6HuCGE3hoZ=giHtIpowrOwPa=UjvkZ>FAypZ1NVbwMixm%Zi*?Jh_0SXOW}Hn +X~4I^xJo1YXgB5uymZCXEkL{&IF$GSPBD1o)EPg4W<#Tt1&kfO8!hss%1X#^Eu1ki6&0QYF;~dtp@4g +Lnl2XDx~-WK(j3`0|OgvOHYSl0x|$|m4w+xauC;|-@B2b@$rd>`#`OLG|Eh4?N{n-6L|_#$fTHj9+{yLLRY2Usf_tO!sWUt=jBlvmz7af(kNZZH0( +uJQCG5PN>^cd*2vs6nwJ^hd+8u;K^Pa+dh|p_=K2GS9grAARe3F3EMELiLxU+_U*G@D?^gR`U0Qsu;*4;@bLjGmIA1}V+D`oXAK>QyF8H7Q)NOv;Ueo6 +HA1Cd<^yTv}cOl=tEWLbx+u<*IiD45!;GFRJgP&_i^5+kI9& +w}l6Q{qdxlG95Mcn6gXpiHZ?DMbkcGN1MS->m-GXzW%Fh#)W0wxKl7cg4DPyxFMs20#iK&60g0ulkQ{ +=s3RfWHY?FW?0MB>~S1SR>$R0rv~IRlv1>G!Oq>0bdnxm4FojmI|0JV1|Gx0?rUHNx*0ULk0A7Yc4Zs +gn6KVY5|o35}EHSf?ok^1gsXYQouI_tPrq3zzhLX1e`8ll7M;vV+D*BFkHY;0W|^!3aA!PDPZGeL7#x +t0#;sb9{w7kUoBvTfcXMu2$&>bw1E8u3>Hu=pwuYh6Y#%FE`4=i^Ld^BZT7cJi^w+o3wf>LH<8W_BHu +)O=E2SVxe2*Wo@*K?lpKD21c&G2{ylK9_dNec25z+<2?Ae@r`1G;kaK!8WOa(Yg8Wq0~8bA(@Y) ++6KU90Ca`UGa7I=fIUIgyMh~l6MF#-U_Ke(=3bnhtpF{-P~O1Y3a|>)yMQBH6aw`c@B)BWK%EEtD!{p +Y2q|u-Ao&2l?1Qu3KqtUyq0nvtJ{{mgp`89Kfb07aG8xQquf)1AXsZzi_;)A(`GBtkcySORPXXQtFm5 +pP6M*Xg+6MD*@&SGi>MWQ`0NX`yzLEf%Be)xc6#_^2X#`KJdVv0s&_;rL4Z!F~tT>Qg0JWgp08auq0h +AK($pGJuhTv +EM8{J!$f#e3w<=w12Angn7b<&tQ*bCfEx%YKY;26<`)2l>o_k6JH->S0L%jcri=ml0Y|uK49}wifWCU +L19LUN5A;0VYJi&!PzJz!E5J_^csQp4h8Uqd03HhPkwi}O0)Q`0hVlvKs{wAA0`(gG0{mtQPpk6)=S= +19vjC2q1~Ln{i3KLV!21?(I%fdNeuL9f$Dj(eM2l%Zp4_rh@LIEKwF&uy|7I43-0lr- +bJcIeW0CyE~_qzdJDdaq=mq7aosuA2EtSkoE5^#j^B|IEGz|N0}x(4t?fv*Nw^O&e>06%)1=lfcK{!c +(Xh4O&#S5PAW{|(@w3TQt8uL9U%g-Any=bq!`=RCmqt2k{704C#}JupuJ_|fyC-2m9}1s<a1adkEj#&FNVKFl-O+$72DW-V1F +7;0Rye2jvIwHvyj7$KyQ>@V)&&84EP#=DW@Qh05=01dK +&x#o&?bSGZ=ed{sN2x^)AK*F#R)5Kb||lGYY#wCP9e%{KFxw5dI|05#l~`#1ZxtIKpuPN0=vY+*AIvz +!9z$IKsmMM<@v#_arONa2)p>M+h7t?(ao<5I!T!5&l!)2=@yd;W>dLye@ErxbG5igi!*=y_b^({@3^a +_s7q)yR!8`5J?N#6SlTifNO-Md^yd@od+A2tOj!&S8W7{{;C0@y#x@~6~R#f4pIUE;@V-jqGdP=cEV5 +JiaDDTXvG}Ae5c~-Y+l-i`N}rT-)zHtV;koC+b}=fhPl*=InJ}-gBwZ<$d!d7`Sohp6_=n +|G9HkJ5`*3w*B5o3~&AI=D!yt{$aTm%w^oJNw=suyp%I&kj{3_}p{HsU#o2}qxF%O^Xvo10BRaHm#a)V1O{I4*6u7~( +3wI8iQ(!dPqyL$BUSDL|EahRLP8`qs09qqzg7Z#;bT)n4ybF}J9|{DO7_Z3ORZ%^K)G^2+3@#;ZpQDw+GElw +O;%z40ouM)#1uwW}H_vu5d!K}g&h-Lvb!PjhP)KBJ9W6J@FRxHY-jqjGVLYr!Ze0zI6RD=0+);SEh2N ++H}i`y17US`3O75Cte#P#&OEpn6a&=W0>bZ&l8tqM}G*Vj`I|X%czlkw==9@rsHH^7h+rleKHtvNHbZ +r=OBj7E(!ngN +R`bYZ01K&=WGG%+ZG3p(F$#W7O9#84IWV)!V@AmtrB$LJTmF?@MV0fFBWB7|H{qfSJHH4L77;h}<(Sx +czdQjpj6uF6#-FOJ4;^~BG6wA`-=C`GVgoKc=urLxH9!^G%97(iVEio7jEbS&tm_VjZol5S#_g?bA0} +qfzX=BLj*|W(*4?RS(v$KiCVqxva!i5XTOSVzuokvEJj~2y{qS^6e*_=4?RIZjhXNe_S3Wt;T3Jm1g! +kJ{lN;BE}#5hv@${Z59jgtO5DH*(%l2N-U8FG-45l1MQahQ_0lN97KN+x_oNgk*v-%xV@_ms@4p=9O- +N(u`LNm*GLS+QaT`Nu#0L7sW$8M12CDzbX@YVz7^ud)1Hvt|uhw{9J4%eHRaN>1!rLzetZ$+~(<_Uze +14jec@4j(>DjvYHjPM$nTKL7l4^2HZlkc;1*CMSNOhCFZ +iDg{`09HSqlDFf&cfxeMe2LE4z|8wBK7W`iX{|!$52 +lW9NUJGUYei)Zo30bq8kfShes^0~b@VFnLrw0@I#RNjnKTPNkD+sOsfY1gf|Nh{=7x)hc|96A`MDPz` +)x)@-&IkWX!TxqF-zxxOsY$kNVV}w4uiqI7w68gb@LXUmr^0|JT9)TJXOU{2vAXXTg7+lYga1fdKH|75w)E|9!xJf +AD`d_@55`9|r%+!2j#ue>?d9+{u6QFPVSNMsabYwWGBZ$2H7X3r`2?>T#3CZ0%1_gpWI0zLE`Xqz@QCjpImyq1GW5* +zF&u9$pr2!%hj_{KM{5y6WH%^ZMz-#c0OqZ4%r@rk;`F?Vzc5Dw73U+4fM;o--zD +CAU29)S)-`myi_$0R}$C&nivGA39Ia{2@P$-2R@NJ0XH(Phk-jvYIK1BZR`UG0)%2gO4K_kjH!W5zHN +x;gCQRPL(i_Tljfx1J08{w*Q4|g-PxY1CSqoU&Cn(UL4M{CE&wD)ko3(&Y^4Ben>ia$ +9Hos5t1b@7Nr`?yh1ToXu>J*E#7uvl-u_T!V|5=X^AStG?h-qFR;Z3dpDy^4!hk6j`2|I +B_DAM;4jJI%JPG^6w_4nek+$C626J5>M7VyNC?k4>AR`bNW-1O#Oz-4EX?`e)?(h+;h*7=bwL`y!6sb +uTBTP0p|IJtAn{U1$=g*%fb#-;*!i5Xum!B^ +(+2Hrze<#e)8ihR#^mo +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 +lTz;Gwobtkzg+=}){)+gA?vEd ++l1upuo3s2Y{YBm){+*QStC&%;vUHihJk?uSI3=Gy!#FARF<()IKXr1(gkCPbIr)U%XU~|>jn<3_@kP +t)j0uLHlXIrzOqn)q#_Z{NdCq^ndOdWn`J3GowXI-NuqAjj*dDwP^oGWS3c^+4P2pYPrts15nec^hXS +gdoGLjM*6G@L`NAe;Ck*dh1$gW6Jg>bsp4cjk2ybbv1dKM>cz#$26xkr#ELcXE*0G=QS^CE@-wQE +zzUVlhHHL_UMIZN3=6~HQE*R*dy&xc8cw_$Jl9hx}9Zb+c|cgy~r-G%j_z<-ri*Iuy@&(-DJ1eN9~jL +8N1!SV0YM^_Eo#f_UH#oT6+Ez%WI9X(yVkV%gVNLtUPOxRbZ7_RaU*V$=YG<61U%EwOB{3lhzrl-MV0 +PSe@2YtIP5PMg~R&QUcz1lod2}*(M)=eb>c!Jc4cm4Z*nhWX>)XJX<{#RbZKlZaCyyreSh0FlJNij6l{DsQjSbJ>2~iqUzKd?x*J~;+h;r7y +_3BvEm9V1id0F;FMZk1e)9r=c%$sJyT5z%YaNLM27|$1Fc{1XHa9kd{c8D8=hyQ#i1r7;tKFBcw&Bko +gY$V7oIJGistnGmS$mh%S@2D@D$}IRt1^a~XIU1!Kioe!Iy;El`!-0*G}u2rIzK)9>f`zG=@~wRavS+ +#S=DVYt*Vw!X@aIrC-g%W&nx-uho& +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 +Fc?-at<)9peMl8h9| +74IdiV^qLkGEK*%31TV`Yi5T<*w8?a=-_`X`jdkcgCaHj4jW}0|oCQ!yCdvN_fCR!j*4w05Wda!UJJc +JvD~-YKT2+&ipUUx1;`U8?9j7@d(M?v&oVIWxATs7$@U8K8HS|u&VDYcT+y6{qOzrmw<0mn=A)pw2S3 +rSSKmPg{bkq#wH3<<_6f!6@~Vej}hZ~0cd1Vn+_huV>(AHQh~?if27YN{ky_y +yv%lJq(Ma6ara_u3iu6}@dB{0X{O+cFD?PL<67y~^E_KVtt!iOjGga#cKv|39JPz+kNm4!s<+@r(7YFZ$i|g +6F$};8vvbd-c>cJ(zxA63(RfCw$+CQCVI>iN3#Um-5NfR#|mi8!Ob7+6umO(SEb5M;EVPO+Ci)OV1l%O`0{aAviZ`u +bms3C6i1kH4`5(;ARnHjCV3+kuJ3SgNH +aqUl~uWo7;WdxJmBID@}xE*8K29t%{Qpn;Uj~|AD{skMyrAOJCEg%N;Lpv7m$x^FFWC$%_0)KZk&+M9 +xW_?qh{g2$DV4PjGhr!gt!m_y|5kBIj)+jShd+RSi=-oI^efo{wDZ98zv1@G#g+m2mEY=-5no`O|`OJ +ve^Sg|EdO7R;$!ys +yUgAcdznQOLce<*xlw^y3!bvZ=8JLw-jmv7+zWy9b+Kuun07@uXiv>=Q32Gj&HTJg)lxikZP)b@2Gi{ +THz$b|UBFJDJ>7Yv7;bLtI97Ir~jMyZu8Y(liJ27zSt^~6YM48qMOuh3Age5eG)1Tkd#sF)hG!=4+00 +^mxpHp$d)YiC*fvL|WVB+7ywt=l@0A_(g2l~L4U068t8A>#St3ZX^Dy*g;U3x&tGC^8pO&PWxOlCM(S +pTYmSwwZss(Hg*!DRxpA8hTRTA`s?!J_`k_G1=+!3nGZ2|7R_TeA$*u|$k$_E3`=VnHzHadYDzBTbA=P-mBvfbS^gBY}iQGI +q<0ag!W{hyu3xoc6`AoH*z^wASUSN#R9v?Q@hsV>MF1-PrMhP595V=91Rcd_GWHhXTlz2nSlNMv~(rzBpqscyVwoo|A(E83AZd#D1K`1K| +@8GhV1rLjt1IA(%cMLGqDU0P0S92AVrr|li!D^Nk#hOAClXI_t5ZkVwJY!G6s0G>~Yea+9L`8@{T;(# +d#8fgFStb4qyvvfdKCBwyy!M#H44&<}3j;(fxu;c~`Uk!I2+bggqmd1e7#LJ#;L8-aG@EeTugW)f^G| +NKKishJsIjAupwo!#n-FTNN +CyVbwJhlrr~OPeF!y^iqqv6V&B#Yb$hrL(26{j(JTp(t3*aG$zr+NMb_k^=G?HoVVvi`lb3HD8-c9cu +QhriEf_?^w{+%LXw_iyLgpTfcX=sF2n7rM?a0)dR>t=>V-uKnx*RuUgZXa ++j38h^C`&7i*@R+O@6@6{I2Us0LJLQ>e4#E%MkRV$okZypac-J@wh@l=hlB9-p|zRzpn!&lZ5TAw8oh +_$$q>R@YH@ib&ChO_^@-3@3mMyJ9o1+vMX@mB?ls4D|wAJ8wl9=^E-xV}A`bXvT~emOmE}KZCk^yB?x +aYq+JNz1%0TKUJbV*HZ_I9n*)n`25bnshWOz2tc1aFos3$k&!X2cLpkI?&Ms6oG85$M|miic1kt{BOS +Ov??mdKZ3c8Go=h=fR0t6G{g=t{w=U6KcQy9u)K*hNH@5MTrCGK;#T`zGLUjzom>X^glAa(27kO)2e0 +5{YK9vwATF@(m%jqy+BhyS;Z-Ezwq7_wFl=WMAgrwJ4${j?PFNW?cHifcf;eMq5byXC2o@GSZc53^AUwBrllr%556dwVW-SIh(2gJ`u<7>q?MxegMsx9%+<@2f}Mwyc%n@m^kLr#T6zK4lJKcbUf54nud;Reo|8%YI+)2(oyM1ha +pe-;&9+Xk?sTlZOD}={9;$z|09XRcR(Ic2jpA!*vTG`kn|stu{rGNW0_GzN +MdQ8dB6)5vST?h(M#b1H4?DRm(&jWb>P1&1^;BZizvj&_rR8m9RY~#G<1e~^M>i~VIxLi^F=DkBgJ`^W5ntlBtu=Kc6*5k}c@5>G5mtH=VakKivu$;&;qhQyh +geklQkl|xNy&c5QM#0OzL$iMxy3QT(Ls)AM@l%;nJtw~92~MIOlK +29#|HwZoF9f56PqiCjTkdlutNqj6{r`tIqn~4Dg#NQLFBbt3ok>%W*7@ZLJ@PDqnnEYCEQAm%iu40nO +1kOCxv3~kN4lce|vKB_1p8eh!DWb%g%#DgcB|(;|n|}87?>9G^+*s43al}haDfZ$ow$mAW7Tujv^J4N +JRBW#7>US4*$xvD}|;HOUfC*m=ap(gjk17Ft3F2*R`}QoGmdn@_q@Rv1kA(?eUI{e +R)6qzh!(*dXy(tj4p-X$eY7*SbnBT*O2!bW=Ih*5woz3u^O8jwYBYS*n*LuZe=!Aow59Fvz&L%5159) +<1lE~!gk-6;H8@s03jyILtfFlpc0W4opvFKd$AaTUPBpyVb)>wytw>vTrNgcDGTfGfa?6GtSx#AtFTDXuGEfcXN8pu42VC$t$Gf<7r9KyrX`^8NQxB&9XFvjY= +}-;SBD2NVI6XDG>nz0JXn_$LGy!sVoDfB-Xq=4SYj +%@sY=xVeH{kW6)sC*+Ik`f&f%cm%d@B81r&V|NStLzGoL|`!+E5IGLz9WMxS&#c0*TcXY=21b_czcW< +yU11#<%f4|8DksLWd6N&y7LoKV=8u-M+QN3l|zQA_+2323gRnSq2h#Lv+vLSLj(^(P?BOG6L=wdAR|@ +0?Oc#I&Kfs+}x5)N$roosO*97X)!DN#r$!O(dP1tk9Q1hG6L{1i#p=UcF-A>d~4c0^*cJgrGN=+7m4k +@WpOGNx@tn1e~2Y2my{gh7}Fnakc6iqiBYY{-AfGNz>|qpYHrZm}YY)1k>u^$?5TbVt%=!w;v8BZ;!s +7UR+a-pp&Dn36~6;Y_?f7vnjk8xK*g*J%a ++&#IDp_QDlUrhvSrttz-4u|k?oCSwoKKtK_|l~#8FBpv~HLLlr|1kQ;G%6v>{s-=730>_ZklJ>v(U$Z +Um9ocI7jJ&ZHos!+>fscpb0uv^MQ_xHFH5n#@rq-1Cl9+d(jX`MHUufk>Vj +Gov_Gnvf$bI9sGdBc)zN%XB&jKz}aIWR0hKF#a$5NRHgK!YbUps*%I)6J^tH8Gr)=i%+jc>Y81N%>@p +D(CR$qa^KF364SD+zEHapqDQhsG0b%%vVm51@veXm`&^P#uGQB3j3GZ^7Z8UnYFK=4Cjf2E%T*rUd1$b5vH=s8ajGRZeeRgseG)Zu!~qyrNz_kHwebDIPOz$ +M4|4tRtU9_t&mfF2pGC5B_7Fx-f+u3&iZB4wWQYOx(6aoeA@PIhranr&TX}x@B%C7E>27Fsi3-gFElNMY_FG*+Oe!aW1bcXIx5mI?FlzP3DWU{P;IHyDSh4XCSkPLSR~ajHpZJWA9t{zRP)k0fIb~7%mH75gs +L;%qha=rp;lEB%_1Rv-ZUU^HeY`J$AAB09DI}C^N`Tav(lUiHpR{pc6h6%1+gZZ2N&_YdfJ|#kJ4TeuJmY8?UJD32-=6}=U>SLMRV>nZm +5-va~-pXRKA~_+2&0^ZFV>(WS6s*gRgbi4pA0oL6mlU~zq(~lvMlGOL2^BB1d(8zhe77u!?| +La`Hs-R8rYrcyDZYnXwqmw^8(=WW(WQgg<@g@nN%hd;!V_8smkmz#3NaS2kH@%u@x~c)GZJ5 +oyn?ii%S+C$S7lNS#pLEYN)LSb|!^oSo!!%i5RLMn$bkgh!A6(A)i8CT9l +lbh9<RPo5KQm$0x`^OMxAU5bX#uK=8lg8TaO7Vp3S)qWue)9;@3Bp@ZYu2&%R0XW0)}=nT=IYr`GR +fRo}N*X9#B=yzl7~bXkXPLLF_!braLBCT9LexePs$?pRH9)6=7xd0n{=>SY}?~a<6cm7O*>C>ne%`9% +~OsDP7;qLsdF2EyeMSbnsKewKL?Ewojfa3HxK~1lJo===yR)H9EF2BWGtmS5EwBPMTJG_%VWXnY()-n +O^ZWwEnbt9+JjvjW&RY5!Om|o@?~JO`dXH6Tj1G#Z4*_$ +7Mb8wJyex>5@fe@LfaJ`3PZam=3IS$o2Iy>R&_X!bjiS6Axe+6tue^DuCP_M1IiV&M#OP(iduYx+iP? +LQpsC4PVoS>D{^X5l6GrESJ67iwx71^vc>M +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 +qS1=_=m1LK)pv7cP= +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 +L@$X!LL%NCtLl-2tXBs$opo~8-UT;q +hVUdXM#r6&NtQ{ciI^S)F+2bU%i!vMpn{u$29e>r`u``TycaubU9blpKy~d7P@;)(JfHjyee4&L1C?c +P79&thLe);GTjc6`mz+@Zot<3yd$(FG!?_^>0G2H8s9r?mzfTPx^D;Me9h{3u_o@~B9Z#oz8NCj2bg5 +Bd*t%`ROO!gTMpujS=`r*ixZF}E`XBmE +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 +56`B +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 +glNwnk-6FqS^*FN#?_iHAu)lo;Uiv+Z_M9& +A3@V#cdS9aDH1a7O9bZyf3r}!ZF%Prl)ck&>yl|?PH +yN$DH85m%2 +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 +`>irEU_nPKH3FO~2*; +N&&yV7Y%5%T;ZAFj}#jxlP{RU3px2e4euZ^W?F?YnD0gA~bM-gQY#G@Ib#IwWUN7p3p0&w +Q$4c4;EU9IModZR?R?U<<3xLd8VOYj!)p8=YX`&o)c +Gv%uB(Wl5Oby`vCFBP5$~E9-x|I>Z%$M+KuO$f^_HE+) +vcIB5b@K!5oK6r{7bsr%I_DL`Zhde(*ep$4Vi?m90{Y`KeZ4iMdydS02K)K8UfbtD%knuQo0qub4BC} +G1gE-fWS09)Bx31e%JzP@UWG4PW*5TihOO|PbIRQBY3xX5t9Gwa5iIlF(PSFl)9~U)#`d7y^;g==3dDQ*MpH`bkeW^N&ycxQ=~t>I~%9*r{?Wca5JIWZz;lNDCW +8&3NIT1lbZE9|6#*TV}i?BNI9)&`vk!@P%Us8T&l*1{@Am8#S7`4O=`d=rrVTC#j+Zn%7>L-F(z&>It +>ZZVg*+MW46DKmK=f9fIPKI%fop2B~ViB5JPvHm~c?K#x9Nz=!5bm>7u{Vqe)c)S>h$Fy5 +^Er&0wwSCzU*O@Jh&u`>9%KwOwevRl|)DR_rTuF(kz&Ax7dZ=ITNROm!|Pq7&-lp+n9ty7&_fuqTkOZM16}9ooiRx=2?Q>lh4lLopv +lt7AtE6vLCb+C5XXd-An==FmI?@Tirm@%gLCXSjFgJnkHHYTB{2sNa##$d@DvJo69Nqd)_x-H@(npP) +I`=MQqL0-LWxZ;B&rXz5>zyYd?f`Bf`%yO|y^jLt`S4!DNjIryR%7=pa;YwG~&ZqvfnuQ~Wq7O*uzE0 +$yV$;CjlSI8rU+un3W-1X}^TAn;3o?0{0|YAJ~wI_3-OJ(Cx~BI~8IFp=q{<7gU|qFtYo(Lv;K^g^d?P!L^;`;6 +|bFmw}{J*G!Zhe<)rFj?;bP*Lf0tTb@rd>pz5QHgrgvX~oPWFLdj-pBFr6h8J_7LSqaN%p{7FrTGfE3 +knt?;f;UBpw*FtF!U+-Q9Le6~E3E-DJaLw&SLiU>W+lf_q2B*w)%}I6){BG@W4k1X(+75%Wk#&|F&-6 +=%YahaY@POX-jqw@v{NR=QlY1+E67I)Y8ygAcVv+j1Lulh)x7g*WmfO{u~PKy;6G6LYDysm3sP6m0yZ +hFJ}Z@tj_adCiF*)o6mskBO4VD+vfCkET10MLuT=HKmaX4~`~qU;k!%XX33@!qJ`Eoh7A&ng)ij +Azoq_=+{@axDalGa^rM^eexTvHhr!vndV}`b6eYIB8TdPij!6Z#5Q2!VCAV=Rq8Lxw-UEHj3#FK1O8u +9cf%ho$1l!vhyMS{Z@&HCQwFAhdVgIY<%GDdO`*#0SQ9om@Z58E>|@T>z?40r(x0~Vu|6n>2e_*l}bX +o^ +_(=a-tRBS+!-NQpx_|`UWpkD#;)sCG$x*M9)0o6h~p!h=c(g8L`r<~Wh0s5@q_MBFNJtPVG5@zjT!?h +xi3#0+;{?S5a6|W5qiZ}RlNUh}6G2;Vsksk!DCo#gDfbtIG*sQQ>N}8JCqi=qUs5=NXJrhC3+qsVIXz +xHt3+q8+*v}CLQ(zdk;xPX6Afz(uVQT_8Sw$gK0(7vG0anb@LtFLGd_5G@LksoLZFYCFZth#R+)ZU +5phL{aAp1vNikzvPPorI7e_ZpNVv_{z;J?8OhZ=)`W4#;%!2hi^l%uY%kWIOjdjL}#f+lh2U#9@k1^nZc!g9v(P&eusdwylUu=^-EdhvdKQZT7pXz3CTEzYg>35V`Ua~}7H%X!@0o+n51TzvW%m`Nqs8a%7I{? +MBLm{i5RZ@`59Q2n?&POYTAG-YcKxM-|8fD3B>_QDNd0e(6^GE19T{iqdLm*Hvs+LQnCs6dqD;Anw8_ +oiWrS_nMOC`7t`Du9Pt=zw>wt?sY_1&&P;z&d4`pz_w!o@3Q~7_hsN@q}D(8z3d(}pCJ1 +i>mP~RP(F&A>m=bkS*yHYg=$>qh1LxK2;$Do3)%KK2tnz3MCn4^6$97~2gN|b=g^jx5gZDk^?CpbOnn +swF&8wN7f%2I`{`a+%F>7DTmtCScqG%hnDbRP>>Z!B*l?kI?!1{90A>VEzvAYqee~{RKGB}EKooqT!7 +}w-NN_`|7H+=MN3VoH*y`DhjH;{X^`Pb0*+3r@Q1os!EGkJ;o%BNB6ht1uX8HW|>C&VvaG!Pny9{yvo +{IZ47{C#yvq#XIpQ$! +%p$D-mfM!{gzFxx3v~C#ohoXB?AtKQf-G#b=qxL$FuNnH%<*{!P=-r=>YCLrv!XK*aKJq2-9a9Ae!6U +s}CisHUA*nZsr04%+HnBVgWTnlct6}XwQmyPUATi& +?FRzdKIZxtKpfOVlK>HiK}DVOs%SKYdZ1tw&kniAdk12&NCq^#uds&Jh`gijFi^(wcWNz6CR1k)XcWb +4QH!d4%#zsv^{T}X6>o#s3vs|MqiwU +Co3A7bmR9=$uly94$qP(l&qtHbGI|iJS};?prBA_^vOx8ce7^y>TLbio~S|ePVD%uY +u8h+%0C)uhnF2>c`d2laHIkiOM?b;|`$}2ZF5N<=zn`N2$QV&^e&X4Br3&3;7f1WhBj`C4JC@NP(+gw +9~ol+wJO?ve9*P#tNNg(tY%mD)=0#u%mm3UubP+;ww)Ug)2=;4q1_3l(0P2$ +$z26dE27xFq{=Rz)x;_C*%5IfiORh*$g$`-TeLULVr4!hs_pQaK{q$(wibxFL34HWO8QVa$IUtl2#44 +-8)|K@;@fz2A}9cUbd1)(s}v>ELci~6=Db78_l3|S8g;zB_=hK@KCbbii +w@;>X;VyKN9fF&r+1|=eSP5&tF8qQ-Of<>G^mH?B5Kq-E6yy(JBxs&}j>hfp+8O4A9GwwAHk*^+urY6 +k!7@ddJeT4`_J_(sCxFWzEx@BV;zl7M$smyVL +C45D{k=ToV1vLEgQDVP|c2k{j>*$M=5&LRJ>St=!6P7=dzn|v)KkXrle +_`^R>;qkFHN=K00@$>G+Q>gF-8g3sX$)!%fc$`+d?%AH5;n@Y5^y(W~|E5wQ?tm&+j#P1t_P;qC&|%PScQY8#Y&Evi$b#8>yRUk3}6EdR +`ik?UC5@A8aDC4ku{3vv{KUt+-C~2aLWZ8&HXgR`vAk6K%}e2!x!6lS4lH8ws8iveTvgU)lZUu^!`tD +dRSpYZ+PgMAN|Ml-jVd^Cu!}=i>-rElax!lK4F=EpUSKTTFxP@Y+0ey4Y=METGODA!KhgXU4Z_T*4f3 +9_VVIFbEGHH<{1%=L@I;UT5(dPltYdV^&tP1KN?YL9Hh>!)b*=B(PO1abe&#P`6nqv`1Eg@re05u9-~ +T?!xe3`C>{qQcyt2lQMHgANMSl1|4CA?pp)4rZw$tdtf=@UouWTm1i1vIJZBD)^Xi;=M6kR*xY$}rI> +eu}-(+h(n<+Lj-|7uom7}?7glo$pLU^gk*nH_M&#`5SULv$F&zX(D9tM148&3qco&!P6I_T_7X*L7B0 +zoG;(A*>_fLU~~D>8#zxQecXZh1+%Ha|_v>teEx(7M%v+cz}SEwud*K3!D~;b-eHF5Of$5H3%%4sy*x +E7}vGX0yWs1 +*sTCz!cdzIFwR})C(Wv@-2{y%9Y +vmgoB-&g5b8mO2qTEbwp-e>TD!NVEsgJF(xO{9*sThnkMEcOl{eXNLM6RMjCgXPykmu4?*TYarfPMEi4v`-*H+v=RzOXY+`N`|gjT697kKXl^Z +plKBzb)*62kKh1xxu~xH7{ztDT9f)go*q3sh2FpsX@1guo|&`cs?)f61!6RsseaOfb}P?m;7&q_uuZU +mxU9d)WzKF_2T0?V2o$6&pIEGR0#0N#$p14^uw5t^<3qfB7SQ5dB%rg|;YhnD2hOwiIIR!9wI#_z{v6_BVEb9)?S153l}+X%D1p%fK#1bWeS@-o1(ZHN(I*Uca5 +?E20R$Fl2#h^Z&H@~&x&S5Kz32H2v}DnIOnRv#xFz^0Qd`i$;aOwxrT<;7M|^~FxzJKf`$5^=+7I^HN +|s5i+>)kD>^yvFdb#NjTsnnXj+uBN{@oAfMIFQZ3$Q+2=G%gRBw&ZNP|ZWw&7{SZw(b$m75RWsI?f;o +NeNYzVc_8RgFaXUsA{aje|(Y59K?0D}4x&ol|6Ix$=0HfBaRx*w`5oDakaX!{e-Zt*>POEhj4)6P5z1!wATpCKGnP~QPhYjPQ1?hAXK +F&t2X?qI<>A1%v99S}%1D)ER80?iU|}7q* +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 +wm7Siv=JYhuY8TGcs@5SoUQ&Lyd +7N#{r1_H3PvM)n2W{{WZIjsE53OeU)FD+VUwfUU8byYbn<#u39TuZot;oHot)Fyi3Z*o8?9UDn|iaS4 +rcH2{o~03j0wVe~I;mwI_@Vw|b>aHwmpGFbE)!*0rdh;!1JEl$?YZTj22!lz}w*B;sFM1?C0t?F_)Wv +NMGD%@((X{=#zM(uC?)eB20|Xa_Qe%SIUK4Mq#Ze0@L$qaX_jFD@Hatw??ks}o=xG1BrdESkqhfu@9x +@3?H6H5A!2Zs>%3oE!S^4ZeuX%;r7Z8jsg +oNHV+l+Jo)<#&RG?2H^BiNVb`dMM$dEdI%}TUOvq?goHgA +x*S~v>hL42QU|T0VO~32m@x70FPxW(&Vp`e1)&A6|dGmtx)(2SdThMFB&A+;#=u+0~Z(mvHSw#lKKRR +QYfNtY-lF?qz*r&>r>|BJ`$m+paS@CC)WE^$(-=(V0s|O@09x5$N+8lRfE2Ak)kHSX?b(%X_<}jmZ +G5c(pAf7Uy7lPkcQae2-sawS>_KuJ(M3DBtgKF}NJU+@&=8(OU^CXJ(S|2BD$gv7`@>dnlDV|XR=I%Y@6*dL>nCL|B+i +Wy$og?1?Qjc-3Y29?!7dztl&|H#eJ2;@NjL;TBWz3k%u5os#@;cxZhF{?(~&_Uje?_qmjTX~nwI7Z_! +;I2%;(bx9D6dhv@FX4quSs?w!F&Yr=mtSj@KQxJ*Ub<@XCC6x{UUa$4JG$G2;yI<%^s1AXp~|SCXP@p +Q$(nre0h?2#rk7p^jbVRr<^IVj&zi%1@J&0e8mp!m6X16OzR&*~E;S3-vlyPGO%8UV<@afL?nRnG*Y3 +k>H|XMhDaEVrG5w|nl9oKUG*TU&svjJ(=zr0neffeyb9c{K<&i=tvn_lhJe$v&MO*V(lk^=@}UDp>-FUH?RIZ;H7(mv +%9nsmbn6`RoET%5{ouJoqVa~6zvOG(}Y$p?ug{&LOOYb4GGKaj3}XbI4B;6uyd9T +xw89jxPoCO5R^lA;hs?zIZ()eo6lyVn{R09-_Y615|g(Ar_F2k&Tp$3Xsh~KzI_3QC(j4G>Mg>NsF(I ++=;sq|AYrVt=oL$q!x?eAx`dtkn4@4gRQ@+y_UY=3QJ=V9fDE@(V+~QK1WnaCke3#Zfx%lQ@SsW17Oo +mt88n5%2(uEn4R*`Ot>yJb^!rFbyTEHHKpMr~dVSbN62eXq4u(#@stZRv6D3rZnS>ErEKwzdxKnxnGY +Y!~QI328`wxpfIv}RXM0e5ALOVSJ*%uZ3-z+0SnuJ~ZA)tk@e2tYJ$F1vyCegakEL|=fayq-^5g6$x` +dP8Yn3V(AKP8Mc8-S}c7Du;U34`3=VuK`vZo+z4p=P6<;@n{N8n43A=`9xlPi5^`z}kVW0d`f&>J#oe +djYjey!j%heS!|twpy4^a+GpmLHr9d{_!P5%>{^>dmz~S0^$tF?t0OWBh@lYE3E?Dx`3GcigU1tAwoD +*2~Ss*W78Gw6P7Mk9>Ga#K9?zF>Fwy`vfUMJ4tGV%h&F-a8vjE2^(;mGINo#gIb<>4JdI1SItFKAO?P +z)yIdI8QN$R63vVXafC}{NRMX8u=>KW&O8}y*zP>M;;*y|Qp;?ZKOW`uCGt3My2&j-Kih|~XD1)MG!i +-|6U_gqarvElAO-n6X{$-0=sR?TCrKXjsxurRXB_$~(dB5|!&+`lef?5CG_x;}Q>wz=(K6gFm+;i7+p +L;*6i}V1@9@c^%gu8?}L>AeO1@aLdo9=cwy53VE$s)!+c$EorAnR9|EWPzvA?%ylI0>nD`5dIRl89=QoORT +o<&^qgOGubB{4SdJEv&4d3b}A0lJzMQQ@J>6SzLmA?1reB$FREeyj+U}?L@||xP?W5h};kZ%q?9uAfW +zK{{9O2>T*f6$z`-v5b7fntyS330^^Y|!UZvL>I>h15IjI@Pxc;(r-f@Hg%FFlb<-~teF(Fp7j6|{%) +KVNjSUu6(9+iCveMp(wOEPMDk{R{>gll(9k;JS3mS7HjZ6fN1={xFt0iySj+YR>1LE(0N&2jM4&~F-p=FkG1WYE0koOlX{?=|K=r!Z)Bf(N&f!(rQ3ccK1mK1YY%3tTybaL$XePo_L+EQwZmuPS6A3m +zOkaw&&0>SqCO^~N!EKk%|2wAm61v56kVL1NN88G5zN%4% +%y1l!0h;*+AA=FSPWSh72wX%#~6wP#vYI9qqjH+p;L8=O6gYz(P&*dl+ALJy|GE04ST4>@f@?TWnmt^P$>M>X?9m?UT3QOzX%@V?(yvQp~SBt36q=gY** +=oq2f{s4ONb(UPQ@JX~#O5@3$7!d+cWZ2=wFGB4;o{G(SdGGFZu?&Dy*unFx{Kpwao=CTyRVbg*jY)_{8B$hmW<`YpJ?^)mllR ++ER!}Z_n%ByByAGrKfPy-E%zj6n0v(K|bVh|1j^i{wK)hPPUfUk6%Alc$``HS&vx1K|W)*drGsiYeu1 +C%5!Jt_TpTqKH|{nkHi(I`Z9}KVJm2;n~eEG)l!6_S_&kI@z@025_Ma)=b%Q4a(6Bar(bF->zAPTo7HmR!Vj>UV#87Vt~ih1;)rnh$zxy02t|P2g}@{O%OL>+t*R8Tw7tf8|lMr +a4CQBVB$i*}CcmM$3rdu^>;<{-hRGL;tg>zWzs~CFy_Ej`|-sL;o{aeAm;|WA0s&_GkaglJ*DWV!g$I +-eV3NsJ3&U{0y`|o9bzQe9C0)&qksBLGbcTLZ7Qdm97Y%Hu!H+vOUPxmN3;I5D)bP-$KkzZK4rM1hivNLtB<*&Lc_neAmJks-N<~!Z*dEsGqRNY9B1a7X=85#iPhaSn@oIIt$APkD_)$^ +#idWdQlaIE)){BTa>cc%yb{Bb9rS`nd}sgr+kG5V4I@B!M%RC%P-vQNdoYwbT5fV@mZSm7D9uwR8C2f +YO7$eM6_|?)|wm2Li^TAQ5>iX#d|$U7CB=_Ai`p~z5JBW`yi5}_u0#8Ik%NL`dOOF?$)g$CmKb%Z4(- +w9j@0zD3w(7)=@PjE0C#2(XUYVoUpHX!m)7eWxe~P +p=1LD$2?xH3(y)R*pa1Dv_*=m6FiFYgvLm)P-u)G$*CnS&=`q^)@8S7)CAhsT@?W`?k-09&FxYoX^NI +XQ*_E2QEiQ{DgP2jvbLetW1=Ndl1j18|A>CiY-0Tnz7snv&vYY73ojKur=_o+`U|kn3d;1ThjFwLB|83bZ`mDOw)U3_^(`l1p^d@} +w4S1)@;%oNx@`pymk^Y97HKBCo$xUlYsQ-2^#RqRl}6*%W;77OI}dYlMgwEmu@MpNn0-2qh_bMCnT0m +y|p+u`fYAf+Y0-7$AZcmJXr!&u@q;2O+JA(DD>3?WspG-fQc&xr1aeO8kMwCqig^B5IaZ+$Z}HYZa}J +2qil=sQFPSmb0v*`4Jq2=Ep7(?F&VdtZ07V4$Y5{5LxpBA{K7AA@nMuyICl8LAA;sFho-RxLw25uIiE +%3vSd={(v!(@~0RH3H^^!IixnUL^NFHu|of|t3azZ$8%ACtwI8&c4`+>R~SUY7htcnl7DRluV^+{Xo; +G*lofN!RUhGfxLV4ka4RYl6~a2PCIS@J8O=Vg3&oG?sQ_*Cdv$^eL)yUM6g$G3PC*|a=Th +USbhz8SVs~BepQC!#3;$88e)G19?Nxjlw+kByHfSr#NdW%zh1L9b>VjN~&aa7cW15!(fV79rxD8&nHP +anzZYUySbxm2{Dtd`QY?ig(ASwHo2g?qy73hiVY^7D4yKF^(k;NzS*H`o|TqrWG=qlA{i6SmaQK3sj+$d{$@WN*L%LJJpmI=CrWrb%1r(YTz?n;fWeTq3{nyl +*?zs$(SKW}8u5L_Y9FEz6M1Pcj@mdUyv9NV5)T$(phT2ROxB7L4+DNc5lR3si{-!~~VwBnXP`HBbZA+ +tPKXk%ti>>{z;9Y49M!aaWSFBLBFldti6I$({yX-S7B{-vWT?zO$Xz`jE9?gC|H$bNK+HP&4m;G^F^b +CmurfkV6%7c*Obs&~4yv|1BXXi#&rTDfiF0iXS5&uFuIbR$?4wroN(&5C<$U23uLSs>2Xa6C|4UTN{N +c}N)As;my{Pj!}D+S@9uQkX;bFt%K>R(yHur|s7w-3jN=(SZyX8Pgi%ZFv^SqzCvMQx!I7<7x`2mr(a&vdF^i8+6rF;!8)~(*K;#2Swga& +1zf6DQ;zXrd6Z)v~ida~D~NuZ(&m=JqjeAIq&atqsCPsz6eirszCjkK_Beo8uRuw>S;LT>a}s7K=!uo +cNdqk(fAN-SrruENDloIhIWQTQDCtbVRemQjVXY0|1C40Di>|A`3VgmAn6R#v!`j5%51f&)8EHO$rn1 +vl#?v)s3EY|D6wZlr0xKVBlFaF?;7&^qgw)pCZ?4_*WghzQ^BqF^+Y_L1-`yV-=8dB)A9vcz(}5SMq% +=wIFwr!?TC)Au*oH{zR<7q%2JN}S|VPpz%zY!@_b&%JM#(Uldt^Ib-_<~W|Mu+&JAD!whd=vFf8yd(( ++3(s~eJFAq}E(lJd4LW*o)zxwFQ8}LHLJ7W{X<>VOA+S&NxKcVK9(O-@P=tKz_QG@dWwxefjl9!5)g# +}DAlwr_D*UMNW5iD!e#YS^dtnKNF#{}zioY;xtlMcmYxbycq2>hf7e;#yuv{xV=V9((-R^&)?2@zDy` +SHobCY@P!UtG>8#Q8w_1N_jg*!Zbj`)`jwH_%v2S2Cq7|U;E6^KJAxjtg4ezbfzSlOK4q +oUfn8lOD-mttXfvC#j{vo8$aZJRL9aY6Xyx(mW>Y>{?v+r_z57mqi(5Zpv81b-fHOINPXla7&gGW*8c +uArYFq4E}A$XHs)>*rDD@fpE+Chjt9XS+04eBn~!Zu@NR?M_q#Qqt=1${NRSkFXXQTWQ<5T&!5Nw8mD +=AKtcTn9~E)s^U!IHg(ppxwW*v^k-C+;-gL9QV)7zgEd%*pr9n- +G!oGZ>*fA*=I?>?_(6JwFsD}9xswBF^+Y_=zBcS`S)&bO@nP@)Bnf_UC6zOBW=W$`uKapG=kZWeb?R> +US&sKs?X33Wc6=usx$KsPqn4VU$pjR`jWBI%6N2MTYVnYKT{=7V?Jbr)`MLx5wag;oNn1uaAFc}?<<5JwMMEtT9-jUb1`iY|r6x%AmU7sk}=UibcNOsMyxU1Hupi@CH#txRI;uy0rJHU*ttdvn7W@HW*lZr#l-zc=NSH>2 +i`r!uhyT-Mkp2A(6)gktPU=_FUa@*A4D0k_Oq4)%`u6^0|(o$S*dD%Lst^W!Ae#RHJ>VLi++qO|8Je}jg=h22E;TiqDw-^OQR-K+nh*@4ekCh``jxD)=vSH&3`SRzh^{7yo +U&4>tI5iwt|n_5bv0SDv&my3x}Pj`Khx3uX~dslg8}$7&Bm>Lq7Y4Shp(y?wxm +^2vBCLlf(ea)sf{;y*k{-H)P>JZ+9Px=iyRz|K1j5Bg>mNXUy)}RB^4s%4Y3Z&K^Y*uv1~0tL^7Zd@1 +a1yClq(wsXStv>g{_TiX}H^s?=P8D!fbURAcu!t}PiFU%gcH-*{Lwpy5K+l#^sustoz4mPVWwYEZG8f +=eeq7^anX+~SNaEi1|66OHgIAIR7jSyy>El!xjYy*Tj!e$iaXq#4;<7{eSrr3H2bCOLZ%ygTVFtcr*! +Zh35g_&n#!klTV&X7@;c>x6YVtSf|d +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 +dX)ZpGOTe(e=57n4Ec`<_ddeCkL* +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 +EWrEDE@a8zntPK@3; +5VLX)LkEZyKQT*pA{zi&_)FD1=#p2j~RA)P}#mtAQZ4f(1l3&T98E^e4;lt +N`|&VKggtZE2n*QRoIeFMf-;!mac3n>1p6n`7VKkg8}?vo@vj!qE~eZ%{P3;hxs_;8P|-km#l +>u>iB?;8^x9T^!D5f&C6nbfOC_wHT2`}gmnq!1ZR-t-?$mdMB?pN9~je}9$i9}^o96%$6uM@58(^$kz +zi2z-@cJ3tmN5>k&W5OdMBPc%b>fO`FCp4)R$(Yy}<>`07*L_L7drK*JckZO>(jW0D{g{~Ou$ZI=?r! +Hr{uH2x9H3hg#SaTd3Cyk_-qS^G~GjtB)lX$414(3L-=f3jYcJq)1;QP>7*4+V|^s +_uY3>0K0!uP?IEMpD4;;5cxmYub)7ngWW&E!_7n6N*xsw8B1L5*HIAhKtEYL!gS%`el8wv>ae8Pq}b> +v8OvBjx}qZj`bP9|b!t9H_5iPBHAYCV831d6dSVI)Yk{^6QHwSO}g_cqbw8PS(yIUp +b+qSiktsc-mTeXFK!L1c|cLh8|xwfQGSAjn|-UCvF7@Q(;1agAZM{@@P@n6X9cR)dowV#D+#Ym7OjFF +gZ1TL;I66Ca};ypevS@FsVSe}q1|uD2vVlzt=$VsuoXuAa9;`ox;(a9urb7E||$t>?{oX@0dwLD(4@N +R<9Ppuw?R0Sl`)p1b`xMH$Zx9XeEuM`oM)+s7WS<%P0&X;ExxP6Yeli72-Ih1pEAhsG4t&JFmQ +vxIZfm?4kM=bn3xz4+pbY{iNd?B$nVW^2~05o3k--+y0>2S5J!V=-3vvh+3fB8@lJ(^z5W&YkS@&p#J +qgY)N3vvcRpvGeE8vxHY8xhjzA4C+g@l)X`DBTs(m~x*6 +2bJw+YetE@Hufcf%I*bu&lP31?}5`L1s%P&y>UFi^?I>b1d(PvX1XTAAh_^eb2cce)!=6nWw9&s;&r%!X5e{=W~4V?PfZ*4YPInjFdi!Z)-sjRFlzi;2Z{!A(-Y{9vYNn2! +q3(B>*46rL(g0S`G0ff!S$ndYOuKtao8N74++Y!GHQXLFH8XAqJ8}K8%1pfQ>?c*PP^bsfg_=g{UDDb +{;;R65u`|tUoLx=d`!-qvU#Gx?)+|N^-mG8d$?yOClHqD|TTU23T;o$7-?8rrn7RAxH8n|J5kk5Vh-R +ECYQu3&upC5SV6&V@X1L^)*{I6cU%4saKq)V4BfyBc_mo8o6rKP2IJ|8@Ikbm>dHv&&8AAvjUXU?4AC +r+FY@1RKm8uJK~WUlI`pMI()xw}DW+J5`(H~#a_KVSXw%P&9r?z`_!Q(nI!9MSnS)we*xVG-i~S^Q}{ +g}m$l{1pHV3ZP6B0R9Rcid}*Fv?xG0+kwj54vy}Czk>gc9Xl3KId&$QC;|=Jw{I8tLq3ilKQ7AP?Af# +89XO&+P#qTLkt0V0pl+Z%V4~bmcMxa){`~@flp)oBj&itp^CowE==}z{*TA3Zu-~7-|Jt={oVp<)|5~ +lK8{`-O{6G8bGroEAW=>_!Y0NC@F!+!1*t>VH0N}o7&mK`%jvYHD?4SW{0OSqz1Z4!=HvY)D={V +`$FKB>;Bt9Q+2pkOR;Hyup8z@hg`(kNk>r;}@Lk4|1+Kz`6e(qG2cJ4-*aDwsPM2W6l?yEUAqQSIV?gwL)+329gy|L(imo0$GO~oj&jZe{H& +fueOBnmvTb|4S2?sb3Rh0A?`Hi0|}=A-#FA~&>+|6-e{AkP3=l;QYWIJInkLxWuj +H;vpmM={z=35qrFh%U#HV`Ls=+*`U<>(8*o=>LEDe^9`hQso9L_1x8eEZ2`&GKXxK1Y$Jfu)^S6kG`t +|u)YLk{^g!2Vc`to^c5xj6>1kX>2pt^wi3>sdMX;>!HuoyH@IKM-j$EJ7CcSJ45e@T+hGLSVIVN#CsA!YI9mW{%S2W!I1Aj&S^?H3b-~ +jyQ&6{VZp*|hAqviMCYxvo+7xhVJw94DCPrrP@fOJYT-4%(R^d|G<$tk#u& +@w`n;Ix!XM$kWy=;18tV*G@bA^DS5RtdYGz7GN(Hr}q8wg%nd#7z`z`v9WU?K +P2l*Xx<;VVZ(;Es19@T<9T^`oazL}`y-D$BE|@xe)_492jC7|QAUbfDdhqBAbXhSU|ff?Kz%@+7WJ9R +!LdHSUavkM*t8Pkz!&dCc!Gn2pINqSnOFxw-f~^$1qB5>At8Zx>C%Ni^w2|`#?}HC;DNf~2%tfM`m_K +bQ%c%sTR&Sdo^L5OQvWQCG0;E1IV*y1dU_&1v411K_RB9vsJ!oZ{bA|SrM#%9=<1RsOZXE{Jn_q;k3P +!N)6)gtXkbCses4G~Hz&sLe7$c$VKuZG;k^k!{@aWI3{~$8e-BsDy*{ +2_W{PCN>Gchqy0P3_t!^00h%%@MEF3JIYhO)M!&;fjbzq00wxdBYn2h2_0pg{r9pv-$Q7sL1(at}OVLWV$_qikVJh49pt +{L9b5)8UkLn(?gc?XL7j<*MX1kPw{8_QfInC_r1~LfNKQ`X0|yQivbAQ-8i7A}4W7deyip +I({=gk$Q^*g-+NcMp1E>>77i}=%ev{HE^78UBQn|mfb0<#M5jvlycZxsqbsYaFd<9^>2z;n)IgKr_t6 +0J^uFFZ;L+gop;_5@xW{1la1Q8G1N!SB;2=?8*Unh-s4X7H +)8yT@ekU6s*j8Cj`{`@xS+gIXGu=QSRx}ML$s|_*G2z^wg&R8$RX+h>Ltnqa)L5Io9s9qf*t9ij8Gov +&xu}qQG<5V?GACb6r1_~Jm2f!?ges{{VM^zvKLu`kqCQOY}jYLs{=f`+ +>F&{gERb;O)kZ8~F<_yddORslx!!t*p&s+=O??jG{lFHuE(X7nlD8cRT)${i5R-#&K+OyD|Z+TD3~V2 +VDpc+JG-)3vDN8QE;d6>8pQH-fzJlxKRBP@=yJDkuv|f9WBb5r=q_@*}x6upy=dKW@w9`OMngvv;cR? +UUGM<)74i=JQ4dHS*ZhsR3;Z3|KdGItum6As^qm; +Lp#6g!pg%(22_9q43Era|l=WSd1K!c*qpd|dMso_G*C3kzZrla_klowKd1LbK*cQQGS+@Y6K_g_H*;FHr=8<`z*mxv4Qs*BDfsQ+eDvp> +fAzD#<#srL)(&oNZW@}~O{F?rjrNSjoWD?eTTboLWonm>)A;-q8rx2$F)+Si@FnO>&e&(5H5`Y87PMANSe?+^Ez6fnK#uK|w#f%BwGlHN4_oTT?v_76D9BlJViGaAVJvaU>aM4v+Q*JK*!COGcHK>1?~3|!Fv +Y+jZj*1)hHj5T>Bf56yFlHL>gHX)D4BwZVHJdj7|sG#eFo^a%T5p|D}Kl*W+?`O`MHEXh?zFQg3!o=A +6?b#7xEfMRvSVwfsAG%lQj}z<3qfyq;K-UKy6XelntJFRy`D6U!s4K0ne+Mpj*30^d)zhT)*s3d+_?( +~W;sAL}s3(tMvd+|BmdAQ}I*~uklaiM$TbAI62l9rT!^8u98`e~zU%;C1#^~V@76ve*R=f-79dwx(RrJ2kYz5HT_%G_d(Bu^-#zobWG4~6w3OgnG+;#@fk%cS;yvZ5c +rya01M@C0oScu{5hhVOeiPUs1+KD}OEUti-;C!lAt%6hVV83#N<9x30^1ShZ8t^dmW4D}FWen&lvqwW +rT`Ximuk?rpY9Sd}IMTEm_S=Z?B+|vFbf2-A+{L)J=B|tZX@i_2M=GDr+LEr&ipgn>g9_Vl1eyp}mG$ +fA>vesbxk1_VlnKLuz&Yhb9K0Ni*Q=;8NyNkXL?LTAz{D3SXZ%3WekLQl^AI^P6b)ud;ria^gWw*;8e +G1k&u%-(hV}3<-(Y}^mUl*p74a(xvC2_p+{84`8yRT~H(OfH!FU}r`>>KR=DSc-p|Ad5uvteOjV%-(G +>9n*oK7amvF~0*&N?V|`l_($Z=Bn*D|NP}C{G-Bfu@^v*$5&?b$c;+UcGt^r+P2uf#~a@mw| +4H##wySs8NFM#@3qamyOboD|;&`dF*?>{RjTUf82VB4lwA*Mif#mo3iew=!Xyva-*~t*q8X;d+*^$%zN%2Z;?OpMEg@%SU4H +!VND)=KH41U7RHPjBXrED7YK_7JW$qnF<(2VfmlP+n#^@H7v(93G_!fIXR+jz+P2lT@mF4UW0 +D5$w!VHdG$}`E%HY`)Ygdhzac!7G4Q+ZzROpvSRvMm(KceuNzp0(#k@uS$VcgaAxofF8H1zlDSAoZ02 +zah1M5$lHf>V&3I5f*?eyQt8YtQsw0$V&_3PI|{(c}{lrU-i%AfddSJfz<)E{y0P$AZZ}NORy#Ki|>~|3a +`4Z4>Gda8z_4JXKRC(Iu)f5lt@a}_nsm6j1+(6wSt4%{LC$oKWx(PE5qmF8eCR!M1KE{ +?eu=6;y>Vcw~wc_+p&7*hdnv|D&EhrxL9{b#3&G#sCb8`7E%))6pg1OHG?=!29!sGFaR65}n5_b}GOS +QBGi%s1XzULw-KoMQmtf$|$Ua-`66qYVQe&g^`dZ!8EA^GS@|F>c4a0duEWrv4(2_|u%PBfh-&;)`ND +h&>|EtD!6*FZIXbhsxHAasR9d_Axhz-2nbkzaZKz=;W|}KW;xv(el~VqYJ+$? +ZQL-Xnb9$FCv&1||L{pL`<5YRY~bwA&bSp*+x@I^qI5`f^A4M|h +?Dl|4yF3;iVWM}LHQ0@6miOnra8V|=vJz#Hj+7tj@fCiK}@PeNSGv(b0&+_|$(Ts*Uzz7_6Cz+7Ztw* +e(gQyDzq?!=lhmC93`_JkAHoNxlCc*A*X&J5>j;^Y9Fw&ucc3Mbxh)|x9*tEJWnC#|{3Aywj>wI*^%l +{jUsDKjMJ=9)6br_WI3Wu#~3hIF>%Wa@G!OfqF8=l04-n~;;0o0V$rH6bfQmzFnEE-8uBG<|>uJoMXuqcc$E7YW`9@ikWMgV97}{&ye5ACC4eeul<{$Aw2mMi1&gVuWn@=l$<{M<;xS>Y1Cmg}RNpqq>{gM{QKcsVAskQEyj&sjg8s@qN(uXW +yZIQ~aLwd&6&|-$B2Ven0zp_;>RU@gL`J@}KL!-2Ws0ulz6gU-kD0@CxW15Eu{^@JPU;0Z9Q<1M&lk0 +(Jyk2yhJ?8<-yWbl}dw&jODImIt~8-5)eGXj;&dLHmPl21RRVg1-CW%g-D|q{bO&@_>rU&g=zh^P(TC}y^;!C9`o;R^_1pDnhAhJz!*_-@AzmTfLzoy +~h%3U>pR2!D7x-5BKI2#DpB`{Npjn_-penFeU~phm;3I)!0!@M0ftv!i1nvsFFQ_Ewsi0?rUJQCU=(V +7?gEj$sfr0<-~r17?Ua`d7g70m}nk4tO`H^JyGXe_ +&ivt$~E(u&2$by;$c?3Nl^eXXVd(fVsi$OmI{T9SDEj4X4_iH+79@YeD44Ozyj3z-dT9c;9)y&WoYSw +B#)|}C(wB59E+63)rZH{)ncD?rD;Mm~A;HQG04?Yw8eQ-^%ldhT0LwB#PgRYD2A)T*Is|%r0AEbL!m! +wP4P1a@V%(@x6d|i?5Y2E9(cXXR{TXZ{hdv%9(U+KQpUDo}iyRKt;mA;!kRG+M$q|er$(O=O2sQ+EBG +ITXOYzQ|zYk0x1*-&b@V5l(sWLO%qBIKQr&qB_ITnrf*njShk^wZF9iKotC&BHvy9t;~AmK0_VTMOPA +85=?3(@Jeno77X)o77v?yVU`HWBiW#pYR_WkQ(rKz>@);f?|RaG#MHfZGiTp;4H$mm)@X%Utg+!*09n +L7BY)+`#MA&wk&L0*r#Dv!kD-~;sY`Q)OxCI&#PZnA5foHJNtI?P4J!M`<(AbzT146-(7ya{QCRN@O# +;BzyFW^zxsCwm=dr(fRpTY3XBPy8Mr1eKd3n9l%_&crO{~nX=iKaY4>W6YENmeXn)gwtlO_UqWea7N_ +Sotr%%x5=wHx(um4%!#PE#L8YlFZVZ^?CZ4`W5=!`d{_ +T;A(I;v^01c+8VqJ9So_4bVIhmY{)ZQG6aPbQ;Bv8Js;X8Y<}39unl290_SYT){!w&{gL{R+UPgL&+5 +0-?-jrGejoYm@VoBk?BCMAtA8K=zW%BHEBwEpR&01cPQd1XhXbPnKMC9y_-){oz~(`1g4zf9QW>WPWd +&J+W(O4p{VV9BpmRZ2gSu*bG)FbpHO^Xht(W!zZEtOm)<7jOP)K{KHcR`MHlIr6U)mMgW7?m!ErVO>@ +6q3{|62c;VX5I0L+21($T+l91=5`&dFm`*<{#mo<-gcJH}EvI9v7)}uV}7P9yc@*REyHIbG19P724Us +-v$@xR_PY&Khn1`6ofn)`f%8&u&H71g&hXniy1SJk*Qv#-lOj4`-bmlz88Jn{T}wqr4}L8f2#jI0fhm +Ypw85Kjnz!ly{Z4+@KDI`km(`g!f>!}9>v}7d(iiY@7KO3d{6s+N3n1Cw({%f7wMPp_b+N!_W3>FALT +#R|1tm9{Ezyd_P;CO{s8ZQlz?dg?*)8K?Q6@x(7=9yMS*!ivx4RZy-TfUQ%!5lcIdqF=|}5R^ywsjGxbIK1xV+RG+#{#ofPUG)+1~{*rc#|Ve7(nhV2Qnf#+u=y}P^GTiru +FKs`xqRxegBSAVEJsy;>(dHHI6BPss^-&I7*8LHnZKcn9`zXHDne(SKSx{|TBxT{?4rS1{flj>1Gpf= +DDXbg-D91u7#FfM2qwYvv`4h0>hp6Dd?MdztEx=j616;WS9ZLzDyo!VnhOvD0%`=*%n&p~R)PJqhyro&M`9SlbW()OXJ2iW#H +#eWs^?7WO7h=Q>#1!^wV;DmrS;bKAgN!fU8ns}yGMIjTdl3pvS8O>_h4;^ +Iy4~E7&;i{?3_6(t^1A{r&#^@u9hQX3o6MoH=vOnKN^X?^q=m1wk;upRNl+oxuNjg +#Z1o7ygD#ST{`gcl!1V>I{MH7u>SwCl!t*S~huHJ +xpOh}b@_wl8b9{nu-_xnW)`K_SmWb;TCJLD;8G_INf!BFl$wlyEGi_M +R_T_Gn@c!gqz_x_FQoHFMb#RFF|5%<6|K#{vO>~bXF%=1QO=q_Cjdz}s%yc)7ZvOhiy+{8Au4fA(E5r4Z9iU`# +QFOft0l8N*JH(c>@qfEo^*>ePr6mQO(ut-UQd9;py?x6(`_&Q2 +#Ssr=lNV;2EzB}(JY{MiEIniLt3vU2;y&|blHHe%LHH|UT2D{oo*V5$SKaFZ;#+FfzmE1vhfsvg>*@j +Px)N+WDk95B=!NbEq59uvPY^j0XqC-JH2{1d&;DZQdV{cc60)?qZ8{Gi3uu97P(aS=bo00{jsM2kLzI +qn#fjqK{l@yssx_cAAwfJ0=K7Sfo0kzBIL#Y +lq0yXjKF<dpCm^{@DljS;#kmI{vf{XAEGAzt9N&ojiOhF;{A81#+?nqu74Z7F>?dDHcT0Ck3#9oA8n>NATOOHwB +9lJd_SH71Se+yQUFIQ|-DqHQ30l$;AX{a!2XahR?{hkUN-x?j2&4muJWIEohJ0#os_5O11XjZ7YYxzt +2kA>aJT=rBJdb3T0riAh6^pA~x2=RMbyz$=O>KRSR$bhW!$b=wo +$u#>({Y3(Y3&q*MIIqT9{U@M!ty3G$jKqkYhmOJMlSTK!EFD=E@3MgJ5gHhYjuj^ICT|(Z_;u6K^why +*4ntumCNelf80K3|eMJxdpv4}=t=~&yX>pCE7$s#s!zhN2XA-d@Aky0bJU-QiOLFTpJ0kCdsIV3dZ7`U>4dBwOoSG +f733@C$c+P9npnG2R_je-?Jh*tPGIG(Zf~T_g8Vl<5V^GVAm_e|QnV2g*)7(#(9~>38pHhR<`hY+^$B +GF`$Zsf<%UZQ!Umj@u2w(!*h@C+wv(+`S>Y>?LfV3v0Q7r!mDNKja^zX(oD`gj;VW)!GUw+QggNwW?B +x#V^^DliIecFqj+$y>G(CVs>h7o*U0IN=h?NByN`|aQWp_*YH<}TM9P)>7#79FBnE67;?5VjLht!kXA +0Um;jkU4Ug5V`P!;76$;{?ADT1s{>R-BEMm-b@jL%q6Q7FL#fa9(-J3KXYD0VYxmtY$Yooyic9Ap;`H +3W7rL>oRqPFo|`bk8*bY8Wf<3am;Pw8L}}$0&!nro(ou>@8WraL-V|Ft~>xd^&lc+yKdVFgSvhq<20S +f*?&}4u*9NVQdUr6QKpEsvSpnGdF&ikPH-e-J@Pd!*a4?SxBUt-YfWTFaR|%&@@tN=Z+mpzuWquG6)X +^flYm){cd`a%9pnw%4e2;;P5??_y-$J^9OOm3%RmaQa4OS)MzWl|5nD4@XU4P4+He+$o%~luf}}PfNt +vA3%g=Bmk3g9=%FA5PgVe#BdU-s~4{@$~zuKz9O7178B6Cv8j=wFF({j(QKt#e=2>V%B)>{L{Xd-6dt +QZLTBl9h3Kwk8qna#Z{8mGcukN6y5iS7fA6#$~i4*)CA3q-OfQp7tj>BD=QNxR5STYc4t?m8ie3*IU2Q=^+a_&m~x^~j<#B3+eMi5gR;hLIM<=rJQ?bA_+aF +jWaD!kk;rBl^^Ux0Z>S(?uz^s^qOdy+H&&s +eP_x}JOFAGkjS0{@_ED4-(Iq3Tky=s-KUYh{oln)pbmkEBxM3`Pg>`5lXG~)tSf{WckSikacS%sBu+c +wW!6xIBs9>hwS?1g>=ZFK8cpl_@yY^S%uJ89IMQe7phl!>FOv%1WhuDHoEE?<8?x1k?g`2WRic{%m!T<16>=}g0-~hwtM4|AQI_q@shVC^U_*ab#TpF +zlrhYwMf^o^K&r3-_IM5?;M^MI#{WIW!gP~t(NrZ(fqkT9^Mgu-kZZ0WvnrFB^D^Vw^Urp1P~_IvT@% +l6W09{Y+Iv6b{{A|a<+`h!Exnc8K9KWfQu0_$pkb*&RvO|v7tG)4aqC3g*Q(J7EJakAnRw(f_HkyWHx +av*!in4BIIN=@l+EN{pZ4iJ^{#qs_uaBG)SeNOv1FB3mHh^RCs8^&eZ|6P;*0dD5_?E4sY~`lT{|d`s +-?yV5aM~Ef9}=I;*ctHuC}r^NGUbaS+sCo{&$xq>qgWeFCXfEgUu4AQ;4I160*)PQd^qdTS>4i~@0Mp +BUQBC@oudLt5{6(2&gf ++*w|BmaUz=m +?$phkssHC9P@4+I>#KS@RDP4IDoS6mSW +OZjEmE8Ied$A3D!5Z7zWH%9O@2UNV`TRSEm&t6HP<{awG}pt_85TzVBr0KBOzdK!;FUbbrsc0e8zI7s +={?u2=)4$<>ZJ;Npw8@(F;i3<2z2`kbG9>KETW&@;=P#e_&rN%fK&om#5277blqXzoH8W_xuBB*&qob +-=iuRPG9tF17eV-O3!X2E~29`x~z~<2xVO5pcJP&m3Zs7f21ea1C5UPl00Ny=bXLB259n^&&Z!%7!#d +TjE8rKVa;Vb6aA6Vc8(vN1}c=EnnmVv^by}?n94cN~FO@j!Qkqv~-zl_LA@XJzd`1<5~v3x)1rpS;wJ +x*&SW_FbWy>K$X6Dbs%^njbDKjB37eVq4w&^1E7TF(%2(9lGslAVlIy^Va>uBbfHwk5F+c_{dyCKMGP +Y-YnY!+)FL9C66wOc1 +e6Ab2ub-g&Z0j6T7FAq=RVj8>x^~dgjy66lS1Rl2tfzr+uCbiT8>`@}ykoVG}tAU+$h3c2JlezYu1`B +`(Gjb~|q$xH5S9*6KVon3TLyqP?VC`-&D$@axerQd!*Q|av!B0%}@&m0U-Cm2OQnAUT$f{*j=4S*`^v +$wfFT0K9$6%t5Bb#Gw(5&kAWyk0#Yoe90I{=m44Y2mUE$|iw(_BYlFGC>raceO-Tui<-K5p?x2h5WC) +r8r^)K&bzkrJufYlhmECwh@WS6n3s?xx@*te@!Eg5vk8Qh=G>l$_evp7I*XBX6p)sIeo7egVyr99AFVi +l60+J}ptpo@ZllM<&@bXGQd_!$u5yzV6`#HYuXnZ+o6C}=(5Yt2wQX#yb<>A(i}oq?5o!;)B8G>o_Y($GF7L ++v*xX0<;h_#Zkx4RGWojpSqGX5S#9Iv8I|L-l|o>g>9Cjp|N4K3_)C^1+JqY(dCu)@F7~c2&8CW?jiT +NqXsweBRxGX-sx__-dq@N6k=-2BP!qsmMDs=&~N<38hm7wbULTsl2oLJ%k1z^NP`gNFJ)Gp#J(%+qbAwXlk~b5DG(G5n(Q9c<>Z@l3Xws1_c}1ko^PrV +}A%EpA28x-kiXX8&9Vf5o+Y%u4 +xN_~Jau*^SrDs@pFq;dr&4eFqEa_F>XP6Lz7D$;4k=v*neplh(zv#q$Q@Lsrjs(}CQ2%c%23v_Z+_i<6Q +1c!dm!T@AkN;>5!!R}$5X|dJ{N&O6;@qBM@>zf!l1XfJnHV|( +h4@QC`4WOjx6uzr3vPH`zh}FNsH@86<14=ATJU{u +!Z*11vaD53w+7n9E3Zb;(!Oq}RP-^#If=ccA(BqHbjoL?X)7LtVyzRPeBSe$gCW+biSy?;juQKozhL+ +4V1xkwL%N-+gt(JXvp)qhFY0; +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 ++Nisb9nnMEePwi>%;#Zwm`Qv +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 +Hy$Aq`3-a=FMKRlO6hEUHb58w8p) +#x^I9<+8LAd0UP`BR?Yyw>Gs;={7)jgAz>do3Z;#r&+i@Ne|uTQoB`tfcED=J(dT$9eQ*%)WXBK=nB3 +C4`>yZbr6t*sP3(0Vr>6w3>yem6PPvK{`bR~z^K`h#uB +9dUblIpe(wcjO^^5VON#ApjNGo +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 +=7Ex~jj>P@&-sC!-`RM2>PuUXU +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 +HGibdw()z7hCP> +13|qMB2ZA~K<`FEti{wagr5~mN=>t}L9|#QiSqAo92;2ripNRSJcMB~5OjF0}sOGlIVc(xo{=bBZuP4 +Xx#n+e$?9E^B0-Be6tKu>^3W595&}6hj?=G@?0+H;XqU&PluWSL^O4Y6GTWt&Rh9h^AG8Io-PYRUQ17 +JWwH>MUz?PS|T#She%6dS8s@z9xuUr7RxivR?MApgnWMVR}1%soafZ98k*%=nuqJE}G#zf!q`mb{j1_ +E)RV-E4_8#hhvAMzCWFWDLC1$EMT_6Zr#_Yl3IZn0*4 +DnFpoIlW}*d46%@rWxXzXDyCXxL+h{Mu}{ZOQUimtKMH)FB@BCifgLVJ&-CzsR;*RA*huWv3e%%RgxA +TE^?)5Y+JVaSqpz&5r3YD$M26nUyMJiQ~5To6Pp4pPW^9I4v?vP@8P@4YHz7n{U)-bT>Mr#N%N!YDRMoTfcOh)=M?b+sCeC1nHA^#t{ +LbFg`?btUA?hxCZ^xwyd`#+ebhH+>R&loIC?+<`v~Hsp3Qj{^frY2M>73ng5(|`&Fm^4(Hq5@0K#g)z +N9k?+rC5vvgpnEj9-ix`&{^5NrO3+3w>hkjlJyS%y=VoF=?cZYuMo9hccnO`TXpyv~pH2gwRSS)c62+ +L47PA+6ZyWFixt3nW=8~V1h(Wgmf`{ehN$WqBaqm&yan;_^i>0FF$^wUG4n|KM$?;KEy91S9>4kMpm_ +ViBhWeR*2PU$e?!j@NjdH)%IY%#9n?!BzM0g-q;Te +^*+2FHu4gt;iZ19lePeE0-&Dn47EOK#tp;?c;5-k&sMqTSb)?=X5^{81y7_Ho6wrKRol&0ibx1c0ENY +yi%#Vz+WJD8SUs8<-jwu8cb-_ybTNIa4v9_1yjVY~4pyo1)Q^KjNF}U!1@Wd~QB^vgdw*g|RWo{KfCf +ZI??JW3_m0fGeMtxD(JYu1;r#fazU;4_$L%#hp1ARpT-pu5b-L}H8&RAsuJn?f?2b$j)0PED6K;6Js~ +5CJ6dnPhPH&UQ>8gXM&noA;>I~%=n1p>` +V$~wDCqFp&OV7!aEtT*Ved=eqO8{c&#=e{=-@))KJFwgsAwpfjLg`8khrCl2FM~50>O-8xu8H795F2` ++pVl@xm_!BDX-$bW;A#kYxlEL47 +jP+IytABbFkDyEt}I$HoNA=;U|u~n_e)x#!&7^|E#D2p|VK^YFEHHV~7q9NZ<5Py4Xu?09*d^`5K(fQ +3;v4Lxix|&X07_?VA1Eou?kXXGfi2i%kj~eQH6|4XAds+oECfjBe^M%P)$1i5Fw*64K7>dNLlM5OAC> +FJyUkp{X!9LJ2WgT@M!6I)QyrK{&6Y)guYtD*(mH7B-Rj|oXVVkZz)gdmK!>5Rz +GH!*Msl$hDWza03^mn*VPKIEgh;{L9Xdv#p5lLR6ZKLRax@`dc&%_xL7w6hnhz7Z;v|vQ0y#;lhu=-c +d6`OMo2UKQBgRwG|3`;#kQ#Ep!y=}ogx-in)Ny8RSmFOWy4iWByUGBdbDhI$lh59oDikbmZ2Zy~t=#vs5$0ozZL!yIn-f6%|;KYp(a4koiG-z6SNZgqv`M9*Z*6$0Ipq&_sx(Ds}o2 +yhR7h@Mx!NtCIqe-@)sP5=7uqnmlxC|jMSLTwX%zryN?XvmSV+d1uhX`;USeYv)XvuUm$%YdO95uqF; +g<#1yw0AiGT>&cGXDaRikVU&Yh{p(XtbH=e-Em91s6kX-RXaSTO0ZxYACJ|>obS-mETK)SLJDG&{cj6 +12NsF^0;*JsN8=^axEYKrsLl<{EM|XzSXFa9sSc3(D}jBE){Gh86(5(t1IuVao^*kK7R!}!>Q$%-bw8 +@YUOFJ4)9yO82E=Lwz_7LCj=MGwcV&+K+e +p*YM@3R|N(4!KpTHV&e4TS~2fbMsjO)l$6U=(jWhh^W@tClW2#(!LVu<54;d96I*~2a6Yy*k1VP&6k% +0~2c9G^;=r_M$EO%HSxECQiu1r0-x@=45tjJ;hLjha^EIq0$H0m*SpIkM5p0F2aDKaZX2a4`yV#Q0o= +Ni5kP@N!r;wMpBCjeM1Kt6CLX^XzsnreH745mlij!!U|6O!JX#7P~Tr0G}S8YLjLuec%3~J}0<2?~l+ +@U5nY9fHVeno7nBXwXpRvHpzvn9694>^HdY2wBqzDs>@ve2rIZZQ5(xh%bv4xP1dI?L~c;I6y?Y&H +-Gfih$_69sihvECG?t#n*$?>pvF>La*3^|=vSnHcs3OWs|c8fDhNa|v74nG06;3LGvwazXBaO*7vx6d +lv=Yfr+-PB1kjzejP8tJ^yUkgH6B4a^{W0xsp4~R~P`ImU3eUXs`xJJwNDAXFH%( +z*-IWyL)|$#zIz<GMko{tL9`$$%u3 +_CFj$wK4y +S%;g?iF2Sua#aUVDpqQPjRFOWn3v{(f0OsC6}@>;De)gyt)+fp6{S#_FAnaPrOaOh5nek)&k$+zGZid +g9SlW-DTr9(+sDNHuOlB3J!<7Bat|SSz?@wfxxj-#?% ++DI7h?!V$?m4V +|<0tCLe5?_gc!>KJ@c%!u}vu95}UY~!R)nUMScRH)X$FNZ^4sG?RYH +8RO$8gqs>D|Xpe +t7~RxXx|1?L@mwX-R-@^?M&1(caz`PCSq11U3{egEdbfZQ!`K&SAl)kXI?;4H={!Av+p4eM>lLFLOjj +kskLG@x?0Uf%ey`PZrEs`A!&uPg2^WB5mB^p6=p{%4yrR1p3^N1HAVb1KLp1r5CO#>8y+f;b?ke)xt! +Pw78*VeoHR;CBvrk&HF>c(ka<%f(fz!G0yi(9WO-v{MDIz!X}&hnT6}Ej +34pgQ*OAnfJ-VXDt;14Tsf>2ObzHKaRvjLsc)(ILk8RKxF}SqV@I=Ip2O>Hq<0{8$Tu;JrbJ$s6)K97 +p4zgTYucX6A&AJ4qdqyDd$h7)b!fabx#rXhxFP0Fg)q%yHS<$V4*lEr2BYim-Q<(kyJ_q&Ff`unxTopnM;*SHDkbYDC7v`(@%M(JZoXn&r@Zh8FT43xbJ-o;uo@a$YAL|sskP0;A(DI2Od-3d@a +G1SBJtrA>1Nm%tFO3XiD!q^b3evMQ*a;qMt_}YN2M1&J4&b8t2Y$=hy)!6EZAusqgHj|noC%#?9VH>L +P3jyedKCSalArmO9~MivBPkGYY(iB4E0niJ%_ZFo(Vd&((|^q((}4p=`j@T5GxJS3`O^P$km?lVzuW9 +ZM6r3H!}%4L>-@`7xoA}NiJaYZ)K(^-5jwkDEck +d@{Jt7aeOkLH!9B16Oq~>>pGwFhyt`+CU?3 +H6Ca|ECNVdb}%>t{-(AgDBn!}BrDOca!8IorZ$l%IlSM{~*Ko~g0P1!#F=sS=>4O~C=^&b)Ifw|Rbun +_1Tl|n2??IwpU*~;}J0jOK@rKR{cO1#YUk18v%R8kJEPAx^|nV56lRprl +*rkRHaVAZPJqnKmWYL``%ZsjX9Jl2+^zLQH*aybf(!8VX)Da$ZgicZg)pH^5t0VkLDoQ~xwu=kFtyR` +MG)AJ^X&}P4{t74-aH@ZsP*}PV9)KFAFEWx$&ma^N7C=c&6(n~x_eQ1=FDHg0&cuH2v1uK!D>7SwX*R +CpT&EuprR}F{U`sY@|g7n&p98o94`qkLls!r6_5C{}*&Ek^BiuJ3pwRHjA7qPz6Q}SXF>vY3KtmdY|( +`RYKH2yN~49t;hSVx;)!!kCyhUIC}7O~!o6-{|r@lm;oWfiMfR3hf$uSxzdiqq(to5Mp4MV@HS`MV_f +=8}-g->5p+Tcw#JD($090=LRXs0<@&P1~_1Wf)(J)Jze4VV}BHtO;9Pt5}Aj^h8SVomBp=L>Q%YqM)HYr5NF)~9DhHhNn}`tM~A6 +oIycitb#*PR9yT@%MJ>;rPNNtK)(RH^N$0$c87D#_+NsB0ZW^gP(tujVg|%S=b8;8u^$ElhcFF(>0_x +cwRz%s#)~5K)b5H0EGv!`7^SrhYL}WeceLVP_>Xnfr?M$CjeR7trA&d9kTD#Kubn@Ipl=t9iyyzk!n$ +knr^YlWxwsKm?C!BZY-?rVH><9L>5?&E&ZjTtq|{s9kP(7Qlk2*2}rt +XEdAG2MS}l6)I1j+@~9eOE}c>WEHm9#slJqyNu?qHqC_%;&$82@CW?fiCJL>vxE5Tav0gLM+I;Mz%;8 +gnh8ed;TNK@Cb(BH9#n96`L(U3?dW%^hai6-|tdR3SkxOH}rKoX@)v>qgwI;qta-5=p@vMjz5f3qzmt +ajkXD#bL1Y5owXK@Hzu|x#A8wB*9QAV+ZXxT1&)E0@n;$=5Z!hjttMcFS8-Vwg8gZUt8 +(g>}VwQID8B$I|oz6wBS(L#=a>B@U8^u+|DFRi(^X`Zi53V9SGsK0+{T-{2{snPb0Qbfm7Ugz{$>}N! +p&P`h#79L5bo;oW+p!UJaqHR4P=W9zBGuoM3ykk7bYWaj*a*hj8MkVlDbRVF4CNf`idYp#s1J&0aq>Y +z{d#NiankaSJ&2s#H<@Abu*Mufm{Zr~6;Rd58K6>fE^(n?U*fjwyRq*BZc$60v5v2>7#3SLH0?pR8NR +TuMGspze~3S`hn0-dt2(JPutdWUm#tY?K|-;N4zvuA}k)u#$)#Z5z6SpTH>m0iWr(q9{jajr +bySBaZOv=-bhTQhVG4Q?pv7XPt +~G)nn-9RvQRnTKP)-IjshHm&@D@KXsMiuPztdoXOH8TB0|Og5( +^kxG2RJ`lF|TBDoHIG9ooye +Kb4$UPTQU{R_v~!%T3mxen@QbqpKI!|R~^jlEoSx_n{{$Oj1UKfIF8G^9dRnkfy!KQ?y>sbmfFP@n1| +GhUFzl%opbKOx=r1l3*C3AABYRtZ(7QtO1yN@yu3*5>HZ!I^({+UId5F3?daY^jpxC}?rJ)vu50qeME +IApsQJAUv3;BqVV-U+JYO+4iZtkNmTDJJ$|G6DiG{JGNCzJ7t9{2|&mQi*kHX1gPLGRL!4_gIyihUcp +K#euF3y)1)ZI$i@N9Bt*#a?i;DM`y#Thh1$zJMN^?}o-c`TA1orDJtLVTz3^HbDW*+k*DLpaW6yh-Qy +$vOK|XrJ=z_;_;jz)gA1sh^@1C#O+X$EVhilW3ckW6FdFVp`O+9Sa;~Q}rZ|7Tl2;6%2}n;)O^> +aL`Uc2Y_TSf-;^g^zl~8QW%`*I8&sGbyP_kgntWg}#O)*Jn?95C`u^6{5|f1;t3GxXhrD74IP=(RDu3hf00Qycyzr!VmDB+b5DpLlJI>!}+SUs)n__9$kyIBe$OY+= +>lvGyv@7^l)Y5Y&Tyq-=hysS3>}~&B}s%dXadbEAg}9%->1?A#1UiDeHXqGRETM*6(Pw^*hGl|L&NjW +?lGL!^Y`4y+^re@mEj{&4z8qOvleJJ}*v4pGJ^eZ8+HhhiwG|dN7+2(2LovV+vw*`U2`d-W^kr!onAm +orUYFLL0a*5$+yUL1feE7gYsl{{HaSg%?FlYF<-J%rW8Odl1*%s%1*%Fr=hyeRRJ=S +giYqOud>!7ml@fn+?rTv2Y2pY%wbZa#&MNOW6ur#EfVaZ=kLBR)jEcg0+cJ9}!=@<#Wn;Fd;mc!jG)= +*RS|(IcZOY!TX=hcAVN+ay_|QBp;$U7c@in%yOSV_aKnnZ+n)@x +{SNv1OJ3Idbzfh*^7zX!D}~S7r(hq|4QgLk%Cd@7D^y3y3Xk+cOsB9yjFU*s{qzgJMID#TmxDmm2Hn) +C~WmdVcP2nS9^7=gW`hMlv4osjak#vq;MRomKWDLYh;+`E2CFkq8seRIO2af~k~Abbr%6M)bG$T!JI6{xj&qbW=buaNHad#biOamC%jA5uDSdSsZ#1FU>e2!)cag9H`+8PpUf%qhC_pDHcX)#+L`qw$ +h9)(y32!9fsk&nCLnL!&xoO*d^gSEzQ_=?>s5Z1u!3yX3U5>%cXe*%p0V6wfF{En$ux^LYmjXyh57S! +(1fI=)s)%(u@te&P-{>hF52zG#`U`vNW%O*(%ML4{(l@<_efYrP&E{Pid}(IY^poVfL41Of))~H0xph +H9_(jW~Vd{u5b2!YeN;9stcCL|T?51(9l4e|Q?JSYzX)w>1=0uotq&Xe +t6luohH|I2I&WAZxnhRi#l;#qc!=!ly%)!#U8s<*Yyawg~Xmw;(p9>Ilgn!9(n7jKlFM@Ga$$ySfXJmtx>QP+baHt>x_l&Ea>%7by +6llI`Q)-ty1Y5V)c}#>-O}-?8LpOy98;uY=?qtsM2=IXqiseV-y^5EU7Zz=RsKk8=?r@9R%_`3eBb-n +9hmyqV=cAl9WxS#@Hod$7DsLA6h`VvU$f)AXvYo{KNuN~)7^Nvh4ja2T$qSmay$9{h+SpVbn`tNC(Vx +3e8*W!@oBq{)uA&x61~noDY|@dn_R~eCdVP%C{p;PUf!>^lLzK^!HChRHlfx~fkkhwmM2Raipv+?A+J +1-KKmPKA0D~m$CbtQ53nvihXZQo_O+Io3^Z(->xtR)!is9=ZP*|bQh`HJB5^|UtNVNo9TJ}~I;Vq4;? +Qy5eeBau(VOiHK$sGVo#h^hR^xrO2JkZ}#qkmTb##&g!%W}u2)aKfF@NF0D)1x>e9hMxd+KR)#kBEz +DY4C#~xtPYswDM +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 +;nixTr1+N2?A=prq9ZY~W*we +h6}%2Fvz&aOj%eT^J|eiRMgT|1ULc#vycc8WbSb!di^Bi469l=LF0MHA+c_XPiCLmN90YEp>AC) +QptWsPv><_K>2;6^=C8yO8!ITZ)zVgE=U@hnnvc6Jd9*Q%Xv%z~)BJ*zBYf#U)B10{nC%Q>K*5 +zGG%Jb(E?SpU9#zv-33DILpMFEwS3noJBXumP>!pQ*k&&>{L^HwD9OsN4tzi{_kS084SwK$g)vRA9+| +)lX6gYq#+5j34?u>BWcT}l9@a&2Qim5kOmXGQ-(>(wb^sP%Bk##mo~#wR{~#pP030Z*{4|YlT&lRZ7K +?6&fWz5O?rEHM(3GRXWD1YO3jTY20{dSdrh=u-jYFCCS^{^nwyc8LQ)I2*zD}P>^WoYS;Cg&9D)>Gbg2r=u|SEv8hROQm=5Y@`%nNr=-k`dm4J0vQj4HW +MoBU+X>GfC|!3xpCG9!Jt+ym)+Edx>uualzx56fhssMa*leBl;YS-j+%#B79 +U#20vEKU~YJ(Y46b%1>=%DH|`X6$8@<}InYdBXOA2qR^lv0a`MDNPZX%}3r+o+PR4JaUI8B!$`F51U3 +hYky@OB-x)OS`16poQ&M;EX+|!X`{x%=&e<|$=R;D$i5KuyOH4RC0U!}Q*#A5S;-PH%K9*@;aQVikDk*0Ri?lCV$Jjv6*r+%{L9mUuHbhE<%6BUJ|KZX0V-9}y^Zt*9Fm`x`@kHADT-#R2BCYcKm4^0uyHWz! +?>@*!_q(C$hxhp1Q2%-U^Ze(z+JicWqfoT^`nJ@%#O6>P4cuk!PA^Se& +P1vIF11C$%~Ww%x@+`B3Fp~`Mj_9$hKS8*mP_ely)Rq5ZV^3GK5vl(_qGO@=4d$MyCuFX{V0)_Kp1(z +uQLgini(!rU+ST27`*`HDPtX28FsN6Rx{EjI9kCcCqkK~2MGk3l>EQhN-e|7jj8voy&{vVD1|LcQ;q} +=Tr)c37_75u;c{NDasj|PvYdbId!ew2K8_9ylIgnA0D{Iu!6^k}+ER0H?W3o_q+3I;3KQ$eGGofHgGF +hD`Qf=t2c^Ac7l_`ZVs72K_0xq@32+^paR1=lP1s)FkjT&v(31)orGwSp@YEKtyoHGIxWcv`_v6x^@i8U;%f{O@ +W*60fg6?)cy4|GT^x(s+EW{R#b5mFsU3=BWHa`&~WXzxD}e@{#_=CZGQ{6#uPH)4Ttqf781M|7Y?3E1 +&=0WuU?He_SNi^jGsU9$sQNvX(TT#3l2VbW{E>d@kWL&r7)Y=?d{lY2?BJ0oPIZ9nYP5&e%lyi!VzUs +o-1J7~Z7dMhbuQ+0)N%zB2rKCqE+{fDKwGV;)m_QMrPb +l|H>z>3ajztF_P7gC%@F>aT%|)bp!K_hi(cgBq?4`-00#UuEOGn>E4mKlV^9f0y1vemZuD;1C+*uJP5 +eFoM0?Fm{pLg9$!J?^ZIeBDk5}NPnGxF9(tiL+-B=0t+eDf3!_A9ci@C>=YAeHS$75BAitwgh)6^KOEZaMm@2Sw`@UE;8;0f< +MtapWJ^XIJB#D4=4CTS4pqGk@!t-5rqjQIIBBj%gCHg(9nbQVloF1>`(7zZwf>3;T|&0)dX+u#h5>(8 +BcH>y`PXf;BCE0w`#6q(+Pe^FC#op5}epa;yjt)+w_K!c`HF&Kr)TY(+J*qz2qVG^Ka}+IySjupTt}J +NFO6}c|UQkk)Q=|Uw;`M_fCZjkna5m&QRt<1Ya72Hi62Epyv>(CuH^~I5muPQshgpG)$(mjNk=&^6C%s{02F$)e@~w +nmRyf5c_Z)&7!X@7TKcd%0?k5TU7A|oJ9!@-uz*$BQEp=5yIzanIqPYA9YNn;}lvx;EQD48bU$W +bypVD^oqS0i77Ki#NgmEaAdmHZGK6G^lXPs{{wkCf?8C%7t7rU`gRnE^da(!7G;aeAjyTsDTv$V{?C= +0t+enH4_?o>%6J1Ru7@xT^^+97{4r;R^`vzlr34%z$6tB+JN2&>l_YOXhrn?PFB^BG_RZnaRBq!C|p7 +op6H1ag6;+<`ROZZkF}p6M}pS$#yfs^A^TBPNi}sb0>mhrb^t*SVf&G!yh8}6m^A@Da;yzIFTFf;RM@ +FCq0+kg9xsiF5OoVte7rw13WZ?lSa0}k^@e(sh0OeDDJU +Kw{Y!T$4!51@+0nat?~Yw2A>VE|_@p?XK|IRtMmqA@&~;|b;$NgM!QSLS1I +FQ)M+g#j%18_`QqOxJ6P~8@$(%^=&8JnHK(NgknQvQyZJuQ;lfv{P_{?+E#*+C}fL9Wq8tgPze +Tb~X28)KiN9oyB>2uo*%u!pIB1i^A&j8UW+?-Dz%4YkBr{;v+r%p}=Ma4QZN+DT_IF5cA@>yoKclyT% +oPNWY^S!E%*P0hESG&8;Mg6~-Ab_aZsIeU+Y)@4-XQ1z1bz2XS&-SE;8J?y$-E43Kk1=l229zn`VoTv +q&J7$%L$G@NHii0!N1eH4DJMT-X(g-TtM)qL&RG$ClU-iOf-@?h~Ol8H;{QU!8wN|jrc|Z-x@qY?FQf +v$_$8o`fG_UKM;CYk{-E3eu@4hwz@EwsI9i#p&oV)oujP^7OnZv;pyEtyzbDZm<0iCj)`3+E&BQmQhz(}rz^YC +@2*D}cX~Al8*A5H1sEK?JdO6sl{Oj!t}`Wo^V=%(*qUe)vImPzU%7jL32od)YsX|7g9UmU1tw2lKQ1)KlT#Y1M2MgZ&P@$I(x-7o%ps| +vs<_8*llk4QJFI%y^#V-_b=$LdecMU7hhyswrpYL<>l< +7k3M3TFJESAC{`c>lLZ%QF@JXdp#pzq*f)3XQDHsGf4o@We{t^I`STIrM}FwyQGVzwdG8~;o-997T(Z +xd3%m2^p+kp+T?~u#^zTQ0F-`c-onNj0jw18D%0Bm~z83M*(k@E-B7{G5G%fAuK4rfs{WHn^BJ7m@Me +@f(VHU~sr9Jbk2!H6%(Y?~)tVsWJJ3)$R49S69GfL({~oQ{mj>jc(#yL@zI3I(j|n^`X~5Z&waE4^XoHdvYEY7RK +V@;@G4~lh{4?+*41+SFBjUUViyywqe5tA>$u@_#r!U=8Q|ubFe&2eSXgRO+F}zdvosP8`HM4McaSeo_ +1F@TSP^aww?1u+p7{t67E{`!*2;2$*}0DGq-boA#K5dGgGEa*`5{~_6os-yJGGh&-q&kd|_#y?YB=!V +2k*3+uxdk^tLQV`inUK{_NTHOh_^5eG9vGOe{J&TJUbdgbD1HTW(>u-g+yWF=GZ>m@<~lnl+2vdFP#M_Uzd#H#b+b9}5;NV9(e`vsdm +J#ok;P!3t+t*s{B#*s5$3dptLiy|Z`(`+Gq&du;JcwrO<^+k5{wcI>&kSnxK^`t9Uw&|c0)@8)diLC! +`V;cWV0&Z6GuY}_f%CVb9W9=%h({EJ^JXQ?1?9yU~AT_Vb +4GRyeQxG>({fl-g-;4Wm~syW$*1;&zAhe*<00|?b)-39XN1+9X@=R9Y21Yz5o9E?9{1K?9)#_Wj~%d$ +=>^!voF5*LdZpBWhMLd$8XtJ=Qyjbu4ZS?o)xl!$73M%5AjTVC#YXRI@EfpGqj`%Y~-!kC_aeY&L^;W +{BE|IuVioW*V+60xYnMswiLfR#Sf+UqbPnX#lMx}&!YJGycJtY@t>ghuTlJRihqLQpLUDio8m`O{M#t +Ljp8q-_%BiXofQ8##Xm{$Kco0xQT$4Z|0Bh(af?5&H|cjYmd&9t-U=GKtY6O9(U+)C+eMY|L@UNm4r2 +V%35=h?lcoHH&7v)oqLq% +3*xMeT?7z1mi2;VEpy{j358pExwWB52N_86n`eg&!_myDgIiD|0c!XM)CJie9Cj>Clvn-#jke7??)+& +qZBeIg}+e>&r=G!DTOa6h3ZzE{XB@XUng)@b2n#aS8{glbpHTcNxA=O+fk2Aik>Yow_`NB9KZ<`N#h*s;@22?6DE=rLL +kgrZFb7Fvs={?$xt<_ueUq;mJ+u_e(d12k(PS{26GE;>fSYbID* +u?cC`-&}O5PG>8a>98&<_E6_3GYD`A5e^nqo{*<|v8}yax0O3Ar($4#}9f80{I`F{oX_fB`avp540{d +)$QhlzvQ1^yrv`&TZNUkv|0pRsnh^Q2fy*M2?C{=-8%Bd+9H5?AhH&NJhKTPY7(=rp>rfB0z`;(9MYW +QD*p>;NP}Q=WzT9iHWn +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 +cK|>MP_O_@f?>Jg)rC#9iuUYS +l1w$|7zR?{*c|P$$3-q?%o!`Uz@i8pFtyJo#f~;=?G3LEA*=!{$kwm;P}Mr{>?A)z`lpS +xpOZvAAWiC+_@EujjooEOn))-R8XfN`-`BiLHcg_7ARQ$SKz-$K`xe(7r~|D +3-Hws{i3j_8eAMgBuA(bqzK`Am^wu;OFT#!$m4@?yO+Cmfh;-jj>hoh#Q&T7WzxK{GHj3+t<3kb(s#M +iqD)~byulxxK5tdS^DD_hz!B#6|fpAR;4U4nbYy4iYY>JJG+hQI9rzI`OJnWsodS`a2p$RyT@AT1nK~`@1vO9&a!PRHWM5SDZ`_6cm!%CiCCza!p03xL==!-E^Z!R +4x24VPmv-|tItDWZZv^K8U!f*WE%x0pA^L9J6V{uCo!-8Edtm?m{e|#A>_q;6f5fiii?G$ivcxHT$9v +kEp-H?Dj0e1vnl|_jHF+?$ndp-P$Q-m%<_l#yzbDUyE^#z6(K!!sledAFefu8{-Un9p^5~sP7gO5JBz +;iyy=xzm*E}E-{MX3euZn0(p{irD8Wf)lR(jk>f~)5nj?e7~}>v9ZjH +ck6hTS7PfEO;4#>BK2JAh+g_&ui(euO47$17o!2|17kuT=l{a751Kylj~6RV#^2$E*6rdGW}Q=y9lJR +!zW3o&9?-|aBz??wG1JAaJ|^LGioVQ~0tXKsEcEgLZS)JtJl~{IL+Vl9$ZiJ6I +cY0=&~ppSYr-p`miywryoz>=hoUn;;7s^>whOgp2oqGf@vkAHkTwHd0 +AH>@~E>JiD_33W6zW$PDPJlD*c5$+8E)O)NkCN`Q@_6sxQ|G_V&zOhA{9c^Ji`^lonJ}aNH-Dxu7O=Y +SOCFkBtkKgxWB;JPd-v|Zkt0V6!G?&(;X~)udfgy=APejf-_gKtPi&c-6L-=_kFMR({u5(w-MY1M$Br +Ep$YI~Ueah}(ckzALe{=zPpo`Gtsf6Ij{Z=;KqUb5PSo#^hIWE>6_ald&*8Hj +KruUMLWw*Ds5kf4efNkDDg-vAtD(w@ZOK(@0kl3w8lDlSUaS@$Tz^l9Y2u%(tgOX3IXMm7M^jT%)%x}8-}3wYV&le*st&w&?_O2A +(76vX=N0+uwT;Ll*(cNJQ=WH8>egN3zXb~xtdjFy<$?Hma2c>A8E1(#Yu2dyp03uMJT}^o>$R1J+JS6 +_2mGb{p)KQ&VX#E%#`*dAs{RTOH8nL#?$`s3k!T&zHDs+1(ocL^US3`zbvZ0!Bp&Q0=btI3N<&ss_HC +u5rN0K_p+>)I)hfYQfUilvJb@P=cddtdjfj4gzUpHs&+p2`Oe#Bd(jn5m`d8b5sy+aYgix#%FZbZ +`ykhZjd+46qAa2QSD1yN%6+&vWO_?KAETqfqmI&z?Pj&d$z4opUqJ@K91xBIeJZFP1M~u6WaRKaCG@9 +(tqg1?v(|ojTQNIJv^TG-dy=KP@dSW%Nf)9-oiR0b5wRcCEsgnHQW(Lk7CWOS}xGLfkIz;n021o}iyx +!}8W7@JF?^waPZIR#n#(882kbePfgR`}>dICv8O^I?~oC`+p}sbPRm*Pw+7tJGFEvo?47QJP?(XhJ|3;)Nb{bCo52`oHgayTaKBY+4VlVJ8_-i9Lf8y+{bgfzG?ZC{xEI2@1#CHb@b@bmm`tLzod=2aqQT!A0 +0n_e2U$P$Ky9;A61rRssGD!9y3idzoVn$Y$B0R|;>s-x%|d+!%d5A +#;$Ge{|MCWy|=w{hI3PjJ}?8(P?5h9na`Fg)MvTeJ5ukKD{Kvny72+L3kF7<9Qe$w +&$!`__RAG)!od==x|mN{7an9~Q +jIJpgzvzTE$z$d&GLgn#8 +)~8}UOsRUhOWd6EytZ}sZc3g^a#A&0?>o#J$JrphOY-HF@D8_1m+gUb|+m46YUOUk9ay +@;Kf=Qktb)b?d+{paEOZ-}>Fi*o%d`uekH&#G8WugAe|6LT>h*i$bryvLV&^`Gp7p;Ywa<^?{};dJFU%j&-AH%);{N+=~KI`%`q|p;c&2GeR+ +egzM{M`oSDA4w(`kvacQt35MEFbDz2>xS8dp|pt!2y$w0W`iMmDUzKTF)XhSfpe_=2)ebE#C^sFy@-s +j8MRJ%E>ev9xPdt2;WC$9_#i#OMXHZ{1P<$r2}HJc@s;PVBwp}J6cup}6s_|p6J)AjOFe)#a4!Mb3%u +bjV`>49*5WnI%+&1EK< +0?py@9XS~3`jYRM+|eWnPR4zK69SwHW}b=kO3iAs +-fT8o%{Fto=;dL1*#7_Rzfem91QY-O00;m!mS#y`)S#&iB>(`+m;eAA0001RX>c!Jc4cm4Z*nhWX>)X +JX<{#TXk}$=E^vA6J^gpvHj=;VuVCxVBNa=`M{~V>e(UZziPQQvvHfhP-Cf6JC<(F|OC%pjSy6WPf4} +(vK!5}#*=_gs-Ys7nOB65|41mFWVX)&39}m58Hc8U!J#SG>hrh=+y`A2U_bSU*MRI*pdBLl`_x$OzZ- +(&Cx89FQ8n3+b_*0UHQ0#3o7HKIaUX^*(jqpxa)lHUq=h?Jc#)a_SWQ%kXR|&j>52Em5XfLgbWVEO<_ +;y_gF&Altu+D|>-X6U=JU%}RtIw4erxWkh$??V6(aZN2CuisQ63X?aMK<@MXu7Btg@__Andezi0sI8I +BBEJRi6Wkry`KDG6qn-L7wQ|98JFrC;3leMF7)@LtQJ)=D?|L3n-cRlnW +1zQC +e2w}Af=*`jF!{dW@hq4CJK$Q*4iMT%Y0$jH{{$VDtu_pRe+j9{41kW`2KSD-xD*a4Yk627FSc~K?n +l}on0o?P2hiu?_zh|Pb)`VZy$ac&l2BNBcawx;reY1zx94RJd4iXzu{MU8iq6^^f9`Ni@-O!mS&Tz^7 +}}DG^@NCz#b7RFXHQYya&I*G=VzQu+@tHsC-oV-XrRTNwCYk=U2Vczd&Ik)XMjEjha2co_{jBVHM~do +W1%1ez$oF^+gdY=!b=XFJlq-Lmx&h@{Kp4d;^eP9<8Ov`3aO@B4APEobcBg#&J%pd8mexL1HQ0o-Q(= +(dZjPH4#%Uf;E-gi6|Z=fdqn2j%@&_ORO_62ymr~@D%C5{d5(*K79H9d*6Vm;f8UZi*yqB6F_Gxa6cV +g{1Bb~<=w&Cwfrp)`#XMzIq>r2{17HCAq`*8k4}z%J +><7(`TU2&mj}n+w;CN4{)h7M&R3T|e<(hrSC3(!RMFS4^&Gu*)%ZD}I>FbMKYx9-`}N;HobUGgAIjYz +eBA$?0pav77eAaFL-mor^A)cqzwzTw)~`#SSa(*2rO1hOK9P*G$|8~paDRyBqe<*#dtPQNNp}Igni=E +(0RlC8<5^sm-a8P-U^@)5(I+vk`o`J@j+azX6qI5%H5Lti4PkFXNelKHXdRmS+du5zL7tGWHN1E-Ay5 +MkH)Y(+1|EnFAS(iQE!Q@1scKvS%(_my$#9XQ_!by&YXk~02X^1U!DzRxgp9R?M3`rJpsVRxz_Y#Efp +_O6sR6-e1TdVp_`Ak)uO)Th`qn>R-d@#cPm^>K&9lj3rf{DwW;3QAqO*@;fYA+TOchwuW+BSOtdbqAN +uZ}vs~on{|<2^WmbQNI5AYx?_&3IJ(Gi)1z-u_R%oz$59Is-hAhN-s +D)JoR2Y|IdD?LC^WCRH_My&`G0)t*Yne2X{4$MBp$6G7@6cc-G2jWB76qm$# +livjJd0NfzJ_uNiZhDFh?e4%O2r8uEsZks@z&O^Y%(XEdT(`!|Ni0%_bScn)CauVrDl +_W|$HC%a=I?&sa)^2*^BPU +C})Ogz9wiPnNa?>6k94|x2T{~7ZGOX=6#ta{3^G#Dn;2)*5PCY^n*t_qn-SPMen?3JQLEFMQ>?ASV__ +fy-5h)&(_&1Qhbd07sM9$G641U#_+c^V&@qANUi_3wIeHH4xtpi==WfE|*O$BCfTq7>*8dT-Kl<~)q! +__Dg%{fE$AL^;NRs%iL2MYK +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 +Yhz2wsKo#*2-*RgieS +majWBo$_yJqd7{W>vr#<0rPBiPoV*ERG=_?}J>#LX3FzAqOShv{MH(Q(dz~%tfLJQ7L0-BOAgsO3?!; +{Ml?^NdPAC=G%PXpgQ;C@=?f>YmZqS50*+g}s9+Y^ZB2lEh&h&BPv&@QHUP&tXLpZ;k;OB-d5a=K(uY +!G6pt;0lciKTZNvl5|*o#U&;jI5NVVMOT+{>eCn?pm4`fv%5yl!L*&?c2lAoMqyW?v* +py=?7W>B&D?2w#^XU$?vmO`rr=$`r&4i->~=chXWo^6saN4yEu7%z%Kq!mbT{C$$4D9&0V@!Q6#HmIl +ZH;jx=q?Y<=*>azlPp2IWALP{gn#<}|+zgqlxXa7uS8Qvoil83)h+O)(3v-cfe7XX7D5_wdloSL<)A3 +%Xi}3MTNY&lwG}a=H&(`3`Q8_H$@5|CkhS_h+Fy>?JvB)xv@8uP?lr~@Rgl{ +DCqP(u4nQfWQjOs?~mmZ3)iiNdTT)2w?l&(n3~@Px8&NXu!b1Q;%AYeo_d{(j7;`whIOO%V5TIcL=>( +f)&YXibf9{%am=;Jbz=oBCW1T!0w)?-B!^K^J8S{6&6^z*QT7%(TDXDLYw{3nB%X##c@u^3*_w5$2UZ +j)0>6NZn;q7GzS@^G+l(ngW`>1<5a@n|1pidENZgIe6=aEz$qO!AM{-AtJ +Q((PNb6EY(!5z%_RaL*H@Ck(R!pdV~L9j1z&XF9!X@#FQ}7$4NgTn1OE +skxoZy7I5gq!lt90s%e~G +J?nB9FCT5jZ9YeBoQ@Kk_WFG*^iKt+A=#OaDcB$a_bkD~fPkNAr@|L)V5VX^RJb-AU$XD1{h{-Yy6HX +~a?NTzmDmEN+31PSftn88ja{J_1BVQKr2`>=gb*RogcEExSJN9PcIv%gs=8hiC470q*WlyYRVsa+8fT +j`ZARs;s^D!r)qC^D^6LgmZWdqpv{Ac0QjuSrIz4x$b%HCOV{>=x|k*zT?iWD}QD2KOIiHTV|CJ;Uwc +O;8*h`ih6-^NjjE@p~Ow=ckajDcy`nVXLl{t3*q%w_`Zqt}aM(>{#PEqjL|9WM9?p=~1-Q3f&Y-geTE +>eHo_K$8-0aIQN2D$cn5QMUg5HLgo@Ott~Q<&lEOE* +I>6`!tJaNKT^&I$yz8_8k=~4F6-+sqz%1r$k%lrHgC8x!DeG5LeRqJTkS*IUgbG4+%A0?FVZ}AVU_ea`MC +@lEpI@9n?#uViv~52k(5sVzItFamW|>W-_M|5;towWA~?^uvU;0Rpayz)DZVxH;=3%Fa7-y|=&AQS{Jck|1sTY&^Zen|m8Qw@LzLB`3GE7Pp~E&KXV*+FVucI?Te5c34Pi=ut%kcO*Ve$?!>%n +*r>48=OP|gGRm!6Ra~o{6GhNih}Ru)uP_xcw+|nqIo*S_ZFO~VQm8**Y%P8OsPjC~WjE+Me17l?` +41^onWE!*Qv$iUyHE)pQ(O;z-2#Q0x(3wm>dvkkPg!?8)uD5;oa)@b+cbCak$KwHsUM!oG+g&g1c+i{ +a}#N%>`BUq?|@21v$a`oU(3`KWS3XRS`toh%eCd96Fg_INXcLhJ07excg_llkE4AHxjE*Yj~|E|pBe> +885pw$=D;dY`s3+fg7Z`42 +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 +w{T{mRk_Pmrh?HLrYV-P>CI8Z$3yd(( +7mtvV@hadq-!MRN(Ea-Py^{Sv>Apk4m)VNi??lK|%?3>?ES>&w6i~Z_(xoKvd#t`9BXKV&`pOI>jBK6 +D>W2t|(~*osL{2{ZTa=b?fBY~d`S`=z=P&;F4`n0^dI67ePzw1;NW)n06T}8M9WRk&^q#iHr8pA7m%> +{R2BrN}T3s>Ff&Hkl5H9y^bSyRLdqCVgK(}@UFEIst60q>-q7nMVscpo)W9*8o5UxP?`FJ;a*G`7(UB +E}wOBTogh%^S|L6<-r`S!*PAoqHIxl(?&hC-s7~PwGDmu3kd~XVH!77(dOue<5$DcsQizWpX9SCl1uj?9xWPBSNpC*i)y7^*w@4QX=$az@&#wdU3T%HQ{!Ye(=_2(tT>{S~aSm +0}KSz|E)ztW*sD3@2k@T*9o{*eaj65DiD1%Bw+S6R>Z(D!P{M-!ycKvILo@%b95^ +Irgp}V^f1*(9}Hr9le*!Ow)9#*UHAOcFXkMV^7hvA<* +&MEIMHejfFI0Jl0>af8(WYaj$WsYNe&+&{LUtUmGXG;CL@Dcupe6F`sa^!dP1k;^5GO*(i9(djeVDNJQ=GfUIO}yjiv +FCTglgA702R?%9y&1;w1IGn6MD>D*o}c*oM9=46qv;-2ZnRh1*(Nt_?D`Pr*W?p|@BWHG{BrDZos~j7 +)7mSIPrF#w{^X{@@VNu9$(6FpJh=o5MD +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 +;~XkY^#IlE+8m!%sLRq_m)pDr`+6i1Yer +Co|k)S+<-d>7XRUJ^xeUbc-YFZ9vbQ_+Kc)FYXUr0E0Wd|1VSX)Oo@xJJ`Z#F3s`g?OyAmcsAw&H +lmol+bI7Go#^~!w>GZ7*=<*Km4%w?w9?8O<*N=j}Ha>mV4IZ(bc`tYb`nc9irEd4a-t>PdobDmoFGaf348(^8v%)^LeU_ +0r0K(ybWOe?AZnD(@QrHc)xyLWq)L#2E!G0^cI7+t15cy+gZ%4pfjOLM)<4wuxbdloWuXQE%JCPuFYgIBNt9;XPCpi#sSX9 +Mf5X+QnHI6ACK}LM^J2?Vmr(pPxUYur#bmU0^`50hHw^a6p+~$1^@7$$S$hiM1c@>IABrEb|=0o;ts6 +OY81hS~<;@yVhNHzt!M=jni3nBk0`6`!HfhV<1)!6N1Y!S}?K1eps_xC=_VYt{Edc<6Oza5i-#u;~TP$Fv+qj+|F_($u +5j)I90{4brPts}Ok~6V@hj&P(i +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 +JFie@>{EOh!?bSI`T_3ulZmV~UV>YF7p +AMt*)0Y?T4$cmvqx0y^+3DYoUL3xNItS+wJm~bJcSjdLoxZ(@pvc+5$;B_x>C5QgY&eP%h +H)n_E=h5j|boBbo@zLRnespy5{P^vQqmx%r^bG2roL)r7N3V}A0P@9YM9m7kqr-E60WhQ2hiA`!f+q* +hj*gEmet|K4d314tkl`Buj}D^f&B58l(et;*2kG>hNIC%juPEJpbPF|itqld2#Pc8<4|49 +T-qv-H&@H;yH>EQU7+l~(2LZ{9EGQfR)`sSCjqgOv&0F0kbk6#?(^Jj;E@WHd=LvEWo{QUUf=ygAOaq +#-!)gjkC1!#Z@7GXz|q?Bk;q*(<| +Gg`YF8=X$)EQzNP6-UavDbgxIA_tBNBwk#{RTLMKtMqeH4zT#f#%S~zmJ(D4u=`QxKhBcRDgOKqcqeZ +n{J^`N!S{om4%CR3z!wUrfKN3a{dKvslRQFR+Vyy8535aqgJC7A_8%|c*B-Fq;c$CrcYF77H2iMw(eB +>PFnX{93_9w*EYf}i&tE2ED%Oks1EEYlm+6$iAe5u&p0Qm-PoF-1`oseIn1TL1x`vK#!=S)wnkU!eWi +b+pMM`tN=^=WjG-vA%WrUMwPO>@6Fq6sR^hcaj7ZK=NI`WrM_s +qaZqWV!lLrPoPas8~*PF=R#Rdy#BxRK@My29B*fn-vRSz&F#4nze}@eep4cu0iOaYdNSCFia0HSah>E9K!kxzaK9t48&Y+|Eh6FUN8N);I6sx?hbs1 +J^dGIZn83V4=($C%{LO0+>3W0~|NH%I8zs1sKqI^1MiZ#?EiA$2sgc$AH?KBK- +`MGE1;e{EbTcm_Gp2O;q|lHIOIqbz%(T0ybwHI$Co=iE0k+<64=|iL^d+F5==PyaXsu#Vi~CAnL>pRJ0GJTqKDQ*k4EEVIKR0Cj3OWb8)mBy1QDK?%RpFaQj{OIq8Q1$U} +H&AJwWV7lDciu&jPZHS4K?EAl^U0@jDddZUW2+1oW`qNB$K?DmK(25-i~1JIeJdWB3~(@$iR6 +MIMOVgM6+y3V}lYBh##;?9=&%f{`zGHJ{_~#A}`Y~X2p%;!;@DRKaEZfUL%&nogJ@>*YTJ1dUaA%8Q{HfV3 +rTigH!zY*snlPhskxWqZo5H?3Nq|mk6 +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 +pr>;DkM8$<29- +El-Od2my?aci_r?AC`-i>lhqau)8J)d+KK%aiZdAs%B_6$8FUtxgs_5wabo=Sk$KP)c^(oa$@<2CE#J +xV5nDHTMTIK=<9TAFTF^|!khYwZP5XXVo-jREg*w#vQw#9-*m@3s6weN?vU1{}%3G~`T%k^qrUuVxcpUj1r0?4B6_r<_#+V39K|V)|SPGl +uC5X2-aWO4d5MY2;o5x6IS-rE~bco@vMNsC1D8jm&FUzZLZ_O6GGqINGX`BytqhD_U;)kz>XY7+eLLa +Wkl+3CTM0O72@VMm^u0?p0^N>1~1l2)J_PU5msmlMcV&!C?N0O7ru0bZT&<8 +;TW`EmZG<{8)VZPc0P`6umB;W?p`YbLD?T8_wwu_l3h@<@ZMA>n;Af;0#X6CnLLPeGM0KGFF-kYC1LW +d&c|kACC5=r@t*$p6XFz!+9aV_>yOXyIXg{v|2>_CrMBZG3ug{xjP7aw(r)gMhylFyyuh*h~2I96y+q +;#*L33#wQmw>iR-QV3ScPTGWM3r+x7wZ6XmG)+tiDkT0mJBA@{8(Vu7e@Zf@4#a8j3jQJU6FYSv4aM_ +H+4?m};XCxicA$SnzMy|g}3gDpz43bX>sIRS-H`2&7MZbOV4vzv1X<=!3Sa0Wdg1v +zS7Tp!93UO$XG>V*f~fb({>E@r#1LbIibsYMNn;Bf*J +wUUr4QG(eaT*!A`B^kuWeDGm5`XaBiGGNDeajrARr7f_N4cQI(r6B~ky +@DXXIfb=Pa7XQWZOTKs!XN!&a>Avd9K}{aq2cB>#Wx~`sD*F_x$(#8X5Qk +-$`xKGZQ*WE1S;JRO{Z6T6FFlqDAC_7Ht*(y1&(1eYC00)AsBks88RT4zPmLs$;dRb^5M%^boAzR&1> +o^N7#4kE`+njL1;2<tiGkZlMFHW~ +$1JD&H6AE;Di#u=LR$o_hd;FtMy#HvMbjVn&f0oh85`DDqI#9ec&<@LX-yStH_(;~yW3nH|ViAK(mhL +mdeMKysyB4>2>3Z0NU3`2O*q7HrG|W6#VNwif=r%N<;O@@A1PX*fG;Spa=GE!eVkP`3ta`LbfS`V!o& +iuk5ww^Ec7+^?YOTGs_Y0?~U5_0bf107%22!A^!%Z5xBy-|&qg`hD{bcV|)9)@W@$jBtL?AOlk^WNkg +8QMc9175aLk!e*X@&_L}q_LIjkKnyZddYYLwaC}c6WkMq6Y|@6tC9I{_uR&YKi;BdUKAI+7( +*f-|Ua%#X#}MY>_oT>WGjz^pq3j5)D_?vMBLrhv2Y?7FcWZ&QJLhM{xahYi5tyS+5`pTB=W`*0`lD*7 +!Eyw6DGNcDT%Y=?LOsParGd3$)g?xSY%uObUocgi!Gz +P7hpXUz|-&`F$54*%N1_<*06m#fRrRVv?<2P$Ph=iJX}mJZ3+v7<((|DlVw3Vl2}LYV2DjQc&|A~_1= +{l7fA%pITVn94r;N=Eme-k6>8F5+kUg_*b!s4Sk(G?bAzoWJ;i-AC)#!fLlq1NV_fw*&ALoujX*pB#F +X+_=%Q*rx`yU9>mqg^FNwo0fPeCZUX}ZLWqh!?)<+KrjtxS<+y3^%{6H}8Vu@VgTvqc=;0MECIlb@KY +}OD};c37;-q420b@8Jv%$m~${qtwa!3Rfqg(n-W63xZB_AqYq_y$gIO?LxJqGnVb3tw<-1q4Q+y)QlV +DRg^3_{zfafmg<~yry+I8xo7eIMG=TiaA +tiKa+ja8GR(V@%;q#q?I&KqCnnA89~#_z|tuyVN5Jy;B7WDC!8_qD`wZ6xP%#AbL1xxb|~>me0=8);k +$!6H~_%z!Kc7H)4D>j@T8y5ADU~E@|m3Erkv5?zU}y-OYB*tthUd>%6RjM;b&s&cT&Avl6TYPjWd109 +&EwbKc;VS(VQ5yh=RG@D}%1I7@jUQjY$5YB*}a|7Fg_*`Q^^GVFer?hW+Ty|xBt)DQDki%`tB&5Y23> +T333;AREW^KE5M8hQ7sL$+Wg5gC*@!F8;0xOBV8fhExk;Fd?H??k;^mK14-f&fg1`a%;^5j}&kAiJ_f +_wzJMOxoWb1}GnW`6N~amTw_@p>uOc*dIIFR<2+5Ij-`;B*jdvE>jPt(V=aeEu!fCHBMOnMO(x?sTia +G$+cprc1%?|)>=lcxQ<*G^z*&*tD<@BMuMImy+G*2S_4* +^>v=SbbyNr;JhH31)Oad41Y4Av<^_IUA7q13d%aOGKj^OyL2nzT%MxO(r4(}Tp*I)YPx-FYEL_BjSD_ +L2XQ;IxBaIsOvCOxrS&K>uMCQ_t{*{_Y2#7BaLVSKX}&?dMwrPgC9uh(4UPtuD29PV%zT^re2l1-BRy +d0b#9{xN!KfL&M)%(xs7eHlXap4;H28=a^WQgnMI{wn7&hGRK?b+NzgRq~!J@cdvHWUTehSx5%>8!0t +a9Bgo2=yWeZT;RHp1fEwQh>2;hnSMrhJ}5Tzn3+);sByf0z0nI5fs3DwKrtuSnu9|89^XOthOTJI2Di +5Dk=QCUlg9CA}N3za?zmrIVp65TV)%Q`-2#ozb|_X?v?`7VQHmZo0@d+ID!r$#Alc8$tS^Rxpf2>3t5I8CZJotKzrZi!>5Ft_#fXa?Ui4zr0-T2#7T9E4zGy&v+q9sJsB^s`9d=gZF46q5m3hw2wyRJeQPPU3I|RLA{v5&RgN{+hgS;R1P7BWzh3N1 ++iC9ognrh0Mq32b^MRKz*6`<&G37mAR892m|eK7&!E$^@x)DFnu;!J9hFXj~?mLEDq>|iKSf +y2q1D&n{1*!RYd93E;$R8r0C>cQL&)dq0KLq71+TUY0WOY$+;~tf-G(jl$Xt_qr)if7;63O=PP^2dDX6s!l(FFOmB(L4K6@0us9wp6)3${w_Vj{UjsAw +8N5_@wjrgni(Uw0 +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 +6inv1%fh_=<*5JdZPaI1WIowB +HTwy0V^rOJhRAZhi?X9e+4R01wAf9Nr`_Y$_@Ph}JwAom-sD@OvIEMO&I#OHO?;>nT=XLlV6*8#2KAweTFflVEssz3Rt-uOWf8xil-om0hI$0FrfQ7zCk&N4!n +oaYtRh@4raAsmsl2VzckjuQ;UK~c1m2|%v0&>fn>T2S;;VG{nw1weiSz{&FF`U|;TSL&98|_a*u +rMC%S|d`5$b7fkX8tf?uiGU&6#R#S=&W|GM3bNjf6WfD&h4$*Mrlr(68R +b}q0G9f1I*p^2jBjiv>XHnX$1J$>f(EY{t8gy;r;o!vLm5N=PWlQ9m^%_$}$yeF9G}XTA`+!A=SOpim +p;>9411)(D(O$*zGM!hLHNavq^~|gHEmQx7XBsvkDJ)E(;FMIKviwFK(ULb +2LW0HRU&-xFQ*>PwSkOF+ZgXo5PrV!M5 +kAFk;HNhsxA9zm3$1Hb>B*H4RDNjkX**TPFL3g5W!q0|29ve=*EWQ3%r7{FV+U=t_b@#6Fc+xhJ}t8^ +U&pOs&B+h>S#k=Ci~`@iw#gW-H;x9Os;6BD%BKcFD9wKnTx|C5pXF)C3S)R+mA@rH0WqIhrTVQzaG8# +SoSJ1ir>fY%g~a*qV90+D8J-`4)_?Sq})xT@SK#ti^K;Wm+a%yI%O3#J!11*zb +kDvj(_YxQ +yr-PI?XfDw*azW`5W8BnJ&ByE*260d(80n@vE;_$XADB)F-4FlIui3{3y!Q*e@ro$iM?L=PVA1q&U#t3%Jmk5|E(AFm=u%_T0E +YGp2~!uyzn5)KOsZbYb=MB3Lu~uw?d)>2rmpCP$BYNdou*{bFgF0xp^*<&ppuX$rq(J$6RjUW26*+e? +QIPqQi*oLf1|pcKMzP`=rvIG20;fWo_As@?|*+;(JMbKv>V92Hmfgi@#f1ATzdSA>ZXS)RqSDb9*`ia +F3!QIzQ-U;)#)ZW3jEx +zz!tm~m3GVqxQoe|ML-s4CcYV8h~z5X96RK%TdltjXTMDfkZ2DlmR*p%@qrSIx(2tqez#c2=~+QV_J8 +#DR86IYwjHg2mL0!Hl*_dq%7=xACb-j%6a|_GC|?mD<&uKsy5R-=Iw0q`BfJ)n1y&f-$H9D#)XkM~BB +R&i!SgsJHdi5wPw9*=kJO$S3WOKyGIpH1WO*`9*bx973zLINfyN;%?^mwYoN3t82qx*X)A7i;mTJYeYBWRtraVmal`Aj#jc7Xkh`?FZa>U6Oj`;g>v;Uo4FpyoF|;) +WOUDSdN(nVqJ=fnS=~^qIj-LiMp$u&(w%RJDVQDjrhF^z|0?>+)DzqL-H1*1KhZjz|zo!c^7nYX2uz7 +ZeO|$#$6FY1;eN-5Kz}|h~Yb9SCzVN}_JwFcUc6hhb@AN*d8UlXuVQ+8uV_(|)FvMSNLosY2^fe9<)) +|vw6S0dSh+|g9Zb?zz_=lVClr9l)`kd$oRpEZL>jlK%v^;aOt +^{4}1L;YX>C9xSchbps=>abNE+%xuVyTH}l{&371%ea*`B=yXfkQ{Y$&-Go8bsY26f0Xu1;NFrmr!=D!X2sQ3rm$Pmf>~j&94Y_JW667H!rxk7bWdWl8j48e-40Mqoc;~)dyPrh% +UA`yp7WOE*Iznh1Yqg2%6FB%jKx#sTie|CG#hP*+8}M^x-4W^M0i4c6YuMPpz)J4euO*voDR6sZoUt; +8*tzM^!x_tPHe7QC7;~+2O0VpcJxRU{ohVNK1XuHjEnRExoG2I=HM+vAn%rr{ei9ubqnX?9)0Gk57Jf +Do(D}LiPDiE~?}CS}i_1c3Zqm{n*W+nlF!Dp1Q+RJDW6AR(7KL$jh9Tb5lLrRUL ++$7!%@1J7>Jag(nT5Z{XleJk-)gJ=*{D!W<*rfw$kwS6)cE_&XdmxUK<{|6#^wsI+zZK!&KNwQPptOhmk4{wSn28dW(YW)9o=Hxu~cJ^(kFF?n)8!x_D?FSMc2_-a2tAMadIDl5qv +23W%-F1av{^V=iON6{g;6SAFQO8YR|4(8RZIWxnx%ST6&Rnlh4bCQZCRx!=KPK+>W-mzdx5!=eD`ofI +?Ht~@apkv!6Y!hL8>0mCi*NVf$vszB;R6391t3Ys4hN_Rc`TXe~S)Xhj;b})*XusEX=v~ok0CMx7%mfXlYASF!SDx|KP%klV`k +u~874bY4O=9aM%R`G8#r_@18M%2ec#}qwWlBtz!7{01@u@4e_*MukcO{PhOnP4(>SFA_RxP=0;n{Kxx +`m)fnaKc@Y^H*^;H@!Kba|Jzbz0!@qG05F8qVObBZB^|Q@r|QT`0?(jf(pC>qsMc}v(s^0(&U~o{;^+ +-n(_aj|kY?r7LM33iHHp&+gm#A;la||~0Jo!@9RqZ%3{sE{Cy~>$qX>6|IlGHzygI +bbg1ja^OkCmy%^?WDi84nnR=?eg}Mni$L=%k^KR>&Eh#3S0*6C96AN}R%>995S|aItNL$=uA#E#J(e% +cBe)-&wvAp{3|;Nn{Kc%VcDr@}^`0o-Oc163*bc@P6^&meI7^Ichv!Iq=1&u%mND9)8KQ{i +Ma2b_h#``d*@kJ6Fq$FKw&tKY`9r&9qh&b-D*n?>M8fjns>xxsz!pGp_-cuE#Q>V3Z~em~W!#}cchx! +VMN49K$&yEQbq!L*>ryY{(m7;x5}u7P>Pg)K1G${XGwdtrHUj7hFV2sXB;(A{77+W~w884!^x4#zTHV +B^O1`n8qB5yx`83fft^|w`Omz}Zu9RDxl+FDl$37-@%EMA$ivV>knbtGs8LYf5t_WIHX>f{C@*BFxBr +WBbqXNh6_Pq0GcW(`CpRe(9x@a>JRmB+K(9!caxl}=~*qMq|L??NP`n1JvGP>j@5@osxlSr%4x8}emL +$5U?o7=n +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 +$J<&TN845kN5%ardSebbv(nOEbd#Skr +l@E>bPg7F@_Auz=teIHy4Q*9?`O2ly%`EOFymv@}lL?&_~wOIBI4!_MVLn;_k%3Cdq98I(cA30f5v6h +^(XSu{`Fd92I%4rt8OS36nQ&skUP{V87S?o|&%lf(r*{j?rFk8i#V@09x6QxCwa{ew!Nu?z&?DL&>@S +2O@g>Sy~ZBH$JbPQ=W{p6UG(ugk7w*#4|pHA@qRky~QZi*Yc`Q=6vN_R_Icy@m+Y-{PfHdnVaVIxd7zywSjDH^m;+MVmr6=;codP$yM9pX*T7)zyAy0E(5=4X}Vi +u4KhOaivln98iLn+~mb4=cHO|Hxl=zit?KbV}H|Wcsh{`b*WrETwo|Nau6+@)aX-FHMs&P35UecLQRkv=*{ka+u_=-W;xOW`(jC{c2IbSFjzu1^F$tXVx6V_LFNSGa=aPa1;(5^5ciJ%U4V;^ +uj#wjW0*{51JQT(9n&*Ng^$d>x3j4zXh_+m!sm2pH`xmrVEWzyftzuU1RPj5yqayjg)Mrc$mO=SA$$A +aEJsAx@dNpZC-$O8nnfXrWZLKwAx!s#G2_RLvq +Ih77b7t{^f!nz;&l9|UU0^A_w)A?c@2q8EY#iD#%GmS)FK{Rf7Xy-Scz8_9)EZaF*v0S)kgdmA;D>^M +L*b=qFk4l4a%HgjhQcb84NrGlEE%Pu8KJCxjD`*ObiI2O)K;SrvO$+&b8q5vaADuPz!e+snB?gj<~1K +zPA_XR@tSv9f-8$x74HML;axzm=PhFpk^8mbc-7_QV}hfVB-aN>Ud3%-nawd*$ZvYs>w}Cnq`bm0)1)QZJK}7Tbk)R`mF +ws4>(Syv%75BCIqIrh)=q(zEL0dAwzkH_ED?9z_)|hB&b +9}6stN76xCnNRx(ciqQ7>C*Cw8%3wP&KiOAgc(7jy{_Rvj{X}4fG0VG!oQ9)Wk^!c+Hk>kNgqLNvsat +8f@Rdv*(XoJCj|P!LB=McV()EW-N>8j{KASY>E9TzU1&Ri{GtaX{bo6+GM#dk{JbR!fJgxAt*lD=Bo> +=pHoaEmPG@Q_&6c1tC_HB2s+4;X@LKN5$T#Qa|34~k8}C-F`kj{gNLdzCHD^d=YOG|_T{Z#}S#Yinn*+ca-nAXSi4L> +Wn_2NjaKA_EQY{Z4(8s0V*o2V_gKPp1Q?nDz|XCIyL^5Y&ziqVk&jKbIf_%rH$ah)Qum_f*sg+axX}# +2X$4(8&)9(*bCP8X8AkK(j|Xu;wP)re!_GHMWhUt7Dtl&_W@Ld`(TVr&3wDM#2e;H7XV&22*paxlLY! +2Q`2#t3DD0N{!4x>~{e?4JvTi^k9UU`Ai8zE0Aq#$}&-9Ia{gXvdkwbQK`OI5Ez38)&&il +00bCb<*Z2_BBo<--LU8A2*Iy@EHTAsNF@>~ptn%(~oES7`_uuM2qbwFD>AqC@Nn#eM{Yu^`=>Lzc5Xg +Hg#T39w +TajB>IME03Xgo>sR;<{h%P%wKo-F +))~(&y)&gd=H*gDmi0X&RxN;~;qbg)#wT`QY&I{n7bFlcH}8c*Ph71gsP*N8Mt>%5obVKfCV1cEUEHxu?Us6Nx;Jy +AMQ3U0tJdp}9i}*2Z)tfKAwFSk_re1)8zr%vYZ?|Y9>S%Z1!_mI@hx6GsFLfB(`l8das58mN#= +4mJ;^MExh{02los{5~feRb^Rv*Vvz=E +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 +;c_wZlfiqXvuACrP2WKshf*GfH2d +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 +Us1C2RdCQ}jm7GHoxP(n?+1zFatc) +h3TU1)lFO6PKq}~Q;euMM#;xxuw|j!pWcLnp=oBTTN3ZbF +$U9S31g%y7J7 +qqi`x$`4*bh}$x)>h33-vIP*!CQ9*j(PO9$N;@gI4^Fc8|}@Fpp&7@ykqGOEFOO|n3h25lJ2X8O*G6z +u^_pTgrjtCOtZTXv(wfaEQjb-XC^rsxlB1`~N&(V?oNvhEKYNpKE_UEiZvAT+FD#Zi`Fl +z^hT6~hkh%B6pwRG*Y+JdYBw%}bd7fD*ZE|0 +o#m2HKL|HCvX>4AQ(ZCOBGS5;K#+>1P$4$fGkcM89lu>Y+fLcofg;*YAG=P#&) +BO-DzMEF>eHRP$@!kDgZ|7*h#V-45nS@Gf~=x1$AWllh2*ht$JuDu}x(|LSb5{m^+Bk$+h!{BQi;C==G$#Q^Y(Pn*SL;u8{8kRYbpDZ;ELa8GIJIM63)0*X18e4g0LU8<#ysh44y4?WA;!__kEK8R(!C0t&M(x@7pzM&*~wu-8 +32l*zBF#f*cXf?3BX)CV$%C>FX62?UGA|%&6FW`suo}c$_!T|2t4C=wG#o|e4}C3e>fCCK?+F-xDW)1Dq5&u^ +$qpMtG%+H|XZsKr9(q+b@Kv6<7qh8Sx8Ej5zBs*_1 +~|t9ld)?)u%y&GRZ{I;=VO&_?b!{K#slH5^4Xej+AiB+31xdN_6d|0ieOnG_$A8CU`^U1347yCH(gDz +qb=2fpyFq9vc?WwJ=J31|_ZHWyZ!+yIk32uMc!+J3zi2<&`SjrR7R?)Qc$lrau6;P67tu{{_ho#KeWjqV6 +6~og@dYfTULgd7U-s@Z~6$sLn(UwIc6?5Y1a)Q9M!f|^uOF+@*n*=5i$@peTwSd2HiUMMB&4#NG_q~8 +Wv4Ri&(sPLiv0&ctY?8BSLNh~saZOcX#Cuo}Wsmm67sjgGHhYLK*YHYV-06zj(u0z? +d#fPmr8ti8~t8vX;E%G|Hk=D0^q{5X%~?`Db~-=H&(QqP8y?y}*x5IE#BU;%~bCV}zAOjOQS5uWsWze8Sp8b3EoVG}A;}E#P!-3loua7FluRQx;fegGw2-C>%|Jq?g&L ++z`vgH4NyRHBYYB)WM>`J1k~@lZU}PSn(aa*2a0J-EaKn|4$yYIq_d@E&Uze9OPf4$es>f-@aAWRZB2kQL*2&0kRYEi>p +mg%!(YAtUX7wa_?C$d~K|2%RQmjd*8HI$0qpx2lTHE+VezFQrHcxIvaP+nR|7}6Y%&Ur6;?O!GOoNbV +RA3!1g63pVfmC`M{1Jbi5P9{1m2nL4(3KibyL|_EjF0XAQnn!dazJtK|vZxRBoq5u7*z!_NV(+E{$u45THmEHtm>XwUZ=x9P +>k^sY;#``7Y1a5)06~-9^uqJb|*}^rwGQLtR{w-_Y8Q8nR%!IFv4KO~o%{ff8nuCH#r_!!Hw1H9{i6S*7;GR5wwcWkL^oQGvo3x9&bPELe2kb(df*GX|$L79O0bg)JRQ>w +M@InETeMeos#zNNy$+)sGa)5INS4t(ufFu>A&MkNc&qZ|a&ai<)4IewZvlV?U~8p#Ub{WJ*f9LST2dv +~FBila8YHQ)X?w0Ya4AM`?m@ecrU!Ei}hGPD1A(R~LY7BEtK3|-@IAA+O +m^;HYz4o3>-kr*xNccNLzr#`6VanG+d%WL5d%Pcj1|5#t4ggI9`-f%lkFN%-odysydSQfBI3{-`4|V@m7l(kEWaY8Ld-Rk +gh9tfL#Titt5qO*R|0d}RQ_K$Ss;0wPkOJ`02KJB&^eKm6Mah;FM{TMw?8 +)`pN}@>C5GFDWr!!U3lt?hcL6H&szhaeW$JG+5;^CQl4r!L8gzCEXYk?~)T$XhNRK%8d3NN<|?vwxIX +QQ6XDqNIfhxT)#|!>dZxB!DJ4N#IQ~(7I)z;;!~P7v3!izu}RQm&foVR*b55pSTebGPgd}dG +S^i8QNB8!Ctwg8O}xh&^|7Ug94Xfyod<5GB(%v)6QPUFLv`JX_7cQyt6e`FlVd +OU&hIk)fcDPZ>99A~0$+nv8!g*v^Sg|nXTu!> +K>@plbw!)1Xf)v&xP|9cNb-1e`Dd +Wye;qog`m%i|n*Zi6ATgc)h?uH{YO4=iFIp!@m5E{da9EQ?*1CE3NEBAhZqW{~%@S$0BMcVJg<;ZK_u +{$>`{26MbZaapTIKJX3ma6=BGDKjE#qsbwTB95V*r4s{!_`dguLXux)lth{Xx? +AK;lT;v-ZmM)g{&rBDGM{JQ`L{W9I10U*^lk~6Fo)EpQfR0HzS2Wf{Gnj7Yww2>Z*({ga)TN82~IU{Vo +X+X?A9>*7#ABL+0E>qJNw%6&c2FJK)je+%iPjeZ0QB`Nq}r9Ib`G&&dFpsVyAMj{xG>;%}S(p*3U&Tj +amwRr1T&%FXHxzP5F0xw52957qPnLeN+wuMV{l7J#cQiqeW(A=N)Ui~l{^<>c)_(ZdmALmOdof~>x5m +9zua)4G^zw#k<)B;5iJ7!f3W+LzzcNym(99`C;x=P3#V_xRQ`I +B=u9{se$*eEXcGSdhf2p_>3qpe!Fh!Ng~HfnxGN!b^R+lW;N%YBAiV(}u6ibMYP +T^iEAMYe$u5!smH4KSjQWmlT8=~$!&n)XJc*XEtRmg2j73mR@3&C)^)nZd4*Pp}e3Tp=Ysqp|Z`UWb@ +su@!;Aiv(1lkN9JYJaMkwgygGvJ5^lXw(B=B$e2+KvEoq)a)OMZ8e|*j8N;}_j;ixAS}Y^))G>7nD>- +#UlzQBKv5OL!#_c}R=z8kbCi31aV!^=y%E|$0_(qL)cmXR8uxIBDuMqO^6VCTbaPkGh(;mKCafG)MZ+ +l_hG4V$u_vA>tUkiD7IbdbpcaXZV +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 +q{);Y3Lf1_1_zFwjH7F$%m#@$-sOZ{Ev;fn +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 +3n(iWpg!i!^Sx{FGWQ^gMKYuk@5HY!Q +C2ZlQ(CVppzI98Jn%P^NulF)1M>QKVRSoui&=!ipxx>S!cu81MD;GOV={i_4$Hren4Ij>CO+2z+8@L! +5bVdXSrmfzf~|**d?1wk5%dlNcQMNaLr2!y}+);pdm)bBLcW;Bz(T4GtDq@V}zc96!GnpDBJmJIKGVv +y=q2Qp9anFa|juJvyh%$Zn2PpW;>;XDlnOpd_ch#lLOnSCa#njD{D)6Js9TxQ_M8hDtyB9>s%~7A&N* +^qYo+EI&ZZfm*0CO%&M{gKMe7gQ6W?@}sUEY1-p^(*ndflr#>fy5tD-hmL$us56(Mm9e(vu~Q>{Z8uJ +g$VVr|;sAVR=I!D}L{FW}q*(R +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 +YZ_UiUXVd`e}@nCqT{fO##zOJ;lP6HiL6 +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 +9|l46O +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 +x%)RZWQ?U&ai+h`KcHy|djlH?@ +BtzL)^4yZEm@f!pfV(|juF@x!b;eg=?35o)=aT^1AU8c=CJr}@P7s_sJpTQ<^iN0Y|!54Vq4B-fkVMM +?PSZVU;G$P&rA$ZzQ_L3+;dx|Oc6tQ@tap2Jiz)|29q+U@AcsADa0tVBQ-GSVZ#B-sHKHzkd?FcWP#B +=j7%YO)1P5d{4U18lN%~kL`hMwRRuNqSVgC1C)NWzSaI;6(=@jOVL!d=km&aQ*zL5pL3Vf9k@=ER=wWYH&mi2@mG^bsD7H?2_Gz!4KT +Ha^osHvv^K=}NQ`p~fVj0|htz!ThH@06RwCKl37H*uDniWV<(w>)ZrQXi&d20E@Zi9=*R3<+Vq9}lfh +Z}|enfO>yBx8I42(=SF*k*Q|gVU`#?!hvJ^|) +cGMbh{?A_wrW0!>7&CWgsw#)hXv3QGpm1hnC!)a$i3|-GHPcRow)3Jb)(}Z!dK7T3pMX$ZnK(3|B4mD%U8%wJe8nNdk#vYu%ec$}>0Ww-l9`8SyL +-5CY`F^JaKl2bIoWWC&8Ln#R?s`VVS`wt0CMWckid8V9cl0y9OBUnfuWt*grHncV2vgsPgFzVM3fbD{Zy|f|KGwVwF?M$?v-i<-=;dV=2G*-cW|FUMF9*Z1f)Ef=sy=K|4+x^L6>!#t +(rZg2f_9#?Q81o+2nZ>JntV;gM-n>gf;mqb0g4Ka=ZbW5*IvLii9$?9=6?Il#E$PA5_8WaIw +w;W`Z{y>duu)LAB>5F1xT9rKND=SBOBQPn$Cgy)6fc&$bwlZfw^+Ew!hGA*7im?!ItYKh~ueBAs=tT#OgA>WV$linQZ3`1PXPOL9h9s +(gAK(koq=dq>)<@d3y4q5MBb+ATn6c=2jd<2Uy1>P>0OhN(2!A2K@O*+milX<>rEPkJ1vo3Jg*8vmzv +b=>Bm+nRc7T*RXdiib82@v8Y=#hZStDrUqe7g_B$>trJFU>pnrC<*P6N*SPSPJr0x6y{;KsoruIYt0Br2Lo#r}X<-t4y{oEDdRT`d-+>f +8b`acn+iIrgFcC_rF}O8>Fp0wOobUylTd^?IN+>bZ3iO?Ck +-)3eU@wj-fmPy={^>1(U&JF~31?%d`C!Rtlg8qu2#hOTn@4)8g8C(C2P5c&$zFNIy>U@nNN;s?%VokU +K(R!y1#f9oa6HdC8rju}+_kAauUy9wRJWKf5>67qP}2JXh{P+X5FjHUK>ItWNyq1hJCN(o_-vV*6>gX +Ah$VQyVDh651^n8H*v7yXea^4>sR;UCSj~@{^kr5sv@(gxIwc)I1)snq)N@&E|9{2mMiKeju +>?c`Kny2mjG;!KkV8y4cafp#xpSC8^)3QIsTRW-s+$IqAW&sflaf +pZrZ@LNT(Iq6Lrt;ZN3;?+s&_Ma#5yXaLHV=oB3X1Uj04IZo1;JSv*1#H#@MoZ3$h +6FRp;usUy`o01Ln9=7I&~v_BL>-~;f-jCGbk+sqGTIPN5v1$@j3spD0Q12aqD?izqmy9t)#TJJ1Z>s; +-q0i+A+jcX(lJ53W*8<6o4J6}pXNGf`SD=7?L8X7d2?pKY>>@tQ&Yij49UL`ENU{dUl44Kw5~qxb@N= +JXP_0h2=Op>9~ti(+q8mle!p=-P$c={5roakJlj|48^p4rM*$}|)80_!;65t+)t0N!8*Ufu#9o4zDe1 +CHji75VA!Bf*m=s+(xgVGZ&aOb~ +s^7af@U!I5L}cw;H{|i8un-?3jEiRVG1WB1Zx^>p&^>%L5RbqB)ULm>&y?3|t@?OvWt;>N{HueJkOJT +L}H;B|LXKGStBcJBtbHT!rOr7<`QiCDN0Q86|>&&_MZS^H9L)Y=#&}&YX>NLKgG8l_h%ClBShfQN5VV +^e|);`!%D%kWqP=Er6ooPwCV&U~rK-5!(b+W@O`$4YTRQVjvWHx&=P|rc8X^2^z$;ZCy>{*Y1m8*PXd +!ByueW7VH0Yhg~zpuS>58GyQE#dhRq}teDbNuFYKe?*hb+fh>S&qQH+CGLxW8-k+EQ&fp=yGSA%zD3k +Xm3=^5S6k%*De@JvVs>6W;LW)m?kAVnqX^}o;opo+fjDX^7!6}33Uc`{$^vc(m;e20$Dl#`C;N50)Gl +HSKp&c?96MA|yW&~ZCkZ`&gfgBq<2+MH3N)a-GuTpr7;HwlqBj_r{q2Nkfr8r~^U!@RiaZng=sbs`e5 +y6tcFRkE-IN?Sad6xo>$h#C^3U?{~Q^0ECUkS!{DSU>DyA+|s;4TF&1!VFd9GS(L^|kvWLhxM*D$s;# +!8_l(MqX84i@dz1lCVvq$7xtiHvkO+L@J+j;@;gFtxr>H7VWf1K4qzGVCJd4U~}}a9u(12QCsyw4; +7#0@o#!!wyCF28l0doEK51g2Zvbgp7%%aNRJWX7E5A-HOQc{nXA=TM(1X??=aCkz0&bVoD)~f>??A1B +sA{`amY)DS4=_%#9BS&bjeKFLL8y24r6Ogy5DJG$NG9E2lQBymG7p%s==f=lt9>6F17f@e6rb9&5hPB)k$FGU#|nR1LmW;-;1 +tB_kxnX!KPTnNMTfDU1iVx9Z6r8xwYcQnTY=4BDvS9y{P3oQ?F2`U!R1rU7mdrZ~v#%n@gW|KN9H(pa +9Y^@yuCH6kV60O$gFURq*>Cs@sIy^xRK_Hbpm#J!yvz4kgW(2vcqJXfrgz?+VlOu-By1?c`LNh@0+b` +e(VhpWUnFkX_B~JJqveV%w=GH=u_*}m2O*fsdZw7sWY_EJJKglvB1c4!#POiX6pmu~d^Hux#iGV<}4l +G*I^KeL0sNf4Ah5~WpMDRHtK}Ck8M+iz;7%}+T4W~DHLk81lnEC{#XS4za(;dJC!6{7>nWG9W7pOzR$ +j7Z9hb?#6^R*hPU0S*J@)axv_F?(jev}qmY|)K%gl*@D;dBe#BPfN`dka(fHE5|08bMfM%4)M2o>X8#|QZ}e_#t2!zwtPaEz>e^M^x+@HHwp6+5(xiENmKfJ5_ +eE44z1Y>_5tBlnUmBXj|Xc4i#D=HE2HAwreODA|s+#~P!VKA0k?fTaFpuh +EsQ#(Z3Z63d9wseo|dqYf7``>>mNP3OMUP` +6;_09*?YIL5@Rryts9(p!5m!5%$~)A+8$_2x09G +#*CtD6AwYzBF%{>jFxq{4z@Bcz^MYZ^=%Ha@mCQ_Yf&8grY{P)5~S%(fGzpaG{wPacgl^W=@_t$<6CqX=Z)(_b0pptZ++qu +au!*`#{}ohoiT&WW2z(MpOn_VoJ%x)qhmry%KDOBAQ3#8j1r>>mifSNfRJ!0&TL2}I~ES}TYk+B+9zM +T#W8#-j)leyrsE&8*p$M6kUWsc>oaWD0ovcaGe-4BSUtnZ&3EK`AO}r@kqwOt5jLBv;zNA+K{q;cS%mI~jB-RhWI&RMIQ-$D>TcAw6Y +-9%LnVFpfcxUSKsFybDC7k(?D20n1setBWh=nxToq2Lf|3(FL=u)lu?on726nKpgO(8s2RhuYiC?1S7thSq +DK1ytibGpu%iV?nZ+mdcD?f6LWa<$}g-|=G?M{rp0*v+Dc67T5Cie_rv#iEj9z(pl!l%7VScNX +u&;}}ML@A&qc2i3akjMbD-yyL;g>h4mpvB7nbyG(QeHOX(knuX)8Gn5dvIFRyiR&iHKt`30^!-nA$Us +FdXtk1n0iQMy+B#_XV156tPqgnTIS{?yT)Mjk%&DZ6}1e$eVw*DEJ-1EmrkQRC08C#>7_Z`U_J-iot9 +s(ODX~D3W4g4ZgV{mEVi;UD^v%}vEM)u_we#{m37rumHfy1f+7P&7XfM#U##g-Zx;EgkcX??1AfDdwf +>B!Rz;g^m)A&*=0rLaB{Zok|n1lGO#&qt4xGpF{C;W|u;m&$Z_zW!=%?@zt|sLJ&3`W5}FSFcW+Y7{7 +_JJ9a~cHD33J$VV(prJF504Uh7p&Oh4HfkhpjwTiCu%$Z#Y}~+16j{M0EvygNQ46DXkLxyuFRARbp&L +=zlh)%W*mo`66tI^K-I#bjZTm}dIcv3vV6R%bR|YoiH?S$%oeo+V90O+L2VSP576#c*jr`E=)W{D!Ph +0t!%qRtGc$Pcog8u?+&r$&C%ZY#ej@oeM=J(#{~VaK%&7wJ`)T;6X&DDLCa) +Gri7se8Xsf2g+t4jSO6jZ%Jr8Mc^0Im(xwK3EtvptB^X0f#L>UwWuP==0Od7}s<l(^D3|Z>EFhM|CaxW0xg@r{`&0Eqeq)8Tts(O%R%I;MxWk1?_E9 +XEz+!a^}Kh}i;`aAt;1Z)CVvqX;W~f%OciYl{_XLqC^p}I^Udw;?Tg#di!@t)Gnh_~zj>?Nr|Lg%FCP +D@s(-A%$nsb<>BnB4_fEaSyGZl=2elPc`@pB4^Dt}ve)etEnT;Yd$UH!Bg`WQ~w`OO9 +KQH0000805+CpNn_Y|+{{7%0J6ye03!eZ0B~t=FJE?LZe(wAFKBdaY&C3YVlQZPZEQ7gVRCb2axQRr? +S1`s+cvW3@A)fO`Rt2)*HV(E?e6B*eK$#yuFq{gPVD`-$JfV?5+Rvuid0F;irUlv{ml#j5&!`blw`;0 +RwpNxNMHaA27~#+V3uc#;PP^|DpxtXybR*SGRw;#oD^BID%mCfeH29TOX1mY +bEJG@GpA1fU9ZjMYcuNmwvh_Dz^yHz8cE%2=XuJcS{bVOmz>9@5B)WjJLoufjZ>0_FjQVKI&4zb%(6| +MJId&GI8rj7{S(d6lpQ0~kla6$_&{o!1YhQCNoc&s_gaKxn9EI4ws(8P3n@pY%En7mT_ieqWV~6xL$|(yg1 +|(IT#GyBeWn4fUaOBf-Dbaal%GPe9eMv@-K#@nU)!pAn=0$pM*(ptkKqZ&dM|R{eu4fkVQk}g5ni^5ZL8q%GQ^cLxgd}D`4M`0^}%#c!F$9sYgr@C@ho||CVZ0KY`Nf +dShVXi(+V0$4@*9fZ-D(nzCV4`-n5^@oO=bGriO5r*82$kVCHl0lv%%RjVZ~COcwTN?2js +So-6Fb?D6?f2#BxDdKKd +zlT=5U;NsrUGgrO8HnelaW{5DHrD9Aphd0E6_r~(rLB=2A(6fBp4d{NZ>%MMnT!QNOIW3k>izDjHU^(K~>7D5T%182`2TN@=0OQIKVZIJ +W*o+!4!Hqfxb>*<0)7KK=N!gzpCovHuQB8PsUwrgQ!+ROZDR*_|QZM{KFB<;=CvYLR4&2IE4ut3&b7^ +4A+ojF?2vBPN%+T=uJDn6HN3_Z%(N=Y~gEFdFp)uHO?;{=x>%+xKiK^ib})tAzwbzq!5HyHFtPO45oS +y^JHZJ@&n^|Pq2qXmWPt*TpTJy&vzTq60MvgfD3C3$0A9-vB?zEJccPs=dy&diRh!NV7&q16$V-T){9 +jwK#}UZF~PD;oMZXjm=q}~LXlc*9Ak55^4Cy~l5><}KJoU3VLufT-94y8C06Er)e=At +#%Hj-|3}qYY{`U%W8BR`^RrAq`mchL+E18Rq3#h{&TUb5p1GBFX0T6c=cgCYxY|3;@*&&g+5&Oslep2 +S2Ui{JIzfkAguGFM#5rKzWpA@|QXNi)B~}5>ZR3tGG!|7Hn4UkxDemg0XwRmr@$%j&cS +oF}Bs)_Bb2`%`?WL12ls&3r$NhU*dpe!o_akAsKH1dxMO9&X!Y1;N&6!J1$X0uCumU?D~uWXw2p{?u0 +5s~dJ?<7WxGVv|sa?Mg752cHin3^*+NE9_^33r7{eAFz!Q%ZSOctzBA(CsYzvJ<_Vm8yaY7kS?uJ9Q< ++v8+rLGii>cPuw&Tv*bJyS8r_6>jE_dRzk3c31su>(2j&(8as%HgpaSlZ#%qq14==w56t@(c<+u;B^4 +)*Kdz6Rx`~OIDFMQTKL}G80977+1ab$#D{8D9wGs(9ShF@ +loDaB(VQ^s|E{INI2m|DB5?ZL37%Yvd4cA4_YgiYs*M(`3z*-+V1t8N%bLf(mh6ChXk5GmM!DbLHmq| +P&ygd4d5C4eRIc!_Ja9cc)}9<*9))cNHm6`SqGIm>;z(QO*4J5z}v#wx8%VkBFkFkG3d&Ik2dg_ +EA@rZihUqlj8rNHEq~;+<0bRT?=8^EXP-m)QcxY#j!Fr4;@?n4W*A1mw%8c;jq4b=kB4XXi+G;Re!=L10&Hfs+rd~A}6-L}Jb^Qz=fX#(Y ++!NpPCD(bOAdJLjM0le*(Uk?whP*n=CV#hAWi2)1~mJaRHc!&dg4EwEd4+ooF6w!@2=i;$K@ZyoCTI#E4G +s2rWM!&{?cjzkwA=Rf_5n8*j;Cm$53C=ObrfTZ#m#)sK4L)`R=LTaCaPJ`dV6HE+dXHK__tTQn)Et4*4Q95=&OB$x96u8x;UR*){?T<^%a9krfMuhVRuuxQSrhVFw +ObDJKdzzT1&I2s8_e1sOX5vVaSn(0SHmc-Et_UKl7E`EODT<@9IHO>fsJyfmf|3F^?s=x_|?!gQ+|Kb +W1uDEEv8rN7p;TcE3KUDDVaPZFp6&;{! +ZAR0bz^CkvaLqj%Wl^7*NyMMTPdkpHcjuP%Oll$G!ZpU4Mz(4^QhsxmUVJHf@w1sf@wP9f-*LZCq7`{5MfL#QC +sKHq_Jia-Jmh*CP609j8SDiq^__wT#dt4ZS#j_H6 +XzLRp$JVus9R)g0NQ=Nxmz3t!e2aX!W)2b4pz87&xZyEZfsjRqP~g4;D>3pUgo;KVeDs^1c=I+|&?&Q +>Y1;Sq2u+FA9*EW(ROY;5@3bw8dVIUWSMuL{@*k3~a{tin-P)EDk@2`xfv%ers~IRJ_oIg_(_go%Ta-LFi^{Q`@%K_TQC +dZA&pR-VHArmX&K89&*4p&p!#&pHawyez8nSgusx)+maAnbr!v_%igk`mE)oRpwh0L0kORgbZs_3UB~ +Dge7HFIt4#dC)dVkyrlSVn8huj?E;`dO8!+5 +yB5c^P?@R|40f6}wi%mqtS2B*Tr8z}9|7L+raDprlDm4muKIe3t>}?gT2X7@P|ML318@u1RnBDaK6~j +u{KNq9#G!s>aHx%!*yRy&NzI7~eC`GEKn@03*%eEcz%7NDj$6#N`k?tv3#0o!Ez{r6Ff +hhacJ3g_B4Ji%?L%}2Lk^$yzR-VYgu!t-%Rv^+lW>-x4+M)Eb&^d=JNwPHx7c +m~=$YHxF$LPt)8F$=}bEA2FgG0=2Sf0mG#L}^S+(KHAy%X|}J3QymIymWva}Q2qO^Oq2m9meZ+XCuFk +%*MCH=%fLJ6chOh0z{{*~bdp^bOxa3(^DZ2CW)M3sL;9u+1hcKi8ak7Y(5f8>*^+w$ajx&?waT(9Z(k +#@-C3;F@UbzGnJ1vC1e%o&C_DN;J#9WoTFnrlhA4HJ2HHV?6R!p6{VS;dU&93ATt!w8+JU0g`MiJj7` +{M*F*58+dZ%2A;dRdZ;f9d0MZQy$pk1+aW!yD4mT?tyqa)ZHedVs7a^tQ0|~!I#-(gl!uka@o)h@>SR +>dgEsjdaKa4R8Jl6ZO&)rI5}^PIt^0HRY1$|puau| +3q~!~-+B2g4$$dtb7{RR6JOnDeH_>Z7S-TQ`{a7{`lxo5hsf< +kCR7_qB5c&bR_QJ=5hYyN$}(^fBDnnCy$>zdejzxG8jF26h=2;kUn+2oI)mX$2 +UoE3!!z+x|8Vph%+Kwko&gx#KG``7 +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 +*V6h$MgCF0y@tYSLczwiGdQUZ?P~N|)#O +~EG*LCon%VNvBbR^=)U+^7DWmj`n(&?u+agjnVScJWOpA|8x*bdGj#;L-r2C6sJtnaoR7|5`btCQ54{ +8Tc_rZGz8oKApWHr{Bv0?aZ;!%Gp~KP0Fv0GkdY9iTekE?8eR-t5%~>c!A;mWOf+JPNwH{B=t!Hrb+A +Hx1rTUF)&ENYPiF589-g!>WC*{gUIgd8l>A(QhcoZf_XaQuWoe?LLtqTeepho+f~tmNO$3dV0}$CdDf +zX%C5ycve&;>(Qh#%~_Kl?fI-sGn%(MTSbrXov!0Qd%ErK*gxcI4>4e(`TfL!RUO-F5S;w9-A%)1tv! +SiKaG2NCLKcxQ^x<%@~yo}Shyu1{o&ASC84mdU_oNABT$~ +PC7aiw?Lt=v1`2;Qi@%Z1?jrS%-rDZj9Of7ccFxvJ1)d!0ASwcoeu+^8i5BAvOf3-#P01nGA07w6{Sb +6Y^m$rZUl5#eez#eoj@>D?}FFYXSbTpzH>oaHgs90k%vkP?O!{eg_aA6|a{{OtK7k@tm8cnpF+h&BBX +k?_!Zs^+vS=}zCUSJ828!x`Al*lv$pZd}hVK!bw_kq?;!RAZIn3abtLvCY#`jbQr+X%zzVR(-p~ +J=xS!cI?Jz%ZT99{q9}#Oiew;mHd{qOuGecd3KBPr0%IXZJQ$Mu&PF)QM+b2_A|?KQGHVORq@#F81|) +c9y%WAZZLXCUX>06N>f`8o9r4^%$x_}{bm%md92x*VWa}SX4G!fQ$t!7LF)E{+wmHL=to@aC8?6qJmc +6y2+;BUOSi)v=r}$p%TekLOvOB$x_|RHhB%Rbsqrk2c)6P5jez$TBryNiVMkNun=R*+0-gyCe+ePDtT +9-~J(yAMg{Uwb9a%i$#aN$DZD5P-P0 +RkllhxYy>r^^l;2I#}tqlAl_p=|B-xdde!*wD{~U2f;sNjD{8`0o&rYIM(lixO_+fI@LX-6q=<@r4TU +an5bns+l4;Q6Y!49J)I(BHmkAgbArkH;?@3_&9?{v+TLwDaxQ585JO0+3*s&u5B+n&ni4S?VCyhWTbF2Z>{{i0Q)d! +1(s!dq9)^cv0lIKCSXzRk5{9Tg&3mvrsiNA`XTOaJtY?W9_zN_320?D~60z&?kd=4o^eqiY0>5jQNVs +s!Y+tGaU~nDX;|#;B67(sdt!l;eHTS`E8_)=G%n9;aQm<#-58J6@w@T%lD7amo!^{F(J0gdW*wg`ClF +UYQrPS0aTg^M4yY6}_nis{)Rlgz&s?&6}&F+HJ`zyKb1d4_Cl=P!g{^BHhv@8CIbDRxW<{sZS6dGdkJ +HLz7S=-CiQ!OM>Z+R2m)#!$G(Z<+{(p9c$bZt#;_GcXao{_g41Rt@st8Z*-GoQI`37PCkK{X0ig`#w< +dbV$Ik#EwE(NRX#vLgm;-Jm^Zm=>J#!<^i6!CWYuz+2iiVn3a|hj;TH>(N4{2Vr#OQcr8pf97Yw)Z=`}#L1HVm=qa9v@3_x> +L-^;{_7!VhbI@>Sn;Zp(gJ8Sm90GwwEmPS&Nz#UrEl61ESh?nudg_^-9%+k8;^D`?t==^K<9%$4b!IO +?$EaBR@9HspEW4N`WvgxGqZR2n0{+jii9&1iiSx+ELT6Mb1VtMHt##yZRPaaEw^fe+Zb%S^sOFq+G?t0jiu0?E}2tmWPsZ#>X;d*&OjvnAG +={?0P5d(b|eC1^_r+2L=8Q{H!rSPu@Zo0xPBp>~DuSxX?m`oMlOT7oN1_FfC|Mm(_CnLVR{tI~HOIjb +=wEo9%ahaAheygstB=S{JWc)wn}*m~oRZ42n+p%PcEw?BErs95gt@ZzA#r0i(_+HRyfjdD-Yv`4g1kB +A!|Sw(ChSib*VdtF=0XE+nA$vE1byY}&XG7(HI)OC+RPcNjOFlxu<7J^Tj*#sWiOSThqJ|k+>TyZFa- +NFH<#~KQMGbfzrYBSwDns=NSvf5MezUti!yXI-8=8o5Fm1y`ri+|n6wG_Rt?ZnpY9uJCIjk@>s3=ppL +mUBRT&+`}))yqa>qDaV~dfbG!82ciP+ieX*_TztP^lPr>wQ+t=dX8T`| +_>h2)K9hjmkxV_qVcC!;r0YbI5M*g>adPO!FTdO5byfyucXGndQEXSQO&(DJA=?3$~hDDI2!Bw_KYkh +GQ%4io`bWQkkx6zx?A*uvt{h +cCAHmVh+&YyZfz^>5Pnao0ADF75jBGHocPBf*!fhNGT_i#?f3wzhyc?M`=X`Ur+7vaeFS*rArqDFQ{D +lF-W^YD=`Sy8yEGXe!CuY#TdRHjve9A#Ci~;-O(uwM7eUd7G$0LYX_D@OPufT^c=n?FMbD=q~alKo@O +^NqQxw*xqQ+fppXl|jrw$6YfIuk +MPt5!HkRwt+ZYosDAg$m)m=?nLabn7>W9#ml +@^m)KhOM=^kpQxT)J`{EDbxw=MuJ9VSzTQI_w7Rd_LHIPQa4g +$pY?=6faLqQb&yYyXK0-wnHt#HO-Up!Hl2f(I?;E(s>W(ojg7p0-rK;dNCA@-|klRsGwo>tVFMG)Ax0 +*s;;B4m{@>{D4`$<{U=awd&BeX^u{-eI27FDrL@a-c`#@}JTzpcI(jT;8WeWwtIow*LIdy6m~z8e=Fd +`~>xdjI_!;>_WWQN_8*j!9GrhI8#TcvsU1AnR?J(%7SqRUTn$7hBC86%(%HGYO;B=FvS?vvN=2&7XVe +d+HtLqTX+Y-fHspZ(aAu#Bw+6VjrQQeXyiqO7`E0q%N*{z_$}B_8pINoW>>WGNiK<)&A0A{w`ERa6*wL%bXCGuO@{4g8o~CN#YL;b~4(iiZai5@8DZ}&2QOVP57UsKfHRwqfL&+xuPD!I&0ViZ%2 +|r$YJ!aRZ*V){RdbOnDDZF%ULGjw4(W624Paplg;u9RRZ|_1AT8tK~)DDSF3%`x~`9}YT^wAYSk0`-B +mY@7h%b!S(4>cm;ZiAzy0biGHwc}9=ypsvWv>XbhQ>;lw1QitDbehm?rTOBq_o(et#c2V$PI0GX?~fM +p$LWUeMRh8iXF`Sss7n^$0(2_ydpHi)EGqaqzLST*45K&*Wo2NCnKZ0)c*d)J$)(f0PeBpcK_=S%gaorGEG(>|z%jN(q}T^`!!VPpBi^^=CRMJ(R=f9PiI7Dvt@acmRj_^Z3x?7-4`UHjwjE3&&!TqD9Z-@P$gJ^g4=0^;x=+ +lN}CiNkE*!k^t3;Z||9naLop-ce~Z1tl!AAkURwMcw|aJdG@G4LE@?|8B*nf0!B-Yef86gTtM=9`+Mq +e***p<;J$o7IGUrn{=LJZMD3v#kSf@zHr*m0NEkSW)CDZbe<6NaQAHj}*whH+7-xd6Gu#BS1-O4<67=FWDPr~KFh`s?L0I)) +WueeYf-Rqf{0*(%-19lB*Jwxa_@i#T012jo77pyHxAgPm8oy0Imbc1ZZD(f#=h=*yi(`o4Q|-I3o~*- +z`c~7P;-Wh +>Y(7A&eUk>83OoI|-Rk0i&kr-cP)Mi%Sp5Cct$(ZlX?+8D#IN-$yPM@Ypo;_fcOx_CnMfM +)F_tZ65Z}qq_8_UkasJgi3-m4oSb(5_^#Kp7(L|}vU5kP*R+d~QRMFcfaZ4dVA8}=B +h^f^p=<);?Lo&Dx^kS3$wz~*Z^eItiwR*=YaSF+Zy7Ed$Yido~Wcz%DR0uKanSQUCYyM7z8!>yhzss{ +Y&P8a!Z<9ctcTcDh%?QdyvgS~^BpRA3`b@RDO66&<={g{Ktgzt8TL}v`L2QK9BRa9&vFnAu$8aB+s)d +>0?G*J0Vz4mNaI++D)_AsxKcGhh!&<21Cg?apr^cE-`TENw2jk1o+ll +FzM6R(oCqirwHAJf)jQ*<`^SvJ +R)4q2_G53|{9*??r?+h}%BCxPbE^rc4S{;k`KO)wT1Eb#xJ_2&Xr7hC2YxgXKGS(?e(e10ikCiv=li}aHTzIR?v@=QVq)qQ*)ZdNOdJlhbz^-XQnUE +gr$^h3KeGI=Vt59E?5-aXD-pDuEqo4sIK^5^Em$c;K76XP~v511bH55#{dK?if6(5|9Ki@xs*-b|Ie3 +ys<{+Kh7^|^AlXrmgPWMGDcYN}mWLQE^6&y9zpFP|I|NI&OIx7UCx9DZ>sL*<80lpItDDgvK^yP#h~* +6Au4y^cV2$Sh{Q4-kK0FF;+<|)P2agp%jhp&dfoNxp=PNN3UQC90h#NUE>;{`9J09>20%W#&s*W*+&d +%a-w-7O`$8;W{p2E65n#B=BjRoc1aq!Ep8gn0DKjbcP2H%Twd~$)Oh57!$yUU~epDD2PE^48>&(xkGO +>)8feZ9fG`Z#4gFC_2gU@)K;h)miCqd@6aWAK2mm&gW=Y(~yEJnT003b(001HY +003}la4%nWWo~3|axZ9fZEQ7cX<{#PWpZg@Y-xIBaxQRr&0BwS+qN10-=6|yE)liLa_ly3YFpW5iM#c +dHoe$cvx{>qMM4&8isT5=wz}@S?|A``1W8C%(%x;#k(NN<{f!sT3owf!Td^QmRAp80AYfvZXGO`vxy+ +KPAgs(W-CTyN%2@lifWm$+h^gxr$LFEN#h +7tJ4O>~MV4$H8mgu5sO5r9Z%=7$;FXjyQ68z$EvJ7GapirOj|GL_*SU8=Pnz-1JYO@e<_S;-qI&vPD; +gp$pe=S_dfMC$j%9<$Gxcj=90r_X-&T;nmc;81Ioi-h~$dk+IPvH`6R-ndWZ6~79j^~Vv~WA}f&%e%* +qaUJ41!u18NFL6D=^%btKaXq~(FH>(HZY5(tUAR9X)>hct>i~_fXxB)cp%}|5DwbsQXvy{` +E)Dd#di=sC!8FBh_-GT8@-_Pj=O|`U1L8EFq|QsuF~nIqP5*<_M*K|7R}{GN>Z?C4MD5^}WltQ0eiv_ +;_PBo3X>aMOLuu3AbadR|as$nEc9_Zv+3YGT`H!I}F0vP}SB}| +UVqi0bCz1~dWJPRuQbLgQFqy;fWYDRQNp{N%f83?^faOT9u-l`gJYm@leS39rqSTjSC6cg6){K1eC|u +nWYZ>17vn$3UVQTd*}Ldc>#rf*p7KJ;t~M +Tqk8VA44GIm4|}!?(}Ogp-ixc0k!8D>BC`tR(M^%o9WUb9VG$+*hDuvmN4fz{#S$$p{xk +Pt{?h_r;*7kGcd~&rZWUhhBcuGVXXZ%E_N?_bw++N)94;dc{jW%Ex_sJH$lD)dCgS&_F#A6SczvOqM-20>B596^lcYpy?=GVvrgU1tQf<|}iaxnuoK{Y +kM_x8HT&i4lCz?*DL5o41=Brimmh+nxc(!2s3CB!xJIQ{VmqrrV5y_)@yrF_Ev^rxnO5oCEOn`PtOyL +ZRze3?~A%x*c0!f44^xfJrxs)NRG2nY+%Q6ya8=TGXVPfxThD53oA;`>+U4KIJlc+awvoE9)7x@pQxEB2w1D~qH(^q#gycaVin?(!zAF>GpTNzQqdJIN3MTnq3K$_suTn~k@QLyG8%;yLKV)e%t%F%QhG(AZ7@1Ta<-sGi&~sT6^&|fhCa|QItEJBz`(5;#$+)y$e?^!{i%@AIL%k1uU90 +M;Qe4`~+NDu`wzp8s-6pRK|F*&~EVcaS@oPskIH^21&pXDb#gq;${zPAR1^(@|%W@AU=_LM_rJjVK`d +jJ9eZ-H@|6{|3@h?yXkbqACFn`T+TG$H<$>x8#r_H)bjsRL2W0G5U;NHZ*CwcrHcuQD17(*D=O*qyo*~Zs=lM*O&4^4l$}kHrcRf|fhGLb_1x`&A +E^=`9kh4F3bRC@21WE}I(lt^f`sa{dXz^$7nT7nPJ+>$sj0uqjS1+n%UCBEaYy(pVQP(fm)?9 +TyRE6qSyjT(_Fl?4=j>;yg`Om0PI45@(iqap{&UcD9zrj-4PT?5_V9smR-IK +~zIuEs!v^f*R`v}C=-@?fVj#bg6D&eZb+howbjpG)Y96B=Ec4@o11id=S6PM`P8-n&`9VGE;8t9V11z +1zOM9dZoZ4xV^1EE6w1D6hATZ4TD`qxIe1o{yzSTx(Y-*rXXQPca_IkujxME7M=S%D&z|Fj3hpUK1H2&r$+12?xgg#X)N^~uzZbVTOOM=Z&qg6KA^&SKSjL +qcz>Q`(Y5Rak0FLAslQrfOfW3iondDit)Zwkz^SLB9O@cD9|JB#LNL?Sy*}{!R(0u&Z7oA$s^`ATT4T +#j&+V*grCqGQfLes!C?6|8B4xEwlh>eMm>lc7MT>gT9y;m_Ek6t6nAR(Zo?daCv>MFbwt7^sgVj&^{Qvk&%00!TY$c-Nc=IF!iZFaEW@$c8Y5x_Wf8{^jLe;nT-#@Qx8-BCfDPZy%I +7M9sH>T;^QnjT#dDD~2QG4*@z(J${qrvr4+eP+x9R8c*K`}DDXLOZpmpS^tj;^Ln_p0S6LaDX9AC8B5 +LE1SOVk)xCs(RZ=;!F_sA^Z0zmM(oG8e|h!Y3+92xsAbZU7*OCz%So=0l~+4)^4R%5&o9otAD$xbPR` +X6UQc6xN8He}i@3CB56{prB7?p +9IzaUb_MNz^;}{ZGeB4<-FmhePe)$k-r;N8|*ZO11C6(0=N9_ +q7<;k(oX9`rT=rt5L$nsB2&ZIntOy?IYI_bb4@a2sy*&ZHxa;4@kQgFP~pL-w+c6qxl_ChJ!Z8#*ma= +o_iFx`{A65Nvv|@g)`a|pzjXzQ^smjqsd?QN@OC!JJr!h!`z3aM7`OXt6$ero}%+qP0`*q+~DOFDGpA +h8{M}D%6%S=mLh5JkHS;h-F1`0?X>jxfv%bYWdieEZ{X5;)QLv(c8puT2kheY%h$*3InW)^(&#`|xmq +C!Hadr0!z2xVXOEk@hmvZyfHUqLv5_NtY#VXyo*d@*T=m~}rU-*xZk(h3b^Qj-;I%Sju#Cv$HF37l +H`EQWMwKNKUpGkob>53>9-_5TB>d9HhuK=(LYE~lS_v3uV~vD^@pzMj@eG{=(Qhjq=R8JVIy+PNF7^^ +v_(c+B8+DI&D3mm(AzFp0@RVh4pBKg9NKP&9h<=M1Ut}vq+_6id_3dC^mmTSesnGWKw^nFQ3m5^~nx2S!g +r=YE??06L`_HW1o4Qon8a;H7@Tt*r&FTMZsIH$g@5H&?LVZl)uU`%L2&-uM*h39+3La%wDW1k#t29Mv +@TMGP5=$8C|J7{RPtty`$G^u|*9O(5sc(jRkId_@&Vpv+)&vF*{O021GMdZ#bVy>}1Ks_E#5$dDp2E! +QcXrkPn&^t+K2#X*aJI7>(eZffIR4QF&>E_@cD#4*-m$YcZ(hG)-=CeIKmY3)`{C^D<=IQGa}q?o=v@ +{O^H9Ix#8%-o*G^o~TUKROtgYkt_C%+C(^d+!{;1i_Wlb{O9KQH0000805+CpN$=CI52gSB03iVY044wc0B~t=FJE?LZe(wAFKBdaY&C3YVlQ8Ga +%p8RUtei%X>?y-E^v8$jFr7bFNFL217sAzL8pra=V#ZbT)sEr+3Pm1ik7}GC~W17D3oe9AS+@@tSX3g~;50EBLL933$H6H6 +1$M7gKT&5_b^CP1?RR-qC`p)U1`FU|ZtxkNmm=vz-@xmNAqsfUF^ny8VMK);ff#FY$4^T@31QY-O00; +m!mS#!Jl|Gi70RRBg0{{Rc0001RX>c!Jc4cm4Z*nhabZu-kY-wUIUvzS5WiMZ1VRL0JaCwDOJ#X7E5Z +(DJ4$dN>ih*?KV8BC%b}3qP$YultZ5{1HDN?wjTKnIZ6y;cU9E6+1ckfFl%b^3U?GOh>t%15ea0IiJ; +D(60JU7tNUlIzwfx*)*w5T0LWaC6Bn>lvDIo!nrku%9p)A!`}N~xVQBJj+F)%3DnDM)9rSbW_|WV4H~ +HG)u(HZa75mUOR1V2c+1;7KY$XB+4lEgjdtg2#y|p9knqj(l9TBxdVyZFoO)=%YNgWG(V5GE>1CWayE +r?5lxHTrWqBTD=0vPFg?$S?;2i4`b@hr`cHL$=Too{657)@bG#0Wd%NDOe(2MYzOqYN>O)MHpel1lJm +u6GH_f4r1; +0m$ANZT~T^!!+yFk=cD#{aVl1TN`fJ1+F4WHoYZNhT7Sv}IreW^EcBX*Y3P}2a1_$>BbUY-7y? +!C}%io7o0?pXAQRj07tvy<@!B;SP+k_Uivy9O=DvC}tTEo +%eh5stKA^5hHEF%Ux)cT0N4Y4MBxV!dUp6` +|`YY08|d63xLxf@dIPRbFqq5aAELgY^@>PC2OsOTu>G149~tCpNx8l~C2(`yE^&8k=mqrsDS)LsXlsb +Mg*BKN7}3r{X;)3!>ovbX}obFIZg@|Y*DHk-qWA< +EAzAN&qVo^#3xd*n0gaDn>3s2hP+1>$B(AOHXWaA|NaUv_0~WN&gWXmo9CHEd~OFJE+WX= +N{Pc`k5yy;aL@+b|Hk>nj#MQK%ra*8n=CMSJYYw;&*BX%#O@lLAR4&fj;bhegRw`an^hEY9w5W;ujgX +HOty+lStvlt8D>x&Z3nt?mQL@w@)N*PI^8n` +#e&|iUP)7Xgg@J(T@>Lc<2T)f-e!a7SPL@x2M0F7oK%O@%0kZNm!;sIO+#YZJ39dZ;*+>C=*l&2I-Ja +u0;#zU8`)yXk2Z}vs-t;Qz|44>Xty!1XW{G&PPv)tAu6 +tjXLmXhTDF9(zyI~V*5g`-&C=q6^`7I37PiS6C4$_6^Fij~Q0N>t3Ai-~ec6l#xmf6113o3qQ_^VIM} +RwaQLrgC#~5m_i-j-)Xe_5(epgPSC*iDF%;nntYJ@>LDNhYCJzpJnoc!Jc4cm4Z*nhabZu-kY-wUIW@&76WpZ;bUtei%X>?y-E^v7R08mQ<1QY-O00;m!mS +#zA(0qU&0RRAP0ssIu0001RX>c!Jc4cm4Z*nhabZu-kY-wUIW@&76WpZ;bVQg?{VPa);X=7n*VRUqIX +<~JBWpgfYd3BFXYr`-MhVT9rBBumG*tyW#I@oE4?pA_PVr7^*agdeL{QKESJKD9?$sg|{J?hx^pmjIN +#H2OYe)KGWP4I3K((AnhV^20%Ka?;Hw)KXzvqFq6DAlDN)fH_pkW#|)MnSCQv-QqVE0GV^*cTgOGVit +(Mdy}AfzRb<$L#rr^=r_?;4@aK)?oTJ|9?%7 ++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 +Z0P8@}=pCHq;j5lFB0)#QsIMbOxtZ=*>GQ72P +1WSZ7ZFU17bDb(B3_F#S>7-JxnLEj;+$wjLQC}_$qDb!e7UYbkoi|rtV$w4y@K}imU76H`$7P>g7K+D +`IU0kNIdStA%r0ejbGgERFUvG`;+%4gSn-TAGbN_F!nm^qn3(WK#Xsjlxgk^WjRV4<(&IY{Y>|QytCz +}SH(Al4bRD?ZQFdhmqalciDWtk5T!wTwn0#l7y4xugFi)Uva;8n^S=QOPFX6B@i!|cS%z+FmH~%mkvQ +6eD8{O2s0?Mo>$D+bxo)-G0)T4t8+zl8Ta`o7##BqkLh}_852_WsdW +mliRHCj3ieu5(NNL6Bs21`o@<^l#f+UeD#?;us;T0*@lS?VTW>pHXN;j6QyqZQC +~_Nda;o~mcJ7RaDquzI_#wik5`En`TrCbWI4Vp}mn;!(0&7uJ94ioo5BK1D7KCX}9JRQ<)k3;8xTE!@ +BmL@I2lAZ*!F}#2RrjpQ-Q-_VVcfbKauC9xe@M!m_m+D4bnCsIA{ +)iR1_mh^vfTDFE|PBrcq)uZt6hDPfrWDt|9`5X$lDznk}z6n_H-xgzo+P8y<;hFH0kTd=!@V@#F8PzX9IM +xaxrV(G>?$M2;5*GQ;yZ(}n+8rV5Un&J-$wB5_ii?cukS2GOiW;ZN#JzpaNYH!m^(++JNj~UQyQ?)N!dI0|3%8=RT{l7idK7e4JFMSEO +0LLJXeBxAF4{Wh<$8gPmwwyqz|9_juYtp=l(5;zN0qsh>Jcu=xmUGtH@dbVlzMRQ<-vL8k?fSrXtk4GH%n!$FI3Y!mXL1F*T0S*xu73U|A=X2B26}EWHCZNgp3`$-r?tdVmSiXgc2{V7v88jbCDeM}T(={0c#*& +%(0pEaXeXq6)+9114&;i&jfHtHm{oAmz2(1Ybk$0<%1|*+fgAbD@}hz-f8!J+ +mMKdQgt|4FdkGjnyxatg@{B2+n_T*sOs|END=ab=`D|W%BSrb*2ihFqE{fBp-mi@yW{&U-cTVOE{ANn +Y|lRDtTyx*T(5bM?T5VORdLjOZ~3it%=$^mZ9TH`mDk2qI&O-!3$Iy5z@~Xx=HXh4TEdlT+-9XXuY34 +Y@jiFU!Ueu-8aC##DB}v%8#)6X7!5d7 +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 +;@4oYvV6glLB_I1~a@*IO4r9=z2kRE4KSzF_SG +{G-US2r@qN@Is)Ex`A(#_N0OWKF=HtoR<$)nQZ0B8Qb1mT~}N2qxxR`q(Fy6*Y!$c#&_p_zu|Dc +#-}V+Yw10FQ<@A}6kAT;`B%n()|hhR(4%|8MJeG^Nq^9I4B3wN4tW7Q;O`(EO1_5;Xyrqe)|clKWP>f +WJGM@U%%g6J3+C0&OvLc{)!14G!9Jn^W#C9-`7e~X!b=}f#=ISmC%#VtR6EB|SGOcQ+{!x+zmk|`Nz* +{~s%??8<3@G_8)ZcW<-5&V=}M~HT*4QYxKSVLs!TJgiu_B`f8aj74`*z6i-}Ngb*BR{5zV#5tK<7qwl +lazAHbS4klu?W_+UpmWrDNKP~$W}9-i;fk$2pm<3>>@&?zA41OB0Mjw(6Ty#}wX*0T2~CWTqz&r{wPg +?erby_q<`C)qUo^G!RXABlnE2U+^zkX^t<0b?Bd3s6e~1QY-O00;m!mS#zUGGio<0002c0000j0001R +X>c!Jc4cm4Z*nhabZu-kY-wUIbaG{7VPs)&bY*gLFJE72ZfSI1UoLQYRg66j!Y~Ylcb~!v3rMI3Kw@O +z3f=RPqe#bdW9M-N;+y-7yO9 +KQH0000805+CpNiiqKz7YZd022lP04o3h0B~t=FJE?LZe(wAFKBdaY&C3YVlQ-ZWo2PxVQ_S1a&s?dW +o~n5X)bVi%~aoO+b|G*_g`_S1Z42S`dSF1BrfzJ>9!cw5{yx8xzTD%#*({*vHyKK%SrtsEq$CIMDl%i +y6^7O<+UmyN%F=tHBS-{Wu`|+tF+6eS05b6+v`{jDMv7ErJSl|XH7m5|5oN}N0W#foQM`&S;=W%zFc3)sc&DOa +@xK642|g2Opj3q4faLRK4CS?9o2}u#<2S7JU+S+}(#GgO8&oMrq{MNAAMC=Ju56j9Na6if!9bBr?_DCZ^5)UD`& +}gqBe`fmcOcR&^ow^16P<_^px#n-i9rz7E3^ijBt#;^+wo;W$PtdPhgjOI4O!8glMYorcJukspn`QfWIL&PDE~QZOh|uRc}tScvpCv!CA6+!3x1+KLO|@A4 +kkw_;iYT)@rk{W`pYAA4qOM99<^=QWu(AD=b<08mQ<1QY-O00;m!mS#!hTwf3x0ssJg1^@sk0001RX> +c!Jc4cm4Z*nhabZu-kY-wUIbaG{7VPs)&bY*gLFLPmdE^v9ZR84Q&FbuuxR}ebcfaf1jpob!BfgKhU$ +Oa530zp|?CQH{r}+b2-SSLvkD +2{c;froc=|k5(whSQ#*ml}epBru4Qb3bX^%o%dGm2+OTE->O>m{%M*U?Yz+5jY*4_#`y2T;08P4umGdMTf`0nx)+7E5W +QzgdRqV0US;l*ss<;?+g!0#xY@ces?q)lso;$g?Pqmh*E? +6<(FfYy2n4J)W3b%Wy}sv(GyMSK%z{t$bf0Kczl{~o^MIfkH%cEn-XlTlBq5MJW|vpoPiCcpe{bYkVPr+g?n!4>EfK+e3Co`n@ +T4MZ2(Zxgajj^fK~^U-78f7eQ1nJSdFsJ#}>O#&P)THZON+4?|}nr0yXsSnz`>HaTme>3(uV}i85G$d +lSaGH##zfem91QY-O00;m!mS#yu**9+E1ONa|4FCWw0001RX>c!Jc4cm4Z*nhabZu-kY-wUIbaG{7Vs +&Y3WMy)5FJE72ZfSI1UoLQYomNe6<2Dez^H&VKSkzuP0{U?>;6s`X+69^v*md_(6b3DgZ8ntXawt1#( +f{5VQj%pkaf9R%+ZsMTzV~LR(P(rHxw97YU|a=m4W%n;iv(-uVO1Mjm}&!sS+CJ!72v^C1xa1-h_Lpq +R6j57eu2W}b;$*kDYbBrd(;6z$Fc~6K0<1!@Brayhb_nyo?OkpVgbQ1jxy!WqF@2x9=)~@woHO%N_{( +lYyLIJ+T3cQhUi{<<7$eyksT%kn!(40*i=5r^QpRVW%}hdRb{Z)A|aGD1vu^=wg{#Q=+`E;??r-6JVj!&q#56MUQ$u;bsn6b^3f1Z@KL^H4dIDe;A5y+5M +C5ypHe@8w&Y-iN8&7`CeW4R4Sb{$b(w;bZ+vV`iY52S!fu(43Gnz=Z9IyN--+0L|J>?N&Iycj&4DRk! +H<4y9<82))1F}%WWq<&L79s8H-TbGPLGw8>;Z@cMie9Xq2<8G2*I0G9gw|m19l^}!&P)AMnF +f8sq*Tn>a=EUh&6Z1vxAT0i6*Lw)LVtmeNIRz|&rv-?Qmc`0(N3p#6p>GX?y|r}&8noIYu#iaqof$1WoLAvZ7&mgW)u?Os<6_6FKup3XDm5vE9xZjDu3L*%~I}A!VscD{&^TU!arTUXB|@=})4L+2%}=i!!nv&l{A*fg=mM9 +-DU`GwTlA`;&C;^|6F4iKA;UKV}`Le(`*s4nI3#oaR$EnD`Z}|MVU3>jKZkU789!cs1WGO%!3g^SI8M +E189%!0xUlCkV`7;1plYGOT82!bO~>BU?gEW1iIxFz3$}zJvSQueYBek3*GTAUJ~ZS&U>Bh1`?Pfn1zEg8%ez=JK4s7wz5Q2_4hikhir6`qyoe!LO4&)#(Cpt^)IV5-Da84XV4wc*#UuX0n}dhh(0oA$TLW9~MUk-67@iy6JAkzBy=zEeDPM#FIEqm +UgREB^yfO9KQH0000805+CpNkqz4s&Wnh0CqM204V?f0B~t=FJE?LZe(wAFKBdaY&C3YVlQ-ZWo2S@X +>4R=a&s?YVRL0JaCzMuYi}FJ@wRE7}=Z2(0Tmd7Qz@$v3_yJw0?^WQr& +`?%e^B}Li!P?SJq@@{utJMWz=n`*=E@0YD^8*zWnnwJcY!3$YRKc*-=N7vi#1qS04?sC! +ZJjZihug*rKT#%|Vv_6oM)&3n-(#v8#T?Gp>OU5k>zKG6VhR?UABxn{z_g8i`TLo0+s$Z}B>@Pn5N_k +hC$)Z_n8n5dAEGO+D_3ZZc(W;6TJ=O3O#{R_m%99ooYF!|>_txRdSeXstKJ=x*u(OztLq&`9EE +0IrIWg>?KU4XG_sV(E;(7B)N9&R0$9JP1|tHqG285qYDw$zwxOT6o{g)9lpPI>-Y%-V-MH5i5AP!{T1SQXo`lBhx{ +yMl<)S~LrwUEb1InunX{~<%R^3QYe^__QICwv>-gQ+hP%g;p)Z(kT1jmD920JVf5$pL{7K^up7y+XF; +5vG22};nO0c%pRO{=trB+I;Lfh}GX-k~r+3>)A-0g9q{Ba0oY09s>2fF8JG?tWSD71HsIr(+`(`afQZ +ss(=Nyy1aj{lCDm60OMNJjAsd)(H?MX!t~Q*Q#Hf)o5Tei?{##%}N8mzGC*5g38 +ejkSS5`#UVx8ols{jk2FAS&nZ<&(-Wl`19jv#GV^lv?o6~!h4}wgvuhzBR2K;&d>za7%aV0fMrbac?7 +i)5Xnn6`tx(eo~yqQ-Tq{z@y-sW03Ws&P7lZ=6exO(p+t|`3}y-W!Udk9^GaylkykQlfKg%&Hfs$gVJ +bPkuU)!-B71 +Ps@7s;YTI_D2kcI2n4riU5L;LYMNTL6?0V!v;$r_bD9O^6h6Fz|=8l;aGWiUf?T*2pX}eK8nMd_dTsKj8keyIB^SL{Vf#`EQnm=g@x@X65Dt5JSOW3i9*-^7&)jt9!94 +u6i-mFLM%WhRb|{f26yZ67ghNsWaXN474@1c8=y!a;gLpaUjc52l3Tt@O5z#&;fEg}=BRbm!eMHPYeK +IpGz`dvf#MCKT!|9Piog1e=tYeJ0H&Vfk6l*BZs=NQb?51lp~D|WUVy1m2G#Ruq!HxQIIsW*P;G(bdY +2Tv%ph`e^WA4cDh!DxU&6AYi*OjjX?0oobwkY3iPX?v!1dgCc7rH* +aF_CQe;!qZ*na^iZ{M`az(=!eMFG7nqy3xsQA$G;-YFPr+66#M6|5|9#0?}%Dq#jfSvC +Bnfd3dfG0W#V-IH(`EOd#1|*nPc8`*22NhK(X<%Ve=%97ajsa(%V&&v@@&-KMw=L+qXyWP#RQp@5O#L +%A3$S%zM9ML?8`;XPNyP;jShB>$^s& +fD*)&&PQ*fq*Yg8qHR>RlmAeZG(i>);uj&1nuk5r3T6CEvM{jbJ83cb`drb&QoASy +hp-%3Y177kpyEXZyLVpvA?vBhRgR9=v4OOLHhc!csSFc_?P>10_Rj?1>uyn&df*w!8JcrsuaR8#F6?hxpHyW05d{4B1rF#R(q%(Gxct9M(pbKiQC^=d +SzIg2%GIsLpj~F?wdIzXy{>pLSOQfDo*_&4cFC`GIOm*q9KKCQAq6|o +W;%gjddQoDL35W(e=ZLwRSl*>yX`fV}q()pV5z6@2WTLXnMwlzBlW+g9oQCb7}VpQsj2RJQC-e;IWpj +#e0>PFt>kD_80J-go*s~fzPN>al(7aovrDknmySp(RUjWhE$j)TB2RyZjF{h%gr1`6{Y$v2p+w=qE>21d6-14u7y1~wUTE4}?{y754+P*rm8pmUc)VCu4g5CcUe#c*hXAd#s1;y +PIb<1P(JyVEF;$CPE@e*nfGb=-v{DP7`%|A_2y_4{r@r5%c04OBq1;?fV*Fv9oh5+iF +_aF+vw1n6P8#0LWTn7z6*esItBl9(1><#A-moSEO3V8RVttPE3cx7eV08{543%t}7-{Sf^(JDQHo)3f +@c01pIlI8pD%j=RD`WEw}P6WY_L-i9J?0=8-EhL(4ph^*{IrTPT}^1?TG!5{!9Mw&grm}7}hP4o%U-E%iZtK;Z(F`0B~Y=Uht-nm<^i_0F@50gE;nJdZI&5 +bDpB&k3DLsLP{kq +?DHU^B@1T7=5gJYx3QJR?5RXv{cY~pY#+&Py$jgO}w9wwUy*-PCfUaUp_o^C2iFKzJv4nl$R&|6_bQr +OxyG=(XX#noMM(bc>QBIeRR!^~D<(-N=QZ8{+#cf-=9U++`%3X9k%F>`mEhczM5BzndSmk7lA_@!)sw +7JMR7LMq_^_Q4U+t-#*?60ml_HldgOjpoZN7h$cqVzy7YUs}?L&I(MUd~+1?ajk*WnXAPZr0r%d|y@W +xY=hE-G)MeSX`v`6B1rZ(S0rM;%4$G65ucHX~k=Y`BK7u^E)Bv_< +&kmYQ`MefNch-bD#5R`SkVPJ0)9q6ftcnsGT(17a;)7J>Op4w(|{}u~0!*-daGNUDtTKN0g!6BhnJc* +ZO{kyy@Y_N>2fG7yuO#-50?MNRLdJ|d}`V#Dwn~Ms=H<}jIrdv#N!(Q~kb1s7h2Cc{-n2&>)H%<3DCi +|2<>`mF@E%$DUFSjER^=&YUZqzISLNDXS!k#Nwa~a-iLIi+R8j!o?j*j6P()iru@yoW%snl^JQT7;uB +XXB!ow(7f7L+;Ko6U_>rBFC8VkWNe6*~Dj2e-;skYf$z3;L{p=!nu#t?5CcZxtn0$!yC=r#q-*`|EKq +Z;4YQ6J!o-h>R`GO)6CP+S;lFZD39G$#c6?(T_Y7q`Mv;!79m2!9mX +=YlJDS+=cZlKB$Q4<|$a0{jhfE5RWSsl(b72f`g#%EH$YCFja)M5Jl+Ieab>@Og+tD64z@orLCM;a>U?JA +cE(wWlvJAQJk`tP}RlX^Ksn2DLd2#fV1qIr6yei0hD@o_PBkhV9x|46!Pi=z-?0G;nf{ +Kuok0`lC^LgU{;j=CBBaMB;X)1Sut)uYKI8K4Nk7cRB|}F+Na6fE{Fmfls%4ke9g^9bZu9=xfnH)RsSsX7BK-Ut$iroull6Ib$ +0kvC9d#KD3}2kWK8c#?yqOn>C~zr`=p2mGvfkLHsn=d&;82|MBUlLBRh4P)h>@6aWAK2mm&gW=RO@F8 +JFA004s`001Ze003}la4%nWWo~3|axZ9fZEQ7cX<{#Qa%E*=b!lv5WpZ;bWN&RQaCyxdYj4{&@VkEnt +00KHDMHte!CW9s(yiE%6sFWw#RC9j*hM61=hBu#F<*;5P&;T_FJwo3v64GSVBcIZMBhCl=4=E>T7}pq0IVL +bD0F$3;sVCUlL!TcjZ}5_fRC1?@O+QXotj0rT@-eI!3?n!2$dNx{e%SI7)Xu+C9GRHQkrvsQk~8iF}F +)@PHl%)N9{c@Ur`KSv+|U0n%+*MKFKT!j^+nlu9Jhiu>|U+A4pQ4-D-GG~YE+EX6$#WWT6*hy|ZPVyg +lhdRfk<+_8ohsa6se>nt*GJOIw&WIqY!4iQvxakfjz=DTQO@ +b0n>)E;26$2eC$s<>6bIfs~mfw+e-H?S8*Or6>!Y*-75EfR91=;z?e+@2U$Fqo=pt0a?%Q&3Qq~Lexp +qd0(uX+^Q!7d40?e)djKw*(h6ZF`AsXbPP+mqKDnk1>zM9-N=ay(qI+4rzT-iX46`-=pX#g1_?n57%RB>c<}Uv6E=S}?K$z^1(^X!ao=fb@z3$etKPP7_eCL`HIu^3^2;B}{6?L6FA)1cmD8Y$?vz-C`|V(#zvXUD| +L~o-^;FVmKewb#frF(4!SkOVJ_P6{AkwfMFX+UCzOObmQNBPE-qHI@8$QrkWbpI_^wUQ-MFP +hTnStpaHoA=+;Nh&HasN36-+!hCA$>)U9x^(pLArgN2e><9Ukij-%eiU?c}w+-z!q17JjEzs +3*E(p97hPenY3LQ6+o?nGnPmEpb%Blbn?fDiW~ +slxtM=fGp{9?3Y#e3$#Ohkiaj`Q-@VqNpFbZnKg_G-h3)4}?$+X1ybQf{_p-N_1_v^m5jFu#!Yp0%Ij +Y5jzM}rlV8`xrCF9L$<>iByJX}e`SBSJo|mQy0|<&ll3eeJRuzku%%w};()n^8JQO%T=<4@)Rl_u6O1 +W&ub^|;?f&1mJk-i$-tn~tRmpc~Dn0jke3OScQBz7FBU?82o@R_`YC5*}-8!vuac5qSGmJTmTFTtJ=n +Q{)dGh7_>|(iE{_*il>Thgc6CaKk?4AvA&Z8H)B%jHO|-v5?-L)O1N5CTLt-h-TgtqoDKbQM1bz!bPKn@Q7iJY=<6$y)e4X$oUEZ)0$Ub#(7$JC3)z{|Cmh7-L~nS8?-)R%trE6Cw}WSB1NsTy7|Io_KnatukQU9 +V!--C#2<>I@ft2hz{>>E5%nV`yD@S8PtjoUTnjo@pwp8>k@T;C$A623I}+SKem}kvk6tZ;m^6M&F}1b +NiLJ)0Zo-1$twx3-P+yISAHI*7_-!@AZIFC`n*lCJju(1=VXqQ>x90zE)BCXHBcPxmUaTEwC`N9LCM| +&=Tr>obeVHs3aI%kk_J*LRkHZ;?=DC$;7$*28Q+hxFWWGRxzLb3s6e~1QY-O00;m!mS#zzeV6bv3IG7 +yF#rH60001RX>c!Jc4cm4Z*nhabZu-kY-wUIbaG{7Vs&Y3WMy)5FJ*LcWo0gKdF>n9ZrjN9U0*TFzzC +J4*=!zzm4S^fg@LYPWE~)d;tFGNB(tSRfirUKZu9Rwb0cSlhZN;a`qCv5TO!Z>HfPSztGe2d#bUJ+yP +7Q)B;RbSS`d22t70eELVr(4mOtb?ugZk%%6wU6Y*FNb)wJM~7i9ZXpF +_?Cif7G$v#dC@%IRN1az7j!AA`pNv7OaxsoYPM#NTQUO~f$V0R7c7o`kLUmRdi!enHBMhmqv>Qa$=Hg +lnK-|x8GEDvi`%Yg@ez1Sh_X|+)w!Js}`YM#Uqo*Rc}Mqw~D0k!d>hsO78n5y?4`>c8#qQ*ueTn;p2!Rgur5d$B2^+r%-1htD7qMoi(iGDxgUypc1j!5j7 +NPhI)Su-eqWs4gq$C@5fU^S--rEBkiR6=NTBOv>NoB=Vx2z$ +)A$jh|@N>+KzMF9Tk(WF|^hX=I*aOQ8I6wBW~-A=nT1 ++6p=F+jvib)z!4Rxe6gHz$Z3uLTj<#zGRr1`>m(P3_(rgKe4b#$Q0jitAJBcy#_2TP%i_6X|NZsDqys +m!9PgTni>qg2e{K(cfd@nXgqP2~-QrcTf3gRSMfl1jD;MJq1b&%M;c-lYj7`T)<@+F}9>Z& +VfUS{kO2z4vTG*!=HgV!UDFTQ3TD@4urnOf9rQ$4UljjXZu8rcCGC7$Zf5F_6}$QbD|Drn-_9_ztnn^ +lPz2{E*e0&KWK14q2{A;An)HQG}L72J!%i6 +rLadbel>#Bb07nM=0LH;>u$SOjpl4Z5jEUZ`m?m|Bz%1wj-sbh~BpGN{A43Z9xsw8fZxxmNd)0%sqkZDH;Th(W2ObT%V8D!P6ck*g +*)S}r33qz4#}5MY1=2-HZ)7O#^-Jof83CUl!&QM%V{?ySj9qRjkec+w;jptJS)$W0a8LBFSoswrQ+lf +yc>m4Swj(4w#{VGjLaRZ5(I(wACxKsCBZ49%Xb4obZL^{C|xn2z3RD$jNr{e}eI;-lWzncR{B5@FMQr +rHwA!1MZ9wcOd!Z^llCS;Jb +l&l(=pZ)^>RcW4dA|DH9hIEg15niOLaVr1Au(0}~({OV@$;r;uY2<3KB)Aje_dhy|xzse7mvm^-ZfcT +BoIW6*kv%1;Ex0LG#q|$MVVdwk?FHzlQDQ2(n-41NaWgF6hM}n>+Y|GP@b|=j03TSl3{ocrO<`oyT8^ +E)8O4_+c5Yj#4DkswhNcOdqZD95=9YC%h>~J88T6M`0Cy|_+$sZ^1gdFvDzxs;ZLW`F3LndyHRIW@XY +LMq~3dpJrX6QvfSGpV>ZZ9&EJQ2D9I;<^o=>F%3e~#pTrNK+`lDs0Z4sh}#c{5Es(ul1*wV;LF&z$Da +KFMYHysoP{j%-=bQ>`T}CH_5q&^u~e-)@rW)*nKOmYEuA`Fnz%_&z|Gc5e~wcP)M-I_P2W#Lqt*AIk_ +oK0a~Wp}jHa2s~h+=F0uMGoE&&OxmMwaPnu=I??&#Rvo3=WA}ut!5l|CA!c^1ws{U!H(uadcOS$zR4n +i12C+HMPSq`s$^`Sd#qFKUCc1_EveM@dID>pA|lmo&rzw +uJI%>;QM$t3OC_2A%yw2x>+sCYE9c+jf*l{KyNN%TzTKg}C={(7oFDeF^b<#AkBle%ZI!xQA4G7rO7e +xLLRvdDEFw>B(*z_E-xabdL(f_KpMn9X5#^snW5p5|DCK>ThRXJB~M-pXhTLrT?t*GOi!oM!M1w)3(r +Zh7r7fwJUd=WycQ`_`&yvG&E~X6Ap`X)BVczIv3_BOD(%xPEaV(yxbEl+ow0K$P0OVJZs;^N-xV*1-q +RK^(3B-Yw5dsD%YP~x$4S0#KzTXdExasAo-0tec +9$8aogk%2NixYcXJO8g@4fDgIzLNFYi=Qt?DcdJ)GquE=XRU6XX{g4|X~LVvt>@zeWz2X?62Uog$W2JwKl#p_9&$z|Vq ++-*q0c0^AU-8Y=oX^?Z{pytF*S56h#Su?710pwmcd@ggnficosnDZb7m%2RI$EI4e&5W6fhAix~v;oY +$H?Rla&i1;WU<|4!r+5cstll#?^~uU(7du8qCbkeI_62h!LY!H(H|!4-;@ +}Ssrj!2yP)h>@6aWAK2mm&gW=Y!qO3-W#002=p001ul003}la4%nWWo~3|axZ9fZEQ7cX<{#Qa%E*=b +!lv5WpZ;bWpr|7WnXM~ZEP-ZdA%EJZ`(%lyMD!%h9RnzSvOw}$W;Ln+qniv(;#uKSGYc6O|C4~6shBq +c67b`_nX-lcb7~0f!qmbBa`#qnc11yRTM=(*LhbmvaTD#yWOsC+M>E9?S_%^^R`S_+c5ZATs5@WC*&N +S7dfM3!y5R;Nn4YSGeSApcG+fDuLWvF+v3)s;oDu!d2v;;CAllwP2IJChK$w?y)J!b-MfRXeNbmI0p)ZOK)`=nc7I?HywkX#j$9#-&tweOGZ1jR+AyvO*!<0YzF>bqff)hH<1x%hE_hP( +%J#!gnky)06NgSK3qnF^i&THd{Afvou|IZP&0g +CB+uklF%z&mtD(J`S+6K#cjchx>}O1DzZ9fX<4+ap(URkklh}nZlC7`r=Z;mlx$hnviyi<8RL95Q&jI +HXRiNlnEuB1T*;DX5w2j7)T1P;E8bExl6vXuqTuvv1Mkt4ZV84KU(&0tD09|uA3ZI=0~q+Rk=$}>jXe +W_yRtmTXDf2vbZpkr>$G9l?DGzuGz`Sv?!Zgq=+F4#pIfAD+neh@?jiNo= +1xWr~!|xq?{92`wrio1AJUx{Q>4(Jf9KxChQuZcaqH$ZceUmE;{2*Y0a +KK#nk@G^M!b|zn>DekMsq9 +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 +$yxA#5LJjS7Or9igASgr&$(_< +D$XGteK>K0qBp3}oH(hTZl;!-bCF0wzLFyNcZ^J8rUu3G@OX&!9sUqq$!%^fPBKh8UjKjG8*2B(zwQ? +WYC&(%Wu=^B23t;a}rG>W4^6MVm~fja8B=$B9pDLPV?A$&YU);X#8ilO}Id;1b`8oNrS_W_2YVLLHa+BlKwihkI_X&ohuv+PwqCN<)B>^y(*_Hy~>yDRH{Y&m29J&Wxg9wlOXg^`}25C-!QjW)Q4Xz4w+oWg2#^3 +-`~`Hx3#GFBO53jZ>(|KGH>p^fI?Sa%pHfi~WeA~?sRAI6oObLgG$Y{akQ<=7eNeo*~Ko8Fm)-=Dfeb +3|*3uT{Shj26eN>N}_)NP)h>@6aWAK2mm&gW=TyWn82b0002u9001Ze003}la4%nWWo~3 +|axZ9fZEQ7cX<{#Qa%E+AVQgzv$p5}Oen=-vmXox65y`vz-3RZE)LNH0OOo~8?6pV|Ci7jX4deG!srE)BZara{e3X?eiw +WBoGA%QaC~1V|s*0jDVtmcjG=r}PSOSY9Os8pCRE8I(3dDlvqT2CPR1@}C%50%TE`UB^cK2e-HBSK@u +#p=A8&Mzw~m}t6I#i9L0M +Hr1-Zte(~n_IEs!!iwyDfb193_5oH`jQL1=Vu_gke^8T|(&3I;Gmx(pxj4Y%{l2Ikpdcq8_dMXawoZ= +p+!B0fxK#7+l5}M0OfIH?Y-??-U*+T15H=+WUUSD2qsIY+aE!cmtIqXC{WAO)}C0FuaVIlBjGj2FgK< +rVqyX=p(5~8@8vSfl<>P#RT(XJ-I5I4O013Ny`3phjI0LsGsC%q8sE`0L4m&fAm`TBMT!M +wpN@@pN=}%s&zP^}W?S1&OrEuDcALXi_ZsX3TV-N3zBT|>n4D}{=2%1hhug`o3&&0H@I&CTGDTjJxf8 +bA-z%A3WplWSU|Ah1BXYkSQg-REUY^ZCA#j9g4_B}QxWcqmfkv7G@ng8`kol-T60m*oP?TSafCd-b3M +9LTw8Pyv8OzO35$It*HNy3k)_=i|nkl*BHp1ZbdMON-sv`Eh?AijDw-O4&cI$6JSwdg=AmNCL&9}h3= +g|4BXRk&%b%{e@12zM=b_uBZ$l9bLJm3>uY+Y(*$_KDV`aHLHN)6bRXiTtj0~-AsvkTF +CXy;uW-ID8`9$00 +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 +LEKm4-0yKf&KpN6QkF1iusx}6u!O6%mmFmrR| +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 +=)g}pC_!F;7PY7NuEdW!{=77VK5%A?WP!M0X<- +wc)scYr>uT63XC3@s#N8Ma@nW&Rikpov0NLg$Pu`ATXy+r{Ey3We)}rP`b8=9!WTtCZ_hY<|9FOiaMf +$a8;xvBG#N;IH%EYo&`nxBQ&a9{aS|hmDFs_?D?B1ER7fsPRI_DZ-WBK3Y +S4z(RCQZwF?Bq^3m4w#pwj6f90rfWD7;W+i)i!F9l@B6ALytSz5wS55f60NFr9O9&#)C9tO&d9iUVvS +gSmI3lgLASds%{bSA&!84oybgi@43E>Mj$bOlFN|w9MQycdz~Cncdpw?)|;Q3Nm(6!hbGQe5@9 +xouG*$+pb0CGPR+24dVD+Y$*AX6X*QicCe=%zMRg>^i%j$2s}?@A;$I_ct~#_ojyq`Z$ +s|ivPa)r%%5x>eo*Eq$BM$(>-=aPax}UxMO*II(T_Oro52xgTLQ1+@cii7orVBKLZ*y` +Wuuef{ih75@TIO9KQH0000805+CpNs%K7**yaQ05}Q&04D$d0B~t=FJE?LZe(wAFKlmPYi4O|WiNAiZ +ER_7Yiw_0Yi4O|WiD`el~!AC(=Zf%&#yRS8YH5GjmJp^fy4w7FeE1NfKcS5C#zLAF1AC-zsJW;+~(3w +v#Qo{&gDDbxww^*TgdaOF^$4J2fp1&Wq=i0ipF5>pQETdm%85>zQri2NImPdk}tB{d|(EpwYa30PV +GtH)&=iBd4;$%0|pvrMm&xN^Ug?b0%6 +5H58LmlJLdF1kQ1S^bVzhpmQM8Xyt?g>~iZbZ>(RtXDambvE4lqaaS$WA!SWzlE!tLDdJ7F9WV92<+E +X##D+!r3-u3I=fx$jB-*)!Aqdb5G&kd1D!#J`enp6*laiW57<#9hyGh(_V9&Ur8A&tKPlfobsp*P+{4^F^1 +3ppRC732xdQ$OpCi>+A99$kre5r|K<`2Qw*wgVniqIua3&dU0C*(C;U!9#TSK0Nbn`T2C_mFN%Dr471 +KkMImzZz0#`M@?jL5;)&zI`=${yUY_D?(?2pQVhh-5rtx4{!AYS5B_gL??H6 +`9|}t&*(qAs;t6MVmNoTZlpPJOz`-HF5euHIaEo&Nh@Im|=1nD!*czvchJaO}YMqmZ<#Og~3xEo%w{e +JO@_Qc1jlX=kHX5Ekch|=N+-X|>15ir?1QY-O00;m!mS#yjDOkpd0RRBd0ssIa0001RX>c!Jc4cm4Z* +nhiVPk7yXK8L{FJE6_VsCYHUtcb8d391vYveEtz2{eml-|-zTb5E57Peo9g|aM6>7^{jlPD9hj%94Qk +bl3nleBYb4so8WCq2FB3|>YGFpxn=XCJizLmk?HJw)512N@9r{S<(Q0`8pd(($~cHSmf)5ZmeuuG`B7 +wCzjU{r+*wX6WVIRuaK>l7&`EX=4)e2fS5~o?0m(F{xPHWDw#sX+Li;dfGnUmsvNcqm1k`+Un +qxL~hrslN;>V&7O{<6vE%EV{Mz1)XCL<`bhRzS0@Vc%>#RcC}c}fv1@T*g>Zd&_3a|PZs0uBa1NictN&0-0|XQR000O8HkM{dfp(V47y$qP0RjL3 +ApigXaA|NaUv_0~WN&gWaA9L>VP|P>XD?r0X>MtBUtcb8c}yVrp03-QFcwhI8pXOe5t&F7&?kmKtbqHoDaD*15*TRha +!d1TJUiq7I5F0LJ_p88|eMn&%qj)*e9t2sgpUV5?X8BHx>CK+!&~<+C@fUYnxhkG+o&LjG_`_&7kG_O +)7GU(eXuvcnPz=;tG59&-zi;npcE%z +1yD-^1QY-O00;m!mS#!jX-ebE0RRA80{{RZ0001RX>c!Jc4cm4Z*nhiVPk7yXK8L{FJEJCZE#_9E^v8 +uQcY_cF%Z4$R}A(cb`eW(F2&$Oo8(XkrQlL1rHIMyY%QXdHqxxqrS!jdBsnH2tuB&g-h1=8gwF??ptp +`d?ruT{&bH(ebujskBJhELDGmujUq0_fY~{MEFb!WQCL6q3!lt>@fW9lR_xqb?OaptOV!Zosefx2Ldk +W}_Er!5VTQZ0=hGaR!S@il4p$)_6hzUAkv@SKOk6{2~`iZAV#(*8h5E<}31vfF7`q$9eqs@tF7^C$p1 +mAK_RGk=UPD-gyUpKJJ@8(zwG1m9t+vRuI?O-GBtN**NRL;`j1HIjX505C?JqTs1Ku%%_{KN1(QpzG6 +wIY}3pWb^+R83m4>Zpe&%Lg+^*{#ErR{5pjO~I|J#A2~1_jM$c7GV*A0xxW_ocYZw#K#22b +9Q=p%tLyx&p+cF-Jv@O_r+HxXSt3A +o(u-I~5#=p|9YOi~8>P0@eYsPqbGG^7fq`~7L8=5!El)lMUynyEuN!G|0$yG(4f$D`nPpNs9KF8N^!I +YN?<7|rMLc?mU;n(lA`U6l)0|XQR000O8HkM{d`u(I5a{&MVhy?%uBme*aaA|NaUv_0~WN&gWaA9L>V +P|P>XD?rKbaHiLbairNb1ras-IG0UgD?<=cmIl0vw%cV)v;2Cexy>QC`+QQmIDX4GB&l3Ncs0Q5Sj#( +qIBp`FUG!m&M)WJGuRZ;K_(S~pVL|>P%=U7FojyDXn_g@LR&g8S-W_uMB=AqmlnZ0S|^QWGq{iMA`m) +l)1KF_eNGH(#CCJJc$u%(^TUC<-Lu9}SKBMFSQ#hD*uAfp84HOiD}{uRA_=Kn%ra|A;5@6Tw#YfivND +!HY@JaxA@9}^q;e-4VG&eTYVv?is1eFoqJ(p>(3#Yd_JP@cU_#*oW8g=MnJ@2!Sk427D)Rw242%9y4L +3b{bBYwg6&H~v7&Jw@cz6mbI$#kP-w`{e--L2_hTzo*eoi62UD}b*2?lLO1WkI(dD}0}&qV7<1=`>1R +VDMuK5T4#_D}hwh#{ddzj#M0%mv9E_P5Je{{@dnw}jsY8s`7PNVk9Oq+vg%jWi_wgO5g!W7Q` +9W?Zachblwi3uww*7_6Z@16JL;uun~uNnpOS@8VueG~cFd +lJu6=1>;F`-(;YAePcxkCj|b^VUaGs<+PECyL!K%qOGKeiI5=7&85sxME$a?i+B>ffd0QJXJ`DBaj^P +7IBT1j{L1)U#*3Kzvt^PNmx|yENS%~$rf}GqASZ;pCN=vbGb$!2+B}mMR12BP`-TbwAsU*On-UJ*0$t +jbm>k!)SydL@%49N0)2yoCsODs)OcWTH(~N(mJcvo~JNVkBtZDHPdGk`R+FM@MwG +T8uE&~gvv;CqEzkl5}(|%MqPk#8~?!_>SV8NlAANoGpQcjNBptxGQiz1*4*#!U467I)hR^A;Z9cPY6P4*dMS4 +HLoe^U-YcOXC$HDN&%c}Q5Mt$2t~y?hJB$vv4V!|`U}k^Fjw0kCEV$xVYYifkUKU__;`g6V +MqJoziOb3Nih!Hhu7Fj7MSVA6Sd_z0I8R2nsR=NV0$*wCJqPbi<9j5848#$yv?>|jv8i4x2)YZEudDi?Txvmx$$BPdqOE +^j$HBZ8zw3blL51~utl^`PDErgBBX>%{P0ODh~kONwHL>?iHziA;XJ;jI9ie`e2?mdOKgA@t3ZgdZl3 +0$iYX+{VFY-$nRbtd*yVj{6i7|^IeEWa?T6w_USan4x(PZs-epu*OCntX&( +zjwG6Gdg6%#q@Ba$&~azkY(S4V5uh5r!-zN_WMe5xJ04eyli +x9bxusVaOci-=Z5m7?59xVBW4yNPKAfGMD1AU?sIIN}j0dhP7pSm}s^5vru7f)MygUUkRXc_b<{Q$R? +M;t*5xI!Z2@Myr>V-ZzUtBCdX`#a)O0Y=bRERK|TsT{izh(I?|8i0cfT{#a4PL&rqqdcc6*4`9y3AO;C{t+fUmK*51pnQ^9om0E +#_YC`qbTvx2j8wx^Vqawlt#vI{3A#taKv+q2j!$*X8|t4J+B7cY{4?+BFv$EAE6rYH3mR5X2*%n8Vy| +bg<mJ}d>5_XG_Gzl^>#O}6~>!#8L0E +|*%kpVwbXj$)Sg_A)2uPfIa(mArf%W9~czm|<5r#ew8`cBlgi$pMu2}lLQdK;o1QE8^8tQ91TurjxW? +`y(ZiPdmo&o>;g7RnTPmswY*}HFP)-#D~PJ +WBi(dXKAn7q1PEbdIB2_IP(;;#We|%FRZLX#imE{z12ks1Gr-YG+c=S%VHw_xz`xXVS}3s;uBK{wkH@6GXzuXX5;<{5OyXrMCJ}Mw_qOBexe +vMtw!;N)W=2Ry=X5v6B7qD(awzeHF_$!8E5LhX-4W11iCf&Q!5lFWiWo^R#~1}Yg{Z!6j+ct>75FkdCKMkCYVu&=k7@Lvdj0E! +k2)rG@Iq+s_9NrAq9B{od4&CcAobLGWBhx|$#UI~|a~hv)?Gy0<#-w0A?9xz=-Bj +0n9(i^)Zz}!XH@$)n|MZmHWGRfYV=b$0pA)raW+jHQ6Ebxn=zmqi?^c6AN;$`m0Km$AT{2S6bo~_*#R +lOZ@IgPPim|S?*bAjLRhrg`CKbzP>OVxDU)Fxc(&dl;jmZcUz4R-^pv&?M_-DRZ81_nO_p`;w*9luqm +{WD4;~Z;Vhk6hMO9Kooxt1#FGvkG3j!pD6V{kufqP`T`imtvawux`!)=N!#MZfQ7>0t;ln|2RN9X`2F%(k%ohdp@>TKYDH!j}eY0{{v7<0|XQR000O8HkM{dt`V +Q}cLo3e=MVq@B>(^baA|NaUv_0~WN&gWaA9L>VP|P>XD@PPadl~OWo>0{baO6nd6idLbK5o$e&?@1>4 +%UbhU0e9nT%4`VPq!NL{~{UM;(^~i;#_!A{YSj(Io%93xK3RiOHmXut@Cgwccm+Qb!xo@7gbT__=Lr209tQ}Qxn_Hjo;5rnN(s@2lkq5?rE#sW +)MuPAX|TZpPAVp-Wc&f}){LVS+f)US1m#3xT8PkDbGAWQw%*DuCs~H*rea(od?i@1l_WFo0m|tuRfYw +q;jT6T}SF{SVTT{)}WQvC?B+;xZ2qkk{5PYq@7#YE&EXynE~{&S#_Ld9)mBIqkXoI16 +3h8K1?o<@n`TC3);ydhv${BD^<9g +^dmCu2C#x5eX+F8)TBgGavSLK%a=c`^Z_2N4(`U<7atk!F)|s-j{5JNB3;4-BbRnJSPr-Gla)dKQ`rK +$CRP4_$#{0VX(a;v|ItWl(reo*cKfwih7GxH`z7yaFiG5cprrp>KXsFXLCUc@mGJH1=DdN&G4ry>Ef` +ZrKmRwRrQH3iqCwf1|FtmU|k_-djnvL3-n8G5CSLbUl9`87)(Ny-uLEVX)*MF^m&=@)8$WiN*L7UZmdz4vJ&j)3ub%Q30u&+pGWM7-<>z=p(j~gXWP%r|A_6bZBFsg-5<3 +*fA%egYG?MO8djt;m6_AuE+GMb%btxzYt*2Oan`hs@_)Q#`q(@o_pOX5Gz$4NYe_5r*fwDY>%9NcMjo +xMHuUG?k^0lEun?F#^LsCKYhBHFoU4?K4Dk*wry*e%RpwufBkXktUTrZC$(L(ph|`3Un4W|bQ55|S&n +s~a`qRX2sVb{K0k@YO7IrgMcT!BmjGnT%KoTCZ?kJUoWAZ9_T}*jk#b8LJ+S&~kn@AEFU1(Vbc}1&r$ +(0(&7xf^FbI8!ccDEMfmE0r!ro!>;$IHJJGuuR#{wusf79g$n=W4VI_qOuv={P#_9g8NLQo_*I)|rh< +^cF4{rU3$Qi=!gNOpy-lgZTeJ9{qPGAJ`zPBPn0h-p?Q^h%*g)w1HS4g_w~McSJvDL3$r^TCT2h&1o* +>0Ku-(l}EbD^MM)HSYr;!4;ng+Wf3-tzP8miZW)k+h+uI{a_%4f2tLDfRvdUnvz-SOd47S!7%QEME6_ +ryP`;U&HW8{L>K5U4z0lz@e%D^^$^wS +&@LS9?R+4VaO~+8Zk4PP{x`kjdp+b6o6a1P_p`(jSzYEf~BQ-s&j{^I3%B)^CC>=4Tc*>Ie|M|=t6zyw4i_;yw}se01Vi2Y_4w{9Q)?>m)sL_ptvP +)h>@6aWAK2mm&gW=VWSgN%MmPb8uy2X=Z6}k+T}ka0f$CjOG0H>ux-zfx%Fe;#_v +KVU;a$252-I{X#d;I!wM>Xs+&YiRaLATd7;0LlUaV9BVyxZRp(^`9m=dhL=Rk#%>GL6s;W@-K +@L;)9@O$ckDOj0N}{pjss^CXFPiO2s&TT(o5jTvP|XUVl<9G;DP(&Xf{l}}(9UVA9yfMs_EZl){Foh0`eKYgk@-Iku}g|QO)T2OkToz!Q+dIp_0 +X=L7z_nKi^7N&{7dkKx1TuS}IvK0$0s(h(iq+^-3BXQsQF=%FJ~tJs{W8vTzF{ZxEx@Luil5EQDI@Hy +e>)+vFM-j~IH#B<_oa{D;8-mI9_#--*f;I9iIbr3!FvvRO#%oB(bmNFvGmrV3DWz%;4=td@!V2k47?V +_nMM7He$27v`(FT7eeWI^1FSS^_Fcs(qF|KoNRBwcQhe6Wc6cVuX_@ifRKYce*A1Xc^f~Cx$CSCsncm +jn#|kSTkS`!tZ4B>tnlvC$b9UGcPTwpnI2NK84BKs_eu4ONquQF9FM33-=rZy(A!L(hO|C7Bv}}9C-R +rOu=r!a4nv-m=Mq>P3LvBUJVC!`h!u5c7HV-j +r$uLvma~AhCWQ*0YKSRXr7rc7ENTCTs54k!4%jVm1d{;PAsUK;XmkkE0WZg$GBEctLD^aRI-TVhQHPUnE!!J$L^x;MrN +A9j=ST3()%TtR>1(%Ss-MxW{0C;LBl8#~nrfNHeRqRdb5Y`w~pHoVixAFajOH-NPZkJ`Ob`C70xho}B*5X}ZG&`GclAY5J&-rgPai<6ud<>T +)_X6HQ}V4D?$LD=8_+)p2c-9MIhxh7%=@^Y)=4i(361Cw1X+1zEmgw>HAn3eBYSTiwuNQgP +`i{se97FV*V2eC$y(evzQ_ft0T|?+T`}lJXttIyW-Xh}{`A<^2tuVB(Jc%O*+)AziA*Nt&kF6KtS~73 +~-G#cz)(!1A|Ms`R^YnOt9w76PPA1O>%*VoUt-=ZfjL|tlw~b`mZM9xuhyyoh9(h8~lmXL}9UD-yiiF +m{@qmCkTw;?9e$f1qEU&Y5-Y{TAHP17>5rE-b+y%EUoQXYc53@^i#W<9lakB@qU7~99FQQPA6Xtc+fD +a80`>dj^h}Leo0vuqKW}Iw2f!E{hq+#l#T7KBtgVA +nj-8Esd@=xN#V;27?zqt8@g*I*i&${H|Whj~>lIA1%Rz0)Ywh26k1~xc4avS_9HG$_5+V&I{KV#uDWg +Hen1LZNA8jAL~idlax)cZuzR+$pw;+=3;iy+K;GQ`Rl+~(pPgnuyJy9bhR0E9fZT=6im&!?&EqLnFaa +TND~ABRZgk~HAw^B!EF+Ng-Y!&~6hTJLoys|EvCDavUP +#>dgjy*@vFUH(doUWEx79{RAYj$6rIoFj7A^_@ZE3N`zFO0b&A8koft+bc99z)?st`GdWSTYUJ2vGMA +by)A>yFvmC +9!wg(`sSro?c1yS +W5FFcWCMWsmOz~uuoN>ewJQWkAlVk-)v^+G};p~)i9>MwzI0tR_N@$o@Rx +WOZO45D+M%(L%H>O*l>^TIb6U44;%F5JqPXb)x*X;dFW&xIL(L8@`3Z)Ip6_ +}Rs;R=+P$=+4==4qeC876>82Jdg>M|P_+%w#d!W}9M6Y#R482WP@bI#qC{U&|W*Jh=@FGJK +yfCDCh$hp%Fu{dc%?nPKL$*(R;xCeNJ=9vCXAGO%&+`u`C0E4|LHop;>J-lEHut|Ts>hETr71e_+2PTxnCq62_CUG{SZ78@KaLhT3R +427Q0IPT)~?sUk+yQne|V?^g +?=}?<>FK3whw3`76n_S}N0tl}t#~*>z;$R#sTxjSjOWNzBH1sVpNa@H27A!bTRJoXt{(7+2ieJBq4Eo +~i`00P0KY28I#RrwEisg3gM>mB&?^FHj=!jaIy+;gs_$V=3`QAP>&eMzc>3J7hf+=pNx7lr--HKwhfG +@HUw*V0TUFUMs-4x#ik*3n6)+kD?_At@Jy$0t_r?gu`OOA%N_##p3DMgckKQ`!j#wDlEZ?yDr#%(hbsa8E|{H!lX(~TLm#MmPwbC`V5 +IwLOkViGdA>&dT00sap9EYrMnXYx-b;Bf5 +8B$JaU{p%>&FuB}>V$Mno2rBu!!9*$0))qh}r34FtJI~4_=YdJr8J}Bh;FM?2elY60-P% +()0{a!{Y3j^>$pbE9YSHR_j{UsEoGWPzq&AaI<7TPKauuAs#E-i)lQv+oHVaSkz3yT;or&b;1^NU{a+9h?)Q!UZ&v1aV9E|Qv@|us|7YH*Ljp7L(C +opOS4u}qXc3b*dbaeLO>9cdD^B5Ih&t}Z2KwPy@H2Um^EXiNSjJ%Grg|vNw#622xPTLJ5hdEH+jD}tL +MJjcs5bHnb^w(I}gLU^%EBnUSNeD=ktYf54=g@hja#lFXS?A03#3K;UB?S_ibp<*F(cr`6R7($?Jg6> +1U|b}O_-L0gx^MH6EH?hk>6Nb5(<0AC0S@nwmGq4zJROOd%_+LBjY)F@QjMfssg}u_uGtB?3I^cvCV) +4?s5mAan~jtuc-Fyg(}WqgWJl*?PO?W>9vJ%hIR!SqmCNc{U&{kKlNU%d*naoUkkiP*7l5wTedpo4zd@t9Cfi7n5S7oQ(m|=8B!F-ep$lVWQq3RT6&*oWO +sI*oKDb?R>7_g8SCISTX7?%4M|OvVH9(E5OyPFQlg6G`yh7n@I&rjBsXJ+SzMdFx+>$bAyo5rOj#E8B +eT*kz^g#Gtjqo2tGded76|`gWl`>E~YU7E?fEA+sxls-)Z{TA)*LhWhw$M?PP1YqkLU>OPNYFWr7Mu%!U-vt1{GB^UX`)UzS#mOrrXIt@!tG701+!r}cM+{)msw)Z#<}fU&<3n3^=(8Sr=d*eY4Y+v(`V+aB!lN}|0VD`1t0%d@0HA< +O8e@VUX42BCB4`^LCTe%_x44oTx05T3JtAnjZiUiM)lwJUgqg6=&3zGIjKq^{JJd;h?aI>TCVRN* +|3|N=zUE?E||53~B{*s%0wP(-|`4LD9u5${V4w?QEJ@~uTKxUHvDoW_&pFjy!s@YQuF&MF4_fbO(lvY +S5twQqD&~b`G#r4p0{ceXMg4eq=QTzJ0Q$=q|lX36~ZW2CT_9Z+x(*F< +c$d@c=rZm;|i{L7g$hzGFY(fDQCcYc%s8UDRkEr_NapFxkRbQ`l_m~@VEh9PO`zlHgc^)yMA%vb<>wM1?nXu1JnT9{E5HcFRi?wVowx-(W@n$Pz5k8ij)G1WqjJ? +&JFM(9j6+O#spzxNWidqC^$V~8@%O{QG3q-o}6Jgw0(7Ud_H<{-istXqAu*E?PCx*EtTD!z%tEjUV{y +vQ;Rk;_N>i9oeho$=gAQ;*3Ix3Y1SDjd75-lHhHWr-uD~I2WmzN#&<(;?raALmN8q1yc{02fO&E*-j< +EW1`7}DzmrY8LQzjKB5h&sDoJG19iZaL`<#Lwc9lqhj%qo}XZbaTyV)M5q+7=(o2su^^NgIn0Jky_%+ +-ElrvL+Fj{k6Wu08JUZ$XW70Me^$At8OT8+92=KO1#69*oFwv2D+}|M87Jo9||%Z#;N6`}B2cIzFD)s +y%>&dryy0&OG5AO0ZFs;}&{HEW+!KEVHapK!*YZ**&HiF~YK$?NM+=15H8RhV7jW2VwNUnkx)yczct> +=9^)Z1}*wDOYc|$(dDwPe!`oEQg7vzxHhMJ-EC^N`p)IT<<~utY8rT?h7^s=46d#^s85rjcZDu4tfRi +P9aJP>!0;|Xr_fX<&-A-5IOQoD!sNpNbf<4VR`{Ud2eU#qVPxDnNk(Yx?cABV_3KV$ucTlWr#;??B@oD0 +H`}cVIAyq5TO4>o~$x)2}Ud+dV-v_(EU7&?nKP#|$Q4jXN8nlMauv$p4@V4l5eenCnjcmtCFE#tE5le +Zm55d&^cAYR?76JE5cY(IfoI;@c@zrGf%&p2hft725vIi2A6XsNl}`+7CJw(qlf*NAK;J+sZ+H&-(}T +?3F((k7A0r#zT9_vYHuhwTw9#nyy_uL+TXAJa-!+NKtb`>7DcQs5}-_Moa;VsbMXW$}|k2Yq +&f=Fe{0-);LT~7_^s;oAym=r59zB0OVP+aoO4_FOiLUpu&3IKL6+smEk{`7#L! +jC5vi9ECNVuYF@lE`O#DOdaXRm>_n2cCI#t1;TdMA2ZJsXj7+m5$w8YU>{dIW<421%Ih +V3*{X68r`U04uB^7`$UiC9+U+)Er&*LKg_^)DkHl?`(SJl2gpx;f|!X=*qw&TIG=GI-I$AmGV7b?h5) +T-mYX9wOU2QO0@Ieziu5M-J&w2NBVb+7x^9%o0BlR7>+mIiN!+xEtTLCOZ*@96B<|T$V6NRw|(zV9?z +u1bucMEY9xYrFH>rA~9b4Q)3^TpFzu$fE}hoSr%WN({MseMxx6Izswi2pH4|q?wy5=`zuOzz#xEFsf@ +q)%TFY8M}ACnoMgoq^byw9k`$031mpswkBB`V1UHp9arLA*n*p?3ZM8JunmSVQme1tnZR{D%heV;0*{Z)z?ATl9_@8gZ|(_8=azFcC5^80&D*@-DluCg+YC#!(uD-CAM=AA1Rt^nxTo +W0@6aWAK2mm&gW=X~BCl3(;005-{0015U003}l +a4%nWWo~3|axZXUV{2h&X>MmPb#!TLb1rasZBR=~#4r%P=U04mFJ0`0Me!nd@UaJBk%bj6A|cyM-C&x +ON$Ts@o2GgY3`2&Qd@r)V!_h``))8_yqjqq%B_GLP^oAJeNJzweMCi(JHRv|C?F?)1NE~hOVu4e+ZlJ +v>uPjo6Y@x^JD1CjzdVZc22-FglJRX&#c!4MjQIUQ6d;h+PWx3$DxN(-IzuurC|FZaD +qO>;KoF1o*NkZW~X2c2DUzBf^X9lRQxcQgb=FLK6u+|XTL}>z0e0P^OKy6bIO{lr{8YilB7iow#0#Z%|7E1QY-O00;m!mS#x~ +@5Z5F4FCWnEdT%@0001RX>c!Jc4cm4Z*nhiVPk7yXK8L{FLq^eb7^mGE^v9}T5WUNHWL1>UxCs$6S0< +AIqluGo;YdJ`Z}J;xSlwZez1KiMM5%bieN#?FRA=*@a +^#rM<-`TcEN(5X{Bnz8xm+)sw%6Mz6ZaV(jrldGMBX!sjTBHucE_eiAKO-6!^M5(i)#)KlNNzj3vk*GYE{HSt|GH6;Wl{XKx9GC^8Nmc7*LTgrT$>U;{6p*SB1e1bC8l?+BAu;!t!Z{<8r?pqIzi<>yl($ytMJx`IJg%yPU#*0{3N`%=dN4cHCh%~Zqdmbgn(Pp7#7Ph8F_p%xr(c+$z)i`d=~aJqCp;t +CfD*lY|qPUJ8L8q`MW>a%%i;=YdK`1k;vo4G>t`tSqGvLFNE^B%Fn{}u)|jV{yEqlcG=E9i?lC$Y(I- +>Uv{__pGDX&I>I{Y7UPjv$ofj9tp%`q3nYA`=Ax?OB5Am{!?Q)-66!?N$8;JjWKqj>(3RONwTe+IgNs ++Y3;dngS+r#%%IuAmZhB&wRc@NZjNIqvi4_r+2f@T-pGmSP@nGo9_nZSx8#kdht33(l=H^+!3t#C!#( +#z{g9yj#BCdxtbx7j#7D-HwaaH|Y&4+sY&q9x)%%ZQ$2?)28d@FLw658^!D`*=xTE}{pq7vgjVDR9A?pU;l?eC{%a +1M@iHT`^h2C3yc~F$m810}&+lyuZohZS#ANz5%|(`5ps=q!}TAfbZV}Mf_>Oz=Y92vmk!e)v&Uv6H22 +egy$a9IjYJ$tD9-`;c17xSsjIbX=K$o(P#d0BamI#yPvI_CpCcMuiPGMpieFVJChu^O9fJ8(btf3CR48$(aF_P^Fz-1sz;F +}nTHZQN@ucpAgUnRg)SsDWdBf*NPggjEP_Xcfl{3LKr^AnDr!gjln{2mi;Fv-lZ?B-fRJSrDrMqBcCswDtN#*wKpZebH4XEQ>tHxf+BWo>GLc5WJ3cDGj-&LwIILWAg2<@FGSm+9s&Voy$I=%+l#RNIH9K;vI_l +ByB~UZlABS{wcD1@Cl_ +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 +E2bjzNqIp5! +c>X0}v*Yv(0+bl#@wTUD0dBXvF>1_x9v>7^MDLyT7Vh|5{g9rT*Qxzt-DT=^Dd0a2V#RbRj?76 +wMM=$hB|Rg?o0kSprqo3-@q!dA?a!3x^WXK;5{biZ<=D|#=kBbMvG=skkYBdx#vFt;@-O1KH1CQBTwe$lh#Wt(Mu +R`C~x-3JASAtrpdKYeB$2SVlDzR +!-b_syo5aW`dQ*s*6jrU)W^(VbhcZNqc +bAj@fjP{tiWxB35?E-_`kyE6XBj~;o0Tw=#d_UTr?BC0c7bG(gUd|PIOgS|*doJ{2`pz9z~S1fHaEQo +@bk$8XLmB`oxa3NFf*^}W!Xa_!-1ta*CGct-@;ZLjPB63g(IdqtKf}0HE+r +vHgJSpmCN +M=qQJuk2yEWet5rGAvoDD0W&*#>_C1`NY5}JTu%Zml-<+R}=)cM!bNpin7>sa>&db@N0AOu>Rc7Z4*a +QnX2?*3_2`$d(^v6RH&es}VYJs1$XInmO;VcA1@;#Y5B?UZ_pu0(1t{rvkL0>?$aPa*0w-3K#e1>l~O +WgGGRVE0}82tAeJZ*0-VDuzVka)6$|F)Zw&$2?N0c8=l+H}ez<6CU;)TWaV!QqhyUFWV3MQQS`TyIvy +jK5`gUsu4NhV|(`fbk1bFcWa(!FpT(LA2%KOn%2t1MfFW5ixqnv7t8efh7!{^-|6zf7WE{_rnB|LE67pYZ +IWfBvtT{m*}G^v~0?fBvr_{m*}G?9-&b{MStWZ+`8`U-nFXxdut-%8lW&+;;hzLF^bBoLB%T#&#JZa$ +jKj%k_lL1UQWF7m$XB&0zTb{C@Ud*>Q3B;|c!peg0qB;b?%8UH9?#0Mp0OI%zVf-@~{9x6Tg +D2TwHW+t)zpl!g+h~#TaK|TjRkPER +lTg@cjvs1%q;oLDuVeag)M*N|hNm9Ap&bGL8RUa5SY9AFcb6b0CjjBg$4?%eAf|(dj~;*e+t2>}cfbF +S9!Lk!eomuXZm!Cvn(>{ZsoHv(d|_Lai#c_Y{|L8*#qjst;dH4ze0y+jkliO3dqJy%tX#Hy=>Q?7Sgb +CJ2dCw_cmTKMc{RtIJ<2<$CE#0TL<)N;==5X|u5!JYhYQ_VGuBibWydGIE1xEnd{N)PCLSedK-MD%E& +@$amKnm}6AgLzAil!Y3`t!FS-|ZEgr`MW;4Q2;PrfL0XVtIP9=s;b&NAjv# +?k0`JvusknjTOcHWUjdFVk1+F98-uHsz)sq#T?0pB!5n*EmN!m3XE_@#3r#)W%t(g@E2t+{4Da{(!#s +Pr%&zJd^;|9L!k`BQ2AAD}ClqnnESDwTh6}j8W?ul75irkcq@EMF}c +DX38%f-(8>WC6>zam<^4f;-|lO_5Nz=jwg&krZ$ +S{gY04Sr;UcW2<58G$HLx?R6qUKfjMF3ooU42OP=+J*@#H~}$04@IM&1l@^T==t#w9-|g@oZY*3c_X; +XEq^%5H!D03hwy|R7?ApCUd`4yvRn}QT4*@V1mb9<9ijlqFT#bEd!Vn36?F)Ix=#0$>Mj8mork7Z6hz +yhAvSt;e0hQpjt7$#m7;j=U!M%m;b(@XVlcLKShXH2`d0_P6BlaP#e%wSrE7yPU~n>ocM%nU(2ot_jd +KYLvJk-14t@a1c(on638kK>F-$t#DNe_k9YKAX&w!;gfcN#8S(7C+U*L`Agi6F7ZB +?z@J#SBNjEQ+hsd6C^Kn)CLFs)DdLd_gp@C9odRy6epE@9)2rqZ7{~eLQHhtKvg-wYhSt?S)f@<#I8B +lL&R`K*#W36xR)OF}^IeC|1`f5g_xus+I&(0P$GQvagF-_WE7+H_?gJ8{m7V%IVpva}W6cJ=o-M_OU* +0rAOT9Ho_*${=8X}u`0VM;Y`QF5|vxCi*knAvQSx%XB)u3T-G;;BEfRnt`2G}*WPR3Gz3WZ(DDYS@J>q`uvl*Sw(FKTR`0>?tVFnTP2hM!nP?o!Oj&!O%S4MZhm|O1v${bGDIDp6f)QaMO8^Qv-Bb%pg +{-NChgZd{R-XQjy3DVN_3UDZZMhjp&sVrycmqQMCm|D+zz$cCGxz63b5kw%J!1)u5rfWvy8LkXNellQ +WS?Y1xW?uGs4F=4_z|5*!_o1R$0wt4c9owu^=38vbmT=(Id#4*7Ms#&@AY#)xaz`2mzcJ-+yarp4L$* +CnoRI^v&RtrT(lr{JBz2#L-J08J1 +9>81a?CW9)tjZz&JXm~e=1evC^#!iu8>Rp^le7cKYD*vx@`3=+e!$mcS3j$lXTSytlI`eKz5b%!Ea!^ +EH%nxB%NICR)T^5_fv8=7r`BkCEiibPsR9uKnZ7bE-a1TlXbFWgpwcO0F*LAGjrCVGh~YvOXG|XMi+k +u-&Yh&V#O?@nKNDn<@PT@kB@+m0sDQ*~LNW}DIw*BA*0tFRu)SEgov?`ve<|UI4N49AlTL(jgNTOBx} +1sgD?u=Pd{;k~LZ=GFE*xBN;f-=$!fkFJHxXX!)=GX~emQym^4)s`_UD(cp1%FN`}*$nH*cT4a9^MO< +;AnVzW(OD`{DVEZ(n@%`i*?op7-Afr`pfR8g>R-6HcXY3y3#IQ=TK9^wWbyU0-fi=qe(pz5Kdd7wB>E +#_+zEx+Uz7U%;GcV_lCoFdzOm80h(V@bzl7-dY$X{$SWFLwU7XENm-)V!uA;eQ$sI&uaB10>Z-t28#@ +*6dou)IrcTVfEigtPuU%1f|m@>v_1eA@~^2Fqr6?+Bn&N-xc;aMd2kAiZ;ECf$yW7pp=S^rJXb|U`{( +I(Q7sDC4bMXsxp(3&q!AYxIxgeI)~BZ}@rCS^ZvHje;ZZpR)VQVNlHbot1kjQl65r&D3kanNb-Lav;8 +&2p36sgh+3Mk1g0Im_If~gMhi=5-h7tOaz4a-26u}8M-yV`OWU&C@$*FJzM(b4;$dJl*?Hh@(_s)r6A +Xcv{+OBi|nui^1THGH2RDxwVy)oS49~1PjS@2zR|DQB?JlcLjNz8Wvz%zabaOs&!?*iseume_QBi=E% +3J7J_3g8qUKRoGs9pK;k_9J6M;d{u=CD)PW$f1k%@ZLT0asv_27;|ubCnzxhPZn#A4s~*Btvb5g_<4C +|8?g|(JS5gIRvZc|)gxfObD)aQ!Fk60Zi+=ja(S{_F;|$b)3z<>%>9lN2TScH5y*aM0E|cR-1Xu#ych +10{)W-_c)!H^OUw>43$yFq8}r@ +;v?MUh?Py@hRj#0GkiZe*5N)nUk?2K9_)Y+X;1$DQus_8!a4Ca<2`L+KLq_1V}s?#JJ!I$+yrD+UVD3WfL6A?qg88@|)O7=l#SMoH+Bk +Y?p(z>hrUGl4i5BvOpKBeN|$dSJ&l|{FB*f$jM9-5cNPVMLQHLVc-0H^7YgI_4+NcDenVz{N&S;r=j_qd>bvYTdQB=ce82SX3E~sm!*4~6*W@>dCJ +Qb{6sn{G=9JrG(+>sz%&-l-*`H`s^^5$gz527uh|Ab}wVC<=AL0$X +RSU?a0s5DUF3#t>6-H^~CZXn?a&BI!4lHH1*MtLBDQ5fa$0-0kIBRf)qQ#&jmA_L~}qWilJwT>1k}`r +S8r#+JYQK^8iWH7ny$Svk~$z1Qh731V<)z{?ZtCA#_|h@qQW{J?D(4tu< +`5IKBZ%-+=2s$HFVP)FHd5bF +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 +7tW{2G_VIH-Daz>& +;qq`K|ggT0UalI^AYuY0(rhcs`KdTNX5Q)OdVi9n5~fpSy0^LpK4zg%umq;%*lpbOq4p6bUDd2EnyEJzj4z5JMB~-1jv!- +l^74+`BY4J1Ei0{*KR-mSQI@RTXLCuQrf=TLB^yLR;R&%BWuavEqv(gP9z($>^0@z+cP#qzU$um4O@C +5JVqa+uIPTU+gi|_$mB)fm@$*p#MAzQmcbQ|8X^68^g6cW;q6rF*Go6KqJWEP{VlhM5w!D?~0>F=#%@XKha5Y;GCq0jI)1EEhb~ +2=ja4y-a#6@d7hlJW&N>prV1=CLAEk=whv1wqFRk91z;1QSW%RBMilW#KgwwVFU4{enhfxiBCdgIvQT +Uxb!O~;&3mY^USWZvRY|rJ%_sD06mf~W0PCd!Z7bbV9b%PUxfh%b5X&qJ$%xR6fEa`-NDH%6BMF=gRj-dz@Ug_VUDkV)1mIdN;_FXuLl +_V9lwmqum@#sk2UbMS%Wv(bWoiafzzWs0-igFcVwQ&9PTy@N={P-A~pQLqOHj1K68KY#*QU)nesPMbq +Cbi2Rg`d0Fq^Mo5U5cRuwkiIp&pw48>(i}11?}y2DxI{xL||^0g+xy2qUz=0e8c|cj-#gN-)}g)s`1( +p-Rg-bUzU=fhQcN=i^Cwi&EJ&9y@2E@mA-DhleUu>WOu`p560R6YDP6)mAXJKm;uV +UFdWv8jj;1ynsF`q@bO>}mQh@2#SIPnFCVVQ7S&?%toZ{(q#YQZaGj*lo=912BV)Dh9>i1{W6LS +?f)LWyUr3D1sLXzB>`A`VGPZO0_xu3FD3lOmiY=8#=GDLUIMokTE3>A_tag(g7M#K;7sSC(G6TTdUaf +x&#J3HZPZKlS7m(r&+8c*Pgp5ru0yycL+Ptm~L5K!KJYaHZ~AM{mm(5Jt|S3m>KN@el#uZj6$M +%W6PMDLOP~XiXTjBiD8ksc2c^ILjE0f)Nk8<<=a+ILZuqlLR5escSXS_k9WTn^cKGD;_EnjqDp7EWev +PXJ5HA8OO($pDp)a*73!4EYtK-w-|*VWiA+W;Gv9MZif +YPHLlYeQq}f3lx%SM8V)7dP9?cF-`9#BIVeh5*7^&G&N(|3Mbcg1>3uiFqM*)d{0e3XIO-wC5*3=RF? +(H2gShy9yjhwjG)VMMrLt{yoH4E3%v7Kf$(~V6s6|$Zfl@(rD#K!{b5%@4o3O92ABF5SsaiKBSuE507 +U(a}7i5MF5AA4xSDBPk<$H5pnyrWuP*O$t3$T)1TiDW{Y6-yk(Dd}rbQ)pBi-3V!m+#hhnGHWh;b~?3 +gBRKg!ud80u3_JfO>F6c4DAK5}Z*(;t{x6@!5r$@v +J)6&&?63{fG9q(eaZfhmTGoP&K&k4#VR7Y6 +WG`k_1F#rt?Spo1aW`VXCZ;tihZ~d!_ebu{RabT)0StO1<4H@cZqN*vwd-jDtDI~AdlyiqRNkK4UJs* +0p&OYObpJPr_)Yld^*XD`iu%F*Pr5sTwffL>qf+kf5?skfRx1ZVdrLw4cP+33zm}1U-HQ~+s<>P +NEre;jEIM}-)O`fJtfW>Gm|&p6FjTzl1|@nMB%rjyM*35wP5SzMkdbZ=cL$MTz;bD;&1w6JTnV@Q4v4 +!dka}>!IUPnyB*~i6VT3(8fg2UHl21v9yY8QYJI|HU7zEAFD+JzqfmdyYpu-{p78jAwv*_jr~82_yNFLQFOCmT-pY@n25OO4SAn-cNB!y#jM<=bm7GW +|ngh<2cXCpUDVqLKer#Z7d#fQeJ$!f7VhaD}~H2yY$tv@Co7VW=9X0*bcW +iEBFFq6)M9673pFHUv)egp3Qb3`>I||HqBkZh><)za9ylT49(xZqH@$?p;_ZQV^o3z5?2i5l$9e8mZ; +vIvAhj2b`Wi%00po{t78Qq7-rKT?C10DD%)a=^%yxYxFZfjymb-+jqmXK}>GCWxW-k{C)xmWMnwr{Uz +`YW0v7)hnD=$g3`VFyl8CE}WC9QC2U1P55>th01Iip9+Fbu +{$a4JN!`;x=O>DHxF;?7l%<5h^ddh+TtJ6jZZhnbW4p~XzRBp2P3vXcJxyvCe0BxDI#%$4p_-Qxe^F9pn?H^>>N|0X5I<9)JPMI=B=j+2cb>CI2KFPJ=m{qM8}E5rrH~N4Q$nz!9~UjQ+xX*_Si4$ +e=nP=4uK|k_e&@Rz%$_6{pN?ndakoJ~x05`JYo3qGJ-<&^o +(TbF8|oR(|4s?JRzp$K-~N*bkL_*}Lw&_;xl%K47;84$fPsXhhy-7iVl_WqGM)jevRD-*+Yec!ilc{X +`b%VWvumn%KCOkE}`{5j0AScl)_+ +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 +hTuWgQ4h&~Z*2k4Bgig6Fwl#>*>Gq)X3 +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 +ztz_{N4NVKA_=Ag8vMYtA~kDm=Sa +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 +Bvm5ka;gsh?03^c4 +2pmXk4nnR@eoDHy0R@uEG_dHRs0}iXJKj(1K_g%Rcv@Jyw{WXm<>yVkSy7gA%Wy>Y!J$luG&u8Li^(m +Ixu$VDFdBW8r|2<$8Jw6apOg~PCtOFco2UnRWB52+##UX%*hmLwAzt~TR$#Q!FhF@6wBnuw31yImV +cr}mhBKe78jSU`98chh|U0PkyZRbKu +c_FHs{IH8zny!v;F-NL0Foqmk?6APn~LZiOJR>3lBG0 +t2x;mSl7n)x_J7$@1i?6(ep@2Dq)QX2$|iaL(heJ)cijx$)y6^`Co!vbN59QVDe{w7R9zZHT4$@ISsPm6Q>hm3tJ`SnRcOX^%&(m;bnYX8lt8|5?BOMeMBtuo^fd4PNJl${w7hk8R88u@@aqStr)o9H+!|f4DR +&9m?H9$5TOLBO#yTV>xrwt3EVly4on{-5dKM2h%LUd(CC3^TiWXZ5yvVa`Smk9tCZ$>!bFRROEuoAOg +7|u?+@KpxHMfWcYWh@g>a9)#d;Q}w0mBPM5p}DRrF#jE2L5kHAWDWjOP|fIlEX^Ga_ZU@-Q~~+$wAje03#OJz+fEZ-4vHixj*s7O=T6)&6CJr>)_n_sE?~C@D2j4!wbESw6?(e?7EXD +EtimX}9K2+3=qN{ihN6$DfvnlqeC<+9WF;9_~vRgsg7zrj=)ZuQ$ZcC_P&}p95fEp%sPT%_+eLhp&VY +`7b#gNHyDFxmT<Id7nLW%O=5PpwQf>>Z^Yf&3&3FpF)OW~u_N-JST!yj+nE_@icC-} +;!TpI^C5>-swCYH8lGbDX8&AwU(^*qvRf%Uv(TBG-;HuY!+0AU%aU;2o=$wWj_)9D~Ji8ETI4g@a2CRJ2IHxsQie1^3bS=wOT!-b>TIYqAUN7Qe7ydXhwTuasp*dXBAeL=e|-#u)u>voKb(}8-?RNy3_nD5nXs`Gp=i4yM$+% +MBv_Vfg|M!vUG5L;5rb^+~+#F{U +e&p=5QFSX!~o}Y*4*AO(0H?hn6XA~r9r%&y+Ye+QUkjV@`X-9^c^pIHBF0FD=*Lk$Z<+j6Iy-a$p;RS +?(TGR#{DtqS;aStyz9sSQ{#rBUk%!2jDll^$EadND4a8my~3Ke-Y45zQcFCp1KFY%tW<{-<>5-&05ON +uF5ZB7@}j9wu@k{nd?PBQa|RblhM7}>3-&IOYL`IKC-I|qba1aHfcQQT&=aT|xMHa-?;x2?w80(K=c> +yI@W`Ameal7M;U3<&|aP~~q9p4N&*{XDD4rc)!{OsA|NAd3kuTg=Tc70qnD*!Fvhq?G*$-H}|OVr|!| +oH6G+I_f9aL>D{L$Qz&^3pHNdt^*hQY`KXivkIptBi|6&J>pvti4J}p$f*#YP6M|b5I(2$>J;~R$5+> +`0=YIhk%cj!BHy-ayJlsNr%cx)*!sGFv_^LY%HB>>8FVo2R(vj3Ts=IhUcwmarB!Aq;k0BX$j%I2JW) +)L=^=**@(kTbc9JbN*_p}1U0<0=eEelN2>{KSQEUQ@vLke)BpX9GBGWKk1}_Jz=vKEHJkI8ICb_)x2*is-(oF))>S)SD&-!Id>cRn!zRtBrzZ;;z +Q-3Nf$_>>0zsr-tk;TM@Ut-TM0_!|I +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 +Y`FDH`34J +V~!kkXriTu7Xl1Izhg7|k9_5+8Yfw?9<(9*x_{G!mOwI0cg=hQ-8e>gqsJ8=3S +&AEyQ_&UD-cAMXD{;OIZ+lJi;85i4-Ur6C)XRzHrj*}a7u0#7LaT95#Xi*6eLT8uSD<+Fh +Q$I?&W<7esx#YU{tmOFhllJE5&ueK(49H@i^QP@`U6-z%=M3ND@X0}jA@kX0l>ysETA&O#dpqVpSlZP +k))!hO6iPKLBv$%nriy>1^ho$}-4sm)WXo&-E-S?Utma1m5U7a*MbjgG!T^TKey8wZDvPT#9cU3=to= +fDdr#p8m+Ddm0z*E?-XT+)@xBSd*vY`iX4kPxo`QFGxRExkxa*-c>;ik*LVp0Q0Tk*h82Ue0(K0LW{z +|E1@Q<(tZ}uIk#FpfqY4ifkW>EqtefdTjl|{1vnU1ZP^_k?_Q^gj!c%tDh_PwM0pqR0t%=erYEPQvk& +n`PaaOfI!4xIWZn2NEWr$QsZBPrq^MN`b`+~pw89_61h6=80TNzqpGa(LF4NdGLI#9gDmpqoD#I8w?6 +ZtoR2hz!qB5ejIlsk<6c6?7=Z17l=G=Ea& +K|#d)ra%Tm%=yF}~LDZTyl&C9H~E-I=Ao-@mNk75SV0x>blCXe2BuszDNGtyPod;yXLqSr0YpU{xhO3cH!fz*+T4Cw8S;Xu%GctU7VPW~FPYsdLw6o28eTaPV_I-dOak;9hqF5 +^U98h6kdVVpy&3_!|&nK9N$pG`B)MamjhUDS$|Apd6XMg_&#pg*XvC{mPOWuC|R1iQ0Ca^U&sSpWqPW +iZXBls!Jk%`!2fJ%-}lCJvE!<1i!A@>^)sTv4_biSCXfU^mbE>*fRr<1C8mX)GjyWVlmbO88MBc6ox +h|Vw8($PPJVqf2$t^{fg$*5>7tJFo2$+^!sVKsBat-;-*WxJf6K!*#j4N9)`ZiC7gloB9Wn_i=|=>Js +@dBW4@RH7PbpZH(Dy%iBAWjUGcS``-&+rMUNdZh>p;m3ptl2r3}GzPVD{vP)h>@6aWAK2mm&gW=Z;5a +g34#007Sm001BW003}la4%nWWo~3|axZXlZ)b94b8|0WUukY>bYEXCaCxm(TXUjF6n^(toSHm{S>l*H +Zf&N9C@NJ5S-?!q6Gfmky#bo-ZjJu?J>4LpiP@d1^&!H!eCIn?a|L5o?Kxe)NHEd?+>LJUU`82VGXYN +o70D|V@W-}({Jt&{nh#S}eCu8HuHcdIf(k)d36jA^5ED|wGofG^UEz09W{^=KIep$p0`djH1Y60sgcD +dXjs|i +0iF-`lkG(i&J|3D*MkkNV?DSwO#J|nEbk|TkM`KHToXwL_Bb*T;qZhWW8VwyKbMGxHZZXk)=bd|v}^O +KvYJ~_=ws9Xa|@Slq;i-B{sLS-RJ36k+8Dx$Eai;#L&Bknem2qz6l=>OkH?Y3uK}>*Z~${VQJjyX(NWc-iosV;&`=@8&2XFXi ++gPadx*<%}isEvOFiLM1g26$ln`MYqLZWNegmNsppL3GO5)?g2UaYQbO}uD)udukQw2;7N6tvdc8QtE +mUNX-aYhhhj)FHrg%Z$CD{C3pS!i=mib>$z&h9LRM +gzJQ_1%6$>zNx1MPa~jyhzMkd2%}T6kO`Nu6sS?0jlrq9)|^d~0x-NXeVr4qk(9_G|1My0!&CqYemNDM8IzsN-bxdr&NVx%w(mlQ`Y?4=cJfopvr}6`QIAW>wfNdN(rw97OA-fxOPS#C4Cc5-RSb@>Y2Q>2kKJ +SD~4MM*L4_9@c*Eamg~W1sK34pGP#I{Zz(C?4gKLRDEF$V8M4HDF9IE!^f6LFOXJq;&e_+tv=_;>^|% +C@?2NWQHyv;jMuUG@>kFg3W|AF7TOoC~w@f)sLCwA!?G#gww6gsV3nTgd{3oTIHg$t(XP3z?C6$C|Ul +E&g#!nrO7f5~n=SBPnP)h>@6aWAK2mm&gW=RjjMguei004ao000{R003}la4%nWWo~3|axZXlZ)b94b +8|0ZVR9~Td9_vBZrer>edkvUVi=YLN_E_qB4~or)Jh^ikuFKu2m-^P#ig_@MKVj$wt#$q(<|Bn3HsW8 +K>w*<(%I#by2MFS6cJ#Lc6QF0v$Hd+1L*hqFwY{EE}lSD#{DmZN7D|#%vo43B{2!Yr +al<94T$m#C$NZ*R2Nn-0gsFg4-qbckZwcmnD%UFIb(^lrf0T=Nj7+JM@TUxo;g8>acbFC@LVPzS%E`* +e}EL=xIoT{6M#PvG+Vk(3D}l#Y7-c_9x@rubMViIX&JVTqCH{;Ix;lh5MjEGPrjZZ8^*xUm>Odt!;?_ +86sMXPf$w5g56|Y$>_D7h*X~;X<8+uF9eWC$=ZdruQ{S-bwk;@hCgbRv}qa*1ksyJqMV +tv?QX+-b3(PxL9Rfx6@xDNSM&Z!E5R~zpJ`U+|T1dkO)ss3!dp +jiJh;u%w-WCb5#=5YXr%g{7qo8PsR%fn4Oxxm#SVriE=m`n#N33)z%MMmNhtxoo5G@J)m~TyKw +VM?e#~Rh!<9v^Ko0r;Jytz0?Uy>&qK_ld-h(LMha1%;v6iAyTjNY;D%0dP}$esrN58HLQzPH&{m`@3y +UHE~2fh%3w!|r6`; +2e?c!%-NcNk5^=gG%1zWr;T@$Kskqm|A%U12%GWVd4ZGAw9;fKG*{*QJu5mHkQCAC>(<+3%J8PTAMW- +XC@UZJN?HAGTjTN3~~baPD&a0oxzB2H1m-8NN?Hv<*Va!q9!yedz3p=rw2W{*QsL8D8`sU%q$j@p0pL +&wB`IE`h~L@H03Dn&21p5P$f=zz4Z=tnXH*FKvlioJED>_56b)BkG+THKRqb^GK|(@Hg-ql17q@ +wvcD?(+twKT15ir?1QY-O00;m!mS#yRfAKI60{{Tt1poja0001RX>c!Jc4cm4Z*nhia&KpHWpi^cV{d +hCbY*fbaCxm%&5qkP5Wedv2HAt{Kx;HP6+sh}E7LXsS#n8v7eP@JT8pxY*rGsEyV+yfq%F`xQ6N9>mn +Z2^rq@{@=%J_%9&tF|&x|Ra!TIBJSnEnPn`h9u`utm;iJ~(|bbDviX6sLRZo;-z_(q^MATuR(1U +nvXU-5g%O-|S1Z8?W{LMRbPXr8IkGt`|)5ST+?@$~vR2J143OFQ|A=uE)kg1O3~JwMs@Ireoq}9QZqbl#rJfhXA$7DN4|0+;W-QjePWA;`R8?KEFS&mP?%0eeZG=4bZu2SIka ++D2e^Oya(wG0hWK&yyJOW<^7Ux+&`G6ln+INw4F$6QN7_id7aF`=zK|ELT)+A^>2_OMX;F394PX#MH~ +9SVO^CmQ_-lx7LwpzFZz293;va+2e{83@x3QDWp_@ZybYG%ybFZ4=vGg3C#CUDEP#wC0$49Qw=&QpzQ +U9oZI?ZXR<>=+0{{Rf3jhEg0001R +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 +{+GGOwP2lx?6jazIYGSk|)0tC(aN$qn%;s(8 +!mwfR{U%STa +$-$V)`ZB$Dk^$)_2b3+*Z0ZgMe_3f&8yc}$=i$jpQh|V)QQNIbtpxw1y5lnry~~lY)i2fd74zqwb+P6 +u994cRHTX#Z|b$x<`jj4i7)vBUJvuDLuS$z`xfV=6}t +WTEEaXKe736Jffat8p6~8nw-TEl&*@k>w%cr36pyksKJgiV53E*SPQYyc!VPVoW7JXqv|~q8cd%0{f7 +oH@)6T<`wI(rT*ZC9AWO|3r$&K@%^BGYRKnb~2ehN-C8bR9`^)sL!g!@u1Vg%th109H5^E0|#7%&KOKy~Zb#(a50O ++uPgMFJHrLHfKNb3}D*5b9en8S8(Iob9?pO)&0Bct2?-O?olT9*Ke+F-`~THn*tWF(P)|Rs$wqzelFC +K7Zr=Yz+CDH67&|sqEz%xCZG9e3v=e=urIL`8Lv#d;_;#Do7iVr`*JL};a#Pd*QW?Z9F#V~*cCX8$Q#UFRrN5vKtf2uK{{i2F{nAUa_GukJpG45oR5x=Htcm`7hG +rj~n24x`M+Hw3lB@+8Ve*v>rJQ@Id@-t$zEWjiyJ!)es5W*$SK0+Z%-fR}ouvi&YIa>{CqDIeQd5L@6 +HvDrXe-?@p{E(Yw<8X93Be&;IsA?JyHuv~J>jcAivgR;5eVYjo#^K#A2J529QpRgAvn@a@m=$6=>KQE +`n-;lpfEAY+DEHOP9bi@Q*lb~i)mtZv@s9Ag6?4>LFlEYep&`v|4cQJLK`205^U8ADz%~Kw-#DMb!kE +3>qc8C$qqs)1NDGiOFKVW?HA>cyTrs;|v3=1n+*Ys$u(l@SC7EhjWUP2n7J(O1sYXI(VtMV>5>&Ypx+ +mVQi|vjHZDL%pPoF4u`ef`4RkDRImKW`1VXs>Q{`M_pk%4w+EoLgITst$+4$Ka63qnixc)|C0plu&j~< +I{7em7y;=RMz)d<_$}#rWqVOO*EkT`Y6?=-_~SsBH0^o(yc^dASi4>K>0LLScjCbzW+dgj7i>DKhFrO +P*?i7AtY;o;99--*P;q^9KBd)PMROC|M!>J*IK;Fa2atAWzGXzs)Z9UfUw-v(sPu?QpwRtJoa&g?P@H +PH^$Y_zb}xlm=&3W*`e%qzIojNrq>czAnUfTXy8TbRKBmfb=Pkd9YnczCu4-7)`ayh2p)kcNQG{MY`4 +Rl0?O0u-2zx@vfENI3hLR*OLgRg&2$e4aM*r~3k>r$J@_bwaa_4C#aP8$O=6cxJo7}MqV%>gV$zF1Z< +Q!JYD4d)c<@Y$t_-2tpT-)TN#i>SNSz*sxxqO5GYT*W|L)JBDmiCU(73^hr*3jZhLyjpDizZ#K=qsJt +b#1d}7-5T@2JG^{KAk?wgt}Jh%wn+bDf7DR7-SE6a5qiNds}Ki?`!Bl!jAf9nk*9(If+nbi>7kDu%s2 +KS-x=H#_$c|I9QV@QGfwHrj$V-Ts5T%Lt1$Hyu}Qg3RfW*g$M$ssaeoEt3$~)?$>dk110Q-gNxXUPyI +dR|2ztGnEe((puYN6vga%zAU_(zkAUwGa=WNAcWpOV3)&^y{M&3>waHR_wqdCNV6 +DWnJxLy^h9|x*c~GMl_6^Z!p^jlS+D<_m6NQ;yQV*WN@#a^zHeda*y6+BiY=F*l(#to|`Xyk`@#O7V= +&TgBQmv@ZlxBPv^V7cl%H*uNvudIA78F;@3}%f8u%cta!c8yRB_bcg|D-adyqo8YpMlX%Dx`ze|5ve;g6Kf#q>}m!x+#{D@_7g|D*XY2??E-NP`tDl(BS>M*F7?mj +W+3&ov_KTWvx<(Iwfs-GHMQIq_M|9;#u(s2SJiT#UO@aP6RNNCPqs-@(hk_2kg)u6uCD~*+m9i$uG}z +>KN33Z5XuSsMpwQ0ix*9N|iUm2xQhXai>>BKI(G8wub6p`*3~0Gx@39_mw#TjZQAD(XS+^j)URK8sl4 +T +G-ZJIzgq1OGD1H-wwy}23(2wTa>uD;N}Z+lW<+AO3XSz%(6=SxA_aqCA0wS@hwWG3`LKb(II6G9~B(S +7^zXl-`7Xu%oJL(;@l;;);9R=+G^MCf44|U-dA^ff|_on8K;Wz7|ynXe= +L~Q0ExY{8>(p?^KN&h@b8eXpR!vtAtkguXcdg2cLHKxU@Vfw9ET~G_4(sRfrcW +CAJ7r9C@6b3A2}?3*GZA^%jG7oWQBfFp+)h0uPQ9S{PaOb%k{D;OOe;vUY7(A!^)<7O#%&F4*39{AuP +FBnReH#PHZ#>q{ab?)IYHf8Dd`>nE<40HAi{m;k;L@(#_qI8htcwj9dJu7q&G^V`eM6y>gE|iVBv!W_oURhZB25r;lQt+&NJ?YSJpWdFS32qp8QkX+Ce}SOT962H5{(+O-PM~^BS#UH7FPv0rW{u5H?>h&GLjk%Ec +-UzxHjM)R17kEUg8=Fng;~4QI;*A_M)O#ybgl{iH~c{^krixH)d3pEl~3&PxZ25DLm;xOF&?9pQB?%$ +6|v;HK91)Y0dQ6~;0RW18EWo2$$FcCDoq^RL(z?HZ-iBxbf0T()D>+p9wx2AuMsDYZ!jr-tT +vM|@ruT(`6pk=WQrR^8)=F-4PS7r?S8<cWgua$S8+6f7%y}Q-xZSwrC+(=E6I?^oHP5wxme_SxE?296$<26bjgH +?<#l@FY~7WqTH9^+zVXl;gcAg^icRGC(1D{G&zb3a;{s=OCO(;Rwq`Z`d!j}99LnR{&J_{R^>^@DkT! +acTqDl%~Ta;lb|4d3fSJkHc%5IXmU*Yp60Kn8KIEnLPe%87n#&x-uZ`L8j1OO^F3@&ui*lc8nc#Iz<& +YE;0bITPA}30~?092NzhM{88Dk0;=IMyZCASPjWc+GNt>q*Tx%-J0pcr!I&dD|&<3NNJ#A^J64@$u}*1V!)A_c3uk{fey-7 ++up(NInX(^8Lmw6ModT-wCozHyd$=;_!=pHUF=+#cd>Q|m!T$Czj6Gia`%PxUCb311={+Ve09_5#x52 +ZI`AzfP%n$FRdi=R?C)jUtcfK4ObUArxNSZHxAv0O;Rc64B^PlW6X`hIv@y{ +1}V5;;2=e}q~J;;Pvz)UW}s~xo*Mg)XB3YdmT+7Nec#67_8_yq?)p+zT1+@Cr%ZQ;o}#Z!u%U~5^cbD +OeQWPnNxt05q~#%GuD(dAAGa)1|XEhtb|5l~gAgwGC>EV+4x2sx>uJZ4{Z5$0#7Tpe|VZIZfb%|M%I< +h?h!8|dD=SE~dEzIWy|<$TdQ`o&y8QZ{oR`fE_S2Glxt{^ +^IKntOuL}y8$Jg_AMmfmW9c71p8`LYpD+qdHkD%cPN$KsOHGYCHS?i+j#Sc@e*qMuMm+<_ +3C5u}*CQ#WW6394l0zX4E70|XQR000O8HkM{d$g9t&!UX^Tq80!E8vp(SCbpNJ@#ET +esK(-NpJr79`Gv=bRaiUc>g*Hl!+(YR4vz9&KEX@ZrX#LH(%|*bPYdZS)yIga%q1bL~$-tEDgqRuoUS6cluxu;q3H +ibUq%zOlbt-eN-1OoI=to|T$in +I>rHn9R6LRj6#X4O&1BM>3dA=;J!H}6~oorvkx|OS3 +{VprKL@aya&fJb+>vA@LuU#%sWT>BpYX&Ei$t9flWlflsB!#}{JXPvO;zQ>Q%8`5bgV39x{4>{# +>2p~pNv9MAcH%qqw|yX!BxI&(#UHIDwxVkNGf8^BrmEaZ3S|LH-vxl)E0Osu_?IMicH}b^B`Zq6j(C4K0ms&jzH1dp(vC=O1!Tles|whW@P0*>NzY>~$R;+)g5Eau$T3<%5S3lDbZ +}6yejGkzOV~{5?ob$+4v*!Wgfu*I$$4S(>Xtt%3sjYDxja!T$QAEj!AeNmWMfd@qHd(imDnUc#ToZyg +2s!d4}zhck%(;H^B8NK#YvZdC|w2k(0yvqBD({?KkdP8xHJ2S-(Sev5z(aW{Ih$vq=i(TtJSr}OlmHJ +)(#Jq%2AX97^ADiiLU7Un!)A8crv`anhcLeXQRmoYHLD(z46XiFno{M{d^t-n^J^Uo7U>L$9h93;X*8 +z?46cbm8zVRV#N7G2%=*T>lSy!g`BNhE=lLK*0VJppFxUL(kq$gT&r%qq{QI>jt;I5ug;IpMs$FXfVi +4PZrmY3fo^5S%Z_m-s4=)cm?R8R(r!ysI4Fu%29lf6cjODX?l=#PW=Uu3T`AT1$f6*?gvERfnOc?HZy +H!bOQrlb-H%*}&QSYpu|!08Motc*T%JN%Z~L+1w9ogSG>9b##;m8PTSt_6pTc +k8?T`s@t`OnMB>U{o*j6Ty`cbByCCXnKEtzn)BLgL`l25$xT0s)v=%_oE5ty0CT`4~P6WmE}O``EZW5 +(+eJ&1mWkMH*bE~uZI~Q`!yV{p)z$V>+o6AA<_u)!Vy8jrJ6MrU3`7J!HG4V=E`8k1XhOD1$W|B$qcA +;T#*}<-XN(%EvXx>7BclZB6{X?t)CCtL*U-MS#YmC4~C(UK<>I1e!ki}S0z3+HIBoWNOaXCw&%i6VX +%9*^)75IhKmr5lrgXBX`Whal7#Ki>1M?ZnvY&PE$RAn1_o{Bn^3p2(PODPxFh*W2y8di!!;5n{Xn4qd +q}iL*L0uwDyaFrxSX6`oR2>;$DbeY0nX0mXI4O)$DNm;J{cVxf5F+|?9S20fo3G1LV2l7=w3Xch2F&< +PcODH9)LbF_MgF5YW5%+caYr(p91`k9}Dn=pEG9-eG}15ir?1QY-O00;m!mS#y@P(3GF2><}^9{>Ox0001RX>c +!Jc4cm4Z*nhkWpQ<7b98erVRdw9E^v9}8EbFb$nm>=#lnU`GAA*ykuw6L!ohWX7b6!Zuzf&^G$1H(C2 +dTR%}v1OUnIS2egr=n0yFE~SBUT85*wI~a=NQ*4zQn6Vn*^Q$}^ao;Dl~S`(xi`t(n-u(T(U{3_~~nAPba6Zc>w}(dm2y6WtD1oT+6&lrQ$=Tv}_>Cd%=|h;g4FTQ=Qn)i7u0 +Gse`Sx$Qwwalw<;c7r+viLk7SF2>!qmppQHnG^JBrs|5LKu<4J%;Ns);-R1RNa`(4Sm&vamZ$2b{-28 +rdeev<_xSO +SU@(**5>%!ak%vPhSpnkrRlRmvjci(InECNbDfM)b6zl;1B +`8z53Vj@6BZ;u-MU@wPK!!Uz(2_E*`Tv2LplM5``fP+*vRL#TPspuA{eXt)sg$hu&a+jeOP%zK`{y)N +~tOLLkrcnAoHc^@Tj7l;TgaV(=Ao*bmi?E{0v%qCP*e<5Qnx`S?UW)$y=xjz!=b94md6TRlfwx?%Jmm +HDlh1CP%NBm??C9!U=1kiF-;Vpv=_69ucd9GU9K@)C3pC#6j1J&K6|Nesxit*0@42|afwVSuVbp_@oH +PmV)&S*Tia$A=;`k>=u0p0RJ3ws7zlGGYrYQ@{6Z%M@dTw +R*auFKP`c{^FL<>Ne7Yd5{^Otf0IN~~9Ojz69MsF?^{ZnFrv|4n(xeu723-g`uI)pt`z<*HRW`(?$5S +9Wtb0F``l;e))C~FOUOc7w60Y1L=$C*1g0BsN)9Y3Q0`L&Nm(_Og7_xL207%e=c$&{4Q|QGGwhUSW=p +mO?3emd{(?EG>*n%d|9>3{m-@0(i5cocxcAYix84f@EH_8?93IjLn+KZ0*xaIK!ehE^XmmWIXymQtA&`tXtF5lJR?@1zvjzIKee|ZrEzmQk>AJUwXb#V0R%_HhyH+I|SU@&ZKD17i}Yb+|1f*^N;;Fcnu;=kb@ +Vx@{}nHE{O4BvPrn7VQqcH&)i;{D6n@#)vdH{0{lbKfz#t_Y_?BjeDr5%qmTV{z`sy{b$Ezkh2;cxl8 +^1E-53&jo-M6?t4{KwnJ-#=b%1!cnZMTtL|!_WL{{IHAVwz%hT;-nW)JEd$nZoLobD8*#RV6YY`D@eu +8BYLocPs*83ABT?vhf5P0?oYMdO{AzO>mULX~K%;G|zoJ}cmO@bN%U{}63$8lG?T9=EZ64V4W8dj2`w +qF)z6I>>eT4<6qOwp1ct=*Vy2orabb9T0vFWn9nj}s!vkvWXbBpE`d6pj*pb{%2s_nca8k+o17-FQ>l$yr0xxA#_bZxGa+Fhb<_5cy?AlIO66R2d;c4* +xMtmvg3=+EFsCs`M#cV|07A-GsOFOWIlVWs9Ix>Ur~6oK-tW?TuDlW4xgY~lOiNte8Y7KR(?iN$oI@D +ItuEcD(`>bGERoHF50Kb0vq2Mrsd2q0I%GF|B?=RoGXbdpzy&Q3;4AJDAn}zmI-Zo-6Rs6j3odz&3go +*LboOuxa&k-0vfWE6vHOhlV#WFWrkV$Ac;$#zDqxak2V-U)+$?*$dt9RhLAN3VM#+@64VgGES2&oEA@ +;h#U)agn;Kw|t(@o%myL{lC(_SBR97@X-2HPx8=V}axSHE34`@o`iE4{uBZlBz;Jpb4&ziK1e!qQNT?AP(T2IQ}ig{QY{B{va*)oy(?#N;|H~+qi|OQ +p4aySdvE`1UP3F~RY4_rMb>w&GcBv99?a&SKte=~-N#`|f?m_r`aLoJ1GA{Z=~Cz^k7cbnjFCqCdD*Ck5-$X9)SluL#&Lj_YXHt>W4g90pH1e8+*$wE6K4c!Jc4cm4Z*nhkWpQ< +7b98erV_{=ua&#_mWo_)eS+k=^m#%rwuLwKmrjDtr#5~BXE|`S`NFe5$HfD)Q5`#ee`gXL3jELNk@nz +OI)@9b6mKnLj9UO;^{8{f>%a@@4`AzA%A#FF`4*x0Mhf5Yt-wyWYkEb*q+VmTrw*4i$#9^O)V~75HZ7 +=;3`k&uULsX=3|IbcV!zisb-~PwXhqM1<898k)A?RgbjD~RpK|q@(5Z|Orlc(*iy)@veB(;g74U=qQc +!OXY6yMO{hDJ9`w29CSLT!+AlOP);+NAL&!IxpTEb`+R3A(}14a{u9WP@Ux1lu6^@&k%&D14LR8#vie +*>VvQT`s~<8=BmZ*ai#V#zP76#}Q$AgEAW`+~DvAr#4Bn3BfhU4GnK%YJ(w53z;rIP~?WdHgUM2=nYP +9Qe+dQnFun+&wj(7!MLaH6c}-+0lq6iMM(OMJCLnxY7b!1L_2&e>7n*jy +3ygo5Xp)w#U9pUaEPj4;O`ZB*+8rzN-VfoVX$NFmwfJv?C7AAE60jIka>N9GhRkbNxt~}nOdQ_`4DmQqQplt)5r|sQXXe +B?w}v$%jIT^!G4}XM9;YBs0KK{HuC*p-NPK8&S#c0kL%-O6m&!ws;P*YN6wyqX7OOuyFx|WVuK2aqPv7^Yc;elt3a?Ep4(zfjKFq7?Q-ZVKLgODq(vR +ryIm;C$=EUy6cUwH?XR{;9*9WdaLA757z#L*P&a-1~o`kI-@8kWY%oG>e+X5}Mv5R|88`LJf$lUuOr@ +;lxdw8*gC|81`roeZewzEW?-G`^BS)pZpNbQ|x*7dp+6QVe~qz_T|V(oT?z +1aT)%70kw`s}{6ujy1R#(NgT7W_YD0iknA$MeCPFqewJhj# +_$5C;e-v*Ru)IeAF`Ep3M+F*gLVCjh9wD3T?Fz_psSw{F$qQ2PFZhwZ214M4AAmnmv;p%3x{SLF7cTIK0F>wr@tR5sxCnXyTELOnhFsvc!N4h?m-#I}5)1I7LO=MSa_s9LPO|%OB#cooK0X +eyzATj-SSFqMZNY{#EH;%!m^cV5p$X!o73>IU0vCeDCujr>`Kxhh)1-LfXLk2CsBf|5PSVVBl-?Gky*P2(N +Mfd +@eB7Yv37?*17h79)d$r)brom2OuW>9nX*Ora6kyH7Q`q`Yo#>my;42nChyla{iM@@L@tHIxoX+2iYiT%uRXVL>NVGJsRTjs&fT{qiU*X)o-N>^OA +|Kei8}PHl>5z5CTXsZqu64>R;Ekh7KOG9PKHkrWCau_L-|AFb7#4XVViEB|r1_!LEQhVy7-{sH52Y^b +p$+ZB$9a3M@%tqCQZ`XOdw%@=ZRfqVjhp7h|l<`dB>gEW +ga+#m0OJ?iNbCf%U&BT8D~uYNO=$UPKH@Td8CQZRWE%`#L(?9)j`1r;!$86ZlwNs>(hu0X$NL@hE41(!;HfiECu0I8DK1b~8C&Ij +|M7hXlo27XDQMawXo1W+s6P{=~e5LxC7l-hzdfGK=KW*Z{f;0v-As)AEMFO&WjUqb=#b>II9UjpveL= +Jz6FG~=?>VUuD3z)W^iB1o{mO2})n&`rPuK5ZN=XRk?;>?;KXyd=569n+|U8nX#C+Hiu=UCSSA5aO%A +0Y>1Vn=srE5uhD^x0T&ns#Ex?FV_LZ+zFfv>}T=)7S7uKhg*2>T>1bNf9eCz>!f@>7wG-L +027uK0Gf{Mq9=_j4}Rv@eRSNhPZlddoM3SpZus@g +&ttZVns{nL>4L6)ipcMUSHtnN^6Rp~{ry2m!x_}xW}_Jw|;PI+cbgq88Q8h7Vs?{qGPov(Z?UbDuk#7 +5o8ds9*81mYPln2*hUH(uMA*vgGLbWiPZ#rFcN61-|FGhsO;S(0MDmy9u#l4&dc#;R`@N1=KHEev +h>b}xBQXJfyXez?C6AUZ#(YJ^+eF`u06(#!TExZdj1+9<9K>pv@^K>e24p0xHaKexIR==e?~m +fK<{tcyu58{O;icbJeSXb>M2jP1_ud1<1SY{X`(E!ZVo;sc%FE{G^V3`l_9LE;rfDQ7+1?`@r488osG +3GS?6iGR(NPq2W~%zhI+^44%)$McZ~Abz%H|}Yk|fc>8KVX%kFMWKugYE04e% +-0~89yH<Ct)YdJ^1$;Xvo?eBf>@G5esRb7!+@8*Fp{f?jOmtFY_7Vc(8JR9)h4$M#YK%kn!n-sRf-;m89BlQ96pkJJCJZ%P +yY#{$I90j+lE`fqyLgAY@={rDbN +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 +=oJ1gls&P_P{Wx#i&U<;-q0 +nt4Fv$)o5xlD8!sgOQCXue^mZWH_x#Oi@tk3UCx=qx0v)0I2svBZRex1A+Ec5udfc8kBRoW$J~5^igG +@6qXbhefp~eM$PF{DryxFS9C40vY3;36fhiXP&GP;6eA4GqM8a}P&zJR;Z(&HhHP{sfX2?9HOn|0+d` +UB&Qf@l}*wm&PWyl!0UFcItNt{>M{1BealcZ!Sd)mr*hRRO8;8UpAg~H!)+{e<=5L05MhlA11_*iXQL +z~eiFxJRgAydC&wkAJvUeqPMrJf*@QE;^vR(Uc$!!uaOi`iKpQf><%x)asAKi9W^nOJO+yiwxK>x?Y< +Z|}JI>|(hEIG=yDtmB8n`zLt)mk0ac*k`wT9sk`4tKm&?UgEU-6VAT$WCH<)qsx-Nq_$x%M|89(G$7< ++c-cCXgbNuWbOAyZf9=VR7skNp;z7pa#RCo_%Sj}>n89Tyy{xz@ao+Qt(o2VdpPB*>t?itG40F+viZRg5BxrsTLSo{xkI+$nO~>rmYe1$@x3@_EE~zPwfE$cIN>VWuM)D9+U2yJS*>>RC +aFvhv%mAV$`|5acvtq&=(Q$6m6M; +G^eqQ0BE;yS@CN|yEg7}Q{m^LE2U)+R*3Pb+e@(=|*!$Pa;sR$81~@32rkXMBEoGSlXz7DdsTn;rb2J8>S=Kb{90A=Qy*|$HXB$n7+bQcHCQXp+d3pYh{}+sbPr||X^0(IfM^^TJQO`zpm+6p>BdRR*h +x%7w&@LYxJ4;9OZAtp6M;|fhHX7Wknj|nh&Ky;;E~A=FlwLc1gRxIcR%jyz5$k?e=uD$Kr^KYb&h|>N +@ITr-+{Gc8?NXNFk?P1>NTL3U3^{qsI}$W?4}8DIFDe)Re0%ufwEra;)pBJX^b`NxafgMTSj$b +q_4$UZhls8Ou5HWP~@-eSddm{87a5n95I1fS@{Dh%6^=aFL)xUt% +&qMzOSpV0D{S&r7kNekP4Nyufq=WG#*BuB$An&kjA^7rdvUp>GoTLDNL(u*utO4heWAqYL1_Nc;CW9A0FVMjN#B{P;DR~3&D?gu17o# +GIm&kd9FWLK9w4uQ<%;Jp(h$oXJI-Q}vg|+^24U@lv_2X~DdRMUJr#ILBj(VblC$jU5fP#bmyso^d(R +VTW{kkHhTeFI5U_LLqzfNyr6#7n$E^f}nQ#l``WoxnWbK4lrKZ;QswkJpu*wd#Pg}P`=Ji# +(5%9CS7|x-Qy^+D2;Km+Vvh%}RDk-bNq&XaikkQ+ipby#yQ;Q?}z#to_xRD_gW +{?#eKdV&w7!~xAi%6R}=!P9u&e>Ig!{9*-{o)w}}_hId$FA4S8E%$E-SHeA%cWES#U{bh?_cnd}=B>- +9*a?z0Yw@CkdK9*Hrs)vA_>(7pM}BxASvaC90cU}E@&z#+z8`l|1BKAPO;uzgU}s!D9ehQS&eeFLy5NnM$KKv-juiijMGL7%k6d;p$`2(b(N2 +B#jeKQFYtWja<_eA1eX}~O(IXq)SZm2G6z*b34THio#9Sf$X9f;I|B1C&1mN0TNBQ@w}=VXN_I@Q^-c +-ei^azKbK%l-PneUwcY9`9SpzYy&5?k}apY~&=!+J1ac!HKjo0k!V4u!+APAct~$?OGrb;#|R=N5eFK9YZ5`OhojMhD&iA(RG^8kCWx!1JQ$GJ +YPHKZaQ!mI5t+{9OsATiVyNi)@tRbZs+Y}inGjZ^<7f4$7y|GB%Ev2p#ds`2%)+uj|zJokbo$5XTm9O +mY<)KFlBgp!kNQ4H~sLj +e{P{J;7tbxZIE8U~QN;^!U#{9P*)ZuVWeZ-UFA(!dw(LOzavFWxT}}L|@W;z}9fwQ74scxnXYd1>H_6UtH_p+qaQ_GcrApwMYoG!o*qhi9VZ8i5skuKltO +0Z<-^0>K++7#C+9&f8;T3OPQnQdHfD37YG3nOZ=IxKhk2Xy<=KcMmT*MH2(gyq%cZ5jh7U +`z||G(a=2gfe{+@8dVRvp$N~9Yd^r_)j{oU*DbEZb~$sRc4WFbZrUvy#9L|Ic#zDGV`dQKwpP-qe6VW +|xg?A(ZZ8>ngnO~0VjQ)~%-0>WY&4-~xf{OLY-^xQjBSokGMlok3b>f5tHZXzxVc%`!QSJMPVwfG%!a +5^t@?U)D09tB41Kl2p-Fp8VU>wYw-8dfSp~$=latC}h=aXFn;mvB&OCPl%ljkMd4cI2rPRT@qOI7KE3 +DG=q|iOgl7uNiBNnjz#8|Et@3-6 +ZiXmz7H9y%j{$IMJ17+L#5DLtQ4R*e=jkj$THC1LjG3+-=*tK_QyaFRp@66^Dhld6CUO9!@x9u!1&Kb +gMquf2y^**E3h{4wE6_UkboZ8uV%qO<$cKgmn4->&j*oA3Y(H5^*8#{rzGttPGuk)4)rb9ijr- +5?rmSUYD{G{mTkt^5NiSdi7x(y89U)f5mMefcUR?M>Iu3D42BS_rUp|5BDcNe>c=0b-eyX +OrzA2pp7w0&UBnCj&LGe!mEpL4i}g6k~M`ap;kQJMA4U+#$RQ*s8^~tpesWx<3+>cIBz_5Qc!T^t$$R@s@(zE8>E{0=rnOP|tXy*Y9@A#xN&wTrZAmx&3f0g%mfK==U*j73RmKv*k>R=@ckVSU8#rBw&gyX%tjI4WB2}}Srh1*gjdy6`q +BVY)CK7KE(WQE8L{0dt_^MqxK$(=v`M4EbYptC3;ouXoIu^&+z0biY1+;_65KVFTE%OgX(-ztE(BLDF +?T_%CypeOKmg4<^p%ZnQ2L7I}kYbWU?h*6O>R4C%Y@{y`dRX;5Cx`o>Ip0fDs?WRhctd*oF*jEMxvFb +Ujklw9*rT*`@+PDs+iS;8$Yqt`N7{zm>?xK^z0JhQ7FRaBqD>Tb2hmxaX1cGBl(B>dYPC;)x#8U|Cj}s=_tHMYqQy-pJZe8nb)oT}H5bAka +P2wg=&eecQ~s5j{sGxs-6m;^Ur^^wM~_LPW|lqrlU3^hk;|&Bv5f1J-t;QMWi#O$?E=e;QkuJT$}?t`M71oBR|d&$3t@QtY%otUou330QC$Dkw0PaG57EM` +tkPaL&|j?}y%9?1Sob$j-h2eDc?>}WoaSae5B!bqmsg$c7O=9uxJi^1{!%n*l!6FX%$7-nT3(An +!IOHr)}EA=_`L4g<z#CU@;&hPLeQ1_I +`-U$hTT-*J>{r=g5%!)P9Z|1ZYS<#Bf!2o6S4=*BWl-bqzIyNj`I7Afy2+Sdm=4sdq#8vo${f#@f;2I +?_~gT6F#?EJ2%mb@Ut6}d(HkmW{PyX~X^)W0xl0;4xoikJ6r|+Z) +a=a=1I;$At}AifBp&Yk#b4g8i9}{JEuRNp$|)rL_GquN(R!v0KYS5B%p61u!Q@@ZUL+!9wLmaDut<^At+mB;)94pxglic7LfammmA&+0oB^j#UxKjm@1M*&dH5}*1~M6%Fet$IZPK +HDJOdNq!D#QtQYIF@Gmqr`sr6Ocdhx!-rSX;uja_)uyyhb34%1V3g{KMaJk6uFu|^SQz7mZGD;Cb^_1 +?g<6%vQ^6go%W9#$S$vB_r;t-zsq(1{LOrnIej@Pc7Gi3Sqv}mcJN}j`KSc`&kR46IsFVTK);VKgic@ +T{HhE3ea$EsVQL2_mZ(lAL|eK-`ha!o+m$Ow5#JwYOcaA!E#Xvd#n9>^6BtlRr!{NM?`D=6upH}Fiej +czv~&0S42N*FVq+_lo^X7qp114B?;Zc_MJCfAF#lNRN$fq4ftW~`sm~JZhk{G)_eHcV_P(&%d9nhv5lI*1bgIhXZu?j%&SF4{g +x)Yi*P*TR5Gp&4Z)Do649tU*T(7wSDeLjPT@knA1!8ca46+W^NBov=IlY}PvU(%d4!KGtl4`eFcU7Df +y48#3nj4o@atu+e`wTBY9r%d0f3L<*`<58MiaUY5KsiglUX~x<_xoD`)xw`NOTn~avCWOATl`$A$Gk% +2!EA2(z{<5$4(`^(z`d}-PfYYv)Fa%1TP07mjSJgz9hP*KsK$B_p@$1Ei4H&3M&;O1ICqLu#NY#Sh1G +%;*!*PtqCV;?EyY3vendts-}eIHuP&y*+WFm~gJ;t}t^PEj4DYTGGn7xG#vjw?LvgQ-$Mnzv+0Xm_(I +Co6^Vk0I`SiKc;W|d5ZTzOgBX>wO;b!2JnNQ|CD&sbO_NMb)!>LC{o2Vh5NdtP{C;Q(}lcKw`X&N7}tpT5;GtBd)GW$V~sIuw88FO3Xi*37SX~wx!6T; +hG(pIT8*E#XaJWam8>fs{`7#K@0)=p}^WJkIhx=sZDJmi1ms3IQo>dO5nboln9=lU8Ah(@$VAJcWcXcXzMv +R(2S1uLFEpe`7e>pnHxJ#BX?2c?lOLZ#T +6No;fw7T}{QE(WIpNftAy$)20iI4P)(r0r@`S0&cHj1e$ZGeFl#YUPOU*WBgoguDyEF35G$iX{+#KXxr5OV~siDSt9J58Z^JAF>eiwKi^T(%bs-%{qX4RAqfgZmG4!FUW^j6?P +;ZoI-#6_mm7T9OMyb +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 +(qUzCHL*AgXo*&Tfa! +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 +}_oD>wY$GK8npQ44qQP9^>E8x~hUA4O@99!ZdP +(3B86V792Strp05%WNYR^T2ej6~b>AybeH63bh5R?$1IU}ty17iH)bI%wQ#j9uXN@{r?&@-wNPpCgJ{ +@A2+KH1Z-Hewka?KCchu&5G|L+R!zBMn}9lYs?Zwpo78f3qToWKB>!6wb&$4%jI44lGg`?1BEf&ld7N3^9V(Po-9rXa`>3xMk@5nA0H^-Yc +=KyNnCoJBK}ymxZzza==r!F9D5w~dp-Ah?u2L0!8GXQvVDCvu&dZqUSt6af9YV@>Y@PWRJjwHhW7ipB +-6z4e96GiIzLGM87mNV(T*#XBhq&crJ;Pd_fdGpfFqZhG4DPZh-lB+1+<->D?}=f7@;V6Z82$Vp}^;| +l-{8`+%yQDn8#ICC&iCTsfz(>z;p(r82{i+$^ACLR%oW2N{4cNMM)w(-JaudbZFV}#rndcu*|)EGoYm +MphxFu1VB&-Z!eu?L##d;FY8KjatB`U}fEu=;309~zDuwPmmb`QIQQf(ToR2-QQj_JOLq! +{`gh8ch8<7X;dCab7UlIOE1Hd++^sYaODQoDzBz^PS<@w*gEx$GY-Ta(Z_{)vIg4>r3zu0?!k89+LT= +b_y($SVD*h(Da9)HtYDLzED5F91$t +B!17f^4|}A-j0Vh3^3+;Fo`x?01!gpbFZBUPDxhco`23bk( +Y&h8U|gcnW#O#4f-aY+YlhzEmI0%FBXaOVg2bzl1<(7)Pf96GKd`eNXG +$2knS2TR%)irp&fm2A81Qk@K7 +56^}t#o%tr(InoAtjSTeRo>9+DSKDyY+M$%@1HRPXNx3VP?D*Jr9)NZ)rIKOrvSzMDqXE_s^q^K%=u; +E9eAtQi2@_%-9hh8yj;SgNt|B?F?^x8dQC5glJIxX&rDx=<3nck=-HB%1eC9Ssjy}M*r$$p)$wqQZ3C +*EDbk(rnW=|&%~7FS@OAkB{Y58nKN5X7YICha#v*{k%v +-!<+^*2cuT8Ry37i(Zm4`wR$_W-`VggQ3s#?%Wl&0$}x}=~yC)#;Y4BI!CmsCAu<4s2f8g|~J&va5V#rsPru7`u?yXwvC +08(aOHSQkFv(e_c-Enuni~h-4&$8_I>J`6>O`ZPF8izD-v#so(8z=q4UBBVL$9vn}-}Y$#j%3EBSH*1 +Vlp(wYD>SvGhl6NCgUu^w4{_GjdyP=2bwT~yyJ!szHjQX(i(S_BcMWJ_a&IDIwgNhd?+I#T`$O*G4!J +MQ$<}TBD>R_Cp0oho+nsk)MU>iF1lHFnWa~D=>AeSfZ(7>`DBi|n;E&Op-P94^^T_C)mEOV^c=vl`c5 +M1<+h%0%krH&23ZS2eRe>FuNUD#F%}ScvAAqM`_J8R1b&<_CD=!5z47FU-lxg1oXcq_Lp2 ++Nc)YZr%z-C@J(4up$Bx=~y7>+Ot{0@0GaHu+;`sE8hV@P9c> +mJeRL{NhIRP*o8Ztb{3(Yz|&|)KIw75&kT=Nn +?MAcshP;EPGOuG{D)rM2M%)E_qlTpB#6Db#q$wnDU3#{gA9M^-8B(z7SNvRgi$iGi0Cuwtg8k)w?~3L +u`x9~h)Sa`SlTLL0w3XHq#D&(N79LR4K!b&!hPZONAe!Bj9Uzlzbpz$|>d;6)fHeL1w7_94HnX3C(asjXC +6r;^TQ?3jebG9Ug$~;rP*R%KiN&nu#K+$I*DPa3dUKUB1Jy!ji|C*p|E^4a6IyPf6q(RK}S)gk>QwpNxE +2;(QShBbQ!f3HA6dP&b++(E_yTspd3s +?$SD$mnQ@gCUUaTmYv|S4i;`%h6fgk=8(unWQ#rgs +t{VZ(U|7t$y|g{MSGYq(Au_{ZpXc-TD3vP;YVoU!@^*88Ip!bLZQ?0Bhj$=#ra +s{BVF3p^fl_Hw`By^g$EKg9*ks{0?MNOwH<^o^>Fqu{j~)wj0wao-fvQ_Rh@1WC&H@L18rLmG+ZEsye ++ihajZBU>Of{{Car0PeI2nfbz7c!UUtVq7z?lp#g%5gMNBXDW4XY| +mY2G7Jgu5{kXg8Y|D;<53BxYwhv5IwdfS>&d%O%g{$(dC!Aj%QwrTLT4Xu{q8{Bt74kQ62L|SN8jOVb +fSPCdzp`69x|xo9f7X8Y&1Zh(!{{WWQjJfG?-lj2&NR +oVz&13U8Pa82JS%;BR0(Ej%{~Ke_Xrjoi-lBb#LpoxPQEISbFngVlWakLk(p!5a93RbP4usiv7M<-LW}YcoFHLrSGOD +A6QjUu7Wyub4QuVj{KkqFCX%SApy>L=PdsRm(aGSCOGqeF=N%t>440)*~-R>e@JTk~^a|LpJuzs5ah4 +?-Px*4i{-aAdrYwrSJaDqgYrzGo@k*@;pBIyp*Dg#PF#TP*8O}Srz-ZIsHk;Zn*z5A&O;T9HlHBbomE95qrnfkCKr81hxOg?mxly*CYHh++Oi;g*z;m~O%BHu#Ed;tc5LJzFcTuaLiDB%EyB@-)8J29pgY*PtBPRVXO*KLNeX@rJ>6Dg@sKp2 +A;ESFP6rZ>rMUjP45HF}@A^rt8kTRnvOt6}qv#D!BeZ_pY*(+-jKH$>Ij1@`nsr6STf#MrW=LsXlST(JI^rh8p6=^e^_pRpd|l9&=SL>!Km)GH>jv9CG4b_s(OO`bZ%mz@B$_Gy2r`$fb^kV8qV +cWqeda`?R{3d9r>8c|CBxq?%36e8Z+*Cn)#5^l +#y5-0wa~v{%V%H1&F}2Kd*|$J@9Fu~j8{w6mR3H5;&<4Jbw7)$l;$LC+dcXsV-V3V%Ht_xxcK@9N0{a +m^sndK&Jqc=wi&P$7hPP^7Y!$oEMnAr*M3!vRd|wy{P*z%&d;C4`G)$1VLp}0GR2^V5Ihq;%JSdzgcL +$^4uIroQ;As%A4p2AYTz;dN4X)^ +v4$=dxATu7ogxGs1ic(8VW3@ME3h^x`<8Vi)NB;%&(EJN3s%>-S0J*@N_dOl)Z@Rfe8q+F+>oUUeZJf +V5X{5eQIjB=xx7q;K~B=A=h&RH(hBw;!YG3B;*rR>cDFCaxM|X_Hz+EfS6Msw*E#d@NsLid+!w$iACuSzDJ#ineT_Gk%F8|xuZN3{fi1Y5RBqP6V_XUJ^b*Des{jzr(--e~*J$?_v?HZV9o0wY}2eB)2Bp;5F=!W+(xt(&G)!T(e$aG63Y}ZVEF`!^}V +zP-??MDgIi1GrW5%YlyBDc-zygazm_f( +-#Y(oR<8Q~z<=`q--M^uc)i>@h8BJK5T5#YE!tlLwio}%1vKL)87wRI7|-{tXEgr^<$(H42W$E!S^1} +ml^1+Gel@z9T?_c`$batuKXC!z&vZrxR7NWIM7q#I(sgt^-P=_3xv~mvYtRvLf&3>><#_3eY%A{gI1)x1WYt+iZKy49sdin3++Q$V#qcQ0OMS +qlN#VshLItecq77*7csWfq;>2Rlf&vP}v<9R=Q^=bNqo=Ayx8FqP2=;Bj(b+}&|Svpq^(Vv6c3JCrZT +@Xg-#&t8(xfE3N&HxFNrdx!^w?e_>S6RZ>{HgCzPR3 +Ldz%@*Nt|vu@P*~>xwJ>i(Xzq#8iHf&J6dmVAl~n9W4P6~W&2&!^XTg}Iy8GBj(E{?z&DI5 +Fmev6{Ft6*i&V_9ycD%ASra9P%J*%nntJX`SGG`+Y<(yCCdHhNnDs=Pi#iq)*7+WL#Tvf5=|W$B$si-JG +BY1#);FsC@m^mWZaIfUsMD$PAD@v((e5h~u|Dbm{KoxUbN|N=dR5M=%zWw?# +(UatRsrg23V1_a5(eb?h#Xo5$t>J& +;4$MQ6#4ObafDM$Ie)Th}*&lxD%a`c^ +lcf4&uAI75sqd;%yAbZ_WhIc +BuKh3|5p>E53~QF}`swz0&OmIlO@5sL6Vwe**sB2vGh00DmGZaim}pJ^NZAP}(CD9jR`fK6)iccsnmS +IFOM48IpLbX%;x+vdY;=))^SFTSK*3USg4bEQ=(_9gAI>@9O2ukG|p7oBhG8Ssy&){jzf`!>K&YtuiP +xnoT}0A&4ntXP;m2DEVS+fl$3wJpcn-GbEz**z`wx*T!2*YBihwP112{XiKAP~kH2s!c2Hm>V)yS8Ay +scb8L+R4`;jf5_9pZNn+Y_^j)pqy(w4mAgrJV!9?v&^?9%JAepcB|guk)YPrr_PeVXi;1XNWx+v?XM4qdg)0<6tMZ%M5QgJ6jN`j@K2&yFnU +#|#Ib|(w*Un;B#9VTN*9%)r{3yy+$W*$c-lwR`%1zRw=&OJ#&nA8p7a&cP1f~fil<$x27q%%$`k&(#hXjtPKf(MU)DXnM{Y +3L%hI#taEHU^<4QOR(9DrV-F-8mCh1bnGiMyuU)z-tB<1ADjjE@$g=X{lCarXCc^y@Oc^6*9oca(<-M +0$NE=4V}66K45!LT_SW|ecA>a8C>(cqLi%}N2Dy4d?hJLPd@75y)(Kl}%4{N0%J$0qjRE+6QNI4+uLJ +5(>A085)UtCyW%;l6Q|%}PA`WaDq!l9KimqkVw^eqLez=>h}%yuy52V47bpZ6CvZ0)CK6GzGZo-LwxW +K90_C1AW`_&!Vy3Y$NaMLg*?t3B!Bks97&ZkonlnuXiSXzdS=_ud1;;fDFnFh)r;`VvJ**%=a^Pv(6L +ds7jq4ZA~!y*@5mTH^!Vr_&Nyky!JHQ;*96Ydfx)61U= +srQ37xk>4ND^_$(C2U3+3nbLz$=P(JaAyvtC(UmGYrox+T-1A%(Dg9j(Wq+cf@mp0u1h2lIDZZmR6(8 +Sn!5n_~_Sukp=g0!O1iHh6xVh2=S%FH}I-@0#Ju6&I{1hMk@NlDH|H|Lu2=2BP)__)hh(w840ddrBJ|$q8f{_*EAb+B${6fN +Ov3HOZFrB`{z*`~$=g2HKm=RnZF7-}w{eEe-96m1g2=|qw(i>Tv+v7ZK-SHY}*M1Qc;qcOLe$~=SFHW7#)#Yd9}}Fn~CND<}Zuf4k~ +H|MwSWph6C{Xld|t|j5jarOq9Wr^!FF7RnI$!^%RN~(85G2eQe|eWCQKCU`j2_6$(+3mpD!fCO(C; +9(!{wB{GN3s!op_rTUre;-d}Jw~?gkJ_x9j(XYhrp&wRc=mx2klR)U?kR+G~R3wx>KA%KhXpTNmkd$g +~S+&!90)%~flVtp+qxIv2U$m08Y}Y#7o$H+ikA>E(k?gzD_>90E%5*PYRe4V$r5`qZIK)K+*o1fzsU@ +ibJI#q2Y_)F5Pau*7^vaDjdp?H>^^BZOcj-hrs~e7KOfn)T +0Eq2k|8*cE|f1T`$VP|su&i)^P}1ytaTNh(l1!o{Krze8KTqE$I9$De_}l(akK9k@K%afB?I2BBJ|uh5cBwW{5~_9iJt2HDz#=jHfe +9)`)Eu$qQ(eBpZEd(kbB!k@mDHlE)+%O%tL?r$klk`^Lkoc{^+rb)zNzBvd8|}#*I^#*765!zrS7R_( +3Q9`)z=)MGN!7F6&w+O~1;9Wg=^nXm%7Aay)ATgWlZNtiu5Hj-F^|gni2kXe^j3;iPDkf1D5`bLJ$kA +zxMV_A!v$Ox(sYDCDVBng@!TR(?rpAVwM-p}_7wEbps-qPZ@#VzfJl7jw8^&+a)U-uym^4-!@L32mhY +32*mx2^cQN%s9pXc+}7l8gY?qbga~#2b5aQr#GuH1M)0Q**Xexeivk&bO-DR6NwP?+}nrjdnKu_R&`_S3hXbKiA2=Z +RRe#SfVtY*XW^6)~B4_fk;TwhPRY)WT{VJLi_h*uV~H8}x-&xvC|+3FIfZ``F1g!(2GvdY&VGak~9a7 +N=)mrhrV{RD_lY;O1j +a*xG-YBW1Yh(v3%JrQ=-sl&Pb10>`Z5%9qB#;C54h9GgOh`GzP)8N0j0cy@GczlR_$E^0{EUZi0eCY4 +o7(Z_Po)tt$a9c2WjJy0fjYKnNN_TBWv$M;t6iVko!FE;?!SBIbvSlbJ|!zIXjN88W3eF3qeAfG8s6E +)gj0bXwyzs;SGF;WW{plBCYX$6iDnXJ(I&On7rjoe2LQjgcb(F1GN`?gCBF6<`V{--Z>AYf|K}p|C;g ++BYcnC-O26OCfi{7N_v35%cjKZwi~Q(6^lx_m%5wi?!=Eb2pIbm6TXA=#xMZ;L!<9yc#MW_@61!b6wK +ZLD168|+Fdlra{zdLyMd3zzQ)cVnVv;R+h(~+VSF|;K!Rh8ONbKWVn^sq}B`ANHg-mt>img%{Z@pscZ +tyPpwO&JrZ|O{U7efv3t#ln>8xuzM?B>dNF=qEA+H2Jmy)o~V!{fWx@yfi(t+4%hRKLmA6cc=XJbWHE2^^2>>&uMx-8Rdz^sl3RA96v4vg-0QK)5uZ-ghSvC@LLzoPq!8ZpX +3ks3nt=8Fkj2MUh*sTS_2xn<}Tiy(e6e&^%@c+E=aMX6f%I`fhFowyviiT>wNaLbw@&Bapvfgy#`a&d +=nZ{rY~+a+q^#BN6BYO5>({7cY8qwV7i#v!SKsvRg1TR?zr4ik4l14b}Mj@>LDuys*qqeO#9;g6ms +g%#w#*i+aummjD@^8kLLiw~dK^UF-@({`oo%rHvp&H+qOf8JP$UGEi1n2FJz=8s1=yqR=$Dy|<#Ha^^ +9#v3#~ZlNT-=Y|=S0@XMzQFp)__3DEP27tE~IaKiTd +ZtbDi4Z|G-mf__@n3b0)Xo7fh7G}&!?(oHuAr?>SOPd48=BHI2*ZoYKCQj<)nt=%Ufx12DoLobqXBGE4llXv-H{JOkUp`eoIYovnG`s@=a!W +C-HK*&#|)Q7vXBI^82opTE=Fo;L5e(I{9IH1kuIldwPWd-|lYxoQo*YIpX(3mevu +!2Ehe>lr)$YAkyGMPK{7u^iw}MISWwdMUhk9$2I5ViCOi7$oM*a0S_;?NGP}Ho%RnA$FRKLZ)Ynak=1 +N+MF&Tg7y+kXo{2+)H*P`$~tOYp|^&EFUYPCTAo8YzCL<@XzaoTz5Wo{@F_1I&+A(>Rv3U>0v!Uquj7 ++x=X#S`_kwm!N_!%xN5p(LfNxr)Ismh4*KW3OJJw9Skl0XjyxNb?=|Yh9cz8529-Ub(2hGA&7PTF6Q^ +|NQ>MdtM#R3>kE%h)DE*u6#WIvz0K%e`Q#7}sEoQb@7QcZ*_(nKNmYvyv~RqkOcBiFm45Q^9R4bTsN4 +)a79ALj+*il*1juh_9#PG+;nO_WD^0vnAj&VEzkadSs${j27~vh|JwzYu+}z7E#%nWI#prE#G`T-gn(@FGzlV#Fb#ZnCtKFxiI9A~A)6Z|Y3L^9 +%&=i^Li4~`oIKr&jKfXlLs**F-U_fx{O#4I6Pmil6A-c^O;BVP&5T7wR+TPS$XuD*j-0zC){K9GQ2lF +71$Yn8FwtlN}O;>wsv3cf~{N$i)yiOk*)%L=%whfzjc;BABS>kqa}ir{fuP~g@&e#^dUm-k_vQNuB|A +h~#*c(R$pexU8yOHuo%RMm5A4MzX_%YPpP{cmy7{$?cW|Eu5;C*J~rZH@oz{hy)XUmoKdZ2Z~&KcwH` +?LXwxn1qD4X_R%@U)g+=Z2H4+v`v#l;WoyZ>}>^G5}n+pQlrnMBi6+oi8tWE_J-1Rp^x@vR3_X4ob?R +rA-8ye*n)@^Pf~o>qg$7I{8!Qu`*`abS8R<8(bil+Fxx-TU<-P-I3(G-Hqs3}HdnmeO(@#+B)p9O;m8TFh2M=DRvd91%)0wmGrR4hAVjr&5B +H8W_pM+2QTy7>IU#l|OLrjVxpJTPtljmy*7+V$Zf$Shl0e^thQwL7qZLoo#SnI(p~}unH +IF>|af$!9c)DPYA0K{qVw2>e?wDFbW?e6vNoe!a;O{q)LDBZUA +=@1hQjo{Qt?$3-GNlHzcQ(u+-GHXo><+T>BngtI7nYkWcbh?N$ger50{np22=0`Au&7eH~eK%6BOgR$ +f&;1Q+CNj`D3dt*pydaPlNt~rS=l=fvy%^~bb^G3vs(er4f#Of^cpCW?-r8^~a$${2&=ypo7 +fpx-e4G21Xt8(TVt%XkTe>QrbawnA%{_*rJ)OH{=97sb7 +rs2|A`9NV%KWOlECB>=UF5_n@zUVrEBG{@B8Fg +gQMo>6z8$Fw4=L}JosNJpW-+j@~&wyiB0Ha}!jg@r*lMBWTgH&z@&@mWUB7}D}HD$Y7o!JagaR*=LX) +OiALfHcOdQZ^WoS6Acpr^F6fLu$_^oShaJnP*?&%ld;iwe-G>{Pjib%JWAyM#lKAp7okv1t7< +3X1){d!jR!|0F7MY~#28`b}VMmT%hUZx@+gam>Cazd4t6N6Wd`D^~Sm)0SJ_?cVp#|3J_bc2mK11+W~(#+-IX82u9&3gA+JP(>O^pG(jLFMNkyEDa#_8)GYjIR2E`eAKoTvM{V9l6VH^_5|DJdK7FkBk3Lot^dS{Ev#E%Z_~+(Hu#On6}f-iYq +*{oO?P>RcsnS%*Q~cdk=P9RFmjWYT@Sa?ffexa{cxKN`7SV#?BOLz@1}jbR^W$2;1;A|o4M0p&5K?)M +1_NIin7)b*K>qr)zGxy`Pp!KryL<7KAcTzO_H!e;;v+*JbbcaF?xk^Z2r;J=&UiJwBz=-*S7Bq7p%**{h1%&x1R&gZ9fNdk`~teGD~U;m2nRhGh3Ixc9U +}0yRyGvJ@5tWoj`Un*EJ-kvM%d)XQL#s5)V<`eW%{k*|PlOS`Wn6y+pX%JndtC_KyWC*R@V64`-GrIi +_O_(Syw#I2OKg0pRbD0SqL3@u0S0brp-2ep}h&fwS59nD-{pk7Ym%bH +aL^Vhk#=>MY*NwK5`_+8;Kbnp61Pm4z*~utpn%LFsRSd6gKjU)1Tb~mZhp06=8Np +fxT8d|8#GIF;oWt7cX)nA}6Gb-xsGn-k7AGSdS>~6bzjqgIL1s!Ma^n=(!a0Fs_f+@pxpJGd`c^@ +a!KYvGNkA;RF;TV~OJPiz2y@Bc+|KVoOb)?|nC3e;9ol3C^r3*L#7|t_dTDQ??*&|PadFQyLpbz?+?s&<9rcgdVRDLI-vWGO5BFV~ddKQ#)u$O7~HoJ7*^inlJc`l(@O-_hRo>&j{ +~KNmp3&^&SCrqdw9Dt5?TnUZ2e21*j2>6d^xoT@2MWev6h%o2#uyYu5E>^i1YxL8g&d=;{8P+)&K9ggR*=``0Q4SJ9j`_2X-%3UCj|@_P|A!=9?1VquSZ)k|(RWR>&)U>Qx}f$?cDN +e|#?MBZUruV|d*E+H)(s(i43ku7Z +YelAe)Ni!bqI4+5{VVQ4keej*o#*F{#UMNY^lPNonM8K>u{eyPa*`?G>8`Pu=!FR)aI?*yQP63V-Uz| +PV3n8P)?7m8cq-(v5d)1%&aYRC7Im$1-IdHQ%ED{N^O%)OJ(q@+f%+nra3@#Rke2e|<^8Rk>GNy459U +h+gsw=>2|;t>9P<^?mT~x=K)5M_-niq{0?T9xbGVmJ_B}35Aw^Fep(ENu_b$w#n}No;hhHn7Sy+x)=> +L?tR{o&=_`Lxl@U7+QAkEj=4-eX1s9abv7*DF6$Pw-gNf*s8!c!)r3*C4MSga8|Sx4_M@V)ZX9|-A%a +a|GbcXnIep3!4{-MO#NjfMGFt=jkmuo8;tE1@_PZ1dez>&7R3Pj`&Y?{l}KE`Qw)*f!+;q&{m+*sPQqZhtPS<4KHHkQaJGg}7z#ZN{Hv`YR&mhi?U`|CwN@8}IhWFz%y$r$ESPslYfYk&!_0icS3I*;Y~-(1x^BCB#dx(c#uGVKp^z#hfSK!s?PdV_c{MF)6tcoBr$s<*pFM!T9kKV +t?bFpH;$xkSy6ZYMmCu*!a7Rt{U1&C$ImJ>EdK`|E?ctlUWb2J>>s?m`-7!X3dc~I`pF%L-%nKLxBqJ +H`Oh5x|9hADB(M7G9KXEUZ=pvK3?lt>rIkt;09i+wRW$$y>=Jak@;WoXWkAC}>F>!a7MqTRA6b0nBdH +&QA~B5v6n_kZ`T>QmG>`}o(jgJRND=*td~!JjN`SgAg06~!D|YCOWHLinS!wD$wUNeP@F7Sw0N)6BNG +sh{9D|hq@)?Uj&G?Oki-ZBfD*kPnUmQX0lyrXwJ^GorVljT=4bu4YhfPe4v$hz^-LROqI`j^MZ*evtK +DN$&ZrJ&(zl@i5$uZ5+CixwX1c}eK`N21+^~QIRayiK>bd!e)*c@Mr$>Z6N7&|b~qKMqXvg~O&1R%I8 +y`$^Q0Ft}b2ZZ<90PqD~tE|mS7v5m|`VZU8??|i`58*Gwlp;O}&X_sDU-fjB1+_*Bc?WnT^@CY*90Yn +bbwQhtLi~J-&faqeKjn%2&tdCrfZ~tESGZ}GJVEkj?V}RH{ciAq1matx{tALx?!_gr-U$4b-rdV`H85wiUUaqr9!*2CU4`5&`z`C5YL-z?9M?mY}4SVT+9&bTUJM7&Ea=W!ZgbA<$2J(5#mY+6h@$q`tmr +RH&$<7njNJ-9&tP2CBqU&{HmO8*|IP%?+Llw@G}r5+AYRiegi+f+k07KePHjGZ(&-d^3FpAbTgMHui- +bj>ihSfd8nYz?;fpgQAvz(9gklgni+im@9BUaxT$f%M*1_>LMSP=E|RLY=kJq;v@D9vFNzJ~o_G1Z#q +ReT5%`L0_Jf5MlYV>4UWnrIl%=`(ynK!dTj6)?w~sL&zjsjP#^M=~oV5SzHD1dfB6s;_dXvk(7hZPaW +WP9&9_!yQ{Qh22^9E$7H<~bg@j_&7cj3O|Qn=UGH3RxwG=P63Y2Vzy0*>727mbkO@-i*1QANvP(X(ZC +*izS%7Q)8yNj*=5?9k#(zaLs3zD0*nx<&+dWq0#+6Q`N8MawuypcZBir|@|&&t9xH@D!@@;W3VaO3x( +E(AxwX_L<#S2bpv)uW85ETdU&pBr;yC+T6MZJ +K*YY!hG1{}S`l!32pI5fFTXB647HX%XbQM1^y(9(Fes127$EZm$`-$3+ybQAF~GMW)SAvn!SKioAfK1 +hkt+^+@k!#9aw16qzt-a0WGP_fW{@?9f`AIk;@(gRsHA`fMHKjB^y1_szja!ktJ8x1&S_!(KXqDu5;} +g4e!c1%H_+Fef7IuD2UgquQx`;hO=`U2AGcjN=4W}qbzc8wTF`g%`Zv>pzMI!~(^}TlzsXO5d7EQ +~c_A-^Xq%2-j28>~FsXC|Q%cG}4&+NSGbcpk@cNYhhpDA#7low0)45#cCB +;k!%*1_Ynb(0!9e(n%5JbRZaXB_4c4N2Noq;PPraCqo=R|$; +h5mF2Rag6XB$nBttsP&-v#v_wkX4v!2D5m>Cb(hbJ$2Dj}-m9DE{qU4wq4S8CuK2syxdrrs3!_c9*33 +2b=FV+nv8Y1`R%&^k(I +=^vviH32}_&q0~KR${7$^TIDw|tDn@ymPQi`kFf4Y9fm#{RqafQ#NTD69xM0%vJEcF)hiNin$Gk01Op +L`@W@)AS>H1SD`i^EZ;VMg`E%{uJogi+^!57q@ZvS)Bv=ntM43!*tEAqQj>qo?^qcF1EgdRfg-Fv{Cf +A!0aR)&tkpbq%WD*)w2dg%3jG7558=-XHU&i3Z2!gX_D2l5ct&dWU{2j6 +E3uY~Ti5jeTb_xI+sJKpzY9dX4HN|h98jqQBpwB&F)P>tes2V_f*Tl9joW@?P#axWEk4>?nHGl$XL^@ +ly3TJ8Ddp5Q=sV1(X0bMA1g3BMmC^Dx2HEU3%FEa{mozpTa4vUMzm(%6`8o5%67a}fkD;-}kOPmyYKh +HgIdYkkYQ%w5-O|}s0H#@gIZkkxyZjSLWAWg~gf+Pvpkg>uO{cmzFdOE00 +eEmadUY9hVUrqVP|L+al&i-G2*x~Kbm%|v|=4%-y&Ej!<>@S5?^9qNkd=1U55A*U5B^&+=cpN_;bp6S +j`G4n%AFj>E(Rwq4_xa0}zL6#V&aa`#71o}tH5g`X2#Wy`0uh7!$+A6(L1HGNfXkD8&nO-OUjaZI7ax +eg04f9}fX}fwHOof8O1}01U=c`#08)euWJW0Z&zSrbZhxh_txr0!6&X+#DHO3_|a*A?An3t{j%)Lob0>LF|Bv7Usq(ZXC5)SyM-2~1~=mY=*QpL +#}}tzclKQZS(Ydm&@VnxcW8ar9K)BmSP$dF0UExXT#c}{3*3ZAYo?X?LWuUeS3GkZq*&bN*}k6at+n7 +vXo5WJfCtMqU>yOS1tPJE8QX8$pk?E?H|L+;8|YUz=bzpi=vO!ApWYkjS2yRE_vT-5nM#%>P=m$@aoQ +O!j~=5Ul7uc*od;|eq7aq>^r|om8C>p}m@0uh&M_ZFM*`{Wy^6(|eno1LI;F#_d1b+C(`nbss54U*2R +F-O#B&K@nHl3MGtd-KX&b{i-nUVG;GCmo4{haKc#6ZhlYNPLaeEn`X3A}>TXW*KLp^nIO+#)jY`d`Zl +hcT*0`43Q6yg&gh-~VbNzN2t;dXWJu9ovE$x_P&y*viJt3-Q#X*62=L +ma)N}*|c-YRs(fbn;?IpOB{UDsof?uPpF}xVqZc!|A@5lAWOui;2V>~du6Cz=n;t}!s&E_j6--Mzs8;&Yz#VD`9 +2o7HSByG0)jhQ7%^bmrma7)B6jZ_f`T!RR_SG%)z*H(g($M>EwTw*5!3pXJO^RTd&vHMCWvKOEQ#$9q +*W}CZ%A>s?|r#x&8n +2U-;rOZvbg9v3l5Cd5v-K-d9b|T%S{3#uq_~%Sf+Ha9qx3lOwO*1Lf)+uwk=?z1rHKPK>tMs`!jFG{% +78dWt*fUe%)3+X5>(^r{50z@?9GUXD>rV!6@E2Y{B#J7q9O!_hcQd*+UVk-`}O{uFL1;ip>1Ro_ii5c +h^Szdhp^=|81%d5Pd>FAfVXKE+Y9LM%beY#!a6$EX*B=#h@%6>HWOKc^I>O#Wq||oN@zLKWLVyBloib8R>!J-B-D9Ti3#3p6U3gE>nrzo!dB8mcZG;_Yctt1k4 +bIGEdsgi<9UTLq>FaD#g)cz`>Z8*8GG^6Xvg{$P5Yx!%i2++`CPi&lNU54vW>!j4uJB^ux>xoW4~m(f7|VoeBe{QM!v350+dl0g|7Mo=8ZFbXGN1ZRkEkx?N6`ik&3 +xx5hclP*pv3I&OpVI!2irJz@|W~6#qb +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 +qI +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 +!HnG3-BvtXrVGv-*T)Vj4w{i?{05!{)Wld +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 +bYB{LQj%+14(h%vGfO$9g5Df1 +7u-_|Dv@<2f}UlkbTi4s3bx~)O?8#b`RNT^_p)70zHJFNw^PJWXFYsSyDq*KI1{Kx?Ky0=^LaNx6c@~ +h74^s6nJ^fE-kL>hoc12cxM7XM$zy1$M;!SWEjsL_yQ4MrJe3sUv1NSHLjej?!>FIvZYV1c-<+A6*iL +Nq0cg^BZ82QG$YHJ^C+KI1njiTsty>?OlqyLiy4k5$$=g0TColdV=H6t*MlU)EAqf!Aa;?rQ)S1`p{`b9#4|k7@i1f&aJpV1LYnB-qi39q;5o_(e*IqlQtq>o6o;x|f_WeefW=0>!wrCtK#hE6wO?4w2Nd_wGXOVK-y{PVzl)I*RS43EHKRT3A*n7t&lbOz= +Qye`{8)CqU;{(N5;f5q)JJ8Ql53z${v)6n0A}sP$SE9@jf$Y&4+w`MwkSCA<^Mgo_pRLUV@ov*MtwDC +7Pg7+#g)?N+_kPye(S)l5j)Xds&<8QLT1y4K%99+nrK6$i+_fDfQ|e&6>K1o|(W;#(y8|eU#6_Nn^Nqh~u-UhKO__l;w +zzaHF=cFL(P?i{^5RvrfZE6cpF{^@wT6^5kwSc(9Q6vo(vm6|)$;;*J1Odb_c?z1~NEnpumQTu7Bkbi +sa&_a1NsvNCau84A@GlLoco0<#e<-5`j|}-ols>TPj<8)`x-B6Td-&kX& +fpmB!#_Ns`mxK9YF34i%R^P3Zfs#5&5D3W_v-c*rzO6pu+!#n=EXGGa&jnD^QOGkK}lH1j)DqZ^2*>o +Z5}+9_5^o0@=?dDjf5Sp%2Pk~{EhMF;*2<*jvyX`&z(1<=_4AoQ?v;cC}%6R==-e06XxopxFN;-ecW- +U7lz>7b(HxM4<84e4a0%Fc9NII#U*DhyD8zj8jqmpEb4imQUp=?l@bo)afn^b+z=_hSLO^K;$FU>OUN +o5UPd*x_V#+wSY6A{NL-5Q5sE60&X1=~ZzDVD4xUlQVtVk7SISJ=A<$l5r;{kEp(@f(vxa|8F)H#$hE +TND3?U~eTpu~e0ER83>!WPfP=dW@&E+=%ugco7A=RTd2D>$u^IZ_aaqN-P3^Dm(pzGrbeK&dVeV~1)d +>v|EecLr3o{S-pnS11$gbuGy;sc6&q7F~R$AGl&qD}s!%E$9r5H=@&Hq2W&OH`(At_4+mC0x*-Du=s6 +P(7j-O5+kS>&wM1j9}xTgcS4_t+hzD7-N%R4jI)9lv_iVYHN5ZUi;cbmexK^Jj~xZ9~ycZd`gOh>2amduP-x$TQF2+gD#pQvWyeA(lusa_6ttDTUJDyzW|%+7}Td! +jS1=V*?n`yeG1UR6$uR^zBuDjeMPS@FNd$KL>zh5~#{`dc8?~b;+K%&@W^`pOD${OGy=r5|HFG@ML+2e~7{qsMX==IP4O#b13~+SqYynejvDL*h2SN5iFEa9%)ZqXEvX}DLI>c?$FZlb>#oh-Fr$(pl0p|6%s3Km_>6|6b6wuBDCCeW_w#mDd +cmT1*n)Mw=+46}#IB93YgGc{eq$5bSI}(!vIf(6e9zb%fi{-Ra4QE_d0!N9TM?PGn3sJFvW6S&h+w`7 +JTkjdmmt`e&0XcF*#y*&}wu+Q!n^mlI9XZH*GJ2&jJ`vv{%hW+jo3}^`%JM%&bwQCyV)CRm!DZcVJNY__0*E +OeL#=ckFV>jF~ofk4xTZq>~>fkb`ZkH^FG(>Ii`y)loQgFGHDSMwkjL!aHo<=81>&JvYPcJ@k74Oh*W +W=(MaI5XqX>)2qF+D>zc409c1RdkShhr(1hGVwTYL%lAx-J-?UWqij5)T +N*c0q#72VF%c(v%L=Z;L*vWJguc5C +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 +cN%Oi~D$^lfgB)?QSYq^8%VZHMk@t$Wzik#p +6voukn`9W%$J4;8Z8=C{}7EF*nsZ==B6O;;CUk0eWryP~nuEKV@PA#JIO?hdIRGXLop`Mx-)XCxxM`u +FQfk8?CWvacZXN5}fx5B?a5`aS%76>$jVP~MjV!Wj6MAW0NB*kBY*Q3%T5Fav)IuM0vY(b{~mPJl}?P<#S2UeUFm5CN4d +WEF{|^a69A=T?xl-C@nDU>V3@ybX+{ae#6-4a#Z^v(8#bK(2;NK#BuQo%>lmj84G<&>ZZypnQUWA#e! +{RI^A5uoWXg+J#vSabgslky&eI3lG#fi}=>=Ja@UWvFNd_8d3$w +mkC5n$qavEc4G#q8!|RP|a|YnhiSf5l`HOdd*4W~0i?b0P6xD|FCWqPu)7^Beg5#*ytCA35xMAGu(J% +vt=V-4O(*fA5|^Ki-tTdrzPrZ_3}jC(w^K<#+DMx2hEA7cO=8>p`Fj>Ed3Dtey$q;fDsRaxK<&$ajWlp|>6*>0a?j_mo@1vy+7Mw!dW5`ZQ7wXGp?rv!=bnpZ@ksD5_TmNlQ=GsUQ$cD= +ja6XlC^sE*s8%QJ)bFEibb?o=xe>~Ka(5_0P8E@Bg)g56CI7g#LQ$w^J7gu9Tl&b&e`Y0R56YR|2U!9 +AZl#w8T<2JM^|gKLm^voTb8Dz13+4lUkA`JHf_AmbyS&0zLHZi>q}xomv!l +0OM~MfrOPi%t3P=>YXKrDp>?)#vW^7)+T&Qq}!z?DM%Ziu2u7;%lg=Mz_06Pj&E->k`DzdSfjoN||>xDD|>Mq3vyAv&_GXGR;)egGjG~Xi~;mR*#KY2z~J4!)JEc7^6d3$#UC=MqIXKMMCf}6Ko+}iH +`v>g;=m@af>YUTEXcIoX3}hf=2d$VHP}&gG+I5Km29Pg&CHcHLXKj7~UIR4H(=st +o*aCTM4r~aJ444BEBp^Rn3VynL4vqt1Z}u}!ASMFGFJV8Gt)_S@NuuF3hF>lAmS~?@t&A3Cl&$`HtfarDDKKb>q@I6d0nFaMlp#avkDcmO<}BZ-&&~A~n)0eXf#k2vDh +nhxVY6V|T3`79%x{DIB2cpv9Is}hFMH}H35xeNapwB?cAovsLUX<6g;O!YlXCAmJ +*w*8`Z8)37vbiy0UDpXxh+n%OADW=kcOOn6cx_UQP+mi6&Y=R!}bKYK=4Tt1+3O>YPt9n7g6hd?iu%R +kOR8y=S=w4mnQG>jPvS`OuJ=KJ +idY?si2lna-H&n+^ieO0t#4+WTB8^ox%}#(g+FtlAtj?{2O4la2~l?l(WW){B^H=j1>y>~7Yc)y3(Ku +Gr=xt0?o~kaBfVjxhpo!|M9B_5YIaclF1`Qr9+i +XtDlQQ$?hA!kA&vgnmT!>uLB3`ZwA+0yDkJExr1rSk0w#Aji##ksY^Wbhz-dBx_8FDUOB&|!`cH+*uA +7h+~1ru)A$FnY{MucmL`N38fiF8e8Fevy7!2pIsrGS5=tLtu_{{#71vSc9;39_2vuL757m6R+*1jc{`6 +OhV~z<&a?FQb6kq!^$!G4Z~BAX&kIz!+H#4D$pOC~^u^K#24o)GsGl3Qv$Mx$%Fr2p{E6XJrRQ +rChg)c9@z!Y{iZc{G+YKJQoaPJTFh2r +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 +BR*$I@tDX0JJm3{?6|dfO>|W%bcG! +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 +!NeEyclcLa6vt&Ka+#?H^4E{m}e>8 +Fy2Si^e=>&z?!u}>sizV}^S>_;SABokzK6p9_Oq4><-Ten-W&tvv>N0AW8S+nB=G%yqG<6#`^f$H42g +2$O3%_Z275p7wM}7Xj3<3)^S^1PJ&OOZ%-zIU^TAG}XPgWjDYuERmT(hB%Qvqk<$kxIHMOWjL4+K8^c +y@qtFIbp;%$`Xua)U0|{sqb#70K;g><0SGzkcN|`IWW@`a#^&Ppsf&=a+7lq`=eC{19EF;s}?h8yld7M)gh=m_13WhFaA2PwQL;O9Ax8^_%a)`(Fqw +%|Yuq~KdK1m9^PbslYn(MNzyx@f9?T`1rZ{ +?KVQP~*X$zK*BZ(x*$+linF1bPS6-e@kzGOpo@HZ}%UKC$HyJmx1`OV#tRb>t#t{%$fi$^^l}*++xsH +`!@S9|fij4;0#!A`S`?vLG@cV7O3mXnx3$c>O`mB(%%PquB?#fCun`CSTmMiRXSL7>LaoHdOpLgIuOJ +oJJM{WHa`sE7CDMkZ#14nd++k0?n>m@|%3N9OE%LdD}#w<94?)_8;aHJai4!{m%1 +zh`$6|P|U6#_?G_B4P6hk<>ua>T|1hp{}q?11gTr6uc*Be3BMEDu-?VR;&ySpcy+jXh=TOH*X!qgpGA +*dYty<>#JdVY2+#zkI-;ub!|_3AnNutIK)apaaADpPmC)H;z9JX?sT*ei;91t$gDKVEHn%bq?Y(pFS5 +%dpts5FF)>N9axJ|JG$QiSf68i{M1$QCofO|Efr*xBDb6_=6AG<;g +*!R6qTOVSoOsJ5}+_E#yfXly|!yfxE3x_KsxVPzxF;?FTga0W^j||8~utF)L#3oXVd;1z-yF0V+1?!w +aZb@5S~&v!R%+w|o;^9bx95kxP-f_lYP?%mQ=B0%>_9lFUB4r_03&HTNmPFA+2M!prGr?0OEWSm35lB +vXMr=hsKwm8|>C^6-amOA$xd=kakTur~C;xOwykXak(^oqfKM$@7+$uNhoZOJ~RU&F6j{6hNZ+7Bxzh!e~N3)S@i0a#Vue%|(*{KqFPe){nC%J +qV35}huw@a5$y-=YrLT2c`oin48Jr6&OaTqd%w+$eg%s>>*z7~ePL&O_r$hXhC>ZY*j +q6+@irzxnQPcF9a)+W|BTD3Y0txEeB|hl!Z)M_=LHe?spE`fmuEL-WQN~>p6{sQiNq^3{celf*d3m;48pYE(E)dS7w3JfD< +f%|H2!hm9>B@9tCoCpz06@GCh2?yvN~HLXv_hIAm=!yv_bb)t;gqOgZ^n=% +Bq!7ELju!&>-`!bq!7k5n|RYn!k@}?63^uZ|Jd%?|+W8p?@HwSAwIwNBUsaWw*(4s_PHb{cMO0W$olk +A{8m;)+ta#Zl4nV79PVKolF@)19~`*65` +9;B@2Qsf?Qbt~23BbYd78V8(!7F;O>7ZaVK7I?fwkik7G7-RI_U%D2)O_;A`#b7zK +$&qR5=)=xr6QUpUB9eaisB&(DfJ=TLw4p0x9&A^B3196A8e0h3t^|_-J$*=A4a7efC5tU6&_C(vDY +>mzDfq6Zou(vsIhPpKe=rqZ+=r6HPCBG5^J;&+hTu1!r#Bc9UI6OZ$j(_;e(vAg?gyh+GQJ(zaBz00< +n{P=k&>{CvAF>iiemQ>w@9iXd7jf`O+b54tNcX>V#~=9k>z)4O)=qz^Phac7@!;D%c>_i65K +-b!I6HB$>#nTZiedJx~b%h+tC~7`q{>-6;`+NwH;5prPB^iERN;3$_Oaef2!9<`^hu56mI=x1%zN!=qf$@#LZ{PSf%;5z;@m$7P9{xg>Wt=e=!`DYx+ +A3UicxYFHr2hoM{fTl&mB*NK??K=fpqU*KW!XavxQo}VjwPuy8<0I<1PWGA+uu}hYk;v#M=c(pAWa`` +FmAWsZ$laF6A!_=oqE2qRSzzAU${9J0WV3Z0w&ymwJo9Ziu&3aKpxKOQ2W0Db$dS@qJ%W% +cs`C;&S1-O@AShr52N~Cw@g)3{czds76*U*F{(`!&5Hl*tvNg*TR#*dJmWrAv@i`H50&Na1--+NSmr4 +n0YS3FSdgmAbE?K}E8Imt~3H`fR<@2?#aq{o2WoCsr=H?p5k`yGvd*@)ZD%r{cZKZCwzlz1#}%tXxrJ +3C%kcN}xN%1}QBXjt90Kek}`RDL!NSQS2Bo`Z~OR-CW>4jt5PddAxPJ#{7W0xJP*TySys3$@6X)-Y>d +zFM;Uhf`O?)IP*55e#_ecyuQ2j~pD+T!y15MP8aFqc*3k9iND%F%&_v;iJ1j{XQo+Rw*XS++qvF)q$X~jEqc@J>1kZqV|je?H$>l4@WZ +&`twKM1YMbras)0{1Q$B~;sr*Jb)DT(h^2#tr<$}Xq8ohM)z7zFFTa;1$s_POzs=GqiImpg*^D{>Wq>EYn3<#>J8EqU|sUH%{P$(#bZJMj11G&HH`*1wopCb^hN= +B1pv_i=m~*%G6Zu-7{0vyRkM+`oFGntkITX<6J}M6tYSpq;l=MA6GIS3Ur0`S5I4U=!JC!<`VbR*xARs;{i93Ao1ORgY1y}}sF#u$-3FwNdFAD9I+eaY##{N)5xafEuT({4`rz^XJvJeb%jMN2c$JwD3U(_Nujga=L$j|pj+>Jpr7%mq-I;S|>zC&wxqzrj}U$%c{R$&@LYRDWWX8w4a*$ +Z^G-S%dFb2zItMJoOoH6ip#e2?;SrzhRiDdHq~v^zUMc|rU%2ci|k@ +LqD<|71$KI(Rc>41VNw7H>6Af!@u4Vr4Lw$1`Aehl`R72sx`m<|zJ2tEuB1C3lB2cm6830=>JIo~Yqk +UU!yJ`{{n8w827v-0Q&B3`aY6Dk*a>zYQhdqufb7B**=H*##R}E1}bULBaIMC}n5BW+4YN+&FH=xY)&@T1Gl9KsgWeYpWR}%^k{%#ciB3ChnC-{5 +(FFNQH&TSSq-DgNqooqiDW5J&;Xw_F_IG8$P_f!m`|Tw;}Vh-5&01c)C^NDZWG|cZSOobUGj>&DtAcl +;!wAv#QfM?A1UqG{XCrh(>woz!ZaAvSXOEJf3Wk5y^Z(~}_5p{#UH2y)1i0C@-GpBoa=(Q3rSpXmRPONfD_8vzG8vn1u|3k7cjX{%76r$0XK3Cq)b5ybnOuidVQy$Ops +hLa(S_U|WHD#u9HtnaeUa&-&z#=jLZ?mCbuCBC-~-9-iCyK(fOiY3CLDy~=Q_G +<(1&@R85T6Z!iRMVy#Mc-V-x&~aapHtNVx$nKoQ~=^gTwJt?$GB?NH-D#$l$v +-nMm_-UE8!#{QCw$5NS40@jqQw8oO1hV(^(Hy(j+{*I6un466hhq3pNPMqY7>3;UxC3N=C#JvbIrZ)~ +%72B$Z$(ep3dZ~j#+k_CwtJ+mSXc-;;?rm^V=(D7XbexZOQSkG4PqXY={?`EGGtGF$h&%{_{4qEU4c1 +qx00R*sE*qlJxjgy;BN5PD=nKtMJZ1;X771RY2-bnqLy0J&K!`ZWXr2ug)= +_i!{=AMbxj +_#XtjL(SEpWq(J@Bz6&E2_p5~#x9$Thka`Je&qxFU +9_P3EP%t}l`qEU~1N*rO1OhUe9{eum)4y^0~*JN#U*4p4&o9LX}9uzlnxOm#;C7qDMB +UoBVjZGQX03S0`2JEyr^n@0a!jAtcI!5!kPGL+zaphjcsgP=6VX=KZBk=T5EnB0R$Ot{r0nP73JzZwt +KZU3$=+x6ZrHiR0T|a+_u{?!G!}ofVK>Z+=ucOfWzA9J>EU3m#Yp?_J-b|1VMN5pcMD?7t>$HOm +@wHD=b&m`CGa>Dc+%2Ck;;(F3mp?QrR&6@llr8C +cAMYn4;SN`esV~x~-Op_kw!`)Alb0Gg4*tz+k3!KbG0D_$9%f3@ZN95UhWpdyLB}WLh@PB{;K$_^)lH +t4rR4G2(=5{q)e+jC`>QKkUdxVt>RlPrH)}U5Giw?=&1${Z5PRdJvwJ^<&$zLBwlasFCQdwGRQ|zlq3 +o7oWQmcR=g{Bn!ZnaEhHDXYkzsi5q{WB=*L@H^bS*9$@u;7l;iIf?Ji5lnoos8Z+&Z=v59Y)h=3MsH-GP2lG;k1V&s=WPz8~@peOJ!P=lRB;A +nWaYYw?U?-SYnFEQ%c!iZ(e3mJroVp`v%lSo>Ub9bcv$pS=jT~B?zvs4$;fT_Jrk7H9-wdQGyj<%DhbyYA_=o!M|4#*CDG+8=!5?xlH%b489sI|CuY>77{x$lKf9?L`U;p^qANIfh+vDH=t@#66 +B0Xn$T@_RE2UpZZ(*)ky3_BjlYJI8AV45QYJ)av|0uAYRzXpsTaJMrpgyqtdkgNPn9GFXMw +*eYTG7a06D+TMYAm+d!SAWr<+v5;r&?sK?mLzv?qNVv{CI}OMqO5QZ-sLxBE~J9BW5 +-$@@oeu4_fy-=I*c`v~h!VG8;!xk_4ojFm#1hkm=lSMU9n +l889?A6%rt7}jPrPvgsp|9a>}D?NP0*WOuFoTEt!UC0g7EOqx0~i(2m8ZhP29NyG4kVqb4|DV*lA|d1 +_}Wi;}2F5EVRUyYBD@|pyW3n_e^&=w_1b4`Hb`qJKNaP2nAl$Vp&1

^ME8S4Z9H&)n*NrY+{|q14hl}l>@RmbZq|9 +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 +n6j8WBmrViIa9h)UUMb4_hyT +Y4D0$Wb|_EDUb?^f=SY?;=;b=y`LnQ#L2bW)2Vtz&yA5Np-T8hGcvOPATUFqZ_!x;9r;*Jy%MTC968p +a#7W8>A^vO41{P2ZafDri2y?y#$K4UQT$4?*p)ezu+_pv_U{vRCYM{uW*1;8;BCMlFg2^@jp4XnM05U{;{~+A?;5R?reXTD^cU(Bm*#jrM>&EA{s<{ +5wVi1y+iKV1fVN~#6Z2^eIK5gO!nm#Bk6R-Xn6;5%@pO~L>4D%@JgHpup3;25AZ +D+Nsxfxe3dc?5z1+a_<;UE19sWEUd}P +>+iwm&hf-Wn^YX#IU#g_tR!2Kch_VH|@))z~!#@FRdx0&!0h@$<9F1E-`MSTH_rwoP8L}0>%5U_3)C6 +~UZ`r=```Hkd*ucpqZFULWSw&ppr%Z$A&Z4Jr-`YKD;H;q^Px}Ye*Fl`Rp +7G3EtSSAA8||gagTn)ZD1Gyt&Zhy@yVnuL!!uDWPs0e34>98r{bc>@``ZDSn=AQqO5&-ZMw4)CEXNxu +!XoJOs~WKD440l?xbZn+}j6Rt<16&x7Y1`ilhx9V%rwGC-`GWH+QtnvwF@Mxow_03EhI*b3@(dNaNZ< +RS-lqf-Xh-;Yp91dqL3KP8n~qwV4|4z3$~F4G#2`2@5^`9!7--x&;Z;njL}bqTL%Pw_EG)$ZVOl0LcM-I1#!W!$p0!@suM%hjR$d02 +L$*?N7PBbPZu?KwNiqdO~zZsW*xgw8&uJ|3{6x~9HIo>u}bBJmYpjuSDlbyAk3=>Ah?rN15!u`dSRpU +KfOTE2=X>HZLkSJ5p?w%>@@|6&mMKXWd>2Z^6+b5UxE6M=%4AW0fQ8D{PIw}1nQQVaK6a092PFDc+Mv +LYdHIbFtAIsk6p3vZ<1pI022T*3alJ +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 +r?A|dMmbmm=;ncjhR3Li30+O&n8m1jINYof +p?~WKm=_v1KB2HABbIm`(()b6N{||ET=GTP%aq6S%CH|d=75^6mhWamatN#V}`4iFl7km7cb&(i?V_+ +B!P9p?Hz$8f$7=kb~LBPn$!blv3iBEmBun@S^uhc4iCEP*uAHD|GWUs7$2G|es3Z_vo8uU}vwLX%(Jn +mNtL}$SA3PS*4qZ80s#3X=Y#VIpG5z2 +`C0V;4;U99T+qK^Tx+!a!PKCC#JC)1G{!HCYni^KZJZFjEWp@h4V@9co*w@EO?BZf$OHt~#EZWyA1za +07##A(z`hKHTk=u2Mf`0joI`l!+ZzbpKj^>m27dbz{?!`@-aqKS@&U=a@Zz|#ZRM-syy29avn}7lw)BZ+q&IBXnX1fB +lx*SS&h$$tR7^M)?t}J)jwFD>pI;RIZNv^1ERoFIqM5jb-VfOkP4}QG!}>=}Rh>obN<6_=($x}?jDYm +W_t}x0)n$j*Wxo)(y!NF#o+1Gc;rom}+)cBx*fyyU;S?K5!Jmxg5YPuBIxb$#R4f)nV!QW?JcJ~37laRLK-_v(T(zyw%3+#snLIy=6jMxWII)BQlh*UzJ(!EU@8Di!{{f`0P^R7Emy7mo{^ +Ngp10(r-(*N_ncj4_n|L^uc|Icpt&;R2FauDx_@3Za&jP`d2RF^RM&;P4hm-)2N{@;Fp>Hpd1e +uv(Fa^CL~?F5daVDcM6BA-gRVglsOSIo;YkTOqRb4ZgnhiepQs8*O{QqOI%} +H)v$k(;<)680j2Yh+?AMrn4Y$Q<@XZQ*WvL&j$1;)#oV3Rxx?P*lld6$AG%8uh;91l7KI_kk_-`ZDwV7Z*-Q6_X*7jfW~mQg#0MtbbR7hrY` +{@MaoQgcg~$aL?@WN^m`x%B_@3A28Pn=br0@_dd?|Q>p4o$q0=NT_rlqq^=tl?o{v@dYhQtpoanf5N2 +WPZVlYPd_>mLr#o(yhrjq_M8yX=QqA$4Gz-KAY`GQj@p-0-9eTP^oI@JKrV}1lcaKuz~CB$YMDDWZAqlsUic6}mS+3(GhVjJ3l_MIiBo%-?Th(*e?IAKs +!bVEwPeheCAAK{=TI?`Y>W_ZW3N!cvo~)j+4Q81TuV$)-=3KYKgb$=LR& +T#;MqsVw<8Y}k`!+#*&6jb;0bc86DDv#{2;HFz*m75Xw$Rs0=2+;V!{sx6Q92mU&8)Z%PW9dekBfDrz +#3-SAIOBJK{3`W{9_*3@FxO0#2bbWJ~sm3|0IsyQ+HA!&~~hU<;=KL$=ExCpm@f%o@)h!?kdtd!b?d=3%=qu@Y +n~MtLLu6>0oJDl^R!)}z>nHSsv&H+v}MT9(GIm1E^Lq;?mY^fOBvq}UCP{)%;dv#I{JqyGWsO&SjT&4 +`aT@}r)<-~;4iINCN>k8)bDmHugGk5Vc7kVq|F-YuK!-cTaw;>lvsay&<_y*Us~uLum66L?=*HW`18^ +=|17nRK^h-^4OAtf*EosfWmyEjTq<$UQ@lpNI0|r*{=DG5LLg8)qoCZtAV9npQ$XJg2B}iO$0B~2Dy> +l~0LTbHck+sZkzY;00OgAKWu}3@CX17xNV7UawtCOH$L1usJkvW5cH}xT+6WQIxD}Nf&1PTjW_@jL^WD8=dbK|=Qr0Za2;h&8>klh)izrpPq3 +ia!4uUqZ7H{Q)BclHX51yBiB!CB2$I9+ddt?v<4;Nd^YwC1lJPWpU!p=LfEkoy@DKzkFo(+2WseFC#v +y&t4~b~R2)$;Ka+((VEFJqcE2a|QUz8Y6n<8eC3ARGZhR6dRqd-huw|S1$<&?V#_)+`y#jSItQ3TQgD +)nvvEwTXzEjU3uHHB($66;mr=$h|?{YpIuT?4k4=Axj~ftxDi=PZcb<~%ElxI&%(HhPxwNzTxZbM1L} +`Xc5%Af;7KaA#VlOrRU)chOAES8bv +Ty%=wj9>z7l7?)j1>IrH5_eHdpIZ9Me%(xYLvO{iLUbL4+Q9W-w=C^H`%;{0d6_l +v2lLn`2`qlSo-I%#qpYLK^HYk_wEdAi|7p*p73taeF`NXmFUN(>Zf45!y&%5#$nbo&zte9}5o}lySxP +#X`G>yK|A=!tDwzvfzn$Vo{!+MV`xyh2tlBQ)IRAC>70@iUY&L*F9~mF{@%WlZ_?q{-N?V+^?_t0Lk? +^*yES5jz&LwZ2Qa$=u?9_y{a6SARkj*8UlvjoHyK^N~lX4SFLxxSkI1beEBp(gi8`Q-H;i=%crLb%PS +WM`P@{FcG0`z#-#4^X)1LOw-Flc;7QrRczV?C;*%*oe}Ks6df~bV_C?(lG^bv=W-*Y^ZX3i>ca}jvP; +`nf)%J8v>kRQ$Iu^<6K6OKyOj8y2P}YSVlq_nb3OB|2>Tx%LlFC +*Rz6xnCYD>JX9;M<)Fg)6Qdk^;K#6d3L517k!>N3cbTH)t_SG-4G=Y;xP}5??Qj*s|JC4qYoAW`*x;#uG9M$)2xF6oml0-V4+k~5(Gt%;$LgG&HZj{?m1-PvsXtd?DcH;HI#kdB=^Cq}TNi(@UK +x_u*he1@1VPY55UN4<R2CYg8MXcIVyQRZp(#KcX%Q4#se_p6MP7pm}^;3o@w3*y8S3OnMxyQTL;EGbzh?+PdOx##%-lJv!sD +(Zqc=F?uc3B)QqM|D>|B@+jfbUhUFqV@Qy%Pf?JDpeax;SjkJ +40<|IhN|B&1Bk-Yl^GiFLW91Vq45?|DqQB5OuaG-R2k;@e4g|;S`sfJ9jlOw +U4kF9soiRmJx13 +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 +)|j8NRU>gn!E +46Dh<#=W%9EqT*6713F&zAG0Y3hk1-Ij9iL?P=c6m${JaqYLTD8mw%!-hb4xzihTxpg(i6KzmcqI+{2 +dckiV3aW4;hmycAbbIfBxiun-UW;=f{kh8}S&Ojs^4yLV@Z=7u_qC9pEOk^)_o70hEr@D0eH58ZOkvH +jwp$5)89ax`D@3#v?>#^X)>#OT8H@!L4waCj;4By22prDcIDvAl<(Ey`fg;;7DP1% +!fjHka>BU%ty4d)wk*Q~PVt86-SNW&Pwgd={KL27jedpr0Dx{(+bHTY_TG7e_9rwP)ffvmA57J)xrNG +TC{Jio}W9AGT>i$Z9An2~I2g?m0hnZxEKf&tp>!?V~WtEZ4G}V`KAp6WtzTGxJy{iF7Sa+QlWxLPC{O{=e$7!$rfJ1+G?8i8aZ;$)VrV~aPoWU3hjNhXWguy=rp7mNxzsapo;3Kj|0 +|fE%ElI%->y;e@G_M*aivFrZnZf|D*60F#MJgEyv}Ys@QmQ~{h5^%*6_XGeOwuD>Ds1`%7WA(=(t(Bd +OTMWeXpHB?_2q|JAvM}^3zUKmH#D{a(yIN{T&gPtcx6tgA$-NIdn?pZqOykn$c&u~gq!9s+x4 +AYOfzHN7FykY!f3zBNjw*%YIYF8pDs7k1eA5p<@QTdx`cVxEVT?u|n!UFK-ypKy +@XTRaSR27C(mW0OUdVqCY@J;zTJaogIK$CxM$>58o#kCYqj2WNXS*ly&a!dAVcJU!6;F}N8H`z+Rt;1 +UyI=(DKNPCDE6wBJq7!Em4~jpv@*&`2g72ai6pjX`?5VG6e^Q=2Bki}-C26~a(v~K;4#Qn}? +0XS8s}O2sC?@7n%iCO$9Rtmttx6$4W{&h9&ZcjhBH_Y`_iFDF0NJ0jAr8vU%E^J!L~Jrjq{DZi0C +BjC%EL8WBc#$@eW2Lf}jj>v-HlA=^aOsIN3k5x53n0XVk7PWE2FognkblNeArg*nRCs8?zP9+ImpKqn +7?O(}FbMiGW8V~mj*(3UUx|w^HJoi}G6ZEM)+mCt3eYoIO+gMR_j!F4>JvkhK9j^9%GCmC`iytK9kLF +bD=Wf?^$#M^$4r3^{7hWqw-Tb=`6*z&SqP(IwHgMBIvVR0Uh8B;p+wpw~l!uDojqf<)34jH-nNaF5UeeXLOsgym3YBg1?swD))+GuB`9^T^<2tRp$pK-K3%J1)^8(jpmHXfJ+ +=M5V)lu9F<-<1l^uDIn_O}Qyw`*LEqK=MZc{93EM0i)bYr9PCHH6@8vyDbO-A)b%jmu;&Qs--7V&*rd +i2f$a*KQlDd>tSou9SKe}Mk6-{L%SJ!1Mg`~+1u?8NY8{K61s +A&-iEzkLy3A=p&3-JmZC6>gZibmsB^4Q0=TM4#`1n6!&y2LPTo`xYBs?uC$q#JrKj1Q2kR4YL>{PXp+ +KS)Yv8ckicDSue0`%ykVbbdUG>&NMac#3$fj4@|!p{eM0L2RtYvx6F#zbE13Rf>h*ck?y%)-SW!sG)I +w^ut|fv8BS--|_Om?p@^{q8o8O)~PeLZFW&Agn7;Fo(Io +&JKvVKESpt?Y7L5!e!ipo)&huWEPp%07ocd=_S)#-7rE$59m6Ax(m$ct` +{Czhb59;E>huVL)#+e&qG>_&&2fygZ?-!QWYl{3V3|lE$sEZX-ui +UIY4$g2YWmMlo-A>uzlGI*|`oe +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 +DR?Hb3W$&4m&_ +Sl)j!?Qxrt>Ta!W9UdO?{B!Za@= +-_KBAn;5Z3Y#HSOWp>NTug3SvLmsY?P3Um~dhMa0W>_$$D!Osk*LZ-?;wqcx%2H +Bv(Ru%JZGQN2fn=dzIsO`7fyUTH$JU5$)ZE<~2kc7i8a&=YM6okbX-Q=FkzP0l*i0WRPF`cI+*$I;SU +B#>B<4y#RuUS>B5?6qgE0gsKj3w-+4qQRG;B?-ZG=(g%ON;4S90 +Y4(H5JS67-rS46(97VdV!8uQnbJll7-+XJ`0evHZ1fmhl=o=v<(Fo8R)pOK~6()C&)*~b1yZ5hJHOTO +E1cnKhZ0~dIoV~ktMRVHNXPO^FO=Pv2n+nHv*7gri&Uc1UH!{)bu7me6o5w|TmX_{Z98}uX_-C;R`ut +vOx`OF?A +NtOncCmb10wL6}L>x^Z#oSl_3v@7?q$&r@~xpbkPTXt`f?Mb%+Dq5q2h&?KJun)|M5>FGKD)-0!5HH; +Bo*ys)>-89NYk$0m_hGDkN28MbXdO4J4cV_;mW~K8ySqF?$)LCSfIv4=nU=gH> +x_C?X6`fArT|zQa|#hQfog>4D2T1%mEGkZXYg6(?ix0@TPATUT_xo?I{?~UFaP)BYqWwT`Cc%M+^d4v +WLqv-U!k9q4*OKqB6R~S=aw{&HoavmrK?q+1nn}zux?;_W#WZe+kk0LJpF9pHaa7bc`<|M!&iKyE+u~ +Wxa?I48b5PW28~yQ&ng(d$p}(px~E`{*7dS+aWKX<&~A?Z?(k?=t;zZN8zU|aixgVEBP3`bd93;Jx{l +C!u9w{_g2=q61w#!5d$iFfsj%JWRdXXSBXOk+-@bB`O9f>C3|TOT$l0Jl#o{(Ol! +hqBm(L(QrwQdV^xY!By(PJLV=C}vsMt$*TIrr5Bao)P`mXE1N1NpGmQ8%OulaJ~){&0D1n@PuZRnN** +rN3`>H>!hyPuSgE|pp5t%VoA9qfZ8ZXK@u*k;ot^SYi>0VgX+Q`pOT;1RzrGMkUBvfaBc)YtOnmsi4K +)Mxao{UWd}{(5l5TjIymrDwRtWWCK$m7X^<@a+{btzrwLDUN&%r7QZaq!n2o$T?K?1_)OJoy)gmh*`$ +Iw}h8wiGArk2lC~-n_+7cB)ug@Woc^om0IJbXe|4cZYxhN{MdJt&a$|^&2I-Q+=b+KwRBsdHTl@>D=e +&BPg+NBjUvW^^>=mv7X_I6-Z#n(+RMqS_`a!5W^ro$9u- + +60j$+ASm6(6AFXhKEc#HwRzr1gpAsbx9x!LSq&rj@$5RkBT_lBcbbefyXKCL&PZ;Fb) +RLNX`;9JM8Ob5A!Kmh}ff1hJHi9Qn?&kp2>Q(m9?02ZTq114aztTwZ_Q*TA^(hoCb`9DLm9e_P3ro6;jD4)(8Xs6Zh_H>y&RO{fOOg84!gUd@h)XL20B{D +yRwFsh~iItffBkvKkE5lE?Y7mABVP0%3F;PMLuX)EwNj8ud}IuK2CJu8rHFjjrvlqG; +>_<(7A3^rK&Vv>q)>1MIgZIDFOcv1Yp{~A6Xdy(Fvu-bC)MbH$+2_0*j$@6(CGUL5M`^aNYfyXrN%lX +jH7hK9BKAwwM`bP^4^y3Qirwa`9;|lYq3k>w*3iGE64D`0bRDxg$HFnnF+fEs=`g0ePgY{8>9!#dlEg +;zpy|T^1b=q>@SD>rPmkRVZ8B_eczGrz@vEcIBFM3Z|{6hO{#Ymkyc8i8icY|aEI-}y#EmLRhQM0Ta> +KT>ZXCVK+?Ax +!6v1-7#shdCtjczdAPPTM>)Ves_DSMaksd|R9bL`swO}Xy}6e^miy;D3B@y3(AArqr8?fz) +h+ndOqg)_?B4!OBKDeR_x)ErwK+hs&Ho(pRjc4;CNlCK(NP(!2@HC}YxeK)RQd3QwZ$dLDJo9xaWw}- +nVhYOlw)m|S8^d^e({yv}D&cvYGk*8ss-15H0->MP~^z1151nfAeD2AH1LUQ%=l<+E?qk{}@joOS2Bh +zCm%$6x4Xz}TGf40HCpB-()uMAJ3QY;?ZcGK7=i7(L|6(m)S58M+ +ff^KNngo=GTb;uXmy&q8mIlv8v9v8p2_yfYul>5tRE(G6S)t>6nM6OI(Mi(4`qo@^`pE_;6*4>R*rI6r}u5qo`Aenfq#@M0RAsZvr!wf`R-b +~9>a~NG(#T;zkM)&@?4GnkSlGWcvWy-g3%Mb+k`RIZ0e2#nSF^GIunj&7b?YP+)m-@jf +!TKc}f=#`>Xk{Ri?O#x|x|aE^+tf5tT0o~~O(u%_!XL$mvt&yTSWTh!jqRaSZ +K(XG>;_K1Q(T8g`qxc%=rIU +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 +z6Tr`Oe)4HblKONt6XUFO@)H1-#qy*{`|rfhS +6`s*h@VjyK3p?8@=3T*BoS9DtTIZs&AjhQ?MxijAz9uwLdo0VDVg`se9BpvrTySCgZAEP~F4@xSVohr +kY++3fMzH{T}Y^nWOB(5aMm)#^G%IGh`oih*EhMuAt_iDLx5V+n@8MMs=Y~-4&Vo!nfCmJB15gSPm{+ +JAXcFo@qB5?k9;WmMw7)G!N%~0t21EW4AMZmKK0TOB?`EmnC0l{Ed5W21bIEsU`>dJUl;*_mnc=~y15 +(8}eR_5}Gpg|TEa3~6Bt*sF}kd8}$?0rN4f&;8yVz567DvEwp=?gmZP*4t>zs%Iva2q(~=AdMFjoYc0 +fN}cLn_Hvub^a^mqFEq*pEEDXxeSEWK;bw7$z}4TTf#7aKB2&3@OPw$-vCk+_+K-+deT&VvdJ225{f_ +rr07{A>-uR-w)6d_DD+z@@>Okqr6TEfga|MZ=!1%Ak|$cvS3lish}>+{=h+199<>en=@3AaKtJ8bF+* +}+Ta?iEdz98&ixmec)oDE!m +>E6Fe{F;OhYDOIYdMV*~+9DC)7dLsikz2r@wo)LYVMRyzvhA8ttbe^|0I%TgG3u6vns^B{kD+aF +q8L3$4vlF4AaaLKUEnz4eSmMA-T0c@@XT&%tsxwKA?_OPaCg?qHA2tLW+= +L>7bLhQJzjcSMYNw&WuUoCz37|CdW#ml~yR$!xA~TZVFS#bYA?P(xALa*j8qRXydB8_%s!_1L^zl7#? +l`8T1)}?cpI%&3M`xne`_!MOinjE5>X6$kLB|9q`H6|F_##&uqAUSDEo@GzQ)q?-zdWm;I##<3}N*|6 +_OgB6akuJAAtkVl+z=pLRE|D_!;~%Ontxr$d?dnoNQM;T^*Q3+#2pL2}TIOn>g{u|{fZ9Jt1K>%Z7b? +R>p-jpk4mEQMV1{pufq0IWTWKY9t8rh}WV<6R$c_4Ag4IuY@IvfKV2! +i7z`XA_A)BcjYF2;H(`a}DGLG7$eW~bgy!g^ +k;mLliab^=>2UC!@P!Q#YZuS;=XD%9L=YJzZ-(Qnv_3|L4M7{KQtvQl+O~N(63y;iOs-X@hvqyL +|xW$G@9f+;gcLs-v%8;H!Ru@J=&>|>%rYk++Knp!{P!~keXWq&-xU3S*eIk8eMF1F66Kir}-8FMZr@MOEY%92P1n-Ib~8hL7Vt%Vy7oc>Zy ++o|nNp)-qAvY1RG^i$-=$TZbM4QNFB}o0iSlxKIveUEs*5lBi4Esh)WJVUP^tmh?gkB?iIupf|w7kCRJ0Y^X<&x}07g6&aq_F@BXMYFF +H_^hwd&iW8Cx-mpzivnuN46bIbO-cuMCDTJ8mnkeDW^SHq75$Dg@JU|R_pj`+U1Nt=i^!3UCu^wOtz{ +eng`~o9HWM^P-J*gr@4){7lGp}%dp6g?pOcAp}vL3Uk>w~9LT3;A +vs8n(hS&kLvUaexl;Fp1-VkNuf>9Z0L=h20`b4-^NqL+5bpHlHiEreukzPLE281dYh&-#A-Dzv7zMWU +*0EC@;Ma%w$WQ19d@ge^ftAh!Y^Fe?ANJ}=Bws}wV0-PQN(h1m6yP5Xz!qR60<;N%VhA{a1TurjD~Ae +#k(C6jVaso8J>(W_#1Y4@rIJ6XK)dqF3hN&bL~&R83Vm2Z0o$l|fLjp}y(LfSWbj|mV*jc`tT@DY8sy +$7NJBJcz2?pzsuPC#hIqFXch*S302O^7z8=U#fxbB4GD0?A75LW3;R&><>jG3WzB`P+9eh7F1wZsz*p +2ps|CZT6-`sVUpPcvhV(*AGD4$&80MU5voinj_xTkRpCjG;CghyXk2CdV2tRck{2x9=`djYz!ziF}#+ +(*XH`CcgFN1Y7lJE066lUpKo2x_DDmtizuAsY}4@j{#|VzR~r6BBQ#`wSaHc}V0;)Bz-;oY7v?Xp%?| +AJb@5Z~K%;Ofs%J_(rbyLrc%4L}v1U%0^IaIfpza`%cHryI7GX#4N;B#l_q^vU@s7=Xh$C-H3a}Ew>o +2#1UU$oQ94sR|m5(S>A3!>(;XOMuIv(EK6U>KI6JN{;lTqVlRU#7w=RL +o_(gJ+F`nh_mFa?-$K%4y%i>-rfk+YDIJX#-?aBoQ@dcNyqNMiRV8zRQp +%^;eL9Y$7*!U2@)%2qiP1SdB~3iyB}JYvdfXDDrXL(qQS&5|v5-tQ!?3;u^mf)pPk=B6<~i~ZuzSNI) +E&mDLeCg7C9Z+a^J(Ag*mp?2jomV+`So4YZhh8$_?hk4inVeIYL1T3bi3)2cSFU^h(Z#p +IK}UjMb0HVU4QvD|41T#H3$ +ol1+NtiQLwWj;C&agaDdxOkWqMz2Z_mtav@lG8xf{Tz*)_@b%n7(n}6tJK>m{t|I~By8wO!Q^)4*2^N +~Poo1JKqJ)P_6+28KH$erFiH#rH^XB*t42-Tg>3fW&*E$(Gk^7(%1`lS*qIN(B9%^2!1Jnr4RL_1E}v +4)Rg?s;Zql&^!c;XK$Lx<2p?QN-Fl+|2&HO|_=*?po*cS+EF!CdOv65saJ|<0}`(t-q1A6DZ>ZL*`EpAPVt2r>N~qVcJ%9u0PFXh&2?_iTQ79{WVt?wi$9cZ +E2YL{UlOK@JdfQ^WaGF#CX?56THj$z-Oq@`dn+54LF^uQ!B(@M{xe{dv!Wc^X-EP0GD%?S+#ZejJvxsAqfFM#d%IW& +)J|ifcYCERPu}+CSeWxD~dkH6nM)P&ehSrdYbWVwm($0Zj!%8MDIBz(g7hbpz#F*-N4s0mA_oR2+24urGc_XP|v0B0#OwO2vTBDgv?~E4f@r9-6#F ++TN1A6xbYJspWe4`ai((6bD_dzoBkQ1>~AfUlJSA9yvA9Pn|9=`gZ+Ml?-y9Z|>Ib^v$<1Z(R9I87mC +}1VO!v+=o61>R!jdkq#hZ@=oWJHQ>@A8x8p%w0*w1ol0pFU%Vyo=UWP-%;az#*c(?qRK}OL+y!Ka(zM +bwUyjEsTmoPN$=$iG}JdtAe0IXt4BouAm-pizo`s +0naSKG>(_LRL8DK;yeQyOTbl;;#Wrnl#o +)KP5ZvR&}@R6P+`$3n#t5h)(z+cu@qwtxkPM5$KXXFRg8kDa_{7zff%z- +8kS;H0cS7k1PekJ+V56$w85!m|lt&1U8lU97yfHF8mkuP5~pdJBkPP>-xpy)`p=|x&UM8+>QeL1j$Qd +@6Qz1(r7^gWQY1_gTpq)qFZ4(`G!8_xp$X6wnNv7Vq_zqcn_kEhpcJ?^hWhD$9T0q$c^Qt&rUv49=f` +CGd(Yg&J*8kch5^?-{kz6LI2!LRX9BRJ9GwwyGr7p`}bEa0eC13$ENpyk_{K(DDN-~=!wj!O!$IS& +r`FC#(`t-f2uZQ%y;O!YDZ#MvMi32|a@cIaD00#K*bQ{2X48aTQdyJ=VW~RKq74^KKINIuClC@Xe +p)PyZ^=_ft2%PPJH1P~9(gO5WY(UcZ0iN(Y5t#C7Dir);bvi%;;D);|*t1`1vexd3-Yz*|@s{|6^9Ts +p0z0MHr4OA_;YJIKvB+aSmgwG~kV{8|(K8nTp`f{ptd6{?%X3(fd*leYV#B$x;t}w$}g2QV+eY +^@_lYgG~Cxuk)0GT{;gRT_jD|c4m@BxEv>43pFC#M7pm{p2JDXrIIQpI4quZSLZF&2RfG9=zJEV4i(Z +vwyS>TZBy=6NkJ$+vIoN6sDC`gS`C#|;+G&-3-99%|th$@pHh5#(S#ddYDcnykRExZSbgL%mEaWvlExzpQKGH3|(}j;OLZ9YWQ-Cqf+;iF51Q0 +amKI?ae4DF6!1)rG&Acip*N69n3AAUvtCwgZhMjz4pug)mmfJ{0qTBk-^)cm3H?3^;iC1e;uo&%(^nG +hQ43=A-iOMRhPfACOZ$^fBhv!L)JdB?wpm~U&>I!zF8D9lsPhs4IUMH6<7|*}Mf<*(8^;iB9%2!5grJH +-tz22E|9dSy!1ZRkcx*>~ei!OxIN?!n|uz@oMbrnqi+O`K_gTC-OYMd#|+E`J@e{zTEFXHuCF9;*TeN +Ip-~3ih_+o^QkT0=(I@R9eg>K1jrAD01t-r>34kR)k%FV`62Mn(gF8bH4I>p6x2{o< +tW*!ka)bBMEq;jn@Rx7k~JhUW$1$UU>^ekIXv#Av~~I=E{)<#k&OZe-fbK-7$AOB>SZo}61ljVq8mUN +w3iY#*+#Q09f5xZ}Qb?UKgfcF8+lPZoKn7#rT_pGWId1S^l1q(=hVatJ+Jd1LA0_Fg%;fb1#^jhN%GZ +A5*u`misPJ +&4RB|vd`3~vpb73QK^F3z)EmYSbbhq +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 +fHlVCcr=h9cGLC?EOxv&#$@iEni}zLph~ +6O%LB0;F{V_01cL2qTf5G^UgH-Ys%BJ@~FMhj4$M4S3?2XDBq!Pv6ExIiNA>S4jZ!e22{zS5!8{pU$4 +8AAP;$3;0g#QXm1!M1UoNs>urv6)Pv-ts`99WqFhiAD@h_axnNu;^i5k?Wj%PDmBX|0PQiQ}$LeU3IX ++O@cL5y`s=ZKwnTZ_vCOA7K{v!}NjAOvmz5WinIF;k=iN+S9T<5qD$L5N?6(hbp=4V$i{Q4#nk!l)F* +G2ICEsy@m=|F+`73OEh?2cG8s67!Q+f7($g5_q;oFn_C9ety>+sX1{jH +S=?1Q7Vx#<}Qq&c3Psu8Q>WkqycIIci;x|x3N@g}WlwE*LCm +%6BLV(#PV;zOpuHh8t_Mlh37rf+2yq!8v8oT2iP*kMN%DDnpFKq$^}C;}5Jvqa|DHZ6WVaW9h~ZqO=| +gL_i%-W-##ENV0uMtQ%;r5>lky$6zVRc@Euqz?je68f92XgMTbR^FyBttd=baqZMukrC@jOOkf##SLE +)a-U#C9xTQt2I=T2Wa*u#0@G@ +!=y&XFJz}^z(W)7<49vxk2h#t=}X1*BBVpia%%BIEE9>-R{3{9E-3#@;I^zXE6+E(Naj#;_2m2;Zi0( +e$>EO#7j*PomZEt{O(4m~~@%3wl{S@3&$VZ^dD#&hIP?DmP#Z^1S57^y7n5lB$=zU|0<-O>KsQTTmF+ +a5pm`(w=o_@cC3kZ800jSb_G)QswqaqbmM&6zOI-3It+a}-Ldniwmp>R^a6qt@c8f0W2B3Is{p$C{X_ +mA_q_!*e3H*mAAF(Mwkw0bh%^e>}RWL>0EhtxG68+FM8C#knS`k^;OZ>)jKDxLad$SA}r6A{@p{qN_D +Movzq|!|HHkxVC^N21GO^4o3kytJ7+(uZ`&dnbJp&dp5*Y;t#isUVZp-K6EQHYhk`ovpy__%LN4Q5XI +4nq3Q?IsA%fB-~q*?OAna$=izZT2^u@F!}(c>x^^^h$|M&(J>N&+<@*tPfvBZxP*XW*L{A+IkG#~D#k +g*y01X*tx3)2Re#P99OU@=zSpLgV=^Xp}b=7o;o4S7kYKu=HCv`#?dJpfoOvKu +~_<_I@8w*=%1eDTkIwf5~eVWBoPeRzCt)e{WLVD_b~}5+o2PB=Vakzk6??BB1k=N5AYH(ypNoIS>ks-lZeV +YWo-w{?WgDyyx5ZbO=KIIGvx1Q@FUTU%sn@K?lKe~+7)Y05X`g7#jG4V +2#b)7{7X$FLcAXJbFnnZGW^Znt#V0Qplf^!sh!E&o03{-0U?zIxz4v;2Maz&}y!X{khL-P={S4vl1ll +dqXC!1u<2YdUqhmKfJ7>4U8f*CdojpE;lo{E(-bhqpMS)_Cj!$H(M+<*qFg!U3fu$~^+Gc%c+Sn=!?7 +>f3IVw1vXUfpKKw!jG=A2A2^%zGV3t$f%p+93vHNEo8JW3_7&ZfTp2k{euVonS-0O? +MS;Shfv;Y@OlxchnRmQB1MJcw4)uC#;C~H~C;i>c#?h(MB4jZkQjbX6-Fd +PamY&H_^q=aaN-k^hli*MoF?NmTIE!(8Dyd2}HG^F6o`>2l5iO#~-`r^S^5UpM4HR;G!DZSd+;SGbP^ +H3`q7+a588lWW5dDqp~C#4_MQn9hTViNK36q&ro^Yi<|toJxH33^LI-W47Bk!cd=8c)--KoN!wXCdkJ +-NCe5czz0yr`s5B28^!dgkTFH(5gr-WmxajCyIU?<6s>E+Z5fxtDBu^7Ah?C|(fi1c$HOIfAgGXEN#J +tS<|#n3mKh9tBPMr73l@k +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 +L3fE?41)hYMM5c1sf;O +UQww?C6n|F%mS_*qYtONEdvjf1RPjVuMDbBWbz@(sTGgW#T_V@f06H@V9#I4~$T{S;#iUDsy9@ +41rI3Y$g{;(z +h!{3cQ!zmC7RtWe(x$cnx(0nA&H&IzeV>_we;9z2Qu`aiQ9$=Sqre0g+t=pAp6eG1CTp7tYQzBa%9Jh +?*>EsuK{cJjH0l%b*0yyDdaZ#8t8CiDhwfTBVwX%YA$^_L8=r8#5%A5f&c^Bfg(-Eyf!_nYDo9l(eDn +gdH&h>$bmD$o1%<#2nkN$lM*CvxYE)!|63DaNdJIBRAnTis!4cJ<_Ty$TD4a_?q3~3ajZQ>qbVyMyP| +p(7f?BcsJ}(yl%#IDJ!8>x{2W~Vy@c<<}x-N&_Ae=9WKr_EhORP7zdAuCQ6Pi@pXCT-R+UIIEfxlLt{ +pIk=R(4DSw+!vE$Oleg7NR>|c>@I=?<&Vch>hQz%TJDDq?X*grn_lSTdF!0)v5f2x{6yyfPRe|@xSZw +zXqNqD?BTkRYJdUtM9I|JFiL4MxljlFe+Nqm>M&)##u+m9Ie?k%Hs22~Jys}}Lr3f|ZhlzD_6rit;V +XLyTJ+Yjl&6-Ma^`I%)R-#fB&CXzOO9)MDO?WS%3Ua@7FBk=vA;R?VuoJRP@n<b~)m({wP0DtmT{L1s)i@)1v%EfHPLr)PD3gPWcoWY(P&bL1b($&iC2AvTOy}Yl06JzN#dy5aX +QDeD?;dqV+)U}NvKsdx#doHrZt{5IB`*z-SoTyC0ycJ@%DpSubHcM2u*$E1HVR)90SvGd=XWpO+p +xUkLssbWmUig|}8TX`cc6metX{C?8GK4@1+6v`=)9H@JP6yhLx|@+>vE0yk!r +3i5O=9LZXdGZ(PPqjxp7T?KIT|OXh)c5ldJ|O=+aJ4nPCDEgC8ZWPWQP~R!4lm>Gq)XdsJ{9hjb{8rv +No_;%wure(=!CB_G6NA3IB3^zIR7hp8*H8Z2I@cyn&?nO6N+uL04i?(DTaz~KUWiLqjm+(il5-WY0uX +IMXSc+3Qv!xef#JkS$+WiQW4z8-o5y;qJ491mW-9@XkfZ-GDZiu@;Wh_!*S2{tkV6QjfF +4~E6Smrl}N=3}hW>0tu2yF2u?CUIAIH+#v^4A&>BpwYA38z2cMi8C6~C11?bt(Sv5Cv90#>ngiwm>14 +R;QLwWUvy=C+ty{=m<(j=>qCc~c3pw-l^GLFU=ISq|DNE-@5v`0rYe9=o|DxmxUOnb!tg3dVI?^wOVg +5VD?5k0N~qxwBH-*NM`FB9vYH9HIFsFc#0aDZ7z7$qmw3&VH9Sbj5aJvO8qk)7yF_pRRCimtfXq;wm0^OP$=I;Y@pQyv)(+|NY +UvLEEc!al8oFO$=|#FihchXUZOr3&c##!Obfv1*RoZ1Qq7RhoRTrqk&}nz?u{^Hlf&{emOhz1nFG!3G +M3o4QBo1~1p6=Cjcs9?Ie#-d!)i|WxQ&rey!qWqF&pUfjv>6-`fLB~jSJ=)zJ(S5Bo0taALO*J7Kx}W +RT&iV>xJE=+tN9c+nkwc@fP5`8^<0uHq9o$`7|V>qARtk;^zlz40WO=W|7&X#0@Swv1gbsPZ +7DR;8cogIM|-4?Py$1{84g!+YDJHh8ebypQ3=Mq=xXg(P^fMO81)xVU_QGjVpySwSm +yx_aT+W-bG}XYo=(q|gGwuMVaXLwm+R}k~eJoZGiZs774owHmatMhU) +w`d~_p3L7*K7CJH(Ekis`WpxToGhV#n=Eat15I|TAv)jZxj&dvPVED56!q>>&)+_@mS-T)Gz5lqUp58(!H2U^LdQ&OvFI%ww|3a4j(0cU^S=vn!#2?7g$F~3JWXbp+Bu +iQpbFClxmK9J9k!2S_GVafWa#&w}1~~#<^^SKUDa3?^p}Ts&{I%db4wYm +hqrXElit(7u-S$t$wBWv@z<)u#7u+K`El=VZ=vboZk}t)7q<`O;W)cvZ+T0w7*}!VTQ +>M`=wi_c~sM(XyGlXkyr8P3QCD5Qkm(u{3JX}9 +7gha7%aC`Jrl69JJ)>QtiK_``9iEyKDx`>@A-;32PIayd}R +!#+}S{}xkZ9(O_Kkn7Ax!iAW>J-N+Tkn%4XRAQX*V@z4z +_N9pl3<%lVTWA(8+bHJ}B`dDh3PNv>W~22ux8kL!&IYu?qAl`yUXa7`4)WCf5ISYC1{{)#ik0T$@s;IPRk>kpmmmhfmM>3 +RkE_!+C)lO#Z*RItsV#9#om1S3ku(m#88Q6-(=f|u(xQao8czl_`2Z!$@T`QytATAGJ~wTv5`p+Nc}5 +sm)hfsv$}+|;DJpjB&r^8As{b8A(oD{M#u!D+>X4To+Z$J0F;s|}Q()Q_vj6Y?&QGCTq7P?94(n=s-n +enQ@!&mkr}d1SkJea&XgwFh}Tr~g29?!S0>le>BPo76m#xcQ(hUpS1lz5J=YBix5KJLvPB&%Ek1@4w2 +f{=V0TUJsY=JO8Lm_doSYUt8t>omC?vsA2r+aPE@`-IHuTp?0@5E#m}{V@OR +TWveTe6*{g#a7fZ9fFCIbnY!>31b+s!m +1#d&kJ8w~H~Kzea(9~a&Mt9e?kyGD_j@ZvuzsqV$}5urpR%Un_XmG!#`60V;5kyhk?JuFS+s{>*G&z~ +W|t?B6N#=*;rvPFK55i99+3NJKC@V!k9?F2jV}hf?~>szbocZ7`#ZM>{Mr5eo!bNc?Ee1j_CAI2epYk +*!E1q|v-5E})#^*t$TGjjeUYGN)eN!Wu$llR=p}*HO3)C=t+6xDUNm|*9@C@a4q5H7mMK+tk#+0Wq}6 +l4&}U@=8QikaCE}+8;OL8Y45iNNA@lWON);|GN2UbnkvA}Y^39gF-R+T=6@46|)(jd%%em{~(-AKUE( +TQ32&tDIN1nzSn0F$rI#j9rv{uEgK$2!co=neqd!1u?0SI@-NCdll&hm+7?+Db+t_c>z&?~bAb-t+H +hI#JbC^!%-Sy8-m2+NuHs^$v(8G-q0cPAGHm_vqGh{VN}_LRh9$1IZnI*``#D+05tyI#=O7W>o4-CBT +9C&sIWoK(C3nM9iWlEb{*PL#+_ik=^%+x4l&bP88!4BhW4g{Lj1#4=hsXZ|3b0a$WH7r(t!+s+q1ZX2 +55`f8Z&_=Fr!f~w(jbUX)Duxx6orgjDC4|u`xP@Cx);Q~D$ujC!dCjE@9`~cu@ +uEW%zG;ohtpRd6uaDg@Z~x#F@l)R+41Ig8Q@eH!neB>n*c*+CcQZbc?;w;X`#Ao#1Mzb}P3awullPd~2CfvepK` +AOq3?zna<4TZ_5SFdhPUwT{FE`g3`B~?M4W84` +%$`+y4e&8s9IoooAy6`;c3*e?$JILV&>RfI5B!R69_3{2?EQKx +SY;*V3hu6KT71R=P+3I-pv#ln(aRrNLS%uaHr3)`oh_w(VsN1ypbop`QM}(J_gyo1rwEVPU`M-VasNx +--5>AloP)yUwUwium2CL@@QO`bstg#3@=@b)yGY*i4FNjZJ$8=)-#%C8`fV~@3Yl1lQ&4;erR{g$an+ +O7!6j#EhqJB#)K9f_h-GCX0svka&}o4_?pyl%1JE0O`Tj>v23OoX_yr0$8+faR9zPMg<+AR7<`Wzf&Q +E_tSL-^eDykiq@l}ABKuH(DsLE6oR%0uPP@*2`fd;h{z-@U*X#hRFX4rJ2Gw!^Ry*#gLTHvPPJ>zZYzS|;iEM*6(BP+UI;aiq8y_ +N``QrWpy!*5#_V +-_(yV(;ZDF9wHFKg`yKcdj1pIJr;JE0?4H=8e2GgM)eA2YMTvKD6jhv7eQ?P)Yhd%SzmA$!^qAmGyW{ +D&BarvnI6C}{|imv}am8kcPBakV*g6}pm4+2^(Cu5pKDtaN*vc>8>uS9}CUw=sGDrV6KY3Bj|@8kcKi +ouL$WGO;barXWd#6b0OCr;g7$yffCczNkH%mvpIwK+T-=;d#~-?&6~tMDM&*^idB?`h~LRY>r-cab=( +FDJRjaT-WsFEL}=3%;h9I)Zqn40jHjfwN+LBIQ4x--Du=$6h@Xx;e3YvK{Wi|{trj<9N+bR6W%@}k9& +Rn1k-E$n_REAeE7|c|Kq6?2e>M3~|M&k|-+p`L`?inorT_MSzw +&!i|Hpr=znrYuQ1&B_BSaB<>un6}HIkJ2Fk0DrJrL@>&lcDI+^=v0X!5Pqmk@jOo25IZZ=@kc_tR`I +Z6W;@PH($WZ$0>(rO>;^5Be*sX`0+MeD|G*w>Z&<^n9`tkT~Ai00ix?ZtP)WHd}yCzD4i1(0p$hA>O` +(@0~XeRJ`?w_Gq5?VpF|^d4I(lj(f6y3I9Sso?~CDa4>l26XB7-uu{Ok4!++6UchaU>DxXe)SXY1I|J$Vbj}50640ZU6l+f)50uGV||_=`Z3)S8g`uk4% +O7#D~0J$88k=%u;Iq`P=Wnn97z&BvSht1jP!mye3{n(+B)Vdnnayh2)Jv40eh$En^S-xu8Gb_?lGTpuInfV&;kyy@1)_~Y095 +|gjE)1oH=`*{rYZDx6+==LCgMbPU3$Vu4C$wf1Yv_|OZSPi$7V+sKU4sf7BMe5721V-Q#>dYDTo%kST +9yK->l!~f9JtNS+4RoG^uu2Q89^{vP>8_cUMOV7zX80#Qf*3_NEsTeRe&HPzED@BHhm+|C! +pjO;4Nj-YWf8LfRdPsnTNzfD5;|MCH*-zCU*h20%H=?%~MPouP3BLBb<{^_xw5dP=KeXk9O63|b@WOn +)acXuU0|BK4@=E?YN0Zh@mp~@Cz?+prX6BRVug6p4W&#ArlAx?ImGW4w;gT4pjsrS)agbgQq?i!)@WO +z~R*TIV&cZ*-m*<c@!A$M(hZWQu_^}Z +^dGq+=c(szaj3sKUe3k!9LHOj_c3#vJBxz^DsvQ49A~@=?jiBv+!wA_L)KcU25Ji_GBv +ePGtNT_dl&pY)c;{A^i2U)4WR#x9q^Gx1}c +vzMH%@R0t~LKMQg*bBApcda+&L~wOR6PKD^L9TCRL?B!%Rvuiw~^Bvob)I&C)xoP_xMPk1o +RS5YBB4&tV=KL%xFsx89Z%4(g@3D&}!s)URh4IpB-cfq|Yq%xu2!p02=WbG-hkxUh<)Jhno?5s-^LT? +0^{Ol4}cAcmFvCGRR8Dp}tO38_%A^5JDZ_ai;|i)jdOGlPc3^h(5@nUls9uvLSp-=wRmH2#pUqxjp^U +ugbU_<2?4@DwgiFm@0OZgdLlJKY|m-LLXD!1*^!qp~#A%NX$bf%0f9 +4iR4r%|9I($)26rJ0%Q`sn)fd7{t0|jOVv}Rj}Mu@7+(q@`!-|om+hl$vhN@2U0+ +h!l`MO2g};7$_tzW*u3c{CkG>-wk+017vXP1g*p`7L$d?S+#<5b=o@|0;A3P`>!|w;R&m0VW)Nt@|qt +mYws`h}6*hBUqs8po;GDZ6G{#$^lHQG)bt!nZ9TX6A9di$eX=r`E{FhW*dK?yf4T#+bc-V#~0tywoX2 +{zm5dTR(^;v4D>kqOh#gUQJ6H4vx8nwotno)VicIIv?xxH53?4k3pDVaWUOsL8pS$7X%GpNqzpc-O3D +5Yk;tq+1Ahpa&l%xfAo8Uoq16s_QI|FdEgMYw(MHrv|Wdi*CJ2*9$UvXB?hS2PyI!k~9t+rU5JGKTX@ +iPO1=O9?TvVqma_7Cot7xwdCq?s(Cpr#M%riDLK9`q0U{5$T&5S30o-OsD!t8dffP&^KKG17X9hkU~L +uQl67tswOSLi#{1#;Iy+@dd^OoPKxeM1H&u$0F}R=E%-HP3c +-I0tABa;U&Hm6L;rx-KeadAFfAqaEI5+xNp&Q97pk${e`X6}@efUWcvn-y_AvUVh)ol_gxm(pd)XP^i +_%*xy^G+y1LW*&IyDI~JwX|Qa?0e(}{?xlhz0VczOk)kAhQ?X1XcATuuV3n&F5AM*%k~a5mr| +uG)@odJy`45-anUk9{&$<@3H-;vUds2d5UkYRV}VC8QvQS5awn2W%|Jyl;&jS$*g@lmSpGY^My`k +X)dl2poI#d2$>@f&;nH%u1%mPu%_=i{Psd5@g?Pg&YrX!#x`hLf;SEhcR%aiL!u$vyTWp+lr)zdym#) +gk7=b!Efe?9lpD?xUnS3&~(hn?Fp=EF|U{;hO5Rl66}Qt) +f{kcaghbv>nyNdQRd(*EA8WEsTxzH>YK&TZ{Gx71xke*eehEj2tuVFt8}?->F#*TE{|9>9!`uc5Zw&OCbuTnB;Jv#f6Z%QlyX0<#ul(%y05Wk4r1%w^w9E$G!;#}2TmCvRwb%% +OF%ra8ey?M4x@&)n4}+5 +lMkL!SpC&Sd+Yz +sFb;QolEmHXr^CV2_QbY0mw%f_9F{$u +k~BgEPKPu|0Qdcag6w~zYoB9F_e?YFA#@4w2uU*<2Ngv+Md74(T3#QbtC>FUR?lQno(fYo={n)`*!w; +?e{)ZiHY*G=TOia{P=>9}u+pC4Qx9#T!@!gF83*ZV}V84%jdUSWR@`~v(98VCF0Fl&fB>W6E-qv9XWq +6!fuy9-y{03FNu`fUOK?$`CF2m0Y%`OQSKm3``eWkk8%1(mx?*Z1e4azEFl{DKL8E#h?%>ZaWlTo9j* +lUoMd<%pV87BtU>AJl3`0R-c)bLuLurt?VuIi4@9gLf+5)g$ginBL=_Grh93V^jJrD5o-PY3`Ldi24{ +#*L{6pSTD^kq>;xEB_k7!I1&9|bu=8BQ++?@ak6D;jXPT?z29xm!b&xOry&rFn>-?<2o%YEhZ-_HQHt +C+CnLR}ql`pbRdu=fEPD2~EmY34@Z;{b9r&&%pG7>671%z2hMEGdk<6TLeVZrp@E!$H*Pn05CC+zHx> +NQA9g=Ih=#9o}r1&&$*YinH!amIq3<)nW2LgJQ_n}(eF)ln%2{xaRqOurw%Pmh +0nK3Bf{X5eXN3IdqDvMUi@w}&g +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 +{N-;|t)i9tNS%eEv> +b)f)-fmD5wNd9i`%RnJb0vrOxkqO?Kff2`#ov|mnNYp4B3-l2EC{&I396P8UHArH`>>kMjs2#q?x~q& +7}pghXT6&h=es8I9OMw*oE75Pr5Y2xQvrPcOYB_Kmp +R(6cm%ngfkRBVp7k17eGVu+rK^9uKKi^Y8BYq&yUtn{26w`U&^13_ev;zyEq9dY_nCiM6_rU;Dxyk+A +`YtB@cLe})l7e;KCF#vo7c%ZWa!FoOGr)X@~Kz|}+Lw*`|Ww8D6FZm;%mjq@3`fc8b|t8q7w_E`@0w( +7Y1ydur0cwl-?=SL8E@nlov76ss3(n;Fj7KBiFTt9Ujb5!8X2-C$|9xB!v%xlA#23&=w_XvVAN4S-i8 +pcG__zoyn(#0ed +z@l+Veb;&7t$hK~%bBwwsLt~9gY(-U_GE%M3({lJwpHaH1sgR@Ut{S)R5C{q#9K;ie{yS5cXVV9fy)W +5h6Qw^N|i5~@JI)_ds)G`d;bSil{*0AilNB9ATkp=%40r%2mjabt9;zQYWqDx_e;B>~QO)=w +CQ=l+7FkFX7<>#P9x_+T1OKb5&4eh6X*;0L}@2 +XEy;4jvyNK;l!1v*Wmc7na2RYG0E*SA~lf&89Jh^C7k +VFnX`RF9+xQF9E_kI4t}|n_r0>Y___tM<^?TmppFx1^D~J9eh^D2X%W9`6*h_MYL(}yT9>(jQrQnzXG +!TVn_YP?`5BVqZjv_krF|!McG4r5--Jy7-j`X6?;abXc0ct^)EpiE`Ij%k^RZoky54twF5+D<;QL0Z +U_ye#;Hy!`Qf(Q3#+kx-g-q)86MfdX+qAnr=>o?%MN}X$j8LPUyurFrD{ydg|y*A>wElsICVw_564;c~yc5o +r9BTvD51%LO=)XcXMctw>vMnvrOHJaufmcC?~32Zuhx}}NX3SO`9TTDZ&=v6SYqYlReidf~ASzBnla{ +xk@vYdxEkEb_WOgVW<8dK{`)10A)1tzA;@4u;SG^Cti?hU0C3#=@hW;oRbM$jsb=WO8kKB|cps2IG(53%@G +;+qsoo3h(Q+}b-jw4Qj%Zn6<(Zr#6K}XrcLn0s3x#Dng6I@79PE*BIy +>|Ygpi(?`SgNJ8R2j&_v(NKtkfeF-3{%9V&rAzL9~_7v18*2yl(KuOw +7tjOo-PCM0HB$gF_LAZa-(zPLVBFAw{E6$u%ks5%ajM}F#gM +2Rwua|PsGZ9M}djrL5rXGaBV1;%h8hyL??C7E)%7(-;=uzeOf*8QQMkxpNXMmweW5Mv7XN~EI=#F +%l0%BG!;pop0IM?zmvWn(Odwrhc%SG<>;*VUgBO_RTA?XS#}{>hERcK9%~2?;S(+vln*gK(-OE!tv0k +2oJCZFElrSDoR?&snZb8tZxkdpb2k-Dr?!i4yMc9D0B(!@UcXwA8=bjJj%JtrXCmLzs?kn8^1M0496W +D9G&=C+Q?z}#Nw3P?jM9VO$o#GVfoR0GES8#H{8D3_XE~PP<9YSvyt?(WsGiM}0cuEeI-HFskE7BxSz +1aQ6Mape0uUh2xa}IaFN#Nn<}|et>OIhJ_(WmmDnjQ{E*4TXLjtE`ovr5Wwc4jTMV9JD?)VQd@OkNFy +~WS74`pIcu1{Ufh}S5KtO)q+GK&*%xN+7f)%^;ORVP5$pfCHOypO8;p42dMOuFAM@P0!A=! +$Jz*mAP5QnzD5Yf4_{Ckeu{!W%$*Q%U?vnhXgCn^!w`xbZIJLU5cw@s3b6wZCE?+z3O?d+33`Mn4;LD +Bba05_Vh2G7`jI?2ikXRnmy7rl!FB>4RYYj8U-9s65g+ogg!*73?C@ow@PWt(>d>?cKk~Y9`d1hpzOV +3u#dhR`f9i#TPb8L#j|%4WLsqum#eWQyt~az$r@0t}^7nKWb_zhA$L}Kb&XmDS{r5w)U +S6O|fbLo$?iRr^%%M&^PeV6=bb4~kw +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 +f-psZQ>5r! +uX>V3LUw9WN_3*>{tv54md_oJFxq`9NCAzEFnJn-_!w<@Z@kPQ6G&FEIPvVV0qts|JuY2SnCL6ej$k!xsLKN47T^n(eTF+UL7zWATM5vHl&eRL#`Z;>6X@eX +UQ3=0H1&{`f;A6m=~y2dGlmv_+A!y)MXMa}Y`ij{5g|MK=G%Z{RJwAh@dICJ7&(Kj^%(f1%)&1gj<5J +HGa_PY-n`=w;Du +K@kfks15RhHKdO->QOZz5@f-&vJe<=KF*>|LeU-<$~oKIc^u$cKSo-{?%7d0mQ+TL3 +Haw@o`y(reze)}?eG2KSGKvP!Q8B$W~NyB}8laS6z775_+at7s9kh+W6v`}Ij;+0EAIC)ilj1Nr7iPP +Fx+HS5PVu!i$EGDpxt7o-On(iV1Hf=J)QL%#QKY%9;-uSybr%P+r;Es3*jeA4GOq7)WG_m`pIwHuvDw5Pqn|!TA6JtkpNiyk>e4^Cy1;V-mF +X?TEmaCw2;sR|s>CmR`j$H+r}_{tqhz{@6D!RtK&8J`x!RYcMC#>-F6<6yMPz0)(1196J0c6+}l<<1gtzgtl6v^tGvl=f>F2ezbc@IGv`(W1jU>5Y1 +YQa7UtmO&b+|htBVeE!&p9CuYK}8xCIz!s|dtPdUWbU>h7pL+`Ijq +iR2wm|Cl01*yHE{a+6HJ8Xs0<5XoTeAsIKjLBfr?H)79WxtcE-l%0pdWYmT)G14O<2Jb*sJUf8oGTB= ++sHYjhV==fnAIG5l5CBi*}>z4p)q!XW +x|x85BH!d(_cjs@K>0gv#m^#GYTAzX*_V4GIr_Xei`Ng8K|f=J)d#TU~hr@%tY$4zYm8pKj8@sOV1(U +^0V-c$gq)ya-flV{5sdIoQWK><)qq+DSb;X-JG&%@rFKVqbMgC0h)Yhs)kf8My}lnuxoLeiFr;?|>;n +~5%50S78DDPBBZZn(?R9MnrtdT-UYpHLQg$&l`xX7{IV!`!>B+11TXr%O?Y&!D&_@qFfUnE-?;=mMtJ +64+on{)RcoZG*Bxs%Zz3GnZqpEODZUpwf6>^`ZJnv$uz%?6JQcZmxC*);(UZ36$0zZthR_PpbuQk@_)gehXH%WK)Zr__ +E!h^5RfPOUs>&OKb*k+J816|*6#s(GSCA@zM?V>F3DlpsrYyLgmhOr2CZnMBJ-YVc@CZiwH>J@Ve4m~ +$?u3^244DB~##)g58k`$v{^6O%B91fH|8+l?S5L!^C873ObH#JK;(&F}doPk*jy{z~)im{oEA%Vj+ja +9;o54<_9mX1#u;J%8xt9WeBtdwtQ<`z}ZDfA&hhq$&U4D!)lqes_Q-ITD8SXXb@Wej?Hj{|fXIi5!zJ +X?kEslKhOS6h9H)pEbtm50hW^sgF`0=D&|(Jpmup-xxoDEQ%bHIXl!$KT`5;b_d^7e(>C+*)iyY;YUd}Ne}%%82e-;u}_lqqtA;Rv^Iar^gACdV$W +YXMA_f7{C-4s*xR?Al)Se9>c;e6F`0a~M-Tm?k&>>g@ZsL=*d6s4zafM9s+o7BD1ooIOZe@2cq?Bg?ITfar3is=`Tz&-0fiZJ=#too#UY|c}@Mxwpxb))AjJ6{{H>_mD>aU= +>Go7?E!yue}8m)ACZY~<;Z_76|-MT#r#n!W{)Z7kbWc~SZ+-o#-Vko@TRy^Na;t6mjTT4vbAuxNss4b +s3^sy+V#SA?>IUsvNe~_TY4oEHXX!J3PI>xNF${=Q}7;IW-hBUAUs^+IxzBbx9eN(8gH*T(GC4JpxeV +_PQvug9;pT4cL=>Kc;$HNz&n~=7w%mme5C^5Qgy>2UG9x6fN0!FPYa%>tlq3b@fxv7JWmTv?k? +yJ7PWa#`U^*KE+NO$6R11&W)W_#3)56K@bm7EoTJ`s!P)MNUkI%wwQN;6&x#X9SZ_VgT+fT>2d2buXm +SN+8K!Q9v8D<>oyw<)_!PVh%4A3@c;R<6Sa%_!z*yIVqIENJF&g>D7)oDre1Ki=5AO#c=DWD$H+jCx2 +?#C>!bt571eBpR!ZpfNOw-@z%lEiFKcvk(quXW`*{>oq%M~zQ*AeuP9IVs_774*dA!G+WhsJ5Jf#@m0 +L$~p18hvpw>E_b+;H|vJ5XkIMzOtAz@Sc`Z2BWRrSR&r8RZc*>j5*OY*Af*QI>pz~=x!8~@nEB>t@ezRt8&eFi&HGs&43Xvz;#^~J?iRpaa+4>7_k8;sewG;@Kl`ja`}iaTfV;o*yQ-63XDU-D4vu2(tqJqHXDwMl(1i733q>;xBWn`c8F+ZNR`t}mxzQ5=d!%1(#@fS~h*)$z-5Td*ou!<}v%l<$?DxZuv+DIr8wdOk5#9aEFWa@kn9)Dsj^r#!q=n)4JKk6Mh;xOW +Reh>q +R}=oh+AFBi%}dqOYKn`&cDVT08l<2CWF*WXtrj=_QX!u{4G*bVe6x`2nv3j&Uli&_r1N +-BKzE0)2g8!?X{@KHN(=V)~Z@+Ze?k-7Q_K*cNxDVqy1bn+u=WpLgt}Di`s1;OxVVx|XgD7zN-RtT=9 +KikIcE2GO{q;^?!zEVc_?xrof2*_hHr*M!es^oapCMLRg|{oI=oxMJxZy2!^np3gb`uLVqi#)QM(CO; +u~r72@dg|nEPIi{sLbBrzp>M+B$m^ye~Kgrajh@2P#xsJU<|WI-CN7JyqKF5?{`c-8ATijJH<}r7DzE +l-w2ya!g-@M0!*(uo|?P)eHz04bpZ$}EZ#Gb&N3ol*bOU#g0NosfU#!EI#smc7W}%Z(CKWs8y)fr)ZM +yzP0s3W0xypez^oa6-mSO@cVB+HyORJ3tPYl!2dHHa*?1K7Wmz0Fz!`+a#KgKKgm=g5C61WWGwcDc95 +3Tl#?zawL<6$>j_bQ0q5FI@TC~u4$m1&a@fK5owI3I%1H#&cM{Uq=N7Qoq|1#g!k22i-fEI5QAzQ$XvZAYbtxXr(`nyS`D~i +ttX6b%xh-pW8G*7$u1g|nQ101!0~giG5EkDQI_6)wY|_r5&+P#>8KVMC87JPAQ1P*n@;&Udlu%8;ZJ- +8($%fVNRV1QL^X_pQ4q?bNw-E)sw|81NXUQvGPWYtgn(Un?mh(ihS!@||1h#WM^-4B#2Q&XU^MCQNCw%oA4 +NmJ^YV?f@H$aqE{#jvzgFr8o6#5f9?AN4@t=%Fd$2WzGc$qVsJGkoqP(@9nKJ96BFegcFk-Y|+k}hKf +xr(1)<9Y33S47h>t4YhtG?S(HBs{#mLU!Sg|)=+98t5OaEiuvR7GMK@ks&DJIva*?{Eu32nxYS1pfh9LR=hCJoRbGNWSE-vm-IEW2 +imGhmm7GD2b0>4q)~DtN=tGLr%nJNQg>~pDaBx)i{2{zumQpHEzC +pqxg9^9kx(a>?Uh>!;_!oIfrqlAZkU|>ofneP4C`+4^ZAB3UV(WVRKM`H>0nT+}(#+XCsO~PfU2tBqpCy9RNs`}qN=YO|HG(C{@bXk9I9YtoI3Tf+sS!P_yB5 +yj7n8I3gxvD3gG#qIxqL%;*xk;2-`2gK&S9VM5fa0;UQJ_Qy@Nw@w8BWK?lB6Y8qZ%cvhDRW6%Sj!-j +gz-q8-GB7I38&a`%G!CgkfH_oA=fQ2eyL>CvaK*yv^DDi#tn#&8+@Ha@WEs)}(9mNqRoVgXp^14!y@g +Z-g{`R_iRoDqP$zRDEe6!cuJaHvfEOD3;Od6orC4PZ`Nj@$gLS=tVM%h!hn8~MvnpMac-5ngl +k6%M5qAzor!`hDYx&{-!CaJ=v6(cue*bg6!%IhRj!_rwST5~^4o$^HgVxoy8L!5hA+Bv0`=#&z+yTk$ +b|?Lo9$nwSpbn^feL@P2c$TsY9$IKH~09}7eC5||9n5z!q_&h^c>5lGJ%JGiqC|BpgdWS&jg{dtPaMG2_*o{{4!bYik_&>x^GMJjF_&7DJhnWtiSVU>mX;yQ6K3|`7? +)z)i^j@k3QzxVcl5}M|AG~DSSK>$oVNPDOC1LAMB*YORbJc!^S$`KEbWQjpYvI7U8}~?A=iqsg +L-9QAsSMU&(FDf~PC7+V21HNeWMjv|3sziiPx0cmVXlF}izAdsidUm%2wtgyuV%q(zE7jCqw;VlW&ok +?-_#@rlqo$t!bf<_BEwPet;9^c63KcqiwRhdAj{CU;!F>wZ4GZ)W&-pJ)obk?{_dH|y=QHOP_VR6Lx) +293Ej#tg_3*$C`h5H30nPg3!`L>AoC(u;^H+SSpZ-3{7LH_>WOz+wxWSjs>K2z|rVGD=w-YtahQiz@S;>>i=V~~QavhL-b3KA4wyq`3s&{fwK4J_AE(79h(6u_Fk1`i?QugF{5MGAfWF&tZOtc=auZx)nEr +)iX{;#7d^j||&KR)b-s0#fCRqcQYq9KxiVG`Qm)RCGZP@wZWxHU$Y&RULv3Cpb2Ha)7vpPF>>i_lEF)0;*bnhpJYclaX&x)h`?W!>CIC+o)<=XUx80eJ_o91NrjhrU|gL%c}|cpF_;Jqf+j6sYo#cDbE$7D#7%zVjf9sSJY$67M@Ieoas3rv9_hM7!i2BxN<)9G=GL)0Z(34RY& +ryC3^W7jqEy#6BG9|@Yb+Cv0c2%ZLtO!06}8JdI1Yi&ia>4PBYeA3Gk6d#X=#CUGN7VD +Vc2J)BMsxv-RH(s0dvwgu(j;8dB*r;`>Cf)3XT%aRGT)Zyb$T&O!6(oMIaC+ +WmAYb3h{sHJ`h^;htl;do!ExsP|`HnvWG=6gDXv5f*!KyZZ;&r)p+Oa(E({_2stGv}*;B)VK7ESD!RB#xc8M%v=?S{qWPVZ> +X-)}@1rai_QO5#-H8WF~RKw@rVCDQnRJD|aJ*oARX{=S8<7;?%+p^XjDT_ZqRh&~Iehl-E?9igB4ObA +~ge|4RQbd9F=!=(T?7(##EJD4)CuRzoH9j;=`UOzM)=EL)(inq3)x&*6uTTHMlqih0g!{~KmqZ?IC#k +pREb>JvODyd@bub7w_WkN)K=9ad?X)0Ox6629Qe2LDN++jSwCwS6R)s)}i$@%ddUwvINq^T&u&GA5bh +e8J(*!)0@X4Gow?fm{^akJthrrarx;$V*1@u7K;1YrgwVq7!lE +aOhcq`zvaRtvq$=mWNm+a!Iht{P=UeL-W2F1$~OQ*q0f=Yxvh{% ++I09U3m1XUp7)GyYyI0N +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 +__yXF*iVACi_w;bu5^(Y+rM`&d%%2(y +X~gPEAk?H!;nDMPyt*^Y_p#qu#w|MP5U!T|lk&)3uP)X47g>pGvE_anck +NgL2DJPA7r?~~;DictBPfZLgc9xKvo?WE1J?8r&r0(p+}mfc|b>vaTrsxB$A@GssqCdSx6n+e^~#eW%Ki5qkM3b1s(*C;K3(>3n~t5DCsl+98BXH)-I=HsRJ%|+pWe%_}znJxh&*`x+%Gl@YCWM-cyaA4>5 +cOcpsRViG=5S1_Lw`CW-yR-?ngiPDy~YTg&F>#`QG{p;>5LL_Nn~>xAXpFi`@t7@@}%V69v)Jiipcgg +Z-|wSje8xZTpsvqIq+Pl@~UtKoZu$4sG@5N&6;u^^r;zji1e3=Gv?g&}#B^L)`exSx +$QoHLtO?0H2z)BB$Sgak&jxBu0PrT?#X +%k_4ByIN}4(m9<8aLrZvVAEu3(dX{3FXK5-@-&F0T-BD%(5sgi?HbqFJ%0d`wVv}g$T3iSfSi?QASGE +Dq{JQku?b2)({U6QWN-7VhsH9kpwesAj}Bn1JCy5&tJ2y&u04-x?;vCVM*R{6nsGDVMAo17TVo9 +>k0>h#fx0-^n};^-sjhoXYVKv+~*#=EyA#jqEvfO2Xa>UBS#8Zt*0I$hL@ST51_h|^G1Jp*ULyGqH!n +Na;k>*$DE%*rLZ&curM%%6cD0jIx;n}9FCi8UsAO>7@>3DKQ2;-2re_0Vc(mR +-Si_2HrTMJpka9C4)qKcj^{puyRR-cEdFSk01E(T)uO8V^cohv4nju%5sW|>&K40%Md46$cm&mI)q86 +p(EhiIB8HjaN=$ooeoLd5@S!SIwXp6T>Eb4~lZpPZfFkVA}8pL=a2iW3_{)V#j67ohmKzJzeRQoTP$Eql6DK8w1yp__+BH^bt +g|-#rudR^!cv{z%DT+{Cs86t)i&IqB7ze!R+w)~TJS9<_7`t-i1(W0@W@>LEM^Ps?-GE5vT}u-N@8*w +^oIRShN$y_o(*Q#|yn&?_Mz5@C2pY4;4821*>FCf;Jlz&U2QjflRH?n4BPfLmnoXOVcv2p3eC6<#&~l +*4k+;RP(|XVM!|$_g+LKEu^9|xc<-82|+!PQUN_%t#Au~owOsegEiI=0KzZnh;AnLR*t;W7W+>cVqh1 +Yn7@l8{s7k0V5%tl6thy8bOlc}4W`48v9{DC0T&pZ7XNByfO`HHLl`~<&6TQCjL5VeCU5~q+oU`3BPC +m1DA9Koog(;J21@20chSgFgu_ +6goNvk8D%%VOgXOsFWl}Ig*Tz0jA`Kbw=dF%m^P>-%ow;)qgk_k&pi8mu|&_YKS~~DEE~oA6fE)J)b& +yN_G^szl4w<5l{4}lVZsM2ovnUYv`Y&E#yF3)IZUds}A@&j&%Yu1r3o=Fq>lcJG3=_NbZ618!2)Jl7B +%```KK+$<}Ki9GvtwHxS+tQr-^+-n9OrN)CJuJY>lc;dO24b;mxxfonEI8}1$y{VpH&Gu8Z;d{|>xu1 +E9k%3i!3Ed5dTDU+I?>ype-gT#TO0QpT}5<8ggzY^X5*)0Npc8`B{i@=}Vw{N38;XGn8{~AE(hSCKi)EBy(qwT_$|clNwJs=S`vX#>l8Q#*Nx95a2=p6TzZj<^C(5}~1yt6U +3f6cEUai)UhN~b>U8kACLsp3FNiU62yiPVsbmB&!gY;Af6lVlTkfzMQ)JB7^0!{fm1%Plei+)NjK~3(6q?Xw?&CvI97mTwB+1Hh^%?N-}!D53vR6lBnE +qNq0-w!;|t)L;qqB~Htw@qZ%~Am=JeS1Z;Op&W?DUyP=j@Gt<>Qz`b8KXV5XcM-nEDWOi)(km?R-B#WuriON)6z@cgKzliYZxwm! +$2b1I7^m~lJPc4yi=^P^=`z95a4S3(E!ms*VvMArUrn427p@1XHVAKkby`CqetDEb0?nx>34eyCg&NtGP@?pEOW%CYrYQoW4_(8^=&iaYI|bE)+EtKLkB|gI4NqGsM;5(bR4YKjLAOt!X;S;R{70*!*ZjI_4$UTx +^eX_$*o=eoemBE2k#vjN^&XjMVQX8%k9Lj+fJ6agw$%4<7%GdgGVgB(OCn-#B%kO9X!oJb9Dxo+yheq +2Fh%|B>a7k)IRn{qsyA`^yPS4Y;O;@}$cM%wv;&jtPHSC$I6}qhkph!o=>}SwLLNztgI@NQBbmE3&wUZi04YL!KX2-Uky|M&$br%T2 +#DAs|e}d$30(yd3y?SzIXZI21}#;gXp+c$9~0T=qnu7)UMnr`PMAzi-p~_GtOh>&!L)*!RsoDeDOu_i +JKIRVxiAnTW%&D1>nujv(6?1a1;+AYKD>h1@apVCrWnuT|h0xKto|Na8J1pHCKPDAl?1e9Fxo0+xPt? +Tj$Orbi10AOm40MHsp|4_t(+cjhvW_689d +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 +B|$o!B~Img&(Nu&tLQvrb1 +wfBw+|dPzuEn6huNTf9rLZ3HGv|E>Y5!R7*+)9W9{DQDh-wr}b0IS6r# +`aR)GYprxY$X1HALX@a7=fu}R&016W#}fI3DH{p{TuFiAZJ`KW3mDIxuWa>CVQd2(ux78 +|s+5;cLmtLP|Nq^_l2QNe83Es(($AdH-_fmX9HvPx*qwqnT_ioqyk6D0bq<#Rt&*Ew*#KgUk2TJZM;v +zzL=6s+n`H8fG2Z;-NVb_95V-{1tpzW|ONG)~O)Tv7k$I&`J>G8zIHb3jeJ{saSBE${gAPWWZ-;|5oR +H35)*>Ax|*kYia?plS7L!6gB4~U6tcgN2*Sh> +$H32dg}zj;8XqK@VmT8pgMC3v{Mo5G!A@U7|RYoG#&w7A|iV=o}8`N9djWQmmzQv1Lc%Ce16z35EAJ#6A#rb +q0a_{8gkGsOIMnSA6V8;B47Ftl8+jr|Jj=zJ2Bj-+!gtvosdgLBnppi~k!s?QbF*6%8O@wE!i4l%RI7 +7Rc|%yvE0G5=)H^ubC(lFZxiS0WYD`z^d<+QMyoMT44792aSf7m%vhc49&P{J3B`P>Aj;wa?%;w(>u0 +3w;l9eXU#R7{RDtM&>cRpVIqayyM!{inHEa|HJ^5hTnJY1V8URX-e1NYNCy*L8*HttKqE4_sjhW;n;& +ciw-T6!>Pay4y0;*HA(>fDDe8)8-sZ!<}YrlRyRCOqH={$P|nI{14J>0bf9_^Adm*xl6bg>@kSv)Lr0G>jIX|{x< +uS0N`Uo;w&@?s0|bSNfZvcoF5ZzyJIA&q>3Xq4@|wozy)35AL4d<}H4cp%1f?LU$rG+`%QJ6@p?*~+h +2~{l*Y34kD)&mm5M;2&qlm5O&5_~b)x4T2;KBY-7)v6kaXwE)r9_5)Fr@L(pFmo>fo03LmW);Kbm7s$ +@w4=OxIvvS3#NGopEf{`L+8hjh44<48OMW1P1lD^ui*3LA8(rTe6MdD{>dh~%_UH^ELTb#DhDNwugBd +!wLk^syxgPcNX}#w-)wjk270khDfH=03&*kFN>{T=w(UZNz?Q}52-c_43VaDR35rgR;m;%3vx +b#l|tIIp8ig-mfasPPzO>FgZul*yu`oZh|8eu^cv4UHiL=g%>aEkmM!a|6BO$*!FcG*5&K<#F3+gxn4 +^%J3R<3z>DHY59kHLdmO+gcK|L75e+QRHsGfbN~dY!i~))Q+$X0Kw^|Z@E#clFfZI`;o=`3WzoswYL# +Bhq!%;0>-zA3<}y={MasW32iHF>qZFN*3C$KU%?8u-Xa|D>QLFX7`6#4p?eFG+{QBCzqBI~f^B{R#J` +KM7BC?H1Yzla6Jb3@^~1w`7QRMUj^q}RSe3G%S69Rw;^NOxRt#y2Hg6~k*kIOI8%sw2J7)!a@3emQtT +v?eBahN=krpgJZSu(%1I{NecCF)+w>@9b2LYt_N2gh>Rz~b|T!dFECGd?6;g>A1oKe19w;xqdoU@{Si_Z%)2R0@;*VuUzJpBPmI+4*(m35%5bCbe$$VGPeVVq{Mj17i({!47e+ +RTdB>oislVkauJ`5qFl!hFP+ +gaCC#zmZC%s$Vb#hM1dr?Cm5JjTuSE_SMu2xZYZB!N)mnR>U3LVSH874LUJqB$HqRc=KxKG +@5NLl2|SJSvQMR?7@f^J%)%unpr+-ti(W^RFBZw-2?q6H?Jh>F=EQSAj~Z&+m9=961cE ++9_x?ey{`;T@rEIa_Ncgy~p>ZckX@#ty9n`+@g!da*pxnWG*GJFM+o+7_%=_p$>3&PqS-yLb>`DsYcO +!8vVE9N*MSuSo8!XUdHUo$JMzrsv`LhCoqhm-u;to!KzgJpo=QNG^MS=kqO-R*>8xvQN|D*-YmXT542 +AJpyyZvvGIHs+7xX#4o +0xYF{BO;5W~vH5&05ju`F82R!<6poBU&=L#}{{9Z_|Jhy?;T)hF8>DawKgL;x7qXc^Rk;p<;(VoHxl% +~Lle~K#0NHR2RP+lE-#HYr_@DSO>7*q*Ma3Nzb+xNXafj&a13X2Q@!s>xVdr?qMrSUVKZJ$mjdG*!Se)K&OZJr;!%l^q&~)JIeV1wdvnJ89IJ`?*Fm +5v;6xum1?EwFPlY6`ssmxZ_@r)rFmHWTc5t_?)bmO|NAd62vWa%{mOs)C0lV-_-Xe`n*8$a(qA4;HGh +NT{=1#q2U7g$^ZJ_0h2onICkB5H6>i$&@Gcwy018ZZM22kBV%wa3xV0N2_`9f(++P6`yQ +k&u#*2g-V#D#B@0IK=)O4d*ttc&uw!N;9j#yFMkA$F5WM?4klf5fk-Bt#(?Zw+P8M^Va)?KV{mDpKY8 +MN(m1)ST28@w$bt|x@18~EH*&!G)7ZpL8YK76~mdi@nDK_bdx}DHJd^5NOY}_TG +q@B-`TQ=vo@8lDt>SVrpUuSe$cUFJ6T}hB$1=eTR77qh~PxK?~9r(r&iS8Qa$3EHGqrSEc$|4^x)Yx0 +8TJ)@OG$!-E9R&D%lx@1Jju1J&ei1}}RsqXEG3?|KjCJWYlFQK_Qsqx`J^FU=t=Ia2^!{93odtKd`W> +Hg_fcPHWQC$LpxX}kX&I2-Y{9mT(7vtw;|=@X{Q~~Z4g22x0{+eo``-Nm{>}~i-u(jp?1tqz|09V3<` +Z(}cZq>@Ba7co!3<-l79P|9w`t~yM6LEJT*G`Ra4noY>2x^`A)7|jay72%)5@+LbhH7}LF2d&&f1{NM +Seu`sWHL_OVhlQc3RfdFVb@7IDWwSz&=tcth=*c`->!HE+l)K$%Y7a%c&{wle<|3cTs7XBypdehCkz3 +dVoyIC5RChiS_6*&O(0SD7mNI^!S9_JYbAfr#mVk#-?F2+y3-kjC%H1lw8<}_k~hPaHj5BJ~%wt8k5i +PF@hLAFoyKP5Jw1bphJ8a4F7Zvo-ZDqZBaq+SN6c74jh>J^m#?vuTD>skkBmCM9t&&ZBEUh07_u}bLRWGk8P4vEQnw4O1K%ABTM +v*1WKwk@oZ4hjUNiePYW!7vzUl%C3STo{{Kcfq%MmE;`)j|@$UT<(gn=Zq?;~PST`Z66(p%cQorTAS- +y*Q|YMR)+9Oo!Lfh$y(cXuR33JA)cfISTAU%|UQ`JbSYcx6msN$xFiW`1v8mFGfGx3OX#P2{iQk-UN> +ud1NDYVNjTq;v0B54B|PQJD-)bMk+Is;HzB5URR2c9-TeBxvE38i&#r*rF_1}q-q}_-gq&tLnkH4M56 +NWSLlvC6^NS7Df*Nnv=^wq(@OivoXWG%KcDO&_FHBl0^Yrq@xRH^$A*GJ= +Gt`Lv97`eb7I)~tL~@(&|E$__jyPgb0As=wUacT}(7;sj4s01Ms8-^RqCMYC7%^x@#Q(2whU&v%ujg8 +9Qiw#xxF^-Os!c@yzA#C3%So{_Ils$`LRN78*`Sxq0bcJ=<{=)V!CHrv$D3!Yb4Sie$lng6mgFx?3ZE +~nWHysaEE^C$k}HWAHOZ)Q!J1wg|x&B%s5CoCR00)f_xfkSQ<4;R0#YjpU=~7?)qhn +G`;?T}^h(O~EpekOKf@{yNv^x +?KWP>kH$jcT`q1nH%0gSgr!>oz|igVK=iXe_2yWOZY~sCNlk5RsI?@8;$8bB-E@(`orATW(>9BX?d9{ +vkNV4|MY$yakuuFc_SoC8Mw=v+`GphOAtk-btVJlu1x<8Akz$b|fXXHO7bm@ +sRHg!Gp759Ha5gmH~CuUK&}vS_*O5=LxXor|mQ^j +wpzLVx0EmU0(V_IgZcXxeiAFBc>j)(K@@D>)Oa;WUNR>QJ5T!4^5ATG1mwV +s)S0yWf2=zGoE6CNZZT2L1?B<9hA=+avV%N`BB}HlN6X}Uv^Q}chN0FAG~Zj&*VZM +8ih?bmY9kX3)>YZNL}Uv7xmItq?YQJ2YN8_GfFavie5~&ekpx>bDViC{Og#?8wvz3!>!NV{Oxm5nGYB +b-3B1`);H~q#YTr$2t>|;ML>_(RVa@7ohUjA6@MXZtY!K@sjtqXVE>UwqfY>qZV~Ue?|vWB4ch=Hu~_HdcRm7t +C>xih04(QN)%7Lhf(MDPVBu{NfzhKw2JqXSx_@LA7bz(ehl@Qn|vRYt4^MaM8K256H{eFhY6CvNz1MD +3td{=W?*y^;ZUz=cRXQc7D=PYrh9DoEi#0Iw8tBZQU=DVMoX;8N!XL-E(q1opGZ%|ifXSf%qRWig?5&BFZ3Yg?h=S|9rXz|T678MM +=Ls-J4-Aid<(3w2UYc`#)YN>l={1wlN(_a_pG3jgsRRXG3SKjVM=XZMf){6)exWw+m6%M? +{!{PK_gr%Lid70&J7*_%4c!cdd~173eM(y!qH?JLNsu9 +Vd3f*3I-D*+k(Wc$YESX0H!C;fJCPf+FaKYCm!0S9qAj+e*SFcehi%Ha}Ku+Y-UQg5>7Y8j{8_9X;Cp17U&y6doM%w2e +gurOb3LD%^1Gk%+RS3Aefy?30ogmzhm4ZW!WLW^6UGF6G#2n}5IvJ_P7IX$C~pZSa%)@@NeJtu{F%KY +t_*3kO=X|0&=Ibc|X&=lyjE#7{xu+FZ{HG*<-1;uqBBR9RN3K4UTVC)&rjQvschA^K4mRRAD=Yq1J-_ +|2^SHIyq@4|Qf`p;ry{ew)l(BLLovSL}}v%}fEZCi0{{$-;ki_cx!^2)zU%6=xI +9lW9Wdx32fhsmx7WAP_x7~x}DQngki7TFsy)5*=JgJ@BsH^VdXOldWKvKK!^@i~ce9u2FXMNEeS`2gQ +y!2EGTXp=Q3xIv|n-GBY$*)9GhN!My+nCR1ME$z1*B|=NKJbm)fu;2T(=Cmy=}KBty#AByB+oQoxA(=`HuN+?&wq~9Oer9zmXChHMps=@A1qUUe>{}rd$BRXgV|7Rlvxtx60$`4Qp#&3(t +U6c|RcKJhldrvG%r2*_?4ZUtf|J|cmW!6>tZlo8(S0{gRUdA5i_k#eb|(4vB~l{w!Cqd0i6fY0nVNw`(I-&V^>HePg>i4n +RS}-Y?kTjhSSlnqo%iVKGanHKrjCc}EbLMnVv?i`=0y?=XOIHMlm{&Yy#$x}r+-eQ95Pf{1PVtUWVt-{pI30mlqSzeCz!G-8kApsUWj47S- +l&!a|daVZ>+MYq3H>?{2T~E%>H!=R%M2i3Sf*AjWr}M8u4E*b%TM|Mx2L+0Nap=3#wb|aCNYhO}5sx- +j_co52Z0R~9wnoF6pVQrR9Z6UG@clW8a2H*SclOf?N04nD3EYJcqi_QOD^}RXTk+4<2kEYY3unKkKa# +!OW-o|cYX{rc(e^nCVz+`P!A&%X+GWS6o!Yc@B=GIMT2Ztuaz#712=Pr_5d{AlVr ++91m^NKB&X)IWf +L?ytIBp)CUw0%-OEdP^yxj+hqXQyMcX|H*6W>4Oc(g(a|)$`Y}X7%(L +U8hlHAvFTXrr84DviTHWqTsLK;}0L1=N?t4uY*u-Mk}%M((2&YPlMo0Yp7MQhRohe*$HJdT(EX9X&(i?j>*c({BPDp?`pXQVY3h`#J(RM#;f(=yGy;>& +~vqvP^y+*VD|aOP;;n2{z)@IYNxV|R}FoIW8A#FuSeRpHA$@j>Jck04#CeGRMrFH2k{Nf=N>xaZuF+1 +BqPxBRRwM(l!Jtdn)*8F*t0L2TR~!8CjveFzFPAweWADO{I`t7x0KmD>Z03ZJ-;Zj{BHBv`9DDrgnvO +1WHbH-k#9Rl|I{A7w2!{?>aTM2ckPSNeR46`GVxk6!{pZ2N66jKXm7_8>96>17qn%&?7LZ++PgAq`U9 +aYD{toE;Is8i0D`xL3ozZ9VDPTlNABvPo50^+tLNRftc^b{=k*_^+3|GV^P;u@ +-)#JYa-LbqztfI?*zEnQ15JRi(C)`{0#|OLmvXLi+H$t<=q^NRf}=QoFpo{{)2abBL|(P*&G+BrX8wk +9o^ETb@#rqt2?nysN?B|U!y80v;u=4D@+{>+)Ih9&cd*`qdV{<;JbSQS^Dxo-z4Xwfc`yH8dtbKXsFG +#-&R68)ZPV=%^Ki`W14xV#NFWBm8#9POBLeaD*PRGOMn*=Q%u`)eU2WE8HDn-g9LL#v?P=}K3Op^Vk# +(8+^l5WUsN0I&aA>|DfPR``c%1UBthSYZ=y%69A=E=7ZCjUr%;$B|aqXr^ka5qc6GCv8!PF!1~2&%#izrGxGyCHSS*)YdKAcG-vtU+MRWY11)KF_rEYdU +in7A|>WNNgtj?mdCfaLtw7WIGy&Q_R6=rn}T5h?+ubO+-QEsr +--mO=vvD_@?Ot{IV^)5yh5x*kw#cZ}Mno`Fib{|XR+8v{-#91Z1**(%`w4K#Fb&V`Mo{x`K@tRzuH+! +$5trF?4`-T(e@+@G(gRg0_e_45sPSZU4=rcM+vcW~PB2rYOF*HQI_#KTU`fkoilje+PwSHi5CU@~f1M&}-z#S +XLPGE91q+m*F{tO=E>sE>!G8`;eR(qeiKIfFG<(?rbMR6F0x6$uFthD07yYr(!>~KfX4d-R)-31fOio +vMqg^@5ZD~u&51HGtavvqtU&`UpIOmp6dIY&Bp_BF4&k@mwENbQh#R5)qtg`fT2mjI45c6 +?d25^i&X0{p*9m#?SXSUuQwh=y>J)C&Oi#%cNNO1@RfCMu5{G~w;OuVaN!6HoctiseH$8AHS$n-=I<_ +tcoUMRdx?A39j9j5968ssB2s)RxJ74M+86wC6NyxDczAP@-|?D(t=px@&clE5@xD#gRW2 +FpB#V=Jf*sXR%c|=9UZ5kiV9qledIiMH^QpzO<=ZRohX0c@=?6GH}>Y@x?$gjqSa2I4=D)<(gFO4nH> +ha^U%<7GWH4MpRTLqOQ<4|?AH}eB&yn9G)wy}B}yThdw57@Q{nCsZ7xochLx6t0t6BCnJmKw;|y%d!y +caHdH0PM3oRhYyH3xvB%3Zc(Ez5GdEp!e4RZ1pi0bg|uiE8F;ZIsNTh^!Rp3v%h`&KQ(Mhe*IRLVf45 +Em{LSBj(aOsnTGnj`T4))1V7}fem1!uP$Y*lG=&n(=V7F&#F<55iAfy8x|5WK@Dco(#SqVtIBa1FFdz +ecIG>|Q4th@@oeVwE3Z@Xe!NQfP=Mam-kP^5Wb~Y#BsKi8QgHf<*<#RL%@FJKMId$}4r}R^D>RFVq5D +_v7bl8v+B_KgVzYf5`Fa92Us;2??GMV~ehTKF&A44ud@KcsS{}T0U9}jGr4t{=1Ml#UL&iu)qbEXhdK +Yms#^VZ4-U^Vo|L`mJg_8aq=7peVJ@`1qYQ(&swDuAIr&OPD#v$2j^@{^2fDC}kKTWWF2`zz}@))8 +YoB{fI3;?-dya^tBIi^p?bX8e?Qq%3|!V5<}0-*T%!_ +Whe*NKA +dLB@T0%9elkx(reWWH+V)-I +?kG>szWnO5aKzaqKPr=;vnDox~r&0xgY|CI__HLF~-S;2Pj<$+DQ>1v9i;J=+imaXaTavG$48GR+V5C67c;_GHRkM~w-;8+x-q_$2Q0T(O~rweS}5j+f< +`2z^@<)ZzsgueGL+CsFzx`1j=h(!u^nkE#+O;D7v+s<`05?$0*NSNjF|-3{~AenEbB!+f=0kl)=fU+o +v9*f*Y!jHN{QA`)_MPnT#TRxEguIuIyu%7fiHMlPUFYnIm+y?D? +)K~qD^cP2ff7f0YI=KFYtX2-kRth%nqEh5H$YH +j747USZT6jeUYz>zUS|!D$!T%;_R|2u@N(Zl^8>gZ}dL2t +258`|nx~$vIjD6x;w3u?TJseP!Dw(qyKe~2}Z#OE}a&dwH@SU6F;4jOSx5ih8wJ@VE=Kg*jHL{=uCmt +GX&+jScK;71kv*!A0bmo-UnN(wa4d|0c!rB%z$=MiUP~CkzC6)XrW{ToFb;)z ++pv|-r)l+xbK#C*)mW1!UV}-tP8|fN4PHDZa$X)%tF{(>7cVrHTT7&v{qaU-gcjA +j^nH*Tfk3z1UEo`Cr +-zZcL)D;vA$X>#Maw-WE%hv(MvKvH{^rX-;ruvuTwT72Z`Z&|HkZ`$)nw6 +mx5F*GYoFi8q3~k7+8$x6)wm6TKhD!}adS8nbg3i=A~@)byAc*lz8N4Q2!!;?>P5NGwf!pp|V6X2k4; +!Zn$Bt5hg9EN1>PudL(B8!J4R>vMPCM_b0q0!2qj#)RawNi{Q$yZIQmePk@V8OKB=b>d!GQ9eGF@bXv +!zr4-C!ru``+XXvMB{u@Mo~`!k_M9&A%)bn?gEV$IEvoCa%r7=}gdaU+R;1t>B{L6u-R+8v_$VsK +n)+G=ZyhdOed!j%=jUWe;3d4!GFFA#6O-E;w6$2qmSjll9Qg5 +zw>+!FD@dYoG-=r;LnZDFLh^)ar#iNooV0+sgd|GbFW#eaOW!?wGYw|m$=sxnNDK(Ig0R>Jx?hPS93Z +^!l;=H<6lcAEtK$BRBT|NU3o@2NdL-0R(~V5H?o*8ESKvjGD$jV8%HRWrtunGD&x5?E#fGc2c|1rb9t +GbTT;)0xO7C=6PkXb3r0vxy-en%y*HR7L42eSv~)gHjA~RRCcRGz_>ro0B@Wak*jsvp8y8h9fUM$ZAmqw$e?kEirbgdOPO5lok_9=)2i|{*Ow +qN92*7_J0de1>s1UDkM=&^A0vZDHpl +g5zTfBRQe77HS*`=+=FHEDxg8tYAOep#F7GZeZu)WQ?3?J~dO4l&OL4`ny24r@xT`keZmpo@QqRx3@S +M?Pz7Lb|lI@JvnO%Kf;~MIgRWy-yk1qCYTv+O=X0I>Fs`n7E11eL~lZ-}RdEGY){=@>~a}~YXl+T1gR +R?_!^)en@^;`6~B!!n++iZTsBx +1{47sqlg-AR3(Fs@Sz2Nqu@g+V!X<&#=QdL6AfUpu&2Rx4cEY{AHd$MBl%RsjWmLf>6*hqVsHSQZ~^; +(PQW0*3;DVQtBe|z)swo)2xt>)0#@9J@*oTyMsI5!G~1`4{Z8$BLWU2jXq4u@vI +ZP38Kot%mv#O%;E&TJn*ecCpa|~-nrqxBf-a!I^VnI!MjINWr>F8fJb;f(@=x8c%%*Z{&(M>QI)YeAg +p?NlpRD##~ciBhWS?DhA@+-egJ4yyq*YWa1CV%jlgWCmfGTQ_rW^t@Bprh28{PQelgsSu#g+zGU4ol* +9M+z!ddZnyswGL*U-VdBDg-UzJ?0?8_dW!fi>z>@OlHH%8?M5{ULZRc*nH-@li~fg2~}<29xow%FYeE +fm5^)4xxvE*GlHd&cRF@(;U;GfN3pEt-(X^NhcmyINZr$YY$bij=}C(f9``fRlo(GKp^t;=z$a9L2#j +V4m<+|7u{bke76G)(*ZLD0_FtPs*GSCa=0Nv#X@66r`Hc|@@T^8Mw5_vDW?aL_y7ingp1I}Qm;L%2t6 +P&z_o}^2tPgR`ll>xa}qSU$(xt`e7{_-_{FW1*?r?9w~%ngNXG{)PG`tNg)6&VdRwclKsJ@lhqte1YGeS(HFU>Q(s%i4wk-RFpix%Hb#(=A2yw&p{1WPkmCZ +9z^3p72Kyt-zG8Zv?#@K8?KnPFZ3ChGgVEDh7O6qc6Er;J(80G9)wT_01+904HUdqpw-=z-vG4_w0j7BIslM_jRdjB9pLZ+0 +i*Qb065_WcHs$&6th!BF%RW>f;@00!CnV2h`Xkqbc09_fRMLYA@8OIPSkFJcWdB<;FBF=+-=w1%eI9B +O^8Pc>Oiihn*?&*LN6P13;~29UHu6b=@2V55uSig7a%u}D!^2m?~eqq#S5Oghm)faJQH}%E+RA<;>Pd +KsOJFkv`_Q~7w!e=JVDyDCIzr;#Mcwy42C0k#=9zu`8$JUvU;GyY{HroBr5Jv^8#WK@Y(>9E6_v{#_t +i354Zxi?ml>1K3?A@yxmAGc)bAqYDb7@?@w^~?os#;XeJMK*bS`F^@-*nG_+k|i#W9<*tJ=x(uA8%00 +Lu>-vRs^fOQiBuUb{y5&V4*z?%xE1^AlE0Wkk=Lf|;Tw2a +$>M%dHg}Vap++6jG{c*F}Ax3#ST%=qGNB!ie;gU5a^NQ5Hgwl5miOl!Tb;Q?vz;S(NzY=Srd0AUP-N^v;#5DF)<{TRX^;! +lc;qZr0^vWd}*z^3eC4mLjm;4O-##FB6#c+FtlF^x^^HyjKB!Q_#NS0DbG!sL+*gCnF<6C{R!xz5}#d +qw_RM^W^D$0*7{9d+zu6y@dMe`^%w*NgRU6Gb^RlI$s)gL^eYA*{0{7{Ig7>?}Rq$58@i^xDBQ!`U6z +xn&4wv)U|LEE%)*M&A;cUMp$Mme5x_Hcj&ClwA>AJj8caT&TKVoxm#U(g}|uDP}n$Z3_XY-Gky$HzA7 +8eW#Kxb4JG%%PE31V6l1j5lzcaC$tVu2|?aaqx7?_P2L1|`>QC56f%5Wib&AsS7Mk)DO!zOVzh0xLl? +zje8kR`JZa~6pSNtgSeiF|Hqy1jZ56*NLLD{j^^U%4NQ-*iRz07tia74$gXD6v`+4b&8QCawn%C8(m> +2tVhh6&A!18mzHrDt!3)_y6H_4nwwnY=mac|qcCfxinC6`zZKJKlxr!L2Kb~p(8-zUTPuLyGNU!*X8b +)PR{?%40d+-VA0(UAX=+IY +t4LX>E!c_wnwyBT+4Ku-kxkqa0onniz* +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 +OSP*^ZMwhIN7g^YM|Q_)$8A*_#lRC0 +7Jp!4@w(MP?!d>jbcHDI(ZNLuEm-nobV<4~3|#IjDt7M$`O>y?Mov=1&$qwe;sWO9hq%Qaw|InGBpiG +(0hjOt&+ZYp4b=u~Fp+l|RNN4F*v}-35Lx=JF{UBYN2VXESxOU +m&hYpQU=^_2ukGl$OfXQXXd~(jXY2T%+oDWG(594dYL}(NCHSfDHpQeJt#&H=S4>Rra3$Sy-8mjz}T~GrZO-qrs$wL#JQnVV*e;1j9DMZ~1`Bz#M{oXiePN7Z}O +<|3}I2Mk%ZUzlQ#mTtClz{y$}U!qT*Jp8tjGp5;GKO9KQH0000805 ++CpNmR3|!hI6}03b&I03QGV0B~t=FJE?LZe(wAFLGsZb!BsOb1!3WZ)<5~b1ras-CS*t#S(ohf3;;zmGl_7hkpeF7K;tRagBH=}6JHVks{J7I&)Mi+ic$QfQ)FAiYuS{!^8M;s7Jbz=`hunbMv)!i+Rd_;Vo-ILD=q2U(3tP9TliC7T=eR=x)AWOlin+tqe$uD3$ +asbDZ1lboj*vug60bNsy<3BE|o0hUDZ^$3enz)p#h1NB5@>=OCsV)%8!NYdhv>;`khj(ismkd{r+}=x8gQ_{P +@A6{@^J$hs)$~%`1x$!sY~2^98KBgNrf_Mj-RIMcP +r8&nuA`=!`bkFtR|C6O%KeO@&h1rCp_7K*$n={JuLIBHe3tD3xaJy~c1I6%=}w@rP_nD@GpjcL#wXjX +-WaMvoQZAL3_o<<%(wR7NFi^mFtx|97H9w=CC>aqI}lNLxCP5Qib +D>IAacx$p}0YLfx3Z)ZDrjaGP~)_Dzu698ntn~PC>KpmX=|o9{9oM*;DPkm#{twUSOQ35P>m-TkGO9^tLI0|Pus}8Zi|=*@Aw*6JV%enxH%Uw32;*N8YUQz +eIdRDb+IH^|43D2qQ%=c--wE}5*&dN_j%bQJ?bz$`??L}{lX}ZdjJEQwzoT!nO(pIrU{Nrf>n&UU||H +bU(qU#qO3}qzUomMdR56suvRt}uu@oeuZDt`$F>dH#Rlf6p?F}|M+9>%+?#foxY2Nz>^x?ThdaO_8|m=`{0Ml_uBmg-B-uu9H~2%@AlvYT-*CVGb+6vnn$Usy9#6E3B +|fqL!j07xi%(ctg^}Xaykf~q8}ZJ8NAo1DKOEI>5L~Ke~}M$fAhz-nVE7<)p*=wrl8HxTm)jt%QBw*K +^~XlF|UI;!B4q}f-(VR7q#3$?A(JNB&dOomIBKjVnJK}2I-=*Zu8;+&Ewb(5P3m!ftw8dp5rI4VE7-~ +9^z^(arb0N!8N_)*yS9xzHf)RB#cv*psj>MaQQ<6!Msvr0G5}<<%q|*PNBGg<3UcmZ6L;X*zY~q2=$D +&FAN=L9M*LI{|BRqRQ=JBdxnk@t+6^UP7(Y>hdSNDixdNXBMTI`ssL8x!XR?(IxRvq@f~fpK?Wd!eq5*x-l`LIK4K(j(gWUd7F{^N$08AE=+&5%V7G91K9#)Y8GBJZ?%^BBk +&s{G(-ddT*K8a?#1@aGehybLn5+NMm?Xd%mx)-q(>0!x&b?aQ4k4)(PDBAi6c-b_b&2*LaKRomRvRl! +x5^v%#VTwVXkdY4fFOih +3xe-7zQbTSvpcukAquklBuvYP0#~`|pA#+JM +dG_f;)}r$!cUo4O(ts^o5{VLt=CpmdIv6TWm+@c`Bd`sTnkU}M!_{dz@`0}orb}eh3HE>rpWyV +c?>GtBf@4!{Fdp_mQjYh6fa*s98jL8c1Qoe-kmv7zi_T4uyE#JV60-j5O_l{oNCu#MFY(>=ZH+AiI4+ +5!M(=zvApMCRAd}%4lHMeV*Dss81o35@IkUz%BgLQn0dneIu`yk^JQ +LtOjm+i6$)vzq4e#O6Lr4l^={Of_PEerpkVwg+uu)wR7OfQ3;2gb3NvY01g}MoM)Ywa2`v>N*$QvA+j +k!nm3|jtO5~UMc+yT{%V4Gd`|9l1TWdM +U)5Vye}Lo)6h%w@CeXz(P;na(3IP^IJ3g+RkjiGUk_k^l&;8TN_XlzFbv#H`0y)G$sRJ=+$kozZ|d#$ +xa=&m8KSQotDIg(7ei?C{@%{z}o}=tHGtScEqPwr$(ivzq*KYSFl$Gip7fU*VbNKdpBx1+Mcd0;+iFg +21$20?02u5hL%yNcA}>+bv$u!INaHgR0#?s2RSW&IITX+&adt4iCLsaKqolo+|K|{3%(^~2s16?p37sS_EXO*S~=s~lhNf)I!2p;3? +y2V}*n45NeNr +ik3PiW}3c~bgtyBPrTo=|4L06kFk0oNbnoPWESd)ufOMg4UmbPfL{D?JxsyB5J6B{tui_aK;T0P=9<% +dNmT|Fb+>4E%6$ZpWjBx0^ydv!lLL|3;Yl(7dgB#a9T5`<6~&=p@$?`jeDm#* +NxbRdnGLf`WHxJ^H#hcz8!OUC8uq2_0U7&oIZ%CaB_9a)b^#jmMc|N|9RBwwNJdK+H)ZbUt~W1R<3f0 +&IJ$c|h{%`TXcq_h#-?*YtZfWSfpQ6haVp0+h{<#gDCnPO1&mNEhsEK|f89iJL3sECIig9bBnIT#32U +fw4i20{W+#*Ox6`Uf2*&T5~{i$5ikLz89RQ;%)t*Aq2VN6Szi(MSHrjkFMgtA-r*Cd;dmCjoYXFfs9v +6n;71;LvV@54w!?wCvxF&NfbYv6y<%v@RD}NE+0JAC>{GJY_M-R&4$<-B`*JNwuvIQtOl9<3Nz}n+Y# +iYU9L4>O|Tah&gOY+@pCsNlH1eMxm02)0#7hHEeb!u4n|-J7&~BQ0wxUB+VlfyjJtJTQJ!D7{EAFtuV +%Q=6dgs`IcBpo+xV|?b?Bb}2=&qc?h)*=N9TOF{j8Jo2<;C3ChIlBq435%BWr#yq4A`|n{V3UA +-nq+tDUXbmcB +VnqijnLVPb1@C2pIYm7jApT2RoOi%z5rpEKptu3#!^E3e{H{i93ApfwFTv+iSQ#Zn=1Rw16S<`6m?a{ +M1NJMw>Z1<=0j6m>Iz9h*%=V;npv@$oi%}V&DL4(&K-EA@o|M;SuMI>LkTT)9?h_C2GYlBl65JdBB*n +{$GbmsL6S8+`eBF0y%@P0vqu2vo0YjSCCZfoInD!d%02~)v}a&bwi6fgR6bp26DjTg9XC^<}>P=Pkyr +nvc~FD#L7CHeSXxb7R4mV1b|B^VBlisLs)67)i^oO~8M(XtqnyrJr|e=0wA6|8Ygu+l}Y${Q@(`KLv@ +$Lj5=E9nz>FRY +=D%ANT*13h);gz(;z0&m{kB3&3t}d=u;z}o@pm%%h_yS~#M6dV^%}i*68ZXCsq41ssx4cVmv(`>~6Rh +sy5l0%fC-37iyqo7nnHwqdK8GNbJ1(-fXQ_t`}p +hmx-ClgwWNmcyMXt8s}@R4R&8mNDOAHmIR`I6*L5}uk)#XQylOJ=zdOR(HEWPx4HfGD}j0fLs-SKI5W +AH>zytE<Uyn#I&5n!h6t&EqnBsV{c6mLQwRS${osjCL@-&Vi?a$@`OTa_rC}Iq-wvvPZGRh9N +uL{06&+@MvO_wPJUve2sCL&m#?>!tYDp!4xa-I^Y4*D+(jt+TXZSMvq>&sEVHXGtPPZIamDpP%z_4{M +KKa_{`kS0fzxd2%QNz4-YY?MCeVVpoH*+e~x7EearAgr@oD7IPM}EukQGGcgbJ_fwrk_Pl^KeaKs;jn +2b>#(6{LrM^wQEOtGqOnupCXi8Wu#4sz#6#Wim*Qwz@~PrbJhAIQ5G6M~%@ml~Y#P|pYy+MFa_z|66! +n>7NYGaxgVpWifH%!MrvRQFQtq}O8ufN1FZ;zAD^KU!Sd95aDfg6hX@?^p4L9|m`%Xm6IZj +8?CZS~eIkkbqlpQ}r;aB$iuo9qCO@Zl36Qtl((I7ypDPuhF1>}s?cIf9Yfww6@Ze(=Mc4jW1%xix*{FIXa15ir?1QY-O00;m!mS#z5aH +4e80{{Rl3jhEj0001RX>c!Jc4cm4Z*nhkWpQ<7b98erWq4y{aCB*JZgVbhd6ia8bK5o$z4KS>I0s7}n +U`ETp6MZVoQY@RHe;*p(SnGjh?oRed{|Zw`R&~W2}+a{so{krxOngFV)2M~aD8ry(?H&e;zg{`<-yj +qTE5>Q1l6?0diXq_f4#HTSP%|=6Ap)gEX#^oIG0%N(%i}YA2DEhlL1{sH?PnltO-GA5Y1Apf(dRbiZl +xnTol1tl(4Q8B~%G5YbpO4RCKJW +vj6IiLojEMUAWrRtC!_0J5!U^x~fHH%DY`RmuBl<@9r15Psp+!5{FY_$Un&!i*?XTC+T0^rPU~HS~ +gN|WKY3E088Vm7DN?Ivbv*eDr?AAOwA7|)JrU(xnONxs?n60M>P1)=SfNRXd7Q6i&QB=AG|J2_5{O6@2?s=((zY+DiI0+`0uX3ooZ-JJ8?{3PuG#&Ja?q0`qe~Ru2k^d$l +)TF)LKuIiJ(K-R{7z641$!w^fUX|qk9Q_cTX|OVDTJMN$AD#sea%0e#MuSy+q0*jk9dlCHa>l9g?tjUzhfUu2Egqvx#)05hU+bgh6r6CfA| +s8eA6DQYmXQEB6`8V6puDFLCXzCMewl~kVTxU=xuPGPGxK-3LVsDr3xrxb{*C`_*+;_6>|G$FV}yV^! +F_&7meh_(I`C47)~)Q;S6}6i0y%jnDF-SXYdhQ+S`JaA8>tulC74DVOrF*DC}bR=J||DXA16y!CEDHw +2g{U^tx19*bUUESH2o+`wvh{0|XQR000O8HkM{ddD^4OdI10c{{jF29RL6TaA|NaUv_0~WN&gWa%FLK +Wpi|MFKBOXYjZAed2La_YJ)%!z3*2H$w3W?=OW}#$e~cE(B>9`+32WC%&y&CQ*!CIcXrj7v>njZH@-J +-o^x0&R*~KC +%i8E-TEUdxaCV&EKXlsS7z`*-Zuk{LgW5R?@B1iwNods666S4fjP~jIV2RjrJX<@>v}lJy?n?3s82y)Lmt_7zR(_f4MwR$kZK+VwcLo8%6% +8JenHCC(ixPp1>baO9KQH0000805+CpNt}1y4}l^807Q2H03HAU0B~t=FJE?LZe(wAFLGsZb!BsOb1! +XgWMyn~E^v9xJ^ORpHk!ZtufW-pBbCaG>vX$0waRXq$JV=T(@C7`%;ho?EJ8MGiqsO69dD=ix8L^wKm +a8DxY@Zo&9sq7-~;fz@Vx*Zh{MN+VpZowbv_fjc76B^pX}}J@9*z5>hC+HTb*s{T$Ot7zrxSn-swf51 +-#sq3Sd;NEGjM93njKqv60PFfQRP&3IG=!B>wrUY!>)>kprZuI9Kh0Uo0+^%vCcL@Oyh>A3}2jZ7W +xo@?7a`*OX;(_B2};s>~g9gTOcVaJ)yUwzY0;A5{T~)nWr!D7La`7wfv&0D|QhfL&XZwlj3lY5{M?8m +rGMwI$lwF6o|t&ntzazHXWt7W)nseG25PcddEyb5pl95Z?U!pc=bq>VQ +3nV}#H;Ul*8+HQ3xmP?s=xtsTok +w!f#y`E2XDqCco;sT7Y0r1qchaRuuuPBy#xzhK8kcZ$RGa(n2K!7VXW%@%Uyd+ixGD?M +^RncuzFp$KKw-Oq_z6(yA5pn)pa?Yi_{$s;EG6K?w;71MJ#*0~lM$vb@3W+olF2Yk3B$uTgo?0Lx^1? +_R$;dH4F|>EiwAi_;S^cX$Gzphd4#J{95TKs-JA(rdJ?chz8{W3N#SI<^^V^wewADqJ#X;f0;wlpFog +YXlszkrfC*-00cfWN+`)>o+ex{BXK(%lhHu$CFc7*3+ZCmv4VMef`tv;^p@re)`+u{mFm4hUZ@%iO2B +28XR~Yga{Za)v8>ZR``K!M!_ami6qH>tpUf~^8SnrU#vE&y{L1C>wrvcA1U7;^`5*ROEJ*(^`u#O*{LK3Pb1(wLZN+>Pii_>QG>XWV9K6(#wo_G)>4JPA +1W!FKIKI0131L{M`ynT-^ce$_I8enG6x$?V>3!V=D4mtG~}ro1L0?9HG@X-`qpy(Pq&p{eLR@lHV!Wv +pT;a;z;2v$|q=19+ChWx8XiofChVr0(hYK{}Y8D?F9pFBX7i+>U2xmS$p^m_OZ!SJRN^KC1(jX-J7jP +KUnWq_v-`ScN**wW2)&%sG_{}r6?JM(MfS +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 +xzoUdfu(6iM>#E)2&a!6$ +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 +9sQ{rD(SF_|LJ}DeJAHlwyp!B +XuVc?$$4sFT_Tzg8KCIA^b0(K)#o3Kqr4`1eac15{%=#TlW7Q5^_K+Kn;3f_H#iM_nN#1nC=Dag8S^^8>dftdtD-_ZmrMGn8$boj6(n^z +=$!LUMnN@^R9ny_#txEG!6t_yI^~QgV6681*1i{nj(e>{d7{woot+2u_}#7RSH6)`!M2{T*C +#R;(-A#%SylZ(}+<>2`&!k_Yl8&Kt0niopiFqIwm)9mBk=;D$@ +LnspycO-=Dn#U^kd=1-KT@o450KXK(-OZ_MVz-+N{giMP1LahqX2?v``i8}MmO7Mt;l-8kV5B(HJ7IP +eH0FwvO>P-LhqXsj&Fn;;uslz~aP?KZ(-d#$Xh%Yq3cBhun;B9XJjLa|# +`*VsKj6H-feV-T!$tdLcUv +osa-}0U_NNWNB_@Z_IHBVj10SfZOcd^|EUWSs76?OuLCeaj-+|H4dt{!!xK>hU$Lg{K_bZe2Dk`h1!* +#vM535yzS+@s@vziBgjGjbKT>4ob!OdpOW;$J=q@0(u3612{a{^O8d~tgGeCU(e&UpC4>BZ2U-}4f*C +B&47C%t+l(h`eD)HcJt`5M5-RjS;anE6GSydrU32b&uW48gD5-n2r&oV1Wp5VRBg?(rC=){L_j*c#$^5AbPN_q?0p7 +~hoinz+38}Uka3fR*c32cXdzj88~06gk^9@llH=5yRFw6q>-rHm;*9kk*js$l$AYgT-ueOY=JSMi3PI +8Yz9Ve}A{9QTteStkU;6h`4Qrv~uJx(sf2Z$n9cxNOz>e4Z6qJ)e_8A5R_GoQh-e0S~gaILj@1!0k}& +WPvm;rA@lYI9a=3ro`FPg=SgADLp)0a2Fj4XR5E0+0g$^KRjKuQcHeP>*xjLa_;U50DR70#jzjv)y+1 +iZTYs?5@-r5fT#N{BAAa3i+p2_pM+fG;T +KGXF55wF25Lm+i1T4Df06=ZS5agcz*rJcYU&kM_O|ub2 +vsuc@D@ZV#l@#wf9v!*LGF2Vv&$CU2#ebG`;Xe98*rHeR7;v-Q$)E!W@&@z@NJCk>z%`XoeA7xuUG+u5xlJccEJRBE2^&oY~^tkOtB3hdq{mOY&|qF9C$~_&Oj +%TG~ho`O0jHe@*XJ*X?Iri#)^+1TaWo{XC_UKn$p#o{gT)gWsC1DdCb;Cr_IyFL@XN*8Cp(p>xW(G#l +lvYN4Dc)VQXtq*OQ_TnOZMz)>m9U`sLHu^SSi`ostVAIt42$Wl@E-M)BadBA1G>nnbv4Wow#F@A +d96QMzhojF24!DNG`EBWJDKdD<|SLCM!)=s6zh+u6kR!5CMfn7-vuwgV{wf^jr+NjQqzK1>7ui&X2Y@ +v?n10%Wu@NQVc%h8+0w9=S@p$4iMz;}`pA? +%zQ0_EXyU85#!s<7m;X*%t`Wh@th&54odeyG2FmZ&bo)GiPM~<0{LgvY+Xf-vC`u`yGGypMO+kVL#&! +|Fe!)X1%4nk*)c1qaCj*yXOE+usU`<_YA-vC$5tkbVs@bo%OjHL)f5$=Ej-N^TDdo$)EL4d^($4Aca#>W>1dJjZzz|TTA+c*0#yCTjM*{Gy?$Fb+yPt%{DLNv@MC +w*%hqo@C1xHxS~V@gwh#Ht2A%87v-(UOWgb}#cd1^Qm!ygxyo*MbzI~uRh +IaC0EnMNQYgbx8?~;`OTNH_)b45P%nf7XAS6`wo9OKa2RUV!K$yOy%nGH88Xz|xHsNOn(#m!2+Oj}JD +P^|{XW+DT;4FSuey30r1n`@GI=acj_1$bzj^-ZRA31^9Vel>gQY!QpN3OHvh~aehx6tGuI@Q0?+L?3K32I% +@(dL|%?<@wjH0dFjQxqdT!{SN{Fs-}T(4;;mLR0)95g4*HPtVxecZSl~f=c~^d=S6kR08ud=aO^1#XGGd(&OQ!&t?P*^-L~V$Y7ZE{Y?G8eqdcHpuux8_5Bxp&X4}acC1FCb`Pk?QyJU!HA8QOUJb7Y}{nExx +X{KnYxcZoMY5ApY9u3ko=G9i}>C_~6xK>kiI`!xHw=QAwx{-29u{y)(7eII%IXo}ZA{W_{1U!1)77hQ +j6x+2mIWj{mOROV8jqq~>EeSZ4t^y2iN#N_s3moadM0VV(6+riz3RQpWvj=6v;*e>chJaFGQ8#6p@C5 +frF<>(P}40s1w_Os5ZsixA$CgS`y-YGg-;{f9$s1=>>Zfk|OKm|g)v`M5+((nn3ZtT|M!Ppu=r$%UeR +|ivO=#~WC*+J(mYz5GrjoT7Ow>HcRO<&@EWP1P&k=ju0GM`6^lO)5FXyBUdSc$|YnbG0t2jYhY?@x=b +V%+UzU|154bxdLvXE~CDu5GY=@FtJW4OjNEz+gX^uk!dSR(VlH|7iHPvLVWsg_&N!Z7Lde_F|iDd-4a +Ql`a8U(S<<4=wzx +!4kqDP`-vIJ)y&mGjRH&b_SFrg+MNb0zLRFaDVuckEs*j@?tG(miuR{M@1YPw~_JRh=*HGG_*$OM@RID*=>N^OleBW!MH!a5H +;Wy2?Is7%PDMC-Ej0BJ?EB}r}v3mNiW2ekP(_8o__?+L{K2znzWw5nm%i7L|G^3|#uc-2a8cz;>d=T- +D+w^qp-)#dIxw0B{BAndtlgz+zX^c^4h`{13$JzqDg71=?)(zl|6H5rk%l3*$IIG!HuB@!?M@LI)Mfi +E$%2aCs6CbSE~EbewU<75P6bOcxmFS{`+2Ru!C3=_!5DYLhO2OG^=Mu5booc!uN$*Dm{q)XKH +wWB0j(4Qi9sm5!bow6u@&wg5UtH>x@$#u4EC9>&g-EL0*c(gLmz-J!?8db1l~5VFEd>Opl2`&c-5J_r +2fq?4YnXIde5QCO7lv!!bPuNEpDm;xl`7IxVqfa)^grI8o?o2L?S|wKan@`2`7eZU0#kH*_f#8Vtv2 +$8cH->!mVAE6R?G07Pj0$dr_k?Zq@y>muo&?B7)k1lE%fmLzX#nw;szI?c>iJ|mZ_Cf8)ZyeSvFqmRP +4Jjg#(!>P2-cdX=J@2t0eYl0TZi-epj~~+{We{krLbOk3ww?`7;Pr%r)126Chc`<6zmxi5Y5a-CzsG3 +SP+Scp)3zWj7kTm+mpd-g^>>2C=z$yXC|;C0Q&`|KRTc&rJ^wTgp+?F=+v!9>5ywCRw}pMTc0t>0*sf0EPPMrdw>zb@=uiv`38Ke$p#Ef?4U +~iy@EDQC0@vaL2J-3EsU>Ry7}9O{GdC+kp}f6kx>(-VU78rDOfaoxSya;E^s{FS`xo<&Io2x+mFQS$y +3=5wZ}BH@Y5+@904@j^oidmlnHFeVqF9!fT6-yJm@jo&$XFP7#2p;t^fhJxD;W_0`g&5gyH?tKRWJ(} +~|vspFV$D~A_$f%Z7(*a!Jx=tqBau$~6#2@SiuMhL=PfbthG;TGP3h~T&dHQ?Ajn8`%o*%TM;yhP$+S +{QZhwZW1QY-O00;m!mS#!ZWhwLf1ONc^3;+Nm0001RX>c!Jc4cm4Z*nhkWpQ< +7b98erb97;Jb#q^1Z)9b2E^v8$SIurCHw?b}DFp1nc9CQg|75cP_SE)Jpr^LS0D>|@+d^ifSxJ+`E&3 +Ea^wOu>Cn-g0B-u%uOGe};isH{l`GdIp?ou?i)n!I1>m*C~t4R0Ow(-_atDQ-&}ywOp_1H{%-E(VEj9*-{4e1$A39#M?*l`8|J=f7AFV;^g)u|38wK +q?XxMqgsge>-5!h?NLdJc4jQX9{h^`s#Yh%lDneGsKV1S;vXlaAF=+D^mkT%eb5z+;C<_ldAmpDrB3~ +{p#4W>t9Foz2(XzS+TO_bh$^}wqPm~IU^~TVt!fDyy2wufM>TdqOia13!hOhGyZlm$Gxl`JE#u(l-TO +^NL`B_>V{hN)cFiJT@`pa?~ePIxhv=%?8wPapBeZ$aqOy(zZSR(Yq~ +R#fY;bdc1JQR74LuyxNk%4 +KzTF1fPI8z^DPPT|U|rW!tkFi7;;$4a9HpU5Pdt+mB274x%lTA4Tzyp;y_7GFl8dSYyu{57)EZl@axw +huUrD{k8|OFt^pzUUUox6{2w!hCH2TJ|98^6|{z(N%a2u`#RgF_RkzFV;Q%-^i&U=j+q4^XF_fJ?hI# +e_>P)U*`P4<46B|i9Zpni@zM;LLdco@h5^2ti96s6!DAYJ^2}Ngopr!-sk5BzC=|BZbAE!r3*5<%ox2 +B7y#DcPZE5V#^=&ufp50?vY7fWb61#SaEs++_Fqs-0|XQR000O8HkM{d<{-)sd;|ah#0vlbA^-pYaA| +NaUv_0~WN&gWa%FLKWpi|MFLQKqbz^jOa%FQaaCwzhZExE)5dN-TK_n<72eyWN8-is(kak#swi|{N{g +4J0EuC#Pw5X6&JY(2?`|gf-#~75-mW!Zctd`x0i&!bNd9fT9r6i9MhZ{3U;>V}<5W6uG$8&ajQfnkQ8O-D!essXXi)iiC +KsQU3uB7=Z-=e>CU}D&dV-0YQ$ATrO_6Fyb#P#=l#Er9uE3ApkIDdKZYLCyTue@N>?tDA2LZ5GF6{5@ +tm)?{Xyf8NCOYUHoFl%hAXn#0K^XQz%XCrK&?I#zK&GE`GthpTN!qa>X7nCAQV6I5y&uM0BBCNG7W0< +z+yM6IGSCdXXu!SmrLhE=y>9dXLg6)=R6BEBoCyXX^vC)0bR5d&xeYg-Q$eUiH6l1fxhZ#uPiy&7s^BR0rN5W)By4>r< +P8eBjWb+=~Eln4@{mOBu8B&)G%qiUr80a<0R5BuH-48kA-*^H&&^R}s^2ciIF_1H?S{6TO-TZI?}cVq +JqlQ&qGIuM(u#a1F4SeGnvBM^bye8_kOD5KB=QlPCXSgV=>>zX_Sh^Jz?RJHQUW#&My=K@2MSD#FcIA +2^m?4{kfZZyzCGWn8|L?%R2C*q4*vk~%3c1C6PNH-nsaU1 +>~+JM2Ptn_wE{T(8fHp4I;E^eW(*lN*n@GM6%ZR=3XxOOuh>D3U%(PaRIJTwOy7W +Da~Z0DS?qSb$bJTImCuWYo?oTfZZ=xj`*k8w79O?}|$!H!65{9K|VERM8?Zo>56N3Ts;S{*!Pk7q0Il +qKMTLLrrm6DHCo&p&V(80 +$d+uir;jH}H+cp-7i~$9E|)p_3=@>08Ka@|XzX`Jj{$t$WT!Ms{sB-+0|XQR000O8HkM{d3+S?<4j%v +jV_pCN9RL6TaA|NaUv_0~WN&gWa%FLKWpi|MFLiWjY;!JfdDT4qciXnLzx%JiZhKD3P$DETrbvw-Z7Y54-~R3gKmrtHr`y{*XF4abL;@EV7Z>*%*cE&C_rx@hlWaZ`RXN*xgi +m&MdcEFGA^%ZHRjQyWlT_{e>U?%~&KHRi%RH`9DON>(mBdmBY?_p7F{`p^ndF%gXpB+n#1uQJTbW-@F`{?=Og?1Mxgb<@dlOf92KO*$EewS^#}!X>^n`bA_kKevL51$@~-@SeH?Bz-L!}0kGXikg}TrXg4d}y~5 +%bCE*hGiZq94(tlKkko+vcTDIBupKq6J;XFH20f!)Db2d6>Cwg;;57X?FH{nMIo~?T;;eLc}6eVDC9^S>=}kO5-o +r{7I&6ut2?~BrE4C**DXDPlVRN}X?NchGMESAJKQj*uYvu}h+j`%2jSz820}9@;FYF;J4lgbeg&v+!waa2Q&rB~f?mH{m$YSc`+dJt)RZz!Z{2wvLM +soj*X9oNU!R>6MGlL1`kKDS*{7iO~AVyK# +8$uQIay#e(~b<_b14sRR-%pqO;8^3<=H0>ne$WS~682KiZ4QF3nxGB5e!OfJ`Dx!UCBsqshmRgS+yKMew$oNC&3wVuRz6U+zeyHn1)<4CgGnKy +%LewYIG!M9$f$rloRA^_XC_g&2Y~^a%>wT%;6PR64;O(p;za^T7>ge_K;Ir1jhB^RzO0rLa7Jp51;n) +qV7c@mnFT=rW+X`04ckL*aK%}*ScjmC!_sL$n&Wp`$Lk&V)VgH~33z(BtCl32t_*(e7r3UbRV +7d<9Zz{BwsM@aBP7Uj#sTPr^ilz>UT0xR?h4zzD>~P`s1B9a3*h8qa1}&J^(gQo;V+D()E`e8>?j($> +49o%rXu^_BlM?lxx+H^=Wjqh8Hf%#%0cSZ1R_U;WJ*U%>F1M=jrKV&(B}p8sZmW5Y-sF5Rz1)QOfXV8*p(WLQG~KZGx-QM4L$@P6D367*gQ +V91OaUCC44rpeQ;`kPmz&+Hx}MwZ$oI)>%BvM|HQVPG=~{UiEwGA_@7bBZsWu+q5DtgbX0Sz$z +cH{2t`PI+!P!=5m6rDobP|NmpzQ>%5umVyF)C`In%YX>{Kau +k~$F>5{!S~=OqGWEy1@a+~SNDx +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 +8c}{5-V19vP#7!ucVm#?O6}ZY(U1R +dDFCDN=c7WcEotKtW(hSQ&$*{3sbeHRB9SCl!QFfDPN*tiUxbmnNi8mUeW%j|Sb!~zH!xBjcfD#$&5X +@m^TE;KO>5+9z>S8Exznl_-UVNZ-ofGU=)qSH|Lf7$dqM +bX&loW#2-RTdS4GlDinrOGRMTjMVSzQqu%^f<`jPR{DZ3NV)S3e)HNe^$^SBxs{l(;XO;cC5UMeWpn8t4oD7D2Rk#l-~f23E|T{b2jH#S$ +_;xg`WSGc*t%E*iHg#!TKfGqdv+8QV%^hpQTX7q`HO)#eArz$XeD(wKyco)Ic(wg^!IIRGZNlC<@Llp +v9K!G^mL|34wvsXhcv`Ms%hz%InBG6&*?CHiTbAUd=I7WVXyc!<(+Bm^;k1;8YbCl2DN^L8UxqM%q;+3dI6E;AGw%ysV +;`q~t@W*B0o}``zvr_kQpB{rg`I_DA20zx~6-`(InlF<0UC=| +R^E#X0#9+^XK_c5pLmwm+)Xd!8MDrvL=wF^YmbU_`sDj1`MT2J{Qix0Yh^3AQr1Qn=n}+aj- +C!j>iRD6y|&5m)=01T?`U{9D=Wu0oD3c0E<20A$A2`Nk}EZZ=;g-HIu`mWuz`Y7kZqRzz?DBMQQ|L_x +sMEMD5RnsBxtJ;`at0C$ORkP`@PY=bLew$0q9R;z+M*9(u}YXgnPQvnJzn|K>)p<&5ldb8{0||61Gv3 +rih=5r+>NUNoye{OYT~{5!Z^wCW`}xS8pX_(}MO;_+i~G!%P+=eZ{iZA#e0%gQ|RHHDeJPfk5v={i1? +zpAjyW9b@jwxrX|WT#{?hqpKudLQAQXu)Xq+{NK$mG(Ac%ORO<0@6T_#UW +}d`u+rX=5zXPpuBBKI}ktEM7(>YJ6GGaus(ws*!k24kwbkvnGQj?oM7Szpn)i{c`c3K%3X!-inIdNb= +Uf%v&kGY7HPDc#F4lhVMVmeu970pC{zg>6RYA|4}%K)zoI@R3VvS#K9FWlgI>*$nE2*XHKt?~PiJvsl +LrQs{ZhlamY|>!J68Xc1=M=I28lHitb^-E<7Ps>XP!2apN|(gM@;mQ3M>4|omy6lF(TaAU84n3P8WjA +0lS^9qcsg&!v&1i*lb`P9!oaMg)TD5V&^0zR_!;YhBa0994H+UL5GXJShAo=U_VK&W>SFJ;kz3u+Cs3QpCudDa6Gm$z8wLJRQaZ5cg=;2mooONwQepboS_)*QU4E#U`B#qL +&}|RUu3A2_X_K9emMhwvA@zywSN1hPMwEYT!K?a~mOY1?mHy*HKn(0f;v5YNb7>TKw_JQ5-3_lTthNY +El)(T48R0S5>hHLa!pmb5hbe>y5K8!dGhfYh0~ejW=&W69?1?nhPfyg9=MRFn?3h2__QzuKOjM~Q5mT&lrYMgX +udKi<&A&APj$gOz6_U3aG{HbsFs24krU=708*Okk9jR(S>z5aG4>w?G9VfP^yf%)koJCb +yhIlwTjOJL+Lgkn}uAAO7*`waJji}31>N88`w5A3u=+rj>z9SB30-pEO{ypW1dqN*Qv~EG_w~#hTnk} +woeYsR~=TFde*-r-+9nJio8=iR!liEARNqM6#5?aYC?|6y=b?-#yTkv!gn1meF^}YG0WQD&0ND8vs>u ++|&9{2a}TTJRb&9jWF-|^+8l&d|k;jW}^^NS&rU6K%j7P(aI>iZ3WN?q`PO?GK&Ct8A)?hSbf??>V>p +TQ4;V1EWuxC}n7(9EptpSHe3%Ku?_ +UA*&pUQ=)fG@uNLtj%(9|FNgbv2VNRg9W-N`heyJz&CEu_8ngL1{m}a8ZUroKNdfG&<@rY{?{cS-s2} +Ulm0L6tq&~n>ynZNsn1E*SO+e~44|n*|ILY;*4+hWHWx66o`bVC{kr13^Q}vgI{S$~+NaszHRT~+RhS +6HRN6OqV#4@_h13TaKr~@WAFVsE%Z$Os$F4sr5HeLc+X*v-g4L@x2M3O_qX;RlK99wtgdH)XGTV> +3BhLC?miTO|}ipS&yW^`zqLZ;#^Oq9faN1O-_b9fjCau>=Y@jMG1|JKY`o-wM``Sv= +RpMCp#w9<{KYV-s{Ad`yJQ;}QAw2l*WYc!@@V3FDp(hweXlTv?#_kvwqa&)XcZYe@4e-&PO6Fc0;6Qw +T25Ybegng`p$g2Y6SKMz8G<@GNp~Hu*3F(JhCw2I6>!fhqXk{=uPJ`wG`A|E;r%tXUlmyJuy~P_A)gvjM~~2-=X%*)W-fC`Tz3n +PR@|TEA)J)E_CC7?FEU&N^lZDRjIhoal^fq&<#-8NkXz@*5Ti&&+9^x+Ka74Bbo%xdjUH`eIN%D-TE% +^J;mwxoJ=_!9YIQ!3uOBz;G-;EzYormJ`gjXXDVoL^4bRbIv47rk9v0jZ`@xUZsc&oxX)#PB)pFAZ&e +|Po!b#xTz77;#et|lgYSyO8b9U?zcCMDv-#P(t`kLK(XlvD?`KQd?nDV!IE)^tt(kbT~dgt=JmYPj~X +_#=|u(ulFbh2YIbU__4NJUL~Ez=7;kdnf-HdN#sdt?p*ze$+~#H-)KFMx4eXJXcoTxIBeoBQ^1WU9yg +1tKd{u{5oPn97|u +VTUj!@m$4)}3IR9b#ZEt6L) +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 +wmRnr}57D^0=_Lw$XUT^d{^{ +tJ{hrTWw`6S75ix}5VfAeB&b^Gs(ev9YlQiNZ(+$SVRrgW7zP)Kt9KGBv;j#NY=S#mh{hmFmdG{r +Ll#?qz4t^cL=@-pBpdg8{be^^ZMh7HaUCb-3xboSpOe((lru%TDdj59X~G>gYA<0V?W)73X(7wLMg}F +yjrjU&}bnkiCA^QD|2BUGdV&V$g37D=$Ph`oV0q-gCW{i+#L&@sr2Qfu`u6ilH8C9p|uG&L^^GzuEh3 +vLO@gbg`yKAeX&7{Vas|;{94s29w@uz(tx=%DkKNS;=DDXCU_j^ +8DpPg)%p1c$LGFYvCp&pis*)D4$BmI~bcGt3cm-Vu=0Qz3Va--ajz2C-&mmZd)i&;QB&3?aLSPg{xo} +EW;n6`d?G1C}S_2i?Ue_fc5Q**cX+gN9hckpWraPQJq1Eji|$ga-VdWex!d|(|w_ZY2kU^` +?%ki`E|v60V;dSRzIOdp$C1m&S=%U7&-kSrU&+Q^^CMa!f5ph_J0ok@mY7j?SnDP{WykIr^*L~$Af2~ +3j)iG5l_@b7SCd@v?wzp7iL^_)dS1g{m$pJ^}70+5zU^}o)P_xK>zVkOnk9WyiyAg;(t1GjuPQP1ND^ +lyPjLGPyCYTVf72?;Gk=f^X#r(yh|XfQ7*1N3m&H=i<{R~8$4YSZ5N#{qPb$bx4 +kTmvN&K7>ji3hgOT?Z?kVdwp7(RQeHEt;?wuY1E<_d*RN-7PF^nGT!bDr>h0_U=Di_?)-ba6Fuo}n2r)p35Rns$q2;=9E)HDM?dvIu-mEZLC< +g>W3O}op057gZ~G+&4rgy+d}vGs8velX?j=S=73MtLI#>y8uV$Y?_mW|rr~V5s{M>eP;g{e#JTBD+7O +WqSYlb_4>3%MZMlqqdd_1~e1phmo5nq#`vSC{mcfakIoc6{GwGi<_L)F0B_fY!@fg19~yCt@)-w<=xQ +`K%Y^6>O`?3&xJ4*ZgSEnIs>xm;ab0zR+fUj!v5BHl~Gi=!V-XAbq2nsJ=8)A`!++dja{WViQ15f7;W +3|=&Hn3lSxMI%)MZZ4bSU{$X}>vyq;!;3xf(oeMh)N<{2IGj0*@@+R;JGOp63KCC0ab)9k`>6?WX@?Fk&LZZV4bua}`tke=wa +IWEcrB0fj$`wQeY;oy=GUlcr4w}_Y(2o~PF0JcN(oQ;<&26^r6=>i&NDuax&4Q1zvO|AIk9+Wx@Q$Oo +{sqU_FKdT7|Jl@W*XTSl`0=z4yzUjWjybG@k`hP{dpyS5{>az#!m+hEDq%0m57;pLD4bVCfuLZ&3d^9 +?|`NnTOLxsB=|LvR~rmIuN`8S;RrnlD2k^>dsIECEC%MIo~TzW0SX@<9gDR0TkG0hw_e17TRhOA3;%c +MXsxHZi@5M)u^B4%;w0=^7}N)zWoy=xCBq(nnuqpFj=gbu2t5yKCpP5920Xz?IasYr!JepZLZ)&zVB( +qh);0XJ<*e{amPV$9cp4te%RRvR9jX!(o#E$`CulrR9WsK9#1|w?&54UK_C9Wd((!Ri!J)UMAC;*%u~ +4o(N>GcNm*QdUg9g;hU_%JcS|RmF;`aM$ux>a4h;IMHTO}bcO4w+dAi13^BO{_$La~dt$)!iv&xiT6B +ZGTT+kdF`OS%#Ip_TiI1#PW|$=vVkHc>8#=?1$OVZSCJ)>FYE#8NA$f0m?=uZ_MssZ;h +_TKUxlC_5nF)bIsfv38cs*f+N-Qf`lI#JA-(6 +J{gQba;IZ2auWU`a95{9Qq}%outEJxIofDrpSmcRdhfh73r5zvl=6h*Dn)qFcf;LC6bRnw(2P`vG2fK +Yd?L!NSfg-dxau~+o*Pna57rX>tY=|lzINnV6DFDI)?000S1GGdG)}8PUSW97-!9VtO8Slo{4;Q>7wm +!jLpkpS>xDDmPpDSj+kV5>eR2?%wHsTQ9pg2xcNUNspKV0}F2<*V@o=jdh$0e9{$@1`~Clh}yRD;gZr +G;UXL%D&llvaJqS%*d8tgJP +CYu8Sdf*&%m&nw`MwrZqbU;U186_;inze_aK4S;AKiT6Q_-==K9sjpg&P8O6Q5NIim_|B$WEE>Yhk9M +gr%*B@*K_yVen}68J$s>;F1C;%ERCMZ$fK8?h~QKW4Y3H~fwp-N>9js|%?)kV?zjDtZiFQr%qk%np~a +zJf{y8b4*C^^p=|&ILv)9T9Zy4rxy$vx3G0 +zbifz3-=#7@QwBE5XN4=(<}^~LaP*B4m8qaO@#2%HN=j$8LY@APD#q~^8zZNH?2t``$$|IQZk+fA!ZO(YYwwE=?Ay+t_=%YA#IwvDP_U1+KEz&^{DEK+rP^zRUxLCVm>$>moiP +l#eM;{ci2e?jeQpe2 +N2b00>k%cwz?8&X_S01t;Y3VVVXXVch->;X&I?#AKYlGmgN1Q{Wu#1hK?}RLg*pFO3nW(c4CKqLvO@x{ +(`Rm~|AKLYe8bYScOPXDStlSFSjH032QBG_ej-isCOF2)oTKeb4dG{;dKdb$;1m08zv +RSETpg((l0;2If6mTvuu$Zzc)zY&ShGNQPw;dE^NYdRM&Q;D6JB!ge#2ynfuow(jHD@sQ%Pb~HTGD`* +t-$xfrt;C_DdYH_eDSWWia;(kLGZ@;-3vn=7D3n+~wyECh2mjA`!*Ft|Z!gr;~ZZbzkABQ;@l!S7Qr(}kj2P-X5A8+H~|Jpy~jh42b_=Uk`rVTQKY7f*AlE>t?_1l2~Ksr=$8nUiB`4UeXhf!P-cf~f7c*l!DKN$g{71gY2_yMhy#p@gEH$;Y0DfEE%Qi6AhheD(krEt7v(+RHx>2)fIKVuetcOO371(malY +jHmOGCmQo4#W2_dlXsr?i15!+Ooq>IafgCpeF^$3cHXJq{`u0I#Oeg>Hv+JvHF$BubmtVRI-zI^9SeL +?N^BN}a-Di=m%HHZH{p|qAJE^xn}wL3M(j^^$VFVpi-V;n6*>bxI;~wuR)lTZFNa0C?ta@ZS-kVIZsp +RP%VbeBcq4s4_Z`y-AojRGT;!>)bvjENRz?^~UZvU@$X>I$vVS3kj@dk7!v{5~jaHilEyl_d +I!Vyk1EpVQ_1|De&l0cM*1>`bxBOsU7jf!lXOCD_-oxD@@mS*MYRcB9F5pRSGnO3 +#VD6V$e+TbnSgKF`Z0SR~^ui4En(aKVp~IV1h8p6ITHJyFT +fMtNoG_`_h|38+F0seFEOzl<;C?a03ysLE>}3YZlw&B+q*qqnS&H+rC}!65_1!)brRyYX?t9y`aDpk7 +>oB1fLwF8(#v77_JpfAB8NG-X`PtP@`2I9R6ru8B$$5NFPSKd1tML +iUQTItks3;)NI)E9g_dZ4nfEeRtUgV&jXBI+yKwhw-Ro&}EJ`Buz!;?#lt{J8P0EI$OC0&3F1jpp+oH +?FQ*AbPTuAYB#~0#e5Wm&D;!XU%K`q}yXz`HXpxkr6h^cnx2J3_0iHMKqr+I*v06Dr5{yjmIl4KGAr( +=>WIG4^0#_Q1bBZXv?rloR;qo4yYHV3D)r27?y7%;Kb$lZ@=TJUKl4{AQm+_`@&>-2#r%ct89XBl2{& +U+s4OI+u$K8i5OEFn64k}#QU@E!+4J++~N;E +JN0PT7gIrTZ=*_4;KQ8Cu4|)Kk$TT!Sh!rwLlGfT^LL;urRxec9?7d&9l%bVRO8Ikyt^xCArfh7p}B +8gx(Cu1>SmJ_!UJ4}#)y&qQeQ&ld4HZIBU +f?ieq8c+b1-Z_b|Xx9EaQ2U1P;zJ=CC~H+-85T8+EVqG(&448%_k&>}1e~JC&H@pb~5miuK5q7QhyzI +1-Mbg0blSmNV*JC;r*Nwj!KE5TRCNLsF*)x18MTfl?cQjAep_Xk}6;xK8WI@R}sd^h@0&F(I-y +n(U{DVf^T4f{7}^;C-GP7K<2vpJ+ +W^?jm5j5N|yRMZI0vSwuVk14^!6hR6D1iV}5sA#B+06D(!l|VP8xbQzLy4fJ}-mCzX^-=Kv>Zz_ok$? +1AMwn+?&KB1vz2F}6LX?zKH77r;h#$@`)3&iy-Ll%){+7+zc@j6o~SxY`cci}UWc{gS0J9%S=SWs|hS +0~Ix?5IWpoQxbrhHIALKnZt;H95MN8RoS`oL#K7G#7`$$Z&C}o&|(As>=Yzhz?EivJ=6fkH&JVJM?uQ +~sSJYub#5L-s+sXZT@l#Fp=4Mnt(`>)D!P;{I2cMFPHG86Wm1)j{wPTuA$EzhqLI@t79a^Ww=fi>%P4j +!{oCRFW>I(P&wxX2!!hH4@PH>*w>92kKrQ!`!P$1Z)&V9)o2cXvZ;>WETZufC@RmWal9hKCS)nuQ&y_ +Uoy?(V26M#la|Lmt+H!{@QJZyAoxj3Tp0`xTj%m0eK1v|&~eW%b+6~}2nvG8V)vqeXpQ9XRoD${?6N~ +onwVH7AlIttaqN07>k00DseAS80DN+dts;$zS%qS24*y{4g7Z$LUm_vI9~f?7$Rq2En`FQ85~jckD4m +X{$!Q`2Yw&B&n+sKp5?sjG95f=chM7yE{cH0x5EF7nU8d!XNRsM>O}EUX5gtgmz1kMs1cl2DVun-S{z}YWRef7jCQ5TDR0DmzvY3t*Morg#6>)TLJxgoh +=03?h{98(K_QZ7wuY6TcJ6`#2iW6*c4VmnfeG$`*k@tA4Uga1Uss$3ZnwL&M +>Zyc5YE*(PRH$zR~>*e$BeiwX_Ww%PrWQt;{{f3*5v_?<^A#*2tV?7Mf%0awv;$g2L*SOb>y4SS>mCI +2gVnkA;j>iy|sz4Ec-hosr`83bT!8N7FSam*c|AD&K$woK@sCeH8+hh=AP@P6gtlzYA(6cqJR0>#C_#i1kiflZ6*Uit!yZ1h(fXhl)i +hhO)`njKuUrk(QNjy^Upt|QgtneW9$GOl6X70cPs$IHEmbg$eJdyJB7y=TCu^(o6ps0gwiY*^oJcr +s~`+d~Co=@{L%C9 +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 +(o2+TEEF(>h9R8=%h!&k`2qI +aG#c9;VLDZSI-m&f#&GNunElzn(X${175=zAoDB@8qPeL#63-U^1Z(zWNUHhCR*qt~_a-m>N`Z +ZyIz=8v?rKjapg2T%&!dsQ7+g>|fU?komvGXm!8}1cW>tbvz$2~3hBL7BUx0QBz*&W)$bHBo6f?iMQt +u5?0^2a?7buP52-X&L_5b5GEDS?p-$ +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 +`@btl-Rea1c80EB{?vY;L; +D47b1b%GL>pr#@~%t53Q_}PK~9Ml&C#Q<^aWChW0_lvBMV+}H;0k92#b&%Bxl2-x43m`_|x(8lpfVu+ +|93YthqQrgaJn>Zbi>!cd1A-Y4!2sU{)Gfel0X7S;S-__P{1Qa#L69E=`9aVcH>4*>=zftEg1aE}3Zk +7LJ_)@1z;zG2)xd)ce7?ZR3p}jAV+kC9z*@&~JG&Im24~`ftZz`<8JztMj${PIUO|dD$bhtae_!8@V){x6=0}<6b0ZWh~R?|JP1dFurY8p;<)a0yI415g +$rsncRB=|AvmlV9McZ4b8r+ +ms2mLr*u=RnJHuz`ei0a=>YxNP$lwQw;UK{n;Lf0CJ1CA0>Mw&j!XS$q6q^OrUqM+`ocmH7e3tGPfgu +GSxhx21TPmF=$W>8dTl|sqY|h8c +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 +>w;Vtw;Vtw;X@{pCF +vh?jz37X-T?*9EyQ$aO)k3vykM>+jGb&c#H+ZE*N +&funUG=FzkY17Yw^#*agF`yKWnc(ETDwY8F^_!Lkd6T`=r|VHXU$AlC)eDF8_kWR#wlmP5TWw_lAh=z +ftTrDne*whVGzkn4h67v#Di*9EyQ$aPJp7LkEm7v#F;_Ny@l-7lg8w65tTp=BeQ`xEj5v@W1^0j&#YU +DH`YZh+PWw66QIYK%emi~Ins3us+H>jGLA(7J%u1+*@pbpfplXk9?-f>#&3y5QAy^J#&3y5Q9XuP%6X!K({iUGVCHR~Njx;ME1Mu664j>Rt;}U7+d$RTrqbK-C4RE>LxWstZ(Ipy~ou7pS^ +G)di|9P<5?c7laAuei0Z@b%Cl2R9&Fz0#z5NxIZhx}ekrr7kFSL8%K$T~ +O+RPS@IXL1_B!7pZ|#7nHi7)CHw3D0M-p3rby3>Vi@il)9kQ1*I-x_JU4V>^vDt{-vPQ1*I-1bwQ~MN +#&3y5Q9XuP%6X +-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 +TQDyKoF9Q+OA*e%8hoH7P?Fh0J>R +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 +37FVhn2@0O +#?PfvFT)gkbqX4&h8UH9(xqh3O^0}GzT`_fr%^zH5k-jP=i4Y1~tgW00%=^JrtR9w##n_dl-Vs+sE0H +bqs1Ss5!9d-V4$SL=6x%K-2(Ha|kE^H2~CHzr8nyvqB(hfT#hY<|3#V)L>A9K@A2q7t<;HG#A-~od$L +q*l8}ZdCfjIhtopjX^^Kuo(6du30@CFP~oS6p9X#!_-W +v$fu9C`8u)48r@08|ML@x(0huDw^}?z +;EYpo=0-&*aXY$iYtoKg~sCL8k$o26UQ>>GUF?IMd)vgEI}zG&s{-&v$P)EySA!ZyLO5@TS3=25%a?X +)Y#FoM~{T!I=hUnmW^I{c!kT)Lh%;H&{IiLB00geE-g91QmH2bYqaGL7wI&por5{oV;(yV5fnd=3dut +uKx8;FMr2C{q{Q=kinn^gBlEKFsQ+x27?+5YHp&6Jq`9W*wftl?hPk}7}Q`;gFy`jH8+ukp9X#!_-Wv +$xtUH8r$L+saT>&F5U07l&&|bIA@VfH(;!cSJPqJ;xvfUAWnlg4dOKSwMn};D@2 +~=Cas{;fKGFhR=jEOrnyNg&NMjF;7oIq&3hkhvI#NG{p@So#aSWLG*Ht(O;c(**((rKylHNNx^GJMJn +bf+5Ys?R12GN6H21r&Z8s-{P}4w712qlQH20>5N%ZC=oFzc-#)WL+OoKDcO*SE>ftY3&0g;%0{nPMw; +?i6mE-x-`E*~ymE*XPK6j+*vL}E&VDGjDH&+Mzg%~>I~G_@t~6az5LLp*_{0hR_>8enOFr2&=(Sel1e +VoLMyNt1g|qi#+L0j2?%24EV1X&y2PEDf+Uz|sIq!(t&m6fx-1pi6@;4Z1YDVu-l(Fa#B48kA{Jra_t +JA*gKDKvOx--eKlch-o0EftUtj8i;9j0TDszVMr^=G$_-cOoKAbLs}owiYX1IG|wKBlwwMQDGjDHn9} +TmA~MqB5L9ewu%&qjDyB4;(qKx1DGjDHn9^WMgDDNBG!LuP_VC|%$HPhCvyU*7D8MuT(>w&VuynGwm$ +afwgDwraH0aWxOM@;Ax-`4oh;aPtpC111<&rU&M0pUPrg@1h#554oKuiNM4a77M(?CoEG0m&*-f&I`H +4W4>P}4w712qlQG%sm|m-u;a9u)1VGrvaS?bQ;iUK&Jtn26P(GX~J|0HVxP`VAFt212zrVG`n*IPw~J0i7}>U={zFH(; +!cSJWU8H=rmzE1)BzJ8n9`=rU9D1?%$GY!r(`T84 +{mki!CeBal1EHVl@4d^u4A+rCO8QX+J^b~}KsPtyW`LUkZ +U(p+fG;!PN$g>626`Ci;l@0S@i4~27!PASjPWqW9_`_}FV}s!?#p#wuFIDj@Fey)FJrun@iNBC7%yXl +F~S&Oj4(zxez$@Kl_giL?SUIVM?kg9r!`OlE&Y?>4~8LCIL(Wn8dOuVM@Z3geeJA5~d_fNtl +u_C1Fa!l!Pg1&UbHmW+-e)*pjd%vHD4vk}xGz~ +pxyc7lp730)Gpq~Xi!NdUy8*#?TABdWusWlF%igOG1~VJ^$=;@$c} +mC8$YIlb|L+O@f-lIw(O*f|vv`iSIn)6;C*ma3WZN_dm-CgDxOo5YGJ;Y`Argfj +_e;yadm$#u!Awu|a>(8Dl97eG@j3V9OpB;-lRlaMDNPhxG95GNr{LY#y+32~CPixP`Wgggm(lJ*JOM{ +ysDy{~&yNNeTkZ1Um_K((W?N!`{OXS@=oiC!M{Gd(X%%1|;3t`R7IqTsB-lx?lXi=09@QR)w8Bq +B*35XI9B_K*Bt?-jr1SQx>u#; +dX!A|mbF2E`i!B2vp3rt`tTGYuB;-lRlaMDNPePuAJg +M?@I8_$>B-THP^-n^agg6Ot((Z4~W7xwGROCs>laMDNPePuAJPCOc@+4M032_qQB*aOGlMpBE_p$Nt^ +*GF}$diyKAx}b{ggmM8WZHJYPlBJsswcrtf}I3A33k%?&IJx}T1R?^p{ +K-laAx}b{gggm(67nSENyw9sCm~N_nUioP;Y`Argfj_e(zRW_SZgA@NqCd+CgDxOn}jzBZ&JO<`~DJa +64)fLNnn$TP0k+on?G4HT@tz^bV=xv&?Vj9dnuNi2xSt=B$P=glTaqH!b#|o&?TWuLYIUt30)GpBy> +sWlJ2!ovED=|lTaq1OhTE2GKqCfLYIUt30)GpBy>sWlF%hpm(Kn+mza7O)|&`w64WH9Nl=rZCP7VNag +!h>K}>>}1ThI>62v5kNf49ndw)k+Zz8BkP?Ml0K}~|11T~4(OoEsMF$rQ4tC@r@30)GpBy>slewIWmI +1$Pulu0O)P$r>FVj+{zC80|~mxL|}T@tz^bV)2=60oFuKT9H(oCshNz@!4x$#;bg#6l*aOG1}~E(u){ +x+HW-=#tPSp-X!9vm|20iBKk?OhTE2G6`i8E0=^WiIqzNmIN#bSQ4-#U`fD|fF%`{I1cBA0FwYF0Zd} +ik}xGD7t; +dvvDG5^&rX);Bn36ChzCPgWYwfe&5h0eF2w)PxBo-}+MN7hzgeeJA5~d_fNi0?poFq6&aFXC8!AW}eJ +0iq_6TwP?mBgYY!AXLX1Sbin(Y7F4Rv<}2l7u7)NfMGIBuVdnmRT$~5uzj(EeS~yk|ZQaNRlc^rwxSZ +r-dmAQxc{mOi7rMFeSbFMFe8KiCDfQmM@9rO9GJuA_+tih$Ik6Ad)~Nfk*<81R@DU5{RVtd;iXY6R~_ +rAd)~Nfk*<81R@DU5{M)aNg$FyBo&d)_AE$}kR-j|`*#+cu+LR58E798(uyPrNfMGIBuPk;kR%~VLXw +0e2}u%?q<7cSi4`Y8l*IBSAxUESl0YPZNGc+oJs(7pgd_<`5|Sh&Nl22AB)#AK$$}FhN@DqvkR%~VLX +w0e2}u%?BqT{ll8_`JNkWo@Bne4U_B(dOf)j<6pWFb}FbPf)YnX&22}u%?BqT{ll8_`JNkWo@Bne4Uz +WI{{Cqk6O@+BcjLXw0e2}u%?BqT{ll8_`JNkWo@Bne3plB9g|Cksx5D2bIze937q8H0EtNn(weKqP@k +0+9qF2}BZzBoJvQx9ilKlJT&n`JRydCoIyS%u(xqP^Mxn!VWpkbh4pk~u>lHnx7NrsdB+jaF~#ff1h!%AlPlHnx7Nr +saQCmBvMoMbr3-N`{rpQYFJ +lhLa2@8BQ{sWH`xilHnx7NrsaQCmBxi%$I|n8X8tItYlUx8BTIJ$^5drrgZo%GO%P|$-t6Xr({gYn36 +Fi&wejSZ)1OV_8%Bc+$`dWDH&5TrsQ3;6i$^GhJd0=Mwg5(xw>@nJz}glG1O$J$xxG_CPPhzn#}SgLr +jL43^5sEGQ?zv$q +C)t_kJ+D!bygc3?~^*vi7qiX0?gSO4q)yVoPQO@@;UCmBvMoMi7vL>5jmoMbr3 +aFSWTWF*Pn&ytwsCPtLZLM9_gMv{yq8A);_>0EnLNGqIVILWMLGLmE@$w-pD>*~#N6C+AyHItDfBT23 +#UB7)4NGqIVILUC5;UvRJY@RagGSanD3~+t-re}nPl?*GH)l7zy3?~^*GMr>qGZ{%Tl4K;wNRp8xBS} +V*y!*#4BpFFEl4K;wNRp8x?{@P1Z0`;kWg(N1BqK>il8hu7Ni +vdTB*{pUkt8EYMv{yq8AkqjakL^6nE5Xm5t&o_Uv;KVFnauMlVdn1V_lH^L#(cVjDQaH&hWHORu +B*{pUkt8EYKIgkPoDw2R`)z^yMQi&lU*8GxPGd-tkt8EYMv{yq8A);_>Dp6%ILW&=J^$RpkWpC4tY$K +tWL7g7NivdTB*{pUktA1=&b7}F*@Tk}C;2?zz2SrqRx+$))-V}PGMr@AFd0cQl4K;wNRp8xBS}V*j3k +-0Oa9hUn)N1T4U<76gGdIE3?dmsGKgdl$<)rK*fOPod4FZzT6y0!?fKts4aDF5>*d4Wy<9Q|83mCHA{ +j(7h-47SAd*2OgGdIE3?dms@@{R<-}N|T6htzJWDv<9l0hVcNCuG%A{j(7h-47SAd*2OgGk=3?)keOh +h&0C29XRR8ALLOWDv<9l0hVcNCuG%BAFFSY`-v! +89Fj_Wa!AON%FnlC1%#07&1eltjJiAu_9wd +#){0UBV$Cyh>Q{W-OqfO)hEV^j1`$xM@EQ@5E&sdLS%%<2$5NJWMs(5kdYxHLq>-D?q@#C>JuYGMu?0 +M86h%4WQ52Fkr5&zL}r%^Eg^UXs7c +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 +}aMSkv%WAYz+E_DdF!TQoyN*Af7Lc^ptRqQPv +S1RSh%FA+vsMo>DLmz6iE}ocF4syAnRud|TnQP_qfu +R{BNU}qX#}q%KN)!y?WihXm+~oX06w4-nRPfD!vLE$zSxg$ +Z3Gu76SOR{Py|?MCO_?eztnQ>A=-lI!%^jsAV3gXePT^fY>I-P*@;C3n+oHE()1>CG>5xt!}eA<7iab +g{~Bh_))K+ai?VnLUgrhScv%6rFxQ9}0h1I9neQNy?c{C1Tt-1K$SnNEogcUuPn4kt^6pWKZWp%JMlM +5vfUx(UmaPqWMB$y~@%`{mGWip?gaOVwq#+DGIoXP}VCtd22}HpkaU(t{a9l$K-UV`HXgM@RGdyfleAl9JM+qp4 +P(g=@ki85sYl7f3Eij?d>0g}D$0FS$aE&BTv!<1{{;X)b`vOkPSEXE8-r;>W$*=FFODON|!79-0ZZpzF_UIUhS=j +MqS*a!wpC1%eCSdQO*)AEp7K%+i(|8x{b(Vu9(n=m0{3vru#JQ+NrS2nuGCLDU1r$me6lRdfsOT<1_1 +xitt-v5vR(U?8v6*cf>zglBDBB&Rmx|4ei(f~3uvj1jxiBC4)m0yPgHHW-<4-0Y~cD>ig~PRD17{B%H +bgh${nfLn9{h!S)q$A^Q30q!>vfNSoUycl?vPM2YVpIU~eJt$(lZx`}>oJ~**xaKT#+hHZHceMHzHcC +>bz4;3=;numTkr`cPrh`}-p@G9`2G +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 +4bSr(WCq)|PIgMu-MKq7HA{i|vQAYDcHl +O8j7w$5jH4bWCQu$ruH7IumQsR~fsoZJyB@A}xP*t=QuMDG0#=WXY;Ee3+|8h|oy=ewU%7>yul55h&c +j(PZoE{v|PyT}C!{H9@McM7pZ66?^UlcsZkv^7dP>+={wnKNu`2d|p$n6dK{oYOgd#_Kl$PxMKp*X$& +$KOx8)q1XYb=c4^>a|*Y-~3#pKCZcGH}P2XTbvp{Wqb~R%e}Dvh>5L*=nW$A?u^JEXIU{?6wk$D7Gp8 +F59scX+ty!DO9KQH0000805+CpNvj4X#!LeM0QLp|05kvq0B~t=FJE?LZe(wAFLGsZb!BsOb1!gVV{2 +h&WpgiMXkl_>WppoNa5*$NaB^>AWpXZXd6iV#ZreBzefL)k>K6xa)VR9~Y#Q`IR_xS>Z;)&hc`|5eWD +})GgQOCuU%y9|FKOZcTRus1IXrV_IPLc3L;b>W^p9BYhCtZnbH#Wtv&JkyG}__U?u_040GQ^+HuluA@SM@Q ++9STdO4u4}SK+Fyr%rT5z1!P=0dX-rpin7_>sUuIJGRf9HI+n0dn?zaH@4%hzQRH@5%wp|rP^3o&^3X +fCvRw8`K{51`XP;yYb$J3tCU-2awhjLAa+NUDJd12EN9X+@DRe2(Aj5Wkzbfh=2dMfb%t_k)}C$Qjv7 +8pmo#Pvru4v?EvlK9Yb8@8k7df*F$qVz+UB-rrG_<;I +h%+M>ltM;uT0&q|gm}%nU9{aIQ2XsrRs3Xpav7qR<<8Zoox +q#(9idA=0hXd`ye>o}~6n8qYBWFsHezXZ +nyZSVoWW{VPX^byPX5q7yymiWB_&_V3$dGQqY|tyU{l!nwxS@atTrjb(vdfyu~ewUSslt5wIb$`AJXT +uuyr4?jiMf5ECaR6C(>7YgsZCVNiBhMg@2UmMo-YZT;4EIxFgo<`_#{TO$#q4s0+n`DPUUh^xk=3xF1 +n&)g;``|6jck=#1pTB)9edkS~7HinUcoK2Les!3dl@c!Jc4cm4Z*nhkWpQ<7b98eraA9L>VP|D?FJow7a%5$6FJ*IMaB^>AWpX +ZXd6iaOZ|XP@edkw<)EAIw7J9YPZM%J-6k4_r5TUy2u2#q-6R>V#N49A%`|Ed{F9?KgnZ{|sla7mW*8Y!If3ueo3m^ksm+HN^5?9!1QNY7IWwoJIj132rzcAMgz$n +VNiG??h1x +cc2$VFt=C@bJVEbFvv3LOJNjWZH-h--MS$Qz=WxvFyql$@fa?FA~awm%ywoYMV>!N6Y-T|YG+jn6(VR +Ens*B97ItzAJ`pI&YHF&pmc21234#J4IkYX7^9|0;SmKY%4W7*McgOnG51 +ku1g0UeHoe&^HMD_vc_1*9M4zgA3&`o*-u;G3lLfAvZgE@A*aoSf$&8Jks+m~F76rY7h^nCqPp4LbeW +n3$kB8uLdUUjan`tGsi&skw_mYsb;BYVVh>FQ3{tCK2+@hQX=dy`-NUK +A4d}2R07WCuf*S+bRV_0;bM!8sxgB*%r~?Vs45F}4pO9bRMB4QnN~DH(L4(B1pa^qecHMGtl`PamDH) +FR%EF3#ds{6LbFxk4BHWn6d?~#_$MSJRy{#gw*0P+bA4UfG17Pj)#>c-4-td();6&F?cv>NRc$ +$~y~;#?C|sNds3 +A%&fxpZ$U3JZ3Yc>5=t1gBL!`*(5J2+5Es&nxicmI%4d26x9-F|ro-CE$jw@U0EchISi;DC9beHpqd& +7?jW`y5V!ZTC#5Q*|)}lQZ=?A6fb#ADNH5P6xe|I~z{>k_ElYzhuppodH4r!jkW`)aO#J-42I< +{{T=+0|XQR000O8HkM{d)=2%#$pruapB?}JE&u=kaA|NaUv_0~WN&gWa%FLKWpi|MFK}UFYhh<)b1!3 +PVRB?;bT4IdV{>gTaCz;RZExa65Xay1DMptUmq?gmo5zd#f^d+KBLo4_DfgyY>~*lt*mP}jqE)|pXZ! +$|3sA;6TL0K>vY^LQ5K27ZVi)gn;w2Mi3uKqcdrk +|L5eOjmKlms1Hvu@)$sFC)8IM +y55s==b!;*7(o=ka23r0KV3g=jpt64P%GLcM@b1`;6&dru}fG5OR$6wO4@FigvX7DK=}4gfkJ*B*sim +pp`~x*awzLas(G00;q~AF`ZB~!;ad7q;cAA|x&eldclQ#ci*} +m(S*j36z$oe2Y-z+I1PabYMET=sE(pB9q*vhKX{d}Wv0JcNsSU0lhn?Zx;~y9h7y1ovBbZ89hSFJjMT +~&H@VPg+xqp~IYw!r4Tcc5HFnPR0U)*W5;`t?!-1)+DF)*%52|rq4;uzqrGiu);(YosOdy_}XzT2A&I +^!{P??=#rVQVz$wIBMe5ey$j!~1ck1TdB|+hW>GZj;wr>|n@wfIDf+NVr~@Ed3FWH^c-z8)o8J;xSv& +#XAZFmdIjt(iwVz{}itmk)QW2^;Itl-)het3*yz4p`y6Xj +jD#BF|M&x?eLbhz^dRf!WvJUVt#*uw5=nOs{*+k9?1xE#QC|Ov<5gt@XCr9NY$B|H&kL)N#smNXw-pN +AY=F2aZ7sAhQUeJr>+#3LsEMxtZ>xD9BYmm)hZ8~v!#_4$*aXQZ##2Ng225|<@nZ%hqXA)=fT!pv_&s +B)4@LZL+D$iAktMXipxEjyZh^z5jow$0&Rq(f3G%_1;bqCKc|0Y|5xJI3~5!c|kCUH%kYZBMwIYFG@I +YFG@xhZi|o|_Uk#cX#-2mWTG=-&>vt!`S`(2S{3LF-awRB`#fI;r~ +16Q`D|p2?fObHOx<|*N1@Og-y3DaXb;xC-}s?=zxfaK{>uNL_w +U%!-ftB1@9o~t+S1<7*|Ofx+S1<7*|Ofx+S1<7*|Ofx+S1<7*|Ofx+S1<7*|Ofx+S1<7*|Ofx+S1<7* +|Ofx+BUs^QfNjgFVceHFjQQM +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 +BRp8#b#yd?$(aHaX<2esj9 +!cylGcQpLxnXOb#`_OCd6Ect-u<(H|=H>*)W^o%OrBr_%8}Cpe|^p!qfrpnwGIy5@}#Ub5+V!!0dcT2 +G~D{cFO;Xu0N6^UlP1&yTJ=y`=_y#K7HC3K6+Z8J@YE{O7@r9{XBTnI7dR@o7V%=qSF27O?d(I-f_yy +dm(ET&3nH&c){ahR)&f&?UU`ni0-D2%u$zd%jI?=?F=SpwrEBWe!(Vf`$DX!4WvG3hxw-q1pO;#GY9ygg)AinUW=Iz7Prb%d-@1Bw7P) +H16VnFzyO7L={CJ(2E@*l)Z+fcwr@Ss5;9JcwXN*^^Z*MaJnF|X%-JHU`L)HDiuH-iFDszYWCe7t(2& +m(2v8nIA|4W0O8(#Ag?#t&~)70QDS1rSs``oWFMQfcdPMf(j7v0`HF)}JiH?zqw?mwrf*2I|p9nHH+MVo(`a9+mv%XoVkeD2P4f-&@58pLzn +og5_AAf7ROo%%a^ovGC`RJC-Mo-wcauwvF8p1REE%nzRi{-^% +&sZ)IB1gxr_>M=izd8oNa&dgy_D0)%!H0-?T;oeFuuQhM0E>HIMHUo<`Grg>47J7*1Oc$RMPhwN9mp< +~TAa#OwT2qlVUC@Mx4)&=nKWl!}zI8O)1Z}Me=b5=HYfti2*3&cARMgy|`ShLZbToP?pNZ#GtMO^ir` +^{?T1=-dio6^8I!|)HSQ(hk-7QCFB!{ILq_BL2R!=RvFAq9NR!pUsf6nxMW}Tk)n%JBUwuHl*G4j$&U +6QP6?~}ybAZvOJm#bM8%?;1ZsawOzv!_3IhnGpjnibxjS-Ny@Gf`C)&-t_>oyVJYq?fIUC*9+WDbFdx +nPWfA9G^OiHPP(>;`Lv0cug+vD_x%Z%;Z}O&TATgDic)Kw5@sMGwpF6VET@UKE*ChuGbyv>7Qnb&!^5 +brqCqQf@i5T^N;6qn%;9(3R5W)Uxp@CareynIsLhMn}=F+rB`gauyNp_GuV2@rKLQKa1UMR{mA-!^O3 +ctm-V|d{itqeqQjNe^zrw|v0fdeA>hp9ds&U9ZeyFtSzugm0_Zw3^i4(0-Av$_(oa?2*{o?%+V{iYxi +pgdbNu99$?Q9;6`e4u$Z5S*)tI~ub)2hIh~d(?a9W +4r^;fU^Od1=ORnJoytDLpmxj8Y^E<6)Vn-0yjE>XDdj^e3JDs4g8J@YUSoM^TsV-4_$CF~86{@}>G|_ +9!WY!kr1j4e~GtJcB9X@6y^)|B?5qiy3!7zF~XSF-M`1CfDPFYW(P4&n0{_|hn)l%+P#hEHecl>bq=V +;S4zcVY`^Iv*YFV|~5FaJDkzT?&9cw^k7re~Dl+{k1 +o1}=-{*VwkEV<{QxU}qT<69oE`>7uXK@>3^2aX#@o>zSi&pKjsl7M@dPCedL`iTgg+HS1+P@ulQ+C6| +%?enXMwJg91&b&!a>^cB}w%Osmwd9L9;Ek(5g$@|63bgt*VW`ZF4?l<&6&-t(RGMAIJzV5nP;<~0SYZ +~{9ye^-Y;utw%4@${U+-fXO48!Pph6>Gb@~T^>q`LJ)@AOC#|K}U4}LHFx|#{dY)&lH!Z~& +yytTB;%>HgXWI07Wc}f+k4@Saz+I**_lpd*{D;nN_biS)qe1slJOlYGf+4S*HX;?xT-k%w9Rw9F +D+o&9-c(M=0P7Z!7) +?k+LNJ~o$2F#n|BnIKJ1!;)O}s^c&{6t-^oz_bj{Vvg{RB8AMwu6kfV!R#({NBZ(|x;uitsbxuupv%b +}+X=f4!v7}*TBW?%O&4ax4XCzfXNs-aGAU{ScPnUU}LQPyXi%Y95_nS$+!%`mWZJ;%v)Uo#e!UeJpB{?QohHnrAAOl8g#OfRJb?vYTJHj6atpq}}N8S9>f +kKz7q22&|&d8Xh!SDpoc;ZX;EO))$th*iJ@Ud_$jPq)m-%=6yeuUd+l0lyD()MW=?t=Ei9A2Xx2nY;F +}*zjUlYnFpGizp+sxws5nKo_*eO$Tp`Ga(yTw4m4`UJD5=P_wN3uXw#HYrT>M<(;99$NFqpPA&7|H8V +7${hAR+Cx0g<&U=28SV-v7mVRMrlS`w!Gu#r->}U#Ol9-CTie>grgxeO3OTRFypV`P^un%;xOd!t8R$X3~U?^W}Is&~E9K457A6D}^p9clIo8$CKlWg{+X4L3unG@4$;hNcndG{1w2-UgfETYC+U +v16WXx8Hv1=`3xNcG%^NPC%sd23AdnB~la>OZzoY3Vg|<;!eht+`<>)+WULqUkMz!^4!=`1g3l#7sbD +L1_q>-g4!vpJv@SK+BD_O+`(2Jawdpd(5;?Ct|#K=%*jAP^zg +E^QIoaorj+=)#>gb8-w67i#ih>Gl7b^NXyWJPNPu%{aVorjBB<(VtRw&UP*c^M-qb+q`VhtTF;9T=E3 +AO?c1!=B=OzDj9?kB)(Z!9rfU{aau`F2sp^623EEdSuBmfy|7$vjjA_fJQQ%>%xtlX@tEg#u!^zXa%% +?0Km*v5lDtoM1UeEGS1{xhp|zZ?)O^b{3a@o#FS@o;nhcRWg=2GF +>1-ui>tH<*U6~@w83u`3H7T&!8_jvov<=v(bf1sp+jTzpHK8%jf)_9C_hzrZ2wO_jvD&fBReTO<&UCG +ik?iU}_!5SIw&nOVR?4Ci&9OaR-kE`an*4xCuH1gT;neOtjC&T%)vYBBzCV!8jf+wCzAFyBB;5xi?C6 +n(h;*IVQV?Hx?JPlQkgaf9Llf*SUr+a=JVjRty%|l3Hw*8oHx{P}FFXtWp*aO=?b+~H)XAGIa2X +v)%QEp2|yG{Cm2qZ1-te>gjlIPQMYkY-LaFsEmkk!mJ!`?aejXlKf831_Z(-6NArn>mV3q%C~*JW5S7p0+R$WH6XqmE4SxduC*_v>bt)E`f>1tU<= +fUzK7&n$rjIy1aL;k;M6NUfioaoOsTE&GObo3@0}H)}EE-%wUbT57>DJrzg`h?rEMTIJ;+XGZmR|ehz +cqw}h9jw`r5Q$Jz1Tv$>$9tXE5!(o`6;1O5uZX%J^}a7z>CbL-0RIb|Vsa(a?8ZJB#){o$VN?Rk``89 +k6lSbNIiwGJ9*o)qp&|Kt?Ma@yd|RV_~kVi$hdQCzm3)-1WW#KVDzW%GLtecJ!Ki)Ly*JmVzuqXJ3C5 +|&NjHQP*Umh0CHC#IP-qpCNqdF1jUPG)v`P4y4V%s!YUC``K$(KRPtj0=~}=pshf;JhAb*$%#Po@8!G +<;{+(iRnG`$p1NKMaBzN=}cUckVD;pPn<<(w}m*Hsz@>+A6W7{ZPwg=bCI%j`K%uV- +b-hIv7e>SF>{zA!!@X)=haHV`yVVbHR+Tr;<^I9=A3k +HLsP?O@EZ!ZK{8U^Q1CKQcR=_F((tF|!bBtZQh`WMf&{Tsh@j^P?&8jGF^4F^MN=-G{-srdE4udA8!^ +wdc^7yP5xTu;?1{pIvwZIy +VOQ!~3A9iNRA(>?$yU^q{;$<{jubMa5DHV#;DZJe6Q+He{N!Ow +s{9hlMQ#oI+bO^C@HLoGh3*N{;bfvuQIYg606#M7%qEJm-#Qqx<;uB$*t_OM96&WWgy9dSHJJLG_%Ae4EwiY*x< +tM$kScuiFo9dPdJv0oXA&^_A+bBb$*T +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 +843(Cy2=7dn~ZKUy20o +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 +7}yU-i|HWCXgEtLrg@w$M#*v4DrhU77;Vm +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 +^)PMT1GjQPkZTnE?k~8co4Cd3Xr +uIyq76Fyd&?!=W1{{=a?%wT9Yamm7CWT!FCQ)4rWCZn9Bt2_vhs9}2(hG8fzfumZ7W#_I44NqMBSz;v +Dn@SqEbY}stiW4cF~taH;rI5beq)P={X+0cgOtT1K3Lq+du*uvV;T=w +5sAzb^pY4i6;#x67^SeKCnyjX$HB=*y7KI9N;1M1c1fjhk`c(`fN3FWxpqN9PPbT**@bjGq_mjOE3qA6MxH6G^6@+~qY0lpO%qlv;wwL97dJ-Yk|~R6g +*|87csY3cU<+L+eKDc>9MFeF^wzJFBpZ6CB1(dRb*b>seNE36D5Xojb0#BM9h1m!@*BSAQ4!l4W|!6E +ur!#h+m{B#bKJPJku}#fH#e44>XIpQRynq(hSbZZ~ns09ke1Ve4XUV1mk&^RjP<)=uvLh?v&;5DAEwo +3Sal7f!8oAXDAz)vzw2Fl(mahBEg0Cr$#Ej|%+a@`mk=R*_E81}?`MCQxz}e>O|^+EvFwZcJB{eY;pk +_#H--+QUFQFeoSFs4|VhaiA=O^PpNh=FLB#d(DfinJ|p78Pc1YsSBaoeHol7Sj8x&Dje=FX1knj%=xM +~gzj~rT+54~cC6Y;dr@gTmP_L-)EUSd1=qY-%tE52WnIx(J|ssP% +RIP*622(M!nXG+hj^6A9+sZsL+wf(P|c06jC+L+)U>?wxG)lP)j@1E~gN#c1UxNzeFlyYo$SuN`&RKr +A+R@P%jTc>nAIsitm#b-d*2c8tepvRvChqTNgfaps+8p?hr@_#DNZl0~1aJWPz#e-dOU9OUD|l_3Z2R +USy^Gfm*92=p*`-{X+DB)?A{pv2JxQ^f+%Oj!~9Ya&USR2|0RPobnGp20i|#d)WKM}C +j0lso*q~27EbNBfgOV-ffx^0!6ps>N;G~L%t#;A94p_4RitBRTM~PRw9G_??R@2BzrIOK(D +4erGdNFHr +e|gH}1gZi*#S$l4wdxP$szlVVfkC$6VB-hf);D*gI_?zN#n8kg9DO3@`wWkCWzh5~!&)f_5s!_$QGhF +Y6^zU%EUsJniApnF~FHHLl_k)0JbB$-oO62*}Lly_$QpefJC}r;yk;^3+0s%dJ8LIFx{Zft3YIK0A +E^?rIZHQx9H`wwoj5Bc*a)_yJ&p9HDx#z?s3~P6oGFiXw>d}K6p4BdO91t-}8t>>mi3lO?W8BoVtCc5 +zlOYS~9;Qr~0#UWO{9DE21KsNsZFQ5lT@FF^Lsf~Gl)>O$d}SSCHh07zPI9O=JHc1hxaW=iI1~eM@tC +d=i4`qNtXv5{X;~1`xXb-Rw+yVSiFz+kOII~t`pE;`E7d2Et2+P;o{&8FYYH1Q +ANm@cQTOt;;`j>o|w+KrS4P188l +njR|VP8%>b!2L%fWEPueBth<;L&1jeG4vO9b<)jc4;p0n91~XMVM-(Vmra_c46=NMQ4FHQH +A}uwxH*bHSdtIkY{@pAbi4mjO5K_^H*htP1>M#>)0z0OwE8>A(C|Fq5<3W+;cQhI|KLOnXHP&1aBs=|C^zM}E)!1w +r~du>?Pto>Pv|4nvi2z=IU^UYPjte-D?}}oL~r)?qH!P{24b^l)l!dk!P#-m|7vxVcKOelCC7M +;G_?>K6E(;vNoR3ZKz?Hi|Ao<=zEYWixAU7Q&4VmA@V6UI+Z|QY7W}wYm~d43D?ra$2|38XHj<{IE_l +xr?VwH+ruF)0nFU<;RX@ +aZv=aa4JdINI<4MKTtS5t8^-0X7Lr4EjY_xg#nT?>UMG7#mfKY=JRWM*rwI^iHncdFF!4>Hj1d$83`{ +RchCBS!mfqvQew?$MtAPjKHQdEu_i-G68S;_Fj-Nr08yAH+Q*%=OC9l13Z&&TBJJ7u@Mg5oarsBKXec +J_eOzA1c96rGkV8^9Yx=T0{WGnAJ(7kqQ{G%I>!E>a`6L`0ZC#}tkpgr}TdUIr&rwUvbCoYHj# +kQ)Rb)b74=D53F%n~}Jrb*OPL#*DNeoPCs_$L8 +~q*xBS1s(cYG9%&z3g4mBNoloY#bH1@TqYPcIAhj6_XFMQa!>G~b?L8{WFmO7De6L|15}@;Q%iS@!^L +1NukHG2f&3lk(Y-d1b0@(YCZw#l<=()h-%;gnF~^F76wvYml3BOrV!yR1vg$Yoy4N`^{24}0RVB>0H7 +;^iQykqasrlB6*C3};7Mr{rProaz2%S&B`&b|7z-iT@t`YLmxyra1nfV+6l1KsOj7wHSz?C8Ruos`r~r(FcP?(s$UN=>1Mu9vt8HeTrV2Gy}e(Yc@MOH}>Ldv115?*pk!A3F6rp;QjNQOHlCb+fR5!?mD!3cb +N%%{)t<%l)I%25P;bd!3R1%hEXfj{A=ZwvBE5gUn<)Wh$je4m-k#uBI`Zmat=frR)LSDSfvOTDV4CvMQALD@Tbt*-)_gCb(mhGMq6cY*s4l(j9?h^x1+{g4N +`*P%*{NZQpxmEU3ExMSGeovJobE>GlWo36L1g#`fM8ipHAuA6^A_u4^Vo$ZMemD-X%vA;!hlDyF0F_q +{t=57Wg63j{!tVo*lR(<}s+$YT3Lxv3eLvQkqtU)AgbDCR{Fsf)$dB2PP1uTLSx4j$2SNU~xuMN1JJ@ +N&vweG;&*RmD}$xg8USpZ4m+FbsuclTO@6xX`_I=a^m2iJC~3YkAiEO-KTDKB<)FZVDbkXy^;r^JyPQ +X}Zoy|qqb@#`nL*TJ9+g24hgHw$i6i^5Pyz&1#uP`cI3XSQ7pf +*s@=pT9VoZt3{OiUI9$OAJj{Y&SftRyt*-JKLplu~r>qo_)X)iE<$q6guO_5>9k@f2BsS(gp8A0Desl +#xhuM{Q%X?9P1-}?>kp#_FI)!srUsBs|*-bB=Ie*8Y|g-D +^h#&^?Jp(HdcNpw3+ga~Dd8!H(S_$603Q5hGUFHG48HdBl64#EI^;k!=rZM>#!2E0R>mkg1?rnItvZQ +G$7yG)`>L;hygB1H{}LIBFcwy^gN7opk~F?!6m6;~XyXPPW^tS&1 +^(pm19`5i7{0C(*RJ<+`m%8eV2sdNk|14TfU?HJS+5$t)w4ybghQv?k{zm?&=|#TxJ +CN9ni~?k#R-g&kncG=|`-r4VOQQnOxP4)KU2NMEBY)W16U7t41CE(NR#?NT=}V7Ndc+gmYcC8dFcceW59VdAi>cef4 +X`~2+uJVTnrVrW3irU8^p-yLME5#83gogHefemp8|7Ch11*aP!+*gq(Km`N&27u>AyIf}%)4&?fbMlF +NCo#b6(sKAINd2_pmx{uK6$jPgwId#3k5|^eqL=wS*2

Zx^;XqSAh4i}QN_Jh0Ki}j|LmV9IauG*(S5w22yr_6_hLGlnby_nRmrx!p?F8$8!AJDxn +^%6|%LJ83h_XU{?v%p~Ho3iBPStXKE9z&xtQIsVxchle<-_X5oo=Kw;;c~yzG{wSWO~(c+(1*KQlByd +e|7CUgbkBlhxRIms!V}%=f<>J&(&~-eZ}0fxPe!P{A;gmquO<92KnXd`TbAh#`Fzz)&sn&H;ZZ&Bu~z +b)*ku3=x^4D_iDH=jPj$#=vM~M=h#IU18Q4Q9v?Zwlc=w7#@ +4g$owTp>F5dIm#0l&6Yww{aWYEtYxo83Aotx>o8`dbtzb>qdNQp7|!*SjV4S-a&+*abgdb(o~{l-aj+tF3cL^fckag)K{D5585{EKPH@+yZb(?e7f+`-Pd*$#trpI%?Kp85c)qc +aQhILlD?>P;o!QD-5R>11?Hy6ElviyU(SK}eO1vk=;VHJyy;)Z#a3W@k +RH#!fl!gr;=AQ +0$@Vf1N)_&C@`BFnbB@-2(8A@+jVbaro*({cwOBqpp~6Z%&tT-bMNUbq!G()uW8~HSY@5t2!%46N~BWW*#KzQ*1@umaPVa#qtm6Ub|b*)Hp>Qg62VsAnZCS4ItkgD +z~M0G$LNCI&Hf^0d^lA``s@35(}#oy&D0oxyv6Q-C^20WY<)-;Mom_#vT^k*{VW%WE=z{_j%)Abg!F& +MdcP!uWm1ZEN!Awv`~w>={&0EI3&eaRcHdGcV$%!TAe3$qI=y~nhT15!9Fj~jsZ1v^WNH-BRX}ngi1d +cdAEI%-uIz?=Tz-b_7K)_0509*Id{Re?g9}49-t{T3U3VuH+(q#Y48lJUM21-H|{(Z-RodxnoAzuvF& +bD@kGu`XGxQKLW+jUZpuc=E9tH%Be=1%&Urf3y;9to-EA2zNEPRvKX%yALAR_aJ4X!0;c+JN#J)%HUa +p_J-6hY(s7@aUqi3`{_iK8hD--2jEU5COC=s3T2#E>ES9Oaq1s(vZtslgluBVFGi@ngjI+zy`0vsK*TC&S%^7=BRWaH%iR +Bq?Q~6C27?hWm<#$0m5lCuooFS;O;SNI65Y*WuAHrSRx?yYMB4!iyRxdgMkr83s>Y;lY8(Lt0USF+6D +*z{1>glsQe#H0pf06W!}}8Ek#h;`uF>?X<>Nn){#)ai6ezOWlftUV3zkIqn08`Z$ieUH0Qxy4^MK+Mj +B1*oe5ns*i|!X(UF>4xD +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 +XzbWJtgX1duC0ML{eHVoBim0}eaje}fb+K?e +L<2Y&Ai)qWfp-G*5}=m=SOl0NKn(!^h<@Gkb}?_*iv9-$U!boGBvOG&BPc5eCCdOH2Us@%s{y$XPzpg +>8>CnT7S4FFD{0u0n_0XY}wm;$*{z)}Y#vKXa^3ly`w@D5jED +^!+(szt!e2V`)-^#&wi!0iR3Tfnjfgi^r61nf(UxaaL+-mn$&`Y=x?I}cM{veF=H3sWZ&n;;_yQ4v8r +jGF|?K!_Q$lxu-vmKWYxyaX>?iH(pA2I}Kr`$Ry`2WQL#$G`*%o!~r>Kra^@cM-D`P=R8W7vAAYY{i5 +E;b@Sy2jYUDI2}|Cf^u9?(Fp)yz@Y>wR|F+;Vn?f1v@l@J%_ +=r!az$B)QkevMW~geU6>Y9vY@~lsD}cTO;FDXYG?t08DwYy6%_J2a2R0*Ogs)$$AP>xW+{>b#VjxR4z +_}hGN2R!Ib)zb3>0*M{3np)glP;#=Kx^`CE=jX8q^%)KAAaC%<{rJT#2oi9+23Cqzn)yfC3@8LEamrE +Mf8h&Y1Y61;FFHUh&CLTUl8pblUY;+LZs^guDo3-53xwn9ZaC^`pK +>hvOg%Z#c|^j6tleW4p(9;F#Z8q8L;I6nHO+n0TC8tTmkS8NZ^3z47kX +EhK%FJB`9Wj$#<|72%`W#hg=S9O~9%ItV+Oe1Z+mY7=#o7S$vSO2ibERH!eXj%M0&tCALDU7o>VYHWp +-KVb(L2WP +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 +CKO2vP? +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 +Vo1NOjwYqXRmo*Yj{VYDriQPfDXJx>O +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 +hshV2M{VHSK&l +_^&V6i9UBomRx+@*zgmsE6zjj`$;Fq?KcmbO&TNDMP)(R`bSjS669D(Dv#8mtK~rxA$3AdMcprRrsc` +WRmLvKHyVo82#Ul~fCRp$vGWIX&j&5dcXm(TdbPm?(&XvzzA9rV4ffDqKoqf}51ACl`bweaYo58Ax!e +|G)#oZo2-yq7=Aq4TO|w`J5_Uab9LC-DmUOHea)mLmjkxJ_X=1k0s*6I29-u-MkS80{qH +eI4@!6nbJ!Iy4=5!dI3F@g>&#F3`w0A&gI5$5`2wNC@I}30({x|IXaP5NFYUnD1Lg=^0vggGp^Hs2_E +Z(Yq2k$1vi^F@OUL14nEOUS872rhcWFD77#=}D0yIv4!azgE#r47T}J@Jsn1%ERxZJ+LE{dV2s@ +_~MfU4C}ig$rSd@UI+J-jj2d>p?QeSF>lCYr&=f)0*56%HMni-k;)TZ^ruo9- +RrZL)MKl-UQbVsffEm}F+#zew8=X+!(}uusN1dZ +bo!ogMsC5eIJPFD3P>FHqW-HprL(v|zB*p6#6WS@VAuv5@!-A+c^}wYthMxKCUR{(5Ob>tgx3>j(bc= +!T#&yH_I(SOngiW#O@BP$itN;ZX;kbUS;^FXzES0{j4tCuZ%ccm%8Jt46DVCLv^G2=9U++Yp%4032Q5 +*2ciU)x+n`-^jRU(~Cr_2I{2axRJ;`pK!Q!vGY0!E0R$|=+P^+*ouWpWW<{IDA3`Opn>F;J7hny#ilW4V+Vb>)eCc*#mF94`O +B@YH>QE2xO3S4dz=L31y?Dh{qC)u6sN8?A~oXJF>&=Tt6ltHv4*N_HNLks{lhM*XdldMu#iu=TJMK{R +sLFH2W=;88UFTO@S2nuIh`zB(Ovn<)-c6Xj>gpy97En7gHcr>ZDIm% +>{4mlQ0m`}L?lSlHd)^gDE8m6aMElR$il2hUI~s&Z^S8sui>;TfMx_-K26MK?HQ#ATr##;bBqW$AvzB +V>djQowF0!<)U44=h_yWEp|4uzT`ChnNe)HpTd>23bC@QCk$9HzayI+8dP>;Va@6aWAK2mm&gW=S8l+x8j +*005B&001=r003}la4%nWWo~3|axZdaadl;LbaO9oVPk7yXJvCQV`yP=WMyev^27bQlvpr3DjS|kGAY=8h5d)lQf)peDBR@y4 +~v!4M&fYIZY?YXr7H|I9()v(Jykloi45RObaV_QVT_iDVU_A%KVT@iOAR;<%mU{bLvD(FOm7c&#cUWE +t!)16%6Fh*}GgE7@?}FwakT=Mmv1kgR#dC0MpXgQ#`jUJQuWWj)?EC5;kBR8eFya)Jtw?@cHu}fVi3- +QLGfDA=gpLj_orSCnbr|-pXz5jqSOcKM^6C3HzOvQthm)=p%ulCvRxk_`T7sepsXA)(YDMmrBb_&XoQ +I#O|pvHRVE+JdE%pbn%<9sIN>R%O-?sT|iD??b%lD?BU~lO;dJYN{_7BLd~+?Dw(5rDs$G3NjN +%$nA^WPH4a3wmI#dv;E(R!6HA0qKSmx?#_ip;K2pc$Hd^)J +NPs%*P85q4WiFL|dlXaapTA5RgmXCabTD^@`&86Mc)*G@h@X?vV?taf$|>kYsgG62OpUh4u}Y17J2vl +dq_Vhm+}K^%UrjC#(4=%V@kvDW+wdt|rNP8mF{er^`h)iik4iv&X^BYc5|rE&*8?SXrD +g?CjioxBTnXpe;E7@HI&mxv>Nt=zt+SzP+j#b&l!*jhbdYgX94qwrxYW2?O%N6OpH*DY4z7zce_ +J8>oM|wX&SS(17;6>Vw{if~aMvIDnmT1}6R?~;m6(2f(15ir?1QY-O00;m!mS#!glC36d5&!@%GyniK +0001RX>c!Jc4cm4Z*nhkWpQ<7b98eraA9L>VP|D?FJow7a%5$6FKA_Aa%FdLa&KZ~axQRry<2T_+r|< +8u3vGLKZu-?tmM>f>eS6pvSf22${Iz^q_MvFxm|AXk4}pWPp^xzN{Za7s5H7Vv6^j|z%FH78 +cZUzIFp(gRa-N!(*Y=8t@<#zd;9MFof +=<#R3FASH{+|jk3V58G>x~gpHND&Rhob>q$+h@ZNNAPOwVu5-eSl2baFYl`$*hhOzy7EZ*SGbyBjrD* +W;VJ$=UnM@r}BEe{=or_Iw17Gsdf!l(|pIjf&?WnHA6^TwW)s712M!ycP_mv0Ca!12abkF%m0{h*)jD +%Z6!@FIZk|X%+gDO6Dprs)1UU3490Mw_{yUY3)0J(?_F$dU1k9I)6xEf?I6ANai4YkrqWcP^X2hXz6r +}y~oc_PL78sKOCPZ_5K!5p88SeSFgV@l{`B*n3qMSMlMsV%3=oTVLb|=Gd#RC)ipo#3lZ%VENcBCb5& +GRc%pgDNhZk`&B|;=o+QiGrC!|^Wqja0(H#{R#^y(ew5Y0enr_H8#UfAs169L|^F^%}h8#uvYzC96Nk +ty4)zYMtTpTSjK4~2u>rMLB%u2JS@HMGhW)DbpjfIogXuGxC=S{~8*-LTa6%)e6G|c5zS!KQ;lqiN|J +LROq$?d!0k3YWn+wjLjWTby47Sg%*^m?7-aj~|;ljkp9(1Ocikwl#pErH==|B5feOh>~d|4l1?{&{N= +o-oU&1zd^<9=1G_j>!8Fr?4CJ4n5=*Zzjp152_VNr3q{euSP0@o_1MBhTP_a5?Qq_kYMI>?8+-rJekS +X_&1-<*#HU$6TvYf71Bls&y(E1%yG;na0LyX0xCXbA$ArNS;t>~JRTl@`P&6$SzBaAWr>ZDZ*y`iwqS +-TVd?eSAhY>pqN<@?nJAfasK<$p5X4DjS-Rl(qmK#xu*)Na{X$nY1cml?*a0&UF%$oVd^J=~Ba=$cs=O1PuZ>GG%V!0diT2n5n78G=4$GY +h8g!l!lbU6}4lmsnI#Ok%Hl3kC|*D0Vk}MdSxo-IqUdx{z$D9T#1b@HtueMe2Hr>RSn9Q{L4mV +xaOmqcXwVo#zX}YocSQ{ZaJfynyW7=vb$=P=}Asi)iy6gR#>dx-|WyukE_oVRH^hM-d)#tL4$lN3%Cvs`q+STi2(uqbA$N3fXMeX4p+_S1nDBHLmkc8?IsB=Mhlz@Aa95pFIx|ed0FiK2K2 +Cf|Hr4B(zNr>(tL#cfm$qaWPQ(lyrP6t5*`e122X$wU$X0-LpA)F4{AnkcDnj7)znNy($2a-#lZGFlvPm?dA +u=vQ^_t+>jy0=W}W|$eI9~bMg_2_+=sq;&Cyh +eS%Ha6M?E3?`GDBZmmmis5}cc#t&3B7s_w^R!8dO{M_|-6$he1wBJ^fvndcx1k_6W#L7fPFxdh+!LQZ +_ew}5rYzz*qOL{QL#bRtD~=IyQJkel$c>z&4z|rDNg0i8-gl)6k}A +}KbP+i9irN*Ic|d51$QBtq*}aPIbz0{>5(l?;9>6ypIxnNz^&!bA%}wcVPgxM$7Hz@~f>7iL$>#*5L^ +XvQe{FB0Bt2k6)l3S){5n82hAkujxdaLMHFvMGI!PUDcF=H}JfWr{WzA;#K}22Yq#PD==fNODuo%j9> +h3BbgxH)*v1&y&O<-p81;0Q>^nW$Y=-5L%s_YCaB*PN<-^iVP~U{%>jsvz5nv28@zFF4N0NM4p=9M%Q;TSTZGjg2Tr8)voK +n4n0h&=0dF9STVk!y05Tt1&?1(bh5sr>>$dt~YVz^&LVRUt?4QYDE>;p%mDM`NcguPHpZ0M&luCmZbf +)JIfv@{QsnSNjuSt_YPN{dtw@}PD?PJqIzFi>ZU-vfmXd}M4vS6Cwi^rHi=g+Yw}Nwu##V<8;Ieup4D +xR_jxFYkXDU#M5=_>0j8SMP47;ggwLGCiNlgV--=o*1{}>iv~GnENIE$^6(YxjvV_fAA~(gFm|kcei6 +Shy3V;UlTn03rRTz9LUfwx&G#{>83if9Wg~P&Ebi!=sXzlz&bO7Ld;2ifGkGHy`)j5EmHcAYYBHr^Nf +$C*hG3dxw;n#&fbo1?q5%C@5WbWB;1Ryvn=lOzw!#a#*i@&Vrf5<(|51WFGK#2)lLo${yDjQ59Z&VpW +d8*xW5`t=~d`o2bb^OOwM+fbe!_w;2=tovpP}N>r}@6%L9Viv6-v;duXM)zwc3MbkFIhvwqZF)hyz4d +Y?Hpx_t0TT_LM)uMwqxWeFm|RK5N|!wGxx)v|-uqo`Ts9kWmVpXDY +7PWPFZ4hkFuJMj@QFdyOQ;hsgvsbwa1*+ld!MKkIN~26q9C8S#Y3ZfmI!Tt0m%AolW`J)QfV+%EUB|Y +teDW)Gq>i@V1e|r>v-sAu1&yYh>%6_x458}qrAwU#QniN@ +*M?*E7d_|s1k$&gyWm{>DPKUCrAFBERGki*8M+b;gLSWoMsA45qxPfgVs$i7N9d(=wmRZNkEZnuY33m +eLjrc_C}_k6G7IjWND=Pps6FGFuTa4^aB{IGyeo*RB{eg-nJ1OY6tYMY^E)Y5!R;M(%1I--DD(;NBDXv^Q`MViWdj$Bl<7cEWnVB%1slfD{@ztcwv9F~ZL6DQ+n^Dd>MD&i_8hR*mnX0{Qhz)NO(4)GRLAr0l5sbxCV7`H +mo@zWOuREBf*={Fsmb7Abv|&B!%23~rQ|*+p%`ysuA8aaW`XV?97E?{BEui*Z0Vl+7wS0b)OWWzEu)@ +=E)*y(5)0x?yVq|_2&;7|eUk};A%!!6>(;w6G7@bc{qP&s0A4MtCw-1N?;g-JYOONcw7!F3B)k9rBo7 +>MD?(lP3i_w?+;L#JtBRsppc<;*vZM;cw>_Om@%OyEgSCY?aiOmC0woyuk|%sJ0EZL2F_pvFG&_JJ1m +vy?*~~*%NY=SB_oXgN;yC5bRlJ`D-ZWC-NbXckx{Kf%>CihNfI-$P~XGsTA_evwTi#RHi>y4J0j9L41W5A;_a?KfkWL0k5XOF}yoM@NBl&BZt=WO5InhyrEV2<yiUEB0RbvinGWi141GJ%sQU9(jCpQ!C?DQ(@v+`;-4pbD+F@SzuJKHE5Wb_{-_NFyX0Pv|zJ3}$e@Q$rf1f`MPhN&0_4yN&`% +>OLN$soM=O16Glf669%eBmRn}Kf^;Q2lQwrk|)PhX*jj%M0wMX?N^D)jtLxG)CQ?*gR8HKOOdH{H42e+^ID +`2fN(lZSOQuW@%FG+y`SOr>Z=VNgPd;gPO%OY&~l=y+4A7U$bObVH$$}c%_~gI=e +Kcy1RqJ&`~D7ob4#9LS^OKw|2xDj4cUe@I^_hNq#Gu?Cl%kaM^9IW_ta-@iN>u)7jbD4^`6~{13G|K> +a$2*&{ +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 +R(l9v27XDyV{72Dfy)Li8@OZ%*cVFTsWt +G}z+(fC4LmmR*uY~0kL|V(J098fg3AUj8@O!Xvf-&UAldNL8c=LNu>r*f6dO=%cxnw#t>LM)8)vcolK +lrIJ0-zN!&7Tuq=AtJMj9AtV5EVO21Xhf!Km#ECBR6FGj6f{l7Wfb7fOPahLhI7NCP7cj5ILPz(@ll4 +UFLP54`!oV!tnx$TMy+7&ov&ymxuK=tgpTmd*Xs{Vy-u2Vxu=lesb&jqqqMFqpF4rfp7fBHFQMfnTzi +YODD%jhQ;DGr*f6dO>)sO<}nw9dM@qmbQRAlZOq1Cn?R`$9<|*_fmqD0ZOOfno= +W_=5W~xCEEva_mlSzhwVGNg&yQBp&O&P!dRXYzE8YzEBb?BlHSx&4y;2PJ`I2a+8~b|Be-WXEiEpxA+82Z|jicA(gSVh4%@r=#Egdg7OKAlZQ=F4VqI5=eF+* +)dxkD0a+N$82?c?G8pd80lc7gONV(ahr@ASm|H|hkjou2}U{?>0qRTkq$;W7{R3<1B?tXGQh|HBjfhh +=k`nXAA?VVOLCc9C<#VjJqAp~z>y!WWv(j&j0`X`z{mh2KFoNr{FO&cyqn&Y^+b`LFP!g;Rure@P1B?tXGQh|HBLj>KFoJ`%FO&cy1B?tXGR7IVx&4y;2PM +JE04oEtHNeOKBLj>KFhaDlFWd`^3^0P@v@etZBO}hZP5hDpRt8uZU}a#o1{fJ&WPp(YMg|xeU}S(1Xp +ViM1Q;1$WZdz^#4j0OWq=iesC}U%7#Uy$Z+>4W2}TAO8DM09kpV_@9bD|=agQ5*Nr06AD*;vldlFy-U +TokF4|uKt1vDgdU{i+iIpNtb9@ERhb)nt`UxHsUa6g9DQNtKuB)~|3kpLq^e*40`z(|0R03!iL0*pjE ++DMgoik7zr?f)!!FNfRO+r0Y(Chz-3u4eo26p04o7j0(%l*B)|x6?!HhGj06} +7FcM${f^T0a0Y>8H9~OQ|fRz9%0agNg5@002NPv+5BLPMNj06}7FcM%Sz(|0RxZ{h3UlL#?zzRXhfSl +VGN`etNIM}U0Xg-LZ2a)g4sSGd@U?jju-0{%DFA1;`U?so`G~~V%E|p8;(zy&S!6ms&E|dTx2}bh7g* +#%{;|AZhFO&o;i9Ja$l3*mkNP>|BBMC+lj3gLIFp^*-!AKq+5#oH;3sw@WBv?u8NrI6CBMC+lj3gLIF +amqHCnF`mNP>|BBiZ|@7r!LIN`jRHD~UaUFWEDgl3*mkNP>|BBMC+lj3gLIFp^*-<8kW6FG;YHU?ssy +VowM)2QjfJhm5Ljy->;0SF +iLmE1!5(ub$p(I#I>`8)=1S1JXCK#DuWP*_iM&O9{WpD{D$>oe&!7rI$WrCFnRwnjjf{_VECK# +DuWP*_iMkW}6h}#!RfRPDC=J88*fWOBLs(4>0305Zd1U6$^R7!%82}ULunP6mskqJg77@1&Xf{}Url2 +Y(XCRmwZWrCH7J(*yH7<*qR2}ULunP6mskqJg77@1&Xf{}Url2Y(XCRl+&+!sn>PbL_dU}S=k2}a=W_ +Jwf?q%?dTg5L~U}b@o1y&aJ1QvB)C<#W$OAMI8fu}$4@CP3L(8FI~1ZH)tPz{mn43ydr3pmaoixyaq60=^=29>y>62M=?NW{A@n4J688#k5k^D=L0hQw$acdZbrSnu{rF8tI=Fj;VV3S3zsl55U +NQfh?&;bNsLGEPKhg?Nx|e)Sk#M!r$D`45Nw5cbYYb)eC>)y1=F-!x$A8(Zq* +F=MQR@Itujrlcl#v;KdP`~Hu9SV%iVBk8J9Bhaap^# +04(2U{9MVJ>t@fwB$u3cVTj^x2aPA3cHR<1YY2B8g}X;V7zEYVL>Zc%!2hOENz8QA<98AxjU)y!-MbJ +)!h#)&cmD^^};AtX#Wbt3c1%p^jtB54L|N8=BSv#>cZ}-7Uoh9|GV)vpBe;EP-TS&FU;|RJ6geIA)YU ++(H9F(!6B@$?-#CYC3q>gE*Bv{SvStM&qZF(C!o=t?}qbukgWu4lN{|JH;9S=o}#ckUkvEAOnZ=Dh4r +X7j?^3EaR|Aq*;P2Z!eUfdC<~!!kWsJjM&)7lh+E^9cOu$q60Z3)0d8))voZBl$q-kpX@M@hh(am};{ +v-?$VL}?wVH5yn1gZlnx|u~GLr~8Yd?9i-6HZhi4k +kPEBlaGDaPX+G@{0sOc^#y5CO$ie)7M9Thy;+6{SO$+Erx3&yc~|l$7xZH-_q^C~^0p6{IhfEkoMlcc +jY`G5RA*EHg`jqjT^23JTwy)1nQCGI*Q^jX)po}LJ5I)~Gi0P|U`Gr7dLi +FZ`VqhYEW8%7r2zm6@g{wUAi&8i>?REN8Mi%2o~oH#v;8O$t~lVtKG1TK2(`NU?WOo4&(O$ckz?DPR_ +LXNiy;JgKlt5o@>7M+#1m$ElLKa2k<_~2P76*%EfVicm=x@bgj91`0%CjqR0x5KWQX-`zoY`hf;U?Tg +D-AV5g`eGuNtcV1NMYq@ZFCmmJ5K9GJPzk-Fqt}@9F +SdR-adGdu%ejIJt=;xBT(1ra^Q;#;PTqE%&W42OO?#qbk3=xbGxy#IW$e*VRL2dbvOu{O7ZNzug11}8 +(f94~=;#Kq4@97FN|k(UfhwuTS9v&b8PEr=z#jJ2T)`3BxF{1mRp{#rCe3=cUs4D#E7`vm$Jex17qh` +BvA@8#DRDeC=1=Nu?0Zcory{B5oVx2pU!sNqKB|DE3renFEH82j#c7SDxO5`aYCxm0S4g#Vvdfit_iEZ{Mr0nH!uC&y15kMy51~@)*yj3h +ZPNMj^1!n3xB{^2&nC{Nu|bMG+>Z4)^`d(vsnhT%no&hlgoYD=um?#JEn-pBSp~_YKPvIf1!Z)x`qeP +(JNa%@(ofYn>)N2&Nzt4OuwExzb0Ia~ST~ExF2G($fwp>l8XDa-s_oQ^?v+@yVYDm6K;fQ+oKYq6tS~ +*LtKID^8VLGG*H`j-p`r>0_JWeDE$;r^eo4K5kD(D_JToC=A!fed`3tmD;|>*vtigp|y0XYAD-^}WdR +6P=?%(Z~v}vG1L&Iu7W-4MfcjEUePA_6YtFDlBlirl2Yja=4CtXeRo +7aD_Wp7o-ldu`0#%ZSc3l6zKkhNUUBboPSPq51BZG6s(X<+Z%9Zl~(0dDk1*$yDmeJf5yJ54w@5S@73 +Skb#8-U2!5KTqx%3h2#K5N}+72XT7NCUN5-bVweP9Qu0JM9VZF%!UY*X5mRK{DhiJa$`wHZJ{W5wtBI +;G>fL@xZOW^7T;mJWAGI3s*o_2d?Jxlg)Ux^jCsy}@s<4s@zH}7w@XA%)D=DYSVpLJ>)FEktUoZ{b9( +s0x5hNHOJVAxi!~5eDAX_Mk)pVt)cl#xXZGaOUYUk-(BPT~lah3Bl_{0x`0c2wvEv-1gu$YLyNIlZ$2 +fyfE+wnh*Be5c3$b#;Pe_gI`{a9Vr5RH!=4+>zS3vSBgT8i?>dbeNFA(09zX+bGfLGlHgP+9gX#=XWN +W3VyUC*w`>NY`-B03JSR+{)r&z1uITS}alr1&Km+-NKK71;fm0w%pG^-^e9R2N|Uwgc&Bfl3uIz_>&9 +({ux8oT`y=k22W++IA3040;!RYN=|!Z-ox6xH{K7zW$lV=w2)HqH0Ln +QQ|@|F_LJK$VWKkhO)3?`0FISH8rkV!0T(WZ_D(9 +wU+}Zc|biOrU)k^g?fzhx3QpL^3+2i&VSyF4i|(4gLF~u2>^Th6MMrR%2T(O{zw^MF&SRNYW4a|2!<% +Y413E2`=J8SFTeB;gnMo5)0zJ9I{l_19$XroI51c7h=EsQxD!SKF)vwc`=xl1yOLm760T?`ORSJ& +rK{~>a!R2@Pl0|LaMwjULJLq03TJ;N^Zc%1HRvsk>&qtR{Su@=*17fK@I;gKrjDpnsSsSJxB-i +Rs56GAjxC>E}M@}?EtYniTZnm%>jZaAx0J%sR>`R2|pwpo>tdB^hSk)&{gMlzN}VU^;!X%17ors&t)C4S*n%a*V22-)bAWwm&7B +g0_}~oPYh6OD$x^tX46qStv>?my+g@wA0HWOS}>HQsSiDel@z+t4hb7UgcSImx>-EEy6xbx3 +&;j4|!S)z8fe=gjD407jbu~x1B`yS|I@%5l*1@g=@xfJI-umZ%Hh{>Np{yZW=%Q~SvmR&=jLh5?J*(ln;LoaXxh9U*CAWP$-T#nJ +Wq*!o8Dt4s~jfaJM(4Ro(nx&uXAH^77>EXvN&VH9*L6%M65oQ=}FQfy}d1}M6>kW%f&!*rjp>%}lt$D +_gM6(`sM8&4w(MPrDw;N4g#@t)4=1H=X8+1F9gyK38x>63`4-wDMm(B(@P0AM +mw>{Tv~6i|Lw%0_$7G%vWE``%4j<@kO1N6e7|3uFJ>T&gy4MzlILG-S1b|DKZpKz`-z9wU +lrTtVpo}v0wP`Bix&rrB9yf1q4l)0o^^ntKD?xCa4Ns)Dz1sKrcY?w+8Akq)#bH}mhUP(q +`ryLo6dT1xMYk@djJ~8qz=5Ui3kxrUYbn(U=#}T{g*^ge)y%w`b<}%s8Q!uX8kOfy6&WeQxI+iN6uw< +jJX(&bzXZGee8{^ntbgxA(1Gl17b5akRfG0uM${Vq&7Pd=OA_5*0DvIYKZsFEdsq(FJtms}#%32i@!K +6BL!4s}wKz#Do*k4v8_e1s*$2N4YHQdf#42AS#_yJVV +G!cUQ2nN5RW@E=36TtwJFosNu>`$I;iH}n+diMCm-ff&1In<)d +54OOc|z3?T(jKv{7TY2q=p&S8IZ8pSYAQJ({zu|^8oU}5fL+t5cEOob+JPty=Yn&W}4@B20V|kd6l8I +oIfc*&*^3!}8&Zlt}5A3sMx$DI*A%)W5ZJ=#gC>a^k`|R!s)irjv+ZdY)7PFdQTH+mN!>vPO-u1$lEV +HomWjzub;EZF4j{kBF!i)8C(v4^$Ovqzdm&q?@G^WYe_9Fs1;{et-Gw`@ZX4K^;@j)(BEmb`gf)lb3^G+;e%}vPEOCATKU68{T +7Bpfc)-AY(;ZhMGi76bKH&PsWUdoghRfJOo{-HZ1sTaN^&xsT)@xyFCbc@4-A=lPxa$KNJM!iT5atXZ +){1-Xwqemnw^VB6eT@=l~nL%}->Sm4M2dj)s(?untBiZ&)>B2Ll8EV4Mb+;G3goN!yTClSHva4Cbhi{ +rU#25v8(md{h6~Eyt6f19%Vn)wX*}~~xbgxApnv)HJONB$IMMfOd+*u*goz=j~No2hkKh{BXx2>9a>3 +6;6aY8N-ZbAmK$#kpQf%lxc`z&`n1KHAQ&PIM|N}8X3V68cEA-m)@9<-Cj>BkS(;OYsRtCnstnd3%r7 +Cw*h2xkauzau#1^iKbxd#&NLf_jjYSF@Rp46(R{Bm%2=lvjqiez<(#Z1f`_t2hyNd+|%yBY5cxA?>T= +bPLa1*l19SzJgn-yPiHCc6#oDBZ!L{3RE2FcIw@JNtnN76>MnfE=HybXN@*&YhzDZWf`qbYkaX%rC_> +!<@s*W*`n8VYf@+=QIcqL3r5t<@972p?usaT|idqmgm(rsL0N1U@GYAh_Rg_cX_^Q|ash>ec0(4a7 +1|lJ~>JqarlCCzl{_MrRa5F%>t|i@t=N8?~9k@$Kot*DSPu +tMFHnNpf-cdi1kgQ>jgL<1t8hQxCmgXL&+83W?Ke#yJ;-LuF{MOtWjB9F3kDrkZ|$=kMjvL$J7^+RIg#5-zvu$%fY8?g#i165^NX +Gs3^CTd0_R(FM0834p4z>SDl6K5*+i?i|*Alaq0wj2_X +K3eK7JHCb;1>n!G)hV!EB)1DJ@Er3fVb^7c#6y|#Hg3IJ~8xg@A@dKe=@r!owus>C7m1?%g>@iiZSX+ +YXt^Pb1(UN7@+?7J;Xr^kpLtb+IE5kyECE>vfwyCvVe4C|FGVOK&arX6m(j_$RZJVcmK70a5XWB1*qO +4xqmEQF%8kevd}T-3wp6{{f8V4k<1IIF39JuGTsBve(0lho5a#L#Px8kw^A*Cml7$FZ>dwP;-28xit=RSEia5`COu*!+7Ehx}M;yn6dP65kOdb3JPE0z +f)wYy;L2P;U6I@;O6sow_H*~M%EbK{a34;S2(a`LdJkA%MuqR!xUMSRt<_JYZX5Hi@kfyfBi3=OL*Fv +t~QmTw@`chIHIvo@4z{Fg4(QuVe6Jf@8_tKP}3g;>T%I&A3do6HfS8CTWU`iC2q%EBdSlF)oX9{8ha+ +LRK(qwU~5?x_;<3Zi4#J8@!G^D%@YPRN)9kRace5%8PdBXnUk&gVy;9q8yr0hN4(7hJ6h16+)Y4*k}V +Q6r%^+#Z@@)93jd4cET43m3Gu9yJTl=xjQd7R}$Px}byNB}jH|BM^Zfjnwhg=TOHr`47;H`_5h$c-I= +W!&=^-D_DY_%ts%yaqNdcNkn&>kggPa4#=7*}^(l&p62bXuDN^KkokBeo33h^>wtEvo39}FO##0s-y* +$FjdsUCIj~L#Hp^G_DCu@;e#`EuT=_9ACD7Nz*4MU!rI=X*qrL}1PTQ2^%&jjHJr +ydPCDp_1?o78Xcu+~4^0zurCA$%UzNhd^qU*C`|kKc-RqLZ!EC`ER)Z+SL}Uwqf_ZldY9yI#!VuHspg +TA(%63iYu9JUj>R!8N01j;d$dFKM +hcO8LK+-N-sdmJ>Ss1Udq02Nf5N@@zGAA-~h_en|C`vM&H&y1v+aT +nBrar-9xq%H$shH@E`RM3Z5RvIWQC%;PCvGL_Qm=+V?=T3fIYdto2&SgWiZ0en5$fu&V&N)o8)i631> +L-$%As%ZJnywgdAn$w*MVlh6$L2-?CkAa>r05IROj9WYb^33CCZzpi9ZIZZX!N7Uvf2=nO8qvA}HK*pd&@SrAz8Io<(t6y@KCn! +07rEE4239Psb_DAy_4jGOGfE}hMn7t@@O3F6e_6*%C(JYUqen%%*nT5h!qiwfH$a|_n#2_6Slpqcuaij%vnJZ3K=$J1i=F6RPCQe6a8+hrm)aBGexCIi3XZ<~7z` +@AgZoo5-8iT&0I=x>9@BJW-&h4|Bo>r&=YKg`J8#BQq+vbv9kyD_CuwEqGYphbsq1gb|XFk1a=Pq&II +u%4yO~Be-2lJv#6>{!T~tTI_oyqz&y~cgvT;3ljI$Ep28{mDg4?v(^hqT1@s5AEQQU?eGL0-D^RTQ;4 +ZTb(q;}NaM@BH&yOSF8?9&@mi*?uQZ2REFq?wy-vLgURgGwnw3$Xs*2Vvi~3R6`lag32eE;Ss=zjGQZ +3H>x$|U5`?md6m>_lL1`$cvqiSY(G?C{T;+DQJjmnyylE7*Ka9v=L$I->pm+WtGrxc5_ekyA(tXY-rR +-3$zYo_P!QG?>lJUWvI_7GB`-TTRUF^_YSKUje3!tU{vf)kRkdqb85wdb(eUEZGL?NAk9y#-(J#NGYq +UKwYn+B|a>!yl$cF%qtza_(;VGBya+Q^Xgc$`hb^@aQ@JtQYkq%BEcBi3Z!Tf9_7e7O;CtUHY{gEsYx +fw^6QA1{zjmD*N4D_!3X}J%WRDVU;4qJ5?JJx{Y!(5P_;kVP|ne%TOqD7z0?Bqkrh=UYltv&g&_z!lo +tNIR_Wo4MpIgt4$RTYP8*6p14d9!<|`yFx`1M}x~?85GGmHRtN77u{=7duWallT(g6!PDzPo=4Nc0~m +vL|m0>Bw8r|s@><=u;*mQEi8bhtLurM)Iv!I;MpngtPUdy7PCCnP9yj~`gw_e2mav9^Ip+p70A-60+z +tF=?&zD68c*NyLpZ(?e-H#vs%*z1&^!)nmzw@4mx4hWkdiCbR^SkH$JKnJH&GU!nuRWLk` +ybwY|Mva!Q&q?guh!CygJc~D9Ez$-&t53n7mgr+CA1tD7A=L)B~@3kQAwK1Oc8v;Iaic4Fns3 +1q<@!oi!*3NP>)Cka7rmBOoz?H9nX{QEwxIcs59=2T@lr_<=q<$j}9ZP?#*n=?^jnK_DCK>J3DrfebO +E5!hB3_oly&cs5w4gVboiu?LP%0Qg|Y12IRiQZ*1B2<(DDps_nYSVV#hVL*w8Mb*F`qN=0_?ut9D86C>H)$-vV*a +&||hVUF-(-F`1!()fF!MHY?PvDJPc6K#z8V0h|hR&=tH%$Rn2#`P&7S#&QVHzFrY;yy|IuxtV?A>{0P +T8o^m@ewztQzT0JHwxNYn%{Kb&@t6@oXDXq2y4ou0ckoGfSds@8P(nh(j%4T64HXR%lv4tTEuwl{KgWwytF!`(olP^FsX+w-m>+m+ +{A!NIR7z*hk&M;o(kjNeJY@o>r7L(S56Y~=>Qjo##O#m*93_S?h;PK%Isv7h};7JGjpQ1hPdV?U4ena +vSz7K-Mq2bL$a|)BRfm;a@Ye5#Q)gzPkGfX#Gs^PZWdtM-(4T$rOASIw!10FD%il{v$f+!>Kq&xC}mM +3mcJ{w$cAg0*kHb)%S5zj_*cSHAMDmVB5Q&4KH%ka@vx`1rs3Rz0ekU8RWM#P<4>jbU5#A4Tr?SL)`* +B1Q2AS~{lsDW=5cyJvZRwo}9&0fNoI3mpjmie~sU=8tXG$#ThvjmnccO&4mHaf!xZ~lu`0tGn4&TQz? +e1$qb(;v4;>cn+lB1t>03U0kZ!%)by)e`-ody@=ceCPzQgl&TQ$&?)FQp +m$?|N}=um$ +ym_@`HCv@f>64C%~6byv(lg97a^fq{eHAgMaKm*zFA1QX;xtM8WuJ*V9m!(|8$|o_)J@FAj`i@Lpa>9;gG_u-S!OeY*&jnZ30Gcx +}`~e(^GIB9_&MujKiT*FjcN%z;yp{`~v*;JmhpoJlpZvTNhY@BApyO1IGQXTo2iBTZp4Ng6cN;YOck% +&a`&-10od_UmU>Dngo`pVT^nu0_#glX9MIof`U%4*cEgcqzpMhY*tx!d+|$}55)UwNF0WtNjmQ_+E9P +dG-{5jZPV(qv=aaI)HGoA@56~Z;@LKRU&8QXN^1X>f70j6Rn-JtbehY-(pvXVi#8EE4>v41E7cULdLaCp>)Qw`O97! +1Sp1w364yG1{Je&z+@*+8xlU4NSyLI~W*+6B9w0_{Pd=ZS8TfbNEP?CG~|k;l-HkBi>!e$X$GA)bCmq +nXTTLj%`2x`6E#qH=G@LWy>>g|!jZEFZJq^&(P10o@QVhWZp{ZwCd9jjVw*rK_7YG0{%FtT4mMF&93P +KfcKk#k2LyN*XgnEltq*@{*Ji`GD`yR4UIFLa@>9}+q)*xcDku?0I|0`{}J(Hwp#SffMU00KHV +nJi3IQ7?W8s=z=x5lF`Z;xQm%f=D;eWCk+(VAoTOvkqb0=`=D;0dE`RiF+RMX&|2M?nGLm|c!$Ik`$U +@X%7hq$^rg!&Mb)7U^9ajm`=P`WXBTnWOS$iJqA>dmKZ|vh@6(Ijx*j}da@GUC1Ypxd_f-=Od%opRDFKi^2xCbG;-Q@5ko3G5Yxje +m3Tw&m4F^ke?C%L)mQF`d2hX6Q&|O{Z;Zg&_YTd{h_I?iA;iXd43*ES!$5h1rHDl1BuaeeA{}K(l3CY +zRwOF8>>aO!jP1X?s@hYHQFS|BK45QuQ2QaSg+DQMj5WPgWk&c^)U;5e(GKh2L-~E7iwsrR!X|y#t1S +;n&JpQGULhpi9Tswyl;_rk=X7J7lgRrmn=DeYJ79-yX_|g92#o=walMNRNE~(?D1e>$lNiogQdEl2Ro3&gWsmrG3nG-@-5BZb(Hq#kFL+*?JQ5isuoYaLLr9Z#*3v=1o +I_V}q@4vh`%B=^*Igx1kbHHyu;wc*N6v!`^B#*)LsJOb=tehKoZ9DkB`xX=$gAO4Q#mrc8os0k;n<0p +o07^`1b)7zDqdKhB$$5x3CcGk_|p|PQJ!0Z)l(r+FrB7f_lLvV{tZjr7Ek5OQ=P=qNq3@zJ$A`bsB6w +mUjK&#Mj4w?cbeoqROFPw;UkSsUM?DX|Oq@~U|2oJwyNr}7O?U%HEZYf7IpGUDuMot#UyxU5Y~ntAe|TstY4jjF8)U&E +9JjDBT$ET441{v+!_d*msR4B@Pwr2n&*r@0p|K(S(phO!MVA$ELm%A7wOPd2T3txLkjaym!veN?&tt^ +1O{!QnF7%J4DDX3YVt7wTnCB;cVZBUTT%9-<*P7$+Af65L$_M_gZ$c7>3_>R)bYN*hM&=MNxO}iLp{N +J?x*EphdF%SnO^#j^&2kXRut!s^;R`r0spV4!;lHZEtR +4jGORYi~EFp-ZBhoks-E%T;!J9k(;R{THMZv-k9k|6(5Fod(`%=zN;mH*&!5>mI$G<8H5h$@2O9sYV5 +F*8asw!W#-4p>9~K6NA?ftoXt5+%QeyntLai#yK>0`au5PrqVY2D8nOtCN~Pt^DVz~pqQqqn{*l`cDmc-JKE~*Y2{~vF| +Cc~L1Fg@#@w`Dwn5#+1?2Cgq8+qZ!lLi2Eg;yj*4b)zm?i- +J{d_Y4C&YWS*L1CZflwOP#?8wd(N&!1DytSf%?V54>FEDe#;_A6CBNI7F)H36CHxnwbpl5N;XnzTwt$ +6VkG@qeBR>i}R$n#VbubJ^4UdZ%VO-OT4n`L +5fNgK$KRFsiYKAPy*m-R=J(p6!fLz&&;7q(0q7z|4bjY6M^b`x8@f6SEw;C){!)Bd=OPTE73(Uh+8jN +4=ktK`Slfy|BbA)Ep8Qxay$>1bBo_unz3>)&?GDlNT>n!H=R2oCxe>KOhP}FCiO5y+z +7vBHgbj{0EcK>2%KwhsRA8W(WJu!WOHsNwL&KiD8H`?8VF;kAr64;%`9Umi}?fMUFXl;fk)7kE7X8cYjY#BfLKy?+v*P +G-&vuLy+0~Ih2f-t2|ZDIn$SCA6EEsgXL|Sawq!699MG~G2a?XTy+dsSL3jh9NhdF;@R#STVYYVmJL( +Z6+tXJNO3aOLs=+N)h^qLJS{k}Bsl%6Yv|U^MjMrj;O}BN +Zum4t8jve}9=p!VRd#z>#HA%Tp*@L;^I@E`$0&(Blc2LBwn@UjG{lpz;}nr3a%ix2d2jLx4~>Np>As- +@<}LBf(+!^v4{>h`=P_G}@HU&Ixpo~*PnRIVuJ`-pGQ3=6kDK}1^D+@4)#Vs*2NThIEc2mn6^@{E51p +nZR`ZCbCmSR@uPUT%C-*xpxZr_8& +`U;Qm~j04L@R4v(u18%J$YVAfeMEui +1VH)+fTjlB}ieqgrHeMvKGDi28W0DvNn(0S7PIB{0YF4_hc+(Kxf?b!k2hx7UWn>4}Zo5KXJ|w&P+t* +cc)4kXz!m!)6;}~!<_a#-w@9>RXdO|>EUP(-9Qo785DiIMz?hOveVt2XXsSkDF%@;yu-1-sNXgoMAD# ++!I%z;4~k2fCshvWkQ)hCxQfiL +*)N=O%Euur4?~vi)i07-#S%R36hP=OZgDAnCdUqRZ( +7;8D7A;z|XwjlYW45(RT%BaONtTLgLX!|WL1v)x>B(ei?2~?$T)-4F8s9m6X^t6>TL*#`YWq73FR2{^{_LRU2QYwIFXemI)x-_ohJ9NPYG#VVGN +ROA{|G%v#KR~Df&Ezl^`(M^~#`w8a65S!XTtTfAOoFVd3!IJNmF_rge&v +&jIB$ZoG#2|@3JgQ?}+{Q`M;)2=%?>|ej&xrE)KIRr0{BZ5cxvFmjkm1Da6DQoYtAMk`7OC}77-7Ko( +u{I=BTlWhmhs*xB>)n1yl7~!liNynRaOKQPxH3Q7Ee5bOpzg2LiWZ?OMpGi20X=ac!VBu9^K`?Q!tN8 +Ilbai1g{V2x3 +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 +CK(GP%i)~fE75f38gXdRV +IS0i41EZxtd6>CTgpR&}t&InrN#g+Nz0gYTk$0Pjs(b_=J*R1*OzPBsI}OO|(!GE!0HsG?6+@R8A9>( +?sAj5jaf*PV+uDX`*}O!Y7mjD@d3o5~hi8X(CseD3vBkrHN8$B2JpW)Ea^Vw7f)&_-Npv-dq$Wz9iIQic!bD>*(GyIP>61+MBnv!A_D*uS^VZ +o+bgx|agpy!|oXsRFGfBEkQYe#@$Ry7(Nmxws5tDqtgzlfvClgwHU&_y|cl#wzA6?(Re)+G@^FLp2-u +~Omr~emFO9KQH0000805+CpNgIXa$V(Fd0F+Ar051Rl0B~t=FJE?LZe(wAFLGsZb!BsOb1!gVV{2h&W +pgiMXkl_>WppoUaAR(CcrI{x)m&|J+c=W`u3v$hd^mfL@e+KwotMp4IgXup*0Ei-Q*)_Q%0)|%#f?O2 +Nh%)SuRnmmgKm&?Hrd&&x`|?00`c1Y^wW(d;b+gL|B08!uTRg#+3C^o`Sr1Qd3JI1SMfyMXR~MGW~Ib +MQ{Ipa7>Xxt6XSJ@ksuA^4bQ68*`sb +=^=fzgBZp*rA_19)wH~kmgvAC=oTRv}8(W!;Fd+d804^=d#ukE8AYSoFoqkSQN_~Coq#bosZakyTKD^ +s@>SE^ObXSJ{^IjXC!DercAnS1U2kGe#Nw?*?wT$bzmrre0HZhThGRn;m{v|?+@+7(Ia#7yMcO+=j3y8B+bKM7Up>t^iFs%dqJNDd@Mb3H~v>w2%~%>1= +Bx2EB~p7f(wYi%@Wc`zvgTIoWRRp0GO%U*xb9qNTXXjq9mC3dY^?$(j+LDv<(oZh^-cy}WX&)#JISwx@El)eu|=y{e|Dx<@^6-ND=AtD`r%#o^1-v(uaRX7(qiH|NLK*W%>jN*s#I!> +gOqqjzVASK{*B)#b(Y@qrN6N^IVl0QKHZ$v +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 +OdFFcj{DvRH{yhfAbu!CDTXB*ye}S#f +Pw{ND#g6H}Q0hNUTdd5=XwHiG&$~FC#>E?Ci2noqS4m!!0Eaa1jfdNV0T=qd;Bvjq+Ke;Q4BubB>^t!f}=#Trs0|zi-oY#M4(}2QPt(O9#l1rNqRVNA`UqhZ#9Xs*^m;+k1-RinzgIt$!L{H`o$|J`zQ)BSaKM{6`+ln2^EOTz7s{?pSRh*qWP^T%NZ!t4SEFdIHpNJy69cm +%gEj`ziV$z3(tJ?k!LZ;l-a9 +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 +%PHo>C=FN}}w72K~NAFHPoSxI +!>G8?=^$EQ@yEy(kt+Cw;_UPt8(nXQnCs~}*aXyojl=Lb8XOgBdt{)#4Su%~Qyr5~C$gH9%Z1w{^^fX +JV1S5Zw-(;H4WkLBJRUV(PKbKWGjpx#Go8(!E%VM4vs|z@$%e<)XPYW4Waz?kymB;>6aiM(8mze6IqF +2YSiBBdGTzJj*=_pOHbXcHbtQ|(Qgis> +{4<@&5=iNT%w&ORE*H0HGR5GtWGb^#Qe4tp-76mqQ|}d!>jntD&*6T>?pu-xo~yaP$)dy^68l`w)_5E +ca{Vf<6n6yG1&H2iVf@r#BxjKHt#M`4{ +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 +BH(uc}kO +tFN%r+7hWR{HcUj}beFz76j}iuJFLpq~wVIuIBXrC$=b;11Kz;sr#XC0UmH^dT!sJ@oPza|0D6yLCY5&{1j~biqk36o3C$j(JenbRiaHQh#VSgYHO(_sXah-oN8IRu(P37q?`0)n2nld +?96hLCZ&kU<)2cZa+#hIBC&oIYjO9{`n@0DEI`XFHcOx0-?rC32QXsQ2HVm;T+=(@T}X0I1lhFe46Nc^dIW}L +!1*Iag0+`Vupby4$*vw=1Jfat~9|^0kHz2CITn!C;EQ470p47hDJl5#u6un3w;mmLW|P~(S9g=2~

  • +ZI&?blA0YW9v%ArP}qYOmRP+y@{6 +QofcK!E0iv_@P$E+qJp5G+BaSv}sqPCJ*Vs}hrH +Q1WCYww6Nuxl-v&6-O{J_y^h-agNk_ASCab$iXN)9NB)v@sJG|4?-~>>uzMmlK52pPYeP?i0)3+1F|o +6KRzND1j7)*r%0t2QTk9L)rk+`=!eY_;Ha>eK1=UN!H?zH;3Uuq1V1r@d^jQ4GXa +@{6wS`)0kZX`-Zu4u%_M!aeBjP``qz@WV-o +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 +n_xhm2Lwyc5YSk8Jbtt3MixL%r1YfITv$R|0@B +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 +%aTQ!pc<$=$TF{v%UPOdMecb`>*n8q +8$Ok^KloyFa!<4GC-?cx*&057}t40ZWPd-P#zlM_b@aIbIZ80meeas8AZ$3$^vo1snZ7!gE;XH9MuXr +8zxdC;R+40#H1gxZ93lYI0$lr4T&-{WYb=1}Lyqz=a<1Khi5swQSc^r2Ce43UY2(LLL#?DA+>uK?hU1 +i>WWr`*;ZOs8oDznd98Lo!4*^xhD${>EHqEsFqbg~QILaWch?e+dF(yseTKsi`x(EbN*G0Jq1PJ$m4q +@ZA@QB!*mT`h(5(_u(8dYdtD7G#wx@o~ixdnuXoIOGF{d)YVCOw3MVq*G#teyh_~nRkL^AM&=`s&+xI +PbMW#XHv}dFH5Sdn4eR~S-E&8v^OKXq)rE;MAz5*8%=}Xq~A~w#ovnETWX$9bmpE?Zj*4Q7pcg}cp=i +{4<`BGBv^lSM?PkuY-_UnW!|4yg6(s>8OtBg}P@-UOdVO{+(XABK~azKjO3Z1=p)5T>YQK +L}c!Jc4cm4Z*nhkWpQ<7b98eraA9L>VP|D?FJow7a%5$ +6FLPpJb7yjIb#QQUZ(?O~E^v9JR&8(MI1v8MuNbLcKw@)*6}{C}_W@X-Xn`UEs;bornZzMhjg4%l-Q2 +IgaS}>W!WDX!kjTtD&%8Uixv4(T8;r&?n2h^_nKyvmzrYQ>S)d7z<_?nti7)l*>I;AVV+})M!7WM*Cz>QMB8|g89TSDKtK+y;SJ~6 +2n}oOzta63=LqDq>QJoh_YP!1YJc2>iq_^TP+tUD$O0}at;e?t6@PkRWCHiGU-cU6x+m@UtKr;LJ7c> +sArfnzEx}oUjQRCU?j{F6G@R;cu|5s!ll*Aw|vtI+McQRmMVnwkCFkhRNp=zfOMIOyoFrgY#fe{r{q5FBf;mk+yg!xox3Pi)+%5-!r<IYVO1N)cfa3>*ojgGK)y5#8Q+GG0E}= +!fIwY~Xn?d{{si=H10|++R()3z)AK^9OI>U~?%wl-L%ts>p984v}&vv68qXgmImv{)Fw-7$6TIA}{HyT00>UVKDnxgT#9X)FG7w5y#p44kfsT*is9_wc%F0@S&sc};#T-h6FM#$5%J8i1s=kOEJW%dmr^y +MC$+Jr(=K9LZP#smalf`)fR%@ma|Z^q?-yP^H?>-*aA}umspbyJ&sXc+`xnW}a$th~D +I&vc1Q|meXEhXpSs_I1yVPZwZc7#hs%30INST;kG+&KUYqzvI##V`=+x0HTd96u&|=@j$lgsvgAXW@n +-k!_BMyxhfXJbXcSV|Vqc$2@u$xJ99ek|%@X>06czBBm~V+CU*u&Nxra*JPv{Jw1b-!T`r|Kq#1`V0xT-!{ +b{k3qdK9si%0V5wsI$;hfBDoP!EAFk6&ah+Xvx?WMmWpR{aD30JIJO05bpp0B~t=FJE?LZe(wAFLGsZb!BsOb1!gVV{2h&W +pgiMXkl_>WppodYH4$Da&KZ~axQRrrB-ck+DH)o&aW6LA8J(UgH|V98|5TINWvWugo&!C7oo)-!(QxN +w7X8?{`#A>4LG(*)82l9d3k2$nb}#NoHQReA6|{7FdhwtQ*Q|8 +CvHZ@Xh`Ca&!6%v9+L?|7H=Hal@DU@qMFlbh(||$tQ#9IVTO?5&CxZLTa49tXRa>dDKLiXjsdBlmkQo +eMm1cA3CKu&ra`w^8U34C;WyJ!Vs +2c!ar8Jj5d=?4K)p-(hMutG>QhDp>R1hR#%qs8^j?E?DKJNVk +4&->HG-6`1;)1;;T0i!FjO@FF~kreB!UUE4QdI +~%QAx#IK6sOst>8o{@P!9d=(9rvC2Y&C75fcv)wZJ3yOCA#RWhABQz`4}Mnoj!U+x^(_^a!cj4guHS#V>@;)u5RP$YS|89L@p3BB|A>gyA*ijW)$7MTjGNJVr75bgVr|o5 +ELUpUv@*}2oW}6r1G}lZ^hjtE4SP07{r`5GwIvS&}klWMj=)N@HTibu`GA^i^z*z%pPN{^NXN|A#)VH +&vR5}fz4;&tRE6i5i6zye0!aW$j~~#&XY1G8` +EYxg9wF_Y4!@cakyQebc@&MbUT@8$L_o +zXJDRkE%dWu&Lt)rQ_QD|Hvd$rXJb0A|Jr&>|~8fltPg=%noRsF^b7;r0$U!$U(< +U8+%K?_3kNBHj3T**Bq)>Ykz&pU?1s=tjPb%edleRub19DGOz5v#$-Cj;V{w-E&oxm`F*8H?Ukyu|3C +e7q1oAk+`p3Qn<_6d`vAQxpWZJ}pPhXc)iu3uaCbi~*^;D)_XlH|y!}GSS6sU?@)u~(H#E&(s!Pu~w! +x)YqL9gYv!stH=Gaf(pjusNk4X{o0EKU3|5*y{UEjpYcVz{VTV=@!=^ITzR<;=~Uh=( +wJv62+P;J;q5Awvv)1Nq{_aHqj40VNIhoH&MuA40kz%w4^T@31QY-O00;m!mS#zc!Jc4cm4Z*nhkWpQ<7b98eraA9L>VP|D?FJow7a%5$6FLiEdc4cyNVQge&bY)|7Z*nehd9_% +5Z{j!;|DR7Wx7CWE2XYDYR;#YM5>V2jqZ9$vJ*&1tAu+|;5J$GNUGD9(-#8&a5<|P~oz+TU&-^^^Gv? +$(zo65*>0#v{?`<(`X3%4QtM!3KeZ|QPDB=|%UPc +jZ3lA4tap&wF7k?eweBLRyD2etsIfkyfvk-~E$f?KOq98%Afl!XGn@`&-|3j)K4@pRwg#FfN{`8q)?U +*&Rz6|M2Ar39l}gQjKK2%#l6p&bM;R7h%bh75CCFqW2sjMk6Z3xpLh) +SPt=x}0&@}Drwhdw(bp^wfN`7>Aq!?=`^cn(m7tc6NtqFFT`ar`3c8Six4+w~gK4JL5oIotdA`a?^fV +A*ie|mLuJB9Y}3;fm|kK4oPmrqEGuE0}taEe4%Q9uzGwc>6l*C;pwT=&M^E97W*`h))Ti;~{yPlvt91 +e}{Ov|-d9Py5~5L3<3N+wtgT(lgPygk&aG#?%>kYvKh$t{7Splf2^iyb=rAD +_>2(`pIjK|@9FxXW4pV96VYW+jn5b+v#CrQtC6gyM3>aWEv?I>uXsr +#wAlVzGdvJnQ3Vrq@8g}!S=7w!G_rxP-ag^u0?sO-YYJ11LiUUa-^EDb%6+YKf0gdG^6F}&ZCS@c+!^ +eOefg-}ogY<;gMZyV@JCy$9rqQ&U%{mb2nVC({tCj2iuz!7fJ)2&Qdy}i1!3CUyWj3t}8O5Bmg-5B{s +St$CzS$LWh2<}i=^UDsO2rFYA$HaNVpHVLDp=kyninveQLLl0nITB9sHOXAsjud2iD(@vGd2X}#PrxI +q5(1H)w}!eAFamycgK0C)(Whs{vkHw-fFe}{QHkuiD^}`(K!rRNQz`R8i7Q24|x)f>UmAWAY$q{|iTl*gsBOC~Q|=^kS3hfyq%KXK +#E-$k;4E2Odn63wgC?J3rb1J>MWe#GQk+hugB`el(E>OGJLj`BELA1ny*6BpFM?Zo?z$V685%wusPV; +)wvd+q>x!8rsZG!l$`2&|OJ`Ei5|VcrvY7R<}EcKganLOD{T)wy$Xjm4P2*N{D_c80b3cIxDq5noAmc +h-7<^Ycx8Gm&wIlppgKrI+;_=yagtfWm5g+}>0oJrb|)64u6~fBCK$w)TG5szrjWjHenITg};^r<2oh +!0CZyslPWeVbQZ)p@-WkLV^s +E|#6WoH`3GeW5sp0ADa(ma<*RvbhAm$vnn3Y!hCC7}~VYPNll#=qVZU;wPTX +hwA_1W&7%C?X60&(>Dm_|T%dtLE8uGY%^J}Q%0g=uI@rGt2F5-Imb2MW1bXeZ2EO)P5kIuPuKb9ayXv +(5;5k@VIoA|7YmG8AKdN0Cf9y1PC@>6fKL4O<_DThO<6oC4I*67x(@AJ1}ahDV!zvBY=$iiUI*ukg{2 +*vlmg{8GlhAV%-32XpnG#A{iB_X52A2zoD2VtD_2kvHDdAr53otycL5P)h>@6aWAK2mm&gW=UWBAZs2 +3003MH001)p003}la4%nWWo~3|axZdaadl;LbaO9oVPk7yXJvCQV`yP=WMyAWpXZXd8J +m{ZsRr(eb-kEHZOMTsCE`xB%5Xd+p!a)zCn_)$de#TBbx|C8YGp}{rV0i`6fGyZmTD2bk59~GeagxyHN(^(U%6P0WGMK<}TVy;h6)Br*v!zmN1C4$YI(K)sl;R@X +g)ZmdS*!*RHL5pE%1-)H7{!*kk*cAaUnv4GiPS618DA-u!8MRV14hDpYt~X!{gXAEEmfqp)}>S-f|jX +yCt>%nl{v(b0EG$DWqLBgKqQjiq#}MM6P9jmC>IH}V^teencjK$G+n?LH7SKB6sV}1dA{Tpv5t+Z&BX!HZQt90k*X@56BBK^Nv-FBtU~v-rDzRp3Txp&*rl}9m=lIgw^yy5oK6cpwQ$>z^B}#*SDVzyc97huq}vs`7y(u +t=L`_Hhu`(Cq6htD(cb&{$;{qH5zgAghz+wg!*t;KoPr+ +{wl6*k(f3#{gOcl(;vk6+;Ajyu6u?RDHX{WDYI_urB0+HO|p3il6CO9KQH0000805+CpNzTxtyLJQs0 +3-_l05Jdn0B~t=FJE?LZe(wAFLGsZb!BsOb1!gVV{2h&Wpgiea%^mAVlyvaUukY>bYEXCaCwzh+iv4F +5PjEI3>*Zqw~l~qfffi5py_to1lR<|#*01*v^28WP^6ZZc-61(kQ6OBcDkq@f^aTpZihq9X0yy`A^7G +exPtXgBdf0rYY-|WC03Rz37t}c%PlZjgT^ao=ul)ca?Kj8S}4oLS*Niqfw!H~7TCrp;VhQ%oDJeV(~^ +A6;8%<>e2C;c&w#$W^?LQ;pkI-Gd5}MyQ;cAxM=z^@*Z2VSX=WWcOXt=;m8GA60m8!99ov^%P+L +n#dZOtqj?0upwlWdDRx%dTt}gWzSgdXg;XT) +Qo_W$rf$7qhh9N%Ue|LfU=Iq<2Y9LN&nd&vMjrRC$vyw!>AJ=)OPC`upVtDez}Em5uWX@SISa?43&&s0j{T$dg+#l^$xrYKX@t@7;eP +F9FElLA$RK-Py#F~55rhbm$n^Y_>iKfiJe^lfSa%RjxHm;eYh@^C<)11lwQ%G`NmXfv9`b9wnBsxr~u^_k1v*4t_xxg0`Hwp9ik +H3BSb6|#Fabf46=mNnte098f7QKfFD-oV7?acOWycl+e5RnV`Vz6<-J7$rE8yBNw;Y@>YTAJXJZV_v& +{~O`CEsheopcTyxv`7rCK_b@1huqLEk%U63vgDH6vMjpZYp6p3J@tpSq$cv)0gWn`z#B+U00EGsRvK& +Aa{`pK^c4YUx*gRs5i8~s>mvsL$0UMbs%o@6>eu|psxWB(Ac`<+CzpAYtpa(a|*6}rv3(p$MKEuLwc{`pTj@ +N;+~c(<%ui7tlx2C9<}m)e__<)4ca}@bsL^_vjn4HkMNAx(I~##p0oMA5qWv^u#MmA?mgZ=aN~c@4Su +JMBTo75{lBbEa9?#SZsOO^#=K${w@UXn6Da?F4ItlN$`LW_Wx7LYsf|BKrtWXl!?%*QAC;4mS!DkLP) +h>@6aWAK2mm&gW=RKV5jEHh0022D001=r003}la4%nWWo~3|axZdaadl;LbaO9oVPk7yXJvCQb#iQMX +<{=kUt@1V?GE^v9JT3c`9wi15NuOJc>l3PdEv=0je@Z#**c25^=w~Ouep-2OVmgt0yEU6+L ++bzz2Ki>=~iMqte_V^{TMGoga-wd;^%Z*qr*IT=-)p9BHrYdVIHUe?r>e5z9sl-SU6=Kx5NF~;F73LkH|M5Osb1 +^!QoJuc4I|`()Hxl+P^-m9J;rOZrsUbTVAN*VeC|3vjlyhf2Ap2bpj2Xl +t3Ol}zs^sjq^`n&|c>70#5m$|R-Rvdpk&ip*fS(fekVhA!^a! +OZ!I1;X=(-@XCk%cab7n0_IyqK_(t-txn*MrCix!b)AJI+}~<`%j-fd=CStnof$YY2W*8o?}FFu|{ZN+=I#V#OH}tuYYb8j~^IYF6DA3apyE~oUi4DHc4@PV&VM``*bF-0qqyJJ +jH-dzvrMV)4<&K>PU9Nf$V}2m;3|XL0dj-V<-}zARJ_H?%rg`qiNApZf1Z0 +$3A%JsD8y++*Q>33-QW_EzV}7FfqwgWR^01)3m*x8lGl0;bR4+2?RMg@7Ux&{BvD&!x;}$;|Y#Dl&2c +ek7|Q=tT}zl9td;+q;gHel}r)FNR_zRawQvO>gaB(G?b4V=s~Dt%LJzYv)U$v}P>rTsW`kc=C?tk|2n +4)IUoSq{7k|y~+=ch||bk8%z3f^q{8*$40%4!y|{ffR$qAm3euVN|@BifW3EXv7;Q56_NEUBI5cS&S} +X;-`-hqCm$5qxD{qVj8qPQOIFKM`hzbKUo +n!kUA&dKQL|1pIC~s?5-#1RikwoE)>+_kY=K@P>h0{sTc+|O@pjC)j>zWXsS?BZctP_cyb!A)1H!Az*6Nfex#!c*(dk>w1f +pgM@E)P$+Ho}pZb21dY>3+%5H`}D>`z>&46hUAE?xPu@g)f^4x#4-L^wgr&%zM>1y#yD)Ab^t;L|HS% +@xb6PFunl7BqpRak$%BVGULFYZniG6Y8!5f4waT+|Cwe7yZ4zK~1r0vkwYyUg&%K!k9NsTRQ%A +=$>;WTIb#R +ms%R8lKA9@Ld0DNSvFSpejRhbAZr$j`UrPUyV~Hoh)r5j!=JYWj=X=lZ)F1(sTowTh&HTQKb{{7HkHT +9j%Z$`i8<-=vkylDHhOF6lw=Lea{8Uq-T^qyh>!2-P|xO94SR!mX((lmACJEUZVEADM{!hxee^+kd|i +?jMdu|R)(N-Y~x6CUvp8nHQsP~L@dLHoHv+qqZ|NUIZ}CPtY`4mt5;2gA!`l7b2eN;lE%?5%AUU|%X_ +V;VOp2vVkPV7k;Sm`dD<>s$-fqVZuk4~>Z^zx9|hnXmE_jmMTBOem(h6LFW-G?C|>j1hK0Fk$&Yuv@z +j6x)ZI=`zwHDjkiMtDz@5o^(m +SewsJ}~3#kvae#s>6~nTeGuYloasNBU{xTy3EGgz|Sy04)=KVJqMnT+Nd7dMKRhz?=$j~xZTnr3s;zq +ZG3)11j=Iw)~7W%mz+KM12}>z?A68P^=H6AynQy`eua62l;@IINI)NoZd3HS$=dZ-W9CB}fVuT;*x_KK1hF6H|hU;1Zgcn)ceusVWJBHy+)?b&X=3s=r +I~vq(uf;9ELgBq=M_tqp>cFiNFQmRIOF~`)s=#0{Q+?n_A@zt|xrL(Do|+CfPNL?D0JFn0Tj(OB^GgY@u@OnDiwBx7(k7sEm3Pb9xqI^o`(z%5bb} +o?b8gf#s-WJ)q&6RSPPTFFW35hQF;Aj9a#T8-oZe?GAQ231$PLk?rLxW@lln;ZY2rua?rsL?G(u{R)? +R=kG&wY}jw$Av$r*!s_+_aKjg?yH&erms=$fX5GNYysO16lk=9J9u8}n^l5~ihr^C`%}%;SZsx0yZX`E-Xhi6hB%aY*Y>fZ}J%T`q*qny +}6QGmlklq;}8Tf&}0wtv2#s=)-$J2bH}M@MWpSv;wux%p*m3sBty +D`c+N`8d`%9o|Nt4|m1A*fOwOuLx#nxqzhC^< +)!f->LbtZk#w|0!IIjVu^gAp#;CX@5$wkFrxHm?;M|(I%oIdsRQ75Z=2z6S2qii{DmC%e#anPU24UTS +4ed;7$#D!^a;Gju3C3JfF#9;}K7oU`F`pjWs2$kr@rq2>6oS06NabcKDn&NR<6xQfMd6GI+^$`dk87d +f`7%6OMI^EV=!@ST}s?(VpI3=Rp)g>XdsqDcK(e8qVwA_?(F3?FBcvEO=qCQP`#7A+6M?Y8BM+`MpV> +snbI6_0u=gmIUnl26<05jC6J8PVYf6J5%3E;y6LaSFAP5Xg$d}nQy>lLqr%{uVn4cNSZd5|a4JA~2n8 +ckQy-A_SdRI6(0zQpl*`h|(VFtbzfg^0V(7x|M6zg*5;n>y}j!`7>t{!F){#{=C>L|jldUOT$B9U1Nj +Hu$zA*DHqAmCS5L%iZaG=m-HkF)DHwrC%{!PT3{=)a^^v^6sns2#V%%BmS@>0C%MQLC$I^ds2Y(vafmnJgCX6yCP^S(|4$9uN8kd(HJ<%CagoYk +Kt@aM?eio%i{8{bWuFuVtAa+mG8CN +niu8YmZP?Mzg>`s?H+r+h~KzC9kseToz9+MBN>G6G5oOsEwx_jRP%oVB;pfY(zXz@R_E?t* +=o6Sj@b-yUniR2posAP1JNFRb{^e-#OQMEM$PvbaZ +^Z#z6;jocDL8)J~{pI<^^=M)6E}T$f-&Y`B|6W9R;InIEYhA^IJ7M~e-|Axc4;?)g9QUxfjiXEOebJ} +V_Q|ea3fM@RQv)p1<}K6B_WuV^O9KQH0000805+CpNdaCB44MuA0AVcv05bpp0B~t=FJE?LZe(wAFLG +sZb!BsOb1!gVV{2h&Wpgiea%^mAVlyveZ*Fd7V{~b6ZZ2?n#Txx@+cx%h{}sFzgXK<9(xh8EW5FSpxL +dI-$u;hZp(_+xqHQg*sEJe@-(mmzy~huUl$18T51dgn62~1vQ45xmtRQlo39{j7owE^B6UiF|s@6O8k>}as-(;%;`Dm6JS)KAtndLBHo5?k~zCQn}B4E +WTa`pN*Dj0lIypv-bj_j*lUEnM)Bqvf<*#b;Sy-&1Saw?a++U$vvCD}4drsRSn$w<)vq=5Q@7r-69Cp +i_uqa5H%v&4xOBK}I4IqK_QPk0JA!LC3Yd%O(EmW?Y$XqtjGX^}_{e;Fz0h6%7M2KGuaNfKI+1v8Rhs +b;d(gOx>R#ERnruxV90934)bm307vPb^H^JhKxTs}Iz~3%2dx3SC}}BRL&5Tz;Ut&H<$LW}=F?6{ +wn30)c+zpX2ox1>s7%)JnhS|yv;6p@AvtB0L`73$2X-a3%yNasUr5Cu{M@lP0kF7Ye~8c|&9u83^Z?{8Mo@Mu#0w$*Y5~eHSqB;>A%o`g1gTJ3F0S%;U3@`3!(;)Q#{VI6Qd%A| +%h@A1+2)&{@6N>{`_aT&dNV&yy!l-l5}zb*D_iIJm%)DpzkoPIJ4?2ZF!Z#@+wf11T!KO;y`Ug1k{(=s>aA*BbOk2sRBc5Cpre4BD3KsjD0WbriLvO3w3+;I3fk#>LO;Dq%5%GVl +rt2C(Sch`f>bl^6Mr&=M4ErW{5ul_ +HL!dru0=H)F0Nm*vu?0Aj{b7|3E>fIjmb#%2u&ogJ~-;)~48x +XTgQuCruqRVYZB3A)I!z_Bzg=qhJpAd#Oaf{PZfmxICMkpZtnO^n3#R=O}UCY*1Vaw$4B} +6fOUL=g9pvh>qRUO_@W$%$8)wYskf7jR;u*j4&iaeqyX7CwX?qFqKnd*fw`rA%qQDM6=0OYpEQ1I&BH +!?@^K=Uy~0W6#fFEmg~#&`1^kYRBUL0sp1=fr<{M0f9!t%JpU2S2AW2W}822^(OJB=w2$|L$zjNd@~0kxr@buVC}A?;R +Fc_(=&*UtF=tKAAo5!eb_@igT1axR_US$oQ4w>|A&k(bIjr8*DYTivxz?8Y>r2QWyGjkHOuirh<0QqB +<3kd71T=EF#}A+=wSs<8PrVpjFzJ^Z6=)rG_9Ddt73|ML?2J&l5Cz;$rj&kv9|rw^Qpc>rk?d!$PZon +`G|dGA9^%^-Br@V*gZu%*xm6KJNAwqDii?#Ig(J$$KrM*7|4!D1B0)zEX+O=^K7;_P|220$HYwE=xu& +r`_Fu~Dw=@@477HAX0%~FaY7X&+OLG#YJvK^hT1AHi?Q1;$6txb6Y|yP*Jb8U9$LW6Zt@JW-|tu- +m8S+E##%pKgq(aaQ91zZz1`e>t8lN@&{D+Wb7Yh5Z-GaScijKt{P2>}>(Vp#*#T=lqZs{mz;z?w|&vy +^SEd_;n~j5;{5`k3zTuUC8|F^0daWQA(%S|Nc>Y-!<1(2xrz9TGp&>b6(8 +fbeh~6{}S(*2hL`$-!kAI^;pCPJ^Nw8;$2`KAHeJ@m1`bf--^@amD_q!QA3xT^F}3H8O-&Z_ObKL9+& +loTs~ElwwHMYIi^!cVz0u%aa_kZvm+rHN{PPu-U-c4XFmX?nML$S`~5)2BfF==nPZP93(u|wQ;KCM=` +cDvdBR(gIpL!K{o!TMqodH*))$@C%7iUph|=|??~`AD`TqK;J9Jqn2hz%o*f#aHyDJz^vhbBg$JHghY +%kR4Ys^s>#1pk>zER%8Jl+0|V!x-vj)80xig5{9E-~F~CDRMbmx^4ktsLVBxPK4hRkkSSX-Fj6pQt(w# +7E7JT5i6Nbtf4dFdN#1^@;Ie6{t4*CVI5&t8)aber>fgV(s90+BCEp$`y5=sK|n&`b=``*{MZb8j#Tj +iJ*JO1JP@^2^S@!9P4$-DD;Jb&}^?DE~bX?YuLpDx{79z#n`{~2JX^Ro;&rJ+|8DizozV;f^0{Rxc_( +5&sVYXff~)@Hbs2dxyeF>D?wSb$qho#8j*J +4a!Q~@O&c#1mmYi-+bFoy%m%J%!!Y0LW0~u7XD_E|%PjWhz{DP)sX?j^QijIjG^^ZU=VZkl?jNOi2Xv?|=qeRP;|gEuoek +p_!0`Oge8Z7FVKPvCJ|CpluHTkxZmta)nPCQN=T20O)k+!CaX%HiN*JHc-p=E61mZLk=at0wlR3<36e!`XH<-FzLD8s&5X7@g%}qBvb~@A}0M{-@D4-&G2gE_mFsP&aKsXlS +jAFR>iSrQ9&;Ac801NXr(cJ*Fo-~x+DI=y5sXDB>vho+K*F@#9$Mz7uCNARwdPLNPip#22Fv52Ks)L0A@|doZ|?o?L8C}KSt=Q;RM}(tO*F{kc~!FkJM67>kbWD6Se`A1^37j#;i@W&i_41{ +`K?Dv@A(g;ezSj|&indRi@P`Ot**CEP#F6+r)%ClB1kd8WT5H(T#I@fM^$q(`(B+wePmLbaj4!`wy1w?f?*0r@^aAZ5 +^eAo~jL?dwx=`0Dv9(+a632Xf^K0!h7yfR}x-rvKpEeRJ_+Kf`88?7#T#~-%PcyxbtEdCs5)=o*v*hrUBkEX(3yUgEO +I*L|aF?~`4)t0&ViW^z#R5~m0Dvos1A8uzO8hu8M?CZ;wti`JCw!lbp<)e*v(6>XtiA^N(m{m-GJ~3{ +K+}`K>nck{BD_-i245{lTT`j#U?uI*bv+eDSsQLX_4|Mn=)&$Q!Oy?@z=wDDv0|XQR000O8HkM{d6@O +clqa*+TH-i8GHvj+taA|NaUv_0~WN&gWa%FLKWpi|MFK}UFYhh<)b1!vrY;0*_GcRLrZf<2`bZKvHaB +pvHE^v9}J^63jR+_*2ui)AUBxMvj$4oo$jylLBZfi`^Wa4CsMO#R;_#|;dkt!c)M_ugx?fYHtBxO78? +qGlsipC<}{l5Fss;Rfhe7@@1u2J)OQfzm1(vd7B%~!qG=Fgj~so;%1 +I$GiIx?X-%ZQ{nLnMD75l)#5(`MFb_GLyV +2R`uWT!8AGF?%Mq{`MN91BlT&ic5QM&jcDdGH^ATSF#t9`F)g(;R(Z05E$JdxiCV4HvegN!?e%5yeNp +B0jizogF!zOR&bzA9DxYubyerk5pTpo){d0Df@XI4P!IT$X)Rmbt8PlLI${L!zt?QD{ksiKn>b716k7 +y53vu{!PTjnys|rpURwR8Ua#Xu)`7v87ooZdqw^_T~%r~&3D%;x2eW9ARSQW4#-bvKc +G}FZ=d9$>Wg~yM7&ad`!z1*m+;1Wc2^WLmk?Gy87 +%oXi5{*j_8ZlU&<2dIvCM4*~~%C(jJ1b!|}&Y`D;K_i&y!^==37>2-<6&a{SOo^J@s<~s(numgaNTP} +R@-x`7-?+rQdT69fm-mX7LA`1qLq#p_DAIg*L2EEDf|chFBy6WuL0a +Aefsj2fRU(hzEJhDDN9dD!4GYLVK>=??}?*vfZxrRWJ!nir*pXO_xw+gz=H7Zg>|&gWyT%GEUCQ^iA` +;Q+EVqGu~0RV_7e5AoAv1#GxaFUH5;)zm!EJGCTePmd=@w(m)@Y1>^{TqSv}bTtAFQ+xz)0)DblRdNG +=R?D&jB74Sdk|mrsP;Xf6&;VD+a!Oq%JG`EDqiC!6M>VjnWt06(kA|* +RMo1(%fhEY>rWmw02`j;>iDngtdvJr-Z(Vr68Z9Y;vMlj9{y{9HicK-s7H(_S+$4lx3H=rD-*})xI;2l={il0VYgX{osTC|I$G#cRBdgCGNfHdPQ(Hh;VKZc-74N94&Jc}Bqw-@a3TeOF903F;vXN| +)j0AFtNOgvAaPiF>v@sEVl=S7{Ibp3PQNNDg8VDREFwpuO!Sjp1GTRViGn65FnG%W0+=PR;v%O_ojyq +)C$P&W=@Y;EZ#h%^q$%<=brvwRHx-clo4WZ({6-Xyrzs-@ZCwFDA$4F~)eX&V^^@?3M5uAYv#w*cp91 +L*Kw-|Jg33TB02QLRE^;8*9(>B|a9VaKII}ESm37wQ!N38iHFAcVO#y>w|iUnm`7{4@`{O2+n^YQJkE%$vM8M<&sTVqx +G-o40M#v9Sj#5U-Zp{yFmOy6$l<@Nyvg;)^PIf~$astFH7gDA|G(S+qo9VDGvB#!I87$;AqoI}tzN?$B2&!bBqS)A0QK)!Y<7&tU~ +i7!vhPlwaVq_WT0nF?fmV&4F+&iMH=Y*D5?cT6}O8v=Da^usB)I`vx`Os-_k3Ru>C7Iav76(ue|Ot;1 +Zp-Zc3hg*X^#)hHG6A{aTl&WaMb(UdPA*%l9oE3;#Dz$8l;(IeCV8@#JVl_2ThwHQv7$&L7$IRd`N+d +vOoc4gKayeX7DVSPw8Q7WY)zR8$u!sy{m(fP>f1Y6tzT#+0Fy><?M`3n+wMY4b^dnk` +Sp>p6;Umiu{_yi1S_C{!Md+K*)8xauS0Jfv>aNTU022u1MFYo2vb&L(wNgEzZV=ubH_cBrh}T&K`h2r +E9$3x1chb*cN*W+*_PjM-pftRFksj8&#r}px{`l}AHlBaH@fMip1+A}iY=>`|)&lp#WC2l3Z*G}9=77 +_CoNBCVE-ZV{hcwO+GTaf{scb)1Ji`Tum5A*Ju7R^m;QPCk)2WCcGp3?_l|lH-O!z|j^8D-PA6~tmzr +T2W{^rB`slnaZlPMFPgChw{$h3k!{H@=Z0Z!V6(08bdy?sx(55?N_;8{#OEcON8UJqV^r-75|!e@wrI +Q`+?io#!LbMa$2&#AG_OhQ9|ku_%KeTrJcoMaT!cM^;*2Z_WR4<@oJ$jcd1Cv$tz^4+BJSNPfuB7a5Q +N$#KV-^Nff7O;qPUV;#4%PcAyhA78OZhPRJ0RY>^J^*>=zy8~|ihPZH5V;~-xVv4VYZgcH8u$kqzs3_ +ZI-sS*@=PRNz;-+}A4R@7QfW4Y*KGbuH-&fr;k*Mxj>OAm`IS_*jqxAj6fAR;jK!vaKb%uGx +VKsv~Ae-afEV&t06^}5!(E*u=M^ct-(~AkjZk7-*A3A4Eo}gM04z+AhGy3_C> +cAlZ`-KPBul +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 +RR*MBT6Zyp+6sp3gkV7|wFPfY@#alEuc +xWOwpi_cD^hz>{r&?)u_Z{Vy-w`$PbBwKb_=Wwjg9zU7F|DJ~XeD?SmKK&B^_s2<^oMRfQ-T1NwKo=( +guU(WDJWP{R;SWa#Wb_|142Ig*{msQPP;ZkafOg8my21$ro_Iqf&DUN4mP=3z*M%9T5?qOfJRXoum~j +al$zGJpK@|5hZ}Ed1)y_z^Tjp4t2*T!O<|{~>igiWn93Xvz&O=PdG&M7(gy>C?D;+T8(7s<_8Hy-=*Y +kF4v%Q}%Ja+EL$!~G`^|#~8ru{uB=XW%rS(13lN~cJ`95#nROU(E2rb6;Vp<%f5#loKv$g}aXnwal6p +qSH|dhQk%Vdz5HQMM5w0mnyKx2Ok#(tVMww`YMN8wx0Dg_rWm2_ZB@6f79-xff!_DZh^CaOga-B9N7k +L^FuX*rB*6j4R{Yz-kmMnIL{>gHLv3BU#+|g;Ma-6CDX%CrBW+d_()Is +vIm?lbQ;SJz&&i=X-=eFq2cXNS_@=XEvG=EuSm~@M+ +NFXoCRMg;zPTk51R$|>hE_Dx1XrXwv7A +kOu&rUS=Mg%8a9G{-o*(jmd26ictgEV(bB2H{#{e?#WxPaX4hYdNCT1_r*+v`4EN$o`gEEQ=EE*0lK~RB>#Qk=U*N4PG~PWDyWoWWSymRve|1c&M@ +V)l2*&GP6*a)jPR;dc_U*0B*n@lCtv*GN%F&!pNMH&i_K6UZ1g9@PJMQIx&{{9U8SI1p6X5ZOMP=HsL +dgG`V@x!$}|7*M)6u4OuNndknvhIYvs~7tZvHXUrbbB!D1an43hl?8BV?1N3n*69$-NMm+6^cks%D!B +q-)|-BvCc-3R;}Ll1pMh>*7`#lnMvU1H>D +A$7_Jw#|y=>UMlyN%Q7U(Dc(S;LhXX8r{%TeRP!L+4zFW{xK(<0K<}t(7%a=H*@d5;E9S(c=pQhvQpR +_vxPNwB8!gJq8FV?L#$@bE%#)*D$IlITBS_Sg^1~1lWGoVL6AXhPLKk99tS*$3QRwPaVY1_9JI|3%>gkWpv^t{F-6NS%Lp^&I(iEsnGkhE*HHrNu(9>CD)FqQL@*-2@I8xu0_InOuZJd*W;~o++3>v43dw@|GuY^qjmY!3kXV@sTu% +2HOIo4`IWKPl5m}cddK{k6#fP3`v-r9+x*2ARB2Rapt--d@bXuK|X +HeNnT|$kB~I?%HO-@%_r-La$bQyj}*}4JwvvwDA91NC16u9{O+(`>{_b{)~dz&?_`R#Sf=8Cs-wwwE2 +TM^+Va!<1n@-u5dgY_{&iXF}488W|0j<5@X3Tj6vOqPci)8kVVj&n9aW|g;wfQYbh*8ZbC!g@aP}N`k +0wjY)bA8mma9hZa-Y +N-eHzlU%BC8s{dL|9^jwI5tc_QF_6;8956C+7}m3teNZ0d(0;%-|sHJCC5xlaEI)IPcpeK+rY9+Z3dZIGnM(V?DubOeP2CcGm*ayJH8gg;nHb<^!exjG6^GWa=Hn#jo;5yTLothA>@#Kf6KlSp5X&Jf%5qsPtsiENQlKEWJIr3SFI16EdC3z1Jj5H8K2Hl +zkprL{RsGSupd8U((MMeG|<*wfs=Fx8#f>> +aBf!K7?bM7Xwoj)Cz&HQ9;KLjtwfC!JZ?7Bwox5nr_Zb@?(1RYf>d#espKuULo7QLd`jaOk$)_Cz+`g +R#h1$8#_Je_$}UhoWK4&Z~%}1H<*o(FmQh_Az)C+u?x&n!2xI5{Nvs%W +6!MpoLYS1(cfAYWFXB}Rcl>cRVP;xv;z72h*X0v4U&H4LLh@yi*_V?yFW(8JM_qoqtMnK?d@6YT?07`g!UCoF6-R?Tx4eOKE4eHj$Wn +EYu1spsup0)FmFDEn#Z?mck%{}3{$%Ta8rs1|dp;t~G5iSgUHXpw>4<89G@_|kseZ|-;cM`$P-6(wkV +g|;FG5!$f%x-a1^!oJT9`B|Jzl8?;Dx9}b#W%L}3rjLy4Q;vn5QznU^c>(37|on|SuA4AontV@EJEkF +mgYY{qVl@`714CyPONF-+-zE?D$^a8R`3as +WMZ3}P;=HEdAaP?99Q#OlGbB|az@KgF{A{6hxk&iuzC81$o$A0(KrJL{A~(|O!(~=I#6&3!fL=NSiQK +ps;&$kFg6t1B+&MMjl^esfj!rE0XU*!D;V>v#m{Tvf|(T==WEP2tv*GB!U^Mhhhy4|_~T&Ce7x@pQa;c!_+)ldBV^aI7X_2FvV +-nHMm-gcj41_ii3r`~pdD8B&r|9ib{12866!a$7w9YN+$e*;9O4!HxCLp>r8myUf5yJJQKQt9j047cq +Eg3%9Ns;QrDFV0@j{VYjRd9^=q?;N`kD_$_Saff@RD+_$h<1ZvPUdNSDDgF)BBdpJ-9Zh +5cLbZ@yeQMARv(KH~dD_0%zR^n*KqH0wjcwUu-W>(9kJrP8#tC@fA#9xXJNuFJo1&ssDFcQc)r5}wza +4us@KLRki4ZNV~OlahBA=tY|f1mapfX9J)vk@vp*fCgl_4CRY +`Vf5XAdaEU&z8s<%qFwt!))TeI9TlDoPw!$#^ +)s({8(0bLWn((}7h*;fE$dCMe_i8>;a8KVKFK^FxFDrgHq3|M&Iy{UqN|{xs!}!>2&EqhHb;3JSHp-Q +ySZ!*QN7kN5H6-7AZW$R1EozO~@@F)L^$L}}RR&ZQ~m^3#}hyYYL;Nwz=}fc{`KR8$?JKMlJmgUJp}N +G;tja^lC2#0rj^e-y!+PsDt0+<&$oMuJX!I(1{F7xJ*d$Jx`SSOC-vL8DN +Wi}(k(H${9-d2VyEYz~4W1ye>#b~HxK?RK#!EFwaJ#R94UFi9>NLW!_3i;J|@^*~}s*!xCOh-X(?xYfwNaTLQ%40+!KUaNxcY`FU1T;Ko)}2wEIg47EBI|k4CD5G;?z~!*Bik5rR +0>!%}W#?*Ml*^c42)5Q@(*llPCa8eijrmdDQn>U-(0EFpBqcXi^P^XgpF03O~UlRg6Y9KbGf~m+~*9q +7h0eZiIvXh{x*xNS&s7Zi5*o5){Amexy=1>QxZ1Lmk>>ikaCayDidK%{w{& +lwsPnUqj%lufFnq`!PI?q@wM*uGhfiFtFaMn}nSkBgC0tR&pZ(tuPG@2;QR>2{!X8gHYAxL-jqT__MS +}LOr60cI}0<3$PEFdp$V?GE^v9hSZ!}2HxT~Ludp~pAr +eQc-j@npPP%fWjg%u1B<;tI*&V>muD!LrA*gD9duMF#8!QR=Ql#U;+MbtZW}X@EN~?@T(WWCKErQ1_2RF;hPB=yhCn4OtEJ7a^k)Qet2yN0BQA)IO`{J^fzhg`%@DIt^>I#& +kFsM??b!z{gFQRD!Mq9Gg1l!PIp?~4k!Is8?Cu^zh$#aFPa_85!_w`{|ofuST73vLn3hxv_p3&cVnM- +tZ%Nc^rIR~q+mY-9I7Kvx>L58`5Rb0qoZT(}h5fTUe425rSk#0V8zagiEEnI~PYELg0hgqWc2%yF$=b +|>hu8)!&kR#9rxS+B86^f!oA0w>7kg;g21B1WL`2!Xidw2F!*N?MTiiLF=n^q86H9mT6)>CK=w<8Go7+}$>S%aoCHZhWjQ*y6sfS +gQEyTK=?`AE1(6zd1ANsYP4DS<{xS!vL&%ziRyx~1h+D>AL{?->7TFRsQ!C0yEdcYxxI%;kl95mKan3 +c*TosJjeLLtC5sfWH!|xe8yT*_IVhX2X`Ds)iaMVY^sQsm~du%E)Xb8nZ2Xz5`s`*f@VPi!YW>leqyS +Y))pDbhoI^B^p@F)g2dMEIP7j)?=aF09u62{2?(W_PiN8m~yqf%j70_s|TckIlt!GxDx=S*KXmaYWRr +(wlKt)dyE!hUek50tZfpYn&focP{ +dt7vdq;fK%rJ#i$0oJ7N_X4vQQ6H(x(!2_{dy#=E?7||I9^sOHpEZFaS|HF6Kp~&8`V&lPB4Wpo*2{B +QctBb~*=c$>5?A~Lwi4-boT)f2v6=H?o|VJp%UXA)dsONDrjF+InRbKpr+y>aJ1??3+Xh<+ +vEOeo^kG4{FR>6gb*ReA?b@2eOze+=21dAbjS2LKmEO5_oPcqRlAZZVr^K*bZFpFy`-92o;4YGauw%n +7N=>4Sz2#;xV?2DK9o66@MfV1?X(7S=03hDCYQusv0V!l3YFD$E9zO4v513ielQX1c(x>`+)WR2m-+ +g|oZHNYTGERan$p#!uj?cgi?<(jGcx#5N_0r$sFc$eB6g;j^P{?5}Pa7q2=ki9i +*p--5g^{}$lioS^wIa`Zo+(r2*WM0_U)ZcM!g8D;?x^yG)M~;56B8EpWn{Wl5?vtTe;j-g1jN-+-+anO()k^o%{c$c2by#X6b(pPgl1EK$gJavb_E_uEM2v^ +s{PPpjRrR#4_O^bJrW!%6yG=B-Nr={)rX%HMKLGfJ;?-s=L(f(^lQzdF%F)iO@~i;_Iv{t*@oC7eb$S +hY1;f3VpheNSUY+SNshrlzf-I#SUlDj41ORs*F422;3EMVZt>7eP4nva1s_-<9k+b!cKfnh;24s@gM5-|D+gbVp|T0By~_l5=sTClkd4uXn2X>c3a?nqIMH4)PDZ!iZU^?`& +++DB%obMV<+wutx{0T)ocwwIY4qdhXdm$MySu=wHVQ5AZxsCg&=35Nn&JzjuE8N9{yoY?-6Ia~LWApa>n{rMlE$5n(Z(H$a(`;*uJ~Iwh9QSoik#!KRINwl%SAW-XE;6_e_@4>kPr-BQl#sBNksE%CqU< +CjcsnM#YU;m>HZj`P@_H%D4g$$+{5hc +!Jc4cm4Z*nhkWpQ<7b98eraA9L>VP|D?FLiQkY-wUMFJ@_FY-DpTaCxm*ZExE)5dQ98L3juxZ;rYq{Z +P0Nu%J!10BcwD<-?E!GA&UK8(CCEDvdX6zkPQkC6SVxbi?$;7Rh^fFAwjI%4@MBNs>3JsacW`zNRqWeP)N*j`AXE6fa~uwBtLb_7#(}S&mpyMblflWwM2m{C+l@Wh^J#hDn*EqExI@2?~WdFIY); +Y)N1NZ3-0!w5kf8QpH92M5KzTW2tIJcfn#cBk;`UbN%}>q7ik&$o!>&JpKrfb0Ts=2?9qmy>M00n(j! +ul|jMhBgnR+L4Px`GoE@gMg +L2_aoz6cAFqk1+bw2}Tsvd}lZ$#sRdT~<#_B{{6Pl>p(V}4k$N$2Liq#}<$`pfyni~K@%Zz+!gk +lf?^jE=%!6X`!DOTHB@!5x$7Z*lHxg-U@H +Sr{dTmouQh_8~ofBll2oSZ&g5-K%-Y_`Bs#WJ$lo7vOn&&da7jCvM5^XW6Dj;0Mz0}0b9yhPJg +jbvf>6@URgI0zzcloe&M_gJH~_ks1$1aei2JDvd`m9R@w@>FEZ?lz)KDKH-U5S+(L3yB^!@4@`)>Z-m +f+e2ljA(4nN365kuKa%r+91)KP-BMNWd%0dVVkN2+22`e;2mN|>pR!7k@RQN`TrWGXYXMf-u~)1cTlm +-&m9j@FBpYt68ErIht%t-Dz5D%CvyuZHrJ`lZLT$=Y&nk9r^3Y;M$am!3Ufn?GPkMagw%Gi3)-@_Wer +~O6S2&r`u1o4XMZ&ckPKtr6zmJdPw5P3QdIU~tT7VN=NZYUqU~Y9lL}$4j +TqU8Z0{VeZ|681r4}Q{z5Ub&8~TDc^2At)TY9U<+3c(&qQY}Wi#{XU18{g(lPu&kOvY1ntW$z<62e&l +JdnKPiqpbmAMGKft3kI%>rKp$NrKChB$TYkm&6tBti=a2oy~Cv=&#T +bjrE@XL~Bw^{`{+(;rZA%6B6j6(7rAV5q{Dn18&@itTP|$dZL=DU@}Y#xioGX7YNsFhKMT-w_5+*)J4 +HJr;(PFkxSw=$!V%Yz1RB?QDji?_mIW)j$^Lk^P#D*w~$D3$bSvwY^=`Twj1oy0d?p|k6X64lr=e3lC +!t3^e6^Js}q4y-3w$D(uc$CWi&P3T)a6aI=fg?zTU8!X`Xdc2+>kD>Y!c&9oaqIfzWC-^FkQpLIf)kY +-k-U2Q&1Rp$;$|;xgR=se2Vb?y*gmL^JJFuo%cglT~!`fbYnQij`r%U=hLJEL;o`(4x$N_(MZ%c-cYN +u?_)L<2&dUpM0*^cBB#1c<`qM^la#73>m=}z4vgy^Z+{dw{ekV*I))@ZRw0ASqq0}TrG3}2XzS+0R^3e`>p6sC5b9h&wt5WQ~EL;U_kKo|U`t)A2(l)-zOYsjSx8LqqUGt1?bd!6qBYvb0#%Hql;`2W=nG +XJ-(QG&P@6G1WBi6}}T_&deF0JExF(nUp{y*G59B+T>FB{$xy!asmWaw1D%@rHU^-c?%JQTCl+bZ1R +OD=0WwX!WR$dQlhkvK_u&44 +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 +=YUEd0)!h8~e +nvEjF(2c*cg+sMrZ9Fc3)-KcSNP)X{=59}p}?&Ar%>8_D#!v-LN97|RT^4weAq#MWwrJ^=sS$Wl~CKE +(Id~TAuP~>sXcY&Z6K7;7DIt=)8r4H7^9Ky>ICOw`$@Eg<-mA^ekbX!T-HWam^5AxQfx0biqipveyaA +gZMxA;m4h>>z&%$G37g-KG1D!E6Pof%Hjl;w?lF?;{Vq +J<=Vo^~#aa%sH-#7JE}PO7wm;1(W#ln9$Ej)eOes&q3yWR9j=OYouIv%aK#(SDM@6kGsCSSW)(->%dj +PBzk1#gCcxRbXtww3IB~W&zF#*j?`v&hbbhwq*y}k(Qiiuv$tNl+}+KPf`Epm?ckoZP`Zf#qd_%6l0oSWBSW`Ton6M_~QUXK3t<>`xvU6{tkH}Ti;*Zy(b +(IK^LT7_CX{pvJ4k7=JQ81+Mg$b{F}*wxxmn06Q21Bppxlh>J<6X~~5jt8PMBgxjV7pX?$IK{I~V=#6C60aSI3umO +kC5hQTOw(jWf1>a9lX>GsCo-eD2u +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 +5{a*|($}YUne!JjRE#3CV@61+he@ +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 +hj5LG+ +Hjf=1({r9^#|W^)#EX&;<|&m?e}#i>sk03or$;F%CvqNw%;GO(=9!qc6&Hthu`U>AN&1XiTnFaGl+I;Y>!Q +NV{h!}6lU^4^S8zjEF-{(BjwiK_RQ@g;>C>y*3*+?m(whA>!#iiV<}hDq#Xg?bJz)P|ME^saei4x-m_ +b5+9|9bP^rHpwKS_J*f4fNgwx~^Vyr5qB;?m?`NfN^Sp^9XzAo(*-Ee#fu+7_gHv9GYyrW_-WHjHYT5 +a2d>4>LI;?$B@3j>lB+nZ%ibK0`> +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 +4>7wUbi2;`?-$W0v!^ynE@{jV4pCSreKLK|L +9SD4APtED7_DNfii*h46me^fITjij#CGt| +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 +K +M3IG7-A^-qB0001RX>c!Jc4cm4Z*nhkWpQ<7b98eraA9L>VP|D?FLiQkY-wUMFK}UFYhh<)b1!dlWMy +(?WM5=yV{|TXd9_+?Z`(K${+?e!G$?E@6esE3w%FjjxZQ1v3wF0D+Fo%7BQR)*wt1FBEh*XcE%v|P%# +f6*x3pQ{@*$DP;c(vg%nX%t_9Kt?h0-Nc8+NY~p+)jq#^rRz;*=Z1${jD6u5!av&fcBM9sGGQ|7!%lz +QtcJ@z*QH^MnaJis2ne;%vsQj1s +?!d!m)>gCJt{&IO%>eI~`gP)C788Fj=gRB{uXDiB;OhjHXZrG}RI}@K{QIzbCsBX1ZI$)7hS$0}|9iz +_fE542uSjMgTS)9x#DUK2Q#M4T+=ets5^f)R;0lqjpJF~tF{hPqAnWdTFfK)lxC+BXFiEJ&j0Y@33ag +HfmJ0bdW_CpRcJE6g!2}4dSGC;m}xFYYmXiMW&*?72~zVlG^Yfn#_k&?h*r#kNYhCTYns67^{* +R0^H*lo^q3=BpLx-w>bL=166}M^iG+5>>6!6ODi^QfXRh#Zt$1+a4K%sMVz*V~8B2KFV?j3=M>i%tgx +JAY||yvg^*VTpZw#fGrJ6U<}KU|T`GtoG!?h90d#=pwjd +COy0~F%`R@Jgr-;41{ny8c{e1iH2WPxQY{0wVx^lIeqUj>`4cA)(f4s +}W@*35IpKFDp(%L-g5P1lPxt08YjY+aS;q9gEy7}!>5A{!04!ZQE}0YiyMYCdZb^U6@PNZmafC;-=MS +!$H*EYzcZmSm_YYCL1#v+G7%5|c|{{_#`@I>6J3_*{q>y#!}6Q()-pM$m|DLCWXJggtL~&T4)&nD`$T +r&_799(SPeLs@DG)(`=13@l>{=Kd@n*wD{;6LC4fZCf{3xx9J6#rPO8`}?iR#lz5sc%ByQ_dm`$<2E} +?+d&h?mhpJv!V5ecSwM=&|DIrhFY|yt3_X>EGgBF{(~SLXvG|^;WGNpOr^cn{?1N25a2RrNWVnRI0Qi +*JXo$|uaVOyjZ557|6sZtfcycK9(LoP*;<2*GSN71;K@5bOHAZ5w010t7Q23Jc1?-o49>yL_QEUSgp> +b|{9s-jO#R>jE0`U>Byn5(OEw3M%*@g|caS6MU-;vDw9mi@Op<8-hYdIHCtM6P|?qva8y4QBF +oJG9J%mnujrd4j&Ec4UH}IK!TVZVzL@5CLMmk3Yo|Y!y26H(kEp-5Itxwi*l#$#bN)Px_0K$n_7=uX) +xSA?q*IAF&Yuf}kVjW%6w*VfJqjOTv0dCG2AK#` +bnKib5Bo5azlFL1&#hhI` +LXQCHqnJT#Jg(64U)6*@0>k=t5j+(oRGoE6USk_B9dj#A|aW+#E?R9$y^R +jLtV1s2?dEq^ctT3^6Xq^}t4mdtQ+1e#DMpW^28brX{F_W#Sr~Wjq_5JX+7$48O2Ji6B0Z0$gM@vE&< +=iwnv%8|W|9G3=reMea{TLB&b#st@1lKs?1%YhPS6!H-?e5U9{NMY``1s2_r0Rmr3)Ba(Dal>?0d)*e +nm=5}m^{SukjLIhC?&Fw%cfJXwlq3!HMYq#D39o^Yd*89&M7eJ3$vz{X{peVrs4viR72Y2!Dh6O9Nh@R +d&(MCI_Ch?LAevtuqB4zijH&*-rhki4Xp||F6IVwqq_%b91u}yeA9^LIKA=bFXZ?&-Svwvbl1*xGgk7 +w?aHXfegWy+NJ?%go3vPTedZyYyf>>N!sa=Obv&CLviQ#nP8MpzOa)&3Qym#TS_?24w}AF6`Q8VSs(`0=b=~Vw +z<%>zcGPP_kgzx0x#p&bSVtMg;1&`6z+}!uM;p1)*2!N%L9L7=UHZ4@5#Sv{U3qf3RvsB3}cWLd19>nUHsEaZITUAwO0c!nja*g3^(;^AP{Yp|)?@s47R~!}q3O-q@29S(hB +c(v}GEG$!LEa*)0|$5Xdk0I>#2M`oOIc73>&Gay~N`ce=L`Dk@MR0TRlji-z#-Pn-BFpG6kaj> +BA7>sWP3`7aEGSFBkcWMKW;;kw{NE~!o4Av0*>m!1zRqg +QtzQ%7zSAi64Z*yFoaU=>e6|vic{d=dNGl-KAm=;x#nll&R$crBBiDnjEs)KBQ~{#7ldBDuy@|a)&$o +dh@`fAdpxE}0GCik!B^^y-uptHF1RvZ +UD2-%x(YJ{lj{!nwm4B{FV@mmFz9e$={Q+rqIV1qu^kpv^qpWv-pYPvySPq*BW>rz +kD;a-}0_K1D1R_zCPMl@(k|gYCKkMQ!nQ{~B|K{UmBcjuq{p+236-wpZ5Q$ueFPbl>e6;HNIfVmvGME +4$!O%myPHYe)*1#R4C#+VC(4UdLa}aZEBC3~eqTabyp@4dXumE$>+0bDO`vy|0%OC?zLz1qQ^Aj|U)bG +}_x5l8IbleG!7kqm5Ztmn!3wmhCr15$5l)K#0Z>Z=1QY-O00;m!mS#zrSWQ|;9RL85bpQZ00001RX>c +!Jc4cm4Z*nhkWpQ<7b98eraA9L>VP|D?FLiQkY-wUMFK}UFYhh<)b1!pgcrI{xtv&s7+qROw>#x8m(= +qj)%1fNIbCan%RcxivJ%63#H0|YiI1~w4tSOQuNZWdE?tj1C1wewIlI3_Z5drKj7K_DV@xkSAIQ*OiV +UPt}uvMJ0#}uBUJLbhcXW81#Sei$I#Sy#SW^4F4W^UxOx5MFZFnGmI<7Ar#ck7H<-iRH)e)IZ!`0oey +fk%J3n*gwQ##0eTgI553&C^XFL;z$0!PY$G%PqT0-6-S!n5|OIS-fK2+D-5Hm}N0kwPgw6vv`@gL4>T +iz+AEgasZpHfslw-*`u3s;>;By_5v3uGC%h64UaN6!x~pX2yL{oHD|+x!WfRI8lSr%&;xd{R2Q}-0*hLZ)Phhz3-cJt}#^9=)t`Q-BE4|esDO)mdn|Cn8#joI|~>-luCU{`Y +>HoLe!pG_fmc6oaK`D}LiEBgSLmsdCJe0DLr0kSt&RHY&|n=X*t#dLo936hf!v-8=_A7dc(advZwbU$ +9r*@RtB<~Os`&*zglyZ$`CzFJIyg)<<0IlKHghkB+L)5{wh>V-Tu{S6Xq@o92?j+Ftm$!BQ89JyqtSJ +!{cXTN^BVV|zf&!&+1VG7($KAcZwWze+K^U3UD%+4kklV7KVbp>>=g$O8lWM4i_F%#>Yz`xU*+0`XB= +Je|FW)8_Qv~_+{Ab*)Hreijl&lV__kMpYwY$gg8aIT09U|voo9Ta-CZvX_-pBK}DBs-f<&Vkwjk!3?Q +xIGxGQczjPS>;)ta>rr81~maRPQ)P$4@ag41C_tZBQJ~NQ0R;REKMaN24!@!IMr#fEsC;j!o^_VIBpJ +uIEC6y*sx)=*iTE9^-Dt5&yLf(pND|<0Og>g67P-u=C%DA>>;%0v*4>dBvT47TTpQ~6`Uz}811VSm_1 +Z<)Ny-o{l_to0M2YpGKg03*Vnh~`I +_qx|BPMIvDTaiY`LTSwrdla0zMNjmIzD<(q^92X_{=kpZ|yO4u6TQJ?Mj27v?l*5>enBui4&eCla7Km +8CTcc5t$)7x)Wb6vGa|N@?G)?2Qit-91^gT$ZlDShxO*u(gKfc?G){k#%w0s`2-(digEL`7rz<03F!i +>?2P!a*3XX4l03iMK>EyD4PZV`fFhV38~G7<2riAw|IfIEuA&w1@RRNZ-F1F7S6f*uk9HZURu)+sTbgLWlAx|%wQM)Fw@37Xd?cYcz3)+ +1G+F869W@msyxhapdkqdl5zOJt&u?*EzxxW-vs`-I2c)e7lJ1 +SJ{Qax%zcOhU!a?-M2%o~;A?{Us!>V#CVnV@e3V&`zyxF0##5+S2NjT($uSzy7#)*Ld4Mg$BLQqfYSf +of21N&6fJf$ENPQ|hb4M>ir-a~hNBr^RGL9;pn!~hd8AK)PBfFqdZG<_u7oMhJu&1j3w%*&Nby$h +pXysIl;*U&2amVT +t{!Cd8&pxp)q_Xe)&)moBvasM=1XE142FPZTj(=DPt$;wxq%#G4U)*~ZFQg(gY}tX4b_0gn|#0=tcOO +Q%rBDdgR!Xi;PHqx_l`+NjlKSHiBN6SW$$#62O!<%ZXnGELA5Y~e@$!9f~l)&HbawEuzMSswpQ&DPQf;dN&~`xq0p0YI3Rvb9>Ep*Iri#hM77Y# +c;_b_Brh#g)DCJ8VgbreawyAcY)VDV&(Er`K;^AG1{u`9KoU!`OvKSR`k9$S!f~VFQ(;D@@eT6EC)=> +>uP7P#D708VK6RQtKkxO^|SJiw1QKT4;q5tJCB0)S#*`_fh;9sbVxE|NcLtHgqtJZlleiG5Z@V97Cie +j0(~0>3lSO1x$;sR_gp(vif&6w1@D&#)ZWr)@U$<&RT^b4ceSTpI1{^2li`w9b?j_y5)o6WwyInZB+m +UcXf`DaNRTA)!2p$+1>iGtr}Ljb^qYo7Kbi%1HqXbWmIepX+%h62Y(*aC5khKmFU54iqvpc5aszTp?y +vd*4H>9Txb}QX>F^qWO!yHD_*NKp~_`2gkQGE=<`4X5$*(f+@e8Y_@T9RsU!>kw>e==YfgZUlyc$2lw +-E7t!kLm#8MeKfp8MnyLaz;dO({_{F_S}S(<~|2XcQC!F}D;v_?@R?Q)&|1;990d#qrA*D>wjf;7P(r +YUaUiiCSi8f`&lu|QVl@vZ%i0hb&t?Yke0#jnYrYUJ7#g?HM~Yvj7&$OYHUP)Y>FO_g4G%; +Nbw{fFa?VuDJBZ;o6PobhkDK*03(OlU@J$RFo#{MmB2Jo6LFq;%894eAUT1i$Q4E2VBi!p;7R)&s(o8 +yswIVxEFstY*rB(eownH(y5p5Z5aa +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 +%H0g~9E#X)? +_Z;v6+*a&Lf5@H!aq*E+ORsdeHnT!>M++%PiTnCVkjuEou6W1P*jENUycAY89;AjQI2Z@bPY7J%xq0Y +V{-;J?KY|WE4+cgWS|L8nN7)pff3}tSiISqzZ8m~8gWI=l+qFPc#Kkd$t@vzje!r2rgqKRL7$_$k=!jsf`+`T%tEroj#6@$S2wD`G%nUG7m5a;G=Fa{={2Vu_Nct6E*XeKK;&_*qlbeX7^5`t1uVq`mBq208a+81eFXmmnepWBsHAcS3O1&%r +gO6=H8+5B**e}Tn<5;H|Zo$Me856JB_bP;k_G`9?N6uCc?u16O2;`>#X1|;{HjwZ2vN!TwhP;&SbHe{ +d$QXd0Esi5#))FpC@WT`h0yhxtT5ux$81XsOJ{9hc!Z~DwYg? +lB#bqq?WU^Lc_qpbYy1X6LdHEL*)gA;@S@8tHU*NWn5OE7QUSd>7UA&kvgz{jLW(tbR+sU!+Ua>mU!i +!1wMCCeZabI+BWbrm5uUs1KLhoL78&Z$ +gNt4gANVup#tHB;CfYLm~sSZ+(B2&ILa0iPK^5vkUIB~ZzR+{;#h%lCicp9E8)RE&*f +#V!ieJz6C*V{tiE*C-9`;{JUtAh*oG^u)Eh%P;1q9s0f!84l40%Oz^0s$Op864GpsRrC5%*rWWwSXE5 +Bl}beS6+e|D^ZgUVX`1x(I#yGq>9LoBRR)<)_2Mv-PV0oS?G6SXbX)cAOdqJe#%2raLD9CAL6GNRK!~ +WP65V9E|z>m?6aBo7Qg7BV<@jd0d>%Eyh)VMhH3RXc3Lr^&+kIDuY+wLE1saJ%7h^W`Vt84Oj6MCBnh +|r!yrZDlaPh9LnEtQLa47UwV3hd2WP6!FNSI1MaitvZ(Sm1lGS3fZ +(~g;99EDk?t!k6>DS<*?0Z4bUSn`+r>a%gEh6m}KN_3UvJRw+B_&X1v#zV1VX4(OK#WG!Y>KY=DE)6Pt0K +8y8H~ye1DvuBX=wL*t{G;q$v6-Vg>M6H;-75yKSA2+!>8k3X_s=A7d6_!Dvmux04(sBJ_L6!~%>*M#G +3xlz+D>N2~CC&H+N(JF$cmhT9lr41swoXfXNDqf +PtfWHy8>IpXjT5B{u5m|E}L~ek*WiIbMma)9mcL{l=RGbyGSm~#P=EW71SNH5gWp>;2*OxiL7U_(O +DAb4Bd7%!1oQPsgC52!4c~G~8=yy0k*O`d +fM;4oWdZ3@x254ng~_0RQEdUXhpl^2#qD4Dp@wpJ)FyE{V>UbNYfzoV%cU)X8l8^cdki9sEIvm6h$Lf +v4TCI7O^yuTxUmP73T;wk-zqLFj|Tq_P)h>@6aWAK2mm&gW=RmRXyx4i007JZ002z@003}la4%nWWo~ +3|axZdaadl;LbaO9oVPk7yXJvCQb#iQMX<{=kaA9L>VP|D?FLQHjUu|J@V`yJ!Z*z2RVQpnEUtei%X> +?y-E^v8`j=@UAFc60CeTpCUP{q=N-UKho9=xb;5VFbC29r!kC%g9T?WQVJ5H`oj%=dkg=lcfB+u?1Nk +t6Q<+nYKWG6zhPhYN|b;EA%h!5J;I&zWeu1>aO#&TwUu8Sd8Yjry7s-6j3Y(MnJf&ad0Ww|Mdc|_6kW3~H8(rFupkmyvKuG+uwwnMwcx7W=VP)h>@6aWAK2mm&gW=XBooEroN006=c002 +|~003}la4%nWWo~3|axZdaadl;LbaO9oVPk7yXJvCQb#iQMX<{=kaA9L>VP|D?FLQHjUu|J@V`yJ!Z* +z2RVQpnEUukV{Y-Md_ZggREX>V>WaCxm){cjUT5dGbM#mG_QJL6mkX(_doN>P9oi6#*SiVDB@q=oSLd^$JIYq5|?O65}LUKvfLH4D04`#C73MFiHcTpscGqyzM;wFW!CTad%Xj?G+vJB^;|hBRV4|(m%5OaJUm@bo>QfAshuR@!cuMu{%;{&^u}v +-@Cakh7nPc2L^Sul9v>eUCU;rf&Wyb|K0R*CWplr%dOfwMjrC+@uQ#3EO6!otbV_G5IL*Gx9%hdQyJ3KU- +>Y@Bl6tXf@mAxi3D`TN`u=11O +O>RJr$Wbg_{U1Ww3?oa%E{>OfUbd;EF$(1*wZ7o)?R!bHzz7t`USEb(a_3;P@$S+kq +*bu=zTdfi7hEwk!#wfcM@9divo!)LBc~SzEZSP|bD_y-x$#Fef-bGNS)d<4(Q|T3dn?y$PdYDVm2z`gbWGF+WL= +Y3nAkD|wpNm_3$CamH#aNPLV4!N3@y^RY^88U!z#LEZV+s?Evr!Ir#(V%_5(*iDZr!G9lVsLe0zzWUQ +UP^J*GZAfWO*;=xN###nlqAEo*L8WI(xq)77!r8tl^Uo+>o#134sEIG+nEa*tC;xwZh= +!AvD)vLb_%Hj;wxFh7q1zr%LcLb0ViBxpG3Qt~&JPpq**iVcyNg33Etl_Tash&{N~XnD?PO@;9lRJdb +m!@|uPOF<^;TIwPhy#FKn_@HSRS#_eyKvT5bO8I#*_^gkP1}Pc4t;zm&H-T@K=rrq`{!eA<*ukq~<(K +LNDCJ@%ivqVfY*ZHoIzMV^*0uAdT`c*CfJcoXCXOwT(g^uR;$(UpL)#Drj^Jgl=j1L00&%ah~uV@L{S8=qRz6ewPbN1*o}tB(T*yFd +!>oe#_h3D=LZl}q|0I2OBR%xb^5rB +=H$`MJj{F(|t+$v3kwS)EP+}I_ +)f+WIU4rgyK&~$9d&1aS$9xnik@$KgsooZrK~N5LdU6AUx~_O~s?tQPpPi&bStg?D3-e6T#S7ZliB`9 +*m@2blMZ+J1W;?#YHi?T0@>BC{)CG*$4Sjj5`&V6V98^jCS2I!s+fHv)N-@u+_fYJ19o@c5}N2$K`B4 +{R4XU?%n>B$~=zD2~QXXfSfB#7jXdCiEL|XvBX&nFH6ud+uQGyF3u65^7|qE+e&_=qV3PuD_cpOv?o% +GlqYu^U~kUqx8cyCrT*^JRT$~?pn1nhsxUR+$vJep2M;OPexYC;j}o~Mb;5(#XcKgrraKRLH&}rBe@1 +&~zY=5X6?6Q(&)%23gZ6;k8jMpsb8b1nGIA%J-6p`-Nm*fPUCAJ!_)-a-`5RD60|XQR000O8HkM{d8@ +Oljb^!nYd;?X>2cFUukY>b +YEXCaCvP~%Wm6147~d*7U;nZVB`;a2#N+VP^3YW9C9Mo5*05jiCdC#lE3e6w3OwzI*BuU42Rn?^$wsN +bz}r^p^wDs{7$GF6=8~3-`p*++xhzN=D879Qy;yCUFd>-Y+PhIh6YQuINf`7qhRBd+z#Cy8LwAuo^@T +*Fkr2L1{)RxP9QW)F=A7)8UKzbYN@?HAnegM$TDY0q(N}et&LE3By$syZr<$s%B8QWe*dIF@m)8c@!d +@Y)%|t~wiP_Q{CW6wpRy*ziy$ksVR%K39EMVsW>a@Ws56_S$~m0p9+T3v)}N-Dx)I%L|9jepKengZavF1?E%rOUcFw +Vu+}ORo$&nQO?WFbm2O7N$w|dug*VODhcf@3UEu^D8jS9I$xyz<}lJGVJ2SUx~$$jas-lL+6)YXLJ7n +P)h>@6aWAK2mm&gW=WV>WaCwziZExc?68`RAG01+f6u3%udrc1p@*%hNUW2Ad(0C6AEEX~?Q8s +UBQ6MRMeZRgle9=qn6n6m<$Kr6_pJzsuRy)Y^sL$qO5AHcHAFJU=}=+&@nE_kuST?%mNsYo+G^?_fnjD<~B=_0$6YE{p|L!_&*Zfz>4_yX6`h$!w+c& +Nx$a1#aOJlZLwoofB_3;=ehGx7_d|XB@d}nnk@4HP1Q=L3#9GGAVfl!sLajYdjFD&P%PDhL;IFN}Yx0 +5W)|p;f1I~;nZDRT)59aI3~R|u+%LFQ2|B`y*gA5L8D8G*{W8SutpiF3@@{ZQ!;OuW;=JUPshBF%$WI +VYi%RNI{S6GeE!&JUV&Qw2mcKk9+l;D_@o9I2PwYsJ_|E+4ZS%CECG`Tb~K=!@330AbgWijl~X3Ub#X +*hutneHC@#&5V(V7ID~hw5RPR^W|?!ittzgmqH9* +BGeA>s;xT(W8dMg8F4llP&LA51$35SU9>d^q@!f|Wjf#~XZ$t_Y0=>M*QpN_S +s9P0ts?_}?%HL~BrX(=ZkUwnz{`BYL|(C-kjEsA%!A=t{@sN~^A$Z4b){&6o1n5aaqT&5xnoO=_Mr4P +Aa4oje{*br6J6;Nf$Xr~eZ!2cah1!u5rH++0%sVu%?TUyj5*pc422L?dQCnKO6Hm1CS4m~o+;A6DT4? +HO*0G1B41=LPal8FUzUF??tUK>f>mC?9vh^VMk|XWs9-fZj{w9ohTfpPep&Quiz`ojb~2QMP_XPjk~5 +~#$*akQFu{YpC<%@Pj?nFr@3{1#7%B6vd&p*tB%rYA|xLJktc(sPrWWcn!2Y(K;weC&b8A3t^4Z;q50w>_SB+bxetdiHPxYg9>=& +T7<5Ao1X_7xiC +KhckKnC|BG$!1k@+JpR7^+K_RTV`_6>~9>y^=Ui%q8U +~kxrQQTF;3tmCq1q<< +X8rNR2~6W24)^YqplOU@X-@QAwNA4qvFcHP|m0lniXA*ZCMmgYS7}es#4$Kif63%kIi-*?-mHs?`!V_ +aCpCR?4fJ_wUbKTDKd6>pw-EDZRN8#@6aWAK2mm&gW=YJ!ygu3j002-3001=r003} +la4%nWWo~3|axZdaadl;LbaO9oVPk7yXJvCQb#iQMX<{=kb#!TLFLGsZb!BsOE^v9JR$WiqFcf{yuej +<@2pn%E?G+ose>Zm36MXSM?r#DB+jQs;vfrmZh+>~qgO_cJX7uOLZ^Ml}MH1ZY)rp@ +5{4myN=tefA0iONqpz!wn=oIz*Q79KH57ifWSGkZY8Yr1uWxd7l=Gv+q~Q*~Q}9=ktp%a18$S1FeG`i +;^hxJ)HWEdmT{6`kcrg8F%`{6$qgI_sE%^O9 +d2yUmNzxLNjAX0U=RCG-v)RmkU#@gGS)(KrT!40of+(#71paAID(Iv~o`uIX5u}1Xj@W5CFJQU65)Ce +wI<7pI;AfmM%oOD;wkDx9@jK2jDIqB2C6`X^#0gjJ|a7lt5rDQ0g1=pjMVigcb{H-oPDUIx +N{_D^2f=XZ2dGI13w5mNfmae-ItbMjrc`4|2v!Z6eVil$L8eF;by6k@Aj&_iU9n+AIx1(;6LrwFkK)<$k1PVA8zgq@n{;JM%$oc)w}Gmy`aVJ!PIwDQYIB)8BT= ++ro8ibw7E>>-2s+w*qbSz5KJ&;d+Il;2tWFB=Xm!naPGH^`QM9}^1 +mWw$2REmINSlP0=EZR5`p@k1KU`5&rnMP1QY-O00;m!mS#z9=K&m@0{{SZ2mk;!0001RX>c!Jc4cm4Z +*nhkWpQ<7b98eraA9L>VP|D?FLiQkY-wUMFLiWjY%g+Ub8v5Nb7d}Yd6iX7Z{s!;y!%%?BnMl7BP@`c +fS?GrF0zMhgCZ?@Q)ubQ;)W)*BxT1a`rkVwC0n-B1?r1Tk@G(0%}|XsTPn+@_r2w^B)RR3^(5BLsNQp +#*0UxY%kxfDZ(_qPck(^onjO0l(0bpMm6EIhc5$iXdNu<2z2eSGqmO_m7B$;vVV%^Qm9@ssX0w_blCE +q*DC4+ZnDw`;m=S(AH#hP5x#jB3(Y|HhvL!(qxnoU@RD7r88xtU0d4!=9BcDZF(FrTIVK>DKzn7M;f! +tlFvg*9M^W%$B9>jRJfuNGEn|j3kiTg}-5U!rgW>0cZ}G +T4SL=W%2DiAt$BwOR22mCM(DCWi>tMS)OzJC2hgV<6h>>GQy;V4IKXGJ!ZN<}!zMRS*8Wa|$LD%(#L2 +h9ujAbvuWh0~_2f=BNCLz&1$7z$)k(<3W2>2#-J@6y8VaoX!$k0|ms5P(q%_im+PKG(vHS`Q!q0378s +Zo&xLWeM-cATmjBj_9xlCOYB<%#t=p@b{;G@_7zpZG~SPgG75G#8GcqmRNx@ +IVj~J_)EYDr?Te5-h3Gylg0Bm1??V`5%q_d$^H=+fxS)&EoEmFB8>sXqntd_8`0Po?lhCz-Z36szFQZ!Y?4@D_&D;{zM-rQnOs%AN2$N|j3Zs5SLZF +K_w5(EaS{b>0JJ7g^Yz2ZHCbe*sWS0|XQR000O8HkM{d6p$E-84Umcs3`ydGXMYpaA|NaUv_0~WN&gW +a%FLKWpi|MFK}UFYhh<)b1!vrY;0*_GcR>?X>2cYWpr|RE^v9ZT5XTpxDo!ozk*0`u(b6m-lT`N#<}S +xaW0D{x537TD{#2Vv`l-|$f8S0@w$ujw|8dvB2tpm=5RHFjVzMGnP*-&GxSEu9ZS}-Q1l0@8RVqfR7tSph}jKSxnEK8Bq3s@?fdajgIV;XqJ?{7t|j^ +3;HO4c%yh4<=K@O6Lft*G{}lQ6Gh%fy~%ANf`|7OMRI?CcC!Wi!igvK94PcoZs1(~|E%>KNu^1+OYb3 +`KJF58ybS(pHZiJ<_jPCd*B}Z4^f-lQSBf^X!f(8s>E^cKezg@}gjw61*0Svr-()a!nP6>pRx$*D$!&iUdm!R)vNHM%*vS +&G1FR^eLIFBzMehB|JS*qcd=V`SJ!)3^B$ZH<(TsMkz{iBWE5)-Zxq`LbzxSp=x~<~NaXbulUh!1{Sg +($350(Ok#Fop~yr{%-`P*?p1Pupd+m$va;NYP6eh&=fC7Y75PM7~~R8i!sXP)mRfmbbAQx>AC&U_Q#s +ugF9LrWE&ka2!yMSZ@U(SrIe*lgv?L;HEi5105 +#{Dfff&O|)SB{C@CRBqw8GdQelZ%QZ6WwU+?5hms +T`v?kjBM&6_VO3nSsswJAFOcXt&xPj(gFE3uER0R(L)JxX?rcL=Pi_4?<-y;+tBi0HOmAF*4wQjpA1? +>gee^egu5LH7YRd3$fXN=6;2({a5L=ISn9ShX@6T>7esn!rtb)y!Ef1SLh{lAFi7DZlpP~(okOaq63!br +2$c<2QTjAMnS&ujFU>P|MrddN#(9PNQR#)-0|RKpmprd1iwL;J)a3l>GrCc%{*9e4?uR*e=K?SNVihn +ls>*iXLvo}i3qUMD!{jCd`C%Vm2Sm20!oIEC*Gc70c{q0%m~vXq?|o^#7fi +$AxfJxS6=9=1Xvr$qmGVFw3C2`A1?*eC!Y|q-3}ZI&_kL>j00{pu?=Md`_ +&I8i${UkonK-oJCLB-&yp~<~Ef2*bL`0yI_|#fh3D2W-#T@nhkM6j3>z@0uD$_H%*yMmkF`6^jLG$Fx +U8bl1!jpm?Tf>@9*Jnk|e)4JPjw9uK$}%h;oKR1y|sjyu=)tLVr(4s0h65g~auvv6i816KoQo$9f8p@BF&6IZ+1Bu+XQun;mK69_R$=*^fhp8`g +8;8>=Xv$-l1@cWa!{C;I4o0FH|GOUDMKU`vggYF{#8W@M6q`hcpqWM_95T?rpm_?1DLI`HW +M{sy`RNv&quRl68~bJ&u<91f*d!e2N)Iz={aKe2H{44HX+l>4FtPUvm_#Fu!?M-3AqIn#-Q5gtq+yrVBF{Y{No{Rl}IrUNw4# +)jsg{GM{6xDG*at)zPTAEbSCC`Vxa7hQqLO)wHL1Gx#gg(gljr3I-v6LmrZy!toReFjC&7hK3viB^g- +>nYvPXb65UgbK(Bt+56={=SxE13bbhX9n_&DG>Lh89ot0oO6@qOYWkuy$Q=Sra05eGeMMBS#uwD8B;5 +=}(t}ZgU+w(eKDg2@R%z^_IpeRFz)ZBg4?An)4)*F2h}b2%HVCX7OQ3(J$fli$l|a>uwakyLDVn-SJ5MUpus_@hDV_WR#1}m +k2km>KoQ{VsxH@v;A^5*ZNTSFLd}^QcIm;bC`06%h#G>Wa1*pxdNfR90dO24|Y1XnuM9RbocHo4D}0 +F7|}Z&FQaTv4d2Yx9-7@>Dg)QoLj|Gc +jq)KGuq7VkqaiwdMQpg|FjI*mf)lA%bfG(|WKhPN_?1S{9lZbqX{;rhO8|ydgB(jza72Q#_izje0kVZ +VC1{?QQ$A%jw)*5fYBTuz6ylH1dJG>qgmR!G&M1j=~S6Yp(riyEhQ;ObiEyX)+94o2DrItFWmS5}`ui +m%5j=TpGNFBb5Dd;vLBOK_ly9L$N_g0^+wM+eU*sdeCD#ZX!tM30s*Z|HV>)RZ4fc_>FgR<5mwA|$ +allqF~cyGk<0u=cL!!64AJ;tcmMex&1P`498k>zC>L_V(tskL-}v +OpCqmE`u9OVXthU5%z^1SlIsRbiRh$M7^d@_eC5;N5^C +mWQ5(01$k|7MG{daLwS&KTTCPZNFxH;zrFGr5Z7M%qLUkJ1VortjlQWy@l^L9h`eJm?xk>U$ZzW_u~( ++8?+Id7M5706;Mia4eU7vi9@>NPb9)2u;2%}+e$=yv5vk_E9b2D04Lt@6aWAK2mm&gW=TT;VJ?af0 +03q!001%o003}la4%nWWo~3|axZdaadl;LbaO9oVPk7yXJvCQb#iQMX<{=kb#!TLFLQHjUoLQY&01@7 +A~~}C&acqe5esaW%iU%kd%5el;ic(qN3!OM+6{eZT{`NhYlB!ftv}a@QhubkRrV1& +QN@bornPQP=D={7~HpM1a}pQ%`(wbKWsJsE)r%b-|_!1zWd&Zi(~a=rq+edQsc*tMxTaxp5>9aPK}yD`};%|i! +5LLX!VN3==SPsOm#ch_V*2k;S7$focK_*7EX1S8s_*^aICMm|V`snM?`2MH6` +{6AFl~Y=$;zq8GD3(ejDt#)JB3lS4=K4vQLKGQ3uQO;eO%(50EH>$kwj)vC1zkfq%V=K3j+%zJ1%bmg1-HzwJAVMXlekODHc$b3^*C))Gf+C6A|a_DuHc$Vg1PeV%=Ca>9Q +HcBm+}nN!5jKGZ)pGV%M;sbIM>#lG}P#Vwxth@JZ>s}1%%RW!BOt(7oEem>n5%EUbMLBZ8W#n2by(cSDcZGooTnrBj5-ki9}8c|E$*?Qb6Xp++iqoUO +r*GH9{cv*GrLz{}s7giqtJvycBO?-$vU)ohMbuqR2ZG3Xy2nzi&t7LdX7n{mi;pxyW~YAx_03El8UrK +U~0L5deneyZA6Bv4)@k!h?Um&E?5!JI%k59Sd +R$5+CFiE!~B6CCrascDM$4?_M(`$ID>9p=;Mop)Ioqn~nc?-#8P+*-%Ad3H6v|I3RXKuQ1N#u@n)ZbS?sK(Jx!bES8;zhw{K^8cP +G785zJQ)&C?tnDnKD+}L^k +#o#Z4Bl8(ej5E6xwgIyA-Va9tPP~vwLIEbWOFaX=8Seno4T31iwsy)~8%gMW`}xx+Avb`f6t-m-h{Vn +N@5Ig3!0=Mt55zdP`zJ$@^9Z={K> +twuRdP?^<%$n<@rbcf;QUse;-CyUcCFre|a>0;6dL=+NBrvjpC<&=khpzbZC +9N2f_v7@&6wKn!qSK4IBFkTeXp9pVjY7Juax&*%ywt^b+%YOyM3m@@Y?dWsHzi0rtTP71ehie|A6^@L +Dn6SMp~QE24s% +CQT{xfjj0QrsH3x=)$Xg`SBK2s*UllyQY(QPHWZ1fJj*ZgkWh_up#;f-keKtsggT)P6k&%Hehs-n|o_OKrR^q_72RKcQJi9G=BR^6vW^I)VFBu9Zafhyj@hF +a86rW}+J~XgGvTmbto}#%8$3W{jxWqi0nOJA%Dm^EsF~zxO56tcw1f6PE^{!o7bjKApR2fGK ++7llPN3D+R6^)+Wi{*9j@B;km*O3klQfSfm=D$Js*)e&ecE4u|b|{7>>NdTdQ)|=cDkgYz`BWeK+ +di@#N3~a&OZ>x|L)^0!XDyyxBs-~>At*%RkAJl1RX;<8kbZUf@Bf|Et95LL0c4F1V*y`MIRZ2-I&?ab +2;S_s7>IlrGTD;`8iXTl@vm$bg>0EqT)zC+2ELZ$R1z3Y>7?FBzH#j_s!&$+4)#ML>5}0f +Xh8_g`Qhh-QuHlCa7*oXsQ4Txi2D(jwLRrGp-tW;8<3QeJ_!M)v&Qzz}Z%3lt?#8GuRNk=%=c;|zXu0 +HeMrcVMMBO7wAoxCP62(tArbYwH^~Eo5e{07U>uL%*dT=U!R5 +snIbcU$xbYV!~BNavKUGL(*#Wu^~1l0Z7T`-`pd%bwybYpvnmsQU&TrBpo-J%Q&Wgo`xm;JFD+xHze) +Y+u5*U|~(M2FgRj~Xzv8MX1|yau~;EQVhYdBmtrV7ik?JmIU8U*7$8(vbb#zXtn8zKt3x+3osh%oS&) +aS4ze_$(BWB^C2Q_+UrcNJBtxR#fEMG>Ff+o|Qem$d$#;{i&%#G$vy?G(EtHlGvQD6yRlUvpGjIibUY +^CUI@N_qKB3oZN?kvOlTS7ZW?|+M|T@F{zndKnbWxYLHH}09P`Z?Io7&NpJu>+vvyYyvD@oLG%o9E#! +0xTEaQouGtx7OxI|`7B6>V@-Y0{=j(^z`w3*40x6r;ny|X%SEb6jXoCPLO`S_IA+9xnFXYuGw#x0mZz +mxZu(KPn_O~wWH&PveIIlB5+zF +X!h;7(rS!yYO`gtzVZ8($84si(8Y#}_Q@n@*iRee}9;Hy>G@ +YR(vK-PKLbt@YRP!46Lt6;YpuIRgNE(g-Ty});P&7)I=Tu+rNYq!)-OCl)cGTb|#X2r6U#b&XGO)f(1 +dQLhrN!)$ILfoxYO4Y3^IBEp948CfEKQ0yLBJ2fUY;yeX% +=uZLNRyU&q{bt3cJ7l*f}GX16(TNlCyeUCP0r12N|oWDST>yk_IbjG;y6gdnOWyaKKAqMJUKAT9-0kE +j9^%Gnd4ZvyC|r{_ACUPq?>Ek4goc@(W*gAufSKE92Kn;Sax4a4!(-AisuZ@Fmv(6N88Ao1s90mQ)H8 +jQQAj7r%WI$mwX%L?uppZ~v=%eD(06H1wW080me_pNJ<2ZYW4XQ}Y5fDqYgQdi@e~5&YU=YuGn0vC+L +7ux?%9`i(=Ki8U%+zshJkqEzdEe_i!n96AKbRwO1u+-#fHFfjrK&yvlYf@%>KdgLfFDO8?f+=~i?d98 +qSqpZ9>)HVZ+)v4I5!WG>?G-40$~9;I!*M* +{h8oe8>2MSIm+)3dgmqgs_@M!vFs-KUXww<9muE&(|k`t6YDbLWIpO-L{Is6}0cTJ}xpmlAxl?5|cLU +R(LLKzZ)IgsoEZK7Db!s^ni0uAHr?k=^I})BdDN8WZ0GBeIwhL~|oPdjWz%33@>^r4)v;(z3mIeecZ_ +@Rc-s6?D=(25gn%tF+5RyS{@bGM0JR@GZqu_fZwg2IRQI3iH>&osZt*MwJtUTKWsH9mkl|>-EwufRERI#Z<+!!vOcU>c5qjnXpCUsgyr5*i-h1J<9unP+FBU{qGO%xK~G>^E*1@k?@y!^$ +NS*_Y3N1$lLXLc7PEd;2XDD@gdu!bGxi93sBc^m}1D?h`$H~SWZm8!6P>&vi>3ya*j<3Pvh|6Okv@Je +vC;xBG=PRq4sy{r2n4X_TnC+z$K>xcZ~P%>kn`0 +y$ttrv}2p|tcrQKEivbW#QTj8zwlu`-Oqn}&(5EZT$Hx2Qt|Qe@qWZr7nOZPHKz*cfY3VP9~jX&QgY~ +wHnwQEr8H1=h1=KZ+;NaD4z^IKXOr}!v;CV^LP+j#_)Eb!6vg0LU7gko9U`jaXeiD>b+Viwk=F&JGe*sWS0|XQR00 +0O8HkM{dZ??X +>2caX>Db1b#yLpdDU8NliRit{;pqvxf{<(GYan-*GT~*0f=Eb0O%VzJo~(Z8Z}0Bn +g@8z%&uKf;-WN+EuvqLq`|Jz7)@sKVi*;u^EfxzVcYCER<13?@&WeTmKDlIfTfu6v=3Qf%QPoFbnUy= +CIy+~b5j9&K+1A>9BUj8SCfiz8+zMv5+_F}M#q7WhNHcp;$+dLbEQkgXda_1kyl}6`;`N)ie}4XE@$% +L8&p*7mTipHdW(W5TR +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 +J?mC{(3LW?hil9kf@aTS3Wy +~gE;A_lp0(q8`XYF}FX8vba`^XC0G2VA!>y3~Rj6{efIt=7WyfwviOfZv7SipF2X%|;wjjW)HC^-31s +08LO^zeJ?*BFZZujzLH?eG;?HN?8|aF)Ac{^%J`sXL7D_9B;*Fyy>ifJwuJyZas5&F%~h{4F3<_bfy< +x!*S`|(#X87G=}JV5#9RTGO*o4df#;-p0k%rSm;%UiW(Xs{GF(z76U@r@+G`~!~_4GUfXPG%Z2+tD-uN%27nRd`^5iRlsYqwwt>Mh0{;6a*aSa3VRJr=hm}tW)V?`O +uBj58tn&zcmkFFAqniuBFpSDH(W@!xK{yuC4{tFx0O(tLFF-k +oc3({I3vKV&5=%=muK-Rw_KgKtkub5YW>tgNe;39>!AZ3MJQx?GHe6oD_k)YV&OnV&OQiWGNvVu()+= +VEh+_hh7?Xd0p!rA*SbeTNDx}W3JS0?$x6VfxU?PPXvVql(LXqyJ+NqJkyPn6<0wJbcJ`fJGa$!))y( +JCs;dFG=>R+#aoL +c`?=f$h+2cJ5GGwACow01=7s5R01yJSI44*yM)`&qv;#1ZeyCjkH@sx{@H7>`0BqF#&txUlLRMYsBx- +5f@2%06=N9$ys#@&QswKxlLrA+f9Xw0>|NVrxQhZ$_d0?e_7$yc&+af&B1fJ;lLjgYCs@#EQ3c;)L_A*uZ3#jp&0 +;B+aBPCX!&?E0jz4yj^E*O8=uMtBUtcb8dF@*L +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 +cbL9B2DbZr55Q53#IK##cqy +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 +?-rGhz&|}V(1 +CQ8G|F_$6-jWrS}_Ae;4aV;9T=&Qngd1yX}RN1KrF&Sr7|^`Vv$<14iH)z2}y&jw-^!`3jqA@St|J4v;Dxq46>;dbnCwK?X?*837Y>NVG4#w-L;eYAD_{tv+Gn{F@FsZ@1GM)3VGGLXDTc%8 +FkoAps!+PP$FJG7P4jg-8rc4_yVC8cHq08MT3&fouR^FGwFIsGgbx|+?2`32`yG5Yz+xe3gEU~{OX+e +gAC0n9G;S2J|iCYrc!Tyuv2%B+wi@nhy7_Kp+;~m%n3;J5Zn@D)WWqlA_p4W6nzP*}mslSiyPrv=LMY +fmw?j}C1r)E3?Ig-Y!6S;69JTC|fNpLC@BfTXl9XL&2&x?q>2vsq$Ny(OGWWzdzL))2t-Af}Qk4#wDL +jF?|2hS5Xu4e+|6Jo>pePWihLLHgFBo$bsqEi>ll_x(QB#h$tLeTj2pKEcBb383z`N=DvT{3E{kioX??*?4R2*TYm +ZgYXM~IT<%#q^(iC&VI<3EX>Bd>E$rthbt&2eqPUJe7sd?rKB@T;9cTxbv%dgTs#KVL)2gxm+gHfd`$ +F*Tbow?&PU(r10Wmn6+uO7Zt_*CSqVLLWr#fcV43v1iJh03u{gM$FP;EQSM +$m(n`AcF%Q4w}*e|O;&B&|qBwCt=*+CUH_|-IsmR7#KmquQa-(aK$T6n%14WenAQNQ%#_!)`3)K{-jK +s!~hj^nJP(6aWAKaA|NaV{dJ3VQyq|FKA(NXfAMheN@|S)G!cz&sSKLR!OR?#q)|FRj5! +TM5S%T3n0szOcK+?Hoj2$_l%v}W-G|UZahA7GIQqA7&Q>a8t=RT#)ufSGLG<*RlRq>#&eQP_Kw@G7pM +8ytF{%gosag#CP@<*wb1m$EmUe4xU6T|_v3NJSjU~WtWq`D8FYI*-XB+pccNeJ4Dgy&otIDc0zpG)E6 +InOulL7KkGJgZ=Had&50A(DFCXLK_901<5I7i8&Kb}a+~;V^7?XTJDRP8WJ-3$JA@dY@HvQ*^gy3^^b +rt{7s!=V%qd-J8_|~h6_eAsRiMM!Ts!sd{nne5~Mhc|jlAM5e3pIHbt|R+>bQcoc4gB)LzyQ)&(uf|2 +Q>0dC*T5Y=^$?kaLEP?X*!X`KGiJO4=XfZ6JR~D5WFNdd$$g1n8XBBrT? +Ok&Z>5=u|_4T_mJ%jAa)3rXbhcv=;xapPnbRMs|%FpD9|90MF^-eeSoqA%<2%%`j|Bc^zLc{%k>nC*A +Y3z~4RZTV+tuAuTol>@ruT|GKR@B`UDxrdhTSUWKogsddW0EAoc>-j&{4hECQwf=ELd-98(%e`u6k7v~n}lMmQC??nimjCST0Z0DRJo}&3KA-DRy)xUsa&)kH +o={LRU084i`|ytKEMgD!I*r5H-OtlPJ_POtZI~V2z0S6s74v=LN`vyt4PMV#?%{?r8|50F2|WF@f}4i +UTZo%fwEXbC1QY-O00;m!mS#yF7SN +rl0RRBj0{{RN0001RX>c!NZ*6U1Ze(*WXk~10E^v8mQcH{5Fc7}$R}3ye4y0z!rRgOsY|o*mun5H-+v +-{mB$=%L{mQcCL}7I?@_aANOl!3S#@f-378wH}jkX^6)#+jM$d)@H?Tj)>3lSB=Bju9^m}%b +b39X?_m6_(RiVid&0h2t1Tg<9=LPxhJ#rP<@(+KA`nhd6z5*wpbrRWwT0E%g+c@deL(p=cY1Oh}Yr|%R%gg($?|V!c;fA +0v2&P_a^ktIpS2g$%QxHwMEhQpu+)!lXx#$d%tTBlRhV<-%dM-X(>fK&$^+s4}ST9|$SrG4IA@3;Qs*6 +|v0JR>lhD**u@}LGY>nUrc!NZ*6U1Ze(*WX>N0L +VQg$JaCzk%YmcKi@_T-TFRKyBY{Kk)ZEaSXm+o3xty&$N?wuHo+{0bmzXr6A3Ev +KYC7PmqF$~lm(A`9aU@Z+tIDciQAGGL7ez_vR*JMLS)}i0GxIzZ`#sP0_EzMqprt74due}_?3nL(%Iv +*7R3%UC-4iV`AR}jGalV-mxa`1zv2@0sW0sfXRz3Sz6r#{TYLslqFCt^J*$!FHc^($*H;ey?{Z{dU9a +&c1v$6r%QpsX*Jkl)jfWFrw4R|VIT5^#|3w+{5S<#ebrzjKAJ{4P=%(uebvzG?$^@z5jWS%P!aVjNif80EA)MB*u9MT4P@ZNR? +b&3g*aEB#yX2jH_Ax+E*WD~xZ3AnecT*&>QEdIYat0$7|eQgQo`_-k=oP3mM+m2V5Yzf2b#}Hf?naVg(Bn?ynIg{jCX${KYI1}6L~O3Su3@# +Yxpn>2PmzJ7BMaKO9(xz8Sr(ArE9^TE+V8Y)1uRl;rwVUinQOi$QSL&u_B1E3~K@|>a0eEI1~ZP68J#)(BAhULYk-_Al;&gUSSOXlm+ +ErkHvC%Ef!07Nw+DRfZ|$y0-6eo7)B9i6saD>D_EDo3jSS}pf(1-TcZh+cq^r$%uYWBS3o_Kj68G9loX`yf1!D;45v^f$;GpV4RyR}ku_lZt^Uej5yKh$`O +`3FPRXFe5I8H|aY8_OZ{99LxC*Bu7dXsS#8YR)7p-FB6<)p +i$7qb?Hh~0tu&6AmE`av^FUH-_|81ghR0)a%WuZ60s|eVLrx-%KerMb*B%cA}0O3&S8ng(d4}&z3#gL +KB4QMx0lzoJZKx>R~CEK4N;epCu>cs0VxiKY1gFxB~0|sj8x@de5JZ5t95Qr>2ula7BF_thjUo`wTpX +xubk`+gufl?0QsnHV1tC&IU$%Ck%!rU5#f*QOUo2%E%q0(vTnikB^0-Lry+Z#9zOx0v)m$)hli2AAH^ +fsOl3017z;R}W=*s2)dZ3tI0Vw`IsmjlAIwTM!+CBboA*eDNzP%KpJ^^ww?p4I!W<>|$Kwi8fOt_x<1 +HJ_U)m}m&*$~pTLMX!BiMQU=SmBrWz!1zup2^HwmkPU5BzAnW&0pAaUX>#A{2*vjqFukt5#VfuBiiUu +$l>b&yQ3hQaNGTaA_PyM)|os0L1n653F}#9?FZc-hHQL*^Epnw)D!{MVuBLWiO +tYh$vZvgOTLr%aY677FH&U+$lX`G%u{->c!fbz|_Z$|GZI6hxE+~S9 +Y)7-raq8`}yswf1B69e?CfIVZ|bzWJnhGjJa$jBCaqv=p{OGgMx=&?mvEt-o3s5=%t2Wy9(ui3I>&_uo0bAm!N*yBn>1Waw5@rCU|K +#wGG=^`g*AYVq~$r(bS=`Ns`;$6^X@psQy?RzP|wU;!cjkD)og7!h}{LarEZB}@9V_$EaF&=Lfw!-q$bFK-)MGLg;Ryi3%29WUUB +u%pChoIbovdL+9ABBe7hoBSm`v)qEh7R6jYNA%tgJ*!c?agPRS(U=j(MWjybr`+&k&!&7_-q)HC-ZTl +qf&nos`s8jIv-nvDT7G>Y8u$|}&J%F3)|`$7j +y#R8IAwH7g<(QobfEIU+DTt^< +D~G$~6f~=jWz(fAs?0R#4Bsn)-8QF1*V301>B+cEWcb5#q#I!{8@g38@)7(i`{5m5D*woG-fPwi2rj%UwtT1m +_&s!x<+KMe|nLNAIS^{&+GJoF%dXcD?r&oTL*Xv%TXV3Ri8@|2gV>3yUbwyBXx4>8`3`vTU_GVH`0yu +5oPZLk3gq^Wp{*t5!&=~PQ7?6t+7Vib?8uAM$qDv`&qoHva;y*AASRGU}^gDy%Di*$tw&V-L%Dl*)@L +8fR17TxV2+5ZX3Lzn-33WR^BE79vM+Ad#9F7Pg;6XzrgO7mj~)qThq?NmZoh^yjW@OU8i}`G)6WAYfrC&>wTIVFR6MMXb323pzsgrR^s1 +955_T})9${2Z6F#+I&Ba{^*2ax$^Y=pCseC%(H6{sauzc;J>?ga!{XFEWzhFAWzY9Cvjs5}6Rhs1D6e +W(Q@H+AT{wQs{mX2k7Hu$vu<1%#$+13I(MMZ$rSqM+SS*JG?47K*AZ5-9?7@J;*K!(8)#jCMn5^rj!+ +@B$JVRlC3c+^20*(M<0ca7yZO}hi@#H`MM4p}vts=w9R$1E%))WEpTvnvY>8|K-~ti|pQmr;d +1KVZ?4dKw2aU?g-C +ne*~7HH*gN{ve~HKO^l7Ki)C@yT2kbY!=-`zMPMWt?yp(6B#mbd6Iglt2Q-0omjvAEJF3ZRbBepn@9h5dKcI(?$qASr}|m +EQWFYHjJOUGVB#|H2IPBGm^MT`0wG`>CZlEZ_%V{*jWG#Wa_TfptZ`A}h7q~Ok +(56!z`GMWyxW;fF`q9jeXN_U*M}g~2@h(<9;78X@kQzzf`a!$dax;`hN73EQ?=A&*Y?Mf6+pkNfGwdh +T+2-9ifzN$Dpmn!^ZB*_)^&>XPY12to1OBEH!^Zse1LbGa?X5X6_XA3lBE@x8qc-y(I*K7Tb5h90`Rx +a8cRuUav>*F|P4AIzJBqwQ{-Vy@_D|&wknT7-4M?4O>y)d{1BQ5t^P=R}a16OopE7H45rWJv`?4RnH1 +Du<&H6;^^W>hlEqs9m6C<*rPaEr-(P(>3lD5}(xNo~oAiQNkiAOuo+fw#S)Ml8}o0ck$;#uioDmuaHU +Z$o6a;n3&>d3aqzv>W)IW;XusG+!>Bf7q;YZzEyVD%8GO_GInj(*m|3z%VJN@;PuWjj3oVAo!QXir;P +k(s04ey1MbemsL3PalQR>CRYx^YCpPx?L=fg8Oxd*LTD@90F0gO3NEqGVCbFC78Cf>Gq7!Xclei)Hl+ +S_~F7EJid%)0&#nGOz*l5SqXIpl43wW#;wezL$G-oy{;kZsX26XNpC}VR0+E3C4C~d>qHDzdb +FPG1CtYa(aR +0)0*b}+}b2zI|VGOpWuKCWbYS;kfa6XPP0VO7=~@A^z%mQ!J(^1k1YV2!Pn{&!YmxaL#0kM?`9%Wur7 +92ZylhHd)b&4?R04ZVN_;je;c3Pq0KIC>iA*7PcPwiAos-kBcGdtb?5)!e?Mp0Ej~EyTm6xqI2q+Y@M +bt~U$}lKVEQ&W6DC`n>2SZG}5ZQX0R4XT17s8-MkFrs(Is*N5};j_sw|s=W~?&v2{WPyRddUQw;`YpM +~;#PyYk0pK569_>I2&hSw}C`!7&S0|XQR000O8HkM{d4@<{5z +Y72WX)FK$6aWAKaA|NaV{dJ3VQyq|FKlUZbS`jt+qe<`-=BhTu#lA6+T^YmpbNM_oA%lOLGRE8 +EsDiLM@y8KSy@y`Y1h8C-@P+@NTeitAD1f%)CjURH8Y$i=SNbd6nm0oW!H9+Wf|f7M#z@XtrAt&vdsK +mEbRDaC2IG*61yF*ckbr{l{NfSi&h@576d*e%H}PTtq_%RqJQK~R*8DYRJ&k@oHZ@^pr8C+N+Hj2a*v +fz6-ZiWmWDTJcF*cUNXMl3!F#x+isfRzr*+{7-kYBTjZun=T8&7wf&(3|3wCfM-_!h#?%20D=+Sg7AM +}s4Z9CRxyjCr(Dpq6#SFPmRPS3X@_%q`wV+C*NwqnUhR9dh`vYaBh6Z>bj7x%3AP=C*xw{QMt!Z7gV` +$B}~?CBlL%viRQqH9(}+hTq!78qD2$;L%E1(iSQu{g_Wx`#YT7K=q*QKiU7(AfGXwto{7#N~3S{~`tH +Ehdfel)_2#sw-du;>=a)LbF(JDncbA74QQeuL&hN#BU9AxA;TMI*(ITwDL#xCg2OJLD0$Pbi;8M$v+mP(8fnZI;D~RppAjrg8_yy?%Z7U>#vZHsC(bSu29%N!o +M!e2bnBqKBbUpbOHc?)Q`;rA1+*8ut(J6RkzGg8$c|YYPhAidMmMnj_C9Qmud`pp_jP5rC1jtJ=-Cv{ +Ed5bjzw{W1Qrq_dbe}=jhlO9lNF#DCXzU(Mf-yj?C!jvi0ZD(Mczeo1a+@3O!HB$|zZhoK|02!#Mg-n +nJwivh8Ta>U+}O(w5x9dc3Q|mR2xJ&J?a?g4Ckb*6gZV)TobkcBQ%p{5Q|%_2 +dGOQY_FY{aG5?#c?Je*Y4R9DvyM`r;VKAQ)%{46dUp$J-4|?Ur6k}`2Dh8`6!IoICdsc~N&+3-kGpTS +@Ov!JLPUMO#X9Br|HbVsZpoBi6h%))x3s?rRe3td4kbBymbHHqrG3T;b-uzZ@NKeS*itT8A#A3+->g; +QUUrWi@kGjke>G(<5dvEy{a9G|#+A|k(GZUeE03%n#2qv-hS+XK_f?4k^&6Lo=G`LEaFZLA_8wB$o9h +Waz;?Zp&Av+<#n64M7KErk4V~55v2VerYi`6-YC!(A+b*9ee%{6eu_Pq&Qi9NJp+GyHP2^Ho^@J3U_3 +$hJGyjgjZB+p@Up-4Ogua4IdJbW-<5<=cfhCPZpFA*b<&<0vUBRM{7 +1-PFpv$|SDo6bs;44{1-0@N^fP<&SL`c7@Ew&^ewromvu#S7m{K`@Mk4H>`(*k7_f;f^ESPZ5M-YzQ{??<5T|uClAgQACjDg^ic)QEKdF2iUdLw7Lo=b9TuSgz +Nad+oS&JKZu?6NmSqW^jRi;8g_=AgCJiV{4ff+7g#0v!hGN?>e0<`7NzYSJDfYWQ~A!Bmm@syIKJ&6l +7=%l{_a;Z?dFTiq=QM$`TepzjWPab}JH+`Bgr49wyCCb0GZxd?(IWY~A!SC(g(Nzy7zJ*wxT@dC6JvG +8Yc~|91}bU;}}*^-rQ^&-39YFv_-l2MV;W)B|txTkQb@1<1%hGZz0{bgs7=`Ljb@Fk@L&te0Y2<@;Im&oAsIfu@n8Yei^n6U_L_5kk(Q``sc=U1UKK0odG>3uiJ!Zq4hr~R|hj1Y9j= +=>}@ya{dU!}7mv( +`NG=qk?RB+%V{H*&REYglgkKA>S@1Ak0O_3WcD(XlKPubPD5If;WbOv>kR##Yr;uFRIYo?KCU?_2x$J +z>t=Vs}-+%1-w)}1JJIQp=wg~XF!O$i< +*7kWRwiqg-5*YPkzGRl=e*PDeO&;b3L$4`%{OG1Df*`Bo&LQCUlEH!NpZIpzZbF-tPU|`yoG%?PDIqT +*@9>|LmvrT)fx3&S$xHa`>H>Gxe6T2|u#fcpY)wY|=O~5_c(w^PS&Pdb86=N&n@qnlP(_(|4_SoS0d{ +^Jq;-Q|NFXCPT8hXL8CNcU}BfYZ?AI3TWP(jH=3SM))_z=hk=v1@UM<=%W0 +4)1E0KF$Xf%BjC_sRXghIW*R*$wqrcYGJo6za?c14zCX*Lmi+QfG8I9!ov9g)}MU^Pn;PZ!Lods +^v~8bqGXWuV0uVlZ;Oc`)WyyI15}{W4Cu7ea!wYw`!){;}J-r?+j}sH@A%9borvo91GF*&G{s+3@C)E +7dV|`SrVR-oDb`@vaAUk?XJCzWdeJUw!lLms$u_I^^gZJu&*m*yH?u{pJSDML32;heR8BKod2?!r3h$ +FYKWA_KFjN{18kO0bYr7aGU0Wu^idFSF&Qwv_gT2MVkO$@MN^#iJhDe>Y=G9zJSvQ@7m0lR-ZeRonR{ +Dh?5Yr;z_NpJ`&BnX)t`AqN~3fM}1S;;C>~xN+r$~-IWcAO(L5EbDiOCH)(?IlJ3306L(Xu?#2%j9CU +<2RRVT}x41R#^nt5p*&ZKRBEnapWLM*mle +IxJSAvsQ};HAtR9>+oTCh&%B*vWzkQSfF*cCrLLMOM~SZRG;4hr^R;yS6t0x%6Sxli#*W&GtfOkzeh6 +&G(@bC^(0U#en?w(Xft$H96+jp=ihT^bv|^c)^!vHEV@BFJ)P)WSOYmOm|D=>E?_n?C?fGAqu*sIx_z +T;qyG<3O9KQH0000805+CpNv=YK+$IJ90G1H|02TlM0B~t=FJo_QZDDR?b1!pcVRB<=E^v9RS8Z?GHW +2>qUqQ4mB&D*@VcVBrF3_bJRv=A-Il%^ahQLU)%|;Scl8WsW{qMV@Nb1ci`e6gsy6>V!eCrrODUlsS_uf5$W3iR9u?6@q%OJ6``)7P8LnC9Rb4)6143XNB^Tr@QyvUZZ)pwPQNfOqRT +&MXLBeY$TW1kexiQa#raSRy#p<%vi0tsMILVYbk~74&%XSHEAc(%(Kl+`j9i(`Q +!YLMAoMo+!GIJTs}lic_trRE$v7KBRVc0^r4;cBy1aG%{mqYDV!Ru=d<}b~N0kS-~OT*=&YHFiDoK2o +j*~#;k>DTG0~9Cjzmoph}SyqcYoD8bbRWUCs!6Uc7kGZj&u|hq)nbj9~k)7Z4Mo5!h1==*bhwM5QSQd +Vl%cFnM~D0EB@uf=d!8gBO^!MgbBmIvGOdwG=zD7Hy6;4#f#LD}ZDDGCrYm&aWhx8PS|=;k59I>og4& +E4DGYpmL|+>*DEP<7+W%;AOxnl}f#rA%;=v|VmtF? +vc1ot{GnLEW;g6e%(v~)bUSjA;eX4od$YLn6XGOgXeuYy_K%a;$@TB)pk9RFggB+7NjZ4kKb2wdfh&avTe8m$hh~FnO$ +oJ5!nT}(`skWGy+gH|P_PI2EEl@d#u&{2BHA@j;B}XE0tW-}FbzlNRVRZi#G@ +KBBXibu2q9R|wDUCT7h`95}>oQjssy2dy+&F$ul +;PKx8H58zD=A#AlEk}Iq)0rtJ%(oquF4(3+A!jh0dbS?)72VEN39TlLdJ>Q|t_x+xcf-6nhX@S9T1xU +0gPK35w&<5<}Q3?5zkpqPj+JW{oiP8d(Ag>Buu>=f*9q9V757C2$!5Om!j>0o?+`MekYT~vnF5RJmgh~ctGh{Ib{*}VfSb@(!2S$+=L=gD8o)jUru~39sZdyhJ86rkR@r +17W*83@%4u3}sdqG-IB0yhf@F%4C4Uw;kzA2jcER;eUHKqWWAYKE2r2+vhe0dz7#oy@lkN77c?GM)q` +_Yoz9ul)=rqtZXmEhCXSqxM=;e6KzACQroM&-!t%6tKG$^um$XkT)8;DKUcSr$>EBwDgOE=!v!Q?M&HsLi@x~bh=g +;yt80a7E(YS>~VD^T|z>kIt1Po%Ai;>#mOu`oA=W*Q+K;DoaUQbKj=gaq5`7ZDY#Le6L>(% +`wt{VvJX*cc6dp&umIKHx9SLQ#yJd8)6a#yM`-;QdVCp$Q>^}3yyz~o;J-r%Fzzfem91QY-O00;m!mS +#x|Qy(P!1^@s97XSbh0001RX>c!NZ*6U1Ze(*Wb7*gOE^v9xSl@5kHV}UIUqQGiBp0^OXJhUbPp1T +^Jug}IkDq1i%PDvP*(Cni1db5MrI`|)@zxs?PH-0x|C(~$hAm{-Hzv}RdCuob~3u+RjuQsNQJgScYmI +qp5NU~+4=45^=&5`KZ!goT4T!XI#xm#wMvBUNrC0bmZNP^UCFFfp76ZLWx_N0kBD==6Qj`xod72n)|+ +T8sw-LxW0HyE35X>b*P7jJif7|SXuc=&5rfZoJjRzy=Bq;OcqNM*Vq4S@mRv9}d{-y|Z^7p*6Deyf6g +mPRDZs73ia>*wfL3Y^0vo6vWnwSi +)=Mz@3>lP_=n6s|SE?30=!(}_wYcD!7XGV^$jU_%uWBRMs?IW&Ne!pBa>7NsG6*LVJlWXjMZsj`d)Op +S1VEuG<6^v4MO}vPr+yG7UEo!no0yveo-&M~6Lq;_c~Q~o+%vx+arDep4ipXpN}f5p$poY!1J*prR4{ +HWZpa31;I~HmU1dr@iO5X?+Qo0RAWq@lowtyJ5Ks;4T5y$YVoRtPSr-y$vTuH=WM0Jv>Yu!$b4u}#Dd +Y`AD{LW_3UJWuAY`(YMMnSsQ{$R9Dj&2IYs$blUSPOIWrR;ccD^hm*AB_Hd?D0YK>dW#hAh +InAIh86I#NGLbqu(4G7T#MM{9{H5`R!ayG?P9$SlCC|-d`(88P4iK@S=0CWGhjyA<6 +1*Hij&P(Ju+}X2W|9+<>q<@J@y&4=n7itUKi?yg6!dm!4uk?mx1ibtTo6_TC2|JVxvncYkip&~-5`YX +LB7-diS&mu*(OF!7=qvzpmyPk;bqg`O05i>ME5Gc#uvr5k@aq(UgE?*HIpf!sz?`*}v`6m?SsqxamKV +O5J%12;NQEE6#&bc3LprQ*I9YaTzPG=SBQaIE1^W!wRQqBF{7!kr_tzmzQd5NTM1;7-bdLpRuyzTgI& +;XjmzHnX?fL2T?U`n9)zw+b9-%^UMWr@Eoy5x42JL~t0`hFbb!;WVpivm?ZG@jp=0qX_!Oh-+VtUg-d +&m+}o#>ZEy3Ax12Gd~j@V=o?h9M>m%frAzNBBGXTF5-~&y1>a#g^;yza_XA=3 +bbfzwc5;6*6gYe!jT=`6KL*qtWp_L|#FmEFlEdVBp>N$70{tddh>W@>IAiZ5kl0h@(s)NvP#S2D046Le|y%nL;HzUhly +KXy{cx?nv!JSqKO^b3RVGUD%>4n0w&_<%UUm6DP+1^nOE=Y}ghQVp8d(MVv>g*lyvV?&+L>&* +A$a~mJ(6_=ETpDgZrjS0P?OHl^bLzN;$-w +Olm?r>DRcqN7-I>-WKS4mgIsHI2PNqpZ`Tke+r>m_q%TOuQ-F>B^5Ge*>^?OzOt;KOwWtD_T#R3z$;G`Dbd^%NsAuKY8{_?dU&HO9KQH000 +0805+CpNvnw&KhOgJ07MG_02u%P0B~t=FJo_QZDDR?b1!vnX>N0LVQg$JaCwzhZHwbJ5dQ98F$5OJhu +8G;a=tIy7D}O%UP~#*p(yq^7As3WN#0!keMjI8QlP5Rp&Z`jDcucZ5;5U)v|NQ` +gIfy^j5S{M0B!bh +>O?-{E4u%Dmvl#rY^jX2eM{e+`SM~^h68caI>pCZ-oun3u&cfAjIJ6g6YXufv*JkZyWH=mBIM<@6gFX +O>{1xGdwIIBdh6Wukx#Ql~5*?aGC?pB)pc0Y{osk@vtYw2+p9>>e2WP|E7R}O~1kCBCB6?ctEEKv +cXz$RVCUiUYZ`6e7__Hh_oL=o5U=JwRXK5ojxgenIxN3EQM!T;>n7pWaPcgco{w@jQzynNBn5wl>Q$VVa4f+ +r9|uUcp3H;124SZJoe|N%8hizJL&Q-U)OY>B(L1$v4`+VrbgN33;g`g)i`IWq~xW%5Gs&Q;uRIF&Lv* +y>m&7sGJwBpx=KA1P;fh5R6Ukk`Us(Qnku6+-Azb#KWi0Jy|g +b-X#<5;l`u^xIH0RVT_{mvNZD+cL~HLu-7^_+qH%-!>|}J;?te{nobRgI^2a6e9kRWHI$4X&W +@dsC9`O)hh`8+$ZZ&CPpi-<6pDdSG|p&AH^-M(DkbUFd8v@DC-C;DIg +)LSJlU|uy>sjOw`R_>Ax^3(?Y1PL{it|6T!gRB5P4UKVNmW{E{+0qky^&M0=VK@%fi=3kWw3`hALcE? +0;_!Sy=F|VPpGe}bm9E5KW&s=0T-^ug0{uYk8PXIe0yb*+Qn@NKfEL955w|K^f&pF4Rs5PFDfH6qbti +ww1vt`g|~{j@dmjc_GsvSXoL9?k^7AArpP$%fR${6^5eZ6pzk$)qN3M=+sM`2vbP~LTv*(`w{C+M|ED +`D?(|UdeFEqaLhlt?(QR9r_K%f^y+=5)K&1w6^$@Ra=U-#K98c`KB!&liP!%o^@=yiC);kGw9r;wi_q +=nO4fTCWacUb$^gmEb0|XQR000O8HkM{dmp60f{09I4F&+Q_6#xJLaA|NaV{dJ3VQyq|FL!8VWo#~Rd +F5GMui`cnzUNn1R28s=ob6q8wCqK@U1_DNs@_)W#cCCqWB~V=IJF%({QGytb`mET&S5L{rd&Xc8{#F+tm*=GTCZ%V0pf6Y@;F1nK;x+TgEp=$;LwN|4$}iT∓CA5E)X`fD9S2$r +NUScikY{Lx{>Tuvy*^2!i{M`r*2dL~%ex@gf=K^XgRApM~K=QNJN-x=O8jeCW=Ep|J@`KQBxM$b!cVd +;_!S*DL6|xiVe{!XB&4qyxRkop3TH1C=D6G=wF=+`k&Tvw_*WjRzP=2a@6ZQ9R|Mb4;`A&NP+0y<=e} +3Y{9+v*utp>emEn#sem3Po&GNC|#X6rU0*$(V4Zfu_C6+d7s7f4n}ZcJFhdvksngT>>7;b%IXx?i`x= +V4qIdvOHAwo0?JYBbY5yI~YsG#{!GszQLtCQgFq6*$kxk9Jk_;)(Boq#U?iIzF}Cf;P8V<0Q`p=CMI8Y#^Q*g|#*m107h1-?t+m>*&jCnZ*t;m6%+yebtpNR=Wm +$HGW2Fa72n`|O7Q^Qi;5x^`Fr4@cbBHxszRVz1fu^=BHMjd)JnsThN%liW-1){dh;&2?y2r!YyU;uS0 +@vBhbCs~g+9)bv^L%bVZkOy0*E@vPn>SCVkTza?jfoeh8KF;Z7g@(1Gfp~2%;_9$FsK;OXYKz>ij0@; +0nMFvlMZpK(`<>~D`(QG6neHC5R?e!wMRvMIeWltIdZ+8r5Lxok#?<2Rx}#thtqqI^?E)X_)}Df*LO( +zen~^xC15LvDgynT4#fD+6j#uM!IRQYl-*@pZnNp4Uw3iSFMWl~F!y}I%@?ocsZ{=zY#UJ_y6)gnl{~ ++aYZUC2s|G7SnT)g}2;AmcwA0hPpwab=*HqJIiFi+cezuz9zOZY2_EUWVN`P7lDCzIamAI@v$8~RpVS +KG~3jD%F5KHC`mqIBl-$=NFCC>Rf*o-djpccCdccnb6W%BxL_egOUzHpDdM?sGO%pl^q3tT&?HeB99m +#4S_ubcRJ0edmL{30w6CNM^2q=VV8o=kDukVwB(q58~X7_!ij5*+XH4EA_ej5U_xYjrawXzS-kE)67W +=clTWO$oTm!AgS!?3hDObp)wuw<%+nV_a0(kLOn8GF?Nd_n^vxTXIzzW?Vk>0)~b34)_(Q**%C2SkL# +|?7<8`h>F2;yX8eJ2mS;>QohrwsfPiG^T|nYG((@d4YcOkfKJ*O&7%jZdfr{c5pkTv?6cPao%?f!Xtm9xBiz`TQcmvfS^DeuL@R;&`@vNUcse9ny5g(6~ckvF8=KiWq2CL#>RUewmI;RuxKOIkO1Plsu +^_x;-GJcy(rgNAUtPWO+fEyvSIlqMmdfIsBhF5WnwtV#4C!rmu5iLLU0{-*RG8;SNs6^789k*z^BK9O +yRjMoZdl_T!ZRR~gDhOC;9Kq1}{{Ag1Vbkp9vrp9H)2Y=_f_Y@$8ak9OXW3s$RP%m?s +ENAN^-B^3T{l0};9?pj;7OhCJ~F;B^gF+xiQE*OW?tY96cO)9*uAgdp`IEr)MIu9m2ujg+}KcS>P+3e +Wy~Gwe(opd-Ifs~3|$s%!EV{o)z+N0-}$&%Ww;Ms8b1`|_mP5bUQtee4ciHGQ^eTqVwu0d%<+V3wUQ% +ww4_|Ob+20#QCnHriWPLsYVH$HIBHtB8O`@*=UFQ2+)QoPnUv$}PG!EVRNQ(?jj@37p8Rm7zt +*^QiYV|qI@J+b6_jjXd{Wopt32%MUZu83zU3Zl*`0(od;C^sDtWfQZ3zpB%U#^Q7UIKM8hQqgnEYg|f +!*kkrZRU%#U!6BzacGJ^(~n$8e|O}Af|ZH2Z;X6^QdcV1wDm75)9)nHN?+_yYev;7jWqX0ay*K0#VU6 +NYr%EnRc<(Nlmm{usdIXpLkF<`15ir?1QY-O00;m!mS#zrC#iAl1^@s+5&!@e0001RX>c!NZ*6d4bT4 +0DX>MtBUtcb8d9_&WPun;c|DM0X3YwB^A%(I5$BC16$9Cd`D1uGgX+oJBJFP_;N4C>a>9oK7p2tqwq% +CawaD0H+eqMjiiy!0r{++4woR}#!go!-oN)u5wpS(2WW@)CfBy%_rvebl@j8p|Rxl}Wc32l@Z*9MOg- +}k*-$r(x0yf(GsX-dSblFAS|*0QJ#Pu)5O1#^J{J+GmVy8Y5i?KwG>sFHNfOD0vK#ZxQH@F$a+WyL+u +sO6bQ;K$MzaxxL+B*|o%i%Cn)L}vbQJ5;wc>3Y}WPZ_TaxwPaTl#;3=6K%-ktfD4CmY)>8VPGbUf@c= +3R>Vj#0GeF@&-V>!!H|v#744F<*4iA3iZZ6S*3YU~aqQB!Ee5Hc6SbumvFWo~l6EH%RoZ-#^Un6=&HI +;FN^TZXJ#MgEyIpS^14yf^2@38qo|6eTsWz+-<1kv=4xyf+C0|xM__Jb9kPB%--|_lU{9Q_{m~HBZ)t +BN>FD233gt;gTSK(O7B6hY!(aV{ERR|?m=>Nx6+W=DJ)CQ`bDu#>mPpalGd;S7rY>>t(;D2!qx-WEONvuX_{&(%3PA)&PjL_lebNHx+a2e2+%s>F3zAn!ML|!x3nn|q*~T +0;~pB;3wM+VxYHExM;W#G2mYg7RGV&hZI*qm%uqbEHH@6J3ePd8yYWNp$k;U(-s=0q!|rtChK0_iU-*G8w?B{!%|o}L0~D=XKj6zUl0A^S6a{*eL{9f +QGPxD-pQmW(6ecxiaoqvw?Ep9T=OMr?p`nr{m>3GkNAOb~6AmDfp;@1VJ6`8lWd$ZcbbfCe=wC6of$- +zT*Ll^97rfBLw83Yky_hU8Qf&jYf$`kw>E#&8A7E{8od-AF@=R0Dz~)1hIFIMCOYf?-g}Ju-hA48xMX +q-aNm&uIZU4Wu)XDcMkxHw089>lG{*U25{04Bx`9qvL~v2>u=(kk_xt@up&wIanP!pSley#E-^a9Lw< +Utz*TLKocNJTqrLj*QAsHJxnKZ0W~)(MER)K9!!m?^x0rA5oTJCaU2>{%Zd(QL>N?cQ4D@LdbbC+P*! +VOsp{R)!O6kFk&}Oe!DldHLj3c(wBrxXm~N^fthPDOPMjGS1LyBA|He_%3i!)jB(WP(^;FgcBOE3ZQ$ +y!pl8GdAL6?m;XNn4FQe<@J3YFYXxpNxxkG9?sm}*?YjX8iy0gNtIokWn3cEKpU9(^2LU5)O8P8Q@00 +xNYQD_&Z}V_c2W+l$fl)j#B4w`w`p$%vN&M#*vKklt{+u_)07cUNR^mKBgNc(%?ftf&T^2ANK&-M_!R +zP$ePj2JQFL_$GNdG<)=by0Ff$D$Bs32miDx3wV)jvx>w$zmW$YiPIpFfYIkbS@DZk?W?`TCptPj$6M +HK(n(AWFyE^I_KnT>+IJaa~};0hE=f%N586^S{v*(){wvoBCWtjvVc_W!w+u|Ip_VZ(d7<%M>ZK=>0Z +wKO72BbSV)>OM5|G0TQWX*WmByu%EhkXXq|0pmOoVxN4Qnhu8RF&PsukM>u*S98?;fidqXrSe_3Wl%{ +W?$voBS$E}dOixKOv_dIBM|@qnkpWFWMz`Qh7> +0r<;n~t9L^ULAcLl>rYA7I)8W!WR0aQiSdFt51D%e8|UUApA5w?qL$C3cq?HAL(ozY>k7bP3XC^pQL3!9eJv8D7jW(GsvxY~PJFUT0 +zj=)=He1WpbMJrRoMa9=(*a}8s1(uA-p<_*fBY64ZKc@Rf7UJC(_#)YM;&~ +lyMks%}c!NZ*6d4bT4FSV{~J0Zf0p +`E^vA6JZp2?$dTXmD<)E01Z^6zeINFsiY~>KD4Qvn(vh^iTQb7}fgy<%2yg*V67MSi{knS|7ytv3vb} +q|Nl-3}1ZH}A`rSPZp0M#U%ozOhn4he-ESa->$=S^|UnVh&lEos77p|Yg^Kjt?p`VM7Y?TC?hRRd);wK>Sr#U-%lbKjhUfQT0MC~^ZU){P=I#4#Bg@{FhVJP?y_G=d0o +lkpC1y@PuS=kV8y0~Ul?o`$nc&Ve4Vhb)=rfH9|sVUCCgiN9I#I0xhb6e8}$TejY$>m(E7kRHhKrcA!{aw5DpOYS-0BlZ_3dFaFK^_qJr3uETNw%~EdGg<;C0-#v}lqVqdsWb}NQ0% +)36(D4r^*Tv&;C6Xq9lZ?U7kev?LSm2_CIdV+<4DVZa14NVd6*$EAj^6)i$Wi{3n=7X7~_2)y{0iN13 +;wcX-X^VWozz-^U&|GhcwJ{9!r5R1Px|?><_v>vQhVM{Tp`CADv%y`|n4rdv(P=b%(?5VBGJG*r)#Z9 +UJ!Ec83>ie9gx1`Xe^Fz8u4lUWfGu=T{#t`h&Ls4kz~C-(2;37bbw~OZL7uJbwpYyWjV(`r{v2cW}Wj +`{O}xGy;Jiu)#I!ee4a!Z1fI*R51I#$FBO_@2`67@_GnU;r>nUyx+aT)i3(P-ualpgY)absQ2F=017- +}7v1;Wx48Ha5raAE#;14P@#q>>8^WeWAFjrLJG&fSzh_t1BSQAW2=;Z+9d{Ax&F~r!9d%${Z~U%@&;Z +{q{5v1_uLn3D79J1bYljVbZ?F1qdxP^HPQAwQK(ZkW{4kOeI;=bFk8sWF4`ToZ^I<4}1So@^fJqdG$% +qNz&>OjJCP68(Bmz~Oitk59^1d=pOAyfrtcALta`h?O>YMp?& +9fu1#2O65^q$87h>;o@J|4jy=8<>D|ML_i`e*OxsDFVhxa`B;&j6~6wknLc)B5|Z_ws+H6a4?x%Rf&i +&;Qu!;DCPn=;$cmb9V1VVK4>Vj&mn#pB^!|Rsf`c=&ronU&2Fr7S2hDR$?SxsTYD7`RGL(-b>RYby@= +$;0egeM$!VH96UW`&(aoq#w5Iy0|{d`PB;9BtRC6<`6l+sTES<)GK_`3N;SPv +lO=~m!Kgj6#n5vTr=`*&CTo<~Rg(dX-&_2~)iK+Hqx7~`A>|8E!j21=mi$Z{|Cxp>+Eq;g{jZSWqbNl +*1{9>H8NDH0?*lLN{VVGP|RdKa5_r*wA!_AM(1DVv0OnCUo33Fv%bbHeViD`XS}jQT5}9yE +0?^|XnQeIgfDoC_SIvp8p7t)5+Z}fHeNKKD&-};KO$M-;9_Gk;_>2#AAVqdqXSH(n&RT8tF|3I!JhPA=FOVu-<{3!sC8#E +@!oe0O+2+v`8QL +4J4{_C>!&i+KILnedI(GY320ukuZX3CUZ%mm;-ivfRa`sNup)qe8`j^dJSc7!3Ka&AXD?qjF|su7Ur^ +unsS^QpaszZ#q3GFHX%s>D_A2!|&;)*DZqRDFU-FuFWRSn`V-#FHgmk`K5zfA)fTWmT +@NoB0e#M%JD(q3wBc_{@b}`ndD+iyeSCj#(fgr!#;q~q^Tb%D|F*wlq2PtapCoOnj5p+5XY7A9$68>l +TkMqnsxhrXkXrtHL66~YHKzny8Ye|^2O+d8<5D(Hy#*Q?1YEZbwC +am92B@$XG`2RRwt5u{Fr-KZhrV|RNV_&cmVLU4UPk4odhOfQlh>CfjGh;Tm4-T$e%@jE3~9X0To?<2J +5QYU?d#J?X&9Dq%=*u{7fb6;!t@Laa2Xa>oD3AET}JF4+>r0V4yV%&eaTbL=XeS-odR4!!BYFVFGSl= +aVg%yEtN$4LKsvX?4=|a82-U@Fp_xQkSBf;xu&p6su4Go21%c%mp4qvmn;v{cPyWwvm$u<=1K{@X~1R +06epD2@d{lrra`v)nZdK;4>8r6j2hIl^cYxH@$i;XoWK$P+^$?62Tr>p9zi*TfKiJy*{m~=q*s&jP(1 +bt!L$Y)0$6$m&JqyB+jW)EG%>uCl_Vxkbz5JpXINX6Hj+UM)u-`L1rL)GBXr`Fj9>x2s6|(6+Zf- +N^=&;RNbK>A)IZ~#Mv}W6$+g94d2N(Yr&gCr+A5)7#WL%W);Lg&pmU&o_+ir3gr8C8X~vH#Lcbh-BFR +GpKi9>-J~6lCgms)n+WqB7*VoO$M^^;WQ#xR6pQ4h%9rFF_?SI^r*3q7$lH^IdZNbcLdV<1LpfEXgqb +V{(GHEUGxmCAIMWiCps^(i%78lby6k=GttRCMG=TcrOP!XRks8rEW!LClA#1p%BP@LAo9I;OAd{0DKr +gbBR!L?PIYx#xrUY)dhoFL1*I4pW|%({8n^#$@Sbv|+!) +S{N-y(RA7p8mbrk}8LG_oYz;#9R +bfzR|P>}^_PvIy@ucZ#C7cat_vy~9LJroUmiS>Ud1DNgy$^XCF+iEM;(HDgRE1MH|GRV+riSOSBnsxG +0K6g06|$DCb19O2tTAbp4{{2-pzk{fg@Ugk-*Ik#E2vf#_A7W$S_RjXR&s? +@g%;a3e0qEg@)=c+F;d{df%-Az36AqB?%G2z(@>q=+13VvM~iJFzvDp6H@1B9MkKrd$@CM8?a>9sOZ8)Iu@yytJT3{P6m`Ac1l98O{?tr1py3IHn28BBW@j~k#&WTra%xqJDynNd0VTfl +AOJ0<_1@o%f1F$(^xsOVdIVaoz<;jMMM&vsv@_iZzkAOMaHe +IT{YX7bcyj^fYq8qH<8Mb>#ndXjU$(G~*)9XEK!D~2EFFFEsQ@G~mQaNlb*P`v&X6x)#9<5&7(9jkhtWMvlDtB6ywxb^AlUf)>*j%B%Qi(+K*}OjJa~dC7n8m~+KS0SX{%@3e5yw{Pq%417W$P1`6)82QDq +02h7&g6kD#6bNJkhER}T;hfCbS8PwT9eFe;KE?mk5<#EdVI2{E%#An37E8ueS|CgEvk3dM +md+GW;TTNJEf}#Un_DYA2{V;v^k(t(V#p&x8^ie3TT;@H-25Q{etN5u;|1PTNNNyrB=&;DYF(p4_ulp +)#DN2`)T4-So&wVM7;^=gk_L~aw*^WGUZ;7v6UxJ6V?g7hLEau`;}_}pclcn=y)#ahwc6JF54kE&;dn +;8(H8wX|h=?#oK87p{yt{#xft0Xnd;9UME0mSTfo=JRrI)udNNeVlrJ5U}7uH}?ps* +5u>wH}E0bhQU?>DSdejg^Atb+V(lQ&LBlx3Q1-Fcn#GQd^Q5Pq$VF(Nc9tWj9%uDsZTt+--GbdX~~3w +yq(>ow*)APJapX-(jdcw-Pa24>R6(fcF}WSof0`^zv2w4^84@35wK2BWQIHmZ#t?Xpjz3@z6toI-l>l +zUldu?S>-=b?BprMz^Vii$!mg0}>m*hAFccXF1HNO_DCOS_|&MqRg#7tNR!$>VK3 +$;bCHA4ohmYb`X8+hjI)ze*aa>OF=Q?I;dmXN;mgaEm`WyQ?wcoJMz7u@~&vJ#HR7k9bV)kj0Lg*$g} +0tju%ohjA|>%4=v-==u+J1tw-l2(yFlRrxg+l3}MZiVU9GmnLu#YxY4?2NA +DcQ8`=-Pp(Y{@4q<@JhM{ksZ4Fb7fIDoPY*>~jYq3s{&}j+atGtl~(!1n=-}AI1qZL^tXf}-MjMrX-WkScBiZg^%{)YdBXcl=Q4w>cjw76>1e72iN0K +Z@h1okuF&LL}f6Z7kUfqSUD5#58K94J3zINvln|gAyANQDHa8@F@%O&ihhwx6v+q>zrixz@3w#^$y`Q +A7td0#9bTr+z-UalWuPb{9n>{YWZB}?ar5l7dhCl00!?R>vcEv{{1yjKP;^jjv45S^7O9UhwJj~Qvf2 +J7i0+K2Hl^cL?Xe?+WMMGu=vdaETE{Ai#~0Oe+iM(z42ps+DU?6IvG!8+1 +Me+z=KZ3(6Un#x;3^JKMJGbcs~g!lGi`-p&;nIrRDf7~G4W0M(?fE{czUeQQ#w6-%l$Pa@`@D +XI8cuGZ_>NK#u#*J@yb`se@*DQ?U*TqCEH?oz81Oz9A~y*(JUGTwpOD2ixbrHWroTv_Nb>4mp|SgqDR +Qi;u$qsFE-l^~GB$s~2eHw-r9{W77tfv%`fsZNhq^ioM4E?;h1p;s{)tF>0kqky}B=Vie|SL=nW6i;s +F6RQC_#L4V(E}q`5SyY`H0ccs!R9){dNz*6tJ4LPV4mJY-_iGvi!l@q~LSYb?gu+M<))d#> +mGvQCi1IeON)~&N24?`0pB;p=8rzJr9?_(ZgsXn`tvY9G(yikMxw569_K;|vB6*11xwkqXlCMYcqHGT +9(huy3_@@-X1FRKEJFQWfyEl6Oc9Hw;s9lim7AdhJ=8GG`MoRKD#Ba^?Z}#W%oprDPMu4n7l>i85DBs +Mtyb`DZ?e8{2bZjAc3Mw +n+a|I1%48dVnFu-wa9IJ#OTu`Ha)hQ$gw#m$b{M|&n(f$gtw-S8B}s(PeIK0M6iiijfBU@%09llY}ko +yzR5OI1R&9bJ|CMOd=uP!Sd;s-Z_2Es8!F)u$W!*A&g6T9PUi#oNz@zLKJ4Sy=XWFx2zqqTkt4 +DAjtYb*rXTmjR^?jS{7nAnMzX@J{w$Yf%v}U6EB-$QM*UD*oLDfSjD!M_f^gIgmyDH~0JE^|CB7btU7^o +^Q`X!b_-d`zxW2d~J0#?*_U`zi8P)h>@6aWAK2mm&gW=X0VXS_iG002h-000&M003}la4&6dWMyn~FJ +E72ZfSI1UoLQYODoFHRVc_T(96wFNzEzN%gjqjtx(9!Eyyn_QSbzDbQA(A13bC7xZ>jzb8_P26>Jrvm +B2DeItof4Ii*-G08mQ<1QY-O00;m!mS#z4PBLxb0002z0RR9K0001RX>c!XZ)9a`b1!LbWMz0RaCv=D +L5{*O47~Rhxiv_u=`pIDnT;t>f?af5ZugyS5M}WLx8h +_C1GZjx=dbmq-xv!{hOxgLr0{Jaqu^d=h^qX+c&Dz;78>gL}2GM`7r*7bOoiPCnoA3z_uMd2ka~IauY +J80IX%u%Gv6uY#Y3*Q=bNou?*lzw-s)8TT!|v_$m?bLjcLmgz;aIEi5anqJ9PP&Z?Qn^DUI@`I6(u*) +u}aPoGs(!av?y-E^v7R08mQ<1QY-O00;m!mS#!MWn!qV0RR9t1^@sT0001RX>c!Z +aAk5~bZKvHb1!3PWn*hDaCxm%TW-QI5d6<6R!9h2igExXF4139B_Y{>OX5)5P@$@KuOA_?^JuA5f9~w +gj(5k7q7o}8PFS2%f$vu)utBaQVO*-buCYu@CY7Yy2=r-~l#Cxus?p&RKukh%5$zimD&={Dv1LhaC?sn+jrv+&oF=Jt7CE9y{kWxz$NeeoNm +v!|49aG&zt?(SbuS+n1WiWbtD1l$X!V572}3A$ejyLV6V%BTsIGzoncOs9;M4QB7J72fPU32{dU1_32 +5klEgy7rH#4=NnX((5a3*;LG7lBg4n$^-|Blawb9`v0hAF%O_nZ86t%D_!Y-F~1T)Y)^!n{;gaL8RlO +gS|b}Fj=2=F-hpwU!IpbuZOpzmtya*=*M1Fl9wg%0yL<&GptL$xwpQlBmaAczb-I_!&Sj4zhPiE=pMU +VT(B)q4|hAI;Zrh836p;OeHQrkVLaHEdrLn2cRO@bar(w|y^2Kdh%DL0`v$eS0>Ye^VW4xCN41^th~F +v>2x#;TP)h>@6aWAK2mm&gW=Z)XGc$k%002r9000;O003}la4&CgWpZJ3X>V?GFJ^LOWqM^UaCya8OK +;ma5Wf3Y5D5xNK&-Ypr%H% +ht86HDnnRyGm)x_{ylVwvhSv*{s#`AJ#R7%M%6lpb5vUK{F&3a`jT= +kl@vKI#T#Uj?_hv3WZcpPXZ_B#fqSi$p3P=tJkV^}S~10=d~thm=J;n>g0KSCY^?#_AfB;i>5k>{o04 +#M{IV9Z$VwrfjsJkmQR7U>^0nEh4e0RQJc|mI-oW966$<8cX|tEyoO}@&4ctPp{KQKW?C-Y#WtQ`N3n +vsLWEm&PV%Ap@PanLXhaR71Ek4_En{N?8tY&UotOIoyJ?=-ehBQ~Z3S%hlut{ow>wN3k6i}hRK<2MUE +l{pk4RxR(VnX)AB;70hj9$tN*iJGkMCf$OO|}Ee3vPKFo$^oZ!A40(HKaod2a6kV59ENvpQ60wPk1n6 +QhM~s@l1rEGj-PP9U{7g&1M-9f<9hQl~=S8)5~=dUIml|i{@+g!9?tX!+MAM%;hd$(GCCnd*+3S1doH +@?jG;XOgOcg$b27BmqW*=z`a(#_6xwmO<4TfmjwPUUyhCM +O8w;Ezs34>TU+hu3~#&5|AtE^9)d7++gEjYK?Ui6~~f-qES*KJk(D4vmpb2Jc2O%!#7+w)r5@5Aq$y2F3xfsv!j#VDHp<;i%t=dWg7%QsP7MYr +~JRHf&xeq2Q*JQWhbVP5OM +%(M@#uo*$7?bTfYQ&X?v2uqR6iq?Dow^_!Ls_k4^JHkxZ$&X+{uGO?HZvMcQRNcU28;c}!mzVGE)(+ojAhXI1XMa +9?p-29rL~+3qh{y4*nSqmW@K_c!74PWlwgL2p*^2=%I)nFgeHe5(6?q)>47%%%;RVT$h!>9Sf9e1lUA +@B1J?niA|Md+0m7?Ms9)Fp)J##w3 +q>W-4g!>K|c0yqE{{T=+0|XQR000O8HkM{dTxrr7fB*mh6afGL6951JaA|Naa%FKZUtei%X>?y-E^v8 +ejzJ2Z);5XvABzZ8z0{)25AOpXu}4a?zK2zdq#Vhd|MU+^{1#@_#0ciYINpAD_+-e*9&Y~ +~M8O9KQH0000805+CpNgUve3TX`h0G2KQ022TJ0B~t=FLGsZFLGsZUuJ1+WiD`ex8z&#qxmMGe#PUR)v8CGTxHGmxLnKbeibpU2sna#dfA8+%L4Xg%_H_ECH;GIFyNlh$zOdlQ$;slC +__-^U*o(T=Y+F`>HC*YkzFnNa>|(3ro@Lp#Yda;fjFtOFs+RE^Evv2-nR#Cdr=osrMi4b_wruov{O}8-Z(Z0pK;C1aAxSuqdPp1vlVK~D}Z*(1455k$U| +L8UO0qX(PpTeESGf)s_G$?_!#Qdc1cRhRKUUV{bKR@hab;hoM*4j0Y-^5m +-`0zTB+qvt6keRzv3VLE9xZKEY}Efkt}|=eDUJ^<@E&C>Zf1d>Ex>?>6d?4CP4ikS67#>uFs!kmsi&p +moHxIKX0|YuRb_oQ!NUV^m(8Psisc~ +#D4}XTH;wx+3j+Lp6p^mhd^^^KN1vJRVBZfrAto1|pXAknA2ksDciBu~-jp?0$I*-w2}AF*&-$s +0aDjhtD&+MQs_Lg;qM!1BR~**&j1F~dvt?ELjLG9*_?idbwb6_c#2*(5wHu_(lrjU9f4eq8gtSTnSDq +0U~)8eYJEh0ZXL*a6G4c_Tq4ej0WSpgaxd#b?hk;I0{2RhIL7CkQ6l5GBYrS0Gt>>gi7E;H%%fyYO +V5g7*lgR2WCP^yuAf>|Y?_m->n>}fK_M42)J*N;!YmAAE2Xxn?^N{<5TyRre#yA=-sTwtok_(*yEyx* +Kpv&5OSG&ZUzPYn{%F#SxR4|7(Kp$x}h2N+ta!NwxXe`eP^h+a8I3)NkP>51h^K*e6){*lZRt8?pl=jK@q5glOl-FzZ;2XLKpu|=lXZeIcp!EpK%L9Rl +t-pg=Dq-EP08Vk@*pMf&WK2r +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 +34Mwk9j`Zg@=?=>Jb+rZ+=B +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 +HP^g|{k!I8rQ{k-lAz)MV$rv9f-4|F +RK|S7!fjzsBPA0NJEfFUSJofD#gLWt2WbcGXZpN`2E}uNP21$LtLT}-d?$DJ_V7;Go`?`Me +`_G=|@$pzQiXFm%Pn|dB247J82M2m$t+F}LNiKE{IpMP=JI4`t@U`mOCK_C*9t_bwx^(y`?5`!MI9b8 +2L|aB>9ms4yXN>y@vfy*pro!i8@*dek1kWC(2q{3F#wnqyC7NTb%QRY$Zhq-OYLOA=D7gY +5OA9wx>12oZJcan(x>z1~eDrq9{y^+}>Ta{>c8VwyVXhsPTKwJ~9s)5^PZpReeA;9_y^hLb{dCTMW1( +>maNn#^V~lJRY#}p_MWL$r_J-j%B|hOCtsh0ydLNWZ!q~V8@loWyU}qJ%6+0Psy_*3>u`2KB9!-^HCg +@b-7z@%H-2!@(Fm#9#fu}(=W5+akQd|%&$j0B!d=4zdCHDenPQPdEb_SWg(THEL)W2SToUfv_}*eKCBffbx#~Y#T1AI(2qw0pI?$wgXBXsHfbQ9 +FdK)7#3sOj_C$W7uB&CeS@vv85K&(Xoer@}%a&JSUZoU@kLu8^S9F>F^+)Y^I +&(RzGtF1{=qtSl2#^a3b<#X%h-dF8D)+93}7CgQZ(Hy@k!uDO`<3QV|5U5b1p5<_RRiG4icw22-n^8^ +0gp+dE$IGaJriLm2U7LPN!m_APR)>7w1=E=pX+~5hh%j8jiF?saFUO;Z~Xn4x)njB}8t-wE`B99hBZ= +5s5=mrH@4oahHi?mF>$s{m`bI5OQC!k_sz^Lj@<6*!x;cF-)Sg>*~6Kte2EE6^q@d| +z3=gi1Bi%B$_}hHyXir!P^>o~&4S_v0_7G3R8mmLNYL{M1FFyFlYImK8Y%L}AMO7B_@g?$VF7+3v>y(<_j11D$kTFSgYufVR+3=&XgFD<(atjG$pa>HoHhPjWJbmT3sGNwOY9D$Em*yBn +3n$5<2+O9ID5WIw&kNQ9YU7AEmbbe-%C4TNX?v8c8(!Kd%xWZfu|xbz6E)>z>3s=0j_TWl^gB9ak$%G +*GC!!lwW#(+eQ54Tf5J#Z>2k=f1onc=7Sfi)6J?R212HXaR1l1@xVv!(#C^wGe~YOb-$Mv6y6gdG)UeT7k$`EM~@zu}Y+ +OU7Cqs& +La>-Myn?|ACGw3-53?vX;P>3&Uwh6H1MZ-|9kOpO$*mWmNVGcCNud|eSCCjO%@%TnS>Sqn@&CJG%?{u)MG7x#3TB~!$$DwIL=`5dldKm$#jr=8Wb +!R5wcDhbIe$-&e{?N(M_1SGuD3uqfeDi9w#YBnEr}d>t9#R32)Mv?J_@i=G6TdWC4pvSKr%`RT<~EGU +y}&31UVzC(1_}F`KBo_DBI>T~)9ikA>{6Wx}_H=+nFU98C<|UZ`{}#2-la*-v#?b(30+K%;{?UD=NnQ +WTF3%gXtM5{!&BG!zu0x%!U@jZ^%}UAWlNYQ*;VyH9Ye)0ukRK<^Rda8RaRuRMona?Z7JeFMs-;pY^8 +qM|aTmwl))8y-yDZ5bTsta6cCvEhrS`Dg2A&lcU`dHxv!Ol}A7bMJgVkGY3R7)_NmM47c&dtb}tAt7g87XhYX?cpiSqkiajYdwvdhG&{%pBO|VOu-$#&Q^Cy(3#v8kjLHCjx@q-i_UEJb;HCE#E)eX +68%ph%Kh$+BROUeY-!+1~f^Ko2$PkfXi@d2-_2xL!~svgDQA=%!_b2L24zOzWaM6=oDqz7i4?#e?-W@0fpj`kmx>W6P_@uXE*iWNaFpo1?t +hodPHZhCoQL5Y02rV4tSs%!PfzS(DrI^csB56Lst%Sf8b3Y)kVxHrdSlZN)~4&g`1vit2oGdb+yBQyy4;!QSF%mp(0gNR7vcBdD=F!t7lBtVn2UR-i-YJ(9 +Mey29T^u>YsK67bgR#F1;C=gb0)=#-R7}W6E?WuAjZ%ETM%@|kaKHdM85n^=J%sqj#Ma5vTAnSP(HrwZdP +FgMYfvJb&K$;oUQP*HcUZG-ZT+EP6wf0T4C_>9saYze@dTcR$Hs*FxyomU^rMW_aYK}2w5FKcM(8d=v +Mjy-S6xGOy@@i64KCCM=d)APxNUO>C*I@1s*a?;0JPgn!ew2DEXUsjSB!lFSob^#()qXg2>R5J +?sO!1FLj%1#$heGSpLr|RwJ4hc7Os#+w_cesCXNk2QC=1cL0+qnWa0oQ^N`WZ{BaCauAEN=x{(3!(@) +P{zDWM~$K=^(sHi<{|HmKxFjYUl>nn7C^%(=3J8{7F-0IVQ_IZU#{lJ_JTpqc`cUrhsDTty4tb>Q~<( +od8fX}h@Gxq}=TR@&Qt8jenW0IBF&oU;LXbxE%D^J`3R60 +WbIi>jX?kmZo! +u4-w*>yy;Qpk!ubi8?qtfs`J^;DYc$naxZ>~(**BsUDMTL+KlWBu`azzVa^~JM+WC%c1}S|#qOF)90|!6%2%tZuEs;A?+ +o`(Qn*Or-F5A^DA$0G$sHNDGqv`Wi6^7b9wsm8U>@xyI$hgtRYWM|Ig)-+W$o*b!fnt&IJOoL3b<2w4 +lr*BlP!D=C^DGD<4zVxV$K$nZ)GFu_{K)w@9Wk`^c`lf#|J0SO4n;;bQY%xLEny0XN+l}B@UERqFe*f +Z|tG8W+c_1h9L9J517Q=O4I7%CMM9KrI3H4DKbmlGQf7;TUw@v?QsZRAqgUa=CKSvUKf{qWZ8X-tRc+ +&qrp%{J}dWPB)=?2;zSb6@`qwdpm0FXb$pbB=LNuo`Q7Bil>N2N$88;GqW2+%@d=98#d%`yH+Q3P2DU +J@hfZupiRsc~5z5*>SqzkcywC8OX7ozRzeADjL^3J$oXpn~owmmT#hn%z&&%JVo-^|J=%PIIrTlNaph +rRD$u7LbjNPH+9Cs*`4BAKLX<2Pd=bQA-=OX*N!J~PZ +4gaHvK5Q%U`UD%a$@d%LrHTD($p_v3=G;pLitS5)8fWhGI|N8dMr~mM+qDutpWVUOIziQ+X~dsbGj@0h$ +G7+zMsf@Z$A#|>n_io9db_OGvXu*=TT394Q@UW-aWCL9%M35POho6hom2xlpEI5Mh?6WcDfbVVi?sJc +>eFrDUGT8C@buDV=sg&%GsH`I9VaN(zRwI)lj^~yBR$nkarbSnYgLWLHO`fuTz+(bKiuOSe-M5Z2heA +(Hr_IGQ7}vU%bh}YUdKKC*N5ezD&>+LkXzqOo#a*L*0edZ#U({zY36XDDZUX*SdyMi8(aScGSa&V^~z1k@?KF2)R-1Vd-7)B%2D#PM>i%i`rW`hpC^w{q;3OBM4L#S7ij@&q`Xc}z6NQpyc +aC4ldAQ;3KiV$AX8wR00x?@ENG!YD8nmfR6y4(G*W@Qqsjy)E0Y_yd5 +N-y3uMJHh%kd{i>BTpqg!Yd~KJ>V$Tg>@R){!o+KTx2Vezv5GyG(b(Y*9 +dg&LPh%_Wr93&Ec**@X+r>dTVYMQg^D-)nqWGu*c**WpSN`;Q>=2&mlXd+Jsbo%Y(|7WidF +;69hxFojeRi`(CTj)oGem`hmUt&dzm`vv`$U*9;OXhbzAHQWFHzjxB1?Va%H2p)^<7*lk3Dlp?ql$t@ +Bwz4B%9=9Hq=@=O>dP}&7;D&jy)IDt-t@!Jno4xD)ZylD#N5+B<&tlr5xaNKEqVNK~b?f439;%DrOC@ +h&Q{!2N3E*LfPLMCiEvAXf0>wD+yFY%=ZK1oVgLG1n +%-tEEIOV3EbCPl0XI+E1i|Ad)=3?iGOOqpaY^iEi=uIqiV9pmgo5%r*-k1=80|+7EwL-68hgr~_qKE{ +`aBsPVZrYvTLL;b!w5vTZCe$G!>@H&oinKjo>6!=JQc5~sIkg}F}jRS`Z##pFU?s{>;Sq_K;;3A75&XHTc7@wRI90s*)^n7 +w~`<)iiVoViFhIV>L~%#L5`Zn|aE_?PO(WTsR!Oyf1~O3Xfe3poapk&Sq9-L{*A?|>)sgNZ;X2Ng5p7 +^?-4$Z|bawz&w+)x3Q%G+@oV3|{R(v}x~V)W*vh$IwXM8H-iayUMnDny`4>Cd +kzY$F +0_XC@5SGgBCYToIE-?O^|`E6ki=DK6rZeydPpGo$RYyuJouKSsn`;3h!`$33;dhuIjgYvkuVMEkKUk+}DB>Xb_ASCRYjjN`k|_pFa2Kvi=q_wcyRzKZW2Q?>LFfI|O!+GGr@$k_`zEtM!n8b~ux4T~MF)r +ud^JPujJsh^);m%XQ8Sk1k}O$l#O*wJnm-2=7}rvUQkAs*2Sq_Cl=4A8y*1h7!>J7@tu^0UkoD=`D5- +V!=SytjKNlZ1`R```LQavtb1RjMI5zY3P>8=+pc?W*kGugagU{=0pb>r#3r3Vx|!D8wnv^6m>mT9WI +DD*4b0Q8*```Xh=uX%`$E%;&bdW#8yFf5Dnjo1v4XfoHDOG^e~09jb*Eie9#5sX%z@$2y{`|$q#-#%P +jJ^pY-$feW!B667tgV#mV7P@CU7jv9mt8dTwo2y6ofG|I@YR`?Ua7u;&^PW}SaYZ;)of}Vo?XA`qFU% +G7`hszl*+Cfr+M+{fiP#ku_3K>bJ?Mrh}At>b +0-E$<-_1yv~tx_LSU3pWL9V+Lw07m7;1=GDhU~pp!VSE?Kjek-tZ+DB%j&?Suwhcg2Ixwgv8jj&|J84 +H_4iD99P?ERVrB<8*=3Kd(R5Mn(sUA|xu+G~Yz!U^u4uj!plg;S!^1JqR9FGg*PMk7ewwSKQj=>fuN? +g$9`9T&A7Fq~>AY;^xV3AoKxclB +Gf$T_@6aWAK2mm&gW=Rs=l6JEp005qb000sI003}la4&LYaW8UZabI&~bS`jt%{^U<0P&f05--p${L?C01ViuE&gnGGY#AJ_8WA#VD)LKEeg`Z0i|iCUc~^I`D9^f)EXPI^;X-PQ$Oy{jO~^ava3M{^P%^iV?PzO +wCFPnbo0$3WTb4n8^D|M)gGw&^a>jB^jiADiE&xM4E!0`aGn2Vih@P6CP1JUd>ZS{(>OLsy_%(;WUBo}YG7T0DJ+U*5dInaEB&nDe>Z% +Kne^Y`R)C#U41r?9H1u>$*@%I7n5~_UZ4i-?RHSj7PZvW>Pg(zgkU|tT*t3*-ZSpTs_OPf^j}R2G5a! +!1I6pYXF2zLm-_5KGis|hUPCt4V)m;;o~sMN9gt_Ho!vQ4?wyD?9pAtx@~&kTuQHGj+|{DL&m2*6c>n ++JvOi~;P*Mt)PYpdT7j^7AJDybIELrT;&1>aIEBAw2{iHoA9xsdGTV4EIn-J>ZvRdmx_Dn1@3^OvJ9R +Ja)I{8gDYl(H&*p;uz%C!3A7?YhyIm%2@$502!^9)8f8MEo%@F8hE+)&rw^cLcF$a=F{`c+)cwj-&X` +o63dUJDQep8}7_M+cO!KdIw0oI!Ze>uQZ3pnK{2^5}$YQ5y;e}E31GbLI@(ZGSDGpQN*Q!NGb7X|)a* +X_w{;6j|F*dJ9dp5Rw(*0+FC5S06>ku)6#y1?^hFfxUKp!2$DCUEN84w-9x7CR7WHTT5%9}nBED6yH6 +v*pO3TiM92=;48=0cE1yi0;@d`f4v>LP%7ySy#ZR^zf$&c*?OiOT^W}vPDsr72>%7q!DWZeCe5<+GAa +s?z`fJhLr#Y*vk{{Esgbb7G;ajfE7eTTX{PXRac_VOTYwWnnovMN0H{!HgVdPZ;@Jq9tf4OviK|x#K2)eswTkv`XV+0YwXoBB*%xKe7 +fW;OGC~2F!VjoQ>1BmN!v7UGi~nGNiULqW+@SRA97r(yH_S~6-WFC$KO?fIl`L_Fmh%*qk^*$6_xnRl +*q0?~KLme?Bh7|^kyWe!+bcT*f8@_eUjPh&9?HiTj$W@3DtMbJ;)%Tn2v-=gBD&UD32fknbv@;tW{+Ky&zikf=TumS&tt-o01fewM%*HIsD=2YacdjHv9O?$1Bgtt@z^o_g{W~zw7&hx +_|q23%h@OLi6qI;e06G0)KxC>N5!Xx1W6S$**j`1FYY{1LNr@;(_S?A-O0xusrQqG-IK5DCSV`0N32s +?Gtn$u_#MVt;7Ck5v&YroK7qcKCh5u)UyAvpUiw!kEgi=c&o6vzZqr;G+8qSHUvdDGm_VT77_#kyK?( +dI0H$ulG`nO-?Y=&Xj9lc+4U<;I{Tsrn+A++Ht?nnp&JYMXOeo7ZXG^#<*Gg6bJWytWq-*Qnu7uahB$ +Lc)vfstOswrU^J8Ayh6*_JXD~I!ItqTF{r~CeKw$WKYZwpI1Q}}n(o9?S1zVgCdd_br+^xCGQb-S+VPfVwDX0u8XUXDJV;=ds)_y7dn9Z?b(naKNUy$udM +hcIiSd-NLjBcNgo85-l99Wd-&{IVWk1k4jlfvLN<*5cjY`A^|;Eo)5m8&((pxEDppMz)CLassQ5vIAXnW-4+qR6}2Qc(Letc;Gw~ +u|S*~7B`(1r%~?*RG6r}JP%y2}R>0@4?JF^ +_l%-0#!4O`vurfy563KdK`NY;*dSq;RcVu&2U#;2#>rIM>vHlqVLy_Ixs{cC&JR4t={m={u3PY3;iwR +>(nOPc70O5*&_|Ee>l)EXBcwuPhVO@u=wfZzweZGzx8T8Vi~`Huv +@BcV+3(exXF+`Mp7Q8^bKprGwe9dWL_Y6bc>a>frc-jAu93V4ZvL$WrGO9DtH~R7q4-vajD2$;iZ)4 +qnKK>#vkU$mH1NMSs=y+9^r8bhSU!$V=!6IV3CG6N;6)fG`LP4LvN(F?Ldb4%=*GhZ-jUj1=mSD(~aTMHKD9(5vA?J$t1VTcJv^f<~wz{R;eb_sLB`P}IJ!u8+Gqxp{p{r$zz6lMW#IimYGFo|2(SU +@vH#Rhrz~j;3sz4NR6b$`2LJ=2Yrnh^cS$HbD>Lz^iDO5)tF`*AqwOXehPrO704KY7 +dT*c!Cp)-`tgqQ7n{#@Qq;!R8AeW3u?=GEpkffG}qFYQT668<-I&?Y4>1|7a7QoV`E4Gxq;`Yp%O(rq +GnQr>*xctjD@Z%8p>AQ1GX!1u;Hi1cy(9sw}^t$>)Ovs!7CH^4KM3xu9A{N7wki#~eLa#qQ0IVme)@= +w{Y=g!&3R>uMxxE%x4?a`YPp=*o|5XRMt~M2B-T1(~AAjyapM2IHb#%>=*S30*4eFF)YE%T!Oz+g3i1 +gvEo5i{&en8*!G(>kv+;^5_UT(X1Ikzaa-T6f=BF+6Hj`ipZ#spj)t2v>}FP<=rPMVmtAPINsH$r^A+ +%D&01scs#EPj(TdK}eX{M$p~H0LI393LND5IFZF%LHu_G*7f%k|z{D@hR0RXN +na!FxsYx{xcBg81@`RGD3mwvEZ4_W@-Ft{l1h>N6_xSm3`03y|KIc7RA8LcoJ^3=6MPOxeb0t$Mb|bx +XX`-v!u6VU?}b|F>|>UpB7EqV4MKYk2b(HUt5q>J)&8@fte=KMs8!uT=pV%Y#Q~r_Ds)BXsCmL?F*(SdF$z-CvDpbM@XSD`^SeTgaM;jitrBdn*0 +NV-C8FHC#2wsK9=7hYw_cMkGe8Lw_Fg4tn}qK+-{W{W*u}T*h*(vwyDhVQNvEIZ!TZn^A&R&VtBI8jT ++9Ef42Q0nH#TmdIQVJn+M{jA`_9q(!!hr0|lCo=S8`XvvA)!B1L!(u{K5RTOueP6p|U`6M>TCrWd@VG +~GDlZ(cCaYP-mZ8lZ6k8)40VgwP=FDce|&7o?Jk^gcz +%*~sX`z4et6cyT6{c7kNB+c6V`jNC<`}fz}0g;C%V<~j%4JM7-(*g2tNTNcP{}y#u%JJZ=nzU>6mUCe +J_<@Rk!=~0-gu3; +&mgOQ}nQ!vGDP}|aBSJs)93cdfwH37jc417*g@z5Ys$o~K)C`5+x5ZkX>eL>C*mzf#QJjEgy22DW6nV +8C_xq>TC77O&a8Mi22;6Rrs9_GbDkGRkyGTv3ytby$^c +T_2OS}U#^u|%CVtImG&OMa^ex)yLEr0R2qH$i00{J%=Nf*sgo#kxTd%iU$%;fa_9QThii<3X-L$F +*<3r&yeS@6p-9jHHK#W@Tie4C69FhC74#M~3dmoNfH-O5Ndg5(lQ&Ptw1o43=A;`@e<~D(ohW1``t!k +wKY>tOV>%Jjc92dt!xBm6L2b9BhtAwjynI<0 +5Y45-IR;`qqQEk#PP%-oyIioy_;bY|BNpS#Zeu#@sF#A`Kp_0r74!1m6f%&(&c_KT2MO75O52TMZkTwdt>?-{;*p8kSviZ*T9Z?fE^_f8AV3Rv +fEI+#UQ*87-cjIht-VR+vW>eknmFaTQo^8jWd-x2ob*l(mfO|2P%6W_^lHktb`8LsWWQdDcg^5sWd}4 +#Q=S0E=J^r=UbpE=eXmNak6p*949*Qh$sSw_&CFSaVQU8wL&zU_8r}&$c3R+Ir@DHU!v#ak$p;IBwwl +NF^C!9%gjXZ^(wM^ZfwQRa(sH#q+sjVI%>#U%_lnnmO3}b}dd#vwInW^ouP9269VFXYIF4?anyrsZfTnDX{;Qm&M@gi+n^39m9OgL8vA|Ln>zR1>lLK +H_LKAIxp?@QA0@y2z@7|OEE+)4zb{}%!+P7V`~#Is$S^}wZNu|Gl5Gu0Xdd2O=i}zx)5Fm%LEOQDuVg +wt3PxL%eBi#U9=&G4^W@>&1#W7Qgb3d%ZLObKT9x5sz5~^{4E?r;od=mGfNdMR7;%aha*}^DT){%kO} +~t3QxJ_w4@-En(a`Y*J%s_sQa*0x;fpIAab%fYWbeu?an%524+i{K3X>c6)=u3nh#$s3ZH7a^D&-A-K +`$fTHk2gZ)&WpfaehM(IO~_$;>jzy(M0+G +L~7=Zk>nVT9o3ZNCjDAC`oL$?DmRMZf4jiUx_;TKy%QV?4WtjT5X5UJpd%IpAJH@<*Zo{p+>Hz +j`j}dz|AvAMNd-JHez>xRyGkAxsQxGGY!|+TWNGN5<`zL +$$ArURh;Omotr%9b;IiYn*G98XoX$?S9rPVD8;@hO9CO8drZBe@*eTWbdKCQz+C@wbo#SWNyc#Q=g-t +SsG|c61#!JH%W}C5il5Q0iI$8M5weRKcdgE8Xy!|j=)+{Z4wyoN#dM3sSZen=7u3<*W8&L#Q11qL^-BDkkc5m>%70d@t04(6@UKbkI<3BsW=Gs)djPcN&Wd6?UN53Wf*W;0>D>Dc^#-$zY;@ +DOHGp*AVU>*PA@|gqBhu9Chuy1#4;X3+8JP`E-pf#D)?Z8FW`V~jI>mKj;!X`1^0$JS%G$&SnJaBCytBFuP2S_~7$SW{F=qwPSj +=-z9q#6}u=oDQI?+#t1jGF)}jd2YC$_yC`p7IMNMuMbceSt3S-@bi|41y3uY8>E=3oxiw$2kq*kAUKP +pD@+Ej-ujHcnk7#W72Zpd61wbx8#pY2mCy(n~*UJEwP%l>>o50IV|l8u4nbTaVGeOrad)_ZQGV+rbuX +}Qd}w!lgy4_U}{(GIgn2Ec{jxx6$X8|iiH+c^#hL5K1)Ao)Q5yycI;Wx)j3E;coZ)GA2Lm|Q)*8pS!# +$j;Wy5pHhF95UACL&y`Nz^iv@EwStGd55_xCx!l|fF#aS5z+uC9Zjen&}R-kqdI!JoCNR_Ww;3vOIEbx03I +(Q}DF-o`tg){*h6dKb`kpUrFIi56e8`N6QeO^f^_{sbGgOzx+ytZ{Djxr^4`kfR+@2f2C)WXT8?- +;v91$M2?Ie_?!Z`Ov32^#w0igY$jblHl5r>Ox=FyIc|&hQ$@YurYL0#7~s+c +(Dh5eqvr^qU$SjBQFeo?Ey>WNT#}tD#dMsb6NH6*vC@$3Kf50nYw^PKZKFK=s}mj$ +MW_7N`COgm5H!<*!sq(L>`iu(+d63tfI6;Qiiy4%J_%w8=;fgoSy6QzbTh{Unc9<3&kbrMI@3<%I +$xE8r>hYCoQ#y4_k%@C;Jn4(V{$cF+yfg}w}SXQ$~}Mw_Zf6bt&1_<62GQ~U%~ +RpTTCWjdP9Rjf9Tq&qBcB3awg@dsVk3(@^o`2DYw5#fr9nVU&vFd7>)<~4t>LaK{5@$Vyez7na-X%VL +c*+{TyVs;rKz9bwTQlLWCWL`Va?+^H@4)52oLU!47PW%j2;ZsSH)?xiBQ$fEsWU*-4h2fwuC9D;&<4d +xAVh@_GH)T;3c(6UH)abg +r|#Oba-Xby_lYAz<0F|Exp*asDVFvvaRTx^jQl^3+>^4wN6FEtS}Jsa1x7Wu|BWy?M+x_6y$UFRQ2>m +Q>x!SFf)FW%`;};>3iTd&mdc)=7Vz;yfW{Cq&1nUFZlM(0>gVnvz0srJ+cF)GWVlxw8U1J;l(H&(9@W +r3bAuH2gCv9SsipKgGz17qN^)bRY0GsBwgJdu&wvVfZ=hxvK;hiDA<7<*Et(V9q7_2k2PHpOcy!|UOZ +`N)CHZZ1(gCfRyQfp%N+()Aev`%ZUBG7Yo5I_e$f0eq2ZfVL)%$Ap2JoA`X#Pa@QRXAb~vYhR78wM9* +(VhWQTI^x+=q5zaY_kf0)kZ;umO)!T)~oe8Rsn1)#J-hP=76FI(1mRG@`U*~_*oUQB@j{eB)wYYO8JN +ZuyuK1&Ygy>piL$KgkQ6_VkH{1vKbD<_VIsjsa$sQ?+zg7a39P8ZO3`R_21$3V-x{?dg8H@vc-$*xZ? +-)SAVlP=#C$*YH)v1KzYT^@eH?UJ9*Yk~(C(3Bf6Qz;F@Z1FhRfU*nGz{`6fgEN+G=%2lOJ3f&4pY=h +#5}7PHa*=@HMGBw{>l((WGGW?(2gd@-v<}&^7P~oj@-)BsSGi;ph+paXjArw={mitz%6G|5kyD89mGw +YfUf=)u+7dPWMo}@Y=HX}jm1)kKzW)bMO9KQH0000805+CpNd-p4a8L*U0Pz|C02lxO0B~t=FLGsZFL +GsZUv+M2ZgX^DY-}!Yd97L7ZsfQTeebUzJTN3-WjU9Zg##l9_5v&r%r0g&nFr56W=m8z*Al6al-r#k| +DGyRlqiWko>@dMZi!^ESas@D72PP=k+N(CGbmP;gm=AEhS0s1?O<5x-gmq4dn*qIE)M=xYX8fyu5WnD +cDn{8_Pj4D+4a0d?^AAc +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 +}(f=S +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 +#9gX{11|)qw;n$#Ge#J9R9Jep>y= +|j|L4$=n +f6<3ODyn7Xv{1fnAE`VNvoio>1}n+wk@=ojoU3Z0rv4Jhm>kA&U}YY{?F?V};CxHa8H0RpzXWxqrqyF ++JKxz6Urx!4t128$nZMW4&q8rG#y|559J(+L +#@zX!Y4WT9_g9rbKdOvuAK@yX-5Y<^IjrZ!Z5$NW`V@pZTi3CY_bQKp(1=f4_AX|+FBo(2z`Zm+P-r& +w+L6>YgnOHfAFq=M7{OwzF0kP;Iy~w<#Z9AOQ(ojDZz13w=hP$I_jn3;Y68|Z1Y;530g=42Q0=pDJBT +ULJeMW?Qp|kFB?kHsy;m{QP;OyiU6X}Jqw!!Ww8h#{&OV^D%@i1jU~kf*snEG93ovH1r&5BCr*1%q&= +}=W4sP0vYZ)jHiA8<|z`|+4aw=%@c9W?yfOLXJWiJj5&UhM&#^d*#G>H}qEC;l3rQKs|EmVKHcO>Yo5 +*X|#2j0!})_6O8#+8%28C8=MO{t(Ugg{(i9WGw0uw3En>B^QhTS=AZqBPY+y^OMT0roz}b3$|*ngW+n +)j8@6;ZuHcMYSZzrgL>|8icR8-13IFzR4jHbW6vwC^R6@OciK|uaNYxm}e)ae?2-mJ32d42vF&sh8Kw +iK%|rUl|})P{>QUR1#VknF+@qD24a@5-rGuzAOzE*OcN^CtOagfmvp{*F5?JqZAkUv#()?Wrr^qxgrW +PE$=kHv(Zv?(`h+sV{*2&4lA?0C;0Gk1!I%h!n|b!CQek8u-mfB7%e=xcdCmPtbg@POViBud!&Qpc)l +qj`<_O`+iN4H^@AU{w@9%c)vf`b1nrw;%@mvYwgC|*8_{7l>=+6v!O5fXY2>)5EhJ-L#M}g84B9R +8GM}-&!NJ7|nS1|L6$VVP0VE1qaV~q8c}D@j&?$^?Zf}8OR6EFTQ*C{a6)3DbNNnYcilCiabdX8ZLbx +{O=l7=7DNKA;wlwS7hvi73rH~&?{H9XN3;4zC59X(jfaw!ugomxR(qEO< ++7#&$xweIel)`qI?*6BOf#+vu-!Ub<;Z!R=YTTA!P%7KjlR|6cAwm1tvT)a+&wAiFmhp`ZzP$wes+QU ++KzvS-k1Lx;~cc6dvqYi2WzTv^6>Hy6f{tnbl9X;Q7mg&c>2KTbD)QkG6?3=P6>#87b3^n>v?V9l +TY?byR1twg(djlJao!8x96^>il52EsoeR;DgbNTzy2E6Rg`yC4q +({KJ>1JRv6j+Px@{RO!$L@ugPRG)@Y>PLcv!X8rAAM?A3gL$-{aREe@QLm3Hega((>{-}ll{#CT2b;6 +6hTCuwm9G&%rF0EtRDZo@iEWppJR{jC0_=7u(M>{>h)X0POTA_V|VI8IIUsF)bE_P4F`gg4LH~ppV#g +Y1h}mpPd~wR|DZ}|w*oR2Plj9mk{>mZ2zZY;)is>tIf}!#Ve5i(SN5Q8I{de+BPH*X?sJ +?tH|kgT1NeRmr +WZoW$IVEFM^w|uOt?)kg`Uop~_F_=EYadhzrU;c+ja$!AXq6-rA{bvNtm%%cCwc4DXeQ`!r3%Hq~ZVw +de2qKPLR%0$`M)uE7C+t;Y{-FeCgI(3auZE#fHG2*5Ksb^InOE81e&Y<5mjdKiLT$D3v=nJp#^+%lZ_GzgaxcgKC+{>gA`ZZ|Su%;4 +DJuFCeotxbI>4==DVBX(RcW{X$A)y8fLS@!29X2D%vNltVv1&hVUAnJ(1>Ye;w%SZ^>gYkzeSgT`9U5A{wRDDOahB|aVl! +DUkERGJoE-rG%8DuLcH?qCUFPW8?pZWO~E#IbNRBLK1f-u~+cf%*zI7t~#;^1JFjayB+T0|*B#OQioL +1)(5t_G-QpomP?CdDN_n(J=t2eKDu=m4+7PWDTL?T>X(Drty*6MVaXI^oFVp#P)ogIH;aCe +8-lwKc=R8vvTjL2{w?a%&OQktL31cNE-as)CHVH;7n!|4=E)NDads*0=<-iy%JA9^d9Wknlg5^J)VxcIGsxL(NsOr6{-x9 +Do}H7EGUuGSBgrC0VyQRU$WI6`0k!q;q8FVpZ3h>iqb43Bxof^y}k!QP-K=?9`Xzc~;DiPlD6a;0yH# +h{5%<|G+)L@1tuQHK`o|?SNAva4o_b;B9H>3MMK=ll*yG?)GCd3|!vuA!dvX(=4qwfMJC=A +M3zeOUD8|H<-mfEvnAV! +{Nw?*k}quviJ)aAaFy{%;(18T31&|9yCIvq(B2GLEC@*QsW$#G`-_Qt1Yv}J*t67shuE$Q+n=Ju`hvW +!m%^Vtg8IYD)S*G1MvkyYB6`wg$ja?Yo}ZJ`Albc@=l8H@Q|nq)fRYK|^((j8@!Zy1+kL+M)SBIhG^c +)D8Z{JS~~PkSUX!kfg?wKQ39i;#T=vd+=>=J1~1T}tiXxB=t?yIRAWnfF)Fxdw)B+iFUCVk|2u-8W#3 +%r_Ro3K-bWRx-Zk<6r8wBC*7OUm@Q&8muh{g}P@7Ug=G?ZM!`B&|2+P?M-nOW7FYKv;WUbNYvs@24$6 +C?V7dp>E4jqT+@$MiQhPviU0#X6V(RR-SVV=YufI3^Y|@9WYd%J=zjrFO9KQH0000805+CpNi_=IJE; +l)0Ba%u02BZK0B~t=FLiWjY;!MRaByU4a&s8XIF6?r}k+gHS<*<*o? +e5#VZxI|yN +jE2`&}oFuRzS{a{1>-&a>69+$Hd08EgD{_JM(mcp94Ka?_mzx6U-}>mCn2gIap<4z)uYP6x34j2k|

    i-_*;o-;w)}gy-#feTF0Q+s +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 +shS1{lL^7P-5wj+cHrSI;ribN=kXpvczFCO!t% +aidB1OF2($r|@6a +WAK2mm&gW=SA71$5v9004Un000sI003}la4&UqX>4;ZXKZO=V=i!ctybG^+eQ$5*H;Xv1|m_3vE&+c+ +}cIsI7I*<2$B|gXbWORj>wJ4U1oO~Sug$e&MZlZy7U6Hf+35`x$T)Vm$lIqB+0sQjlm=VS=HJ&5G$+8 +#$nPvk4D|O!Twk3wl&)RsV;?EYg6^l8)1}GxgCv08LlBOg3PNQdEVu%@7oD +L>s9NL*R&4DQf;Vee%Mz8S$iD?vp0bkin#RYC85Cr$^b!OCzuH-o3TmTsBdQ>Vp9_-Mh%Ic8f>KbT^L +9$99??Li{nJL9M{t@P=ado9jq9v!3Yiw*G184;yD3`BUPbB}e^n1o?B%=H3CC`0ks{ol!sI2L*|v$`P +p+CIN0$uqMVcqp;&X!D3O=P+JNVI2{#L}G2V=C^I~c=Ohg3({$5F50N;2y~|Nef|;+N%uMO%mq}gi#k +>yj*YxK6!Y5V>GHyb*Frq4rs6^*Zg3NJT*GA-No%YG54{bgwm=jBQOg!wOTuQbe!oDlQtEGn +u6MPmJInO96mLQ%CQiR!p#fE2_y4s>Mp)oeeAoQHJi~P6=W+~h!dDEyvcP8&X-t +u#`#|J+V8h{rk=mMQ)F}q}|bXaWPw5%)g1}^B{^TuLyZDyS%!-Zegm3BnIP(BMD6q{_yU5pNzX-FJ>= +(|2q0D_D6iF{wSCZ=@JboTJ3q*_xqTCgu%m8jVUMTu%~aND`4SCPsOSnA;sQf?{FIItQ~#=$hEtHXEu +OmaKNbdjdHTWkFE3QxFft4rNtrdLmCTV73W4bbr^WxK@`F5?GZPbcL%{7>T$HJcXxZl;cnWUt)1}S(E +q51oSm9|28OacoCwjIe?;Iv7OC$R{j86BD_m?%DGW`ZzOVA_X}%#HDdIRPD`^gQJRa}3AHxGvo~Ti6y +$%fwa@u?FbNFU7CJlf;zM_ul3au9Lw=hd#aoJ@9rp#Ll&!pCMzqF7wUU_WnOJ@&m%jNuN5&8R)IFvpqiZQ&V+9p2E+P2h(N2}hN7lxIfK| +_issXi{NGhAqQAF8&K8Vm#Pjr!<8c+u!jP)h>@6aWAK2mm&gW=W|u=>&ZQ001%z000vJ003}la4&UqX +>4;ZXkl|`WpgfYd8JlSZ{s!$e)q2+dN{-ZQUkl~hM_|rimqGxu)9Os-5!dWxH3Kntp&+nIA`6Ho;D~wsBluO^P+0a);~$)57Mly%e;E*Ot +sM`Xou-z-=W_Ut#MSkIOZ?077pp*b)MMtSx>C8Jt(bY$R?e54%bl`5+w&Am$)Z8kNzjK*I&g`XA94?5 +vp~Gc9hfM6ulow+1xVpqDG9RoG|A&u5=MUSHi_c(i*fO0%$2bhSwuPt(8YL$4+{ME*jpBz_R4# +_WI+8Ul{Mj4I;klAukyGw?BN>t=@n0Zg!7;6k2%C(Uv~7t3PBB<|hf@b98ic20JI3hWSJgt5)f?hq~2 +4HCi(K2+x{AvR_3di>)W(KIALGsj|F30<*{qBTd7gTy%SEUB^aC=`0U95m=cE +x%)Sci7oWWWZfdVoF0u0BfvC0HYWC#|Jyx^k{hiK47PbD8w2_{JJ2Q3n^EboJR3SYj0Dtj6*{Rk{b?R +#pH!8zt7?-=Q>NatvLnfiE6;=pwEB*&vMAt(?5_=eG~5i3o3-f5zY?^Ufu5Lq(3UJHfT#uuIN8$!)*B +hj(j8;g{Yx5G|p9RtgWU{Geb#_5EjkyG>px1VnG%I^kU_h_fPPnnUsboelz9E{Zq($ADjT#*)VyKmxh +{?dqJ$6u7OboQI!%#78A?3}<`KZCb0GCc8`IVO)I*;7+JEj=SK)l+iu04S2o+6H4JQ`Yv()Bs^YB=tJ +EZXQyJk;L5$b2z4OI;SI(c#L>Hz>&mWVxHwX6Bn&LC3CkM)Atz?_aeonDbXEx?Piop_ljxxZ*PTQ>0_ +<7coDdW{qLlYbVM2s-riBOOBw5{PGL)_I;Utka%zWF3fqD-DSg1o>{hcm)pJrf4bkg(m@`H&3Q>*@{w +1C5>gklo>!=I6B^GK2S6rU4e(%S1I#Qe+;ACa3esl|Yi{js;7g@Iz9Adg1@ +jJ90D>1cw*vT0-%{nTPLT`}=kW@G0SD|-e?;|nUQ{8BBUPvdgTyWIq+2D59+rL +cas}s1p|N3953>o4QbvMy>KQ4vyC6aWAKaA|Nab#!TLb1 +!UfXJ=_{XD)DgjaFN4+cp$_*RLR)hf1wS6y4h}5AzatGvGRa9UvHrK%gbc=0=eMNhNWA{SGgZC|g;p7 +t7?ieCK@UqDsjc<$2YbR?$31tZt+-h#a)!t)aR9pCsYDkiyVc!`Y!b;qrK7;&|~FpNJ?qRk}NuI!TN= +|B@hh!kIZKN=mCtUkln8w07q!rKB1OmTg_1^IjYg9qA^O4WVHTE@a&h(>gxEd8ifLu+z5p!aCj+iKT>k#kH+R)lXh9EOwD2f +$#@vqzulfuL4+@b~ANr;TaEC^4t=o&Lo0ytugf#^rj{e9pLhu4}2a-=FLX@$IkwU +COoUVO?thS_Z9ewQ8fC@7(q6Dv;Wg>eqCx0(VTYUxL^HBAfbN_3#XEG<#xB0oE0R;s32gB^`%&5RXbL +bDPS3?4atBc=}v1TdXMPoI6xjPlZx$pqm%x_ZOXPu^1EvT&p(k1o@Y1x2AfguNxksC2M2NADu>cXRYH +14{)bTBEhQ0DeA8Rf8T?Y1bY73D|cItnbPlrke6<4jv1s%4|U2<-Y)4O*_}<##43sHUw93_UoEuJ`DaVr-I)^2c*Hu_}Dwavr*$n?9nMl9(xAsYAXolWjvyq_>h%; +z~SlCvUJp|-~X{;O0j6K%rgKFvE{b_g&wDwA&2y)kW`HLb=`rf_kK!m-u#|<*HCLjtXg8jaXZmkykM$5f{ey{)XgS9WE(P>vsH|P$k(LgCMUZS=^1X)D33 +_K{rAP|a5Cv_svbeM5&?pFQ(A;jDJ&HZi>W4z2J? +zN^Q=!KinHotlv7w}rQGEjz&XzTrKa6gogq|0b7d0`Y#r|3U4}+)2CT;A??#dO75~uW39X6n{eGvZ3O +#vxiUJ6bb{rkWU!i1*t(iRsxRbqV^armqfa0AcLaJo6J5R|_zt7r8G($by1e +Z-sw+frLFuoN#pFLwO9KQH0000805+CpNk~-K>WKyb08bSF02KfL0B~t=FLiWjY;!Mfb#!E5bY)~NaC +y~OZExE)5dQ98!Knx$54QG#VFQBZLy)9v(DVgO)}qS-fsxKJ6Nyww%8pU=zweHErQ~!5+J2ZmBofIx9 +-q5=?&yV9Ig8^(X-f@p%tT%&Z5h8YDl09-)%RplkEh&%6*)BDcSgzPJyW;0Lf$r?%0vaX%jVN;%w)2l +-3n1e@d{+BG;2kZ`-RA0v;b8k_ng!=OIM(cP?B-O+PSzM>}`;!9CvSotg<|d4J1mYX2#y1y*hdQ{-Rr +*s}wTRtbVh3bJoqFZQP>rcKWZ2)3@>Q(ed-s_~h*EjOkKJGNP0z=y)ZxEqMlV)u|}0=(K}01a&I(jNO +8bg*0ef25EZ=UoIkG5IqZdqas;Cavu}Av06*elgZ@b^!yoGbo?SdIl4TJpS`?fhb-9pFyG7Pd+Fug^M +k#Y2YVNP2e_6T1sdmTk40$4xf=`PSn?d>V2aCGV#<^vsU7kKee2O^G6n;Jr(r8GZ6)9#fx@!z?DeVE3cdS|XC=7zsjt`5`RVhdh0yR +7I3s7Q*c76Ph#5;ttwGwDa<8ZC2|KbF7X?K)TWf&|Rf(xr>NZatip(X~PI#aL*1?xRaTug!UW6m8K8; +4`2{4Xq?Cb~*yp!P8dOzuqN%X6yxQzH=fuH&Ghp{2mxlGy;YdWQ{4cmJU3mY;>Q}n^sILm +{emv4jWIQ1o7!s5C=!mfE8Hwo%Twt8x!_dP}hyrw}c5p=Hc+o250cAG=O-aNS3i%)loJ=&J!D-ZasI6SP9dPn3c&cd)qH}zChA&(9^07p>GzPkWH#^9Db=13f+@(%9C^NGyaR!m +>jrWs=){LaT8PD#{u>(85uCUP46&JT?)}!nHq~{)9+lZRDnW%x>61QX-w;P0YKw$7Z*3pH%n5pvh@%E +_lx9{g#W@~L|%){=d!MgG#Vrl5B-a80_imDdaK6A;+f_ifIMJ;3HkaLj>>zHDp;bRFh*)X-Ja?DT;Dw +zN)unAlP+(*orKwM%FG$a#1N8+TAP8;dri4{mf9Ttqb_lg&Za`w%jFJ|Z|)T9;*x26hQr%u%)qF^S`0 +!hJTYIC~E3B#rsBYtbM98$YjS7G$rSPl>MO39HEDx7*?;|8Pq1X74L5RQ~q+x61|rD>N+t5;2%oPIp) +x*Y1~EQ&Ojt*Ct|Z6eh=oc4(I1T5%WNTB0mv64VFLg6vd^=9dy_KQ8P>r(}J(JiP8DOCuc0R}7ltnD; +ywHTSFaLluv>?(~{eS5CQnLTE$LD$v)!sB_@z0gB--ZOa0p0YpKkL=gq@Xzl*yFX(}8o1dr+k@%4U+> +=b;BQ0Ga}egwU1{)Q3`5tgxt4uzc@~V~xr%91kZl!H(0y)!A`{gO_$Sv`4tnb8$dE{LVIW3Ea#3EI&|fnE^lD_r%CXtXg&lG}q~pWTlVN2K-G*dWIK2uqWWW)G; +QEo<19H;gBUwHcn2tv3cJDEsSWP2gVr0774p092YW~Z$UoM}xHnrd5AtU3_a|{Dsk@dI@h+J#?g{F4W +W4c^f*n!~s+PtpKBNyt{hM}l3448hbhJ8wXIy3>fWt?A~Ky-tswTpi^9Ef|yd*;ruhcN7&42Nf43t+_U!1M&_aU;2|M>W)ga*$B +A_pJs15|60_P?Lg*ABTM$m9V`%;8ZuD`(B=&A4q-yc2{PF0*A3HPRHHNK-5$*FH-p+D0oq)&n9g+wn{ +L2<_GbxWl2@oo8bwhK1_japfGWt%hB7)CsHuLZI&WDJC*e#G25uztTlEwh3xXrfSz +8-O{kE+nf(>($fN*c0W=?2z;HxQ~KT+ycn<3SyF1=7+X*Bvj-8DzOaCaG+n)e{YvTWT&00=Ojia>q-N +KZQKpEz>l&dPkPAZ3GAf$ZT=VJ2M{I8eOHASY~o5t|2NahW4cR%+}A<)cEFOD#`HxAnN++^jMWP_NVLN+m(I +_tcfZm!je4n!II(bV=G65xb~~%U@|;_q&ogP?kF4~7zBJHfjA^zrik;qGgE7U>Z^7;cB0On6V0K!D|%D(4XeE +=1Pt$m`yEOeSXP{!ao$Yjz5|+F~G?MgKlLD;4%dda6|sIq-DJCh=njx?Fltr=QjPqd+L7o9O@9YzJ-K +jQ3V4{U%LQyZwqOdx!6B8zuucKhkq^$bht163#Wc_hNdi$#V@u7dXcIghYn=QLFhGJo-_t)d7uml&c-aFjon>tN3n&?3wO-G +Xx{R2=-0|XQR000O8HkM{d7NYV>y8r+H76AYN9RL6TaA|Nab#!TLb1!pcbailaZ*OdKUt)D>Y-BEQc} +;+_(f`Xzjy&IHLGc9gQ>EiFx+aeQl^FeaXml@O-*8>wgg7GjS-+bv`;D$R{! +;S`cIKF%jOw^58y*wQEhuv;d>w2}`LIpB|IJxUR1^z>e*n7pny>X#+>pIlBnukUH#oOwPY?y +@6aWAK2mm&gW=ZAZkd4;Zb!jeedCgi|ZyU!Ie&??kP%y-`sg>=tL10 +ut9mh$8x^`eW@IxFdhPy*@qUFqXXI2!0{`h`pE_)%DbZr-H^&pA6GiT2AJD1_I)*F^(%f>df$TB83m9 +8!03!}@%ip+nWEXS7>@=hA5)npPLNGocqb!p-Qvon6Pkt@Z^xY2)_vzzN5uV25LvqCI+Q`$@_o2|JjN +>N7&R>6KiA5Ndt1syd{XMwN~+bwA5zIG&Gn|@HXii;`t|p3-rsbu8!Jl_-!65%;Wjh!53#o*4TR&$ +l_2H{p)9u~aJxFY6ROa4C)oYLyR@qHsusqi3*IjLj@NT`t@2uIh-it=CpNA{S&6#kd-lGDrc3pAc`wy +`!v5`_pRT`unZ5Ys?aiCFQ2tME-iHs#iL*^5l@cxEH~!;fV(Z;Acl0q`tAm!iej1`-gw3NXsKba(Kx)}LyDa96F!k?$9}BqcFCCYut)N*f~=U^QR +!n&*~$6|!wPEN!(rcq{GNuZ{W%brVJ5*Na0o#Y*;Rm}h7W3{Tm)7ota859olvVY9pS0_7s@@uBDoFvL>k$Ma-f^i +H{c_vcGt*eCd|BXg=|&p8sqL#&+>08`YvmjGh$TsJ@wII%<3nO^)3Dk03L +)2aLWlfz+Bkx&My&}$n9E)ncXn)NIprz2cLj1){Ob}M!Z&1=U~2+GYvio{ab8;dW8_Abyl#yhbOmQ$5b1LROTq +6Q2+I}JC?H_h+o4HAddV}lbA#d2SLLd^UO2#BxTpuDa%l)km67aUv +lrBx_5;%Ike~LbUeAbfrV0mGDuYlWW=4{`jy*C3KNi)QqNYki=`sp&OwcWiZ7vQMzNy$O83@mkz~7;` +5Kl$jI2Qvi^Y8f_rS_RlzfN30+}txQPPJjLJ!)lC8ZgdSw%{Xszsae_W>;mLNWBjq-fro?qzks_`t)-{vXgWgf=R0 +9_6$L1l5_zu_V*(xA?Y3l+uVgvlD16kvoq;PP^`t{W37m&_Z8(V7L;z8e~a=Ci*1jFOTA%3641oB+&q +sN>Q3s$v|??cVS-Aj5OOZCsa)yN`+0{Lg%|{@9(!py3}-b!LfX`aA9+7tl!#nJbXho>YhG2NSHzvUz= +9WrWIiW?8_M^Q9C-;+0K&ikg>AY&!SO-=pV>k +D5y)KlZoa#Md3T#f1=I+*s1sS|<*e>zrrYW8VgyopM?qYn~RBhn=H1qXkWQJHZGmh+7g? +0{OOUSVGi83=N?gC<@b(Q`Byh9A&YE3!~4nibg0g-4n01#Bs;)q^fP`NP +7dke87O#=_1B8So;xg62^zMi8wg1)svoVZjN;2LgNig8WLPRFP|P%Ir$W}n~Fh%y^0p)C}?51{*VU}3 +LT_;h&n1|B8*aa0_Lu)#jQ5{Q}Elug+~Hrs1jVWUUvX+ppI8$8p0g;K$Z-L)db{343|0E-n`*FC!xDV +=qne2iXZDsf2jj6J{8vS5FRTDNnB&?TnnA*%2@^juf$ar$_OBZ0Rm_DoMP{DfV$gh(UPOEW#jIr4!;y +MY#9pX +wffB&v2ab*b7}6sZ*cxU==}UE{gs;6B^_E(-{tkarSX +j~X{SUjs9@S7=i5gQpsgaErnQl0 +~L_0T+g7uDbDsRi}ZGEZ#T8mAAxX5AXU8_X)+{8GEr7Xi>e~99F6urHF4}MRdDRgRNt&+RlSEx@gcr_ +iYyR7ux8WS4=mxAG$dGNPAQfk?e>9-2SW1W1pi+d#AzQS5If{f@HAIM^5W1&icN^h%F(fIuHNmz08Zs +UK$Q;n(b4g8nQ3^fQN+n7;lF~L08;+l?$#tdb}tG${5HRn4k$8-z*CLtoMqPTA{i*!slm7y)2tS4*y> +W?RYpTbL8?^@$enrkA#sz@5FTXNYxN$ArZoZJ5qmbY@r+Lo_6KJ^uY`R%aV4LBNo^6#O&1%QDbgN__Rl*l!}O)pZl5Mu +LG&W$wM1cy$an$u4vkaqG-6raWc9sa51{ezw4g;wm(YPdas!g(-f&^U-&aQV?PQwp3IR;+eY2BH`G7U +H2@1YDrQ2f-^T>*N*!D8!ZdjQ{v{0_&CqY6vJg3^>8`YB+|lzi)K`LjdbG=%)|7qmuZ&yrSbDPr +;o-2o`nxdW%Q`R1P(F3CR)-+@~^S2R5k4jK;`o(&g{I$EiOT)h#u3+!lUA_3>WvClwE<-+xGxh&OQ8^ +F9oSN?>9~P8D6SVgtA>ns%$QY)@A=Dz*QdSbsWu;7lw|RhdDphvA +t0uJSf&Wj^@S1KN=}Qaynx-0>WEcnP-=mE4*(=$D7M)SMkeAR+rM4MwrX5{`BOVFi;OzH7FwJP=8xSc +VsW!L=)ZgE9iwLW#6_pXxFcQcr&Jy;ha7sLj>5Yck$SP$>2U=NXTzj&X4JMngp4w$rIDfT_?aNEsq_hFlE1+RQVLBD!HT!_-r6(_B +@IHbLwG5qpxuRbnKpCj}X`y7o)(dTb)qvD4#G4FrW93eG08(;ZxEP-D}abvEg7au;9h|Y3n@R +$5{c!D@kOR%77YSagZ-Esu7l(UKXyWQ|`sC@K4?UqxrE!1~-^*otUwb&<9Irq+vf(}b*?UtHbEWrbtm +u3ADGxrN@1~K(NK5A4dred6F;&od(Q&HXdVL>YENq=0sVbde#)!f(Eqd+m~G5VUmP!QT+&K4zCx6IJpj7u`;Y^c-q3O#;iQ1}r +ul|mg^G1{aZdUNU_rdPd^qa7QvwZxvrp>&Gl+PXuAO15*0xNif|9rdjM^ZZVlix<~^CTBUGl +?Z|hy}Ssu7dJ#qf$IXP!QFbfwH&L>t-CfwUHpeoX~vfW!1-&QYJuV5wrc_Hkn?5klXjVQS>Zd*W{|zKM)sf$a;+(D>{tE~Z&u)Fh^#qBeD +zAoJwoNbr#kO{0I!LN_`K)@ggRUf{(3maV8oD`buEDc!fCy5fgH>Hgvr0lE;BB5OQuzZ7QIHI1!ZYK> +pT^zrY%cp@#qM8E>+MlMK4Xj2%qCb8F(sYrc`>~0gob)hKQ_RHUw$8FU9EQD>pzCcNI2!I30PVq>?dC +S}ve71aNB0mZXRPL=6w?NZNxoT>MP;KYgsjBPFxT|H4wr792I?|s-uCKj&(HtM^E4Bh@hoG%zq( +@KPADyloFzqGsUn*(U6*B{s`K;nvz02gERI)oRVxw4Om6WF<4av+btPi+`|Qj<7fR)Y`;isvwanM@B$|YA?Fs_+-9Mf-azPL?9S;2O+oAHvTuZry!c +HNG`^_u}`^G +o(5`e*cyIeQvCWoaRF9#m|@cY+bImEvney_qRj46x=^r9yvc0HZS=(0NO6)qX1njd8AYu&!jLUi^u6bWTkBYXvDEN|SB8VLb +}MF`ITO)3Vi3im0Y||C`XMfIT}UvYhMKF&2&>F|MSq1t7nb +xd13&pBI_}0xGOg)Tsd92g0#pbh{nkqcGh>$wC?gX7e^EH4h%Jp8z2=8k- +J-Uvm)#^|#u{hCX}cWi)LV>ILvNi<)E3V13;;T&*D(eDlrC9>4kV3~_*gKnecurwyH*4N`|bRgV#A>? +Q*pC<`sCLLDqq_+Y}9zy}B4Hkm&|bJt8)95QH1`3fE3vq+1wV@7+KKYhYrubt7U0vE%=Ox_5VJp1F1R +gtAajk^mPJ7*P_h()tbnaPS?g~WJYJMdvdD{5RZ^!S^htEH)DR@PSn>__Wbum_L7{nt~H@P2bJQr-&4 +DpR)S7&HLxv`$3&%+B0YRjHpX7LZYI>LvK5?V>!Cd;w*~f+*?*Qf%`7MHPjZ$bLjS0C&~U +EI1#seTV?>k>pywEE-;N?OP~Xqrkz^{j<@U__Pfl);xS~ux98CyXEF36fF|P!I&IANV?Wf0TQZ@O0?Z +p4ORKlKgy939pyE~qeNBa~WKNVClC3j{LYQ{1;t0kZz#jKVv-K!Hic1KmZ; +R?jL<~(f(=FNygTKcRSA#=%=ixQd;ah{$fm0zDYECFuiwF}=kxwF +3h+<>K18*KQQHG@zknx;pAY{j%Lkyem-MZj*jgUATu9bg@GxkC5v(%rZSSIaXOCw +e9=BG244_^y

    WgM@p9D~|&=DeKoq<(tAWdh>0{k$?%Dqycx#KovMT)7bTMf1k6H4?Rvk +2=ba<3#j8%1G>KRO5oFTt$gCD;*|0i{}?1_NKvPXK`LHhq}4&)rtM+@gUfN2Sl?--2d0(RKo&w{A2T6 +*$a%Mpqo`G4k`@;*U5zra)4O +8{>V2~Db}?@(HZDvLa$;XsG_whu7&5P~k;3&g#>}#SGy}g}UxVPTufLc>LP>NuyqmfAGzo#_nG!rbJf +dbMf=$fYpiVIkIP?g91*as8*p{aEWZ2fZ?-XQjvRmUq=rbA*`7ScP$D+^lX3>`04AZsz*L$y3cW}&h-}f>F@PEhfDj3pyhCXG8+E1ijPZs-m-L){ +&okIR#1EnNfW$aRZW6>qT)KGKP2hjCu{lK|ECXD2ioq+q(6b{g3}O;ZnCkKf!ayd%+4Ok-Sj2 +37dMxg8^yLsP{MdG=fvscu$Be%JvDi^UbhL33ym#RO5WLWLHhS)}bNqCXJwDd6^XY-(s5MJjzdpojbl +R{t>3>cK@#;pFC4%T0mo`3tt9(=ykC3G(7_u7u8XQ7;7ss>&++|Oi*f0r{lqhxpWD}fFjI7<9)Pe*-znL(_MO6L^G1g~8_k79AU;QJ?tEokN3 +SY0&1Eot%Sn>(a;m*j>R`}iJ172Z!k29C=RIoj+WEF54t4(dbk7J{}-W+@b3Xum@+s?JA%7-(4kEJ&B +&7_g_%JDU!J|6wu&%%sJ?nXSmo-adT$@h-*cK?*hc?5s0IuDrD`8R+4pmQA~!z$D6z<3?_exbIU;`BX +EWwA`cqd#G~e=+{&V6E#B59{b425#%0#(9pIJnxU3M&3*^X{j@Zi1FP2}6EI-wfI@pmV`8NfM{qEp&OsO5DxH?vx<{`v0sacGNoq(j^S1v(zP;0|#ZItZ7i(%8pUvrqjPn_&oRU4iyk-gde +!bo>$HRSHIai4FuF?^AQIIO_61>c%%DMJg@>T6 +iLu+SL&AQfIKa5Q;$%!5u`UBS?s_G4~ZNo-% +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 +U7%4+BQ&(i~?2OLY{%w0?SbG +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 +~y1bD|dIgG4EZ9xaN2qHw!rc-vt +PTAaKuYvzW0$fdEeBKyM +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 +bkhlC={QTv0rQ#wJ?kq?yb@0{1m0M?}(} +hHX+0_JhhXL=q(!aomuG})}7x)ciDurUWK)%%bTm~jpZBY)F@@?j6Irm)PcWH+OghBcpq%#UbU4suYw +Ri3<@!+BGUVp_-y!!&H|2d&B_HeMGlR#rc)Z1$)s4-T3Gr@`u*DHgJ>Gj4=eD+DO2Afhpmqoh;ordzZ +4%|z{Nvcqlwu_P;{;zNNGLdu4!mMoyg>HZW5=tf2h!F#GH12=EEoU?{SN(o0|BluXVxlARachSM9{IS +fgVQ>{?R)hQ#>z%>&g!Y6?C>yzn3}xz<%DfJuSz2b+0{?X6nOTQL=M{L(xm{xjta^-n+)&C6L>?R-Q^ +1Mc*f~Nc~?M_+O^(XqottK6o{GGK(tZ$cSr$SfG@w>}$`oCG*rEHq@fek^ufZpM8@)yLi6rV5&g?M`V +lfnmI-u*JjIew^}=-rwEHiKGZLG-})_48q~9~W>W_1=~@?&0*uEk1)+A?Z8;^@OI*tf=t(Puak`(>HsmL&o;34K9pa;S +yHwi7af;m*TpmEEo#u$A&iuAF0G=1R}YAcY)EG8Vz*Uda>$l*2=u)H=_l~e=5_sH#5rw`mL3M8#qs8? +20dBRWz9{31}SMWxKM%5uR>x;Sh2}r@D2Fsf5|X@y(;2l->oMn8p?o;v{|A=UE@NR@aKTgl+ePBVd(M +M&V?<#L)bUSKMRuA{QxmegOvoe`xzQAzwtCy4ky`BO9fhw>7-5=G<4C)%C|9-`1{fLKhW)~9MRG$uTL +#QWU?&D>HrvyEcGDYsu7~Ey^l>vO>|I1(!vhK-+R3N0iDL|HJcygQ7j|VTa6>WN*8)Q>IeBm277JgQs +oMDrWKCfqKL|l0N=M_exXKN?b>gFKdF8KqwB-rjQ*?v-f+nsEU8k$()|S?@zO*(hn`{RbRrB;VYgBV! +QYGIf1o$uSL;&2zB!K*d4)qfK@3k*ri +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 +owwL4SlOiM+jEA)61!=9 +)wYIH=1D|$DLYIt4}243+t=bzfKY0ANWU(7&QUWcesMaR!Ql!=B#OqheOg`>&dt`cd;paD88<3O8a{< +)#?7wYud8sCOYai)@~@~~U%MJExuQ{hVFhcwZk$F=R$S{5ZR9g61*5x<1q9DRMIBe-&9ZkfDN4QJtO6 +B^%w3d&v>_3Yfm9w#1BpjVn4yE_nqf4**eJpoTc-$K=)>7;%k4=AfLF +nA{6zH`>7j0RID(<{vunBp=tUnciLLHgF4VbPDk96Lbo)Z^^$V+{kEZ9t7q4y +ON33V^g{O`CD6#_tp9TJKDgE=JH_)vpV#ddM+t$zw*+TG7Y4SuHrttFxo+C9~pmTu>-YnkP2dhevUB> +=$JoGwzZ7)oDxdpAqy0Ne$;lCeH-jn|U{saE!*)_V)>ud9W8TL$XImHxC>VNuS{I&HM5Y7#}99lE9b; +v`&$}_~6lG)^u=V#wb7N-VzD2d#y(1iYu#h<_x)}$E9q<*4S^WcwiBT*qsUtAy4`P_E&AxO{i9<**vs +hjONG70hg>=*xA?0rHtSo&lzyWQ7+b$FJQf5i)^*z3XGP*g#ztXPO}$-->M@Y!B9LPsrEMrcdCtl(#7 +!Z#*L>aoB3ZIeHHCdc)cjgC&VcS6#!BoAaK+fg6;BT&MJL})`*lvm&+h8_k|lnw0u-iQ8#{p)qL+tAd +%E-!R*!J5n+sd($qgnNjqQO7ASCnNV2=ybm75UzB#AsqL3BKc;C)kfLtx;@( +;`?UEALMtBUtcb8c~DCM0u%!j0000805+CpNlQtjWitT)07wD=01p5F000000 +00000HlFQ4*&pgX>c!JUu|J&ZeL$6aCuNm0Rj{Q6aWAK2mm&gW=Vn=i}gbd004$A000sI0000000000 +005+csSp4FaA|NaVqtS-V{dJ3VQyqDaCuNm0Rj{Q6aWAK2mm&gW=X57{yU}&007}A000pH000000000 +0005+c93B7waA|NaVqtS-aA9(DWpXZXc~DCM0u%!j0000805+CpNlTeBA$}4709rr*01*HH00000000 +000HlHODgXd*X>c!NZDen7bZKvHb1rasP)h*<6ay3h000O8HkM{dn{PY_m?HoHt9<|f4*&oF0000000 +000q=BA2003}la4%$UcW!KNVPr0Fc~DCM0u%!j0000805+CpNxpiPn7ax90J$Fk01*HH00000000000 +HlFqVE_PdX>c!Pcw=R7bZKvHb1rasP)h*<6ay3h000O8HkM{dHuxp~U@8Cr4x9i03;+NC0000000000 +q=8Lr003}la4%_YWMz0RaCuNm0Rj{Q6aWAK2mm&gW=XdXcbSn0008bZKvHb1rasP)h*<6ay3h000O8HkM{d`Y438OAY`4?y-E^v8JO928D0~7!N00;m!mS#zXiI$3p5dZ*SR{#JO00000000000001_fsWe +%0B~t=FJE?LZe(wAFJW+SWNC79E^v8JO928D0~7!N00;m!mS#zj!N9H{BLD!+l>h)00000000000000 +1_flBQF0B~t=FJE?LZe(wAFJx(RbaHPlaCuNm0Rj{Q6aWAK2mm&gW=Y+|rUhv`001yK0RR{P0000000 +000005+coe%*4aA|NaUv_0~WN&gWX>eg=WO8M5b1rasP)h*<6ay3h000O8HkM{d)>0WG69xbP{to~E8 +UO$Q0000000000q=7t40RV7ma4%nWWo~3|axZUkWMy(?WMpY$bS`jtP)h*<6ay3h000O8HkM{d!60;w +>d*iHt7`)Q7ytkO0000000000q=AQ00RV7ma4%nWWo~3|axZXsaA9(DX>MmOaCuNm0Rj{Q6aWAK2mm& +gW=UWk2aRR{000F8000;O0000000000005+cry~LYaA|NaUv_0~WN&gWa%C-cWo~3|axQRrP)h*<6ay +3h000O8HkM{dA$zv0swGna4%nWWo~3|axZdabaHuVZf7oVc~ +DCM0u%!j0000805+CpNtswpT1XuL0Fre801^NI00000000000HlFOF9HB?X>c!Jc4cm4Z*nhlX?QMhc +~DCM0u%!j0000805+CpNdQ)?I<5c!04@Ol03-ka00000000000HlGxOacIKX>c!Jc4cm4Z*nhVVPj}z +V{dMBa&K%eUtei%X>?y-E^v8JO928D0~7!N00;m!mS#!XR7Rx(0ssIg1pojb00000000000001_fv-& +h0B~t=FJE?LZe(wAFJob2Xk}w>Zgg^QY%gD9ZDcNRc~DCM0u%!j0000805+CpNl@mgEK~&m000sI03! +eZ00000000000HlHNPXYjNX>c!Jc4cm4Z*nhVVPj}zV{dMBa&K%eVPs)&bY*fbaCuNm0Rj{Q6aWAK2m +m&gW=RsN#_%iw000&P001EX0000000000005+cg;fFoaA|NaUv_0~WN&gWV_{=xWn*t{baHQOFJob2X +k{*Nc~DCM0u%!j0000805+CpNqG`W@Xi1L0H6T?03rYY00000000000HlHNRssNUX>c!Jc4cm4Z*nhV +VPj}zV{dMBa&K%eV{dJ6VRSBVc~DCM0u%!j0000805+CpNylKh-Utr>0N^qJ044wc00000000000HlH +bR{{WVX>c!Jc4cm4Z*nhVVPj}zV{dMBa&K%eV{dMBa&K&GWpXZXc~DCM0u%!j0000805+CpNo*!GeE9 +c!Jc4cm4Z*nhVVPj}zV{dMBa&K%eW@&6?cXDBHaAk5XaC +uNm0Rj{Q6aWAK2mm&gW=RfI9{j-t001oz001Tc0000000000005+ch-(4>aA|NaUv_0~WN&gWV_{=xW +n*t{baHQOFKA_Ta%ppPX=8IPaCuNm0Rj{Q6aWAK2mm&gW=RrZfVe0K004*?001Qb0000000000005+c +jd211aA|NaUv_0~WN&gWV_{=xWn*t{baHQOFLPybX<=+>dSxzfc~DCM0u%!j0000805+CpNsD{MLc9O +~0P+C<03!eZ00000000000HlHVc>(}%X>c!Jc4cm4Z*nhVVPj}zV{dMBa&K%ecXDBHaAk5XaCuNm0Rj +{Q6aWAK2mm&gW=WnMR{YBV0040T001ih0000000000005+c^?CvTaA|NaUv_0~WN&gWV_{=xWn*t{ba +HQOFJob2Xk~LRUtei%X>?y-E^v8JO928D0~7!N00;m!mS#!8rw0F91pold4FCWw00000000000001_f +eCy90B~t=FJE?LZe(wAFJob2Xk}w>Zgg^QY%gPBV`yb_FJ@_MWnW`qV`ybAaCuNm0Rj{Q6aWAK2mm&g +W=YeC##E*O007Mc001rk0000000000005+cuYm#paA|NaUv_0~WN&gWV_{=xWn*t{baHQOFJob2Xk~L +Ra%E&`b6;a&V`ybAaCuNm0Rj{Q6aWAK2mm&gW=UAoX*sh1008g+001BW0000000000005+cp@RYdaA| +NaUv_0~WN&gWV{dG4a$#*@FJE72ZfSI1UoLQYP)h*<6ay3h000O8HkM{dJ{6~5ivs`v+z9{x8~^|S00 +00000000q=Axz0swGna4%nWWo~3|axY_VY;SU5ZDB8AZgXiaaCuNm0Rj{Q6aWAK2mm&gW=Y3mz}avL0 +06`#001KZ0000000000005+cSBL@taA|NaUv_0~WN&gWV{dG4a$#*@FJW$TX>@OQX>KzzE^v8JO928D +0~7!N00;m!mS#zP*4QtF0ssJg2LJ#f00000000000001_fe4cV0B~t=FJE?LZe(wAFJo_PZ*pO6VJ~T +JX>@5}Y-w|4E^v8JO928D0~7!N00;m!mS#x}ZK6F)1pol`6aWAn00000000000001_fz6cy0B~t=FJE +?LZe(wAFJo_PZ*pO6VJ~-SZZk42aCuNm0Rj{Q6aWAK2mm&gW=VH@XCdMR005F00018V000000000000 +5+cRGR_-aA|NaUv_0~WN&gWV{dG4a$#*@FL!BfbY*gFE^v8JO928D0~7!N00;m!mS#yNoKcru0RR9+0 +ssIX00000000000001_fpeh(0B~t=FJE?LZe(wAFJx(RbZlv2FJE72ZfSI1UoLQYP)h*<6ay3h000O8 +HkM{dUkP(yXes~zVV?j19RL6T0000000000q=5~i0swGna4%nWWo~3|axY|Qb98KJVlQKFZE#_9E^v8 +JO928D0~7!N00;m!mS#yh3d6j=E&u=s!TbZ>HVE^v8JO928D0~7!N00;m!mS#zYm$jR05C8z$ +IRF4300000000000001_feJ+f0B~t=FJE?LZe(wAFJx(RbZlv2FKuCNX=Y_}bS`jtP)h*<6ay3h000O +8HkM{dJrS+~jRyb#iWmR@9smFU0000000000q=BOV0000000000q=9^00|0Poa4%nWWo~3|axY|Qb9 +8KJVlQoFbYWy+bYU)Vc~DCM0u%!j0000805+CpNyxWFn5YW?01heu03ZMW00000000000HlF%fdc?=X +>c!Jc4cm4Z*nhWX>)XJX<{#OWpi(Ja${w4E^v8JO928D0~7!N00;m!mS#!1|LfZd5&!^rI{*M400000 +000000001_fmV$J0B~t=FJE?LZe(wAFJx(RbZlv2FLPsZX>fFNE^v8JO928D0~7!N00;m!mS#!yn2-# +-ssI20Tmb+Z00000000000001_ft;TM0B~t=FJE?LZe(wAFJx(RbZlv2FLX09E@gOSP)h*<6ay3h000 +O8HkM{dp5nz>TetuK0Db`g8vp0|fwZX>c!Jc4cm4Z*nhWX>)XJX +<{#RbZKlZaCuNm0Rj{Q6aWAK2mm&gW=Wv^1y-*a005s{0015U0000000000005+c6+Q(3aA|NaUv_0~ +WN&gWWNCABY-wUIc4cyNX>V>WaCuNm0Rj{Q6aWAK2mm&gW=Yt60Et?r0000^0RS5S0000000000005+ +c09XY8aA|NaUv_0~WN&gWWNCABY-wUIcQZ0BWq4&!O928D0~7!N00;m!mS#y_%uDYLwEzGBZ~*`t000 +00000000001_fs_6P0B~t=FJE?LZe(wAFJx(RbZlv2FLyRHE@gOSP)h*<6ay3h000O8HkM{dU(}$f4J +7~o%a{NF8~^|S0000000000q=DJ91^{qra4%nWWo~3|axY|Qb98KJVlQ`SWo2wGaCuNm0Rj{Q6aWAK2 +mm&gW=SLOXZ*te000sJ001cf0000000000005+cAlU{0aA|NaUv_0~WN&gWWNCABY-wUIUt(cnYjAIJ +bT40DX>MtBUtcb8c~DCM0u%!j0000805+CpNw118WzGQr0Luda03`qb00000000000HlE`+6Dk{X>c! +Jc4cm4Z*nhWX>)XJX<{#5Vqs%zaBp&SFKuaaV=i!cP)h*<6ay3h000O8HkM{d;$l6}M;rhEFJu4!Cjb +Bd0000000000q=7r!1^{qra4%nWWo~3|axY|Qb98KJVlQ7}VPk7>Z*p`mb7*yRX>2ZVc~DCM0u%!j00 +00805+CpNpBVat@Z%`067W(04o3h00000000000HlG(_yz!QX>c!Jc4cm4Z*nhWX>)XJX<{#5Vqs%za +Bp&SFLQZwV{dL|X=g5DW@k`K0Rj{Q6aWAK2mm&gW=S>=Qr74m002vA001fg0000000000005+c2Kxp8 +aA|NaUv_0~WN&gWWNCABY-wUIUt(cnYjAIJbT4yxb7OCAW@%?GaCuNm0Rj{Q6aWAK2mm&gW=TXsA46h +U007i!0RSif0000000000005+cHW~*2aA|NaUv_0~WN&gWWNCABY-wUIUt(cnYjAIJbT4#aa%O34WiD +`eP)h*<6ay3h000O8HkM{dqMMnVuK@r63bYEXCaCuNm0Rj{Q6aWAK2mm&gW=Yj}4&o&g002Qj001EX0000000000005+c%XJ3;a +A|NaUv_0~WN&gWXmo9CHEd~OFJEbBVRU79ZEP-Zc~DCM0u%!j0000805+CpNgfPsHCrD502F@!03-ka +00000000000HlF0iU$C2X>c!Jc4cm4Z*nhabZu-kY-wUIUukY|b#!xda%Ev{E^v8JO928D0~7!N00;m +!mS#!BMrszn8~^|$D**r^00000000000001_fy}7~0B~t=FJE?LZe(wAFKBdaY&C3YVlQ8GZ);_4X?k +UHE^v8JO928D0~7!N00;m!mS#yN4R0B~t=FJE?LZe(wAFK +BdaY&C3YVlQ8HbZKmJE^v8JO928D0~7!N00;m!mS#!Fq<#JgNB{u4MF9XI00000000000001_fkVv)0 +B~t=FJE?LZe(wAFKBdaY&C3YVlQKFZgX^DZgg`laCuNm0Rj{Q6aWAK2mm&gW=Uh%cihZE006Sd0RSTa +0000000000005+cixmg}aA|NaUv_0~WN&gWXmo9CHEd~OFKBdaY&CFUa&u*JE^v8JO928D0~7!N00;m +!mS#!Z$GbFh4*&pRHvj-400000000000001_ftXkb0B~t=FJE?LZe(wAFKBdaY&C3YVlQ)La%o{~X?k +UHE^v8JO928D0~7!N00;m!mS#!s)2|Pv0000X0RR9d00000000000001_flFuz0B~t=FJE?LZe(wAFK +BdaY&C3YVlQ8Ga%p8RUtei%X>?y-E^v8JO928D0~7!N00;m!mS#!Jl|Gi70RRBg0{{Rc00000000000 +001_fi-Ce0B~t=FJE?LZe(wAFKBdaY&C3YVlQ8Ga%p8RUt(c%WiD`eP)h*<6ay3h000O8HkM{dBvqZM +rU3u|ngjp001BW0000000000005+c`fLaQaA|NaUv_0~WN&gWXmo9CHEd +~OFJE+WX=N{Pc`k5yP)h*<6ay3h000O8HkM{d000000ssI200000C;$Ke0000000000q=8j$2mo+ta4 +%nWWo~3|axZ9fZEQ7cX<{#CX>4?5a&s?VUukY>bYEXCaCuNm0Rj{Q6aWAK2mm&gW=U?)e1IPT0034?5a&s?fZfa#?bYE>{bYWj(Xkl`5WpplZc~ +DCM0u%!j0000805+CpNqy_mwf6!503{6o03-ka00000000000HlHMbO-=&X>c!Jc4cm4Z*nhabZu-kY +-wUIW@&76WpZ;bY-w(EE^v8JO928D0~7!N00;m!mS#yI?VTja1^@siDF6U000000000000001_fhc$g +0B~t=FJE?LZe(wAFKBdaY&C3YVlQTCY;c!Jc4cm4Z*nhabZu-kY-wUIW@&76WpZ;bb75|2bZL +5JaxQRrP)h*<6ay3h000O8HkM{dpN?v+&;bAda|8eYDgXcg0000000000q=9jj2mo+ta4%nWWo~3|ax +Z9fZEQ7cX<{#CX>4?5a&s?tXlZn1b8ul}WiD`eP)h*<6ay3h000O8HkM{df-++yj{pDw&;S4cEdT%j0 +000000000q=AW-2mo+ta4%nWWo~3|axZ9fZEQ7cX<{#Qa%E*?y-E^v8JO928D +0~7!N00;m!mS#yYC&#`K0ssIL1^@sn00000000000001_fn%5m0B~t=FJE?LZe(wAFKBdaY&C3YVlQ- +ZWo2PxVQ_S1a&s?dWo~n5X)bViP)h*<6ay3h000O8HkM{dMtBUtcb8c~DCM0u%!j0000805+CpNkqz4s&Wnh0CqM204V?f00000000000HlFSq6h$RX>c!Jc4cm4 +Z*nhabZu-kY-wUIbaG{7Vs&Y3WMy)5FJfVHWiD`eP)h*<6ay3h000O8HkM{d2MtBUtcb8c~DCM0u%!j0000805+CpNlhb|z@h{I080}904M+e00000000000HlHN*9ZV`X>c!Jc4c +m4Z*nhabZu-kY-wUIbaG{7cVTR6WpZ;bVqtS-E^v8JO928D0~7!N00;m!mS#z1if^g+0RRAn1poji00 +000000000001_f!N##0B~t=FJE?LZe(wAFKBdaY&C3YVlQ-ZWo36^Y-?q5b1!6XZ7y(mP)h*<6ay3h0 +00O8HkM{dBEb+b5(NMNOcDS9DF6Tf0000000000q=6LQ2mo+ta4%nWWo~3|axZ9fZEQ7cX<{#Qa%E+A +VQgz<{p00000000000001_fg$S%0B~t=FJE?LZe(wAFKBdaY&C3YVlQ-ZWo36^Y-?q5b1!FQZg +Xg9E^v8JO928D0~7!N00;m!mS#!wnInLL3IG6`Bme*)00000000000001_fidm~0B~t=FJE?LZe(wAF +KlmPYi4O|WiMY}X>MtBUtcb8c~DCM0u%!j0000805+CpNh{v+Cn5s?09*c!Jc4cm4Z*nheZ)0m_X>4ULY-w(5Y;R+0W@&6?E^v8JO928D0~7!N00;m!mS#yICcJ)g0{{R +R3;+Nn00000000000001_fmQqn0B~t=FJE?LZe(wAFKlmPYi4O|WiM@OWNC72Z)0m_X>4UKaCuNm0Rj +{Q6aWAK2mm&gW=SACaxEGN007Dt001KZ0000000000005+c3jhfKaA|NaUv_0~WN&gWY;R+0W@&6?FK +}sOY;R+0W@&6?E^v8JO928D0~7!N00;m!mS#!2h48%z1poko6#xJx00000000000001_fo2E^0B~t=F +JE?LZe(wAFKlmPYi4O|WiNAaY-x05Y;R+0W@&6?E^v8JO928D0~7!N00;m!mS#zjBMI3(0{{Rx3IG5n +00000000000001_fwK(>0B~t=FJE?LZe(wAFKlmPYi4O|WiNAiZER_7Yiw_0Yi4O|WiD`eP)h*<6ay3 +h000O8HkM{dJSkYli2(or&;kGeA^-pY0000000000q=7XN2>@_ua4%nWWo~3|axZXUV{2h&X>MmPUte +KjZ*_EEUoLQYP)h*<6ay3h000O8HkM{dfp(V47y$qP0RjL3ApigX0000000000q=Eht2>@_ua4%nWWo +~3|axZXUV{2h&X>MmPUtei%X>?y-E^v8JO928D0~7!N00;m!mS#!jX-ebE0RRA80{{RZ00000000000 +001_fmIX<0B~t=FJE?LZe(wAFK}UFYhh<;Zf7rFV{dJ6VRSBVc~DCM0u%!j0000805+CpN&5Yy5_16n +0Eh(u03-ka00000000000HlFl76|}wX>c!Jc4cm4Z*nhiVPk7yXK8L{FJE(Xa&=>Lb#i5ME^v8JO928 +D0~7!N00;m!mS#zPEGt(93IG5mAOHX$00000000000001_ffE=B0B~t=FJE?LZe(wAFK}UFYhh<;Zf7 +rTVRCC_a&sc!Jc4 +cm4Z*nhiVPk7yXK8L{FLGsZb!l>CZDnqBb1rasP)h*<6ay3h000O8HkM{dd_{wdj~D;|d2IjyBLDyZ0 +000000000q=67A2>@_ua4%nWWo~3|axZXUV{2h&X>MmPb8uy2X=Z6c!Jc4cm4Z*nhiVPk7yXK8L{FLiWjY;!Jfc~DC +M0u%!j0000805+CpNe=JEpc!Jc4cm4Z*nhiVPk7yXK8 +L{FLq^eb7^mGE^v8JO928D0~7!N00;m!mS#!GEkGtsZ2$m1lK}uF00000000000001_fy__|0B~t=FJ +E?LZe(wAFK}yTUvg!0Z*_8GWpgiIUukY>bYEXCaCuNm0Rj{Q6aWAK2mm&gW=Z;5ag34#007Sm001BW0 +000000000005+cT)qhaaA|NaUv_0~WN&gWaB^>Fa%FRKFJE72ZfSI1UoLQYP)h*<6ay3h000O8HkM{d +55q@_ua4%nWWo~3|axZXlZ)b94b8|0ZVR9~Tc~DCM0u%! +j0000805+CpNh*KwFb@L&0Nw=v03QGV00000000000HlGL#|Z#%X>c!Jc4cm4Z*nhia&KpHWpi^cV{d +hCbY*fbaCuNm0Rj{Q6aWAK2mm&gW=YQM4^I07001Tn0018V0000000000005+c<;n>FaA|NaUv_0~WN +&gWaB^>Fa%FRKFKA_KaAk6HE^v8JO928D0~7!N00;m!mS#zJ2vU3K0ssIa1poja00000000000001_f +gR5Y0B~t=FJE?LZe(wAFK}{iXL4n8b1!pnX>M+1axQRrP)h*<6ay3h000O8HkM{dX({S?U<3dF76||V +AOHXW0000000000q=7=x2>@_ua4%nWWo~3|axZdaadl;LbaO9XUukY>bYEXCaCuNm0Rj{Q6aWAK2mm& +gW=VDXxhYT+0010K001BW0000000000005+c;MNHMaA|NaUv_0~WN&gWa%FLKWpi|MFJWY1aCBvIb1r +asP)h*<6ay3h000O8HkM{d$g9t&!UX^Tq80!E8vp@_ua4%nWWo~3|axZdaad +l;LbaO9ZaA_`Zc~DCM0u%!j0000805+CpNnB7pCt3*r0Pi0F02}}S00000000000HlFw@Cg8LX>c!Jc +4cm4Z*nhkWpQ<7b98erVRdw9E^v8JO928D0~7!N00;m!mS#zrDnMzG%K`w1LInUH00000000000001_ +f&KXj0B~t=FJE?LZe(wAFLGsZb!BsOb1!3IV`Xx5E^uXSP)h*<6ay3h000O8HkM{dE+307XaN8KaRLA +U9RL6T0000000000q=C!D3;=Lxa4%nWWo~3|axZdaadl;LbaO9bWpZ?LE^v8JO928D0~7!N00;m!mS# +z}SqnXx0ssJ)1^@sa00000000000001_fo{hP0B~t=FJE?LZe(wAFLGsZb!BsOb1!3WZE#_9E^v8JO9 +28D0~7!N00;m!mS#y*v#Y{=6951pM*sjH00000000000001_fkVm+0B~t=FJE?LZe(wAFLGsZb!BsOb +1!3WZ)<5~b1rasP)h*<6ay3h000O8HkM{dX>g)+)dK(kEDHbtA^-pY0000000000q=Eh23;=Lxa4%nW +Wo~3|axZdaadl;LbaO9dcw=R7bZKvHb1rasP)h*<6ay3h000O8HkM{ddD^4OdI10c{{jF29RL6T0000 +000000q=6FR3;=Lxa4%nWWo~3|axZdaadl;LbaO9gZ*OaJE^v8JO928D0~7!N00;m!mS#zucispl00000000000001_frJJP0B~t=FJE?LZe(wAFLGsZb!BsOb1!pcb8~5LZ +gVbhc~DCM0u%!j0000805+CpN!(>A^ZNt<0Q3w103-ka00000000000HlF|A`Jj=X>c!Jc4cm4Z*nhk +WpQ<7b98erb97;Jb#q^1Z)9b2E^v8JO928D0~7!N00;m!mS#!jAj%JX1ONcU3jhEj00000000000001 +_fxagV0B~t=FJE?LZe(wAFLGsZb!BsOb1!pra&=>Lb#i5ME^v8JO928D0~7!N00;m!mS#x{=(3^?9{> +PjUH||c00000000000001_fqE4;YaCuNm0Rj{Q6aWAK2m +m&gW=WnnC&jq}003wO001cf0000000000005+c!%GbSaA|NaUv_0~WN&gWa%FLKWpi|MFK}UFYhh<)b +1z?CX>MtBUtcb8c~DCM0u%!j0000805+CpNpWmS{EY$t01pKK05Jdn00000000000HlG#P7MHXX>c!J +c4cm4Z*nhkWpQ<7b98eraA9L>VP|D?FJow7a%5$6FJE72ZfSI1UoLQYP)h*<6ay3h000O8HkM{dah$& +~caZ=9qCx=xF#rGn0000000000q=BDN4FGUya4%nWWo~3|axZdaadl;LbaO9oVPk7yXJvCQV`yP=WMy +WppoMX=gQXa&KZ~axQRrP)h*<6ay3h000O8HkM{dd +9qhoGXwwt$O!-dGXMYp0000000000q=C`q4FGUya4%nWWo~3|axZdaadl;LbaO9oVPk7yXJvCQV`yP= +WMykR; +KX>c!Jc4cm4Z*nhkWpQ<7b98eraA9L>VP|D?FJow7a%5$6FJow7a%5?9baH88b#!TOZZ2?nP)h*<6ay +3h000O8HkM{dIfAWpXZXc~DCM0u%!j0000805+CpN%$G)gIfat0B#2W0 +5$*s00000000000HlG3`3(SYX>c!Jc4cm4Z*nhkWpQ<7b98eraA9L>VP|D?FJow7a%5$6FJow7a&u*L +aB^>AWpXZXc~DCM0u%!j0000805+CpNx<0c!Jc4cm +4Z*nhkWpQ<7b98eraA9L>VP|D?FJow7a%5$6FJo_HX>Mn8bYXO5ZDC_*X>MgMaCuNm0Rj{Q6aWAK2mm +&gW=SCX-8oSL004yq001ul0000000000005+cZvhSfaA|NaUv_0~WN&gWa%FLKWpi|MFK}UFYhh<)b1 +!3PVRB?;bT4CXZE#_9E^v8JO928D0~7!N00;m!mS#!(Rlv`-0ssIv1pojt00000000000001_fei!>0 +B~t=FJE?LZe(wAFLGsZb!BsOb1!gVV{2h&WpgiMXkl_>WppoNZ*FsRVQzGDE^v8JO928D0~7!N00;m! +mS#z-1}4T#0{{T_1^@sw00000000000001_ffEM~0B~t=FJE?LZe(wAFLGsZb!BsOb1!gVV{2h&Wpgi +MXkl_>WppoNa5*$NaB^>AWpXZXc~DCM0u%!j0000805+CpNv18*IdKF40CNlg05Sjo00000000000Hl +Gj3Jw5pX>c!Jc4cm4Z*nhkWpQ<7b98eraA9L>VP|D?FJow7a%5$6FJ*IMaB^>AWpXZXc~DCM0u%!j00 +00805+CpN!CdH%*h1+0G}QJ04@Lk00000000000HlF(4-NouX>c!Jc4cm4Z*nhkWpQ<7b98eraA9L>V +P|D?FJow7a%5$6FJ*IMb8Rkgc~DCM0u%!j0000805+CpNvwRlMGFN00A3CN05kvq00000000000HlG3 +6%GJ!X>c!Jc4cm4Z*nhkWpQ<7b98eraA9L>VP|D?FJow7a%5$6FJ*OOYH)CJZ(?O~E^v8JO928D0~7! +N00;m!mS#yRWppoPbz^ICW^!e5E^v8JO928D0~7!N00;m!mS#x>v&Q5Z0{{Sv1^@sw000000000000 +01_f#Yrt0B~t=FJE?LZe(wAFLGsZb!BsOb1!gVV{2h&WpgiMXkl_>WppoPbz^ICaB^>AWpXZXc~DCM0 +u%!j0000805+CpNhMFC6yHDq062&M05Sjo00000000000HlFVat;7+X>c!Jc4cm4Z*nhkWpQ<7b98er +aA9L>VP|D?FJow7a%5$6FJ*OOba!TQWpOTWc~DCM0u%!j0000805+CpNiCu{R2c&R0E`9z05kvq0000 +0000000HlF^vkm}oX>c!Jc4cm4Z*nhkWpQ<7b98eraA9L>VP|D?FJow7a%5$6FJ*OOba!xaZ(?O~E^v +8JO928D0~7!N00;m!mS#ygjr0xcLI41(i~s;L00000000000001_f#|jl0B~t=FJE?LZe(wAFLGsZb! +BsOb1!gVV{2h&WpgiMXkl_>WppoRVlp!^GG=mRaV~IqP)h*<6ay3h000O8HkM{dAGO=|8Up|Tkp=(&H +2?qr0000000000q=6**4ghdza4%nWWo~3|axZdaadl;LbaO9oVPk7yXJvCQV`yP=WMyWppoSWnyw=cW`oVVr6nJaCuNm0Rj{Q6aWAK2mm&gW=WT?nhw +5J007gt001xm0000000000005+cPY@3PaA|NaUv_0~WN&gWa%FLKWpi|MFK}UFYhh<)b1!3PVRB?;bT +4XYb7pd7aV~IqP)h*<6ay3h000O8HkM{d8-?V^OA`P9luG~rF8}}l0000000000q=8#!4*+m!a4%nWW +o~3|axZdaadl;LbaO9oVPk7yXJvCQV`yP=WMyc!Jc4cm4Z*nhkWpQ<7b98eraA9L>VP|D?FJow7a%5$6FKl6 +MXJU11XJK+_VQy`2WMynFaCuNm0Rj{Q6aWAK2mm&gW=Wi$w`2Va002Ej0024w0000000000005+cScV +S(aA|NaUv_0~WN&gWa%FLKWpi|MFK}UFYhh<)b1!3PVRB?;bT4dSZf9e8a%pUAX=80~WMynFaCuNm0R +j{Q6aWAK2mm&gW=RntLmg!a002}m001`t0000000000005+ct&$G_aA|NaUv_0~WN&gWa%FLKWpi|MF +K}UFYhh<)b1!3PVRB?;bT4dSZf9q5Wo2t^Z)9a`E^v8JO928D0~7!N00;m!mS#yGqI(LS2><{#EC2vF +00000000000001_foGf#0B~t=FJE?LZe(wAFLGsZb!BsOb1!gVV{2h&WpgiMXkl_>WppoWVQyz=Wnyw +=cWrNEWo#~Rc~DCM0u%!j0000805+CpNl>?%e#Z&`0QfKf06PEx00000000000HlFirVjvcX>c!Jc4c +m4Z*nhkWpQ<7b98eraA9L>VP|D?FJow7a%5$6FKl6MXJ~b9XJK+_VQy`2WMynFaCuNm0Rj{Q6aWAK2m +m&gW=Tsue_iDY000Xt001@s0000000000005+cd$A7yaA|NaUv_0~WN&gWa%FLKWpi|MFK}UFYhh<)b +1!3PVRB?;bT4dSZfA68VQFn|WMynFaCuNm0Rj{Q6aWAK2mm&gW=Z9ms+oHR003|l001=r0000000000 +005+cw7d@haA|NaUv_0~WN&gWa%FLKWpi|MFK}UFYhh<)b1!3PVRB?;bT4dSbZKreaB^>AWpXZXc~DC +M0u%!j0000805+CpNu``|bDabL0K^Oc05|{u00000000000HlF}!w&#(X>c!Jc4cm4Z*nhkWpQ<7b98 +eraA9L>VP|D?FJow7a%5$6FKuFDXkl`5Wpr?IZ(?O~E^v8JO928D0~7!N00;m!mS#!LjE_560{{T82L +J##00000000000001_fpy3a0B~t=FJE?LZe(wAFLGsZb!BsOb1!gVV{2h&WpgiMXkl_>WppoXVqa +&L8TaB^>AWpXZXc~DCM0u%!j0000805+CpN%7@pnoJA;0ESEe051Rl00000000000HlE=%ntx?X>c!J +c4cm4Z*nhkWpQ<7b98eraA9L>VP|D?FJow7a%5$6FKuFDb8~GjaCuNm0Rj{Q6aWAK2mm&gW=Z-Q6}Wl +^006lX001}u0000000000005+cz1R-`aA|NaUv_0~WN&gWa%FLKWpi|MFK}UFYhh<)b1!3PVRB?;bT4 +yaV`yP=b7gdJa&KZ~axQRrP)h*<6ay3h000O8HkM{dq}=7dBm@8e+YA5zH~;_u0000000000q=Aj!4* ++m!a4%nWWo~3|axZdaadl;LbaO9oVPk7yXJvCQV`yP=WMy)LLZ(?O~E^v8JO928D0~7!N00;m!mS#zWppofZfSO9a&uv9WMy<^V{~ +tFE^v8JO928D0~7!N00;m!mS#y``ygu`1ONbB3IG5z00000000000001_fdugn0B~t=FJE?LZe(wAFL +GsZb!BsOb1!gVV{2h&WpgiMXkl_>WppofbY?hka&KZ~axQRrP)h*<6ay3h000O8HkM{d&d{T~b_4(bB +ntolF#rGn0000000000q=9qw4*+m!a4%nWWo~3|axZdaadl;LbaO9oVPk7yXJvCQb#iQMX<{=kUtei% +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 +hDaCuNm0Rj{Q6aWAK2mm&gW=Sx?%(G_$005N<000^Q0000000000005+c#5NHCaA|NaV{dJ3VQyq|FJ +o_QaBO9CX>V>WaCuNm0Rj{Q6aWAK2mm&gW=Yu|nWhv7004p>000;O0000000000005+cV>%H4aA|NaV +{dJ3VQyq|FJy0bZftL1WG--dP)h*<6ay3h000O8HkM{d!}jxF*#iIo6AJ(U761SM0000000000q=BtM +5dd&$a4%zTZEaz0WOFZOa%E+DWiD`eP)h*<6ay3h000O8HkM{d_=)VKy#fFLJq7>(6aWAK000000000 +0q=C9d5dd&$a4%zTZEaz0WOFZQVRL9MaCuNm0Rj{Q6aWAK2mm&gW=S3v(4DFQ007nl000yK00000000 +00005+csYww4aA|NaV{dJ3VQyq|FKA_Ka4v9pP)h*<6ay3h000O8HkM{dOC^RDv=0CP1VjJ;7XSbN00 +00000000q=AJ?5dd&$a4%zTZEaz0WOFZRZgX^DY-}!Yc~DCM0u%!j0000805+CpNe@fMIKK-30BI}$0 +2BZK00000000000HlF#TM+c!NZ*6U1Ze(*WY-w|JE^v8JO928D0~7!N00;m!mS#z=LWJBV1^@t- +5dZ)d00000000000001_fnR440B~t=FJo_QZDDR?b1!pcVRB<=E^v8JO928D0~7!N00;m!mS#x|Qy(P +!1^@s97XSbh00000000000001_fw^rF0B~t=FJo_QZDDR?b1!pfZ+9+mc~DCM0u%!j0000805+CpNvn +w&KhOgJ07MG_02u%P00000000000HlHEbP)h>X>c!NZ*6U1Ze(*Wb#7^Hb97;BY%XwlP)h*<6ay3h00 +0O8HkM{dmp60f{09I4F&+Q_6#xJL0000000000q=D{u5dd&$a4%zTZEaz0WOFZfXk}$=E^v8JO928D0 +~7!N00;m!mS#zrC#iAl1^@s+5&!@e00000000000001_fgOPn0B~t=FJo_QaA9;WUtei%X>?y-E^v8J +O928D0~7!N00;m!mS#zUqNSHj6#xJ@S^xkT00000000000001_fjx*30B~t=FJo_QaA9;WWNBk`V{dL +|X=g5Qc~DCM0u%!j0000805+CpNvaxWyg>i}07n1-02TlM00000000000HlGyoe=c!XZ)9a`b1z +?CX>MtBUtcb8c~DCM0u%!j0000805+CpNoYc!XZ) +9a`b1!LbWMz0RaCuNm0Rj{Q6aWAK2mm&gW=Q}50006200000000^Q0000000000005+cN1qV@aA|NaZ +*XODVRUJ4ZgVeRUukY>bYEXCaCuNm0Rj{Q6aWAK2mm&gW=YRwVyLbG001@y000*N0000000000005+c +fu9ioaA|NaZ*XODVRUJ4ZgVeVXk}w-E^v8JO928D0~7!N00;m!mS#!$A~Q391poj_6aWAi000000000 +00001_fn=c(0B~t=FK=*Va$$67Z*FrhW^!d^dSxzfc~DCM0u%!j0000805+CpNnB~t8Grx)02BcL022 +TJ00000000000HlE$rx5^fX>c!cWpOWGUukY>bYEXCaCuNm0Rj{Q6aWAK2mm&gW=S02j0$ND005RQ00 +0vJ0000000000005+c%cl_laA|Naa%FKZa%FK}W@&6?E^v8JO928D0~7!N00;m!mS#zTZB@hfEdT(Qw +EzGX00000000000001_fn~K30B~t=FLGsZFLGsZUukZ0bYX04E^v8JO928D0~7!N00;m!mS#y3-I8{* +ApiiLh5!H(00000000000001_fso@70B~t=FLGsZFLGsZUvp)2E^v8JO928D0~7!N00;m!mS#x>M#OM +X2mk=_8UO$o00000000000001_fpY~C0B~t=FLGsZFLGsZUv+M2ZgX^DY-}!Yc~DCM0u%!j0000805+ +CpN#I(vz7rt;05fU;02KfL00000000000HlHW4H5uwX>c!fbZKmJFJE72ZfSI1UoLQYP)h*<6ay3h00 +0O8HkM{dH45H4sR{r9Ya##u6aWAK0000000000q=7##5&&>%a4&UqX>4;ZVQ_F{X>xNeaCuNm0Rj{Q6 +aWAK2mm&gW=YKqO)dZe001Bb000sI0000000000005+c8afgHaA|Nab#!TLb1!0bX>4RJaCuNm0Rj{Q +6aWAK2mm&gW=U}#Y9s~&006iM000;O0000000000005+cN<0z(aA|Nab#!TLb1!6NaB^j1VRUJ4ZZ2? +nP)h*<6ay3h000O8HkM{dy;?u8x&Z(H%L4!a6#xJL0000000000q=AM%5&&>%a4&UqX>4;ZWo~0{WNB +_^E^v8JO928D0~7!N00;m!mS#!vL+!w%0RRAl0{{RQ00000000000001_fpb9;0B~t=FLiWjY;!MWX> +4V4d2@7SZ7y(mP)h*<6ay3h000O8HkM{dAU6ec-~<2wdkX*n5&!@I0000000000q=8IB5&&>%a4&UqX +>4;ZXKZO=V=i!cP)h*<6ay3h000O8HkM{dsWj;XeFOjiG7A6z6951J0000000000q=8&W5&&>%a4&Uq +X>4;ZXkl|`WpgfYc~DCM0u%!j0000805+CpNoOY4c(Vim0RIdC02BZK00000000000HlEmO%ecbX>c! +fbZKmJFKlmTXK8L{E^v8JO928D0~7!N00;m!mS#yvRM_f?1^@t06#xJg00000000000001_f$vcg0B~ +t=FLiWjY;!Mfb#!E5bY)~NaCuNm0Rj{Q6aWAK2mm&gW=Rd^lDOvr001Be000&M0000000000005+ct5 +^~MaA|Nab#!TLb1!gVV{2h&X>MmOaCuNm0Rj{Q6aWAK2mm&gW=R&J@=Ch^000&N0012T00000000000 +05+c##<5qaA|Nab#!TLb1!pcbailaZ*OdKUt)D>Y-BEQc~DCM0u%!j0000805+CpN#){@m0}J608K3b +01p5F00000000000HlGuToM3qX>c!fbZKmJFLh}yaCuNm0Rj{Q6aWAK2mm&gW=Y6a#Y^K20034n000v +J0000000000005+cOKTDUaA|Nac4KodUtei%X>?y-E^v8JO928D0~7!N00;m!mS#!&z|6%n1pols4gd +fV00000000000001_fnRwN0B~t=FLq;dFJfVOVPSGEaCuNm0Rj{Q6aWAK2mm&gW=SZ%-Y@_S006x!00 +0gE0000000000005+c!G00|aA|Nac4KodXK8dUaCuNm0Rj{Q6aWAK2mm&gW=VNsY8_z&0058;000yK0 +000000000005+c?TZosaA|Nac4KodZDn#}b#iH8Y%XwlP)h*<6ay3h000O8HkM{dZZwraAPWEhh9m$0 +6#xJL0000000000q=A5t5&&>%a4&Xab1!psVs>S6b7^mGE^v8JO928D0~7!N00;m&mS#z-aWq#E0ssI +91poje00000000000001_fzz830B~t=EjcbQE-@}-X>)WfX>Mk3FGNLCLsCglR7p=xE^>2pP)h*<6ay +3h000O8I+kWhZ!-C~DgXcgL;wH)Bme*a0000000000q=6-#5&&>%a4k75FfK7JWNCABEop9MZ!cwTba +HuLaBpdDbaO6rcyv%p0Rj{Q6aWAK2mm^kW=YQ5y3cct$E-)@JE@WwQbS-IaW^XTaZ*X61Wp-t3E_8TwP)h*<6ay3h000O8I+kWhtJ{J +TUjP6AZU6uP82|tP0000000000q=A&75&&>%a4k75FfK7JWNCABEop9MZ!cF!MMX?dO928D0~7!N00; +m&mS#y_txRE}0{{Tw2><{b00000000000001_fhwXB0B~t=EjcbQE-@}-X>)WfX>Mk3FHJ>MK}11RK~ +PHp0u%!j0000806LatN$y5^m0m3X0LEPa02%-Q00000000000HlEirV;>fX>ct$E-)@JE@WwQbS-IaW +^XT2MMF Date: Thu, 27 Apr 2017 23:43:54 -0400 Subject: [PATCH 069/169] removing accidentally added file --- get-pip.py | 20061 --------------------------------------------------- 1 file changed, 20061 deletions(-) delete mode 100644 get-pip.py diff --git a/get-pip.py b/get-pip.py deleted file mode 100644 index 2bd2a16246d..00000000000 --- a/get-pip.py +++ /dev/null @@ -1,20061 +0,0 @@ -#!/usr/bin/env python -# -# Hi There! -# You may be wondering what this giant blob of binary data here is, you might -# even be worried that we're up to something nefarious (good for you for being -# paranoid!). This is a base85 encoding of a zip file, this zip file contains -# an entire copy of pip. -# -# Pip is a thing that installs packages, pip itself is a package that someone -# might want to install, especially if they're looking to run this get-pip.py -# script. Pip has a lot of code to deal with the security of installing -# packages, various edge cases on various platforms, and other such sort of -# "tribal knowledge" that has been encoded in its code base. Because of this -# we basically include an entire copy of pip inside this blob. We do this -# because the alternatives are attempt to implement a "minipip" that probably -# doesn't do things correctly and has weird edge cases, or compress pip itself -# down into a single file. -# -# If you're wondering how this is created, it is using an invoke task located -# in tasks/generate.py called "installer". It can be invoked by using -# ``invoke generate.installer``. - -import os.path -import pkgutil -import shutil -import sys -import struct -import tempfile - -# Useful for very coarse version differentiation. -PY2 = sys.version_info[0] == 2 -PY3 = sys.version_info[0] == 3 - -if PY3: - iterbytes = iter -else: - def iterbytes(buf): - return (ord(byte) for byte in buf) - -try: - from base64 import b85decode -except ImportError: - _b85alphabet = (b"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" - b"abcdefghijklmnopqrstuvwxyz!#$%&()*+-;<=>?@^_`{|}~") - - def b85decode(b): - _b85dec = [None] * 256 - for i, c in enumerate(iterbytes(_b85alphabet)): - _b85dec[c] = i - - padding = (-len(b)) % 5 - b = b + b'~' * padding - out = [] - packI = struct.Struct('!I').pack - for i in range(0, len(b), 5): - chunk = b[i:i + 5] - acc = 0 - try: - for c in iterbytes(chunk): - acc = acc * 85 + _b85dec[c] - except TypeError: - for j, c in enumerate(iterbytes(chunk)): - if _b85dec[c] is None: - raise ValueError( - 'bad base85 character at position %d' % (i + j) - ) - raise - try: - out.append(packI(acc)) - except struct.error: - raise ValueError('base85 overflow in hunk starting at byte %d' - % i) - - result = b''.join(out) - if padding: - result = result[:-padding] - return result - - -def bootstrap(tmpdir=None): - # Import pip so we can use it to install pip and maybe setuptools too - import pip - from pip.commands.install import InstallCommand - from pip.req import InstallRequirement - - # Wrapper to provide default certificate with the lowest priority - class CertInstallCommand(InstallCommand): - def parse_args(self, args): - # If cert isn't specified in config or environment, we provide our - # own certificate through defaults. - # This allows user to specify custom cert anywhere one likes: - # config, environment variable or argv. - if not self.parser.get_default_values().cert: - self.parser.defaults["cert"] = cert_path # calculated below - return super(CertInstallCommand, self).parse_args(args) - - pip.commands_dict["install"] = CertInstallCommand - - implicit_pip = True - implicit_setuptools = True - implicit_wheel = True - - # Check if the user has requested us not to install setuptools - if "--no-setuptools" in sys.argv or os.environ.get("PIP_NO_SETUPTOOLS"): - args = [x for x in sys.argv[1:] if x != "--no-setuptools"] - implicit_setuptools = False - else: - args = sys.argv[1:] - - # Check if the user has requested us not to install wheel - if "--no-wheel" in args or os.environ.get("PIP_NO_WHEEL"): - args = [x for x in args if x != "--no-wheel"] - implicit_wheel = False - - # We only want to implicitly install setuptools and wheel if they don't - # already exist on the target platform. - if implicit_setuptools: - try: - import setuptools # noqa - implicit_setuptools = False - except ImportError: - pass - if implicit_wheel: - try: - import wheel # noqa - implicit_wheel = False - except ImportError: - pass - - # We want to support people passing things like 'pip<8' to get-pip.py which - # will let them install a specific version. However because of the dreaded - # DoubleRequirement error if any of the args look like they might be a - # specific for one of our packages, then we'll turn off the implicit - # install of them. - for arg in args: - try: - req = InstallRequirement.from_line(arg) - except: - continue - - if implicit_pip and req.name == "pip": - implicit_pip = False - elif implicit_setuptools and req.name == "setuptools": - implicit_setuptools = False - elif implicit_wheel and req.name == "wheel": - implicit_wheel = False - - # Add any implicit installations to the end of our args - if implicit_pip: - args += ["pip"] - if implicit_setuptools: - args += ["setuptools"] - if implicit_wheel: - args += ["wheel"] - - delete_tmpdir = False - try: - # Create a temporary directory to act as a working directory if we were - # not given one. - if tmpdir is None: - tmpdir = tempfile.mkdtemp() - delete_tmpdir = True - - # We need to extract the SSL certificates from requests so that they - # can be passed to --cert - cert_path = os.path.join(tmpdir, "cacert.pem") - with open(cert_path, "wb") as cert: - cert.write(pkgutil.get_data("pip._vendor.requests", "cacert.pem")) - - # Execute the included pip and use it to install the latest pip and - # setuptools from PyPI - sys.exit(pip.main(["install", "--upgrade"] + args)) - finally: - # Remove our temporary directory - if delete_tmpdir and tmpdir: - shutil.rmtree(tmpdir, ignore_errors=True) - - -def main(): - tmpdir = None - try: - # Create a temporary working directory - tmpdir = tempfile.mkdtemp() - - # Unpack the zipfile into the temporary directory - pip_zip = os.path.join(tmpdir, "pip.zip") - with open(pip_zip, "wb") as fp: - fp.write(b85decode(DATA.replace(b"\n", b""))) - - # Add the zipfile to sys.path so that we can import it - sys.path.insert(0, pip_zip) - - # Run the bootstrap - bootstrap(tmpdir=tmpdir) - finally: - # Clean up our temporary working directory - if tmpdir: - shutil.rmtree(tmpdir, ignore_errors=True) - - -DATA = b""" -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 -Dl9dT#o@hb?KJ9Js -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 -z5bE(uMm`NgwvTPD~8a7n2X*W$(6) -Ksvd6AhOXV2fgfAjA3>z8NA*^AR3!fs3026NLEKf@;KA<^ch#dm;YQKi|Nx?0vijBisQdHC>blb7C9i -fW#E`{<^IH3u3M5`L}I`byTcKwX#Xxor#|dwV?C(y+|1>HC~uUdL&cZW>uznBS&KKILbyh2On$iI$it+RO+8Q2{X?s -!Zs#b0yWs(KU}agVyveWSclo^8(;wL*)4{<(k|2{OAd}C>NLYlMAV%JFo1!LyKmjgp{}c@*;qXJ5q`UXxuQssHB42@mKY}dl -Ac9LQl@Lr)Dviy$%SYYFea>h*+dgoUZc^7e!m5AQxB>W+kbspsumkF-w~i#{OWD -9_6f5WIZ|-A4Z4(d>FyAG>LfHrr;!ZM1ri`H5*AO`OKC0}8nYyhtSBn4VT -J2!x>gZZ1TP$;Sh>4Hh)T^KhJtbB25&PEN%5*&Bj7KDJPHbut8ie!HhfP-Jnxu|XSeoq?efs3ZWn*;? -x6<)Q)sP)HCIg}jypbzJ0SS~xxNr`HY890YfM{M!rL6GWl>OgNuJuu(jUf3ET}^2R!cJsaIl(9jUKpi -=vTcbI+}Y5y%;)d%8Pg&i6x{s_`k{U0p%XUcul5ZkS8Aq_d$2=QdO!W{kVVKaDeAY6rJIp?r -*pFm6{av^K1Q!)R!dPIt#su186Q6fn;t?I>Y1D -$U4&xJ8LE@`(Bbu2AoGWSb%M6ThHUC+;*WziF=(;0Et+V=O#u9dkCTo+`XKtiwH*8e=(>kLfCbYZ0cN -+#%iaj*qxq)wf!LM|#8W95-T>UQ6^%looWLnqbd?t7z_-=xYcYSj6P6btK=`vk@goKAN8JVs23l_2XyW~j$-x%BM*xc{IBB;YUcDP#~@jfE4fuC=%8y3LtAHFq)Le&U@7zOs&$%|)})V&sSm_p`vuIR -1W1)PNfLo}TucQxhU*O)J`A>_8orM0TUcK19$ -Mzvzv^o8^zPA=?bx1~8rla&Ogw!&+{IT+d{d0laxF(Z$TuqEiaG{fQnk=I?P$zI!zKS0M1?$@$^q3wN -+HJs2P%ss(*C0f?ruZ(JOPhSt*fn5f$N(_mBV+~Fv0MUrMl -HH&r09zc#m+t!z1_~w4_>s53y}g4i6{~FWJT+oT-b#GwNgQU}E?Pz~VSFlu3fnN3P+`X(D)TA9x0 -^y~sr5PH8l9h(zBfNKMyAnd%G2lm3G{ -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 -diNEoXc^i}UiBY@Lw!kZQNDwr|1u -Io!^hEW{UiNvy9rkkb5@-o9nHP{HiMKyZwyIfHX*)%hdGJR5>ro(m3%p0amiEb& -t>VuUupgik{LcB>q)k-i|pm^k#Nu7^1phIplzVIxe=*P5ZrA|)$NpAHg>u*hV4s^uyrhr#wN-JScrVW -@qJdqJP1c}LIkT~d$I_c^T=<$59z_{_Xe2M2u!G-(Aoc*eN7VGIxKD^@Wqf%JDbBBC}4S-A663%e9+)Z8@-vzrgZ*+$NDE -FDgDrL##-cE_2C=5ffVQxJ36Pm67j+bt{nIgnH;809UV~xUPjdauJ -AEdyVy4kh?y9&U-?%DywhKe!n4*SsLp(R?*v=TWfQBf^+K(H8esaD(zoVMh+3RVHBcD)0DnXcQ^S~2> -3l)*;!g93UUsM5g*!f-t-4qnT^Fv#+(=JU4JX8aBSJb#g98JZ5J`tiBB!Gy(#4g%}|k&$6Z83s&>byU -TqF$%IpzHGr7={vF9|4^KvyUBeNqYtFa=S~40U+X|A=yV4dVX2jyC@Lo$5MCkmF(m!Ga7&m&INS?16x -dF3y=k^Ry8Qh!**$oH{JeFRe%CDafG|g@IFm^ktZ)j)V);wH*$IOe{+{!se2$)|Jzs-~OB{V5pk)Rj^ -qTa_gc*rSV`XVT1$TGyfG{yM&A2e`G6lIsr&&3_y0hmnRrbz)2dr87H?enJWQICRt5K(Mv}Eu&{)I2Oc^<=Y+ScP)`)t+F{+i?1y9DCpVP8a -VhD7*&HMy?BZw8ktL?kYgSy5j|9skxq9w7k))9w24pOL2?dUNQH^L6Aw;|cKDuf=pIBF$In1SUxF1mg -YULmJp|rUMnjX_$G}JZ9%vsp?J_xQm(kd5NOloN{>SW!nEab=1eh{IzzhR6I@nDP-)8Kr*8a6uL8iRl -APA@0Kn1%<9WD5K%r)nv5L9C@?M-HgnEJZ6p~l*In^&7H$7Z@5S(p5BTxD$NdH~kzGp(Jl69tcaD6s) -=Cum3C1No>z*d>oiWnoA83T_B&&oJk&=9R4k%=f?0N$S9CMUH~4!tp}Y0qQ#wg!Ro#rmLl2O9LEi -vo&~cn&)b-;KWoP&lu4g9{0^1WvHm?5;(+qk}RuXE4X{_jLDzN_UQ2$p` -EID%P6`s~3}yxhp4dq=9>eG}FcZZ}@b!R5O9#|8AcFm%|@T4+14_b<;f6WY<()o*tm&9w0B5o2FRJ^+ -^#9X7kJ6zpx*8(iQ%R?~3Mj@&-~d>*~@j{VHuW?O$|cW*YBDVTc6{?x!fh3WhuLI_Ij4bE5w#%K%BO_-mdUZN{Cf2q39_-`Uul3@SM)oF(ygI~(lrBU_^_W{v88jarbZouxG{A}byla -ZyB%fEEzES>MN-=}K3Bo<^qo3_=;9g$l+B{ls&h2SmY=#noYEWjq!Cf;@K9^pL*62ELU^&5ic9`Z*;| -=Y_KTv9QyaN@K(t^6TuLHF-Kq^-s1rNO%#`Q -K{@dO^*L2lfyS0++KFwbV~7)?UMgLDmPT1j)nZcrf;3t2j1FAWuJ+cC+}5ufVO#tMuK~ZDsi16mbV=* -k)oHT^QBRa<#mPBrp2P8`Lcl8+4qaHxE$IpoGdaB;eD|3Syt=B4R=oRD5AMCN -!5^cDI+Q@j++-&XS5kmqH5uNfmg~{^vID -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 -kcPrV%mAM`*@dlHS&gwPF0E3m&~v~nU@iBjI -&9yG=OGQ?K-*1#CN!wZcCVOaa*p}L~kA_GcKCItt|C(Fk^g&(hIkNWNG@jTx!;Vtzp~2Mvw#fiFf<0B(-7`v5kSx-l4S;z`;;Xgi=}y0o%c -C-4sCd*E<~bnHa=yhN>S!|J&Gdkw@Y`fUXLM?b5mfs@H%4jd{}{8Fwr37vNkSY#K<*4vd`XQlOyD)}8 -XbL|o>ej%=htb=~YUaZv+v-WwZ&%QGG!Y-AOHKzNdOC8?D=Ko(AcF*_8R+B2uBp4>u$LM9vFov`4LG0 -EmVcV|jnFRxd$oM6CG`~h|e=%xc^4mc>*wtv8Zt9`dZY2d0CT -vcmeb1?XDvNGGSQWs`|R#^k_B{h;TCP*3su}V(0Joc5}^`y)OBS^lFTT=p?utdVMAG -FdZ*Rfii{1i}_xKQl+Rt{mWCWeEe@r^Xrt#D3SrJ1Xz5FlCo1ew)P)?r*D+^36kr9pe^d8>DesmG53%2wCNG -GJt5h##2|bI*T=Q3B)6W(wK<6mnMU#+)C72* -tTM9t8YmrB@J3aKXS+1A0Fx{}{ftIZdWj$<`%ubo&2C)#Je}iqg#f=Sk(6YSV;oeUhkhX^?9-{<?d-@N?q-@ia98M@c5>fO3PdV{_EdR@<9S&`g}Ur9*e5+rzgP+-e~{T)`N!Whzai{dhg_AGcYO0~HdF -)Te85vze!x|6BSf@)b$aB-;abPcosbGec2jLfm4GLsn#Ij=mzA}R6!d-JJEZz@Dj35oJ+%R^sLj}=(l -bXIxG+o$%#0EwX(MvBWkMN)%?9W+QXxnN(NP>ehq#CmYjpW_$v2_`8Vfc(;FX`@yA=iggoObZsrtxcf -?4mmR`WMrNuAXRQ*Y%`EZS?~9?Zu5M>&PBb%$_faE?9lB%j8Gc|iLxCNng+;MU=PM;HsTm4IS^FYAaN -mWwqisOCRkydY?i+J!lRO)e6eV|>xe4xE3rS)QJ_y1%it*Pai{TvZ-#Mp7{nE!isVQ9Ct!yN{@nF8ai -LIhHIC8jdWW=%&m;0pp$@j_6sj+uULji?q8srTJxIftHR5o!SP9R5Qz)avRS0Qb9Z&McF_e{^%(ElE` -z;a5ns5Mv4TR;W4^SQ(oH1(PUr%JmPiMpNQHUYG74)N7F!6}O3h5n0br>K-pVNr)D`}r$JVez6jft{_ -)smtPr>tF8=^{?k8Z7JuYfE>%wQveyQ{UhmLRF;Sd%B~4ma=t|f2ctsAg48f9H(0a0c3f2e)R7ku^Lb -oj|lNl&x5u20n_?mY2tez+u`GOh5PU07I+Be+z7IM#%RU>mxF?vuQLHHRDUWq&lDTjExd)ELE*YQbD@Bb>~?YQU7Bu!rcl(c6 -zwU<5ufWx#N!DF0-hHHfW`W6QAi}ConG7Z+OjQ1Myh(eVIZE{`~QR$OlN8j&2`F*tRw?Q;M)CTzSz2> -d?VBWN6Nm7;1xhuEUj@CFbVZx3u<0Tss*!@ko3vfiG>)e2X?LL?-SY#Orb$%mQjw)pE?9T&(h{Y&QnN -J?cG3tVUmOFv9)A_z6$VpJ=V$3A^DJ*!noM3+XT&TyV+;SN9}JGTV^ -EZ3UMI%XAOlAj)qT$6LB)WoSyg=Mt53)r)rFst({i&3OK*^GIy({-d(S-f&*)nH^rhxCtEtmX@aA_m7 -w0{=(Hvoq{Io&(NpIz@kg%Nh1`E-;CvT46u?dvE^?2m$^06GZaqm^cgK-Wz##IIa~~$^QmAo8FQMSz( -}c|lZP;bClfG)wHT#rc_M-%8kTZZ58sid8KA7Bq7o4Wy!F^WfnUAO$ -*Ag&R=sbqIsH#Z@w)a&$^eS+!7n1h$FN{F8Rv4u51Y=|6+DSkk?lU$`er0N)+=Qa7}*#53iB1l`|R|+ -*Sf;s_ke?JjMvJkt^g&GNi2YZttwsao?!*zH_o-7m$F>Ij -#!=(U#*V92wa*PZz{vPaLiB=|KuJd&G&!1JSDIhcy)qmn9%B1a+lGs@)JY+K -%yz^x*>Ih1nop9xTf6qkYhMZ2UFv+fq0F=Z?R&q6gUI#ER7zgwYSo7l98l*^606LEUL6)L$kJh&U&u{ge^YHXd-i0L+Th362B78=cG|LT{B2O#Dqs#X96o -y&j#B|aJk9v;69FYsoEknxOX)H}Kd!$dSOHgd)sgcYqc?2q!oBMal_er<%g2&2(;VXIfU*6i2(JY%Ki -8q}L|x(ZMqWb$;2AWpqa)N(&l_#sL>`U+db))R*$KYA0GWco&y>e_<^XP>4)K2@4a@SQa}~?p%jP_U2Vls30Y#lS>KW4t0}XtnLE9GEa_xYEKkk9!(O(d3;kjQ?d>A_%ZR<3H -f8Eng(najL{uD5SO221lX^m(;3?7LE(*Uy`ZrmZ*fq6EdA0>+hs0G8mj?I!dLfc6Tyas*o?8n_va5Xa -^HX_q|2biFpYC5G(O%WE1WI9E3Pkl2mH4LaqI -LG$4N597qw(zNU0H?oN3pjnq)IcesCLkCk{pTL=!Yh&#Sut#_@KSu4QTc!Brf(9UqEs(7_#jW>8}Q^+ -G}%dzq3^3pw9ikA{z}L_BK8Rw$;f8O~HMK{PuXCXOi(L|Kiz*%$}>-1n**2^>c4RSRVhx1XP)Z0MMEE -l49>urzcYpYQD9bsV9Iq@#~hsyCxVMCT-E$2~$v_&Nv9jt^dAVJ&?Y#O0BO#o3KO^Q~})@QF6!2|6sD -<{oz?b}ad^!yX7jiW3mUm&14$ccR@U0eeR1DOR=h_OvLP89y8Fv^~)QAfJGG<$;(mo>lpJ|BH?9<&(D -92oVfEWs%3171<56fVfPGV**@`o`55T-VbdlpcQgk!9P__-IGpOm2cij!|)&9YLF<&4G7cxmxoiUfx8w23d_6Oa^Rkz+t28B0O!UgT(oiIHQ$(di5hRL9kf=7N -GkFQ9|FEeWD*bC_s%7Fi%$nF1DN!pPKoC2hq}{^lBpmBUNg{(Kr1N^65b65u#Klb7smzIV<#FjC06il -##V1=F3=if+((ew`W(i$IwQ{cpQ^tB$ac4ae;|N&)XnG)KnMZ{d+I69Xv~81ew$Runsp#+ssm7RZd9) -0r*o^JpBq4leQiLL-Ma(*+riJX*er`K^1d_<)R%KD?4Du7&*cF&OfXCH;lHnuC49Aa;;PaoKoF*WW1~ -iD&4znxGc}5JJ&Vj5%`b%3KBADcVM&^6D@8ut!7l@myA^wVYC2(7BW9zQ5znfuGrrFtkm6H%iv)(P!M ->johEBtN>9^T@dtgxDzyA?nsC+!Ju0p>tZ(FyY8I8nXlQgMoyI1BZOs;d!UCYs8J{5LdsQ5t1cL1^2n -+ZX%?`nqZ*WuYMztFNQeEQqeeBwM=8{>S{1uux5dY;7{<^>qyX4M&5zr0LPEmb_JG)wUc-sAQ{H#jdL -G6?5=H_2LwfV(HeK{S|922Z&QWM70U$9SuWKu+xTnmO;SItccP)j#XcaM`qzvx+3UU`jzV-e6P4x(4;(E1(xi4DVoVyBfXN;r4=0|YvVqA -aG?Hjh9q2(Y`pbuCl`kJmQKM~cn*iRLV83b9J^-zj`6@n}kO?L+dmJYttOga}cyP#!${g{4>eFK|^?( -e&Z=Kn|4GB-kOO6{nv;{qce*S8NB!oUic|o%#*_Tms9ebP(r@hZ2=jwz1Q_6MG3Nn4M>21blDcq9nIW -yOma#L=%u9_d5O(n{g7{Jx0GiJ1S`cNOq*DpgWbB~1?6DK&O5Y&M%8uuj@&GMocCG64oBm3idVB>TO2 -fbjMXi9qWdfToBIjFjWCxDX -x=7a+2f4OqVAvB_8Iq|q+M-qD{+hiXAREw?5@PW+ -C6W7$-PZ!D`)SpO0$Bw1x!A^bOVQxys0lk_noBWy*tR(jk?6;ot5hMgTr9zD`za=U4RPXD(V2xu5zXLi!H3lPB`OR_fYCPO7(6s9599S19MM)SVRsa5q|z2YxChCFuDZ3e -=ZB0}kIiUjN*9A(Jha0D&crsb6irc(+8v4_C87A-X8rvrg8;pfT1EkWiw8EkPP*!(>IaS#qn{o;oK3! -{+q;ve1I^ay%&a?(VfIV8O`I4%ObZ$=p6mD^YB-F!r7+&9N!>L4EBtny5kCHZ|sxRH<<(8eoJpj`H_I=*t;fYH)wu0l;4|9(A_5?i -~B5K9PxsiO6qoc#fiPmZS4fw7zHxD%YHfm^uTI;h*D3NXH<&QUyR27K_c4{neMUNbyM%Qqmx)~vPF@%?Ay#V@Y&Tz*|U^y&Y7dKTGS2 -3+1$S+M4Vn9e8uIf?he3srPQ4Q%>RRzjya#%zfDV@sh!|Lzd0b5>Lih9uvq2F2haRpxt-go8aRk+FbF -7^NX_Hn%4}6k;r%`D$3xQSnkaf`Wbd3zOnj;W=PP8MP=+A&=cy0_C(2~k%1k_?=vxXu-g-nq!MSJmW9 -T7>2?)qnCfH%GGzpU<{>)V=%z_McpmdV;h&kE3^MS@;Y#3I_h_h#Z`|kIz-eA;|wRk9HgtH;L3Ggr>H -A0S9r>o$5JalHM%VK(F>NoP-vv`ay^XV^7r~f+3uAYpi_ODN#OyR{4)vxU3*k-SCj}aW3Pvka1g|~gTd+GQE)yGiwF -}DJW=*IzH?j2{ -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 -*V5^g!}-nWl^&hj?Omkm~@f96ciWB -3ciw1;7LVw&w0BQqSp@Z}dwpx?R2&8k87Gj2_NG>ul!vdQIDUxwNy<`PB#cyu}NGyMaoj%l=NG?-k4` -3d&^oOLj38>I9EoNIq{DCeR5!V~(m>GRi4Vyzji_VE?0UDCSXlnpJFSL6-_*yu0&lNQX1^!6S4Ct7qU -@m~M}5u3#$*9%<-qYc?408F5t&4ZTj)?C9v_QYgy;S;L^K`w8Dk$Tv)Inle6!^~d2EjP-2zXZMn5UPb -W!NJVb9+F=AcWy{&W*;GLHSCF-f+RONcEQ~wl_LZ3c+B||eHH~2iS56M%Oz;g7t+}d;+{W?_=|#tlld -Pv=>5njLICo&e0j(Hu%03fao?Pp=2$5*W%I9>+Hhn~P4T{*;$#Rt+YO_Pag%z?`?+Q86H$CRfwd{PUz -LK|i1PBZ0r8-f@Shf_ZA@jX0x0aY#TBrLxorAvIMBi&XHm%^fnZnly`SJ|@(XrR6jCdkWJlDYR40DJ; -Z_G_Hw?2745(Hxi@Yf~5P(-CP$jh`7HAEH71kwI3%x>PJ_no!&8pC83gA)Q^ZV3 -;6Z}PaEPAsg`ziq=UyUdD=HOZ-cl0Pkr&CscM=6xK?g+Ok7 -~PK4f@`9O#bOet?E&^n)|($AEL__g8i-0qH|~q|Y5R^)IqQ)N<)?jtp2mOKMgQuX57`)zL}Z%}ELeiP -m?mRGV?S191nLW2A4bA5N!LJq4IkKFLhC&n2&>ckZD_R?0WgXHH6^p?E|27AessfmOQ*uVQs4P6lJY= -Z^Ze175oZPOv^dMFd>vgyHUH$1ic0)2Fd4b?T(yywyF=x7by>hc|CIc`P4M;?rD5M`zZGt%30o9l9sL -z*k#9=9aeyvpFKmbiv(Uyc()+T;81NMYpp$b<47jYD-+0bHzDrbu^cB6_BD{lvebLz-PLajq>;NCiMS -MO9KQH0000805+CpNw*JonUM$p0QwaG01yBG0B~t=FKlmPVRUJ4ZgVbhdA(TQZ{xTTe%D{YIuDY!j@- -ooeQ*&J!LGLrF1tCbQ|uLKAkY$R^CF8nl8WOl_Wt&MLsGw-&2C#1^@}BPW;p!jo8eHC$>dt)+)7m$cG -w9m*g>#TsRy=En&qn6$gP<%SsBaAk{R1Wt+w}T4WiM`&wzs_}Zwlu_E*DQ543N> -7UY?+g2#n>6E)UQ0OQOlaN -;Y_Ra>FUGVn@=n3@u`N*#t7Yuj@;pOT}TaYqce6{*QNA0vbR!;+$t@FiT<`)e$3unV*Tvx)kk*GDy3v -M%Xz*N8Qzl#tWTye^>%r^yj^DRFF*bW&G*aI>hdp3=*4mTkLY$M4co|4F#Ojg&qcvp%+^P8k6DF17vz -Uvb|;uojm{BK4(Y~51JN{!ZmOK5$P&*V_|_RUO`Z#5HceR`Tl}zy6ARXIRluYK%xe)9q7)VaNmG^3V@ -K66E%xd$m?meZX$0@1pRRt&#=CoWb-ny>`QB|0KAn4G=cIUE1Q3s@eX=otDa3{yG>DRUv24%v12Ci&l -1_TMh!}oEPWt~u3JwZ_$15_g7;vnBne((?aAbj`h^p{0kT(5A$*Ny*#$Mjo)R{O)sH<93No#Dz;zK-T -2ur((+WSqvZYXuzO}@&AX+T6bRVAx!)>H*_9;LPoFGcm3oB;7rAVn*7s~hYYK#CYt2+9;^iI{TM>(AI -bUK+s^u+s-=1PC*<2OB$XxV1V#R$@O|@G`5l*vO}N+HXep>$)*fLK7OP7iGV@U|V5(JCijxBG{SC29h -t>j0OYFTHK1gD^6{Sm@zrdJazU`Yo(3jS*f-%CtJM-X?=9Xv~ --0Qctb9zSL)pRc229DcdLN&j(JXurn0>%s89@Oh_{OGMbf^b>e7Eg;%VmcBFm{}T1rW+_I -2BLZ=)X)n2VZMn8ke8r^==LS5Km4w(KK72k><3;zY1mGtogn#lXowx$ck^ACFu@_C>PF3>KcUA)$P(x`4sP4k0kyL^g&*Pw#3s0_`vKp -6JV8VSz8mhM+#)_RHbw0nZ_AgH?k~LV*x*Q6~jbKP=7*)p$;f^O8vPl1{CbpF6d{hNxX}LO#e50rX{8 -$h41<7HJpk^Jfri2(j)W~XbENP1xm5y`7tv{CdBEanD&-^4TNfNC8!1SUn`%T$In-ob#o`~`H5kL`j7 -DW-(W+-{|z|l{|lYAbSs^^b5ju)*}O4&PKRkpg~FvN`qZl6x(Ib?qhW+9XxqY?VCk|nRN$Pc-{#kHO+ -|iwt+r@-dydZCMVoLhE{1H38cRdEmU{C$_#EPdup)mS22O6&|%x)<2HUpYA7tC+;RitLou#8ei|t`0x_gUO}BV<0gH49i*rBlJ*wQTCN+qnRz~WeL(p -6OVkFlb*vAEc(R&jZp&P63GvSp<0_BFQLP2Gx`NHUTicJ6RPoobqJrxq)l -DGz2wANNRR?1hTBXA0&X50(Pqq`Bs6kRE!-&;uF#oU|B}Q3>KJUoscXdr^=Iw5@ZshbeUuT_bq}rzfn -CG`*P^(4C$1CcVzWW#!qmna35~B81mA)+pLA$9r~x9HhPA^diK5Y@xRDhvhvXeZP{F# -pn#3s(0+q#R12NrI>vkLs4>PsM7YtBo#>g~fu8EuhfuUpQL0|Fmz>nq?`NjCgik6bkk@^#T6jK#C*# -k#o2-j$7O_yfpB0@{l?m~U$=!Pz?l)1F70sgfShCY;FA3Nv#RuQq+=o*>dYN*^TSK@)YF~R5a)cb@Qk -lQ{_r>F613x*R5;9QIln6(Ivho{r7CVuZGHeg4*6C6S&zJKxbchY?`GaAP}^0FyJd@@WY)ajV-ripW8 -4N)+F<8JZ8{aCI)tA@9iF7q}%N5VaY&Y#6doi;!p4hk(FhaHVUM6DYf?~H!W?ie1MNx)`uKb_vaz8?c -}D)LSE=tpipKU_!d-o0L&fH56?CJE=~zW`860|XQR000O8HkM{d`Y438OAY`4fnf#gVu>SUi#iNlDjCzI%5U01 -1*O*-m?z$VU)Z>)VUsTa_I-Sf_v -0`yNZ|X*gIA(HH7OG}^Rux%Oi&#HTCT3g-`>k46_Uk=Yxy%>sbD8maUZ|CQ&WgnX-cKgAS|3jsd^#FQ -kFsHMwz%LK%>EA5*O7&%vG|Ck^BiLk+z -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 -7R#ogByU^>_{N9 -<`t=eptfT6y>PwNtzX^yz3^R!Xlf2Vud)kTvoRWkqnJ5?^KOmQK#N%I1bs2f%5qVMTWpltJPoZP80tL -nJPA9R_kwuYuI-x+E_Ia>iqm$tgBdf38nbqLdx$g2CYsM1WAK{6z5l>nNvpeu3s@VBj?9u{ib=2h9~D -&bK8*Cq2rimxu}x~gaJ=q@et?9a#$uYf*fx>2*>Q`s;pDSi`K*hRHSJe^XQZ`xV`9<@rdWU=nb+h%qY^%{t~T(?neRhcx~yewU+b17j*T{JHgLK2mBv5i#p%7rsG$1`zF10agsWQdbg{jR!!B_K$Rh6p4WiAPtrwNR% -H$(&3{n|j`t|@#+&L+**aCZ%vW1s_9K!XiF#;*^I#g^uZ!u?(Vs3pTwT6(RH{qAn%DhaH#E30w0eyIixEq3T_ -~Dh)vyQ3vK#&V!1$yf>S`F03YJV5l?HwYu`|t!c}eVuFoairRErd-ivt6tQ~3ABW!$vf1wh%LK`Af`? -o|LH?k>-i+Zq9a7Mb$_(gqru(XtLVB~H$!D}YtjY3ty4kMD}AxI -)Q&!C9U77!_Q*m$+ui_v+)e6ccU#(llBCCFZH2~+Dp7hw9V%4X$Di486HL6(tN&F;^V=MsO0xYo@SCF -xkDUYKu&0wX;fOr9P8I%$l2*ADpUJ}8eKx7Jm0+z(6(ZIxn$12NV1rk0naR?npac)6`{juID=H -3ZK{5VX}6x_PGx&38`SdlJ|8TIAGSiG;#hpoMxR0Twm%>WaH$xRd*KefI2TCjGpAcJ`gU`R?p{d-MI- -&5iCCXz92B$P`D*B+yDXO?7X{naK)H6y~<^4jE3s(Ru*_68Z}|7xatqltosoD&|mU8DtZ&naqN3G|wI -l*7Cs$d~oeO)3Xw1niYfnWgj8AB}wufDnxTHZy2Yq0*9rcQ~5Gov|p^?_F;cvqg1n`IUj1-p|6NwB_< -bgi&X-b8=zlXh#J#`eUkbOMH=QF;KfJcE^tCf|*wuY)c&=OAx^d -)+f#1TbWWgtks(N=XmLtY;q-j$2-K%I!W55dn>jl^yo_dK~;nY6&>|@VvtE@PWkI6H`h;ZB3C5Yx$qh}((!iC??{W -HTA}cyXP^uhtLl8ptKAfqJCK;S4NSfBr@`-kA3S?vReI6pL#zx;uF4g_BtjFur0ALTs8shMf{wH;uyz -(J^OD{$BzXOVZfUVa&w?O0t>@DSr^3>b5gR2;ku@D}MFFd7Z^% -E_2Ce!&ecsz7!z*qZ8$xjdIK18Jwsd>FLJY>pjk9`A*)RrfM?f*X -4k}`r~_**E8vab_rbTe>m^RgzyH(RgUrM3%%?1Mz)tO#ox&Iam#XPmFr5x6PQ8^7$I7Aww3(xo_02bB -p?k2*9};%cFef@Z1y&I#JjcJ`3Cg2?{F_rOcG^~_{MfZ7Kh_-?R_K%jJ*Ej3>$F^fwV*leIQaSJpMwt -sNkz&jWznv~(>1TdZ?6QgsH5sEE -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 -*26lu}6y1u%s@4R$iVW0Ded77e -mH{J43wlO_zmbvb`U0ek$Z$@)}v;M8mAKoetq`zX6B$A{mVFiO5{u+8>mL4ei}V?Fr279 -A$GV_}bw^tJU-N@ETMu%^NbCRiEaLTglvg}7m}xvBe364(0O85!j9G~p$v_(6s9wVdS<5)QtxjODK^g -gnPnW(rA!Y!n)mE|4Y=&VQQauWO2%ennr+d$A7tkN?c(Iu){Sx5< -N7vQ*@xsDr!dcG6T=ZP-g5~$o}-ZbTncpAImPYh0ethb7u}}=8Jzb%37ud`oTxe!$yK0u6Y4NEI7G}P -e^FGL;+zko1qes)J}l46>%thN>~&gr*sPou*;YMfoPQV23dxb# -K~54f~}fHQ*AKL@3oHv}6A2JJ()k%Y?|_9IPo{P|!?X{O=7Cd~@x@d%ftIAZ_PWdDlMS=8Vg-?R5~~57NmMR(=UW~rm&QPBS;Q(izB4mgn(5Qw)rO{PdrwIrFUY95<@7RWPBD -Ryv7&~diP?}Qq9u;qA{?wI8xLZaV}ZyaHe6>XGIiYi+)pd_cf3oH3dANi3p#%R-4JZOGD1j9Uq@cdV! -G;R8W@TiG&8mT_tkWQdS-rsVaROIZVjaEKS2D6bRGR{_*(Pp-~b5!!I6t;7tJ#!A3@yQ!G;^TK`dTE) -KR@D>_jDWsA?BUcmKo8*R9iVgbI*z1tWd1~@!r6mlb!wCD=88gzy)#_05lH9E&_$2nxuQM$I5-$@$N1 -n0dG~<)H_siShkSOPcJ=hj=k#d1!}6wbI?wG5?ikaZf%6$NX8yxDR3Fi)dPlnI)AdI}Km0S2%5vlow0 -q1*&*RZ7H9VKKs;ASV=?TSoXRHgR51Oe=QIF@GchRG}xS9-pu8L!_-%$1O_=_RFBOw?p7s$yUIAXx`h -oTqs%^uGPp>7CpJ}gcJU(=pk?Np_Q&(xBDT^h1$$AJ1d4rH+6`&~3`yKA&JL`yu|gY$ORNQOQx3^fox<%X$9)mq^mP -c~xP)-!{aT5s<2dsUsN>d@4mf9RZV{p?Tg{73jIipUbMs2M(IUEq8P#97_FM+oB2Jg$pPUyqtD>5xg;&aRP(g=!4UqcbJ?TrJGLr~p{NcZp%zTokuLmcV91oo9*``A7fe>Snj)3+d$UDg`Kdk -K01oJ0(_rM?5H+}`5K6nDbf527j*a*N<+0mIvI#NDf!SRmBAR~;YVE8fH-NH;w&7YctSKy9ug=i=M^T`Z}Nl;lh72M`Mq0-#TE&qfly=`TivE^toG!7q9#8{O0w)1RCJhJ -BuvL3JxL|4N5#=N|{xQwMX><1-E6CipyH>c=CZ{irXYEZN7?Vviv87}TN3$qCmyftnL{^ltnnMuk`J3 -m>5cJ_{E2*}2PQB#uTWta~-<>RvLY=#)eWY`Xv2x#CIQ!9=094&lnkjIt`dA|^e-NFuuy4LG9D4Hl@w4aOfo8;

    @#JN)PffAZ%Hk278BA1HHSi3UjBGWK45Zb7xvW9oFbaAvpI|}Xrhji#|%%z?M?1!6K<> -3iZh*({}yGy8|X@kG$f=ne;Pfb+W6`UaC!h^mH?J<}RwDP!y{m% --pcT?$TR)3ejL;9#l3`_Gx@R -&BbPBlg99_lV+U{c?5lAg)!Nt+g_k!Py>7o0%pjTsS?AYT4)`xlG>Tt`iP|f-l90S< -95-_@-=zANoaarD)Bh`nI6}7$hU7Ld_x*xra~A~bks$VE0`li)__wf?P{RjA~EVg8rQ?8S6pS;6~^;2P#~$`mv -ur?pYBexa$(8iOa{{c`-0 -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 -mKcPHo5368JxEnte&`ZlOXb<0 -ufttwed9_p-MyA_4Yr<2R+>c3Eb1u}Z5BBNj&jn;rx1_}Q>K&zk#P_iKHoro3{GkCzW4|w(uglDr*m{ -Z@>i(ys*fJ%|y3jqi2CV1>zz)2Zg@M`uo9K~Dj%jTr*Gsrh5n7D(_953P%=C%a -?iVnrr^Rd>dqMao01vy}i&%`nbC7`YDK-uU;OW%g0PC$6(it!!DsIyf`iZ7$Q>zw-A?$uZ98|03CI%l -NKUE2kJ#ow6PQ@~Af>is57qA?f9h-2b1FGh}*?)C*a`w|MI~3#)Sw_f{ENzmA7%gc7HG*R?^2If$Bzi -NReLKLnDpu2o@8JCO^!zM?eE;vk+p?JbTF`Bcb{b~afF5HzW?>*DWy*=Pzs&MD8iI_l3LZq7r4(rWY3 -U`Oss+58OQnD&>vG=HWFm -Q12Am%!$NCFFXz&CK||BsUI!Un`25nP!=TWTXv^T#)$)&{NG&)3V1u3ntsTx@Y)J{bbnZ4TI4)?kFp! -4;cIbga0uw_(M;b{(gTwWl338+K<*&=^(2NW;c)R?(xC-+40Fw%lpUcD~t4*&CP-k3)-9B(6l$pOIq0 -31i{~Fq}yVSLS)YSxq?*rxYB})Rw-G%5ms2#;#Qbi&F`iQ_L*h)p%3;@gCA-zDeqhN!Ey|HKbs -qZHRa|x6kg|9CDsg|S9@UDayYj(Ip%zsY)#|EPAbMA2T&a;#(^Kh_Fa)UJSB! -9N)$iD?kwH{5!Cdb0vqKH#JWob<=QNjettUPacNm{U61ROt@QDuxzY=K$lvF)@S3vGY^vCR&PB%bH!- -*7rH=W2?6GS>W9bQu1>eB$d45ksR(1aa;k2Gz#U$ewKCj1Gq0eY}F;9E1}9~9<$OEYsx>ebI%l{=q@r -HjkqMSV1;;@es?eszEr^sn3tXrAbg~yu#qt642OTHIArv}Zc`~p6rjtKO|_#$BHGYfexhdiOan)lqHp -pZHYz??-GmPc?KE8m3zm7b5W#7h7}r6vQcSq|F~xcc@fWX?6ryZjWRscJWUZzB-!4_1r6%C4%>eWr-Bw+10RY1Am{p%TDUpKub9O77!dwBYAt(TqyL-AitoyZBduk-EXSyxiKkYbk0$b<~@!a{X9%Tx -<@iMtYX*)v22L`M~Jfgx#fX~U}F~W$cGq;( -Swzbj`S~m3n)PS65lu;VzOQjR+{vB4avh{1_VFpC{x8zy6R`F_=jxVycb*E_L$qneUbWX56Nw(KiRj< -S&i(6Klbgs*}a#Gsu+v;8@bNN`^5-pcTeWu*^r|CPTt{U~pHO=yP>lCH8XR%qDS(XvHC)C)fh9YHJ(tr%( -&-OU&UQnWV#^+Q^ogFg<)A-HZ7McVe@KFM~lyZ+OUav}x^mw3$*{DLnBN{4anI06=|w6$haudj6co94 -kroY*g0-#US6`jZ!a$y$$Dxmk4k8B1Q-XwMX9QG64LTLP6_91_hHP1fpJebQNW$$(8=v6L2?3nlAbWhDeyspNF-GdZ#8zsLePw5`rPD2s%xZ6QZv18JdR0>r^9Ne>on?YW -X>TfBJXTKo!Ji2Xwz^!>jTL^#-vQ;`AV$9xjMsRK3=je5Gqk*B!OVdrWP2s*e1Ou2I;J^OK?!Y%@glRZ^FIoMJ`lv``q^s+?Tk(-h)d`f_^uxLtRhRZv -;_0VFrERO)nP?IOu2knep5+NdEmKcxz_(`J09s>*;wBo!-ax%WXiRUBLDAH9e8|S$HD}{sH -0}op^T%FXdPuXDo#yPPBk6kdUL%R`HKN0uK=GyrcU*rI{3RId{qT76>C@-==6>wS9#Zci={Z!2q3q)# -LF&0yu80Ttx~AuB`|;!XE@_!Cw$bJW^<(Z`6)~_i%O+~+G@GKli+s+T26Ok7?#*o%tlvQuqw#Ues;p6 -*z;E%TNbH2@9>uYUs~W&k)(V4PE7O)nXQNgNDj#E3&c~Eqp}MUcM~yMRGGCG(x4*wTG44FRGZk+CurT -}e(;ELz4A#4k`Hn$%s9qVDZ<%Wo-u-@4&NB*0JLi>e9ngght__MR2j-D@zoG*x)#S -xQ53rJ}_l35%ncScDbA&a8}*ln+F1x?E~#udO0j@Bqg$eRWbaH(%W+TU(5B4sZ_xdGm;629`l7b6$_K*+V)BU%-i~Y+NY@KZv9Ge7if8$V; -8+E_l%H}t7xRR0TXoo&I>s;=i9USFD=Bk_WXH($J^zgj@u~g*Lz~TU;b$rpg{Pp6<;0YZT$WG-uRKl5 -uF6}0wLsg8-m!3S@q|eMAY5Z$3GP}nG5`E!pQOg&FhMwePsK#p1 -KLMB^{Zq -n91FxyGu{*vLl7V#yWoNV8tq=K(g1nc*D6Ax(gv;*YLG3Rs!dmhJJ&3a;R{XjjXbChS{CR*Yv8y%|=h -38eRPLEUC5Id!gN;aW*sd9?x3*e06cHH>-6v7~BIIwzptb_-?8`Kof9{1Jtj=SD;vV4haFkQ|iE!;h4 -%iYwoFfHNo>G&n8p@9074ByFJ_MLRtcdUT}@?4J$TQsTJw8id5bAk(eAL8fB{+|>!6XFhWzpaeI3^ZF<_eJvVk+zb1BG>~wc8$;q?`S*$5hOH%%5Hvjw02LOT~D9MSF-t9ZR*T -y7)!C<~H7z}_1;%TqKkCas{ -3`Pz$>w4wd?W%a&{dzh{l5T&+iWRj(XE(grC1gcKqQ5jB&ihgW-J$_NakXk%@%1A&Bsz)C*_oyQ9wcf -@plCxJ1-+B9YOg8JWcF!A}R^tX<06Y4&_^Wv;i$dh`AIl_ -%Zl2$YXaTs4qjSJ8jjlzOi|8Vk@U6@c*XukflljF!6xpP_j&cc5;-o0^sHcq$^m7&r(51U&1^fa%FxZs#(JiHVGfI0UKz4p&NAt>&OFhb3|eq0Hqq@F+@4pbLDxl0;Z -JlXIp8b>ziuInCxhq8qratvY+<+t<#)r?W>d>MWvVhKVrj!^bk`3w@k8C6hx89qT0fI!J{$-Z&%`w{C`EqUb}U?q1od4tzY~5<*dQ0uBCFwXE)^;<>R*L#*f}YaG -##LzZCQv~D_rb-Mt(Doek9CU~@=uEW)TCtSk@s~S0;#;&X1(=ufdbdZyE8AEmH0Qa)I6j`DF0)DH%id*yYw*s+IucxWJ(GO{M0pfOHzAeu|ez12P06if -S3t&P+f6%?WEYPF|Jrc)Wf7lW5%cBHjI-^%dhkp -YD_2d5GOR+0@4`n&-bwd(8ninZcaY>4bnl;C!(& -TqENi>!m?svhoE8_{GJOSM%IjG(H9=p!LxLy`cQL>-K7=)sz+NNfQ;z)HFN?zfcuyb_$^7-Dg!~Z(i -M`9lC1Nq*)zYEcfiG`1K0_L(@=5re85FVCJi}R80CJe-&Lh(lv(rTu?4G%S$jzrQ=LCt3;KPYmN7WBZ -3%6yT7E>wT@h9IkXG)`r2AjAW4On-|5Q-I9~0{}ZX1+2`s>ny)4*fb-Yd@56h^77|{XX5MdN#`znG$R -)XW}cw^o8;MyK9K`82h)$xz!OqMZE?L1b!cl9n~Z#oDotorluyCc{lk;fm&Y~6GGDwbxEY8i;SKRYya -2_3k(KB)&gRI-7GjDZm*_gkxZlwYYAXjO@buv56rO)QczFT{z1TZFJ$QKp=;Sg)-xdG_Y60uXKqMDi@ICyZ-|M@WpBp4KYdjrjV6AQQ -YHZ(Jf6;%vJ$f4`SpQW1Q~%!>j~{An7izdpEQVR!$(h_$^o$Gq$K#nVdPVeB+WT3pE%FaLQ8SVTF(C1mSbKqMj~iRn^^ITh|m+m9cDsMtTyBB~KhJK -N!1?at};GOKfJK#_No --*Qv?y-%S(X^y6p^8}qh5`OlqC@5rId7QmV6RQ&E13@{Nb%1=Z?EUu9RpXg!jygrkH;tcX(D5Apv|Wr>5)Gb;Fek~oV+?YPy%GNaw2mu{#+q -jfJlIOQ47#GbncW!*lThAAkAvITwKUP{u%j_he15;P2vuToYE9E}=RDdF8^4>T`JJ&ohwcq@ -w$CdeoohG5GTO<8$?BflddczYUMNwkS7NPGb!JzEV9dm2-6 -xDO^ajw!$Z<;V#Ew}8D+4B;}kNuo`if6`|B7VRcP)u2tFDwBoHXLG5IVTyyaHppP67ivZhmcEo2mF8F -%TVr-V6)gS$6SncC%+E&JDcgFMWtYo^m?knuWxHiFjq^I=_7=mfEj4r`c~SD<0JuTtIiO#gVHyLhe1> -Xl;NZ246}4gvMxN576rhUeDoRqKGGZ{#=G$_%C~wV>gFaGh++qaCUle7WIFowo27ubDZxnHHLm|qy)& -UV4I(G_mveZq~CV1B1?m-Z#Qh+Ci?&XZ=YsTIZXJm`0D5N{!IZR`rJeLy+WYS<&qoOtWPg(_qftE&7A=+w17IPkv!*jKIK)j2FkVEJYrcum$-1@KweGnkL6$xlki4$acLR#bFAN -ZKB^|nJ==Unk>}ICN$H~ -?rI>5>o#Ut>$LkX*4xss}2$jg8+INiULnOS>;{^GQ -0>ym;EV5soVE9Q|3$6iUx+3PeUW+i5B25;etjRXz?U`96tW)(U&543QE=2O*IX>G2*9Iw?4>zE8A^=e -Te<`QCxi#V%uY%G1{}Sf%k*>7!&Urd4CJvB3-}h0xA+rV!N3STgZSCv62ceULKsD{(W>G#E``}PZp>o -e9C|P8E)AC -6+lTIW_#hpxtIEYcO$W(DJT%k@l6C#3G -|4JV-?_tQt*TdaZ7rDkY-t-F=WCRktR~0E5K8F@lCixL%Oo}VCnl-sBsHrY^w@Gf{%vT1Y~B>x54F*J -WJUjSODcBaMpApi53GJfnmjP23;2-w(^!;uknDSpiY9U3Oq`pB}NA|;VMZCJd>;62%uCp)@rO -)Vb4WWW}g>I43}qdQjII-NB7U%Wwq^5du*r#~g|RxLPRFX47rO6bDzQ4v&vUn@x4vpuFT#A2`Lapw{U -Ff>_w3aSU{AAYfTaftCvVsu|JdEv_6LbxW?#3?>TZJ!;uSF%^x#3Y-*|H$!UuKx;Yp-evZ?VW@rb3eT -3otUhw_nB|OWBb>h$!M%=Vp7pU=^jnq>1ZXh+bG}T{c*Nw~WPOZkuU%21QX|ir6t%j(I+pTPx3OIdrB -=8Wj*lxT(Ij*Y{6G{cEzrNtW-W_s!gq_en(H+hZNzn|ac574-4@nt5NI|2KHipt$CRt+gAmf+|=m -Y@eAEwdNHg!28H!;z7qAZ~qtap+W5`nd4HnER_QF7SUK*eZfGvl}Lkud&k>X!7jbbFix{VrnfkX>R9E -PaV){`-9?ng6iVdfNX+d-XgD1O4qgClX2c_%yP$Hq&|h7o?)1iLuv!MNR_Y^8=;AzL^f1=DwX{@fr?B -8aO1|tII;(|D`+bgc6dDPLC3wDRQSsO#5Z%N5(X+!}YOa^P5McoazXk}V)_uRVGX5u+r!R}kGFwnuu1 -?W^$QeHIL#X+%0u)ZmS^6EWW~>k>mK!BRdKS83&D~5?tH}~$ytzuF~y -M8mgqpXxwxY~G<^%=IAdgc-)Hn&z2A+nSJDKQ+FWm&T#)xG)V>(SSL?uINuX2r@vdmdwE!E!uh{n0tw -n7~b;!YCEcKB>ZQ%c9DOp>aWVt)#WGfj&D3s=Z@CDJ;h1l0YG@u;!PX=hF&bHp_rMOzM>$6(EAU6Z#$-|g7Cln9)*q*qanYe*JC{)ET16DiDJyqAo`nh=QX@5D#WCY$g+ZhF~(w|c&*#A5xd6Jevw -t;LKA-A4*%yCbQ?%P6X@S6R6noo2^0y*6^p7m~qj*sIOCkGI3UefMbWvdGhMk~qHpo(_FtC8+AlFJho`*4!^fB~5n%W^a7v4LDm!6u -~?3HkdUKt}&r6}Ex}rZ87^kdtW(X8hX$Wz1CbWr0+B4?0#Cc&Xmo=gpB+t%7z`k#Ph< -kN3SQjq^j5|?5s_On~`;u;Lz3#?clsAB-A~>6DdwNkXYutOP^qCEf!%vUJxmS+2+X41vKR`47Rhj<>m -`uMgIF{jF<-xbH>Hh_xE(o8|>Nf>ooJKHDA)4Fi_Ca?3n;e%8_h0BOD$V^{Q9IviI}13g7Na=}in`%y -bi7RE_C=bVM=3zYqY58;8+>%$H~$prcfmBf46q -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 -SWFc)I(n+D($SvMsa@O+FMR-m -t=1p!JQ<=^JXPX^DnR>ld`(#%dQ-c6?$&VUt@v(N1YZusSDq1#uaRE4%OXHT2P8EPd-{&HuWEm1AfDV -;`$0IUyzT8u-t5SUxiZ@RwROHO%Xlr9a%FX7Qojl| -gYZCIBc!{$u77)ry)aK!@2be6HLvowaT}{_6G{I*Hq -ym@q(#bMoxqgzcXPkZlp!GYrwF#@W1As*!0bXJOd%5Is}XmJJe*Kl)*s@kv|PEQ9g62IQ=10iTBbUmZ)Vdz7uk3|W6D+OaJ -c>WZPh~Ef?Kn(wiNXTf->9}>MmBk8}2A`=2tb7XyT2v?DgPFg^brXGNpDr(SRCsYm-m2jh&6!c)YHST -GZ67>$E`e4U+2(C}Ok5Rb6{f=ya5lLY?OM0o8p#Fn+7PBs1LEjVm>z<1F`Sc5y+=#P|oQ1Iz=T(Ys(o -`?f}-zEv9-i_QE?y@m?4A^3yoa3r`D6mtmJ{Umut6 -crL1J6gW%+4X}52ILL^3dO{$Xp-uCuy1(@1__2xJ0X)4pjZugkuIaMmJFsZz(@7=0KG-jOWP_hx;dZ+ -M!#!*WZI&4+(ojz0ouS$xLXnVW-uNYqm$O9?@M#oyQXMXl@BVo}Uib(PVdrIhZnN&<+pu~^xZ -EQCz32^USM*wyjY#TE_0~?ORl7fviMN_#+H72YRV5f5U*#5zJWDP?J0kv7rWz*tW(XfDx;m;-f(L-GH -qdh4XoQM28maX@*0Rq308mQ<1QY-O00;m!mS#!a#HIylI{*MMIRO9|0001RX>c!Jc4cm4Z*nhbaA9O* -a%FRKE^vA6eS3Esxv}T}`V<)HdPv$7MN%>?E0(g3$4+$4#GX6jB)jW%c$#EW>X_{2bT{?LX76X;s>1u -x&88%KJh{Vr^z(iKAFa85zkneu^)bV!`A -66&RGPt(lSpb>oUvP%ZogYmvLJ5c6N4mcVDu3RFqw|K%&<%kv{+7>gWLe7_nuPCad)#Dw8aQB9lDIZ& -{MEA8yObECmYhFOx$5P_VUVeVWHn86T{&Pw{~w5))+>r87p=Z%=j@d@9SZMV4N4cH*09yeiq-Xc@o -G^DO7JR#8#-G=Nj6ExJ}w(=H2t(ziekdd()cB{1*}|2~bjoXu}uCG`fs}gUcjsJP^f*p6*6KKK}F#HM=!|bdWlmb;0H~}q<(~I)b@2Ss}tWm*O -y;wjQc}w{9k?ucy&*`!ktj|DB;$LT{Y{(uzW`{#tR(X^Zv6#}m7zeby3svF^uyEPBWZ4{wq!%&Cymj8 -f|1P7F;f&htxbhKnr1qVI_VM<4$#`M0Js36TdoVn{599y&pWAT`<-3Z7Gd4O>|N55oZ|2TN_D;@S&EM -OsJYTLBv@*mqnlSAST9V7Ch+rOZ%Lc<*j=5Y~LS6Q-DosHB8|yOAo@va=OX$aSmbUQE{1Z-uVec8czK -rvj%p{9%lA;WlB1Nm6_~s)q+5#>sY*Cm5N*U)4u%Z@>-ZWdMWxHb!9F8=~lqMXSQR~;*$wmX(hUt@+G -{Ha~WxP5a*i#I@V`su#BxKZ~0{!dyGJ$nH0Ud+dy5ZX-Ud&jcm61I;B{Ig3>Hvc4#KEAEqI`Ncs}6zh1s?$!^Fo7hI?8BJKo8VagFTlRq4S`}A*7-MmXW(7pM11-&VTsp(f6<4{_*{vp!vfg{(GeU4U43*STFf5;IGkQ%^kJ2{;TK+ -?NjJmMqfj7xSgP#23jexk?7IBL6ChLm&>U5bRV)QCn3n9sFT%LwAB{>)ui4>pMaATwl=s%gKay2MUhO -R5DxstEio?nNM9H;hQ3sfkLSz$!k8tZjT81#kQDv~`VL(p0gcJdGxj!PtTs_Jn&L1o2mKNg*NO#3O|C83og<^qTq2>|~)GPoCYcI1H3f7SlN&|-s8HO$;`;`@rWr?OpN- -HbU%d%n8XMxUoObYQd>FKBo9UeQ||{Ap-S|JI|N7HFE{(P|Y(xln*8l^SR1S&y}B0^flfaGR}(KlHvL -v1x7NhE~NC*s#Npx*+gpVmdzVWhLLRvFVV7A^GT2HKu!KrJHrbB1VXgSgHstfR`pe -i7rNO^CTOv5$!j|A%%jc1n?k{gZepRl;xs;zA1LKP?W<_`t;3S(ZyeDa1{a!OfE-Hv?78lbz;p(G&Ay -jABZkNe)y@<4|#r%eOP2TBkE05VEDw1imfbDREoAgPN@=!f!!35lV>WrYPM;_EhnpeR`L%VkFY3S#*X -rHUSdrWIJNt;gWt0NvR&Bhq9i)a4i{xM#`7cos}S)0MibHsQJVcNi|$#tncNiOzzxV6J5lCoinr*ayC -bVXxIPh<~`>0U9

    m%W$){kE*lo^d-4s0MQ&2VpyV5ki0B)~nUYA+MU{YMfYJ6;46zE5tR(rv5wXhv -^c?{cDIWvmeW$&&)7Z%yIt7)Eo?aH|w?#i5N*U_$0n$caAW-$7aS~I%0)&RfF8NJ&`4n|*oC`W22#|1 -2e2~Wt$buho(9a!q#)g~yxZ -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 -w7I;h@n+m7nC -Ylx<5l=gBNb$MJ1ZYZb30w9!4K4F8drs)_op6k%7awB{hc^YWKiaH@t%PiW0F&eH*5=-eigv+%#7Abf$g4pNh+G@ -D-)jG$1l8Y9`131U#=j(Hnn{($Tek&%OAF7>cFQYt6Ak;EN3CtGpi`tf`#tXYbjr)GzJ!s{wvVJ$}is -ZCHsFhSq^M_sRP(m(zX?48wuzTCh{$-_AW`FltwoHTc%_;|Ck41~?=(b>U96eML#5@3RLEzVy3L6){8 -};r!%}gcHtHp>!wlDo -k;F(k9<+#o!SOiG~tI?f*Q%-ez~Q-gf~qkXQt>i -O^yusQH%8~u3p-HjF;I}Y=VG^oC|`Z${F1OHv$rG5I@|z3XUJFKj2wGY2XgTv9lw?;=_vK1Hw14imQ9 -VgPz+rqSOJG(zE(i_YaYJ1qjQ~gKBi1#AS0L -*HO$TCUSg>dWY(ZEU2H8EDVh|AdWu -<@7|ja@i2Dnch4Ho5ijiHEvvXvZfWG`fQ7HA&v*rn^3ks27A@`cM2vvQQ=OYjZI(4fBXVff5t-qC1$RSR<4qSi;epalWaeWT<;}QPoBz)=nl__GPfcHMZLj#Tpp`WO-5QGh%+Xb-=Y&qhhCmO>vi9#jLDJuFs0N@vo2MyHnh;n`To{lKs`EHNN -ySvv>s`oJjN69;_NYZUyy2%?yMFJg-Qv!UN!Hz{$Z2bv}zZ5wm`1e2H-&;-n9{a=^KS6iqTwT-~Af1o07FG4c~rpCod<<0A-crm*k#l)dzzJy@9z2G8(r+I|*0xDfmYp7~jb^5AHa`t -c0C1l~W{;v79Jvt4APd8Sx>gZ8A+pb4)7@%IwAl^mftO}cEbI**5A?Mj}pC#hIspzQI3QM5EW8LF;@i -fonoqTSZBf}5-y|uP{#?!a^91QMl^1In2US!v_NS$~cYIxihJcrmHY$SKK1-XISrN-x88#)*|<=dh|R -Q;?$bzNJ0(Rb3NEF6SDaFPGKPm3hNb4VNr-`X25hVc6&n306{tA$R>D7juAjiW(%50EdE3T%Qvx)dVF -E-Y -P|3`+4e8z!50s&kDZzNT>bhxC+$g141Ov0(3|DdY0ovfo6x%EuEMKWsmb_@d1&7Jysd`Qg}MaJJ_3Y -X!xTxM~Rpj!stJ6BYMhbN$3Bd0A9Iu&r+?P7^gkGUYx(Wt))5Rm`k?tv=1=E&6U&{k0}O%$u&kz -E=Zg@_`Q-P=Bpg4gB5RyB}+mM8HR>0mB80UZcV86Vjmk$)U>)h!D3Bzmm3`VS=a}7FSPrE$+OlD7df^ -oyzD_U_SA$Y7obChFNW>gfhBJ=!A5lD40Yo#5@mc!}(SV!=yl4ILwsX -SLHXwdnm;_dmzPo@$aj6!SzHg4$YSnqDkN%=da(tQLD@S*Anb2rmd$EG1VDX^PIa=ItokjxtMBx5{RfO@qPh5mQvFd>*Th|ldGtVYlWsy3wR_GiIz -faqP}~X`GJII`+`v#?I)|NqkV#kjTZZPe32B034_Oc;@6S)>m3Czd$yg_MXfrKUo5i81~sjf_Ig~@tl#=wuDzc^S*^p!gLXGiqK9((=s8s^w_8iPSt71`qzW -Of=<%~ukk@>@P=}?0F%GUpFqwje+3E-AQx`gUgnta-kE3J!qYr-!;k&_e_--(S@A@AFQx0(HsnJov^n -3Lp1hEy-)4|9Y2#j}zM=^=_u0VL?h#k=1C0cbs=^7vW!Yng-upG1j)Hg;BKE>+xR7XI*$uGj#A9Y~=; -R`BN@cTi0LyIGVHH`8L+j>yeaKzf8lnnn6RJV9+TcHk%@UuuDu%qNWrvNkMCWceLZ@dbPXn9U_wqq8Q -Fp4TGP)6tNFnSx&|Jm;FXm_jHGO{hJ8}p}cP;x@6&{v*hE+FQt!Sv#!Mk+c~+zecVA5&$alJ$Ey1vvO -h5m(Gt2*yq`O=A=$9t3QbFN5_x6ys{_SyUsBhPYz>*29zBf?HunBTr@z9|;7tPS8iFfGNZ3@=j2>LOXpaXmw?lAOB&KbMoFSEb#h$@b=JIlNcZK$cdhUB0?OsS7MvelK#^3mI4=JL~jDo3$M9$> -!rNW$OH6~n8nLgd26Ocsx?qZgC44Dw|e%4WxTh@OLj17b=0i=-PZ!(AK$g+?cm*$9B;UISf^EZ7p5&E -9YUCIT*V9jh+-M7_-t4q2rOUUyQ1li2Mg|Da^mR1mkm4j$mmTQsws`Ght<}c@o7MR^=HB>4!{c~86$R@Oab2dHtO%_eW{3W)kl8t6G4N8G`)-v_7FVbF8b9|xl~$CH)D1;=C6jua%rZ=RA5^JzU55znO~gX_DM;E#Yo#AB~a6VSq>acm%Edcz -vFUm{7v --k@)if0^D&!$%39usake)FnQM`*?|OMLb5aUFX=Jl)yozWwbCM-*Ichb4_O%&K#l=-$XQfRNlAT2vT) -x*Se?l2>X)9|KK(m=dy%{o06shoRjbNGK)}olzzQcmiP+ODE9lYCBhR7O;z`}4|>e(g+SHWt&`tTI(Zv-m>%b${?NSQCZnP7oI -kZu7&1#*2!fHw)=aL;Y|e9!Pt$pI@Jp&?P)@%}p6*$xriS!k5(_-@F?151+Eb-qXry&e>I42roorsKA -Gl6A(?MiLhy5mT1d)4v|}4FGOuc-)gZ{tddpaDxM>>2#GQ(!fWouMYPw0LEljWD56BPur8xCS*;g%c% -}cn?eUTVu|v?T<1U7w>)XzOZegV5^vYsw -DTaHcx@d6oleEzgS-QMNmBlHI2;a!!>7-WpLX2%N(Kubxu68lj2zUoflG8%o1NfY%Bs>^2LjIL##_IE -Sb#ro?JI|`=ksKmP~=mFgYi{q+(4<_nJn!D2<7#tO+i9|BIZ4i>1AE$!uT*k4HBRU8u3c9jd~=2iuhx -W9)Sw}`O06-v-32hs&`~_KDjbY7ZH^UKaVnO>TgYe0%!*xBlE@a5;lfQ`S6YTJo6+rCLz8vEw1X>SJ( -|oe5WAZ?we9#T-sHsM~!VIW!uEdtRNH5!IW{*ub49wh-DHt||8#47*l1rKH0)l -geB@D?j^}8!+pB2IcL1fyv@u+?W8hT?Tr;(|rDl!5_2Ez#DOY -0a-h99W7PE?ogs5vXXQBH~ekX7bB}on(lHoLhW`bxcY>oCn=Sim&Qwa~1I660pc|iTDyb8)W6};CcLn -B3(SHYR4@W(h?@!haWi18F^!*G32$wv1RMup^M*Fw_YMt05QW=!dA-Uq6EjH(V1(BdNWo>1*83__w%1 -c8N5osse?nsb$~9j)qF?tDQg;3kf6Fm!0uQ3a~b%Wd^=U~W`}2Cp*g$3_`$@w3`i7?Nc8rJn( -nVmf6pINc&`C84x-BOdMKh>y4kD{;kqUTUD@TMg})V2AYHG7Y}6tKMx51y{+iVHZ3xKqrNRt)_Ev!afKfhC(GXhrsooA?CI0jt7$#j$NBDD602P* -?tfI55d%RQ7`$ug1!ZLt`N`cvQ|pD1xKjY>k~G7rnA@azkBQzNg6EHx`;(;G(Jmhpj^u=c|P%_x#lBe -S^7;I4dqecUdcI0Ip=$vgsuP)!c;vh#r+Rl*oSW=`H$`ahz%fF^P`!ETu}~69`M13Qf?V~2LcSd#C*f -E7AqTta_-qr$ue0)`Qp}{d&coegeu(} -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 -ye4ziHWu;r}~njYO9)y-bn}Z -xO^u{E)F~Z=TalpncZR49jF|`RhH10|9s8*0;+~x;+fdX5UFRZ8Oil*QZy3|0#$r{an&ci1UP5T5Gp& -hW&2P>XxT#ho8>%%P!HPyxO9KQH0000805+CpNx>j=j_S|=0IO>Q02lxO0B~t=FJE?LZe(wAFK~HqVRC -b6Zf7oVdF*|Af7`~f=>Pf@2z`AB+8`~;N!louTUnM9-N=@Yq%`S~RsJ9nl3|B=bkXFMFP9CyR);iv$OMf5KQvXY@7ts`7|!dG`r|c=W7qv9t1o2bY7$vmsJoBJHf{K`qS>ldjIPnc -pJ~g!ErBmJ^XH#76}!8n-r6@EYmy-(lWSAisWn_ToiFuC8H=fFOnq4&x7G*TwEkkP~}0K&4X!Dlu#i* -tKu|+mH|#2453*pTU`R6GC!|w;v#|KqaZHJe3-@nF&O2;*(AxTxWX3C({WM;VRZ?830g;@POC!=jgoj -Aq#3|V0{JSqNvq3zRs}^;Rz*5QC=nDIj%Oq8hb%BoC#h%!0T4b)1UoBX9N52yP@HRfnuM-*+&wG|v&|~fi&c;+vvUpWq#xR64#5-dTng?9R# -<&XXMOgtQq%aZFyr4$i@%FeA-|q%T2d|EQ+CJP3_Kt$LhX;S#d%62EXl)rQlsMde -bNu(<;8n2w=I_A|dv9JM#&>^yd$@aa6dW7|d#~T_@9n;fg1t98`#-+id-GlJ0&2cFI1cvrUhf?P*y96 -gQUKfAg?g_5$m`w1o$ukn_KUs!z2m<}!K=OFHwg6=fZYz>ZXX`+?fkgEeHgs`@$l`z(Jpl1B>;Z2_vY -0hw6ptq_subk2wH}x!S3JSXK?iW_WnLKxBVlG;gI^cbMW@>hkM_Be;j;&u>W!w9=_Ox-fh3w-{r>M{2 -f=~{`TJMD0sR3di%Rws&@cz4ymB%;ZNW1(j#bb8~(R*ym#;hakF#q=J*hPB5sZk4v$skpZ1P+qhR}R? -+6j|>hJ&>K*U0w0|Emz-|R9RL^}2yV5r%FLO7Nmk9Ku`UhZ!11GFQoZcZgm?%H4gi*_&wwt{zStyXJI -@f*p2y1~vEmN?K165J$#1vn~s1)rxGlVS298NzA`WL4lWlL>rZTSNM-flLt=P-B%887yKT?sz&a@_2Z -OaEC<#523V%jK9isGKIPlbhLI|_J~%iBIYFnbUaQzJekMCp#m5orDG{z3`pEXaxojn1;CvGlfg9uP=c -R;t>|t>!91U>jqf^rTV?gK2^f^lGu7@M2K)$kG@8jS!Nu@^QX)}W8q=?GB^9P -O-#3u3WDf$!=vuCOcAcSH=psfrmgj!T6IU}gpIlJOiD_}e+mPS#sn`#xdr69>=)mc;tlcoMX}2lfU`= -%>6GkG^OHA@mrz{sn9XglNG6V0e>YZRfW2tc=GqX133x;8{Ex;h>V_`4_D_;N@qtbX*0qDfAL+@81I8 -(Om>z_EVVPcznl9bN_Zb8{GxTIKdsF4A#Q^+xFx3v$xo*VwWHH1_OXU7(BlVa$sw51)aM90x4B>jZ)y -Fz{Rr*7$xpRvnuZbhOU#MqA6R`9WZNkHaFMS0{EO4z^yfD0(AioM6AHZ7>}oyamnQ#NJ5tg2mHheTU3 -O8zzV|3A=m8$kAqg!f`8qIU$hwRB~AlWa^{2HO<`QHzhCm3R`)ruSZbt4b9hAK=GUE$SY%?JVRxL)a4 -$5s6**?Bsi6BjIBCP~I5k6I$rBtH3q`3lkS0Z8 -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 -@KcV6`>DKEU@1mpi_HbcAG+2?A+v+0 -&o?msu!WoUMN+gn)-^SXtF7A6$JwV*c05l7bKVSY?^->Q2eBlsl#X3oU#FLPG`k;Ql~!a -EMIF}MZ(T9JKJ&i51}B^BTLi_@zd?-l6~#h|#2d>l(ILs%iI+Ch424xVuA(T$go-nnWNOaP$}FE{qi= -zK<6N;Mw+r5(K}aPBAf>qRoW~Mpvd{asv{xNLho5a{qu -xOMe0~S#!LGjb?*NohiaJ_xE3Sq{IyxM(lJbnv!kKg!qeVfS1+xqL{^X~ -(Ymw4J;{s3HA>Xet1Zvy&QZc9NZ0Xrrfno$97*d=69~T90a8R0?kXD;;jf^Y#$DK9cwaZ7l(pGG -Br#hSvr&~a3Zt4MQn9Jtb=lsEw6o#P?KsIo0lIV7(S?ADsR&;EeZYdE5ROCk<)nXlr!19>ib`-Z>h+$ -9FDS>r2Gj*CCAEbD=seWL?!*bJE-Oi?V#^ScOy#2#&O=eq0UWmGNen_12)*qmZLPs@KaYc^`V){3E0SR!<03Pe-cE^kt)Zm%{)es<+BpX|lDXzVYHGz*=ugixIO9<_M^U -XI;`WsK4_RWTHt)NLz2&8+SZQ+9I_@q!gB6pt)Zo-Ab1P~IIosNMh0@Xs&6lB|Jxi9%S5Ngw#HX*6q^ -uEWavR{chr2eN;o)T$>hm}QTWCODa9NAiAUfc1?&w)8YHX}v!;=TA2{HMR6zCP`@Pn{{kD{iR6Ror)S -^ju=YeUGE3R{&SNs*N5?92dsbiD&d!=2bk_Vpd=c{~n|20>#ZYgQtDt3H1n$3LC~VTomvKKw7+%`85(dR_xFV_kex0oYt;6J+10m%qL97N -IfXEfIb36`_&ieF6Tp3ZQVv$n)P=;71lvceF-jA6??VojMrN7Y$8(JK40MqJGs2*S;lPr3K<>;%CQc# -8tX_0i1}hr#`I0yAj)_;-ApifM5WucrNLNjm{-V(D-oEMIn};iD~SQCV~@$a0)H1FPI1{69I4cU`UW7 -D`H8Z96XTb;y3ZUl*^oMiTTivCo(oPqPs+?wHVG9kUReI4KwsjD=PpIN9cE=44(uYb%bx8pwTR#l2N- -Iot$<&BlOdb2J5MUA7jeZ_fsEmUSxhC{7Wb{DjBM<*?vH=?tcwhPNak#ih3taA?cvdazOFhGaxe9s`o#8=HgDEJ8qtX$D$yUc>DI~SJM -ygPM;F3Z_x3J-s1K^v0`e+o;iTI?brI;F8v((hh?C$N1wP~m*G5M)_~6vOs&Y|w6$RI;?ZO5!ucHQX? -Ra-**_*3VdFP^@p&3_r7193C!IR6$wZr0PXHe{qaaMU;_#|fJzM=;(U1W -7iVpfH$(Mi&+^b)yt7rN*UVHwH(%PliLvN~XXB$@s* -E-AdvC=upN+Ine_02m7j{NkY_3@MWD|{BO$b=(Dw&sc^)W2V%eW+4 -O&f(#(2})U%eG-jz1+q^TMeVvc72l<;%mOAXw-L8Z6r;idQAbk7oIy%1)Nt}BW&0u0s+6XsDU+sLG7e -~AAF1RFH4#|z)!2yI+WTxMg_Teqiz^Z7VJ4I^fOdF6jsAedmn;48_zr12o*o#LTAfF+sCve;4Ep4Fee -+MA0IicF15$z#|vAviAW*UK=3DHcB65u#qWgO1ug#07;b18mxiB1xDER;sjneb?S#dYX}WoXa$6K>!U!OAFQ0hM!sh-cgFj5 -}q`DZ=t&o@nyd-W~Go!yOOP`7Bm -=WAKGC_x71dHlKR9|Cciej5^Jgl`Kar*AB2-!nA42s%Hg8pc8dnC0BHoMZjqG*$gJfQ!$)Noywau3vn -CFM7ECG$wgD(co>Jaof>s!e>MhW#?uE33ivltUifQq2UwdLsG}o$Ml1f5jv3@{aBOxQuBby7%B3wtU# -P@T`GdqfGr2Cz9zSnt5cRCy9rOqx6k46+q^o2!-C*lKH_AJx6_O~uoC6 -c>Y^}26u61i3rz$>m{^H`B+{DHS6sA)^oA)XV4s3$t5)f(kdro4T1cebfO@bQK*6GF6(@SoiQ<`o*fw*^aS*XKm~klTjraFg9dqR7O@rzQ>Tz(-XjBs58Jc!O9AkfBQ2|sQqg*`Ej<_XDxdMsM_Qy`% -?vL`(SyDhj#*L*LKo7!2vHr$LVv?Tbg9}XDX?^4F$)zljSSGz>m*~KD7Ddza3MH`u>lP^){^imHtn4m -0BlA^m+k@*7qDY@Oz{eoTM#2$N|D9b#E#NQim~H>--&$=F@XD=EU{$2TWAw-GWeUl41jwiMWr -;?xES$Id4#?@{w1(SRZ6m56#?;rSex1krXcKR{X%A)<}C80yFbyh6(q6GEJZoHI+vGEqPvXPvwkv(<%4M+`6;UXChgY=O*aQi!e9l%2JR%e2p1T_^u3` -uNYGW&ddH`eRGGPM9!H<-+-1u0lL{HY~pF(MU!skZTX95h^S9QE6c)SDuVn`LA9^Cg_!x)G(h+XBFGU -W8?#S?T8&hL|g%f1)W@g-c!g*OG~%^5!j1@FTeb9rL`scjwEB -yQ}Us5=&4M8Sx8dJFEgo-Q9({W8)5OO&q13wA9}R?%Ls+X%(1iif<@8_31T{=BUyA~5G(>RhGhpQv!q -5USYn{xFQpfOU3s|^p2&+E(r+mSR-StFh+;Etx7oE(G}Uwhb7;!xs6$xe@@n)xC`aR~_vgX*sx*WXdc -|+>#i+a*pTEBvkIMI>t8(1-l7(|U%rq1Qi>}L2rTBPD(%S-#pVP*KmI;~_>a_UbCN_=`nI*Q)52w -RonE$XnBMi*A_cIa><%WU+@c-^f84tGQ80!Vp|?*%Hyr(D15C0uyFsjJ6$)y!(yLmQ$rp9UCnCP -Ch2sA>qvPK!V^Nlm*r$|tOWaxQ2QjKS()_)$d+oXIW6EJ)Mz4I+y>y7o;A%uPSSy}@vv#n<^j-*F3SO -t;!Rl{&GVkE6IO!wF+a4M!9K|AD5pbGII345c}r9}!JE`Z;Rdw~s)z6s12P45Ugv&rz5(tv4HxI#=%= -EE>$)APp|r6(>bE5InIVbEF^#Nn5G&X$V!0+GAhTS<2CWE7KXOazCD@xy@n9RO8irYP%}pI^o1|GVX& -RK-XoW;?$#j-@C6n>imTTif`!C+_-~?bI3W_+3DtSvD;LzzPJ#}RCtR}AKuDtrfejx6c;VksC@vPL?Ym!3_4Go^4+e7?J=OiR>mi0e} -=?Kc{f5v}bkgemNdpy${AE{!8B-1=@okL8T<-uerDsk~aZk#lH@&)g|wGy!W7cK+NJWtY+jy9~&;v<} -7=JUow>!E?UwjQpmE;*v(VNFzs1El<_o01E9#brTD^67M@A*j!4XNMWE#=@I$;c8TPKQ`6^hWK86EwG}zc|~X~&r(wV7iyrJDP^$= -x=q^WC!|kaLIZLy5x-U?@9@O&z+_qr^?M)EjqzB-a9eCVEM2N>&f1Mt(^C3MYP#c}oyQPC -42zMYw@-NvhXfer?t%fybe&h@spTRKYD3lkY=)M@d>^JuM&ehnOtjck_Ev1D9Hp9G%{kkK{WI=)ZFlh -~01<3R{moX;!p(-{#atzP+WuAG)j*sb{v~;G}aPU{6%_haQ6@FCz_vqjatgj-4lm4%AmT}^{*=2 -npSX3%=t$BPRjZ1{l)#h*Rk2Cn(ie$2=PeTwCT|ByX?8t2sNA -Oq3S~JKj7seoYD=t*s+|vjYPZwwwxGMN92$Zl1m@e^RHA=Nwh{E_ERbA1=eMZ=nVtE`NT#FU9ClKCI# -k!y9*m(^6uD{Vnp8eDWN0107LszrX3bnMy!HlLobxc5%( -hU5OFcTp`EuU8CvqR-evkp?U10yES*D184z7{>Sulb70pte!J?0?GtjWIw9t3;_1`G%M*5vd88@+c|OBGLB@!t6xNYTYn`T6UCn^{%-E#{A4u62L6GzSGb=lb`8)T -UWAjO)j~JO`n@9z^_(eQ078$aUn{1)sA{;G;%-(6V0y6+>_Sc@$PE_QQ}~D0w|R04tBX`tw`2^U(Z{C -alcDv+(-z#`U=oFQ7_tsYO-{L`xL;}NbqkYs{1UuBb(7xPSO>k9mM*t=WxSFi#1{fEi;MLwE~cx7f3c~<*Ceb4Qj#Y0>QU}nM%6E9hvCOo~mf92M*CwBWLFKgg_Pw -MPX)=*rRwU7Y7(qW>-{%p$XxH8Bl{*5?m?nFEA>w&D) -{0H)2~!Xf{s|PC5e-muNYx&yhfotvfgnq~_=V-F&n@Zsc|sDZ8HII1`HndXE9OH)5w1#yl)+U8`};3#Y -fH8lAz_X`2u9q|lbci>X#N+iba^LgT5juAMauI@k<0He9-ZherPz=b!5KUo`0e8U;i9de}NTQ49g=tm -Z1M3->S=*6s%2d84cd?|K%GTFLm@;1^a;LwOx545DMlo+t>M3tLiLHI~JVBlLL6_LO^B2Q%69$*MYBk -Gg#~6oBYyBOu{ex55p%%^b;WUz>Wu$+X=@+vjO@iJ2gP!*SrK2FCd^jW4pi1STe(z>vPjB7adnt7OR3 -iq26!J%T=KZVyonMh<4V$iN7Nxm$PI?!C-KUMu9wBBzT;yd$%dAn$E3{Qi$Thm^1ndEY(;` -w>Y=enmuwXkf#OsIIQ?9Ni!(yV@pBO}Zo^ATHC@7+eay1+E^C`b)Lk8u#bX^=U)^q)cXxPj2NL$5Z5O -BkrPTxHSqejJWkT7!h<>*6(2qUag*>2ZINwa8+*-vQ4AaqXFp<)92ObSdFNp{*g#=BAI$wSy&=Y -!!KUuy!prIxoSb5!cnqhwBE!J9D-2WEq2Oy~~hXP9Ba+9p1-(_$>ge=3T0oa0EHqZgt>HCQ!l^fUuV<9l@HK3jXdY4|7Z^;VutHfv6~6r)2k1}+)Kkcaphkca_GPMMdLGQ6VP -ww46f&5~5cVp-5~h`*jfS%El$>NeFZk~882#NSt*`)v^T@h|J|DT>$1@F90n2@RMCT66S*;D}=2?>SNM4K{uEtntD>e3Vo48B+pb^!a~nX -O|*0S?0Ead^E=_CRL(9g_%zC!Zpr>ADU}amglDA3xlWTC$LUGVMBU9W64$$eH!WZBS6mr`8WBqO05UHyN_0UOw -qDcyMGIztPgSItCrb+U`8HmOnQDa(N0CUo7@F%}HrJu-WcH(g_BpG&GcwF;=rAoh?sYa&y(hoT(isB} -0jSP5i0*TGj1RG@Rx3HZQAT^q5QzT{-5%()QsmSy+BCZ|lx=0R@z@0a$T)EV-L+rlT}%NB?X`h>K{?? -QNp6m%xV_;w7eXP63~MwarKz+hb&`YybW=__?vbY$;rzN7^$C~xm|5b7bchYf5M?y@cswpK(O7$w40D -cChCaDPI-z3`r%A>_%y5vDaDB!_TFoVkftdtJti2{vRAKD_l?V|Arpf$(nAm!%vy_phFXN2QZYp!VDx -jbYi^e`wWi*beO{y9SgCQtGCp{Hx9v)CKwQcI7ne#w&@TNe0MPW^kc&!jdAR`UOEOc|3!f~hX_`Uqo9 -~hj6AWoUw!y2P_z|jfiV9I%kcBTT?Cz~6mxO0V1qp!>)_3V -R=nQI5YB!*WZ^?z&K(NsQADQBTOqcO56ly?*p`l`1M9V18pGnvxd1OySYVcEo@945O@>m5Z}#ZE@+!r -!55UzeU2aHK(X+mX7Oyh%jH-86&43`3X#V#XCFY!h|SwLtfEfA7ui;N{+{S1_utMN@mPg6%hd4|Wb --?gl&GZ@>9&_b3W>|F-)k_`g3M9mDh2uXo=Z9|Z@8!HfOvH$M;%DDq{T^#T0c+kN>3d0kZR$EtZl1J<<3dN)t+>Jap>^NRso5zyrZ?=I4cq1ldnVNBI-%c6Vd6IrM -(K#OUa&ohsF(Sy5L*uBHgkfi(uYixjV?D>OnJB4k4#NMD-f6}ESn)2!-Sn0pK!W}qw;bhrWV>fwzfP3 -v-tkcKP>#f2@72fo2z5Y2jCe#d`j{No++uu4@VXBiYxeOv}@#^i)Bf^79<;x0vLFXAbQ#Z%Os;@U_#P -oS)R9ks3QFqTF*?*^qeJoYZ}ecB4UM*RNAb^91MV!EyQ=N8o6pgy-rVp;1wlSf_8B7_M#M^xQ-aJf+W -_gVPWn{dq$p5sWYi1`rJM%iR>uRQZPm -P7+K>dWro9yHb@zY+Q!1*9$F++C~$v0yYf7u%O!@!1fYdY4^XrosEGF^2II;f>%G-83cV_y^wOA1Jce -BUk4&CU3k7JzQk>D1lyjk)`M9FwSg#T+4gffPR?V%DIsHj05#wnAv^v6P+=weu_#nM8Q6V6>?XqnoCW0~l)Rp;L!uH^D?l4^ -<0fXu^$46UuE> -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 -dO*hOL!5B@q2g&~tu -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 -V>D#H~fVdr{)ztqq%L2@$}`s3)FnQ09& -qIFfMpzt_vom|TSDx*zn(e60AH`iOMKi+akblhZzjkfIkKTad4;%sZ@hs$D?X~G&eYJQ0SndC|w7^5| -)>ivuHkQ+Uzs3H@SnM&L)hTDU&Rqrto?1E04D|!Oe;gQp&`N$+d!Le*10`3RBr-Q!%F2K^*yzge))Hb -hn_>#65>6{)w&vZry`7|41Y#+09tD7nSBvCghQ$nTSG?*#7+RU2Iv|8ofQV?l!}C>Y-jsI5cpimWM4r -uesH)J|WI141*mKy(eX83U3NlL|=xt -%h)5w7Fw#zxn%=)D^hi1DSM}f$P!&yNVxn)lnS>u_{$crN)FAKx1n<6#r;++lvmHm^ZYXzpu -Ob}L^!}wrn3H}9#UO4y5A9#kQD*7ntD&P4%E!YPB9ZJC@)M=wTos-Rt+PRSmqR(NYD~E!)E;h51zN1t -3^bUP5am=LIkhPlIFgvmZr|5;T95k_q{wM$rw1)W50-DZA><89-S7F3#dZgNWytsSbskD$)d)YtrP!E -2VQBZv*jWXRWv;GSDL0;b&M}Y(&40TUiwb&TuLEGAt+Z6U?x;F(K;-16VhX|kbdTgrh=HcKwpFq2#@Tb86`&cq6Bl?kS8;4NBsZjx8s89IL?6 -h8tj*M6DBW8~)SMrf3_8#f0E%fq6a+S>bwfv;m{fLpA0S~iA5qbW}y8qCow6SB}%q|XB!#mwhRR>rB -`mBWrF`$&;Mpq&qMx?+ImjO8~|oq^JG!GHELF -RI~;?a9c{F{uu9NO&}M6yYq;Xl8pnmL?-?{o}E5*h7snHcQH0HgIA?K{U-uMGS@ZqxK!;n~aBKFi4tD -w~;&Pu&RKIbgVJr3GJfq{IPKCKID_Ms!+Yk!68c{l*2yf=e=9%H~K(DjZB(u128wjD6V41lA~v1G;Cq -NS{-THfoV=3x4Nx*xiTM?$uP^EM4}DNG{Q9jnQ($8j)8ERlM)s4CL2Dze4gq4C~Ysyiso#El}x&Mo= -F+?8y$8sivsVX% -VKCi3B$SzRdyH-i`jVbZ(kVRFHV&~vg!@+jwc2(C}okL3Pf?@%!M(Bh|Ah`jo -1d>@oLCc=8>D5m2bc=kIyfm0%i^vmEbk6kj$S1@ty@C+A&Gv-V)dQ4siLu+5e%_S2c4j%ysq)ymqwx+ -xs1q9gr7w+9xz? -hT$^tb#Kz|@dqLzVax3uJJ)PkR$Ixw0ERDjlg3tW39{J4h)IzMIxn((}JGjh7#Q#0Y@GtfL48@A(_wc -@j3(BF6(e3<_l{P~-8qo?}ZR7RwZQ>o1=FN}YU$HhmpPs#ed9V&y&6!uvyL7vA}lrS_;`Z49ptIa3X${bM^u4EQPZdEi>UYNd?tS -%qqFDM$!U|IvV-j^#fM=sOa#e6@nIaZA%{|>ZVJ*q$J|tjkzR+Oq)yD-noQ}A^u)Rx;Lt=M7b#H-zN6 -U&{>>=C@MnnGECL0y?iC>;3z98Z@qT0V*a{&Sghm>ISb*RxUYd(kI?6H?Kus&0B2dvEo1Gnvf%aq56Og5VwRmu5~>GXQIn`E>TezUxw+3-`ba&&68r{ST<=@{j@GiWHQ670Q*O7czX) -o>}QmmgpGLmFS8WsFyXWt#MuY}h-Vk5dc>Pmd@J>u!FRc+N%1}seVj_OF=^w{VUc4E@}nqcXVwnG=U< -FrKN1%UV~lhq;(QnWo2$3JR4ZL$)c7OkZpvQM<%hxkvBxo^&4eMbW#?$2TQp44g7OoB#*J4xW|)dwp} -8$)9Ho|q?LYGR59Z`9WFE1tw|K8tR8&ZqU|Jj^cKD{73EWgd;UjzKPUu4~YuCFnGAWA8Gy#XAcxl -*nn89V6BZN-iBDR$Ak&_Jejrq2FK5CR6c_PVwT#O+3Qvdmy?H+=XE&mI(|Pb)rbwBgj|;82=c~BRJzp -Y|s-Hi8L^sT8Ir73bP^XBZdI}Pg;L;%!tc*a1+nX2wH$06>-iCh@qAy-VM__BkGd84gY?KZ;S(FNsEUzV`0~C$OAzB{bx7=Myv7|L{ssk -X(@SUmIJ4vw(co^X;m4&M0X)uEY$#*D{Q5Q4l9$&@cOnmEf6t-w0`iO5X3B0I*psg7)7LT`gtRrK52s -H@afmNe?W&tvnoDE1sM3HF60h|lF0iIE^9*_zebe8~7D!R35Vmi`Wk{6kHZL~-V8 -_K#wEebV-kz^~xvjD9~?A^|-IUG81(`Fi}z%X(~#08zPc5p(7Um#})EY{F21q$n`NdNA@zHU*YnqF-K)3M?fIvp%5%=w=d1Lz*Z;ED|LPkb(wyy<7Rtxt(W>O?=9kc@JFpXYaJ -uF|SV*olQa$PVVBCXrePnw=4XHqDL1=__Iz|_hlYQ(y|?er38R(lPhB1Rm -mPQP_oC!F6))`5ZIQr{Teu=OAvgFfFpK>b*rax+N3&kLF{q8EaXB?ErTZh*cLC&`dcDoyo@7XC%59Nl -U3h{);sIjMPAewQR6WuY`beDM3f;BaC4Uw*e=?=#`Jz>@KrvuG%7(@=-46=fg+beDO41vQ*qwu74$ -3YaOgD}mX#0KZcoUX3tE)Y=vE+NaLGCvBuGP2?z3V9D@oXTDn%+!UL_71fWxS1;bb=qyGho6@^f{jt; -Cgf2ag!416UHPdE)EJG7I9;qGXn4^_+=~5Ix03aN72}tj%F(mGu%#+^G-a4%+bJ&76R6F`WYi5(x`zA -;N#^<503h?J!?0J-mxCNGvg^9-aq6Jd$k5bBV|MR!_M6Ca1&P?VY83&&=NEaRuylD`J1vLK -r-@KwzQTe!548{)S~Y-B9g#=`>36*~utAqR)1=24xEhjg8|5*X3=qIr)~Pz(eus0>z`rz>`#1qRkQwM -Qa7LvT?+_Rb4|O`zWaUY0oIw02a+@Z;$z7~?_jR$m`}5B3+vB~1H@dS>@iX^U>B{8?Q=}PZTdxbaB>& -|T*CRwg?hjXs}swofIEC -R?*aoqZOq;*LbZWNl{Enyz6iMn9*QJXGViPE2}~3wwo{86IDl*_nSrr?$}%{-G&Q3Q4{ ->Ip!HbTkx22ezKuWY}^Z*7T@$wU7I6YXrGPaOE>iF4R{RnPPM(;&1LrTA=NrIsEWX7I*P*32;@pQj00(TZjFcuq=H**=Zt({ONrB3A`| -|0swG%PuqniI8FC;OHB@2lOW6K2PDX_1yhZ*G-+?i8NiXcPF6TKkpHq7|JVwcv-aiL#fhB5538Y#HQCg~Qf7Osj#9 -3XJrF#+VMa+uQH**LfrT;~BHP+{IK3uI)h$4}iu2K)Myy|&av*eEOZ9>JnMZSUa-`GT!RDq -tU`rV<(+f|tS>b(F?c0-((Mr5Fx&SyyspMP-=zDW6R7enw?)mmK|0U>c(t%KfF4p0_%}Jyn~dN^Q!{Z -96@0Q}|5!x}A*t(tJMc7HjZY5#C_dlk% -bD;r)Hr7l_3hKKUSmheoNxB=N;Dnm!gUo@$V+8c;yh!*6}YDK&&E?$k2sWd^PDuKJ(0zeB~hpnOdls) -bx*9S@xnc3ztb1>Ibgf@5hQ3)*xz{=g<&6C~;{`1_(}N*Ogdep`=q2OXw3)E>tJ|Z`X!wNGm6`c6GCs -N2A8if_5<+qzk>WG(Zy($GCM!iq`s -0B+N-vvED~)GGcH-C;QhDFIb11`APMOd{9W_5HLk_0$*GLe>j3441v`ji(p}IRoDR`i91RQdFpSH$(v -;Hh`r5mr=pZ@XcNR)-B|j-tI17Eogs~hO!X$^gW_lw0*G>6ASmWBF$&%s9M{TnBmulJ7Ve>S`As`ex? -^wcynfm0I3n3_G78{%urnF;*IUYo93G(yx$#Hu^7JL#$+N1!sP3FEgZn|+XOD>1`7~XPGm@Gb+Oy9Yu -1avQ=S--Hq%>BJi<6wTtEAP&WG;HLK$?;&Rt$aIk|Kmz`JR%*=h;E;zd_QgdmXX8gZx--W-n8Dd=P(~ -WhzSrz&T10T1smP@3A7(Ddpo<#K$ZJr8T|RQm7q4n%73d(W42Pah72+`b-4)y9jCj0s-y6LCYj*A05X -Q-5*`YMJht6Wkv=z<=o0SFI(h*)>2wTtuP`m(%yyxlwo3XpjS$mnwCmsZv>kOc5ZdY?t+S3Xs52Rd6! -Z$LWw~sg5GqMIT1yQ5!<0z`on9{B8ENd!s@w|cE$a>jwi*$L=|U+2OkrM`7EngMW!c%H*>?3S7eJ9x3 -3r>i_Pw7SC)3Z=C)17SX9dm{-f2lq-4V<$hXx_Z(_t6pf)2WM}fR#&q|sJvvq+&Vef2=`X-UNY;_YLi -(I4`QbCskgo)oas97nI#Tq~DM`MpoBahCo93c!^c!9BXDZ38IXr1w&)cU_aNE{nXm185C*PdH)3(GCK5ARdwomVtHT<*Nu%E@ve@c1^2@vT1JoSsuvG*vY#&Vv}{&kG6Q%P3 -fx2E3cIu{RGSXSaLaukX!j)T`aso6tSFJGrbE7c{y=C5_)pMbd|bMX?V@Cds0d8`gRgdD^XAqAt~WHK -@)$gG@rI2UL0HLoKIZ<+0L)Dv?4JfYFdjK-7Lr#cD%$a+`3SXIl!qEmAmBScBGBn0sPdMo-K+c8n8U5 -~$CQZPJ8-s?%On4kjojC3G2q;Rt?Brkk37<@s5?YG?01D1AI -PM7_*e(5>ux(&wr+(wYUIsA~(g7wyK`N#9)&e-Fi@6iuQ<6Jw-xk4nc+GRsL9-W<82&k{k%S2|(%^fI(tgA4Cj>!$3u$XYfMUZqq$w=UYqvMukcVD*kX6aIj2joNroDl3a()FNp~$S -+0b3r;|uJfJ0);Jv982CVB!u75rF4yG={&)O**jx0vWRI{%u*r*#!sl5p7z=m?CJDMFZ+wW|b89aRUgIkq9M -4?PwntIA+i8G*-`wfoNnA?t951QP%6xnhLTcDnwd>rh75 -QnV;ak2mAIDI^TP)bjEw}7n2WFo?2v1mPmi5g0DSw-ea3EpVA$?bz~=%kfX3N_FgGM}X)`WpJs}qH6lbLZ<+ZZj-+21vS6~0>&)>AjNrs*>4}q6mcH&qTh))DYBFDv$1C!K;}vm!$1%RbR7v1Gd1V@ -}q$n~n?<4Jhp$I`BEnZb~xg7)eOFuffXWSR)Zp>jCe-qB%{CR7dTDTdkni`e`=g{0bITEH>O`NZ;bWAvUdj{XrpC>{M}G -Y+C#|S7LIi59)k__QnaLgFDNQnQ@@wSwU*`g -Fzg$xNG*cM2ohNSh=>0lek=(?gHakCV?(h3&ETeVK78Jj=B7x(Cn-S^-Q-iRvkhh=zHWe2afe;(|;Ib -O5Z3d#pdTA@Oo_p;;s-m5z@Lmyi2?`^}hOjn~=37XZ(@77q`@SkOD -BkaYyMxBKH35%r19riW6B<8mIEE=D%QPIyYA>d+ -ew%}{prE{c3M4Q>4{^wPfC4o>R~&b>zd#NPXq*Q8wBGPH|Jwb@AAL$#}$)ZVP{Huj}@A>h=Z_!a5qb% -PubkhI~l5@mI>j0=TiHmu8ZYJ}=(by?&$+E3ZtmXP^Eov!HpGjrE;!Zx^oEZ0X#)RuIEJ?EjQk=|!8t -F_p`TF{_^#`JvMZj>IPb)wlYog&dz;@OHl^(gB7-8K7bm-xK&ZZ1WSQhbHr(T(wG>n9q9Pzy-gFfiJ@sA -Zm_vsx{-@3GVHrIXcZAlEJ^OX-y}kRoyIZrA;r4) -y}0!l^VDUUvvV$z|9BF5^@FS7Jkov9$rP(xS+Z|Bt|hTTs@&N6Oq&oDJb$jJwthKj9NXvZrl#vk>J70 -o-h;a}c9qcj2-l>V+0i70;}U12a4mX(yLkeXs}Y-S^_jv6iVFf>y(!}KDI@S=6{xO@7SccaJedhbS$3 -{?zymD%OA4f}&_|VBoXu|B6*Je>Ggs3%$>F}fU5~! -J3wK`sw)670mw(xTpHJ^P;mU?rAw0HDw!8 -mzD%FWTeUgX^!3l9n>#zl_9CLtEVfsaB&ZxM&8=^{gqz%-5Je&i;=tbu)ILEYv9B8DQmc8I8VUt`zv{ -?L3&@IRIMK#TI9A_$%D3)dopOyKGql#cRdRClzV)}&ax*p49P4v`9DV9HwNby_suG -COMVpV|@cjXbVq)A$_wD=2vbd0?TP+c&!t(|Me-vQpMA~aH@Y0GceriJAM-9H*PyUM@;AyZA+HQj9kc -2W)nWNpcSffGoL$Mw<9eLlqtU*tZ(q)R~Cr5UOkr^&GGC8&f|>@bSl@mO@FOhEXf*dMA5GJO`|#6=+< -BZjNKM49*KKlj@u2uTfMnQ#7)#@qyPM9dXV8zUDD72FJy)}E$;%?mC)jLxDGWK<%g?$i!y^51#9-hyZ3$t -(IJBumpLTIGCvgojy5f*MPN8Pn+J0aV{ufcIW@K_oeM^+(^RT{VO`uI&4}^T9oY^ilnS8+Zn&B*j`)N -IVgosi)=|9^BOj3S+O*~{jCE>0gWapTh1}ha3(U@4HOCmpin5(VX#ri=xU2D^Uc&vG{;j{`G#2PW?wT -4eTDBXZIvg(8D$lcg}F#Aab^2z(VnF)F3sYuduVjHT~Hu!N{C)A5V5@~@@I)Qf~!1fqd#8MU;fHqgQU}HH#WMW-Yq~yv=#XT -heaf%H3?Ia)rBA4w`?2BD|>MAe>Qt{OREE`N8uSPbqeK>&eT*y@P{A$Ixm0ZV`XK)%p2uakn_G2QPW! -$h)ex!x}n(FS@Fg!vRAbtRL%v@uO5%09M860;OJWEYEYP>9w&UVU9*e(|?%E4viDky8-XYjLaLMW=N!XxzJ7xU -HATDK?sL{Hl*rSgxe3Tvbu|kxEJj)6zUySxf0@DF0p6Yzv|nSpfh!-2#0aayci>@9(3RW5wG7bCiJm; -9Wjb4wxJr8&1_}#MhKj3$sp1^xA5M#G&KTC9+U*1DvGt#)Pp^nGpgz?9CKiZ1$pX%L%ayd|`(c)64TG)mVr(Ej*hU_yCd=vg=ItEZ^#>wtQ7WXr2~$bXHdk~LK?O60j72`^}Hxi{kMZ685I4u -znmsTdoz0QF!}E<){@QkgIcBHv5u9{k&x@*H?E4`pf>&k0P4$ChR{Fd{u6Zf2}Fr9U0xE2qIjE6?DiT -KnqiA6a)aekf;S)!oDmZeg3ITU=D -cs%9rYY>_=*!Q}{M-Q6V8N`#Dx@bOCLO)6ynA8&^6r`hBON(2c@sW_XP@D;R?{dsKmWfyj -{LYP_UyF{8W=BWUqoYyn8d};L6k`<{&xG(`0V`3`QR0Y4HV1)?$aqf-GA*qJ*B75oU+$txrBN8MX>`UngM}EwF= -Rs>|~5xS|tk)6@-3Yc-JBzbz6aj^|wH;k{2+QCHk@KB7K3qMx5ZW|KhiUEPa>Rb}9mR#kyfC*)qe`0U -qsQB3dhNq|35%trkqyLi~4T&gWE95F;VgC)-3AZEL}z -B;O1R0<(Is~)h9t-xd_-!8Xo+Z|cBuW1=X5Pm3)-H{vI`y_j=^WB)YQmGqR1;F3RbPFmn@R`xzh8R43 -i_++<_G>UYtLwK#VwBDS*+;1OcY#x*U%8Bsy -Q(404&#SV=4dEtH-F8p}Z?|t964Z|g;1b>!N+_v%w1npcgg4$sF{uQ=xRvCof;C2#H5&g7 -?=17UBqyB9y3uP3%!h*QzPyvF=RH1=`g_{gery%+3U!EU6XO} -A}FiLmjbS^CIB_a?$oaM003Mz_El$JS~3a8{*&bAuK= -BTIYjiP2X0x+=Y8)vz&@_d-2MYayi7kb0hJ+&$#cY7ia!b@ZD>YhNH-br;K5cS(9MhR1x6AZyX=*HIb -k!{Bwx`AR!u9-na}8C0ceU!DmF1uc@Ma8$VwbKgUs50plW0ZVn8Fh3Wqp-Cb|fMk`*-ML%o1VJd$BrD -_`!%sn~fF*NzI0Eyqsl9!FhCY4d|Sw@A5Gv_$Ws@C~OvR4jap)FaaVlx~zC{t+Q+uCLU|K(*#k(oju8 -vQ(J*?O3^p9QV?Ho4pw?kO$zkeHJuN}Q(T2nOK=#4&-|`jw=eL%d#1XlSUSfE4X)nX;^}_IKoyY2>%@ -3k;=#e&E4SKj#kp}%Zo;>htTQ9923MGqp!pBA!jJ@k^#zYBR~L76)pg}a^0&F7mhW$?uBTOOAA)Pn^z -GJG+%jF27U1En3JoR0J}q9QAF)RLJea@XDpku=!PE0Mb`D~G%B&M;3~wEZ`3cvC!Eq{Z5cl4Ac%n?Of -Pk==XU)lUjG3bB6b9)O*g>&e6^d&M15&5&GKyWVW=~lv^LpaXT@An;Yinq$8|t2ABTUUPo*rV<7jGb_ -5Y8U7VWJCqsP -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 -1+cJ!cG$6cYC8Q%26 -!R|fhhd?+xNY`DY7?p#9l6>uM#{ZEN*><04g@q?g|9?)X*wRBdaI@`k4xv`1mqJ4o`YM -7?0nk=ULjfS*ldz6TbXq(ZJe!v?7qLZ3`;3(Ks{dLrqEz6^)l9YaRDd1SIFw8hV$`IZz5gdzVe~(_C9 -9l8Y#3=E(Xbbd0BgDybq(5**#Ck8+d_F4D_F(GaReqxoRKazB|aF0eJkYfKBu*mYo-#`Gi`m}oEgj7= -v+_{ylhW$)5pO{86n3aBrHmCv~;z~FX7!F4&X0Lzxe6RUP*=L=x2y>2#QDi6P{qq~8NDQm}*m!lo3L- -8J7*)Sh*J*v~eR0!qfi-l$|@Ung`y%z-hU<({%r?VPVWdp)$XCDG5ZVbsrkf7QtLwbh5@sS0;su^K<| -FcvN-Lur#=en -(fA$Br<8L#i*$Z&mzQ#wCFU;mf7O@Ux_sn(W;_?q^h~D -XNqR;hdD*jfN*UE{#pjot3Aa61G3K&s7ueQ@ -I$DIsPR9j1z4@+00E!K9}!#?GB)F(kG -EwhJBDvtqzFL-Z)}kTi*#K_sxXZ+7_sC8!Dpkh?+naGz6PyU}0;6|igYN_|TuiXb;5Av}=7@W2#R`l# -P$n{jH!dHo5G$RwfQvl08U|=7#xbD0Bl40J=zqVSt$CO6U>M -%#ke-P&M`WN(y>5OQulvRoZT`;;B&j)=pdIb?s>WX3@0xcmWqdquJQ9U@9vK^Fj^L`% -BrE85XblwEUO{es8%(2+fKytleYLEIiK8XZ^AhSoDhETYl9C~hZ>Mfe& -n^v9H|tHtV8tF@YBZSCC_vtVsTB3Td2zh9yH=Vr!E8~;|^I4bgCj_GA!y&rrqYw3EW^Zeo?jj&@3oMu -d2{%0lCm9yABF%RxS&AmWfoy2TQRZWz1`74Voe~JTir)r@eue{K^FXn>*=lC9<{F3!%&WZVCJRT_D!* -YTNdl%gW;d_MZks^oaY9*S5!5|y$YHQFJXR=&TgoO%`Z7urg4cRKCnBJnF!GUc=XVK_Uv!9>kv*_1+0;h$+ys(WtRImOyPY0+Q -wZ<$^IOOJ!+$HVJb{>(CpogK}bR7S6p@$723;@7tSEn^t^&rbAtp4%*6?MTW(%yXV@R9Sxg8;SGA5tK -GuU>nj-Q3vNXfLXqkLU^#fjDoz{pRbh9yOgufP2N&!;)UOJ)lqq4;5>%ovM48m0M~wv22>>5zljGdhR}E*4Rc}Ii=MAmwa`-fDX7BAu6()2GbZ)|IplsDdFB -M|{M=Nnh9E7H6bOS8 ->nXtazT9VEC*r%l)|=4oyVU|q*zU!c=I-&9FAAmo@rkv5gb)(6WX8g?hM_^VYgF35{MnmLDnA79;wac --7QjXkJY>QES;WZGuJd=`c_}4i4?(fn&&;5P}8RNO<0Y+!5lVN=VU=^4~`ZZsfpX0*iPr!pd -zCk#4Ja7)}_G#V*GU^iwZG^BWGxY<Y{*mq5|@)4dCDb-1Y=HR%{k -u?8G&tYJR}c?hLVNyv-6qGsui6QA2Jb2$6;D%G*Q7_aZXd{**ZEL6{W|SMX9oz;9(NzsUb2M3@lxX*> -^ZboZsLiI~^-Ud~m2#-~s^{i}K{wj4@TQpDM&MIR1^NxF`7{&&&A??|Vpr^Smg~rQK|aBdSAZtYC;0k& -L`Q7YxXhyBvY2JVs5ecE^AM)`^Oe{AZy!<|tpe6|-a|@EvcUi;NMX(~Bhtb648}aJ55{L#qk1C%wEfT -n`t`T)_Q!mLDOs@K8%C}`Yle$+U{4^nk~hF?jCMSuOEsv40Q&H2Uq-YHcu`1)H&0)|3#)y*5_(fs2CC -VH!7Ou_TUxb%Q{Zw&2b%dr@J3QP0#pITZ~}KpgG4n}%ZUP@$)veO-p7-JQ-Q4%s_9ybK(>pzIK#Gox)ft`*t48`eNdEU#h^>%+nDD#ZCbV)N04?mCGGpepQ!#_6GSavEG|B8Mdm~hA3%<1>-Zc#S5VOmf=A -H-)|ohx{8m$_u5iMQp1Q453BGNJVhhE6k@mo-##qiuh10ufBh}uPb`b{^K7w2=0S?VYoBuZ+aALWyz;t+|FrNvP)n8noIM#F07A2-o?>LQMxP{2h)b%#z**b -x78%cS}U>(+M-M7Zw@EJO&DlB-s+6XBvuBMlme{KdswX7E;f6bo6%eLjy(6_8^(D_^27&GPO0$~Z4pv -`}FZbfqPiuEVb!BQJ9bQzQ%<+Bgl^N!isVC%OUq%2=b=a2IwiFK)zcc0l?P4cQJuz1rR}Gz}^Yg2Y(p -l(NRzBS;cwij-}&tF#ND)?&wJzidaRKb*57^d{J^&=@S~m$qD;p!tuIyTtjWRHM@11wWN>3+SaDw<=W -2LBsJ`0sShFNcpZVj6skrn|cDrb<9aW3)?i=V -%FhidXY~1D`>@3N!T8t<}}s!>8ZmeS?QrwWP_9pC#X7UcTOo?u<}$h8XmxFj^^#ChC0hmU_RjVKh57G -Q=^7hee_op_Po3^!1>;e#uuYRxvfB-fa|dOg@Z3Dysu$aOmno5leX&H+a+W57jS6Xie~9sysZL8Ng^h -LWg%0-M6L@@P(3&pkKdx*TQBQpxQNm2OF>p1`ES_RpHx{19dFM`SBCncsjLbI;1S_wj>F<)b9&LIopg -H}s$NAW@E^}=I^x1{cTTD@7={ej0fnqg<2$O7whkNiM+H*%MN+^&(u&Y{LWRGbEvm5Zj8P=R -|wx0BPX*lpPOd_T_j^U}3xlc`u(~FkZCqA=;~uAu!>yDMef#m4+)3Rg*TDXG1mvHo!I^V>5+vV_9 -b01p#Y7@YrP(>)JeiK6KSMS4Z?Y^p_#oG~GOW2~iwvCWq)elkFQzh4W(tSEEH&N`jGXDr@~8}S4yZUi -C@7_CD4h=3zlRcy42tvo)Nkgu3Dip^!yysqmHVb5CPMHiV+G-G+=K8D$*C0ze86}t%7OV&`7amdzP#Z -rVIYcutrWCjmLAFanVf`Xf{6K1Hin>MD=a@da0bS$L=3pGi?<4krl*c7*AHJJ>9_tlSpl*$b49=P)m^ -`D;>fI>zEz9?r>JLFzmm)I$M$Y@*XPdh=L?}7dQtW@#v8z`$h9h3gNZXgIf3EEoeNnv$OsrcllU|2xf -iGNK{U*U<0;1^1QyGIXfn@tt2;%d_Ket>@%YdiA--n7=XP9vDH;?B -&P&6r@o-GlDi(z{GUKVs0O{&k2{hr505^yr_0)*TCWe%el+<0XGETUyh*2*3L7SPVu_nU9E;5)=A@#U -d+UUz|!6Sxwj)EX`wg-!SgnpSOCmRciWCVd0>zL~KY@qWvGZh|RYRj9%UhFf;&<-3U!lRL$NCZF2&*t -NK5e58zzf)p0Ok!pFhCazB1NN(D@83%VzWzWu2T76w2be3;PED_aW<>vq#UMJZ5H5?`>5shcG|u*&$nDn?UKJVonV6_X)&(?Q&F-~}fFNWh3Gkgk61@45YKpo_`CzPj -dm$-=ItqDWeZ-L&ALzzrex#tK6mC(&@+PX{}E*u$@{OTjob@r4;4Nqh>CDqllItByhVc)>7O!2pZuEs -LF*R^PA`6lqMRwkp;V;TSYgzk#wVYtpcS*wSe0KlotX5w5SPulUgVYFx|ZTDha-eO^{UPdi|+Vbc-37 -e|dMRldSqujur|8w_?#dqssReQVjbc8nDcd2Drw5hV12hjMy|gdJt> -`Ptc1Xbnh3BmWMsQU0KQ&irG1(G4h*YkD&N=v6iQMzqxXHH>5uUE)8C+da1!36^gxp6<;wyq$)Gy3<1 -UvvS=)+RT27RI>F4hPZ<}}CT*JxohpH2Ag0AB^0(LS}ujZ!-fHfcc}Yg8J1`L4MtrHbd6t5eh97dub! -mzt`?vuU!*z2l=@e?=SgBG5`8zl*IU-ucT-ymB-A*yrBzGjF_t9~8b@K24~5TRs7GAGS;%bW$69q{zc -Qp?IS*WP1Z*ffVh|y<)kh%aooDWvyn@$)#3K&@5X`Ls8y4anAfMTPJQJc>=F+-^oA_!i%WPO1EV<7fL -uVeoM&*Hp=QdQZ$Tw)ivxfEQNPAN@`zmse|Q`eB`$(K(IoQ0X4LFY!!+-I|1Vm)3pwQL|>P#9Ol2~v- -6jyr@*f<2666dEFI{Zp+qr=Tl+YXFazCL9Sa4ogh@zuirnj+^2>sH>aY{7IcFFT64irk&D8aWND$SOX -?(F0wUKkiqUYwV+j%0Ad1p^Di^8U?L>b#&pi4{KlWx`kkObRUbXu!8mr04V8Z~{U(uGYxK_h9bD8bTl -#&flnEH!hYi(sWqEjjL%<-TG(pOPM;mV%_4M7^YMWul8pY4D=oMf5Rs(*;U`A_xL!NWAF#o4Bsx?DpJ -z!%dQVIzx+heg2sWe-?Gv?9ZoKXH3yN;LR_n17(R?Y6a8FC&?2}y~SecufC-IR0Xht#A_J2BsS=38H=1?9=ECtt?6-O+*M;Dd9Xybh@JKIudz{QkAJuJ -VR~6+R|_(ctnWG8M -4WZXmep2iMRLW-ll~}0Lcd#_x{$%n5bm|T1ldLyp8yFnaes(fHJ2N*xdU#tbbn_h0M_k8&hHfyh`Gl` -C`UWhWOZa59|Dm?KiwA&=7{>DtJbq1-;I7$Q`}qeIzqHHiv5QZy6DUi~bz$n0$rn9Rday3*x2_wt*7X -7udt+p_Gdy~*<4zdE?d{sN6W*BFx$<7*eJ>(wpG%Pv+=Og(nxp}(j(<>Q=;qab`vWI5r#J^NNmaK$N5 -d(Q8@oL+Lt#3ERh4x<_yU_lbE+8Ukbb19Nw$B{$7ya)i5F!(Kp2NIt1Y~^$%D83Uy7(0^zlFV(+8#me -||ZwRq@{4T{C4WI!;pu&KQ-jfeUXWQQT2Q=s+^)tAF@kD69U3;&2xGa4pWZ+uPdaEsQ|~F7tUcJI_Q*6V)CCNCk2CfoCRS;i}3 -T$Ke}#zCP3CZPS+p90vN?blSquRIpdo#Aw|$BXbu?eixX--D%@!M8V-Ttc0v&21(H%Ho7Q6BVWs(8Uk -6#&Wm@C8U=Xf-G-ELwZnQBhA^|2Zg-0kn((&ag(;-vy@(bre3~Kw0>JY?0DQC~C{f{8J0_*6pop-i)m -LQkW~)xLMTUa^>zzAmch;h_!T2N{MCaK6HueG@;T&|8-6k*wJlv@zwM1o`%G`T?J-7ctpoFV-YT@xU# -rV|mk8Ub{tOQJbzfK|{NLS%|cLHRR*3nVNN~oxCr37?z5Bn|~xiPI1EKg9iPdKZU`wE3A9fPh -1CV%p53jq9dwTc|9^pPewMDOSa|Gtew!u`-GabiABE$f&XS&og@+TPyQ^j>@}H=`|}=BaAZ2odY`I=>I`x9I<0R;=}FY^ -Ux-)PrM!s{R%p7hfQ_G1)MXQ*e2Hif)bNgTTj+}1pzwKtYfO)ehlg>vO}Z4S*+e1=+Y*#ZCTik_o0sX -??r(I;X=J0#!r?2YF{m$G+KUYI~csX7s>z9 -}D?MA%nan@Y`Tbt_0#{=QMWHexA(S4PwQtiaH)2`OUtKR8{c-H2;F8S6wbSdQdEkfPsCaof?`5n1!~T -@4?MPX$MtT#{b>aQvEvFq@Y68HSb&UxCpDSm1sMTLV@%^RH2={9e`4iDrH%cm0`R2^9YHBAcmD2XP>E -xoRDGtDY>g8OM*Au_hd$EMBApfgFw$v9cgHD-mxIFPjL4h100Su{?e-3Gf4)3jbjSE;)X4PH=K*ri3x -2C4f#2sHJ@1J41FU{-Q`_-9f1X3CD6nO)4r*Q{ofFn5rYR8i}g<6>|lAZg|aYa*b>=(kXncIKT@Ao^R -fWvk;*Ub)>_EiIg$-YT;7ZkWpfvEU`c2=*YvGNRv`>2 -$NAmrk_jT=PR7hK9VTL4a1R|T{4z`Z=REJdH7pZ#K^YyR -g==-BcAA3M>M(tq;SrP5E%bS*4#q&oV%Aiaj__5QDNgAmhG+HB=>Sb(pg(7@>=0i!b^|a+7;^&22K+k -x8yXMO?0SYRT(c+i3A95_b8vc3>E@4W20~mSjo_bD2Zw-0*`YwH40SJw)A!)0p7nHm0aZr6gFBUUjt2!z=zskO(r>YReIc -XI2TvA#@CzCtsny_1R2M>j*>1$>j1@Fy@Z#1fP0>cSL)*=sVn#8qj__~YXbar=uM+sK*E;R?ffc^JLR -rEk*0*R6(ctbeb3Akv9FL((3}Rb$Vo#+H}d})pMi7)gA+!_GT3A?d@znh#qh6?Crt#-S%eXg;S?f -e~c&f9kR{dWXrt0J@aVu0Y9Qb+w=(Dic-6}qI=NC5mF;4B;6vzQ08do8mU8anw)G!X^X7tVv=`H%nvD -Z6y#&!Rx>4A6t1MejW;&1Wc`Wo9@Gx3`wBh9SwbiDDs&0W70{DtEkj46!HoEFcrqS{@Wk#}nYe8*yqK -+sWm?4q*1Q%h1_2;~#T2dQhyh3`L3ji5JelchPnS|4zu>(?(ZVlr?YW9`o=(r^WSx$IL2!+cZ6dpPX( -l+0a@A}t5i6WOZ!Sl(^!;BMI@&vfR5i%nWrLl~hNcVIF)*4X74eHPCmmE=AcuZzDD^4Eb;_e{I%uitj -ixwj_2v{@f!}m;d(c9r|4YIiMUFwEDZAd@IxZVE#(F-*Dy#&w(C`CF;0G<`EUaJF+htq1a)c)u-I!-$ -43M?U)JHa;Ubi?VNt`F11C~oAH-beN$?_>M=fF*J9L-*ao4nqVY%LIr*mi*@Z>_moOQPD9a+iuaj##B -6s>>lCP2meglH!gXM>3vhz!6R$6Jocu -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 --Tt>Z63=Zp^r-=xFx>Rp8c=12_=xUFnwF0%W -$e=0tQhs0iCp#%_#Ju#b8w$b}3Ym#p{cmsA3|q1r}k`(SVMzys3N>BrReXJe-&wa}6H`*D$9L&ChA77r$zSFxT0s8F -Qq$s&`d*i85+SUF{+uN!e5O?)I`wsp~6A_sU>aOn=>STa6U`DLZPsI;11XRZo$%wqO^1Tlh@K$6P&b7 -^!cxOD>D~d5%!*_MGV%)scF2MX|L~W?5_8K(aPoMe%w}RTXn0C4xZ}wIrDq+$34F);r^ -j`W|EKP=M!iuH?ZL5R)3(mQ>VOXnhnQx=%N#&AzVit@)~ZlC8?vuAN1f(qkiD!=eiG+7lz<6w*+PA`F -3tA4(VXH)sFSFQN=**UO+4DrISq4bj(a(UUu&u4+{VsMrkjNUN%4@yI+n3P%?X1}_s%-%b$A5gqQ6V{U9NQWUv)*|+%8Ma6u#WK>o=g)X*ea)Jl6#3)|B7BK#hK -F+6}}2btZ7Exv7?#x{vD1{tVoNzXOakOwd)8DzG^%H2v2u({L*O?)cGHM>#$0OiHHNk5m7uAH#eHVNX -_)`xIO{JJzGS>S9Rj?gcsguK0M5(Lui_2=mE@ETEHrUEVJWA!ro|xnPCrfFmG~U4@H(28fWUpcY<}|L -@<-x=B2QEwTPSGB8ublv=N7nG5VIjMNpy8`v_NXB_&*(}+(iKWcEfqyv7^`R}g5e}0bF~?-rgRt -Qk97vy|KM-T}&7=FUtBevE2WU}jBg(>Mj90`~$Iq@zA)4eKG6%tUKUrTJJDM5*NEt+wYQP=>%n;5ZQ!DM+b1-721vOU?&`4Zq;BI`Xj`J(7H_;Ij*SeUT4 -Yx|nM&0#$(R~ylHf?E~wH1ZeqvrC$#{r4fcCFeT@6q~$dtbTD!lQ=wthw22w%g7l00bOsj?r?56AlAg -Az`{rbUKfcsJ;%BJHQz0_u$J{$H&4b&TqeCYdko%HEabBIVev|C#HEB;rS9=@fMoYYHZGsm6v4*oA#h8mCX*4=p53OS_a&cwV1Hv -}_L|I#JE~hl$m(e!t3@m8hElS1g3e&}RcA^I*eT?0(C@~K4?UCA@$!lb@O6@^v2FlVE*LWkO&1c8%f? -CUAw!*2EH{30;=BjMCep>_DB$EiIQ^=P6oFm56K$EW_Y2fW_J3G!IE9D%IlS%h*h*^ -+?mt_+*NA!aY;b$xqBifgcS5fdO#F4Hao_LX(fd6@9qXvsKZyHA+3;UR0%0UV_v5s)*Qfi|F^@;|H)U -`?zjqqf4r?sgeAY@m~>isZYUZkfoJqL>0aG_*fXXVPoM#VH9sRIA#-COychc4YB@+c-4!AHoF_GmNhg -3ws*t_uXS#=yx=$}bSW2_(} -Cco9p)`s8nKbt83V_A{Uy(@#EL=6Eq -C(i1IVNO_`ke_vT$hIb4onY)8zfzA?i+E8~IP6Z5}s+9%(>3A~H`Cm@w7(Ec$9 -b{;Uz!vzfaka1tRbeISwfOt3&d;@@(b4qi==chL)oKm==je#uyg$BrFT-;*8jXAP#(KS0FNG6v9R2&_ -Ii9=7fDk3E;%o^fwK}y|7ns!R%P^@m)@$|JVoX$E0fWguKNmr+s@C(Z_Rv9}l^d#usL}VRj^6O&epc# -i_aLs%$%Hsy%`F;J^}Uo4HKo{Q^&Z74;y7|UwYa7XW8r&)vfh$I5GBA&A{*LkC)DoB&hFeW$@Ok{iGY -zG!4mmcW5AK#1AdYAAXGYuMzu0j1u%VI*Q{S{5UE-^w1 -q}8|O((=X(Gbwa2^AStG{lo^c9CTxfi%H$(gB-Dq>kP6Ps-qI|AVE}wUgRF-6TkrAenffGEc=T(|0yR -M7;9xCy5SSz!^}HI4}`rY`KY8s=5p(SRZLPVvDsz+fO=dLg$pBG|(P3F}|m=gdD;+=B&1}{b7ccj%Z( -dIkhIEG9QkOAfvO8QDKfedut#E -L5Sx_B*&K_cufQU8FBs@HXACy1T7brtpA%q|DnK2NWP1 -llzU-<`AOUxd8<x2Z9P~?B1r!C1ir}`iD5N-SFUo+y2vHK+8gUWygh^$09Qd0No?dCICLm*h(U -BC;@Y7KT2IvO#^jC!Ti#tVHEa|OHnNNE#^l>fh7Rl~99DeuSVuV6x@xCWhhMnH-pdH-cG&#VNDwSeln -JC>Qc};3a?zR!57E%suC%qQKq)Ad=&cA%uI(D6m_fX=mQy63x{4SIcPyM>sU=Z@Q4G7uDtN4BMnIerl -|bM_743LuC!kA0JgjW9RC%KN13XG|d8>Q)mw>ds@cgeo6c-Qx}EVYZvh3>9f6`4i3A2{mb*i -r``R(?7e=I=qQ3!?9P4`2dQmwjKxL(P_@2Bkb&dnvXH<2@%{Ncy$JWGb*YOqc)-|Lq8}qPncaQfJm(HqFs>^Jm(a%Waq>~rI)v*Np?BrfUQp3r0*-9zSU-Pl!Es7?r3gjRg96qsEy-u4?Zv-3V%w -gy3!${68yn)u5AbAfQDJb^Pe?$5P8`j@Xu0 -OraK)vMwF9l0lHTcbhy04iY{ocP^sN^1{X{)&A`0_)1)cWQJQ7U6XPQ1pJP(+Idbp@v01!5Wy;QLl$? -2N`NZ^{wHzw!Iz22KtpG;FSpKX{*72!%jM6xhRCo4&tI3b%z|AGE}*ekeqe}MTX=4d|>o8R`^12q8M2 -n9!@i)ov7l(YsA&vDA#CB`1o6$Fbrl^UD}>uY%}q*Q;+ey`YZlv)Q_E#TW-lteXmXF!<@{-8yj%UrH4 -P5hkKj+jK0vn58#0Wju7q$BuZF5ejGwGrHp0xr?(Qqz=0IT)Bu9rBNMY&SEou?0QnFjiwwwoBg8%2_h -mEnCrf&QoGH|o_xR^>m2Md9k&#*Se=YR^*_p!k*v;UAY_NBp_1?b9vMF!PrKoUtoJZ{vWms)&Dap*L* -XGmxF|J^WNt_5yhB^m+`NfXpC7ovbxTG;qC3hDW#E6m!gN+%!>_hVgi`BA32JH`AY+?k(7`R$K3v>D6&k&aVbVcYM%^U|9hn|?O -tCEXlFbJZPb#ULn($&?fYUK}_q*U1TDbDD6X-`dd(!yf6>r8@uO^A}H^zCib*Smh~!ouMKJi#u_|jc= -WSsEdSGPoKVyyu>FZFm{OwFbcp=8l^=5^q7n4KfQ49$n`l(WMCL7gAAR2LT|?}4t!0(+P|c&PWc?;ms -fOLkA(h#Nuhbed(YQz2M!4o^#Ggmoc?N;~vp4^eYRE-<;$qqo}ME( -^}_f<9%nVOc<*%p5uqrS|Z>VP4#xf_TSo3Qv{WX@pla4N5s`y**b>Bu1b39C|f)Z{C -JBm7n6_}-GbHzkP9^Y-?~N?%kKBO#6V;< --ni_RIX{D!l4Y#x%clytyU|#cmKL}=MIv=wyoRT{-W9J92G}zj_-ZnZ0^eOB$6*}0|8JgP#c@U1gbAj -ah-}*TF{Sj?kn3AR-&UnRKrPgGI)avzKrhu`(%oAG`i~id^9>n`dBFU@2^0T`-E(ap}1ieRc$s9^WJ3 -gDFbvBd1%WKTVG!|W-1<@!tvmPGgGVqg4e(`V*LxuFAr_6BX??V&`^&O&H!llCBc}Gj?IIjJH6I&h^+ -N-tIfc*N@~+pe_CV{H02Sr_TrmYW}&Jl_0`nr_LxrqYtaz}yjw{TuRlhQUrTCAudntYPGXF@^DG@==V -Ff|rq7{&HRikN8=bp`yi9jI#e+aKV0wm$swB-4ZF#a&tEsG2qE)A*S~+6zt7)b@45fk;2B?jbZHN&P4 -e2SK1f{EYb4z%+co;b{j5%Z*cB$R(uN>`|;B*b>E-F*6*;aH7*eu$da`Z^fWg_*UO=Y}8(XN^p?Mg+_ -AX8O%1slo*C&`5ILeFFEdYP*@i^fy`4p;QC^A+M#hDK9zvo4n~8efGu490X!x?} -S6HVPPM#C+d1@zO@w4E^yjRRi`iBeZ_p+ut6hy{>x5SUi9A?%{SmdH1mN_$z$;m3?e5dj96+H(zbEp; -R9x0U%I}@i$u2WV`I}%CBbmFmvAG1B>Lrho63W{$zVT&-?Nr&9SDPzBtFWLlaL`av}nlK_Pz1&d`VB= -R6KJo}Bac85&(xynB*j7?{de*dg~d-PGCOh4PgX;oN!S1re{z0$O2=Rqa5zM&Yl}_J&f_p#Fer=tSgf -)JHMk;4nA_wn7=uFDLFDfvYqJto;Y;{(}dt_QUq0Z=GjfwKg`h%?B>ztl4(;-)=sLQjbq>r^{q$_ebr -cNSCsxpJ~ZV&=yQm3IEZaNl8I#m1A#Y>98l#|DA!zPqa}+wi>=e#X -npMht6JE?f4(jI`LQjztG?6r@o<*gjh0#mS9)AurB1zJ?Ir1pFRsXpC%Lxh)#9y`dUW(AtZih~z7A7C -;fmDJFjp4$xm -0gVK@=WsDgvn@a4Qq+TYc*8=RY&9tBO@?knyik}--#Hs-5o%QDN_ecG8$DhvW^Q{n4H_TCo)mhl2lEn -rqQP;~EZx-Bc1QhztbR_l7ebjf}u%4iWZoOtYsh>Eh+Bu)C>1ID?hagO2I|>XA&uYCcjK~CMrJxNTr3 -Jh{!wVuMTR5@~QpQl}${%Z?lQ&=L&APn6K^p~CKh$?p8xU(%Fq>tnIPV=zQC&Z5nnvnL#Y8Ak%Au1h; -CaL<=EH{0Ta^w1GyJG^)W27EG?Qk#UNFa>Iee^gF%qK0$i^rQDE}8c%LWFWm!vwY2T+YW+0$eF -9yPviRCGi|%`dA4K35OjaSSxPkOpg!(XJU?jX(f3?JPR>$GsvNxJ*_kDTn|&U<(zgHAvKY^+x>0Ymf%^r^b|L`Jw_w2#`%3)@Uo*@la-P$&tq#+#2i8_h?@SDWz9!(((-KE7&yPy -c>sC!5!e_^7qKP~*dcYuQoMVQE#D?y7u->BK?M#{U5m0|~Yz{=06dS2kRsiEzMPP0O0P -_1?`raSKF6aI^8|$!{*h1O|6NKVC-h+@a(8>9` -(~pegLO2N2b^Jn+VzL#Nru>lb7&m4u{Qt-^h>tG^<9+$H+yea~K`tgY)rx%1^ead_J1bGSvlo!l|d|N -la%<>`3E#d^P)Z_a9eyV!@YN-&3W^J|eQAe)7_keLXxs-x?0LK(H&~e_X9MH#W9lu3b0K@Ct@=K)N8p -3dV7m4+gpUMVU$f;I9<1Q%RrSQ9i-R%!wYo|Dk?ZS9Ue^sD7=;i#pi~f##d*xG8@FiQ$CcJZf(`f(&Y -Db(irwcJsaZGy{M1#~v2YWUEV;y%Rc>S<^zPm${0BouPQKfcZNY$Z9>5GT6vP?Pz7mIuDcQvQ-`>u{) -iPhtWlLLg_I1IlJsFPob!r3THh7|SSOwfsQN(U)tvbJEUjtbnHH42=OX -G7~Imz#eru(?|Ib2W!-!%BNW)kk`Qk$IxF5nI)?3xR}eM?R~8SL7P6SnbQ_v+OduENNtdR?&jR*eeQq -67SA&uZ0;%sR)gSIpXTE6(#v7USzTta^6DIylcsF69mXE>}Cjv#EFE!o%}TFcF|0%+r{`CwQhHq=A&- -6wxv|I*&yr92siu*Q(GmoH}jcGs1ZYEX9@?4V+rkq!XcK-r^+P~buiuk(v^DS!F)KPxY=AO;P043wHC -#~qh-j>-#)jJ!`|>9D}zQIqe;TIg&NKz#-~M10>ZFd3Pp@9MXvI)0o5Oxx~4m~*&hR$x>L~~Q%H7)`H -o~SyG3@Q3XsZfYvFSb_V$v;kCXj -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 -f2xot;p`l6+*BZ_1FXE_<$yMNb36frv -+(|uY@>hZDBbWu`aNNirjgGm!SlK;+s~?R8$v!NYz32*#kR4e`Y8qu`Zx2Vlq@f;)-i>+{2sjAi)LX} -~veMc8DdwE&oW|~|!Iy#AU&UsFx0=cxIi(!kM}1Won7z`!uc~Nv{~{$_#gS6RkHwQB5O>T$8g;{kfVJ -Q+j7Nb6-Y?I+T9vR#8v7;+BpBgt{C-%C!R>QZJPW2;(UI6T26F|P&w7z;(ayWXOBVT$ -B%+GqF{CIv0~r9c8Lb>E)4Nn7?@{-4Vvnnkv^3z_hIDetGZuM -9@17fBjo{Y`)*{h4P=`;`x0X)RRDKzi&{nlylx_odkj9BCz`meRL>g>Hx;GmqDe1{dcR#i=WdK2sJo%8wGQH4xW5=IJ#u^FYyxG@DOBxfyG -bi-W`biXBK!F3mVKZRA_AI(X^Ts$8)j}ELG -nX}tkC7>V&;{JaqqSYFlso0Hfnx+wo)O1h-YE!9gGeT?&cutLFlHupO2m5&9vZQ=ZLzk&ZNC|x;m})P -9iN6Z8;J4Vzy6>y?hNiroSE2+z!uk)bw(duiNgXnz>rOJ7-+-K)>0HEB)EZj7wSj&$yrG=hLc_eBA3V -8>qNPawzU8tZ!hX-o)`@txxS*M}0x1U2of4yPw_??m>D>n7w-2&ewDGRw+xD-d07tOK*#{P#cMzdYf` -EPa^wfnyctlbysEXuf2d5Cp>CbKwU-W86UX+Vdx+M-l4-gNZ^ry{}KXt(2JdW4B)NmzXKnjjx~)#@b7 -q*r16v5ihnNlTooVE@+%VBS%B9Yx-7^J5@>(U_{s%upX|pcH}b;+I|6CVxlio8l#V%73b-guzA&t)wT~vIj7|CwF%u)eV$|1!c4w``g$_u$0<;fw~;Jwyo --)D5A8+qFoQNX!#>nyi;C2|*jyZ_qd@$BcpD(r)NScTi`#ddM`TtBvO9y>kRnxJ?2vKqYZ%@$<#@MlF -5N8fPsQxmLvv@&;pmlnjSkJek%N!8JzkAUlivEXa)Kn^8}`;Fu#4PT%EqpS{l0Iux#lg*|nyq;QzpmH -7Rd*TdNbXd@YEN{N+ogz|?>>SCou=H)ICC4CMpx}c;(9u?4HtZ~#20k%9=^UNUqbDD+ -Zut0^YXncl(ca%y={L`z3z|x)t-2ICkFAjnF>3 -XAgz_-oban8h7zgimV?-8*o*ZXrl%bNzGJL`^SxAuR66GnE9wSwak}07DATmR2AkfjF -)bxKvV)D$~Tp&O$avh*wz9l!pE)#nCZ3_6p5}TR5Ci+V5V`(F7(0mAMnD2gSW0R_zt~m`;-k-_g_Nq8 -T~JZO%=lmvZgTzG8@TQqXGT^(K?pNgXe~!yQH^d^t7B -AU>G$~&R!@h6PE9W2)3o(~F=K(%|CMJlrkg5d7_W|A`&99Swz^{q5Wqs6rKy|*P>@DNP!YB0{c!-Hci -alIH8Qc3vFgT{n`O#Q>I`Z)APuo}Xh6$Gbi>PX6N9+! -MxbJVuNt)7okHSB%RYHtmq={0N1oLo65Z&JXLX0fHhN><&d?Cg>W~8F8J$vqAWmW9w7_ApIM)+0D|`# -^3uP=UY6BTIUk2)Q)2)qHAWb@wr5%)1+jh|+PEBLmN7DlKbaWqBCkE+m`qWd;qyJU1e%n(;(-JMMmib -TE@=};J#QQ?g_ixNaTi%L685mD*jSd6+PZ>HYNS5ZFjLH^7*)fI%lri=o*Iv+%HT?O*aAf0xTGbSqXo -zwQxTgAG7bt`KT3y+VeEvj12TeGDK~M<+&>8@rO)i6&Qu?J$gotgOqM{FosY_Hsy2lt;D9uh`Ce5aQ< -!*>Bay?Ia(&{dBC0yg1TlUildt=-vmbi0zYkkh|_)|&H$V`R}j2bLKUAURI=E{?=Mn>4PqP^-F*6eA! -YEi~3_9ag5-BfxW82>eMBi{|d!D35L0Rf)XdWXuX;Ek5BQ=Wvb$F20}pZ`1>GyH)E3{aq894s!+l7b<8i^VOII9ccOLYj8Vi=w$J7GF}$LXt-AK_Nt99hmR3^WNK -|iK@Ht4bya6pb-71nX)nM~+2?8FUYc0gy5$)CRAiQgWY|J-K#TI6%JGe?O1au_sWm~xocNoY-U&Go;* -;uuS~w&L+K|G?s$*B`GMamEWd@C1wY{vK&Kk@~fIo51F~Zf!JskboGe{o+O#7d5+N`m%L``X9mMvSN_ -sBSSt&y>Gh`cPZMhz5L2jT4oj&=Z}0LySV*|KfJNFrdclM=_umPQP$5^PX2PtFj%LAoHT7&W%~xMzVl@Rvym)0v6{)8dr_S;ISsu$O+xKCKiFlu>A#Trm{#i428&JbK -?!AChx$$JA2v@Y#{x+Iu}`mw8QDm`YYl%bnN~Su#qJZDsW57xB4A#pVdugJNS04HB3`vR;Eh5JS0LGQ -uuVC>6P3{W8B{peh3nW6nqX@q3YNLoPAO-3;^`ir8=ODE8a2{X=CSt`cBX61I~#p#U>@0E*HVnIGp_# -R36%tEx*oTiw~gPbF~6cQd!PwS(~x!DJb4k0H?52x{FDVi`fCQ!GhV0A8_~j1`64V{j&12au1B5whhI -*B+6Ki5Fycohi%UXa&OuiH%Td4Q2?T&b}hwjj>8>&676UH4Cc$=sZUlN`&kTWp1H44Te@4uQz^VL3=2 -_+A!=AHU8*@j=}m^QK&Ki07icoMUQTTdvJl;fBJ~whl)bM>&gc?jpm^#;E5@)hBg^p0ib11GzC!O=O) -doF(=9L)RdD*ib|AQ{U?V$Zh@*38RT@6iwq+%BCGiA23G}d9~$A;BEQyhPOpMDT8@Bwwj4meb<2t5o- -IdC_h>m(BAeajt{CKk2n=fA%Sf2`IS({*)~HGrc{dwbb10CV^p1RzM(s^u0!*JU_YtW6T -c+H-HyQ0_5)645L`LL&YxvJ-SRH8cc;0|u!@jV7B}pXJN(m^m47R4a$>B;^Eh^fCmrAY}C?_1~h+wSy -f=AG+shg3+MRT4AS`?Yg3@}rbi_8WphVh{+U}Mzj`20lv#9LLdBj?W(HS?A}{mz-#oJPTB_fDg$Fc<6 -ktc!U7PX@9Cl?*kPD29Y2HJsX4Jw_7DGXYxW-l6g&$MSSs4ndqZ=_F7^>mRi{jjv1Ly&IJt%VX*$!ov -R(j8h2ftl%!<{zq;>Sbo~TrRoO4-U~ -R0c8v%Y59Tr*&oNl(L=N7kzHA1Q?mJENAs&6u+mb0`%!@$9GWM<(LbT|1!ecTvnhKz -MTr`pURk#I?cK2f*gO;=9&^sc{hR;faVq -f9yHpTbiu%w9c3IhlJMInlyfv@)@aQB{eP8PEft38$>=v~lh3_aZcC#G>Bv=mtgF8xO%1Oe#>Q!I2a6 -H%<)EZEaknv6n)#`SFqVgS8lEiFk>gN-;~Z6eErQg;JLZrTB^~J?kg=7Yh(}Ecm1?Q$n{l2S7fjW>CJ#rhr`HTaZw8o$(tq{(E*8xEkZfX*+RYGjo9M@mFF_(kaFikDx3uY4Np6Hob(C~62{X2%Z{a3S8aNhH -NG)DzE8fBTRGC3R+l-&-^Y!dPBGo8&A@Cut}ns0A1V^YuuB9>yyT-*QSDp{{ys?%iWc40=U%jeaq@#p -pjx5iDpJ(l^NrVo=Ca{01kUS8GX;sV%;MXIe#N0qIh=rQt_~$)JEyZ2`82t$R_$?O*w!hH`k+CUH7rH -aqNVP@Togr7eOQosQpo3?hsyK1TnDBx8OJgDgr-jtt+pu?Lk3ZBk_4DlROK2LBIGO9KQH0000805+Cp -NdQ)?I<5c!04@Ol03-ka0B~t=FJE?LZe(wAFJob2Xk}w>Zgg^QY%gD5X>MtBUtcb8d2NqD4uUWcMfW| -$q#JgPu3VXDhzk=v1DVtT8lclmi^SVo1QHi)|9gM(M{8Z8ZK-6RgnMv9U`cTIiKIqLMyV%u1TFz#{6O -MOsf7oybJwoj$)%RZ1U>r(JPs5?z7UPlTC1wUF=MGJI74w0XW@Yo*%uknfUaK%WpZ)sg>7e8ni;=IVv -ZK!V2(#~DwO&SFq2>iB-^V0XI2AW7}CCRUC=77fAsrqj@1`XO9KQH0000805+CpN!nCKr2_&004N0j0 -3ZMW0B~t=FJE?LZe(wAFJob2Xk}w>Zgg^QY%gD9ZDcNRd4*F=Z=5g?z4I$v<$#e^&V3~gX;L+ZbX7H* -vt_|7SOwd)O``VKcl^b&P10}y&%Bv=^PZ8j(bkhm4}(-gRh_J!iIIl!XHdPiL?(cRUkfzX`%0M8vbC$%cWi_JfHPV-$Yh+s22nyx$FU5 -TS-TtqSFP3`Jx#s1@dX-|#gxY&@u)#u`hACTpwOY=gJrfml1}1f?S9ZNaYEih`WTm||26M@6aWAK2mm&gW=T-ysV -r0l0000I001KZ003}la4%nWWo~3|axY_HV`yb#Z*FvQZ)`7NWMOc0WpXZXd6idDZ{s!$e$THEt{CDJf -zjgjR3HyquXh`;4F@cTdpHb+Vl#;l#quP%x$M`El5AO)<#aPp)Uim46Mbz!EtvbUZ|hPE -!PR21m*Pws*5t)2)RmCAguh!*TIIB&jRvVmr}WEq`}rsLty9ZOQEMqU2iXff)A9(<{&O#9zV;#?SgEa -8x4358o2>EEXlFN{x2t+{pshR!<9p5364(XBE|~J``urM^P!VAqsT%ZTb1jcDW -|Y4==yHY+sgttrk|Lf;}k;Rx@1`nF79F6YKZp4^hL~ii{q+Sb(Mnwb{xxDdH1RSm)uniHUHP`+!6JK^t -FaoT$ZQakXzb3wxlO`kHcHJ9z&K?gcES5PQue3}uY*WH8-=CQQKl=O2@>z#z4PyXqBxsUK`!n8L4-!ZjVn6*`Nz)-a5-kd4bh+0|23y>P1GNznRohRKw(cUFjF=VqL%TF) -c<gj -Ao?VPQfwc!+*I+5>(h(o$XR~P`t=Fx?XqP0eO6Q_yHTGgw+hL5;)NAJVsb*C@uZXG-?TfpBtQ1dctF^cMqH(x&hGuoAX -{L|u;HrX!^hkTaINa{U4WQ0*D28weJAbDSnFA#-Io=%vRGf8WX*D$RM6HuQFq=ck)K`!@t`nV52O`X! -`Fd2H(wROwb>2a%%hWJa>!P#+M`O^~d_`jq(Qu@|$1v>iuQX%}v~kxgR@Vsr>};(Kk%;bDFgyOGgA@N ->Mv2n93dZ$^%pu{ZSmcRO5c@jXk)h1K=H=f7y0OUn>Ug -6^g))#T!oxN;P&bjv0RR9N0{{Ra0001RX>c!Jc4cm4Z*nh -VVPj}zV{dMBa&K%eV_{=xWiD`eol(7RgD?=@{S+rABBeY)qzwI8B1KV$?#Q)|;Kta@0zaAc5+DQi~`n1mhkWYrIK{2uQ`!#y0M}@d@L$Tx`Zypbpq6vq^S*FJL*9GxY2>mr&QMw2)ccRr>h|E>G(#E}mWzaK-zS@x -jkF}mqdOk>W-r$T)gpDljT}W<>|5*&EbjQrP(7L)|IZ8-UCS@bFHEr+D6Y%y;Wv6yrDcvj3e6Yh9$Md -~fGhD0P)h>@6aWAK2mm&gW=VMxOYqJB005u?001HY003}la4%nWWo~3|axY_HV`yb#Z*FvQZ)`7PZ*6 -d4bS`jtl~2J+13?VE&sPMzRFJ)RD|i(2BBk`cOlMP#o!!JFQ?`Haxb9L5dTw|*9c -2UwMX5_foayL5huJ^pBXMK;$;`~*--0|XQR000O8HkM{d$6&eM2oC@N;4%OJCIA2caA|NaUv_0~WN&g -WV_{=xWn*t{baHQOFJo_RbaHQOY-MsTaCy~Q>u=mP692w`1y4q>+RLu&*nzKS!0n|@0t85#B1x|weC~ -plxVx(Lsz~|K!~O3!GbANakB!|H2iyXQ^&p4CdH!aoAP8okcY^JdsKTkOfvJb;=*FJ`kJKfZ$@wTR*}uhL9}b?|c-UjBS`_|3u9^TpZXoAB@u?(z1o3%I- -dnXbZr;iY+Y5Jvbn0D7}TY_urWO`V4DZ*ewb@B?}OfR82P3>R%A@Wd4Ct`=Ky&$h7hf~5s}RaGFd^qz -go$_@MY_JW=K{j1YxMpW<@N)SOVmW(%Qhsu6f!is9QWFX-hZZ$0gNi~)9{oU -3?8Vm$d#viFk+wuC&AJ(l0qnsNc-I*=Wrdj_WspSInn{?Z2>Z~a1Jd88BWSwOhF?HQgIg+EXkXohJ@Mo%5Rj$N`Wo3VKxyMcWtl|@x8XN}Q-~)C+Hk -p92J`{@Ivug-r2`h{mIBp6(SZm`QyA~jN;mpT~0}<3jfh666rAJ^40{+D``!qU^j*-SEm9W#(sGV&5V -y#6&`eD3CSny2{{Zghyc5iGL -Ap~!t*19{@cA-=giFN!i?!6N{5w-N4puMJ8+Zj4DbL}j%G76uA=t&4;uoS0e}rsl2%&MC;OOst$^Mld}4HtCV`=Xe&~jhmtbB32l>%*) -Gm##JN%RH$&ioG*qm)+nnruPN+ZdhhY4nhLV%s%> -;>iTD@R@IoIqA>x5Pr^wMLKRCG0&-pn$eiT2gd7$BiePKTL`Cas#MbDo34wkHqq -Z;QhcN5O>QB&eJp#m1GN&sNEmsBxvpGw?V(fQAkm2h3(LCEg&^Ok2)jQc_B`;_w9T#3QJFc`sgw?hrt -qC{Lb+i?EAEN{?3n~DV(^<94E%Z~WMaWT8lSlF;j+Q8w)@^1mova(Sq0gcHt@JIoZqAVa7Z$L^r1^}0 -P?pl;9%@Oh!$G&U%8~SL78h_kz$pSk)FdJgm4;2Jak@Q^76}IQ!^PJzW_|~pZX&{a-+s9XEnnzD%3ud -ojcEI4~=y$Ppz${%#;1V&wTa4ld$?11c35xXza5{vIFK5Otxltt(Q!B1)qIvBCP00oIALS8(6IuIoUjCV4m_*?igz_1DcK=I$iw -(qBWa)&0&J_14P=Zk70d>VMdTU;jsTP0=I@aSP@QfuNC20O+Wp}?Sf~(y~oyk -h+mw@sTUgyp2HR2S#?h>`Ka(wly{&@>>@?@pHra`*XM1+iC%B>un*(f22*Iks#dN8933>!)QHwGj{#} -OXdz@WWMM_iO~H-}J&oZsUD83w#0h8YS&F!$BkMtk&mUfYIAfn7dI=0cpnFJ`O-{uvmx?;;SUs%rPn8&73o$<1eAel&L7A`Vd^zCM$#e{5RnIDVlt_!F0UapVmd3+1ksG*g-UfC0wV!vq} -y>OE)B@ETr@B(!_a?&5`@1L#Z%?hq_SG?M_^;fD*+p<^Ry5eU=>0-m6v_8&eDxQn*i!Z!?cTnHFyWM% -(prBz+$iXn?z4`2k4XL+QCs#DxpS)VrAh+g;6FUM}*m{OBj9@P}=QPU$-^}2Nkjfb%ZCWTTOJ9n$+sWMjXOtv)+h)@a4N+3~4?sc642n2WvQRt -4hrJeQeXwoJ61q~pap<*UIV2|++Bs=K`h&l^&|Im)T_MGVnyQ~FDjU_*5 -J^QP)p|O$!xmxj=Z-3Es|dvgRo;ar#;Xkn5j4Eca@x+`TV>izbA0LqGcc%xQpn}WjFREolT`w)2A?X% -Eo|uyFQ7TB_81o`YkxASKyEKO)($W#wOxI{)lFq8&jUJDA0L@hE! -7}Zs#6f4*pf}wFHIF+A(P(54yGP?D4FwhlAXwWVKK>?z`(u>L$z=9eLR~n%DwS&Lcy+G89Xe1Lwr!bI -z3#fy3kfAdtKMm0)HO9&!NvW}$nTDpE?2bLPQ}wtCezHx`5h}#px+`lO;RBtCOP_SAE+g>|nYM -CbW#xds3wNqzU3g_N*oROpaub9uva>o0pAF)~)-P`IAoV#y{7bI{Mp?v{T43tO+ -8;V}-Rht+#gZ1E5eYe%=_@m^yLzJ=(MV1z8tI(|kC@9FFJ<08l-S1vCqm3ZY&?SX) -v-q|z0T>BP2E)oR7o@Y71hs$&5A`*y_yF#Ms3Cpvyibr;HmVU< -74d1UIysMXw<2n@}9%;mngxCc3Hnr}=z3M)$`~UVf|+-6GH`G+z$cCN0J(Jdp9vV7v+j^EsM}- -|II8&5q+2E@&ZyU0|40*n!p+s?#i5({tE?PV9~q#W5vRJba-s^PUQvx%jom9;DU==iZ?VO%LY&fdVP= -&s%x)G-zz$mMC=#r$EI%d}}*~bhOuLRwHZFL|H&`8(klNj|FR^k*?@kqy@VXqVj4_cb|jrX>h+CZ0Xz -kz71cPJe@T3J<&)v)Y%i1*TX#2?r@k@`mir)^2&jIJ#0ZS!YASh?Ny?WLs~cC#RH~WX--dc6|X-ZfnD -lD(Oy!($*-}8YDCk;T=$#jlc4|PK4k&Its^Pk#1?(yV7$3#!|=J?@@_IqHXEiSFvHgen8{JK}*Q$RAuy*eh@R?A|DwrTKaG -gBw`L9+&z8*hl`~Ck@7}k7EMNQ}SlbHRrpI`8OKu~^i^b&PR$1~t -l@C0g0Y`>y}Y%rn292|vV(W$@m>bl{kJ0<$`7xB|lSB5BWdwve!w_iOP8!GWjNPBRI$J{{bPDdn6u9C -WJ1;Z-b1F_puDPgz4AGV5hSgNFjovw-{J -nq(=4jI@o`5h4)jnwPEn11$rTdKmmh%%I7$h~{s1-h2;i&6WuBw+Sr)RY~K5f4~cp1Ius55xLHW0o0D+bBIHjpaC9s~H0rVUV_Xo_xuJ#-6!qDB_i6 -e*BY9RGdaP_`_)!2;dG`jFVx@XebyZ-#Dy@5p#EUGGDppAL!RuP=+mLR%FhJt=D|rFYN9@~5Esp2Nyl -Us$L0!-DX-xw*;zKX!>l(=m3 -LI1_yf(o|(Z|&GGnOZ6+i_4H4%%?kWy(WT2?_LuHQ;QG0-|%5qH>^$K1exG`@OQFqL6&L>H$v^F(3qn --oBR@HtFEzUfPN%;Jx=7!4BIFrh971=g-Q2lO_{1{5ZtNMm6$iX=f -d6*XUcK*v%_ZIO5t$+Faw-)DYA>`ckj-!@tfv8UG?x1rpH__{zsOP-M44BrB6&>hA0-2Hfp8OaySZ|c -g1{^UVeUgpvSt#?&ui)-EPG+VvC|Eu62D@Hu6l%O!Hbp(_GK_CDW^itMe);(6>A&tM&S-7E}kvi|@0S -MgL6l4i41{8bBgi$BnGIw2_CiuGcE5^XS6DIUIrixfG<)`+zmIk~8afd~-3O>- -XF<8gFKjqd^66=Fg}aE-!h1jq)u1f;gDrGi^5XAuBx|+)%ar96r0{CBa)7g0-eP{hWwn6Z0<<`61xr* -rTUEe|yFSk>9hcuQ2jY3^cGE+^%?USDY*Tp3?pcP)h>@6aWAK2mm&gW=RfI9{j-t001oz001Tc003}l -a4%nWWo~3|axY_HV`yb#Z*FvQZ)`7UWp#3Cb98BAb1rasl~-GD+cp$__pjhw7?wR-wqvKojOC$Q+oeF -$Zmol2C<1|&D4PvMY9tlME&AVgNRg5y=hFB=*5%yzoy$kkEEiIv7&F2XEIYJ()-)rXPAWx)NQNm33r( -3q?rSP!hIN898KE3YMOwF!{^pd;ld_)6r<0Hrk=vX~65&)68CU}&YxV5C;AF7uAo!VQFlPURtel2i?1F)nkVF@fmlD4s7l*a)g(EGZE -y0QLqMco*RWCpAxP?Y#lYywc(?!lmFc=KLXw0xu=nt&OIVmJnn#O@xe{M@8Am_a!s!%S -)4NXXbv=9h0CU)MHLX2J$G@H#U<*nBFaxwu?rb0?|8Vb3YY<0#aGL2uH%oooTteXlxJ`GR91=?+iBxp -wvCnTxNXkoIkh{O%7?_`0tqLA>!lJHK9T(0`F*%XaY_v3+uPa3k;?bqNJxvkm~JM~}=F0 -H7AvkJ=Tp&iv*g!vv;v-2+xpnd;g^?C^an+VQ7T)uk+c<%5Xx{AlFNC;8_8s&2{ky=#xW>2)9OT|qHBCN -n@(S<&G|3Jclf{AW(`F@_RRWnW(`||jb2m>Fn!)7TLn#_*tD6?!n}iK}PidAq>Aqqdlzr#2Z^5Jd2&p -EPZkSi(612s?^v&!3RWoOPU1v?ksAwmE<*KvUV04tYJARg6JTnACbN6NW{A$p2S;gZQc;!f_#V79bJ< -7I)$FbmA3T938^I{Ftu-`5Vr&3kL>(cH^yU@qWVmO3(J{*Fz{|chCGQ0+y0y(DK417b|IgwN(brDom5 -Ji+z9Yrqx!{PPrAosSXEX)vo4Y`$i`q;fEm9>+>(Tr+9TjgWKh0)6}J -$l5-1T6xFJxzHPP6ui8fRV6C`Oe0=$7l89JMK9lw2e6{*}V!Ff(=Ql6^Ia -~_6ZK}Hau_O%QBohVul9)_5(K{lqCopWahy|M%^$Az!@aI!}4)}&~owT9|i>=_y=hQ*(jG -)9K7=U;Rwu-Z}owhp?Je{(FN6Xf@2*Jm1)Ic)ezC9%uuhCHGI#U+Pi%Gj43$C6b=0Y_mOx_)o=e`O4e -$p+o!knQ5-fHCJ2WQPYko+h>x)V_DGV%zAVh-;wv-Alyo)8QuZm((>G7=7`x0nYA>{xet#n0ZwR+F>L -ff?IJFugw1S(H)f3)z73`$D?YZaYe7#tHlXnl8jZMWtrW7o3WR$em7%abOWAk!Cc_!y%3^X -YWZK;RA&zn>k({pjjzqH_n+W0OZrcR+3yHl<~1q4THe@~9ndGW*uE-QYp?I_P8P$7HYbKTt~p1QY-O0 -0;m!mS#y3VSuc!Jc4cm4Z*nhVVPj}zV{dMBa&K%eb7gXAVQgu7WiD`eomg9s -+cp+{_pdms!9voks?80>b^t%LX}X&NO^RlaJ{X3FmZ&i^GNp=?r*4t|-g8JwrY>V=YXlix$dBjxopU7 -ib=7FtGR41swGj4BRNd7lRmtx9k5X(Gi=wIaP>VX<9JtJ@CT;j{EmvBlN;hq$+lDJ}J6Rpq?_u;3Rc2tF;CKWhGMzKJZ4cQvAW2sM>zwnMNpsMd#%0zQ)bGED~^0Ll>Rfw^e>z -zN_TWO7`t$$63xB1R1at-gqepGz?!;x#y71T -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 -w1jA`dx-*n!|pnEHXCCdtS*9 -%tQ|{pF4-eVn6+pbuW*k7r<5?*-X0OHFY`EEVj9sEN%v1(6H^#V&x0||a|}YsLRg_BBGRID>H)h2bVJ -7bGB_$ZIFW76Guq-ZSOO}6_q77FD-0AVqSQCj#)?|}g;rQU)toU?sZCwP{pzEjFgw1Z7%~N#)@XmaIRsj6cYh*^?^nm_qeOoB -jh$FQ(h~BTq;%Mt^1IcIndpn0W{Nz?~Vpii%OZ769pLkXXr -sFU|6C-dH0|DbLs@GA-seKP!(5iX}Uim;{E%!TDXU>v;}ge6uWY>3_@<`^=l##@U~7%p-42d_8aS|^! -aa7m)Xm67#5i&i}VwJSpOT0mn@k?!gK@fjHy2Yndu$jqSy!X)h>L6QD_EE1qXf$+As9iXHA@Ot1P?1# -7U_9)6>G4X-^W-PZNZ?J%>=y?S)M?1;$?4U2g#U?csfA{X^9JV9P1iU_^ksbeh23WAl+SV+Nj~|4sHY>d4G{-o>G$wuQ4 -!3aaITprjz#PB-sW(G;0SydSvyjv<-sx$%wyuUavJ)@=b@9u$8T*la^~-NBOp%t`Dt%PKmm!T>^vD^E -YK1HgwOYe2Diwv%MMm|c-I%9Tug;Ud?<9N0jzS_D4;Sgt!c3Gu#RK*CJIO;i -jqW=B2;3M=t@ipGH{4oSWi-e0?FF2af^kBkx*8x;8NtZk>$equAKI)F4VE^Hy_GovfYhS0mcJgkhSce -k^Z;<|Sizfij?S|K`c}FtN<_i~WvgY!cj|aeuxX^>3cuimX0UCeR`QMz1r_(|4!!5|Si2t*&(RF53M) -778e}W(U(UV8#)^s|(^;B?NDr|+Poa=Gg{QdSi_1U;7Q7G_dM}Kb#`kpI4bmrYJCWQIz{j2f+i -ZYCgV)F@i% -Zgg^QY%gPBV`yb_FLGsMX>(s=VPj}zE^v8uQ%!H%Fbuu>S8%!1PE#-Ih8zm?w98J#FkojvvFKW@ECmw -NHvfL4qxfT6bg*dhy~hvJZ45mq)gI{>Q7N$fAw&XW-)yqM7ey-oqY26OIEM3kQ4|JSpg`KGgiY`!m1L -@i0{E;}tDh(8f`|Kh2TkY?n)Kc}OD7Hu5ZgkhlO~Ex+rZ62=_c#QiO2UQ;mdZt-c|7VY;ebo(<#9(G&X(LO^0RJzhFaL?4Th7Q -ObHtN|gy+yW!TopY -MRj#LC&^;fh(ece$;m?8&&9eMcck{=y{xXMz>jm1<#)|G)tG#2)SzS1f5$ZGX3%m(jYAy=;*7(a_ygS -mBeWr&A=W>Gb`GdRNsz#L(9)0I>x4D@P6+Rox>2LiN8+F5(`BpWh#HfHJC!ABWp!=dSBmC+{=4WI$0o -UX|9HlK08mQ<1QY-O00;m!mS#y<)M+`h0002+0000W0001RX>c!Jc4cm4Z*nhVZ)|UJVQpbAUtei%X> -?y-E^v8Gjj@UXK@ddq`HBVulXXxxFfuq-50%4Y1;e3PTWxN3T6)^M+rM{3g^P-M)T0Ja$+c5HUktXA& -@Px@jcSoPn2sl9JlV48d^sRjKXfKBcaxR1)(#(=VfH@4uzVx%9b9Ycn0|XQ -R000O8HkM{dJ{6~5ivs`v+z9{x8~^|SaA|NaUv_0~WN&gWV{dG4a$#*@FJW$TX)bViwN_Dc+Bgt?_pi -`Q9t?9FvB7Pox#0nfo6r*I0GV8;?RXS>!MYmRCyAr{`&-El#&EuA9_j}``|103t^L;KiuhT65Nwku@* -(3?C6tqUDpU#w(sSH?myDKU(*NC0=}rPkSp-}{he!Z2o%q3Q8IUzgp=;T;ZLJa}$u^63DUc0t5LAIA! -`X5|qJ#<>DG(&eVhpN`+v{uK-97uxa)=r2W@2-#SJzrM1R2pB -LM>`auzXB5Aof?M-~VD;^QHf?`es|BU|Ou48{BEdur}3%DhqXevZYt;TZ`Z&KJCG7|Ml$$aRKg;~6Z#GJ)#9na8eBF -Rn_WTz_s^n_jFl3ymFlNR<-od8Zq_Pgs-?4e{Of83cB*5_!xsP8 -gSpV$-Q&xY~nGj5kuoBREm(oXD91=oU`os5H@w8t{|s1kz9iYuNpmbeEuVc9Fi@owg5l!ysyv -2`%FOVI3T6kXo@ACbZkKSjsX_IxYkMpTm#%Kf?!q$dItC$OsDgw8qhCuJO*b{o&g?)cfo8mJO$nu!2d -j)oiW}T;OTy{3hKa3S?)4e)q!`GL9WOu0erUWL0eNM(gO}=n&QOgc_tLZ9WzvV0CKcG$=1a@;=smK#K -nwHCwKQNb5>#Sr;&f>Q~;h;5jKEZ0p_fZj9vv4XJrrs`lmS_gHj6tuL8=m(ij47DnOrA#duo*=B$p%Z -)#o`(dhe6c)@G(g4g5)ugMEulNY=uFL+H}@S42fHF?4NwO(+YCNsEBlN(&8$qug5GFZMG+Sb2NO9KQH0000805+CpNylTr*>DN~0K_E#03!eZ0B~t=FJE?LZe(wAFJo_PZ*pO6VJ~ -5Bb7^#McWG`jGA?j=tyqKnX>G8?yF}t{Z%U&PN5?(05k~k7li -GV2~*wy81etkP<%Qz9^gLsprxn{X2uhdqRm#I29Smx=5jk#1YvrngR{bQN~8eU!S=$pB^)!PIf(vLNJ -j-?j)rnJ0|N%m=kuLO7MDV+p$=eR6#)sEfL2?*#^|8uEQfoD3p2MC -3Mio0O!5s}rb`E>iV~hnrq`nExJ;o*^SClW@5W(Rwwjdf+YPMSkkCmT!hsX*N@(o73K*SpLbOb=t^8) -Uwsj3>2EqVo@m)JWZGXn5Ew!qsg=Kq}-eb}A6YFx5C1L{^MdDQBUJ`*uKfnwE#3FrGSgTNpki$4*)9c -$y7Oi;>YfT%R&OZ!HWn;teO-(iX7p<0Kk%bpr$_&K9Krk3b0|$i7@)Gw(}dmH2 --qdwFN(-UM*V!coelN#i2aPQoAZ(X_51PP8hx04K0%FhO2F+_X^3@}ZZ?pegMABTg8CPjA+XoHfbkbf -=*f>fQKC^$cU|iHGR-%T$t_L=VqcKnz+JkmS9K4COr&y8Uz?iZ$%^Vnb<91`pJ6#A>tEAzef?5o1Q=)~FH7s;zK -KDocTyYenr5W{jo>!KTL}LKK)YE@8&h%>1?;P;j$BDkPBCrfFQ?qShX7=*UsKX@chJJTMWv)ssYlVlZ -W)+QutPx*n(;H#=az~6#1OqX4;%kQ2?xRtDi#P&_STb5B5+_&{OR3Ig>|rqhB?IhIEe*l8A;pb3#78g -(hR)+ARj^{7MP24bn9iG^m<4)XLY7JeS*+EpmR2)9G~1H8I!am2C-`@l7s8Y_77tCNZ~?PiL8>W*Scn -Cb*ODz!Zv!kBv&b;St(`RDLlYbh5R^GzE@2j?sUE0FZyZWsi&&|Glqs!n+$^A2+m&$TQ4So7bM)yBT_ -)6(kTBEW+b2;0(foi)BvW~0)re&Y*RVp|fOHiy!6jju;edh$m1E13SZ`sM@vVlcB^y?~&I{4Shc -U7a!CVvNa~kmDX^6b#s2++4nUf9Dt~vz010N4CKr#@ow}0|3{bZaz-01_4ZyKZ}7I!tuq`boRkPSkf- -B-0YdxL-sfGx4W(3<&f>WoB8~Dw>7;Uvi~x_y83j#8^F9Dj{fs}DEQCwA?uIRck}DJ>23hqUl4M;MG1@HGnBEk$}QHwp%40{IQOp`tFkW -DWn?elz3EK96GINN4VL}c0^95&b!i&**6ID8od!y~GWHa*d~)n3{}_DyYSS?|^+vTbWq%X&zg$iAaZE -r3C7ve7rRsT2H8Z6fQgHnjkTwTUoV+SCFV&?d5OYg0FayR^v;UQ?Tl`H;mfZR(@V%jE0VrY?#0MC#F| -K1%J0)~8Lq1ltp@t4%$0+Y_r-oBGMOCt_EddZ@T3R*yFI5VIHTkM;r=w^06mM|0n0`L7X7_uv{`B#9PVtiObWGjmhh#I)uOzogKBw9huvl1_0!?idJiBj^38hR_cmU@{Nr -Hch6xC`FLIK%b8GAdH+nHStu25XPB;0zW9n{s?$Lzyi>nyVh_IgVH`*FFY69s1rJaE`rZs -B16XZ@l>*Yb4LY&z?6o%&$4?QB%!icY(at4HMTq%l}ws-hN!@T0?qYy5m*w|CB2?RW{BPsl>jieaI=rji@C|7s@O()g+R;;ltc>;dncY@G7^(|JThrV& -D3%+IHI^M!IuJ`uPaNV{*dV24d-VX0|ktM>1n(?y{TH(0D)nA|>NLbkkF+D>Vrz>D=5^LXk(4O;6%o?XUl$|usXuE?~I^(}W`+&WAWsq7^dV?pe)RxOKk#i+N73HF0C4_~aE?;t{)5V9u -E|OS^|FHwq8hUeB&MsN1V*0>&#Q2j+lR}GL7jWTZOv2K{`tqk7F}1S8kz6EP!}6rzh^$1XO`1bC1*0M -h*aiG9(q|d48C(JPVN9WD-ogzoo*P!*1GWXo-@GaK0R_&E4 -<}fw_txUzj|rbai@zP-u%$5?n9U$kMREo$Q3M1V-2$&bqWcF?UXQIDN>0GRHscJ&Pk0^SufJ&XVF;oS -)R5$*r~e6XUfO%>5kdMtwF*nRp7)~W!bp|2kYQJP)h>@6aWAK2mm&gW=Vb4*e`_w004al001HY003}l -a4%nWWo~3|axY_VY;SU5ZDB8IZfSIBVQgu0WiD`ejZ{sK(=ZUd=U0r>!=|ec!4?UrQY4@hu?X#DS8xD -Sxy__CICeF5DEar;&X<$z(v4Kro*9qdn|b3Itkkh4zCRfFtRyoBCgBq!Bd~^>m#-Enyubedix(@wDvc -oc4yDEfG$MStU9Io#*HCbQX~fH;A_L6eUv9eHPD#5rf^R#Eu5}a@q)JGc)ZC~Omx~){z3;5)L49+kD2 -kK?w$Ub6m4OWIl*HbIM4c%*5j!3+pF{@MFu1|D$?eA4J~E-LG0L$3LXBp_gox+M2<*p;5D#z-QW>9S> -D)88)w)8My?MO^wf%)VqoMSr+~Q7^=tFHmz*hv?FGv{&1m|gRe~XAqZems$Et@Lf|>7JL6^PnX>#05FB$A^ -COaa~U9BV=Vf;x(>%0zpIEnfU~;BlJJOfx4dr+{8RObQ!RXdj{aJg~5P@8Vt+>y2fagzvtQ@#r+7(Cn -4RuI&rnbk)t1vVOB$RgtL0Sc|r6vL0j-A6Ew9OsWW;zymV>1ESY3`BoB6{gd$e5jdR4;c20Bx*Vn&KZ -q-q6bfzxvF;ovAYK|iJyMjwws=(Eiq<_#R6`Bb4a*@Ud&ZK!>sV4K@pbOR3{9P8>h{<#q+)d%*+9n-I -yn8#x7iH7yvVJuPu_sQcKB!9M8@G*vH`DX>m-d`(tT*@=LQ|1!Lu?iP0Z>Z=1QY-O00;m!mS#x}ZK6F -)1pol`6aWAn0001RX>c!Jc4cm4Z*nhVZ)|UJVQpbAcWG`jGA?j=%~x%2qc{-$o?l_L+6(Ma)R%A7^+T -Gb*POCR6|!nqs}&+J6z&L)Y|}J%y8nJ-Ou!^SH(H&vsEW$?nejZs%y@iChIGAU@k=DgA2jtuiI;I8N$f+)!6F=hOvb~})ESX5PQdQ2a{5p0l`{eO{0oa&~bcU -qoCAp_2ENA%P1G>?H&Zog-;?76IMS~BYytjCjt&~=azu(IL0tkugVn|%q;E;q`sN}-{9jGE%!LaPZaz-^FST6n4{H@vDPYmse*sG&xw^FVmH_ZDQQnIl=(x=4 -**oBi)4S1-Cwc6DgCp(FX_Ev$vtp5bm{_i>UGdb3QdGcm+-$MXfSK?AoA^tyAosdi(ht6W&Qs>G*r=wBc;-&F_O5(hza)>4zGAvZHC -d&StZq%<)K+h)b6V+$Olz+1U-a8pFBgK&xcsW?k%MYZMZsCZh$Lm@wsXR%k?(PZo#RkoYlskeOHpLHQ -a?cmRhi<_?AV0_$3s#u(oaY#f26*%UEW`fX=FfV;U*8)mXDxx@ju}if$EEVi8nLEH9dSTY_bG&h@79v%PPiV6X7kE45rRl61Y%eyRLO<6L?#LFQlgNW^ -K)y9$t_+F}Bv5S?Q_3Lf{_6Qlo!HE-alpzMFcal#zNgYV==Y*vQLbpA+sgiZ|7@K3J4>z;O4D3MdM(o -Y`y22TaiMUvJQ+ycWEJd@hjkwxES{4m?`{CI?%2=rW_SN-?%SSRi`|UslMzTUxcWpZa>esB3ou>5GW) -aw0q?j_q1#0TF6`G31X8c(D$^(AtaIKtGG}Q`b=P3YTUpcf(>KAUy=1>m@p+IE0AE6ZnJKjeodva3(h -n@&wBB*LdY)q<9-cvVQ~&H3kD423L(FzvRrCL_xoV5{tCwWZ@v&N)ZTrXS_xoLTNK`CXd6(C3$=J -^}xG1loxJW4rR2^C57heX0KNX+E#66Bm4zE5hR%4qXSAOFB*p*;MKpS(TB>Y_o(sa_w>CF)GSNpaNM` -k|d6~NwqP)h>@6aWAK2mm&gW=VH@XCdMR005F00018V003}la4%nWWo~3|axY_VY;SU5ZDB8WX>N37a -&0bfdF@!;ZyGref6rer5>f*#;UMYts*|Xc5Sr#Lg%hM|^Mv-pgzXs{dA%i^s{7k-{IQF@ECkx-bPvZ% -cI^4~Z^q-)pvM<0k=)ND{Ki=zX90tEfsmA};I!R2Yr)0%63$L~G{{l{G>HgHNfS~+;O4s5AB_7jO(5i -taM*aRk)2Ev5-JK82{+Xsn{YxTe&yoIF(|7%wo8d>b|0>saXZU~F;pkYdDDfQ~3`g(JZ@ -~MZ(+}-7)F4jgAjyMl>aQ?}{=64FW3dTobba;iwnFkXN`~ef9ub~gV3w{%!w-W?EBx9wYt=Zy>tJq)n -6G2eT4OSW$s}QkoJ{H|p;H^A`YEzCL5?7!5^d>IZCw%B<1FQrj3Yq^yU3n1LG1R%EJ(?lOUP_N6n(?XhWM)s4# -J3jsYwJf&S4IRwN?VbuJ$T_95j=;^D_p5NhXG$*GmW(kA2&_-63~on;MKxKZ^APyZhzaNq;B@#yn&aE3a%U@xt4m~3R*T_U -!k<(6sF^{Alhk4t;?LDYDAal4mjKJeZRs`T#>23y5{bdxC`ql71pr&)Ha)-)7pI-P}RxT4(SEQqr}K7 -WGK1yhWdFm=@x4BVR$<==$GqinaEj=#IaY9=!N#zH}AsmYqxw91uMabwhKP%!r$8@Hxj+hQ}N{_T7k+ -YT74dzXbsBBM0-um?R3?!4*de(m1y@S`Tm?c+P*#gRZ0##30=7MDD<~Ii=F8=)n1u@|FZC|kS#5vV($ -R=9ZnO3sqj65(2UhVm@ON`x>K+F3eJ78cHX_gUFC&kU-70~e>5sM>|!x5+~R;z%mj5KYXfZfH_3vhiA -*@NIWVkFxcUA*Lx~k`#minMQZD|mvQC*?kVwzBAI;s4mmZD)3C_a=FKTRH?UOJ_N$lRl>gp`V=j#XZu -)skpg^rPKZFt}M1TXUG)?2^x*XajZ8r -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 -idLMl -Vo2gA$1hgY8&i!R9wEJF}+SiTQweH#ql<@@{K@q*#gJnKGoC$y1;PeZ52Z(^eZ>jC(Z^zji$oGh-BI0 -gtf1&{z>;InegMYEiA_&dP;ZJ)Qx}ZFO61LW16vsqF*6^r1m0&?YpWfu4NQI?kS_i9O -^@+<%+lQkq5X4R<641(yZ~)(DLsVJApTc2??skBXM*P#i578clr+{PN&S$_J{|)lRO-P&$Ag^CCly8jryZ2EXVvG7%O`B_E@j23G`pCdSbmq@}uRVsOon@r -l7oig}b~4NzH}<*=LqSOwyM2+y0G*1ALU3P(jJC^YHk8V{s^V>ig$wfBt|t(mKEeSMIjRLt8=7@01Z^G96(44i*nX;q#Ha|ZjeQ3CUJ -Mp9$Gioe$woUAAkI@>*M2s<)uNkA3UlViY!ElA#ix7s_-?LaT;N4}Lfh>N7khtfGxD;8|^qpI8ZkqFwb4UHb#k43Z$&;uUpNsLCLj -%Q>d4@Cbxuzyr;z*%7c5!PD&p${8aLcpG~06!LkfL3l$YkAPK7Zil+Nd|iLAt5`{JCOK8_YJYT>KhbV0+TkVNT7Yp?r!g2yDOt -^wmRH;qU8-k0#(5awpQvfzbQA8wAWth4jJdG9>W_b;Nk-M39-!^-H8j{3r=q~572u0dtgz)2q&*pyO2Q&3jLauZ1Ikd1MOG -Ad7+g0?`3Oi@MkshzMj*mCW{yl}>rQfS5Gw>nCdDkvENkLK5(?XvNd^n^K9SO90G&0!O^9|4u23i!KC -WhEx@;vfo$CohTMkSX@u=hV*__Zz-DB4!JD`b=OT52t04Dl*H>c>y#J^z1_%lcdw&}Qo_@h@u^hTWlo -~F(@NJ)q)S&l3eu@nIU+8Q+sn&-honm;`p_`J;y-9;VUp}51>1XlDcF_uQ?5?P8L0D=DK6Lx2!Fb~tb -!m#eixb0zJ%@`r6PJXEc>XsSsa+iLz-nG!Z;NCSDZ|BOFM39Icw6I?Jy5FSdygzeUJ=XP_T@lF?vXh(3pdR8h1rVz0u -xdp%Nvq=EZF!7g{Gepk`fe!VGbts3atiGUl`v%uxL}BIg0AEx8RJebGXiabySZuB@kB|IBSKJ|p5A3kLZpl# ->;LH$GioSoo!=+^ZNS8ccc10B+a1_1)YRj)w_H`RoQC*jT@jJv)(UUQa)QJVOmF*r(PTt -iHGV+%lBRXh*4eUk+Nj+XXmY8kh!DBo9qoKwbq?|j!^!q;eq|@u28BT!TPi1sIY-U*jBJZkis|o{_CT -TRm@dE|}#f*$yOxp*fl`;5>ZeTtR(!8yYg_&4l?QI=c(JT6Ct~mjM~S%WI$c5<83gjgl5_E*TuXY?`Kft7gVDLkqM;?dglFyh&g2n;19nx`X^k -Srb_L&z;jumv%9<{z!NaOyLyNxnJzZu<7(#h08QX_lsPES2*B -Pts&sCiV{PfDyPnnq2)!YS$hO^L -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 -YdPIKho><3zmw&~;>{Q+bTa7PReSm@&zVYA~V -T+i35KY!RDJgLEubBk||S5DVvV$Ioxpw9=$U+5O+ZZHaPsB -+}_?jG@wXQtz#8(^^fxq&eEteC{unG?6>#893)FK?pfd8`-y4w_9)+!_EZQl+Xx=ZcSq5`Uci>_GBh3 - -8?R|Szu2ft-!zi_84x~0IdxyGgcU0vyg-T&Ms+$yW-_ZQf8o8qo)?&e}H7=vg$dv0SuAdW1oPy^%I?S -9APdBhYZq0UBVAzi}V@tC4jor@`ns&b@&X$+S9&v+Sv@Di!(@#YaO@&0$A)q&W^O+vm@B|yZFu -j7e^Z@XZ89mSgkJYZJI3ct2!Z8%5b9g{knNTuI9qS#_tw83UoSxjt5qkM|sJl*()*WcKlr&Lmo7IO4u -Z1SttpR#QR_;U|@X_-rm) -NM4quavq0RMIkSr6aM0V3z0Up6FiE!Vrhg)l0f4#cJd^2q?_)qgQuT_D3=atF|L}$lD7r;$nk&**X*NAT+22QLFaT(%Zkaw#|zby@N(?BecYW|a=hGspDi -f|Z0Pr+Tf;KpW}fZa%(w+ej)}!hm0K6>8&xf-PaoWSn^xzp-Yuuttt9S(LS3iVm^T>c*+y4cFRUZx51 -0{3tb!}O;U!yO3J7KBx&-M$7e{4kO|Xloyd#<5i%^60ySb`9OZDpu8G^gZaePHO`+lrqg!Vu$a?v@gO -gBRefJskc`FAM>;nLf1M7ck7i2p_tMfRi -kuO3*Z;WR8ykBocT$R-F_brR>kgZ0imb>sfmhjz;V+ac&Kr0Y78;=PwHFrc`{?A$(vxPA=EZ_|WPj}@wed*C)IIPp?K|<1&f5+^y6O7!4ywiu51LpHt$vpZB2x -2Ub7Ey}kZlh82(%oTWV`%GSNV;5YvQr%qjG&`ULaDL+K_sWP~gh!nR{1A;%1ig(vDa0 -Q&DtHc$pm+RkBh}JD$@$HF9i^R{noSR^j-(57O3#n*xEhbCiB;JZ@o>d3-lEb+~t*EHai7f=h#?i{Wl -|L^2Wc>WP%@=6ud=as4w)_*{791cuCCrRUN{*l+Tm3lvkI3N)@h$-YPpr^%{6?g>J`5jpCp$IvFuM64 -aNY8DP3fJy$C^srRV@mR(UJc8&fxd{yp6)gOrc?Y!UjyZxfhqV7N`%K- -eiqJ#z?At1a+vF7bRViq%g9J(z4>_1}i%GjzN8YS5zhZ`s#+VMWp-ESXM}VL}}pZ^OIK>r!P)V-neg? -y^Qw%F}=cnpX`4%z1sVOeD{+1J|$yN>-EqJ0MMx -9eGvn$Bq<%YXDqo`=U5-t#`n0W&!T_bxM+G>e?E*iaL^S++}%ekNk<-B8%1Tcr>fQUbfS3+r!l8u&X{>P -j`V@$0{`seIt2 -q`S*1q%&=x;zkhG-nr&b_u`@|L}h(K!xQgHP;^frKOWJYbvFIS20vb64a~;eApW&|E>NO-UqpqYhI~R -pl5$-`j?>^@pL%tVSbyC4HjDlKZvVsoe;WR;$(=d8@88Yz@crX?z74B>4<2l$|5mi`rMrjbuJT4i1GH ->wls9cwnrd4${8+6`wZQ+Qwg0(SE&kanH;vy-_7B$a+-mz@!Ru|=^xvEZTP#q5AJon$?h>Wv|0QdbAp -L%e^#2paISsd7Jj`7;TwMQxy$jZ9t#eL6i9EKfl3a8lZB;DjO5S;s>BN_Pm8t%6eD>;ld~fROXBQVIZ -(a%Kt-pT{{`c!YFH3;??rV%WuRa?cJ${To@>#8~!@bcT%u|g&oV|J83k)x&{^{Yf5&UoL0Y5+MAO5G% --{(X>6;;;f0fdyq4ll3{o$Qrz9(G2iEngZPycVS)E4hWLhVZ0~Kh_TnvtmAa%!ZW+^i!M&ZfE -VfmD+syWpa8b9DVH@k=x-s6S} -o|?j49Q;z3(JaBYme5@fgi3dIlzMZ@{0&7TmyPeb0g&bAa(`TFFZG5k1OaLs)1q}TE3(iPd~+X2tx(^ -|5ksMUDk=bC11eSR-Ah@hMP!;BnbX8h9e-odf6Hq3o#$_JN*5Yw#7E@-*z0j+{G~AxZ~X6afrqq%kw> -gz+i!xFeCrrU;ghRw^W7!ry;{U$g4=n_TRQm2zY;ac43pbSF_Uur3mYd8Z$caYHe5!lFtZH%M%*^zM= -fGJc5dOgzJ0rAA6njm#0O)S^&{dRQwG|uA8b8c)Zbd=ZT{hl{y;68=%h6QdgnU{vXiVJ{M(D>>12gZ -7su|7{}x);`Yt^;wF5$X#nyYtG0qBmH#r~#a?qkzw9rvI-u*Db&?uuL0Cc@VD9)v~Mtd6g;zfE_h~qP -=H=?eLeG7L_1f4l^Uqp9_i}jA2T+zn1wB(5G&hlP!w^dJNrwWxFpV(s}bZf6eY_`&Mx9f1lFt-m^Cx_ -RMD`otCe_T1dMr42TubysaH_6dI2TqFo_DOVc;0S|Wg5?G!_^0ia6F*A}(SuRHCW~7G6;myew-pECq% -DX1dFWSlt(zs$bi-KMG+_|FnkEBb-Diz+uWoh$wD@xmS}tnJ!`IO#Kj}A0N&S(%CteGQv*Y;qzc3vCDk)ez@Ysal6%}7zJF2Fnh}N6fw{@DO^{TyMT)sg@6%Mc+#R>s3qa6wHDxVEHyzb -L_mf-&@6aWAK2mm&gW=T2Rqf+V8x!l5<`B_-tpBuM`&rkwXa)2rvLBiMx0I`}Jeq50G-4y -}kMlwHu4TOwUYDPfvGGch6yVd~}@6n?+e)on)JSdHhFwb8vWYm_2LO+qS&A?z7RearVV$pMP--|M@z5 -e=V{%+y1(#vvo@$Br?yR&J3-)BX=$ez7^_5SUPKY#!J_1ky&63QJ -sdi3bc*_-UkfBHHrSL;fwMBOtG_;PTtY@1a!n=Lo}rWLapmTB5P+tej=Sj?)j7j02>2M6-QWzmVR|Db -+hnR#b^)xEgytMXF4xh}eE>u1$mT>%o*&qmi=H(hzZF8XWrqTA|ke=XPim+b6R_3?SxVOwYSbFsz&O| -n*W&8D4;PL`ZED*&p>zw29Q{Kaee@m91Q)KXusL_h21*MOf%_I=%L*7#N|{=%is+O}zB#g*s_n1@2ud -?|lVvX^J?pFV&3{^{(S7vG(|diwHglKt>+XJ_Bdf)5hZrY|c6X0$HaPRv^I%cg8;nkL!2fF3Po>$X{o -w%<-NE>jmPF@p)8$uUe0vhZm|v6zW_gxyWDyB22B{CxKAFK^+yXz9-%@MAkZI5?QiimC!KIL*#;#BW< -(ZVt{ -c{dHweNJB?u|pRczI0C+4%J^i_Z1`nRSe);n0tLM>@Krk!7t15c%{KdQXRPG%V8s#ruy?g)kyYJ54=F -z#%-<~~t{q}iIfBoO@&)&U1d!GAq1E1c#{{HQ=vv*L=?=;kW_is<%LbWkB{^Hd)uV-gJzQ;aJsf#6G5 -PEhnuZphAX3vm9M$P5VV&0EWs4ZOA`0vxKqZQ9ol&y;O8nBlk#yVmb24IG3ugm%-TUayDIp7vz35=qw -%YHT+b)s6z=Ik=~ynqsAQI(y5MzRu#p`ME=vNT{~WtY`Wy8`;yW=$=!Wz%K?`j`1rKaB#%cBeQ3K*-< -z(|wI&h`hcMHLx&P%JA(QU}fS!4`*J9q8%E`Gc1tx*Aj;lfY|ql#Ii?Zm3^0$JlqV1*^3>Wo^pfZu;1 -}716?l`3+niUW-QVDr;9~aI8%zf*26KqJpsN_tf=G(?LB@SXf8gsa!F+w`E>)#wlCBp?OY}^#$iILDXW?YDQ*bvXSwlM=^@BkoF;?QLm~S&e -2kt1{6N`-c&AM+Ic&7&`#_oUvGN7p=GN7@;^lv&CLxC8BbuCfW0&bhO6x}p?v81W*)?!{ROR(Nw;O1;zb-q2j=Qp|U?*s9h;<+vYhjFSEwK=9Sw8MO!+7ol0E2%)&;oXavJFkT6qu -3}uLgm0>(aR7L29H?1{Hposexk$p#+XQQ36l{1*~5OUO{H|r)p;y$39Ca!$s=ivLenC=?x1?@Xbg~qg -*ak+`0(axFGPm1JCESa`GZATTr?vlu345R2zFG#rsdC7@Ge{309-9qmxLpV{hx=uRAx8j#zF9!f^{r* -XO;#PQg&)JA#=%{oTUTwiMN3=1}=i=l&lSx1|7BO;2D^O#%Ff-XuAN4dyWWL1eW6gaW64-py}tjogX+ -RzRl(Ol||TqGj`}s8BQoPJSuo1@Hk_aTY8p{9RdZ?r|0MV%23MF}<4dhv(w5Eb1rUUvBDt12fyguf7{ -2f=m~RYIzDGM0Z!hjM$R)INk_os9gy>V -1}f_A~fho`zw4OqEHcON}be@akOD`@owRx0jT{&Dbv%Ro3dssPr_zG#Otwc6e? -E`bHyL`w(|j?#7YTt`dbWLj1TV3B}|`f9{Iniky*n3*V6qwyGbeg3f)QBHQ8>~RPBACq^y5)%9r#r&Z{#PNao-VtrjND!74%#@$1KN50T>;a~DN?S)zMO4 -AMLUAIptVTKRB&@MMpy}WtF!?yKGJk92HgZe#kju!iB^}n)cFP3s<^^v&v|f<~cycKWVBM@Y6>0)nSt -H`sFj!#iuZtcxJpcluj_=OUFC|uzjBZI7TD^1%vuqfjU=ISxAt4l?58Wz^P69m%whJntw$iBZ5}9%UU -Uo_wAeCp5MJ-MVaJ)NE2r&@L*4M_BNP=;26~KFUae6CmMsM3BIQ;S+WS#9lHvl&uk?VYZ -%~WCE9XsqlYj74Fa?(l!Npm5o_t){dO&6|2r~|$HpgdFgQeoCx$Z3-mMF?!za4}4~YLL(k~h`NaMu75 -|-15gH4Qe5adYEVF1A#>jsMMTA&FWk)+VM0!_7C4*Qlxdjqh*(+7zR`(c+?C1k@J0OhxI+HRP1v@8O6h6 -_W$dZaD(-d4#F^_9EMr -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 -3ay=qs19R`xq@!gxN;> -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 -#U2Qo3r5off(#z$S*zv|E<1h-owR -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 -QkInhG-0{JVsr%>2cFtybxlj2U9EeP -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 -`@~SSI>Tg%HdVhtn1SU57ygt9 -x*2(NTS->m-hRk3C)qz7YA`cmHX7WkEHGwtVmeqBTRLG2g15Gyzn3kX}SDImc5}(BHpd-r+z&ay8!YQ -q?ux_j3#1g4d`)3Z!jNlO1Z;MWwgWc6Yllig^rr9jnAen1|I@#9L8Q!!(7)pIurfIp@02P9b3fMGjHn7xNs&iFtmT7plW@Uwoy4;QwW~?^LCSNZzcd}{&N>rD?gv)6%g<;l!zrmt}4TD4Z;nj1P?cfI(@jR~p@ws- -aYZuuqqcNhkev4JFvn{T76fUJ@ASdCb%0puWvOA=x^z5`lsC6S!;v6bmbV^M@F1Xfj0jyN(?7Md3m|G -F(KvP2-N*0K?`pAT+ip7F7XF$qA8?f%H2p18oC6e#Sd;`P`UPhyF;DQ$LS4o{TO%=&7VZN$ty-a4=gx -|PRhmVwv?UE79kiVI1S!caaXkwx7Tv3-2T=LM3cwhAO%O-=5Lihu!Yc=!;alw4?iTmPzx-U)?HKdJDR -#7=cX`w^-h&FLa#Ns8Fu7hLP*1(C8W+V;2&MeCBkiNRyRInVt89|uApP@rh7&l23FMh$TKp&^SoT$(A -7vysOuF6b*33>gdpgmOE4!mr!pn}=EjQ-wUEu{iT+sjP~l9pR#ozBCt%<7TB(3%8B2Rx7XH^|zzSNZH -JAZeuzw&f?$U12^1^=3L~&?k|j_$0EPRFivb-;7D-;z4Ut7^qm^`m+q}7ATDmC;l<6 -4|Q%oZBorZ%F%2(VLY!MJ!xQ`Qp4FoPxi>3%VG@cZ*3?U@#Xg5F=foQI`Hz-9X(;WV(W>+H_cXz-9&S -*+#9#e9V1C}Moyf7$x!n=6zF)jkGlUf911CvQ!fJ8fy9mMqIER^{*H@-qJe4axckeG8oS(0jape=P4; -fA4|27eRwr;&PDme+*ltFlJrZH97(FlLxrnCNZa#w{{dT~P$06;%9ONF)3NO(B*5{jJy8ET89D-3JW; -%r?Nhp#7K6ULHeN$`wfMfWHdhG4b8Y%W#=3lG!%AyzB#(GuEgciYyKr0+t>T+uF5=F)z0-pU2(_#?^= -?q_V(T{_9u!2gL=Xiv~+oGYyCaa!;*gCXp^x&^7>SR0R -Lr!0K&k92<~rED+lrl{#mZ?ismq;b>&E`h0FGRnZ99=nMoQm{U??m;xd*!;bS_uQUo8fN=R?k5VNiHH -k_F>Q^lm5Cx7UCM7EU8IjYRimNS>VeAQr@-#2NRuvjLgI0ZVWE1+0xB_lZQrYAGh5tszcEq7`8QPFN+ -fOMR#WoOtOgpZU8(6OyA$00TtSYNvUqc7ZTR{dY14%5(#_VI9t=7#p8ugn>)T0eA=0n(NK!brrUxSXF -jXFiSOEIW$u_v -vVw!;@PfB&qavTN!iF*iUhj3J&pc$>Xs+hp7g5);Y+Gu2;$;jJ~20e+Xm|1Vq+7R4&GCy2hs7+ -h1w(E_VId+=W$JE|xHw@8)||Kfa&*2-X!-@qD3B{JB+OOQ2?2!mh)YqegJh3 -^J5HDsfj58?JUO;D{sF2n{TFa3_$4eM!BvS%%c)Bu%18oZg3XlGRcN@o(bMAIUr;Eip1a+`zZKh21$p --7ZS4<)k(PQA(VQ|S!a_`2j~Oi_NEWao%VY~!RN}<0{gVk2jwzY+Xt=^ -*xTHC8Y{patvnA@vsP^ZD33d=1l{m**7X~0#wWP8Z5g&b6A2l$uVX{KjO8sDXUN%zC$|@t>n^6XpVn4 -?G9dHFjX;k48t|z>tl{iRVnO&77;Ox4}<{5H%H2$>G?YxV4%0lK}(8e@8SUNlEqqI0@t+ypsFQX>L?` ->&AwK@ylR0bE$>j@j4&osyw_3uGPk~>sy&(0G -3)CwC7wXnJhzqI|CbT8n#5KZl*}DXZLpx-#9RxRZ9Q=~6M;7gA)hA6-*xWZyZa{OW17&gNL7?zRui(v -C_pilYWQ3>{aY0xMGyvjDR=$-@BFj~puVNKu -e>qhl$De4Kbooph{l0PZoA?n<_1mmaybM8D6wD#xBwuJ%+*;mlDKOoVAjvDqbX=qpI&<27xBNqdyDfO&M)>;@X0(8EC -qP)mPw#*7Mo5TLIL>cH0&k)q7<-g9hb#REoIUEOvGPQ>-O*vFkcSuWc2(xhb*H%Csvn9^}>t7ba9CS; -X-1`yBW+x+`<=t_ra)l8Z)IC3(j1IbV!B*-;UlBGz&U*3zC#xDA@>vCP_Z+n6UOo$JioeIp@)k`YF$j -27Biu1tEY4ipyS?%5)u$SlL53p{7QrDMKBZ0AXRHb=q~lJuy;?zk4L2|AAdy`LdcLyzmMj{@v;Jl(Ff*~J9`}7(S2tS-3Ke`~#$OFeUVpKjqg+eZbjyz&l_u4m&`GTNMg2yt@LJ`S@vh7l5^=sHd@y&h>O#;Pf}7_tL-mu@jyUTM17C -qXWa`Whdw=Dy(9-mLf&EnkMVR^fZ2UZor6@W -nqMP%R(~HrFSjY_$6rL4wSX>PB<5%k!G2H1$D2yY@b{iA%5fXQsROp(C!o0Wv!pxhTdc_Jta1Z5nd+U -)-Y42&;Z9RUHk(W?tvB9hQboV+-&5c%Ldm8KRhfZIia1S-GX&Cg6%66U6_-Mt}5m$sc?X!i^7~J%4U{ -|OV4;fB`fPWyE=v^iA874`Vv<6@h2VrzgKMmu)Ta*(6JxqdTGd@S=@;!UfD|{5q+D$*Gbh}^oqE%GKp -jZ1*DysEwq*nOcnPTB{6iUz#h7lsos!<&sl34eCVvgtI)LiOa~b6veJ|X`78HeXF}!qXMVmKPiM%$FgA2!R7veD# -Ln6w~VDGg>Rl0$x{7D=wMnpN35x}_7bByYmeeRpSARtO_HtRcvUXbnz{(OlVy5ZEVHC&T^pLEQf!x~r --e4hDEpLYjq>Ax@MUZ=UYF~L>1{jxN*OYXsI6_OE;@`>t%|+c*b{B%J(t2ZyIrNUi|a;*ArGiI0#64p -M-FF`zzf5@Kiao3daD&E{h>8&3;7^S(zQ5Pj1ZW3!-cce&O@$NhZpDYyN6<-{+GrQXM*59vf!OM{WnW -W?+n|h^*dY2y`&U=fF8wl)<}p-)J|d6M59rhq^Yf8)BK2!NLqHss@7NLxZR-QlGEX3I;b1%x+?bcj2+ -uOzM!1#k5;IQWp!0PV~$$FqGZ4~`ly>VsIi3D7(Zf=u<80UXgdfEWf??|;)kOUx8ORfu99_cR17^_qRUIvK`$@I=zuD3@%LjXpuJp!tv4llJ$U-lIQYJ`4BZ(NTFVQvd -%C71Bf9#OJbtH_rrYgO``b`Bf-xcQxx8cF1v=!)34&=qNo=ybh^pAzj;&irVN@f6=w3Yv#|q#W`A`&#M9Grl*3hF9S9Fp&Z9>~^wgXsNv{aq!WZAMb~?j9&a2CK3+SRG=cj|b(d|0*8@70Yr}-8O< -NG`JJ73q{ULfI8P7CH!rhDDabBTgab8c_UxzgXS|Jsi)YFyS-RTaxzRubEZ<4cc5PhJGUQd~*2wEq8(yDXD~G{%xK9RVR(2y5!L9hHJGE--)O6g5i;i(`o(Y+Ok6jlV -mfGdaVu%#5E7l9{N2gjVYf^!8)3mG}P2ANE?aGo`i|m|FsN(EhQzf2VEirTaGs>y*(IYcybJT<=S=$q -e$x~F}U%!s%yCY56GOQhnN~@4|04nlAFgw(W4n`E-u6b#fl&@3&=1P@pTJtCG_=RqRY}d!5Y|d-zY7) -MWUg=japQLvT6d3Pe(#Xcz@d& -}P;f(M4q=dp+2xf^))=}GX9(r -EPOWt|)`NJ-+Y&&II3VbFCvrqB977wdZk3B#=$}XTS0&W4sU>Z(d^b8iC-6P-*-E9Cy2YvRCeoKfCz% -DC~!wp+z_@A%8e{olCi1orcz^X7SO;*hl;3>cZ;U#Q}EeKt!Tw;~pY2 -T(qk=e69#7|;i>6Ek%H&-x#RQS?VZlN~^ZAInjh7GC)8;~w@|RckWGXr+IEc|gz>K}jt*Dz}~djw%Xm -uhjPxuac(``piJ@Ve1t4Em`6o-Ug|uzp1CZ+s2eCY6 -HqAZ;^Hb%BOBAAHtU|#_N*%iX$y*mpi2rT8G~vmXvova-+frVY)HO5ApH%!0e0eM}0HMa@~;&-*sh~^ -Vli8mxSuC<={l8&>mgIXOB(}PyP_883c7#dgBinv+YgBdCv8wiF6XGD07TeV$;i7rw2)$^Na$OK;+3% -vF;gkpvUwB`m8@~1E0O3LRBX2fSL~Qa4fZsq4uPwf%QYz7@AM(C8ljde|nNv+hY}^QDuwl9iP|Ym&@CXUF9>#;r$T+=TN)1WLkysEPKVUXoS%k$MLOY@}3pyf4sCethxc%}U-cNGSNX^e -tHAnS)MRL;oIHo_SaPP~<3z(~fD8Tn_NCfziwiF+)y`O3OeF1to5q0TZt -3M&G+e!Ih?1SQaQEMyo^`>QErO+k!;GM~`IgCU`cnm{jg^gy%mc$G<#0{>z{K$H(Ibr++>B@;~CEdy} -_s-ydJ-tY`$`Kb&-SdP#8q@1tAFjMgfp7;P!6%c)Fg37QgUH6J~O74n7oB-3(32JF0Y$-;j@19dKFGf%s_l-FWqlG( -SeUJlA&-*R%|ISc4wrdr}>fZYznbw%gV|gReit~H+ekAWIM1d1};0nO3L}nXp4biQ5d=-M8u9*$bS@G -Al>FKC+3$==!Z^yX$HY484az4W35JWHn6 -_paVg8@7}$WcWAl*#W_+t|KVuV8`VVO6nh$A+*US}|H{b0DaZObBJipt$1z68RP@0KF6sou94Rjg(8{ -9mU=6!a6@2ue%5a*~pgDhdf&D_L*_my|_lrxf$yxPU_UEvP@QJn$@_uK*scr?Q+Vq@h0wD+9I?;k8k5 -!wZZu8G^+SXc*!{aPGfAIZZF#?LH8S)=IP1m4^Q6oJH7G=p|5PV+e>ktJ%@@Zfw7y7j&K~-5@lb%bmR -|4{8xq+S~^_A`pj*@V=Ro^eh2GG;;vl1GYJs3-)DGK=zxNm`CN?j_fRf1)=L%ITP~2xM -AmMQ5c-N1a|7GsHcE7gJ2iFc0{(#%D867$7zv^)MIdbnVf@JNssb{IT9$|GU`Ht&(aE&(v(%KTnWm^y -bZ))OgUZ4R4vZlQ`Hl3 -8(kyU?IM{;b(af=;bCYpu6&7`&yaqL;xDK2RNe@fP@|HkT*as-y`3mSiK!;VsZ3y6qK{s)}->hL=9}$z^egez{VU}}O;W}zq*rqbNtc1|kWnU(*7a-4bm -d-W{;4KO-<(iEgAZp+*ym{(m%YuX{rcrk}H4~cLvjjyV>7ccQ?O{VTCmsb<(=;-bQQ~TD=Yv2td_=TE -H%%;Sm+SZS7IF}jvDrPN)c~E`Ji35&Ch#oiSoe3jBzxVF?Q9@}(FxYNKeyazsE|Xcoc-gA!nFe!iF0v -SX6R8mjI}fIW1n&k2H-=7jFz50aaC*EI{rS`bjHf{X%+ZN<)@sa8Bzug)3OXFZ$Smii_N>^D1V#&`Sb -Vh{`~pm^H1L=)e1AxzuzyiwhC`ye4m`WKTcNZ=bw(=uaa3=zdQc&ZTj)(?bNow5Sn8oai?!Pvps!&*X@NeSlO`%xG86#9_U;oJ3Ffqj}&d@k$RIi6fvMvj#%kNy!k?^Y -ys+8R+(lbm2k~-e$C9kX`fotCa2E%G-xU$nZxKnOO&}Gnla87oYzQ)b)I$7%gQ#nX+p{4%M!JG4UTH= -$c^U5iLM<=qM@wV({32Kl;W_qp>#4traFYK?_7n826VvU_^~D#a`4a`UH3?&L6(UqrW}dr2k4;|ea9hV>olah0q~`nm6EbBPDqLu>}IEksB%+j+p#a@Z&*Vy)%P;EZ7$cGsj4h8R{m6W -WN_EAbq)}GHc%cNr!HF88!2h$!c)e`5tCdmo^XPP0gqt=pnG9mc#LNl-HB>MiipJ=iluAAw*lXFLSva -JSDmIj}`gj0!uT{sXk6OP4<@6ZMx`{GsqJ>a3y6JgSMnyYe^Ap+2u8reqfp_;)7-~&}Hyr!Wf>^dXe9 -KPRmLVKtWVaA@ITndEhF3L-UeVkJw3QwVfk4A13C*CDclIxn18BsPK)H#>J$>-^!>VAVxN**J -82ewJ8{@re&^SdB`tDRRi3PT~GlLn6NJFX#AI}#9l{lhRc51rrMDB4?*?_eXbWBP4kSOI%Yb9WB4LMm -98#a;x;#P8U1a@5~hRO@1nRq*<2;X8T?p4V~uT5bZ2mBO@Gf3l_bOO1xxm*j8i_F#jyfQ6E5%*<7S?C -1QBpjfJzBeF*2;rj5poH&^*vOI0Q6vFwPca3(^se_z96odHbw~1mspin(PpdO{K#kan?EY4J*l`@K)i -Tg&U=#eFb|RhGyDR(=088iH(Xz=~dC;xjVt3AsUOh!^PrWgF7qiFu>kPx!k@wIsg- -(7G|^P^xnb*;bha^Wu1wtx6E{Sru-{(2qa<7`*xZtM5r{KUFFBCDm|&KB!h+Cj}bMhEw!-QrDXmT3kT -X*Wf628Up}sOBD5yu7VH%luELTqQ`qqhjlp_sy2_R$OPOv8d{Oz-Vs|}wK1|*uvL8`)q9L`M=I~>8s; -}{vL#(Lu_^Lqi+b#Xud&L&Y|=!RnB^7G#$@%Rt#% -TNi99;_r@8)Zqo9`Ld_W_;k-X^cGc%-#0qtj_w(qj8H)t76QbHtyW$6w9i%TivS -5FhG#17Mj54sVM>S>!}1)^=oxHC*XQQqV7($Kk{r&H723^OKpx+s^zLM4xVyqs->6pS1K -ROFOefa6lbQVUa@z+k2vB`e=^D?O0aql3Z{w~eq63u?gc%tJ+X|&WVa!WqM&(6am(aX -Ld$v+#zG%~W+f&nQl#pGh$|I#S$}bh9Jb8pj;bK|uoL`gjSOec8@NKRCKo4reG!$KK@-cZC|mnamt#B -Gm6gHzNWEQMuT*NBoo|23Go8GOh8ilciX8rmf^rk=^uoIER>?GL<{bZn)jeP%w}L?i$_2nk4zcyO%yB -7&}X9jA}U+|zw;=Lka;FgpxgC})xOVJ~og|F?1y;I~~9uNibe$gN|G9uRK0=Q}fXo^R`L*x|G2bAF3mJ=CuB|MPc9^BJseCuXsx^_KPSR;MHxiypF8Zb_g&Tpvja>)x7pzb_v --?F)zl{XpeR@FAU`8dylDy^TIFZXv2k$%V#49YH#}{K30~I6I8+6jRy_yk@=XPkej7!$$lC1PR`#QN% -?&VZPnB7e)W4^1*oB+GzEJ -4RIKWJToBY4di-O~QQDRn87V+!KJ9Ii2s)haH+gxrAq1>|wdws5qRI8N8%g)mJqi@Q^4^r%u=09>kFN -Rt+`R2S4@6uPprtIqSCE5Udp*bp`I1Eb@X_YtpD1^-|rXYvytJ?(3qE!phKOzm7&|q6ql_)mC -Rycad5q-6zGRoW(d-@G0&mxqcRkf4e*)DW%4TDf^`vbut6Pa1jCI&){HU9kz~k@0xzG?(vlW7_HuhLS -NP57$m-c1qD&iBmD90P&XO))w$zoAu3pzt0ow(eY@e7;&O%@c_2BHA=)jl)YQ2TtfnYWe^TrdfsYsg%kXtNB{*Cw>U`e3DL&tmq@lE -ML+r=HC63|X%Z*YG&Gdk0{h&VKY~BJ#)xP*h-wO`$D(d?W*PLS4?*1C6veb>fMc9zo=-2Be>OuN3Q9#C?wnbVZ%TZSYe+!|Lf?**c+8ajchIGzxg+ZrHeocal1 -+=8-SlsqhcQ>y~ypjZHaY%pp=55G+BL*I|+}(p&mQ$sq( -3{g1ao*`rqHrOK}T&C@TK0Wy+^FEX|cy5(}c9xQT$QEqr{y$28xSH8f?pVmTCVYw_}=QYHP)gOEbv8v -uZ5n`8;i*E*Yuc!BW+)cChFwDoc06QHZNV_c2fq6T{F!=xHTqygA3*IOOZk^{Oa&5nG0IbAt_r~Poe4}k*w6{IobG6YX@2?aW$@|A=fMO1^ -y$O+zzHsg3HB(7Ud%Cl4n1Z+f2t-vfrgRl+jSoE{itzSEgtYSBoFRnku>kl@YfS_W5~0FR&&Ysbmm6Z -GvGQng>NIwzIcY|4@X}j09dQX=Rb| -G`sh#CE3t`bgE6Or@+SuURx(zZ#zQ)(WnKQFtMuvNGHyzrbSDLT%vtfxW72q~k;BRRE~V+$3tKEypD4 -$lwMur4-fQD*y~fZ>k~Fm~O07AsXAYjEsT16xGoH~J#cVI3yc#UfwMl6Dvl`xBl`5PAH*C^$Y!fM65% -tEUohSmNJtyVtV0E!|TD2*rF|{t7QaRz#$aHNaz|@wwdNSP-Aw0)_I>zF*+__wXV%n=lo$_>#w{i-`Y -7T7DY29BMsJjX&9uFj16+;lMy;*r>__%J3o@9#Y9LxXV*uDGPo)SGQRoOIsb4|nK9obL}WUI0j=y7+% -w^vljMLB(zb0^ZZ)=?uD!f!`99?L#>Mo_NCM~n5rh^MUJ3V<_kDiiZ^baBr -tr6LTvVu_wSrwvQqQ&(v+##Y(SeHhC}kJZd6S)PO9tovmhWJ8b=HQJVH3(=t%E(3VfzHjeUb(@UL#J{ -CSKUIzu6^|eQ;_n#1WslXeBRv||j<#&5y?Yd=N|)D1A?nR~P029-!L9CjD&mL^E~5OAG{-AEG63r;_q -b6;C!`9#s{&+uVQ=J^S?7S+@HlK+nn}yb&JPc$U<74ztEM%O<}uFAVgD&dbJiiA78O=iC&>HZUc! -*50~TL#>}#oM}Rrc=VnaVzbYgb62aP#$D^y@WvQyf)#k5RhLTmD;r^1YP^0c-d-v(Oan%aRoNP&AyiP -kz#X%tgEGt*RRRE#S+!m9g!qE~9^YG%_~j*Axb#JXdNke4F{@r5exWCG?@jC>vxM-Mv*CW5I2Bc}XLOYO -)#YE*(&?nHID&#|d#^mBit%<`<{5!-}Yx4usGLpnLd1miSc1|C|1|F`G9?Qj@T5621CWMg*f@Xv3t^9*{iUrgXBzG{T5U5-upoi3MbN$A~n&{;DLPxy|*?Gu}XrTmoJkVGni|n~W -oepZi?!Kk;pn5IazR*UoJDPcIe2z8JvNEY#e>o)cXAmn1e9JR81=F_FYl@-}l&X6R@BnY9y%L*EK-HM -ET-&8?x?e=xYAZrQ|7KS^l2nnJ?6kS~RfAS}g_W%G*r?MXdjs|mAVk059brwRJ2rCU*1eMl9a+e*YXq -{aU6qU~_NEW?paG3zV8M;npth+zwi9J2khMqi?AR&%9Lt}wsE1>rq}Ix3YO9VZ=5fMTJWDQZ<9c&8-w -(-hj;4x40ZF?PoTZ|J(Rk?<=2U+=GM(6%w#ww>Xr_a!d+W9u>`J8x1%6KWVW49UKACdY%Hj<`zxm4i)Cx$*w{^~3Y*d`6B{#$l&dl5A+}lXXlYbJM!fOphB6_ -ybB?L(y(n~XSUe<6u>?l4#mAEVg#SCec4k-09qoK7`GJnU)tqFTL9qy->t9}mo1%u6YqSN2&{HKFm>XFgZW -DHo3#O`QNO%d9II{I_H9SR`-%(^+BMs%q&C<^Plb-j=)a3b{C^^4xb-tEXh&*7v0it8xYKig1r}s}Ox -Y#5zwxrPhpe#I8$tLO2pOY~X?Amp0la4K -jhIl2dzc&Bz3PSKDRp0=&&q?3lRT8S(mhPOWLANWmA194D-bvhTCM`OltmAjq``(pln=&osCB>|o*vzD6qP7#2DV;*BIU*GAD&Y?l{AU -l#u?o|>0sDwdIn^@r-B}yDM?C8YSzT+aKc3(S_8Q)tvreaf#eY!5o504JxmnckVY&3o(=Cr>SBArNKH -_N@NHXCVAt)BPV|uXdB)KAGj1?QaWk@vp_wAvJNyj8WZCZ7idwC0Hs$kv8$Ef#5VPjEuloW@NZ8?D{( -kY}()F@>|&2HQTrn+@Zz;k-9KE?fGdKR31WP`-mGoJV4X+-ucQyt!`^#n*`_GocYeSFJL=* -1)1S=O;1#TvbHL$a%`|3vzAJqp~~!&Y3oI4w8SAR*gGIgpg{O7XWDquLwv{k(NOgqp+sD?-Ow>*64(Z -qluDFC-O=}2AVxc5U6$`%DAcJy&xDz+Ql1u-LD-bpdr{_YQ_;Q4VxS{CvjxclK4mWf3t8L2g_9neD!w -VuVLgAv;ee|G13}O90Fa=!)`HmQwQz}`Kx+pU^EJBB$TnaqMD`%C!SEe*Ripv6lolHL7{4FNuC$f+B!e_nKBlay -Mi($3HQt5u)ObIR+wD;dEvCg~mgfO -VaA|NaUv_0~WN&gWWNCABY-wUIZDDR{W@U49E^v9x8)r$IXX|NvjO` -vfw#!f?B(bIll^`u^rayk)djLrAkfX$HrpioA5x~Q{FF-qNv^!#vh?8tKW@RxQ{Tts5b_P4_KrGjJGM -g97J@DAxw=eca@ZU>zwl3x(V;5pttiqhL_oB?=ut-Ga!>S9;*@vTp!;_0czql`0n8obi^yKpV=s!PRo -}OReOPDu!`t<4GAPuEtIbY^n@~i+HSTW};O=Q8ulueVAOO|9TWHG$TlS!#|865szCU;>9Ygi#@5Jpnz -;|g3oWH1%h-@|$-7Mv|}F-iGC`m}GdSc)9Rvqe}$bMrM7vl*aZz6xoca&DgFS`G%&Tr8N+^s9HUU7Ab -|?<2lM?DTLX7R#_OlcqA}z+|om5m_@7iR_N&MF6wsgTWvO!ZZy6w$HAd<1kC6To%sFV1UT+9A0ZI{TV -Ml&^tE>vT(tJz#9PjLw3!kB2C4L$854z)XQZU0Vlp;ho>I~!NKW=4{y&d4ui9|mzRg4E;Iyr33-tl+exNr8aGw+Y<3?BaB>4oeM{Bwaw0b1`$j*>#@#>sTba -}*s&y-W*KfTGMZg|C*0U*usX)3D$}w&E<~JO(HzYr$lSN|~-LNFZJyP@)1&MQ${7&;J*x-%Edw`MwXk -Cz3!JU=z+JxhPS^LCdU_Fa3Wqk%4x{5_L5=``_jFrzgQrhvyeZr^ql+1RumELEu4>O~uuC4}=tvJ{z& -QV)7f03U54M@BzJh+tTbwnWP004LkDtWh!!G0W`jr1z!*W@U;L!kwFA2TrSf!&b+4d7X -)X_E`b7k0s-Z~0Fkc|FGV3|;4FCV_ils8__T5#%+E)Y@WYA3zpnY7iF`pXXdZ|R2EZ1gRqT46*8~NA1 -$+RCs{;HD&X;`IoCr3jM6%D23(Y|@B6;C@isT*jKRYWYX%exwXGi*V#bD$Ev~~wTuGbh)tRYoG!vk$}ajr -LL%tEurndky&MH4zrDbtju)N1*gNHT&pq(v>5N;}@(i6jQSN7tkn9|8X)8;#g+B|3tPvsD6`5Q`xQIL -vO@T9i*ZkZ37wjZdz@#_LR6K!{QND`0AXUpsS>sgb*j<6f6q{1`cFDYzzp)th&BhsZlMs-$3(HfN$Rd -iBtbD0_>v%8XKEc)VtOV9-#f;lG2Lzh}Q55Z)kmBdugK7Q0MhnT?Sd?D_ -5-)cRp>x3#Klq0Hf0#~C+)ZSdqMVZFvj;M|VkwAUX8-SQ9*%GJ|89MN~tOQJs-<}-3KfJi~lMF~9yvE -&-PoH^FEXU8E$07oipmM?&`RsWG?YR_X9&!Bc&x=L61N(xzjb$(6A;%1J@TsaU&VXRjFmRKsTn?4F$u -d_HRJER!iwQ^sT>1*!nY2IwKd2xWQef8FPYZd<@4!OU3ZF42jIfw>a7mc1!nF+s6bUei$AE+*b-j{Hw -HUWGxB{G?Nk{ZMfty=!ih0h#Spf1HBK*Z{Lt;Th2`?e>9qt3>05Vj{W`Qt;&ycy~Q-Lh=$|L2%*ZPfD -2OkA^Xe|f0Fp~^HzcdLgROTQ6%VKI<8CaN{{s5VvSYhRLi+>9&!)hXsk#|r*#e^eFnum8JGz&zp_zW+ -Qq2y5rum%d5q=bsk274F+SKTS2K -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 -m<}l!5I@3EFdAmbqf}dSR+7d)Aj9 -M8jO2z{l4Le69hW)0!&=zJ$v|%zA(&1Q6YOQcH5ZCaPsCzUHi25OjhfSlnwNcHsH0#rW4-2!=g -vTZp_O$rlAI98t&!zk*8j*OwSbiB7HKFQYsK^tMSo@{!Z9C!&DyLT>8CAUZ83 -aTv@^LvNh<~9#Xc>&XIs{+0lD7383cyc>`Y=_=7I2cR+UFW8I{htoIM-u>j=&8?w9kVe{8P7L5pwf20oN|d&G^%5+Md*_3+u -6?mU)CE~{umgnLOA+lFB*e4#uWh{;Tb7D-^5@T<+UL&@0&FN!6^9x`4+zAhgqE0A4ZOvb&zRhj4!iu= -M^P{%c=UM(Bhtn+hinhuu*RbavM&)7@bps0)CUrGnTN>kft-JdptU?q(TyiBar!B+X?T@hy|Q%Y5dwQ -&u~w6t0~Dj@E3^_Il7vvGl2JWMSXQ`Xoxn?qwJ4yQLyyE4>kHz#-hkMLkh5x0mS$2aOIV@iu)zK+^8v -?)bRe3~j3FmNM|%V)5*T{Ru~S0lCSklOvfM#o|D}(V*VusPS!~=|eYGWx$}3TqDT7Xpc~U_`(PY<%C$ -fb_6 -A_lbAsChz8gxm43Iab6FTKMmv_J^%8P_RBkD|bwf1T{kUK!Tf59*@Qmj#o>)dV;BF8= -mQHwV1)tG+YX$IFSm^%YKRVk#eE}|U@45m89z(*Ov;!OMk@Vlm(#y>I;(qV@N&K*JgvtrK?Ft;eUYX^ -DrCAK2=YaHoFsMp)&{j{w!hupj;=iqL~Yq@tpW#Oh=%i1?FLmIX>|?^8<#vqA)Py&cmM^-|kb)ER4B`9B*xcSKFMu~&b(jNX;-bZ$6t -6uRoJTF9Yn_Gz^){+l%bLm@Q=9M#+ug*tTNq1VNp9g7?ufwv-%DoCsY`Ph@}Qt&NMRzgCFY084zKUc- -~hpC?sU2~q?$l?*F2HZPP^f*dV)6}(!)wx;L*9w;c)RcP)h>@6aWAK2mm&gW=RdEZ1J}v006O<0018V -003}la4%nWWo~3|axY|Qb98KJVlQoFbYWy+bYU)VdF?%aSKP>v|MMw25IgwvM>Z;Nf8$BJdX_@84)gD_mm!to}CmU -NETkLtcxUcf7>xRY82W)qHXP2E`bN2SWxh@NKQeHN9X~o&ga#>_)lb6L9I-PLNUL8K49Gy(Y&BunNMa -G`LIXXQ){PNxDo8uFF2<Lykrf4f6bc|z@_Z6tkhVGbb6Cs@tVDzysgI@8z;-fq -O6*lrL!5ETOH;pJdAh7+e5Z9-ogLu4he8#$^kT3A*v=-g?Jk4jS$DG$SV3^>Wt>c;Og>K -e0*NvN>sq+fK{*B5hQUlcoZYhi`_grr(n0e!=S@Yxu{8ewV%GX>|jDRJXi9k2M?vopSKV(&*EQ)RHX!QclL@BoPT<1(*!X4oLF*bB5UKW?LeA=vp+%$Z?X -joIi5NXDM8Sg4!2aDZuKFez0Sy&9*2U7`ona;+ck>3>+pO#le{&${zD=4@MiFd_KQQj41Ohx%(Iltgl -aG1m5Hl5|!YRVa)>1@f7Y`N%4P`B7(c>&X52X7C>)ZrNvNks3A{vgqwMUnPe}FW)4 -Sqvvm493Fk;JbZgRc{w>gp1e@p5uM{OlR`)zwya?lanqv|fL0_>!NAI5%8_B&Z=d}Rr(X-H0#G=Bxxc&SutU4iM-)KF00POY!= -ni`IDDV%B)jmY;82;(&z_9)9vz_GS;pEke6KED|f{!E*A&rk<7vaCwqqnoPL -4g26F --Ffy)&qJ=)$Ta$=%nn*U$32*XNT7Z%VAIaZG#kA;euaO(xv0w-Z+IO5^0q2(^NbT3$3mFZnqIFDj=uq -JBZ65#I(oJ6Xb;uGi^h2NyMMDad7Z-12LBfeVg6DbtX1>+uDOUKl&ayC{2QM(s=Znw+1#vCSAYFpXgy -As$wxS^i*%+}&E||%BLzVFywRRsXz-y+Umr+_-Zohf`)9lV@&7#ce~RY_aDJOM+$@p@NuipJz9gcb@M -gIfd7Owqiw+PP`w42Bnps>{Z{gwf8n#jKxpXCJIP$@(SB6b%-oyj@*?74Crsc79I)~qzQ?KK_mcZfnX -14%RllP~`2cT5D`a%^&5$WeY)KB;K;XmGP^DhRQKS%Ie1iwWCXoPBZ#xI#NDRxPPox${D`9$i6 -`K8u0_esmyj`lPe!Dv`k1+!*OulUUCwG-%N=+V_{H`Gg0Dcox}h@qh!y{gi@=Bw3lMG8f%3tl&hVzE& -AjT-#|*lgO6%8KnYQW;p7Zv;S4K*^^fYL@N ->`$T!g?_YVyLu1jikx3#1y-VIZ(slpq{0W?a#qP$PaE3I-brju{FTI2XOP0Luy%17tu123mEG8h_0>A -}Q@Q)c1?BVT%+DSTJt@L*;;wL)r89i3*VLIfBTYy+Gau!Vq70_`6i_UXLq2FK@vFKmdcT(JW0`j<)l; -qwVyJW^_b3+V1C$w%a|Lr5(^{yPr$RU81Dqi*_^OLpZBz_9K|>cnoV3vR0CC#*5ekKR~gwt*L4wj&H*^2%uEIEOQuKeUKaU}usxNOs0B)5k~J8iJIbC7QkxdTmsPfrGBB -`q*?te7biy)ft%kLmY_t6yF6e?~=?w$5kf4^uVyXl7h52jO`U{2|u>W=zwr>f(FPFk?kr%=%hq$5V@i -#E}-=NP?h)c69cbr|Px10pc^tuGK5S^6UL-a3^vl9M=ezG-VBYX>8V501zDsOnfq+%=O*u}D8puXPJ> -@IJv$syX5<*arf?BIHX3`}p!JagXc0+^4y)<6*)jyB7i2Bwl`C8^C;ADmU1W#|m5;8^1+x=zJ9z#!;2 -VFkZaG^cGX*b7_eKX>gvf$E0fM5AfBoMlDS0CvzUE$&&p;8WP2Q^~-#_~>!btQH({<95T)+(WbQcD!% -_*==@1ZFVEU0qO}dG%A^=r^mY_?tsgGq85?b&kEsaj|Ge*(H7mO_+A)H;+fU0)q0`Kqdm`_inQ}9v0H -^qE7e|@S9_MFCEjF~wY3*AzM>mtaqZdGmw0y#7Fa?S*q&pKiMOdR$@YwKW{yG$!|aqt~n)*=^3!Nh@~a6Nm>8MlTMZADm8Xhlyvm`kot?55TaLvg{-XM=h3VXE)PxC)f4KsrAZ -sx43?cK8L66uC(2l>-aj>b#t|Nss+XNm~=RgI@vymkoG*-E(D_1>ASbDCN|0J(b3H?c{O=GIXXR2hd^ -veM1245=nw%WGY&jF6v%emU{*sRVzCHT=`1}jwGr -(Iux~+qQTbsl9V5l_aA(~5c`H7GB$*44z^07GiQ1L_0$;7_;QqyzlCRmF+=5hnhMnvEVw2unjD0+P^}3!S_fmh&=`M{rc&Uy5p~;FWa}hGp<_V?=aD)>?#LUUc4L4@*6IJ+vE2 -n4IUY9;Q}Wh2cN^pI9s(O4?yr*B@oVOcq)3DPv=Fm#2BWRxBm^gE@?S%Y@>hH*qCd673s64!ioIV2M7 -qvK}CnWLeEsQd -FTk()OZ?*JJ7!gJj!dPwF2ETewjVdk{SJ(ABB81xZ-Xz#|-?X)FY=)xQq(_ffOK)DnzpWkbvOtPdL^M -k0>~K{pUQKuB?N$L{gaRQE0u0CabG3_P76*Re?%J~Qq)pcx+kI^$ -oYp}s&}|_Rux@06ZUZfb@kbIK|1rlZp0!aD4aT$bj#u%ZJy**GpgBk#7 -S=VOUIr2!~6zJ-l&ttKE`y!Aw$9AJhCQ@+$spn=c){OJoIVf6d3IkhrV`hm-?ZSXKq -soECWTUyRsI{a;OR6|H&S8t^eV9IWJR=Xxc%*Td)hFGfweD#q)JP{#ux1nlDprwH8)xM%7l5D$lN|$l -7O?^jI~~nbF2nuyW%yptdDK>I7N+fGPKK1*{&F#%&dQqGDv9ZC>j;mSs8G$Fsm|*wn5!50D|N82?%AR -80H`zV_#G(^)VbMETkN}QUeI)acodT>eEsHX8Qtd693pCf-2OP%bpBalHU#D~^U>5)(1?^| -ok!?t#+k8(}36m)gbKKcobSq^|&p5~hh{5(4cHZEoMqTn!1>ulCJ39wtE$_ZADUQvZcw?TQqT&o}uZS -&F;L(DCveMO8c7PeoRj8qC@v=I#+9Mp+UhV_bwEA#p5dj#&cI;~~T_0nn7yz=$y9lIRjgE7yoHcBFzI -2P95YUq-bQG`(ZAUo*~fn?^CFg8*Oxi -{c&H$TK5?iUW89MMs10w-$Ewi5)e^rL>mT}emU)2BCgX?0b*65xb4VLb$e0{RtOp;H0Fm7Brc%aIdnsPxvul8g5w(kE -nkf_s0nb=P`#CXtO=EX(}&muoDHyvd}+_^8w^sT#G9i!+bQj -3=Aol*w|hN^AgQMJQ*#tJRM5Lh}rk~TH1B+5rPaT@)-N(GLaktWebtbg|{UhA|>h2hdGOBN?!|iy(SA --BG)$vi;o6xOkjp|IbXMh35CJo1gX&&o5TTmBgiDV{Osnu&o(EJFi{P)8{Dl+2*K&y(Bw|=A{4v8O3! -7lgAN$tInc8zN#jP_zVX;?{1D5~o=_ZzJv7>PgC~W)og5%%Ig=7mG~x#7d}XLIR#w@vY*qKSYDG?U16Vek8d;78F3?xU(JpY(`HgXasLM<-CR8M`*S5Vz3#w?6Q9B#RB= -!zKazUd3pH$^+cpnRveqx>P~J*ZZaelWnBNM#b@@SwPQKfT(b_!f^32vfPn;wNCXHRa2+%akWD$vl#= -=Y0*2`*_NY(GAW421iYTk;Uzie(UZ9BJM2dKVPah=xCWjJU;@}E6`rDd`66_ -?^3v|oMh+1j49w90HuJ@Tk4aacWtl}{YiNR92@%J@tw-LSIRLl@0m3Y)^AK?KRwLw9?0nWJltU^|z>J -ITL25>Hz<>G&fJt)9c9wQQ^HJ~@`k9s#hvq1kQ1Zn0AkyHPFbO_=bkRm0#oa0JoLJli=R1eYG#Z*(k5 -kH2F5b$PHlV{?n8uWhv62S(PrnT~b2pK-Kl6Y^v|r^7$LbUk}HhQiEY*tBTIXo3m=_?+%uNVyibWcj7 -p@FhdF2le4^RiGAV5i*D}d$1F1i@ksUp4HbFWUjRoZeovOi8guK?l2m@Oko^DC0So$$m9Va_JEL{5hiK^H6&Lra5J7u|34|rV{3VshD89rF?g=4jOkpyjEjonH&RtOAHX~9kyt*0~ErGET6e -dQ_71^}K_)flrQ^o^E7`8*3c@9%(W>JBh*QddmspwwYZB}78$I^w5<4uqIjk$yr` -S|nHA*+tU_giF4^_{0#32fJpTw#sA-&!`Iza<7Q3;QdxNm|ajo-AM(ia!lq~1ky0M>6Gz{buwU|2=nM -JA;gZI_~)d`_C@#rcv-D_jAeVpP8Uc0nailM7TqAM;q89-j^nW@~OOVqU6*m+FtnEH0x8>@zdj^FoME -vyU!j<*#)NNMJpseEG+j}B}9F(sFD?`~sDAwhQo%B^Kb -8m@KT`lSN!$Kbr{Z3ICvH^IrvAqmL%*h_Q@)Kls2$E`vdfr>7nzHVxlpVAZR(@GojQ);?K(uq;+YAvD -m^NwOCt6H0_=_S>*db)?yO7`6C)^0w7MI{)#*g@USNgwMx(tG(j)S>@o)dpwoG?&8fzEpFt2RUz9n=A -IuPUrsF>DWIDD`86~Z}oD&Ti2?WZ{5tX&*O@ne;8M+C%lyJ2O1j%Ce1RHVo6yjQkAhE`O&ivSU(kN70 -EkK%%9PQ&Qs9po-)d8qYQC1Z0!+NtC+2#W5LY5fKF&%+lS3GL6Dh6KR4gvtRH7F7D4P|!94uXu?l4=q33AQI5B`wY7$<-j2b9sntr9Nsl9)IwbcK3PG;@-2#GOe8o@e^@ -y#u`Ev=O(V9dN|ewuUxX4K4vTUIeD8g2w;&q-ONL|EBZ`v8fW$Y?5TG%6^J5$K(`VWhPNeEBoyADZ?bM!-E!!nDy(~8R_tbV|IXP_bDyPb-b~#%x9%?F<5dY -7~n>7 -vZl*9WK1zn&bovO)j)L-s}d!x;WMc=~Hq#sbOM)&6XI^!tO+U(RFsOEMmvKUEJ0fBJQV;%A^C#`3 -dmx^lXtIQ9~^(*G3xlIo#F2Gv;X|0Fl^6G)esSHznUCPjt@@XAeblyQw4~8czW*dMUXNZ(-m5``1*Wf$q`|@@6lNJGOqf0_3Tz?AEMm$ -^VagD(Y*NeW2t#sg4N2w~leZH<`sn%h25nI(7_(?~H38OOLYMyQVwuk}^Ji!@IV8U|&6MUrd~F`vx%f -SxWO)nF#f#g#DhoP9)HF`MKRP{lpL~1p>X25twa9^j9C6q78N#C5tF9Qt-ZDd*13Eaz2OI8UaaC)Jgt -|yZOOkq40xc3+utc?DQKBmO3V&4O9&G>i>7g=FIh5U*NV|Fcyw5FJ9ea^o`~m+%UK}i}&11)kssb6kb!!W^uyPh%aWLW2hU)Q9KYgzH9X_?l7BYKvxhQ?7iO5-{>^t1ga+0LbWgHU&VlVPv{RB -6YM=w+h$9UM)ghDtfx?>9(K;64gZnAGtPwUuD__GB}(eS;Mn~`NDC+X1vB`-kT1dWp7h|QoZ&hg$m^} -jmM0Y_+?^4?Tj!vz6bzHAo&s?gT>SlPmgZq`%>)}|ZSv};23ayq5kI+X2T@=`VwlS_dr5l8q#e07%=T -~I`1T1k17=@qPD&oXz(HFfx@&oBsnS?|)PHBP@k)TmfOks1LJ=b)_0x}6xvYMl3$o8Izx+s~9UKyY^TH><_U6AMkib}wA4n?Y~dW$5t-s1YhHt2k9-6kNiPMxMUqIJ2frd-y@irdwwN&R -Y(sjU}>%6VJ;J}HHAX3f;#9Z1BcL}{&dVsyNbm4fwkRikl7r^wnO){!9ib#-rxul=&6(&xxCSAx%OP< -g$f&z^|)F;9>os{iPBJQ{OBrqcC$`8qq>291X6A_* -w}FQ(CmYu*-=Ah`>YhZ&Ti-oYH%h`TE&%{{_y}(Zi&K`>5OiIWsuqAEqnI6-*V!s`cCA;xhB=1L}S{cNHQLm*XQ77BL~%kc<c?rhY4__bn7}=#*qE=sZ-HgLyySLJe46lA&2bi=?db&wGnTr3Ss00TAh^brf%<;hAAF6<~j$T-jzK -vqvx!$sA{TrhZgn08438K3fO0pA5zrzple8V3)dd%;TqCeE2Qnbhx2=B22a&;m2x&&Nu -IA=%b83u*LL8e0*z#h29U<}o^!LK^Wi*Cfq!ozThh9hS!Z -Raa>3FG3L-}thY~zYU}LBmT;6L*|$C!9Lr~b;+d@0Hx`flfWAy@J6y5Q(IR}Vk=mb`_&|_F2=l7T8M7 ->aQB)!B@BveRNs^)9cRrNWO^Y4`yAKz-*%9O#8KxQmTg~q6r8O_R9Wwn0_ap5B$h3zDzrH67G-orm<| -})yo+dTRu$Fm>ITd=B4`r^EHRDcLlEDp@*1C7QEcAEL`h6CL2KvL;vFJzgEvUZs&R!lAqy}d(sIdAv; -oRqYY5BzB;sY&#jNjrvcv%rr?-9{x?@7Ifry2$f2GHYX{lX}Ucj`M?9iEvjhM(A;E-MU}0Fz)g8`3v| -@zx2|a-E&??-djFF7zuiq@V=jlCVdQUM2oa -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 -lqI{0@*ajWP(2~r! -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 -8r=~Kf^%VM}Fm -!eSMC7N7Beh3+Izd(6=j2clkW^WNTQefd#NgNQbwsLJrUKF5P`x@(vQVs9sYplH{5m+TeWt`%zsrjww -qC3oRJkox@bX-_?(udr69c)l*ep!O)}qzr4Uf0@5BDWfH9uTphfD?p;1FAc)hy81 -eb+-29{v;Ld=5}d*9`oY|F)tn4M-}tR|tmzwwxXru4a>bj~pX8o*Y68;U6n`LYf6Bi&@!D_~9YHr@cU -W<+t>{;OEA4@iCe~Z2>xjCigWORN3(4N0Q7FsUF1#7hU9s+Q#tuASmLAre#~L~j_sBzV_X~YOPTIP=> -BiY@!^jzS);4m5-Hf?Xs+32EhbyjDRdUT#REW*t4Sr}8N&L|0P;xx>+;r6rJ4cbc#-`!UHP6$5vq$>F -pD3YOBKdESkDr@EJwF_2+`j+w9B}9fTA!>0E`0yz&N-|>1+GWGeBqC73+1-e79yH6J;m3!dOP`LvzvT -HMT#{920^-#MOG=?_D-(ph7pr4Lr&8HlD3E7@cXBXDt^Q2PqiR-5m0#4K)k6bl+hVq#q|P<=6j1sG~Y -Jh(QHWkJNcLWI>CGa6?OnkBYbX(k;w0yo7uhZ7AEApT4g*T$LCA3F0fJM92&;*woaqn)5?2`TKC)@9- -wYEZlhMGj!G)%)(3cGwrBk{Zm&4x1Gq!T@oYT60&C-Vz|h+)AHH$B=X3~80r8>^bxK$5Y`t2}SBkB3cw7uvwICmx*{I>!r=F6!|YqML4ShanI5 -((d_4Cgosb=1(rI@@(ftfMp8k$=E2;khP)h>@6aWAK2mm&gW=Zv!kPN)4000170RS5S003}la4%nWWo -~3|axY|Qb98KJVlQ+vGA?C!W$e9sU=&5RINb9{(n%)i0TK-Fh(VE{q60`A0u#uDAOr_uX2@a!t{BIWR -SeyLy95$@M$>6#)xCOmy;pZ-(OrD(E~_H=0B0CXz$XtEqp%v?s5NxdATb#rq`z~jdnO5r>%HIa_x<&u ->8`Fi^*VLx)Hzk>)Rg_~LB_-|j2Zq^m0@-<+CK;L@Bb0_%N+MgCi7zII~VUVEPUtU8@;!$$z5H0*KM^ -o|04I6oA12yE19~tPjgC7Jg^}CckIcF7R-lt`MSIXZu% -awU>STF+hlTz2x>=yjWhmtu80SEHorB-Y=JU;&E+^(U5LPW0+UqS*CW$f7^!S^3!a$Ms%smFcpQC{SB5dNFc+r2`zh#)27?@&Uo^<^HG9NTB@3Rb3e -~4j5{}|H0K5uNGoesl=!LQ_RUC+b2X_ww0?5lY&OfJK$xUzQT&HT-fG)eFKWcb@N7!K-nT&aOE`>w_FL#eG>?g3FtG!oiR)Qz0(oaFN5Am}v1C)NJOUgOS -U6ZSRo!6oxqvftutp)?-tHCA}_gPf{qeh;c0@ccjxCfe=6HWsH(j?W|ywW5H5`>}2!9!Qv^s%6oFl@+ -vGr?3nEFI-ts+v)872SB!!(q`F?Iu9JKTwb%~WTeyeAF!LSEVv?(>s?X?AgLSaK`_qgc6<*i_7#Yj5Gl$eq5V%3$65r=F7Q -*!&igGxn(531vosAK>hnJ-j&c -NN$7Bq`55i&$ai-6lAy*)0De?!16EDS01wa_ao^;8p*>${%RhCG(bnx_+*s9ctt#k~honM9wD{&xp`K -Q6Bb4tV9p@-sg2l7c>Sao1jck4SNl2)%58+cv?JaA*R!ow!6N`Egijtk3mCNbSy5&wa+X_Q2Uds54J_ -FPTN!#ahG-dDhiJ5)`T!Z6WV-w5tZ_YQyHdMw|vy -7^bq4=H#`UEaddQP2oQ51u`nGc0=M+kBf|)LFr%O^CrsErUIC+TRrN6#FeBAMyAD_*Fm%W5wby<-)V_ -n@`0AfDwr7161%j-Rpb>dF^?vCwM2urZm5H4DbBkI`K+2f6Y2us9LzD<&yV!6E^;s((HaN|769v2KcHlA#1;y4BSAk*>-ZJa0pwa)DK@h;;_UH0< -1%5KEmR}U8t-id2=3vKi?{*E7OJd~l1-;7O=tDw+zv>71d^|XWNv42WhGWW0c&>aHS-q%tdy)|Vq{S~ -GR<@fzyVkwveP0>0q#=0jFNFfN1kaQFGQA*ZHBJbh%?6XW?!z7WVb2ayOuy3AbcAPyOI} -NZB&L}ZAa4d+S0{lqh8&Y(hh{w_{tvSUTzof{RX_$1(W(x_>m?9d8N45BvUOL=@7ZH(vYUp~pUL1Y^=H!flp_27+HVx2d@?>9ew -wZ0G!A)rFwk`lt4L<@d)yu$>y4g65}ZuuvMppgWaaeVP3pznx}N -UDwx7VuG1Fjn}I4&x=>;~n}aucmeTjLWs*`b}zLxOxzO_J}}emW#cXukZoR^B;f@209Q`Zs~D+ -lbO&UDbS9X3>7?%Z?EGkoru1TX|V|CT@{Z#4zV)LA@0iwmKuQ}np$e?M}+SD@S&L8DbotRmmmd>;}oP -L`2Ae_WlAtX7bN6BLf{xA>^&4S?KcH6pC`y)&AQ2M7`w#4dbfRrxLyeDQ7I9rluXne9rQ{2avVV1ZV% -aKMiw>2LtX_UcsrU0y|!l{O$)|Tk*EpQXrIM<@M~DO$7BO}s8U_KEhJa5_D`T9dy9}o{*uKoEzEG>jK -l>&TS)m8KnNDP6v4{(F$_e(EG>MPtR8|(91A%!$Qqh62XZP0U}df;unW1QI#HajFX-%ad9g9%!Qpi2S -GK@PVRe_2)l_(}O3wBcC$7&bNu{j5oxBS9Be)9h2T{B-BCB-85m;a+!-xSAeZ#AzDdeeP0N$+RdFvTm -=ByyUkfC(7wn)i97-r~43OR&O3@ksi7+6Va;;(=vz+W)U#6ql@5pqZh=m@^CWbsH4%Tyetn=hioe~dTF5yb=xovXj03vt%Q0;+JS&r -)5Gv>~U6;WNrfI+TIz>uJErZjg@vfiKY)vO^`SoSYa10OXHDaqKJ%Qo*vS2RmBjtDV_lHj>iDBzv^3KH!)3C_G0DV;|X<~D(Tg` -R>b_WoX7|W^~E{3cw^2EhRyq1Pi4IV(87BQ6T(z5jDpgp&TYsVGR3UeA(Skz6bnjeOa(t{Pn#6OSDS~wf181tjb%;eV{#DbET%3bo1eUfOR -{#ztv^+lvpgln?dW4KjB%qBnRYsC8fpLh1x4{YyU@3kq*Qc%OyaRd?DBPEpoH7_SRZZZ|rrw-2JaYgh -!o@vXKxYv#(&7%Qu=0vkY~y{7--pUS8KL*L6k%0A;W0s=Z09>tgtEF9So{WIJsCaBZp_?g2$1tfa^h3 -`FwxD(Sm0+1|R&C`ath-gV1>>%?Fw0d>C8MMC*;W$RZsVOAQPvHaG{oxMt)o4l0=AQ-zutm|d?@p4&A -b;cSE(7gpJuq0U?Na!Wo;@gBh%^=mO -!r303rPF#ZiD-$IYNoX$+to&64LKZ)%K*$lUprvzAx*H3Bag;)NioHV^S5amUXQCEUteMC}LAaqEX`^2; ->rdgYwIQDhq|-k4tr|hx``hX&}z-c@~Fomxo-IucLgF80+JQ%Ll_}lH~p3r{lt(CYvmeAd6FyUS`ZiO -m|V}LU~llr^xPP&HFTcH*ZZ#pl>F2GR73YMEelU{E28Oq({S5z -^xfYfe}aGTF!^F6@aSjZ%>`SZ-t2`Epc$TzTZYyO8)Raf_36F*Zvib&6*$QHjC7ycr-yZ9P&J&eX7`@ -uCKwL{SU%A71|rxi>xD&glK{fUz}j{ugQO=D=Zry||()`V@Xv#bhCtA -2#g`pG|_Af}?$eiAWzWgJ@cb!VZ2+!d3MLB)OAmIyLph1}(dCiDjE8SZRq`;aKi%V%s --joz)ix3PTY)7VWRrKKbXQJ_s~H`#d^<$ -_D5<4zGE3g#2{NH|!eR?|7|!tSP@-`zi^Cc5iP)tWV17Ob!?q=|h7K1u8|3Lnw__vrn1>x^fdE_!|+3 -rebvg;>uZEO^BCRFDd@$QAvS9%LCNy+tYRF0qLG3^$nxv2Hm=LNM5F(tauK$#qVrk~1Cn_f%!5TrwIJ -PZx1~2TiCM4P2(i!k}D7JGvS>IzCn73n}Iv@WrK7$qkjlU8b?;Qe$2-4Slx(mgU-*9p9^^X>m388UW-UqR90Tvg9f@x2HgeIiB-97_IS}TBg>?- ->ia+)OE73Py*)ljBynF-;BT^NJA{KAQs(1?XkVm&pfrm?-mWRUnv|M5int5fGo^G;$n*!rTjzce_kKh)fO7}Y^f|$28#sMSB=)z}qCqBn?;By+ -mXJI=$Yc^+Ft@z3?)7O|b8kuyQz9zKN*A?%>>#+xtSOAfo%+_8G-{!3he8UQ`)q?R<^=(Nig){^Fw*? -co_5uc5k~-m;YGy($NnM#m^q__A#7Kcw$g-u822np&vsdE)IG_kX>Ql23xuEB)!kw$f4mlv`#f`>71O -VO-FbxRf#j>?sN|20K!Yi@zShvJR7BRNN7kS(W#hlw?dqi%j2Gc7`vIDBF1X@OT^eZ{ -vvW;Qev`Po`ifOdNZ(_R}FwuCBt@1EbBEWsjsFQaHjPdwS6Glfg(?heJ|%f3emxPHob!98-W9ye>8k^ -J40fuoO|FuP$J(Xl3dQ;jl7Vg^GizkxgyEouMkNZe=&&KTwsd<*?Wu&yv^W9#}H%UTh?d<-szu2U&G} -n;@|>*q4AFBvlOfo!J?1SL?ah?kn*Hn@n3zwM8&s^=`GOzC~DARU5pXn{k2TRNU-jIR6v4iIBTo8<&Dve9UKZd!K|sCq?u0)sG9{p03!O+z$jJSSSdIEJ@zyAcvc*F440H> -0)ylGy|3mrO3y6chTg<1CypK*=AYZFVZFm*}Vt1)UF0)AM&C(2MJu9srEtOiS?&7n0wACBizr*3zXF(+}Ojeg -7K?cEMoi!3fT;c0Y<@{k;Z1}L}qW{``KvB?=!k2n7vWZy;JCpf(*$f~KOJe31!oG=V3Aiw<@3euGS(c -6_#2|!epwX8F@Lk-e$i~TG=yx}&gQ-kCuEoY^1((=*b4OTV2{G=mAw~+f_Dn?|AmYG8m+eRSgY|R25t -1FKh101m7D_6lP3`$^1Iaz2&@%$;|SB!6AknRHdV71KwsVhj?n8ulcfhp%SeoeWP6llY3#^7;$KGKTM -$KS{2j)VBz{WflnZhj<2U%?LgdVD{91@_U`Qz82L%WLp@?14b%Ib`7GV3}D8;+AR)tq+-}6d;&3zgG& -jV*n^6i0zWgtPn%n(vjeoK1PmdOfpED?b6sJkgqiW5{uqx&viI_WxdO7?<^zDimD=yg!OmNMZi4WJ|l -U9o}7VJHjt54>k8DgEV|>gK|6ObRjF;~Yh!H=Idoo!1m3 -Vr{x=dfjQW!AvI}aOia9;z}=flGorZO{pHZRYL!H>#uMyE7fUuNF*2MS*2BZ)*$@lx0Sm+lx(hc_S)WXNw*S^z=4nIL?}69 -L1*X6t(Y$&mvyd`GB8-V944>)dDY^0J^K2SL$@#FHLPtKmg$j`o1H47Gs@tvtf=&5$cxOT_iUCK4n-)EJaoieB&vA_Y)CqE -!q6;x^ngw{JY&6AxmxfN;^-mR}w89q-=9^8cIqFNK&vaLbxsw1M(k_` -9*V`IhU&H@RgF@;uxb;p7TfqL--I7%%PvUB?13c-w2hUd(05HFFu}WgKJtD25M -Z`^pDUe8&APKxPDrHTM*mlObjo!tpk!kA)7|_LGT31?utUsH-jNYOA_Bi_FqAjw%WR-H?pCa2GF90mZ -QL@i?wyEl&WvC{|C*+fI7)B}*Ns$bxiwAucr -)3RC@=;3Ex1FmZ+~3MzdYlB^$WUSniG6MBhPi$0zzuGg=+}saxVO#lquu1nByDs1uXpLxb=2Wv2nA;x3ay*4^h_EsC_2^<5CY+#W#sqvLCqyMry~RAo9O}XNwUC97@xc8aL^?3b!f -T} -DAdoZe!JP87YcLnspTZ)p=7HlqJ<3_i~d+p5-vkCxqIUsFMF+3{en7w%oC#OI$M)jcBVz&3yo)ilo#( -I`l^P{{NBHL$aHCcQN-KNOKSR5T+uJ<6yBJZ66w#<@0BMMM6w1pf6Nef|!I6rQeY%PUglhgV~+=UnGE -DRSwX-=Kii0k__Tr||9a;sEzFmR0bs?+=^d>lo|;(e*=xK!6Feq)BP{cP<5vgJw;eN*_a;A570EoLLX -hA1gTJ))I|QSl-Qs*Vdu1l`mSHZ9D~ -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 -sawOl`i30$g43tCG4rNjP9NW8pgf!Cbv -hz&%gm8gUtIJ=?Oh9m0uRw_X}oItKyKk?&7PVOB3cc-gtEqDBv4Xn}*3;0-nvhKw-s(H)d> -y2NmwJ-lWtI!%ZLX+j3w+_C!7qQAyv6^O`>xt&&{P9?^mGj>5LSw^X(B2Fa}Ys9)(8vnd6V`+_KLQ07 -trC{JR1SZHS&Be)=rYVz-yIu3th*J+_{;)7`1sktF(=2KH_OjNA=D<**z9HXUctr!+fAIfdI(JjE=w8Te++s@Q2A6>^|So -LWV~>1 -)VM^whKUEe0`a5W404;WpM3#+MadZ;GFp!cilieCk;!I8B2)fpAd4@(4W5{Q{4hyo -bBRWL1g2-MN9xdso*nC{{Rf?YnV3V+AlR&Dcb@R~HtQdw>vHM}RUsn|T$52_d(fEa*TJzZ5|KuwV%&1 -`-NEOQn(=5P6ggdA78Xm1arRIiTBsfMOg%ZR{P(^gWz@7n;jZh{jDHE1qDv$(^7;HPl#CRO)JS(0f#@ -VVO$E(_Lh7@X6vmkSR}{Z(g4+4{0>22JWShVu5vkv5S;`tINHDDK$BwCdW@M>W$}FbXc@wHIH0}BpD1 -oIlvmDow|g*NS~ebxt~4>eZEbfuhA#kW{?>m9FPY-!S9FR8|W;b)PIs7$4ekszk55RFnpREcn(i|R;) -gUlkwVgDhoPVt)n2x&hYTX!tF6hWnDJ_4f{{jTz-PspbKoyYJIU15Ce-@?Nz2<^p%CC` -Q{q{$Hmt%v@Wy^f(%u6zo7iZu3158JyELbLl#c+q0M3Q{Q>a0 -m3MU5A|=1M8B8Qsdl-2J(bN6icDSPGCqL>u6?kz$zQZ3o5Y4vNVg6vI0ZlhG)!0H{MG -x%~AaG4azy!txVJOVOsx#0B0&^VA^1v(Y_?usQmCB5a8M3BnCDjMFRn+eDHvDnq#b%p_s5*kaZOS>Dt -u?Z&p)`?%n${t|nr?M?J&5F^vEzax~!?Rhg;%pTNeAvzn9q#f9^=v2MfO9vNA^kTDVu@nc~xgma@0L%7K_bG -k6L{#S;nLJq7udfxg(-qipz(?%h#(IB2e2=pJ)Ar>LTO3q(`@7p>5EPUU^`KRMs;QUwOdp+mB6yHlZ| -5!Xl*@5(MF&*1r0B4wsdugwWTzUiD!)OX1-Bt4A0fF@4Xd1c0I##)7mB2aw*u+p!5>>%$_1VUt)YHzZcCt%T1qjDM)y%SrayDsEVgmA&ENR!1!x`R_uE}C7|gS=kGJ4ACQo~Wo0tjtYV~0pDmP&Py@`j(Mgj4_Qr -$M4ej2PALjhnJ8ZuKi83wq2P)#Ha69Mqy1c0W>5jU=08ViiDO;%2dExG}#OG(f)WVg$uW)SVBYIP$9xYrpeh|ql2qv)(Upexrxc5URNlkqBv6^UNE$O3dLie_VHW2?Cb3 -XM2?6X@{W%565$_}jQ&@1!d8?feEYb|-(O7`qD;a==SBt-fAEh1PgfzxY-9$e`ol3Ne7GW|_X^)xBiZ -0!>2yIjE9a3AwzbMh+lFp*J|I1*PPE97Sg(B`{8lc4)Pwp*%t(dcrt|IDebwMdC4wEo{_cJTF&}Iz3a -z3+Zuc2N-yQ@>e9EI!g;>0BFsl_=F+#XKoX2(W2-$c?xKFW3t948Yo{u6S9qkGA*E?xe8ri$Zn9^nUN@L(3G#9Q@Axe1ka5>{0PHBsbN*Pojv?&>r`731F?MIimJmsVZb>8 -q4>2ZxT0iqXc*Mau4=^HhFwiQXJ5D0C&Ti&6e;&)|tC7y@1B@SE@T6Jinzh4{hccbm-fSWq}?b{7Jb)q~f5ejMOr~1aG5#qtM^v(-R -}wRA$39dZ+ly^-g^cYd3YBhc$6Gaw3Kwrta89u@nM;r)XTIOjr0OQzI1v{2_jr9NbJ>j`OAIV6^tT9~ -7K5MxC&Dnf^LjygYb=%fT#KcUqh9{zkpX)7`XidATs5$6dQdP(FJG*K -O;3Q44-fwoy}X>Pz41a?cX!_at^4@lM9J-kFQ|2wABk(-du|+b(SpZKo-Eh*uU%Ux2Ko#_YIi;E#u$W -jbb=e*?Icxk+e=zE?a5!IjO>C6J_ei-$N4>jP -m#?`?|j-yyz#c6b23S*>s6t3w0v?LQyipB~b{niF8;_Cr4n-^u0Y;Ttgh58c@jG;6-U;vc~8sY7x6R+ -kULFFlLk$8KZ!k?LBONV}<4+@oE4BPFA@U1A<^%Ye)@%%En~lf?B_laMDnvI=vP{$m86U3f9RG7HD!E -2WTeJZcblJ{q5DeNLUDumreucR(F7|bGT=ow$rY>|_7qt83^8O0zKkc>_Lkaj8p1Rb -USrlS$Dk{NiwztWQf#5YS2jky(yOwfi;Y0Cn9ABln@IT_;=rOM>Dh$TI@fb##Rro -;s8#il}D+_-U|8BzXv4uN~`gah&GYenD?-cmPtw(k3N*}8pu9P;eR8p{mi}9m+#WH%}R22~mH>0&I;M -zJ99W8aGIs2jYt9RQ)VQ*ssz8Na3qM>k}}@h?g-fN%dnj%Tyq& -Wy`B0>NKp7TtuNTNV#Ks+>DZWH*Pn&ST3`c+d^(BMgCTvKz06O{590!`sw -_N^gl=;FC^Vxfd1fweo|!5nmnf$eDgUAgxKB^_oKo>x4s4)RHQ0{LMdz}TqW -W1k@u#u1m*Pp(IC|%SC0JsppD|uA%biLF+Pp(IpcBxCLs3wMhR&yz8*iEe9XcSK#J<1?@)fj=EHq)k% -v63};22-X?FqR6_!1&}v`%I;B}4bL&Z#N=JykM@R|hdc0wh&fN}_IH8jwAu*~lQqFoQLkN&Pt4>SYKE -+)FhKaGbXtb9)NLAPE8m{<eVdUZm?WWBuIRu0^!heixBX+fLAkD`z{XoarUcnii0SW6k6gG5Et}l#{D}Kd%;73`yCr9r`T?4JHu -E!FQT55*7rz&8lsc_rWZdXh?o0se$Is^K$d=W~+CJfM(80PAkWf(u -rl?zZJv|dv*SAs4%b*2Bzxfc&@x8lnm7MyPs(N!ik2^WQlG9Rh)B1J?-EKwOt&LgI#?{UD;i1;t=KB_ -)BGyvk4M9P^4DyeU;;#K`y=wMBC?LMF%|ae-Aul3;RM(5wsgk7>x)yoyDAH#j=l(&7uQJfhU+2~!)oGmr@B_n<;{ -$CuM(v%|>{i6hA~WdyN~)VocnM-{-B8o}5WgHTjb0m@aF$^`=m-9ngLoJQDS*Z{MB`TnAeFky`(xCEA -P<*77iryrfF+Z)uQ#=?soK|T+Sg3&>#y3EL;HF{`zqGHexrSrYF~cs>!v~+CX85v5rD3FAL^qaZ}j3l -H_(OSnoz|xs5oMLiiec!7-0P7(MBorLoJSKNgG!|-b*|r6J5ydh1BFGt3h>Tz}q6uW&|iio<3mU#xl6 -|@b!ymZ#N0>faFYv@8b{Xs6p654r^i6GmzNu?x|EV^&CCJion{4el^}30l=dk^_Jp$E5U&~>YYhHI<$ -|e^n(uRQLzvq7){f_~Bw90x}?^6n4@8-u{%g1!op5VhhfOmL$wrbF%|@5JGL$rVviZt@_O2{9 -#<-=`?hyM{( -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 -lyni_8)SmmLy@AvF -x!+AZMhdo6KntkG@-mwAQI<0rhE?TZ4Kx1`0(gsQ2LjqZ-t?BD|IVF8+7NS-Og -oydcX~z~9qDL_IUCx7InhN|-GLD5)ES9lvo)NGPZd)lrg;aKFVZ!H5mt%2DGYywFR8kKPC+4yeDO@ez -U}L0(6vyRtxwNy;j>b?I^Gv#<_=I@X&dWjjHG55dE`$tKmHym`Rg;9)!=?;fJ_^bPbbAP?XK8r@?Ve8 -+sLfmZKx#dduD)DUagjwc%J!DE64>p*p&WOA9?zxS>>(HzmOH=ov{H{kVl_Rl>G727qo&bdnRtBw=19 -C(_{7S$3AsFo#@jrB0oK_FIxupWhhzIUlWIY_~?RtNTz*wx12mTX+R&6p$}J=ldC3aMw8}4^u#G$AA0 -DFS-iEKp*rmdG87wD)-JK+yKO&ae#k!^@7O1k68o`>yXRUQZn;xNTOd9|{1r%9DIlsCl9gHFW%QoLjZ -;8yY+}?hi~JT@iI-nGS#g#sWQwyV37q`a_St07e)@Yb%%*>!=|Ga~?3GgDSAP5ikG$v3o$ryi?c9%f< -WUbk%_HwmAjXk%f5z{}&gmX`U;jBF);#oQG%Vf~H!ObfT)#)&%>z909(&{eqDNjgG8Ek-kJ?X5J2d-x -%|QAb5CgsPq`_W!FV%-WPk80YK`i8sP%8J5pKXJ99~&m-YRzd8*s%W_JYGtv9N?+9=0UV -}iu>wOKfX9d_Yc5vX9CC3FZ+GB>?ZU2lSZ> -w;S3UN^u6kcxz*X-bgI)ESFYK!K>;PB2KMZiy`;VXCs(07Fb=51=UG<#0t6rh*sy9t{)w@D>)tjKZ>W -#q`JVm`N#HXkuLXaBUYtDN2T=XN(dUxzQ&sp!0^PTnP14Q)I0nU0msk2_izj4;v7I)U$d~T4lUitqw& -U$Bmg0tR%xU=5q0nU0a=+1iNf9b6E#N+|adQYDFsm^-$e9u{Lrsk|S?I$_wO~tNgLm!=ZzPH}v=;j?A -68F}dPQCTU$G!FNSD>l4-V2Q8t+yV%^(Ikoy?>qWt*7z0f8(jQcbMj>cm2Qj)QcnNr+e!C6TnS<^1PV -r>5ZnI@2RIdt^I(*9(v6DA9K|k`j-K&dQY4i?5c+~{d8A7I!{&VXZw9uz2BYtpStSN;(p9kFAnhUUG? -_S-q7|0apBh8^myG(Z&}<;Z_fZXJ%qb}o8C0)riTC*cGDX&z)kO>|Gk^usKDV(7g0C8Aw8|)VdlsE^m -Od~4;}RaKiN@l(NNt{Pa}+kqaLE--#hBv((kCZ^m~qaj`=m>3?}ZW_wE1QQxE6i|3y!|-<|srPd&2x0 --ky(`TdZm-pKFbeC2#kJ*;Q2r=EOX;Xmf7hhBHoQ;$05#Xa@ViI#fmHD5ZwQx9X&Q?K#-miBwyXds0 -P1iOAv#6Hh=@0a(Zei)q3oW0+{!~zax(tQr*KKMHfe;>nN9>lvFb??2!i}l@7$r+QKR*xI>26FKjKkHUH>cOs)Q@Lm#>YvgVNX7&tODA50B@ZosPkbCG+ -o4dmA$(H}tG}Zh5JJE)Sd_>a%L!bpF=^E`lI$U)Eju;@Q9HO=|!I@N9kUMp45QO`MSDVF8L -8En%-;X{|qa8i?M=dpr4as?2s%TS2klz1F)L_;s)tWq51w1ZSw2?a@o&NaTN23!;pmqfe{hwL7q>!IIG)7rA{GZW4 -1l_sd~vqZu!%*=PxWYE2IZH(H;4_Su)wVqV;50pR?1U&oA1S%yZd;|8H8c;6U$tWM)th+8D|EU%6$wW -E^;DYc$pfSkdpy4I{_v!Jh2gI*MFdMOeb{Yf|!4tq;&S5x3?0BsInL@vy+DZ$6Tfe7xU{oG3?`~G#q^ -TQ5T@Zk(h_vJ1jf7(emF`DKYKnL)Lgrh!2U26#jdhxEjwPqL8ji4_2TL6ud@E4)VAs%9326__79>`Qq -?3W{RD%Jsd2Lezjl>!Z?KzWF_%}%Ta`FUpj!sId5rp-xMtTF_ddNxMoViXkAxH%aSrld4JMg!Q_*Oet -28e0PGP|P3b4K1%GVPw!strNH7# -!MN7jG%bHArm -?)P_KJY=Qzdk)=F9c%9sGUW()r5C456n|R|I%W$M?CMOzU+_Q&M!bwXG^G%&x@*5|P{}!z)_8zyP@^> -LMTKu?3vl49L)y-;8)ERHHjg$bFzQ-}qBAr&ceL9@4!j5z9-f1nbiXo7Yb*s7gu4&tOnu$gP~;KRe}r -$EGW`cQe>2L5FO|SdIS|DI`vJw=`y$;0gJSMDFhvsDf`4by>DVawO(ke1a5?wVEWAAmP}bH|-vOOsi| -u2eG{Zc5Z0!lTj)kQgJtq&sz^TqQv6&U?+RRWwZB%Z7wzbT~+jkjq``Q18y*B}fx_JM`hf7vP!PLYnS -H+|7Sngvv76BCkLs9UIP!>hGTy{}Q0bMb1#q`suX=!R%S!sE6si5Xj=8dYXI_PjjpHC(<^dQ&wE~Wl5Vvb#9#s2_{yhjdpgQn~JJXLxneaCEA79ku -Z=P-@_Gp)Fdp|FRe9qXSk=%ih+I9sIu78`1qn$Y*;)cJ_wUrNh{01N#RmENwV%K!HnnONy(P*!(t=Km -4W$=?xjCL;&(yobZ{^I8f)w=tkc#gO)%PdwGMj_qE)M7gz2_=a7TPLSVoLj<1))5(~=PFky+*z>rc+Q -YOC-G2NTR{u^_>-)BO3TRq&{iJkTO$QHSM;9%lZ0Yg73Bz(uRIq1{@vW*g!y1md0Hmdw9YTD17`LPN; -@`VyLRbq|~=pq_nQij{2rvKY$a!Y6G9;yIi3r?F?&%E`_4b?`ltZ&*{XU1qP#Lfdz^wj=oiP*S)8Ih7 -x?Jib9l6Go>byu54wvdR9XqVAWUsdWqlmi0FScF+f*+=+qwWZdLjVdB0d7UG0W!u+bpqFYF>pDF@_@QEc15LTVFKgBmi6p~hJyvH)gxz1S!XY*cBrh8MYK6tHH$Jjcp73V4%{ZlL&?Nwv%)UsgfWHfc`wxt0N;(P -=fg+Wk!97uy;0a)0w_hGS_Oxy!782!$n#ne)^?!mqYX#gIWPm)^^4ZxkOE8(1I(K(kG$BFIwmnXYm<8qR9gr~BU=qj#euO8>eLuOqp((ob9)9lg -CfQPW&xRlB{TdVk6`%$U^h+p^W*OLs5^AM30$jzt2L(sobC5IgH9{Xv*ZKJl|P53AeO@LSyTchgL)}s -DmGNFm|+*;Ds`CpPMOmaSIWwYBc!oxpL*WUVCJqNz#hFSR$tioW)B?Pj;xEn|o;}CiL&iw|dphQ5xk#bfP>2{WkE=g89Wk -`jQn+au{QzW(o -bKE}SJ_6^Rbr#vEVuIVO%T&Ie~#Z3=kQy)Ui{XG-{a!IK```k6nu#st$)3vf~E3b? -5=dMGOI9<{tW}0iDOWfK}mnhPbbcq^!T_T*JOMFOtUgqllcne9B`1*QDlL&ILc4tTLak~k -_=W0*+O~h1&1 -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 -eCZ_{2co;s7VEtryA#{?M0q(@q`GgJ;q1P>L -fQmj~458SjJX%uL}Wan2={X5|S!UJF{4oSj|rvBUgU)xGMw&MEoWvD#Xa -?p$2mqRywJYe^}@ag(b!pmN+U6h;qL!ALCBF}ou~#C>*=1vVAHSpyo+ND9zmY)2BlRO0v~@kKclBj)p -MGDBij()H5GDMD3r-nx1oPNh9>8Pdk@r1le2TS~Wl@QzILwf57TGo_QDsvmq8y~tz-L@&4x#p;_WWHB -iAMj8897C~+8zQx(0T3tS(b{KUjBUHnZhFT9c7iaWH0gcY|TN^yC25ssx+7vj|+UGs7N~M~7ueBdpM_ -qC8ZyCiLjjbj-Olr%RZnBegQNG|&vU$x=jue;l&i9zDs@cI`e~l&BB%@5 -uo1J{k@L}N#4Cc9i -+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 -48T)$H4*=umJ{%B?X9G8 -)A9rM^RnZxS^+UM|Hul>*8D_}$uGeOb`otiNf3!aKLK#_|jN8~K4tGyZ0N0k-_|MNJ{yLJDu7SSFE1V -=YH%i*+d~>G}T+{L@6LdNy5P-e2Y@=?yif)Z(r9`>>EZ)^{G|rk636+H;=lk6y4)aAV`?*5@N&gOnx+ -%rfkF=Fa`Sj~)Lso=%S3%VmicXAr4o*!qAef13W^;g|Y3Wr*@lms3~Lt!sxU(>%csy+uDdNsKvY>3Un -)O5AX3d(_y~&)wsP5E2if&T_=Nu^xUJyZX8Nbkpf~B85;=EVzY#HFo`VrlscvrBH;$+k-3q|(neL{!*MeOibIy -GJIM>2!S6lYj|p<}qja2=Ul$UObIPDnV@$?Qtz{Lgg6e~e|2IRkPSnU9j$hfJ&-dXWj;zcZPMqHP$&I -F0caw55o?U+ER1nK%8ZspRTQR|#YrPcc#2GX(9;vHNqp%ReQq`afO#{|7v`*6F1GZ4Pj#`@7qx9tSwo{W;#{UmXYhyMKR1KmOX#pZ%M?-(8a|(_R1lZt -1O~yP=D?H=UKto@1U{I`8rMWeY3|%NISdc*(z>eCp|Eo_%iVvgentc;UsBt6o~YX6?(btb6sf*Vn)C= -35&!zWvUo&0Ds<``-H>e7J4NlXzA|J>YmnZ+TPpFvweq-ojTv -wMcuVqcds5jd-cBm0q;J2`}NoO`1<(=1O^3%glfaWBO-O_<0oY3Gbc{Unmi>tCpRyDs-eJWDx5Zb#-n -4#j(a%mk=y$}Hgi@{@qe2B|8)NUcKJsQh>nRJIB0NO{DTRJLmo;RIxKnkh?LZkqee^Re|!J`Bg!9lpf -#6!#Li@QmhI2j*~`hU$PJ6^>`&O)7u(sF*xCPOXMfVpzR9u9zS+(W?L$*3J+Tq*L6V||u_5%EAXX{*u -^6%?h_C~*3kDkWdYH+2V@i6qN!SP3*`uBg+QT)2-Y&>J2aKUqJ)7?+!w -XUGvAsZyMT^a5kl1Y=gAJ}EEXlrP+*cPSZ`NGYaI)DOs;p2|kBWPxo%Jn=LsDVbL?yMzQfr+Fpw=9IK -?aUqGWw6v5eK%*&1Dw$8xS?^xKNvS0yuaQufl!RRb>fR;uODGm2v2N0&Nh+1=^!)s3`T6zaxxw@oN)j -bx$^x-MNwTy2*N0*4N%~XUTxQ6BOt|+K?)_yKM)GB%Fr#EMM$81IwL8r6@C+eIwy=TQL-P8Q;*v~ezP -!exxJ8MXk4dZr;E5N~?+lwAb5AMne6c#1EpUX4J^}XtvVr73UaWQ1$?frC1*pzN!dJmj!ArqM!9mGe$ -ydr}hAnR;UnNf^AEc8mRviptPAcIrP+(j4juj|`D6n%&6|=2eu?nTQ4yRD|?}=hASr;c+;Aa1xE@+YR -Q}R*LR?<__QR3r#E^v< -E{7pkKiL|AFbo^lY`>V8}D5vvSqh>89KXlk|pAb&mouX*CEAMYybNeTLeYr_RgQ=c@J7^%G3S^zqrKj -1jr8z%P?JFLipZIz68PWl(t34s~k%?7|rI=^5%wLtYMr7SUPvu2NqXpEsUxuyvK{sV2Q)Mpo`bb*9Mt -7XJdh(P-z*3XB;Ir!ndUal=5*l-VtbIv+Q0(-48Wf}$Qi)OcoSbyBQK=zWBBNJ7D&t<87HBr3XJInJLkJduC5#eRkD90^eQ+@JZGOyy|5X2QH -=KfaV~*0VmvSR`^y=D+=%S%~nyAa}w-k3Hac*A*jnu1QqA5q8Yb;Rr))!K%$ -;wpgbMlQd?!R+BCz!*fbA3p5rvSW&&i|ytsCn>J$yGBcYBBx$@=foGnoDT2YXjH{Gt=G)3D^2 -9h6e1^Thk3318 -7D?#?@m!C1-F3*y_jIHcX0^QWcal!|MFh7?~<^6R}-5vdJ-gjsJUg|sho4VcE|FQ0O_8;R_-~WJ}|Jy -xuY)_B+{)ZdHKm9;`|B43w`F?kfUlnru{9zVob+$5&B>U~?xDs~fd{)HY*}wJZJNp-msqcThf&a|$b+ -}pV>i@%t^kbNsiL-`W4boAv$oHSk}uLGs7*>03H>{x{nzTZ26qhZ*y_T<5kOdsL3FMxX!gb@})9y0mw& --%j$l1Ibfip$sU3*eCWC>7KPAO$&Z+5H#({Z;WEyU>^>W; -a6f#$DpxDuQxdnOI`e>seJC=q^lKSsuQ3VBA6LaMhhUe8~$-YGnKscI&1lt~%Hjd<)n3rM7)(<3UWJr -1rA460tN}BO`r&!0SsD81Ni-*TTBgVrE{f(iNITh>F_=mOlB=VmJd=-w_{>;el# -d+|QaA&%vKU#k)XPzavFPl)0_E+&*kMCr6a0MpWn|NoCe|U@XrTW%!aI3zLTXe}obWj0I9Q*aFBT@)C -&Df*Lj1yFb4j3zHe?woi|k~=6$=n7#3@0aUZ}stJxij(Ky@&DMm|bsUW1yBVn;>#^=lgoH;S}aSKddR -N90ZtWMsrnpFk5g3P}ZT#N=%)%H#IlPH_b>`thcT6ZM89gT4S2{+(l7E}@&Ao%Lu##G`UElJm22qw`D -@?kA!dvSCtQ7HDT5W3FfS?&&tiEd~ -9xEmLV?}GNn|5)YMwJC`>y%&&J8@glHX&1ZN*P54Wvf?SSmK*k3!raVDwOIBJ9nGyQv(rGDPo`K2gseM`_vh9?ld(rY6rYP>;0-z0wYn5jH -kA2zE#HWpzQyp?CKsrEdOgAGkmKP{Kn9dnx}p+cuA -}gkt52*}-zMGJHziXio15=4e3Wc%q40-ZI`>is_WeuNm&V*a{i0REHk1UQp(h?bp=N0(CZF)VHT==z- -<-b2m`{-u6YHpuS>{*i*j$1Vf|&%<35*2!1d|9JAs9)JK%gTCCg?-Zo4|`eP0)$Jlb{WO2Z0-bioltG -5!70B>@tCs;55N;s}%k)nfnMT2sRO{Cs;}F6v1MGg#;x8*#wUeGJ3@1n+2qWlC(22l94)07*^8?XC@HxS5f(-=A37# -TYNHCosi6D#s&;OL{fg6AR$#(~KE3P=?L3uD<*PJ2xz9af6E^hw8W27b5=3BjKI?|Gfxk?Gu49m9GQCg;wX}&5jrS9T-lCQQkcR9oRZm-FroZ1DoVh_ue~({Cm{BAI_q8kGl8ik5YK&y7$vX4q_j -h@;q%@4d$=Dk| -8QUw+AM-n_}=rduKc(+iI4p^4}d2TI(S``&5O4vE)8{6cMsTkW)IGiM^e1%9CR5I=C0y!X<(ie4^2w> -pg;yju?)IB-C`i)n?5elGCZOyNIm=0(+cip=-O@6!&cY7jp&vsQX9M)(7VGBXeDmEUV6|7>!v#XF^6O -a6E$OtF-{^qzfHggqR*s!0D^BkH1K|N*w{D< -P@7HZ)4R)u``g^V{J}J+!9V`U4^ -?fZWeVh4C7SF4h1D|AVWCAE>E4R8k?rAL9JRh#fVx!W-eKe5;n%aN#Y=A4ymxZ-f`;J{*_4Mfw6a$(y -O>%a7#EYP(bvpLQyVBo^pm2TlYIB~0pQZUYW-IQw{!w}D~;Ucwv*oCsVA+zGmH@VSS~>wm`Q{{H?fF) -@)PCnvK>_al(}1Uw%*9LYCqez8}N+^~_oOzaKGT#E#4a|JTV(n-V|uAcYIn>=|k%gM=M27^KLAG2o7VyjG%?Da>(**isAW}X -MoAo7HhVnV`dmKS^TdPf@aie7_jbU`RDA!i4*MWufJv&zCX^6{>IsvGiL-} -R8>{6%NKrP-(BPE;>C;X>eZ`)SMWIYr|}_)u_nYcs>O^oBfe=)jlCr`U^Tyog>xS^h7V;k_*C{BU&1! -?jqG!NMCngi8;akJ;%g{=IK@w(_@gNPM2bJ1w_*z@{&I@{CdIFy_@7byb9V82QhXi7A5HO%6n_!Lf0g -3zr1(cD{&9-`4aNVC;#X1p3l#r~UHtw%8A~GZFrTI`i;awJSVVK0S7}V!MUC*YR*WC_Vf^c%jGvpz_) -kk1zqpa{D|YeQQ2cHbUqkUDD1IWvr?f6+QT!Pce*wi`LGj~m@Gm8JcU3?NglBg-?ldysNz&13a_ --;5qgW{|2VLXE3kEQsJQv7Er{uYY=xm|qLk|nWr)MmS~#mt+UZ6G^DoPUwUG2Uu4<39O}51q&O)a8sX -d7JT#`xrm+tzCRI#Sf(T2^4=k#h*^`7g78*6#pHHzn$XmrTCQRl2a7_dy0S27QYXr@F1m-MJYT^DXgU -wc2f#xD20oyIQz|qv&%y{yE2utt4lb$wvn^zN4PD1M~dH<;zv^aVHAG?#V@4z^C|vPivKdj-$e0uQv5 ->{{}jcqwu`TlOQ0>q??~~xQv9A2zYoQap!g#x{#1&;kmA2g@pn-C6L#_IKWWlq?-U(9AZkFASl?#}5A -^Qg)va64K{ns00r7EhF){Jck&#g`X?=V5>ea(*(4g*03NdlyP5*IZiHS+`z8?Vw4N}Yg@rlu~@sX5#Y -;;uQfT*-S2+*TPx302(T%s;2J}NpUn&Jbmeto>XBhu=Sj8BYLo`D@b+okpEC#B%kt*g5GAjGHi5Osu4dr2EI}7Z_~Q --gEDFf40tkOTY^#Y5?Ls23m&#Q^{4*u=Q__{7-6F7*PCf3F -8b`U4VU;$stI5(nPbp{*PM{`dFpo4};>qeT`fLwkeeIIQi6>(y0e4-#i=79n73J&X?xKlIO -H50QiRa}g1rW=3^Pj8x|z6%?THYwD!BCyqR$ -2M{m&`$tFD`KP4~hvS18=+Zsc7P&LK}Fq`1(&`18>eNifi -0UB2SYbQSr~nbH$B7qq1BHi)apMMCa+R}<^nT>JT|e8uD-Co(G|*AITs(mW -x*0UkJwXHA%d8dO#C-U6Hk9vUQ~6Q0gr8y?`S&z_U$l!)17Z@*=<{i?UEGJ_2U2_;#gC`>V<`SqivKv -pUqSKTruh3Qe%(0tUpeK!a?1a$a!Loe59rXLgIM}+FSL#wJbU!--yfHCbWnHb;Mt+;16@2?w!Dw{tbM -oMJ$m%&(Z7|4`~5BGy+haTy?RmDRvumYd-wNdow_~HyMO0q{aaChmMvP`*Qsld-u;_5>wTZ>pjP*Opu -bAx)|=woe^1L69X#7T(7(A#)vT$Di`)I~?j4+)bavww-KkBl?%w_Td*f0>%KrgxZ!d4}uHJ&aPV_(r)wQdn=_qz*EDVcqPBPqX -q1wSN48mihL>Fm&2-k5vB7&&z*w5a@qipGDVh1jAuKyd)-&v*yzSu(1wo8{TC{zGGk?YyCX;bQ1#Bsb --QsT%N>M6uF45h^XsmDo9*X=IDqg*jOg8kJmzW8D)jXNJ)xNzZzUw--JM;d$1{`~XL-;??6<;#~Z(7g -2AsZ*ym?%liB;^5%m9TpbWU#7`ZP6u03P!4~k{7}~znD6P?vuAfQQC2PQGOp*CF=HYF=^=Z^FTecq37 -SXq9XodLAAkIj(|F2{9Xo~vD*o-a-*TFNbNCYtoW|L&tyXIl(R${y&pvyhva+&xz<>dMOsXer!D+{&E -i%9b_1a7Z*p)3o*m~0$VRLeF{Ay}y{$S_^?;ij5RNjZE4f-REprD|hz>n|}_<#KI$Natb-s6NHfA`&Y -1>WC(|2_ZVhadRi!-x5iBS%Cy#3300?&m1ZiyJp?oV9i9)>$O7#hT6Lhw}6DV-_u1ltgkhaKrW>?{@9 -l`IVKGjrR5RMcH}A#KiPQx_=e_OP4Njl4X{3@7_It%5c$7KmEijDk^N{eCW_2{?%7s2|THO1n#h(K7E ->>Jb6;QgC+$?<`E|G+~r??{k4Yp?mDGu{o{{6_;0`ccIk^RzIgAu@4ow%^16m_MCX&#-U0}RMTq-X@h -5o-dD#H?D*zf4K%FQ6{1rMBy8;bqQGjr^0oAz;?A-x>2mf8Wb}giO>_$8>7c}hLxl`Z|{y1^sgs6ivX -U>Rs;D|OsZCIE`j~*3(wt@P9iF!lZL7Y!M`9$E4I;8f`Q4cq7-sJWVypa{TylVFwN91Hf-+C#WOfw&fSj^(Q! -wJjl8Ke$M-UgnNWJ?^nV3u#Y)^?R(CDzjEa$wUthP1^?~aw=ePX@(Lgsei8MTs1HE{@I{%UTtN@&0=U -DDy8q^zZv?=OGDmp>U+@8F0p2Ko)bUH_IgdHUx$ZO0wTCzlI>5Q#KB8ea=MNAKJ-2b*?S0M{o#MQLBnF&V7l7+%Gx5Qp}1O7+9OLI1X&_jg(gC`{#27JzW1mPM=Gz1Xe>qOymlq>22dpMmeuE))~(0#EW8&W8{U@x=cFzm#Y -QKg@Z^rxFbsY72dKa^8E#U&o*N;w3$L^a!AOScG(}{__g3(=GvoQPsgeAdJe@#d^beem_>S|Tr# -Vjq4PVLanRq5lY0vwm_KZHM=XR+*_x(_6)70Z0xE=mf&kOzi{ku_rJ{S0dPa4tzz6W17q(h+vybeD4_ -P{3o%Cs=P+7!-TD2Na=;2BrN`6!u&q;EM-Ae;t&W!IiTgWR6`p--YdwFmV{U5SP+?@E0uJ+m9bzgxF% -HvXqE9^?Ei^?~+_@j$5yv$F%%4qG2 -u3u*xXmUvPo*N2-YiE9a@-OYIqbQvAuf_6!=7_6!=7_KZHM_Xi@Gs}1o-JHz-wa+VE1g8~idXsnGWwB -XrV9Kzq88Oq;$RLftTPBavT^WQK2#J~JQq9KiF81p01VAr1G<@OwPRO*w0Kb6L3rBCWbG<5%<(SAwbP -xAf3fPjE*B%{m){^%EBf@eSjWFCbUxM8eSMhlYmsL|rI=_6od#8*o=>LEn%59`hRXn;5Gww&B@6Cz!uSG;A&k`lKZ}QGDT)0epT|G&fI-=EWH?++rHdzxnd8put|o=qJks!4Sx8AbY5u=;vdc?8mKM2Lo~c4w`cT8t4tAmg -&~4JmmkTW%GL2FvZJ_#XqZPd%pn?P5e;}6$`}tHZM^>h{=^G{|B0{Xf|hyn=JECG*9&^?h7N@m#I+uI -hwq#l#4Ct~4~PcQo{0wZNlJTONqy3CLnMDTU&o&$8Ws@^3y6kN;-lGman+~jlcMZojCZOV@Be|n!v9* -WwkL1^e)H$gx6#m$jyutE<3=q%Q@MF14Ttef(Cp3`m;KLi8j@6j@8)nw9#-UI_^{_c+e+pD!PmIOf)po&)n{5k8)bPcyT55oxE4CU -OX)=jjvt1mSbElC@A1YqmeIMxKOm~ufP6U^gED+8lwexV{AZQ1z8C4DCPrr(4G&yY~rB#zN$=+Y-Y+dj4`x9Pv>7@VPR#7iHW -npKg8=xXx<;NdGqG=)P_0v@#)j2b7~VD?+-rsppX$h`sgFU55OI`qK*{4QtAWrf%h=afn0~WKzl%&7V -Vkp!M;7e+Mqoj*!m*mz~}FVc|t-$o?5zesaOX=-f~;!B_$<1B_)M-@7|r?fB*fQWNU#7@Ic$J2hgBEL -s|gfDJ5<6t)H$K&p#~H(fBOM7#N>lpB2rwJ~@$}{A3Hi^84>cslM-e{o%Rip5t@p&b_o`$r3(i&Ya&z -j~>mlv$I9H)4Wpf5@$Ql+j;Z|3PGGyDRh -a^S^!UvBz!#&(zdZ0cg_-4G%o<0G~E(ny3ei8Oqv@LI>~#{>qv!<_0j)9?(Y69vZfHjM?^c56qw0UtE -7f+XDX+FRhwAd-msOr}6ReeCEuVq8>m4@E03SJWq;N+afCdFXgEH^MTnzFx_#Sw|1P_5Wd)|Ufh4 -9pu{L9PBD{#}MO;2DB@pteCZvwzeSZ{_K@WPt2$z&4kH#$0+>vTHauU|h=5Aa8vhIBN>TT0tdOz;u<1 -Mn64W7M6pzCk!a-FCP73xPk;y)ZB^up5=(T(swH+qMZBP(D~Ur1l|bNKa4a2?+^;x7Ms#Bk)IAqs(Ck --e?Etf8Y+;6#N5O8|?sX0Br*4q7NqAZ&EsQJv}{jRPQhC-n|=FkV5CFDVAS8=!DugL#Y-g7~N(l0hf2g)0L5RKhpo&cW0Slh^&zQ7-KqsS1@>wxdUODJ=+q35uf|F4&O -J^bzYAALl_F}5KsFtNrycI;UG?6c1b{z~w5*w%kQ1 -IA9sFX;ck2N;hqcA|_i=S10~9+dT6)C1np=cBJhKSpy3q1Paq|7qL>{@~p^@%ioe-M%k^zp`$Dat4jy -b>gF&BqLahX(1}YbO^Mmmr$kO{F$ngZ_+U&flrOt)hPEJoQT_NIrjwWZTIk1LGS8AA)WqZ(NvoPSTTME -fjh_t-O}|`6bQ|{mOadZjt{lcgVjp_2H{2&l-Duy0X_qSwEL${+k4ssLwr0{pR~f7&=qv8=>cdeg$jd -Sd0DQGUtbXyDMF97xdF}=FCZd>ZzwvfCFSF%pWj5qF={YguWWGEaVjU!H#E)wN76M9S`)KSks1n2W#@ -svHe;8m;=xpG?(TJla={B=DElhax}_Bne#wyvVWj28~vlC?}M&v)5XS?F6uoO8t{Y2-+u2y!#xiu6O3 -O!e}96%Vonk3n2Y2!!0|tGp7xWZH%&e(>3x;`1NQs~{SfqwVPt+$pC`LuOriN}I?1^y_WLkU|B!)!3& -x)hmga~xFsuh-Or!T^n>f;791FpzDO5aMULv>OLiZjN>%l&z&`E)?|Bqw<6ENg -lzq0QM6b~#Ck5)5$*Gb?iKpu)CT;hlXW!E^+Cr3e)QfZ^$$w^kbmrTr49A(zy;3+SwFG5P+E_@eBmcP -``7w7fFDyD@MEN`Gxd}Cv4NgW{O56*Fec$Sp1|o@}ps1rAs@L0RCz`Z{z?Z^-&S=$Wt{3Vwu+3AzoltY4ZrL4s%IWChlMOjcG_mcD%X@) -Wd1%=aOmgKpr0GJyHn>MWr*guV*vs;|py+b_!c1+)q1N1!V#(Z|@z0FQki4c)Ch|D$a^`sky%)c;Rb^ -aGd|U~Y#pLEnS2xNQB3fBa;U&=X*NdV{>azQ(RiK+j~6^<>2|4tNAVQodsePF=0v{+0O|+970qdp(Q2 -?hfVjXF8*!JKqvI7U=5c5)MVOuF>wfrT;_z7K;DNG0e*`}~(BHoKXkD9 -Vj34cIt|AQA$9^ggfZLf3s?oVA>`w -V(Ou;$_)^t(Em|sy_w5_E#)P*T^gSz-=NfN(!?sI2$gop -rfd$C~y4u@q0BI4WBY)idY9;v}lo7yHMsnD07%7e`RkY%A?_!j0b5_xX*~U?kNBD?b~+*wR7wZaF{xEswj8#2a1kF;Q?h -0S>Xp7Cu*~^vnLWS7m$pE54$nv|Fbz&7nBv1{o+ZJChdWa2W#{rMvUO73+UHqT(;>8Q0@vJDtkl}lg6 -q)s5~E|v|gn7`Oi%HWaH1CF3K7|(tvD-^2S;&co1vp&}*Q5*y|Bc2j~|N54fN#&~Ky91fDx~?0ACRos -L4Z|Ah+|rmtGHDn*%dqn?4o#EBERx3@PRGGvIrO-zES!M>`Q$6?YD6xX4|{STjY;C(f^pu= -E+D8Yw{TL(dR(7FmBv9p<_n7Kv+B|17(dD@-lQPklTrd<$ob>TmB8#u{C64c5OZVj>zgzONj@pCXs)!B@Pe)tb8_Gg{ztyA7R3n}=Mv4qp1&-mfw?& -5UYPq~-iLW-FwHw5!$772-srdRU=9O$@tvoqiZtw>>g&>)4%QJcXG8g+o-hU}dr&`^7c1l~$a|3WAZt -R_#e8G^@-mSI<{X0w57ghNQKN*O8+{nc;q>lRd`n5Vm`_4>hun^N1LjV%^n*km$=`Cmj>_fv=bsnyAo -hqruZFq=zciG^4_9swa{sIeHklj5ZbtdhxFGs1=;W|}Kp9K%Y%Gf4Kb<}*$`f;_(kzj`?M55$9{PIlD -e7|AuwkN1(NCi;zuEZ`e|yd#vHx?$^auIJ@4tfho0a(6w{I7+nzA1U{WfGS)Cc-gdt6}0SZ>e%2(Q$? -vL^{?VVp$%7>_VdK-%b+Y3whykB@#Dcq1K@1$0HA31c?alMom4Y>eHzckiwj7f+Gv`X~O;6zvPhV#}O8O~|N$pJWR&57YuSG?h@HD{*LNWBwIT62*@s>L~LP2`Yjamt -!23rjC3(C3WLo}r$elbu@--pypl4K0{3NuQHm&^IS*f+4RUFVom}LS9a2dO=RVLZ5Exob=qROnredMQ -VDq&1j -ujWz5h4ltLVdP68^7V*(hK5p3-hMv4c*kHtf&dNU?RL*W_oskzFS0C|Jy{a%e?>Xa}VoZ57)5%Hlpc0 -tiMv85lK-=Q86)bLk5i;DO>*g{?EN*5XOfm%`{P((V9m!<(f^J?V4kn*L<4!cK1#69q*g#`?&8@zOVW -2_5H^8cVADx&VG@8!~LfEE%IC8_qyL+zr%h%`2Fm6)z8WQ9{+a!_xlI=hxtF|zrz1R|9bw%cMg*Dzw*)!_wF`PJ=+mH|g8m4a790?w4M_}nE99Gyb0L>Pd_#jnhlQqx=7v5Rx* -&8(=*rObq3?x$9eN@3M(91-PTB!llXkAQT)RNnt5rPlmk}_F35XVO_%`!v7VX9bt@E81YKP&4?b6K9SIPV1s -6uCPy+ -9m@=GW7&uir?&Km1zwck$2kFY=%7zuNzG|Be1T{4e>lfVKex111E#74UU{b6~5$c7aiW6N%bq15X8h7 -g!S*859>}3|dIFbTH^;3dJ!f?p2)I{1g+--5kE{6lmhqe31HF^9YsvX!X+IAm?;zR;tg -S3+a83$;&bS7_hT?$Lg(J)ym!bq?zs<`WharVC3Bn-;b;ta-RM(fxD;6Ur*wr{Jb(t$9ZCg619Kz)`+ -)d>8qx_0#%i`~Mp7O5nyoJz-NFR1@@R@Rz~ULNS -?Ke$&+|TOd^Y%O@!9UPo9gYD&v!mQ`&{z5;nT&}-*>d{GT)WHANwBmJ?4Af*V*p@zctjNj`%h8Z{hhZZP5%}F-2?6q@CgVEhzN+Lc9#^88ju+ -cLB{9Le8$h{!}A%j9jhh&GW4>=IBDr{F+ZCLm4=H`uq9&h4{t!P4_GEo9 -Fkb-)DYqM3JX|XMZozLpw~rgeHgSS=s?i1pl_+?xIo-DKF?CEBvXrd!?%~;Q0mcM@!RM(#lK}hpMYTjTLKOSTn=yxaSDA(`=!2DBOu=_MUH5rHJ{^6!`}FqdBzMJ2I<_iid9-Ur*mo)VBY ->_Rg5KsVEG?DFn@spLxn;+bO_j?NQDj+I&_E-uwaD_9sJTx`Wx>11I{_z``qW{aNyk6x+Bc=g_<4xL*Eu!vSz{LOx_fvT} -q~GKANuSnZDUJyJGI|bHC@Fc`v*_-j(+-vy%Cic|TvWyYeJX>`xo>i{cs=x2QoM2xABA-Ms7jdR{-!k -M&bw^ppOgzshXC^n|%%?io)AePo`PSLrwDyY8Cz)_do*ywBdtOyv490WB2WWJ(4w?*^#}lS2pU${e*PXj6dtAeHq~NW{(Tb@{nUeD#!)3U^Qq5onR0QgR$tx>x`+ -CN~?leR87@Whw4OKs;HB6Af%R^iqnvp_r&=Tozz)f(GBrN_xk$xiAZ96La$<~;#S?7Fx7N7+)cM7ZPj -)=ZrAO(eRpVw{>VS~FT`zEegsj(5XU4E;?HR$h3^z*p^!!f5JxWvTX|`!B1$Nuf+}jLV-e4>gk?0af> -o@ei7m9zK^Hyrv5g(B58xBvhEegOa*0001RX>c!Jc4cm4Z*nhWX>)XJX<{#QHZ(3}cxB|h33wD$7BE_!PA8p ->>Ih8&h(u@LQqL3kcBni7C< -E^OEm==T#^n;>Obe+>Q2~Z=6mmZ@B7~O_()aV{oZrWJ@=e*&$%7Abp>bUI4&9fbe-esIQGxY{r7({_! -~5;eh~M5+NN{sO#V&hPMdRYW#0UX2k)u4^ZvZDJ0E!9K`HO9yYnjK2lDQHAkTCCjd}M!IQ#C4v$E11M -jhw={k0eG*4K8$|GM9q(KQ?1kKXlQ*CX`(K$n%iZ|#}~?|HwwxoZ~9yRNI4#@}b;zukD>Lf^l>w`>m9 -cc#9VcsXwNZ&SFU{lC6B9@oW<<}#AfIc_rq-e7U1qcM`{0@WJ)JxlR)W;!FEY08e*yyioj -gYWRdtZepg1n}{FtP25W*@SbJjtmy+Xw41ou*n#gj?(F|MGXws0a$IfFnUgP;?p`Fpd)h{$Lpb*26Z7 -OjZ!WHweW!FM$9;1dtCRZ`{B1iipBw&P%(8Jcg;)?eJOtiW)5-Z7E}qXa(lNqVxlDMUeM&y}#TAtmW$ -;a50VqOcPb8LC2 -Aeq1xmFC-I0_)fPuABXTz%omxt{POT@3pj1!BnK$W!fr4r)~fvv}?jvogkcG{*iophHB(bE@e47QA$;W% -P`}Bw}A2NH2j%n>8ksO60X%fi{XkS^IcSjR#$A<0XilN1hyy?O;VY+aWaI;7bLc4B1iTcBqeCQP8b8-opyW`ivJQxUbjPuE2Pd0>o5&TXoD2tp}Ppym%|AO5l~A^gcP$QINEUO -eV?HjppXVMA~XSZuMwB#YUeTkW~}sKXbnaOW1FTyB#e@D@J~n7?~g+-pmmXa -D%9c1RnKP4W4Zi3=z)5NmE-c4bYa8!OAc25fMe-zb-dAPe2ib>FrOVnVF|4bI-#{HXzjZ2jC?)d`nqB -`ztWNc$>lp8GfSpJUKS7N26X;2+pKK7xmr!DyGTV^{XnHT?B^|*AIa9X>;9H5M@SblF!Aco^l>mOZ5x -ruzy`Y1bo*Z*6QD_U^Eyb_#-I1>KDkY+lR4Ct(Zw ->nOV -bx8uh(#w@Y-tYY3%Pkk1xQ}s3I@^5Y3lCYR+pk@ZjTLL-O&n>LGa%Eq@F^+>lEm<1j*=u?ilNJHYPPH -xY2r%Mw{Vo3Vbr%q2d?3ddU4j2WQx;$h@`HL%ABgAEQzlwN|(|_JtDeVE56svfaFjtY+6{$rjab&gkAogefdcCfDcjJW3^&e`Bo+H}~-edJiUB&qzzw?uMW?AhuM3m6Mw9}SCoo8K -IX$Ml^P13_PShBXz?OC6O&*PcT)urTK4p9UzYPH4>!NK@zsQeNN>XI-fx+<{AfdBCcqTX -1%^sCNNEZ=^I_oq7yE2mC89=SS60{z!CXJ)dskC1+ssoM)_ -7N}4IOS-(&O-uOCkEU2ryBrrIqHsFpl#exg!w)2>1>FCu)xtg+h`u?D+rW(iY{cK&1%;Wwim!^D8a>_ -rT&rDk&9G+4dlF79<3^gY5_W#93xnHYUVJGTd~5~pp61H$_s>v@d6)bV}=+4w1QHk7TnlMag&<``&I# -Nr?A6q+~~d$Su`JM0On65+hH8CUCn{ER%274T=m5qSe#9oL#V5wjZ(I4A5!*^8F4-t+D=vXVlLbf^KN -U}sHK&=8l`MeiNLZkAwK;85puFfB2CT)*jHgIy@IyuClQfky?u^}!=1Hr9bG3m>Ys8bKy>@R*HH?5HH -4uxR(rh9uphW7JL*=Oav1=j@Q5OaknHNT9Ev|uhI%b_&F^rBtjIpb>o|!=#i1*`oeLMQp*wr9P2|13& -^0@B4Pla}P8kKe<~ca4UxR$MO2@A;!?4|~E+C+=_uvr5uEUrv?8!w%mIoasP8x)hFntswCEDw1{ZO1p -oI&-i#HUD_wX@U-kW2k*A`F>YcoAeLt*nz+@-$w7;$bttTA7FQGRZxYK|=^77 -N9)c|D3?Nft$P%~+$I~D?!X*HX4WW@UF!5@ZSYRZk)(uC@TR{1Z)nN!^N=p(TlJ3(Ruy -&u`CVvd|(J7+qcJNq^t19k9u~D+9{~S%By*%GUS+D2^z+M`-fYTSwvSC+U+bgaDAU&0W-yI7tMfyu8_mp7UYPo)yZZK6JQW)skWcpE#E-XTi{D-oOehm%WO -n<$ar#CU|Ty*dfIu)gAQ=#GVUr*+{4eEn~rRQ~z_ed>vx)S;+zEOM8T0;q0JBQU7YY!+W%k;_Bd(V>` -#4eDcC8fjYrz^u%|YzgKj;?rB@pM5Dgj``T$@Bl1gdmz{?pRcNe6BJJ#97o$l2#`4Ee#h-Iflzw*hJrB9b^e$wpRhVn%2g-novj4uwz7+d(X4oQ!|d<||@N=%pL!m7$wqYHGDCAX;JMJ& -3Mb_=QM`9duPh^TM!>CLdkQi$M=IR~c_@*IlpLfVZ0&q@INm2oh2qtC)wL~bT}Ib>0;&&?C_zXte&fZ -6kNbR3JbX$O3yB|02J{e19z*dZ6?`a`qw*beCCbX1N5t^sz- -07`?6BJljG8)3-MpN*pg#voe#AvcUe%)1d+1JWQA-MXRr`2L=&9-zh;6Sx^=vknXPLhMP&Whev($VMtrQ9)^o>I -4jg&5L{qur*%}j0Hws3c~;_1&WL77&p&yfTfkv#5z^s{lNOVQOGLrkce*QKS6;7AZFoLLIS@s!mr#gCKBJI&n#ydBp){BT=hOaF~*)jY(8#toWX`g+sKW%J&mZol+*Jot)w|R3ciU8K>gilkehzUpKI%GG)of!@qEy -m#Fo~8fbRBKtyM4qWU@_5uPRKJlk{~W>}4)<#bJQ+2(m8P4&AERw&<|Bc2K;R(OUuax*JV=&08Gnp`7 -YG6ny~#`H$EFi{qn6QroWPI9Ibg2HPiFM00Dr6D_n8k& -44TlXFqIt4&7b%@h2p -36C7sm;TsCIQC^>#dX$drIn!{ltd!#v13X1}q@Ex+*I%Vb^5Q3DbtFm&I_g1Ky=V&)Di-1yPJ|HMk#x -XPXyi$SDUTH!xJd~ee^2Cnujb$Q^(<6ldfL&Gt$tqahy_?% -dwd%IBDDiZ~zJq81NAF-Hb#(u7*z_ErF}5~BaC*iiGsSot*G#@ -q;J=CkV3&`llZi)X#t$T}Re;%STeb|PyxRH&|l_E)Hn45si*Uo`>~ifpJL%2- -8t@Rxu$QD67aZ!6TMzB1X!OQrZM$g4i(Hlk4Bryk)A1-!Z_iwYU3Fk^dpNe<+*A$SsQRABw4l)ieN@)Q=@zRG) ->0ug%an;qx4CsxA$Bkm#R!k1lu8WKfDu4_o2tFdaZK)oHcL235L-NsLMoVpWG7-$0aYL2*Ek?bZ)C7~ -fG6 -zc@Dm)I7lo@j<9|LGi-Ut_@1xZ7pz19%Le7x4BRB*hNjzZT1g@Bk5xFc0tA%e1L<^^Vfii=F`?>1RN6 -vQB5Bp_XJMJ@wb)s}YkFpLo7ESZo9hcz=HdCxK>pkvAP-psL=t_qoDUv?N_ -=I%5q+Vlt%1;FU^ALsSMW+TGRc$;*4GencA$pY1z)4H~(%dGebQ%i14 -_Ll`HNXKEsIG_1TKUs$dCrm$B0B}+j$PO&6(qzMtti+A9NJj-!6sDaE5FyWb$m={5$ZvTyPjWf873C} -d!RvY}5nyZ$6{*AouLYSpuzwMoE2lD7+Y79qxqMS4OPAn>Ywj^=oZ{l-VTg;1!q=GIF$vIj(F2eTm|FzBJ>K<-59$~rL{B&a -KQm3D(tG35hot+2{4IRVR%|MoAx+WSq^p!@u5`W~nX -w0K1GBrfhLXm(yGw+G2=Kk{2lZ`;>jhlr2eo{r9Qbe5gpi3n~#ZbgfK@PLr-zqJyM~(By^Kc8=1U!Uu --~j`Xx}4Y2lp1+5Iyia^Sz{%ukRkDq -SBH6V#L>_d^=iz^V^G=&UnS-2YU4@OsK|1)rc|S5wNs%;k!!m=7*wDTxZ~RkQ*NJIzu5cpcqca5mGS8 -)s?PL6-Yz7ORn^vOkLrvSe%dkmW9#CDq7MavkeNI%{kYWV4;n6;F|q4<4lFgMJieHv*djD-{n~@IXs# -^0NxILl)g~w*?k7ki(Fi8}gp*3CSQi$od&-R{ab-^XLzbfb=hH`aq4) -O>nd)%0HlZTLF|8750KqI3`4!o#4b)M7lAA7cIPVc^d5IER|PZX4^KI+#B2*~;p=T`<`5<}zfH$(zXc -1DAwQxl^S!S7$;c_gP(zjc6V@SRiliNq{sc*yMMP}VTcQuaAXk;*vUqV2R?VsWWJ#Km9CypIZ1v`^bI}I!} -uxPzHFfUIC93HmK=MWPlkT>d{!WNh1GO{&a40~;2IACMPb+~!!_8=X}KT(px-5p383YKc-znB*G3gaL -TsG}QeorSDI0e+R@=|2RV#r&i+xNbO8!( -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 -20V{=tPtd*g93EFu&2=Fa7<)~wE8rcPL(&N45 -vvI&5(rMy-`V!`!j0SHdqg> -qCWPezu{hYB8;X}v@6^G36s5xCv?MG&QWIr(-gjLq*@>rWxKU3Uued0PD@eSzo4j>Rr4 -(t`r=t&WR%lQ%FGk=2QWBb1K!?^kk|>dWfv!BtH1P70n-{5v(&bkFfoAc*2v%q4`j+7@FCx&Q7LE2-&XgIE3S1_OI}XYj{Bb1SX3Z?3Q->NkH@yuX`05W%*sZ1 -!}U&Pl-U4?JZt)50Gl_hM$tW0c}aX*qX>=lqF>O&hC^eYJj+xQyPKnL)M9;wtYH1Y{T5uTX(~g0qS-S_=di}%Xy_&9s@Jf3Wv4n3zC58k?Sf##L*trLX|9p#c?WUM(D -qBqP=_5%OyJ8Joxn3#d=wxlK)qvJ899z=Ak}~LCG?IA&H&>%0OR?2Au+CxSq~sqhr?1JQ**_#uI|V(S -b=}nuxUKjrdtTG*~t5LN8D1Dx=c&-@mr_f9WhD6LXTLxBR0M!L@Cu|o3gu444Feyb74P%G^O(gr8Nn5 -q<^6upgcic^BMN5p+IzXNQ2aOSZEf6iFUE-SonsGhjL>zVLT$u$6YUfE}-2c6Es35JM`A -jWNYxyqr*I89Tb0g3L4L7H!E#<(1YmJfZ%9lH%95}lg^=jSwMO1kM+UWb{l+c8}PN6jan+q?Mq+7I0b -8-l;hk+HdFhakEbDZis^jK57c>Vs%^Q)QBZ5rhJH*57n)H)R^xQg(TH`HB@{2<_CZXnXuKnkuH(W*b( -t-A()`H;0+vzpuI%-Eu1nFn{O95mUl;tv3AC0vIh -^bOIvgk4NTq?)B*^j%Aj>`^%YzwN#wTh~Lf&?5h(V#z{|qVgxtNG~lLwIRuZ%<_-#n1-@=2i?<$eDH{ -XU83h&yL^org}L;D=A8;NLI`ejrZ4H^(XXI)j3jsAug@Q1D%4aSFa@AO)YFAiBRcDENH!t9=Fqe++@X -c^^{nC~}x;<338npDY_l#1{=D;{ElZS$w%CH1CeSfmFPT)h%D9F4)JY_=P~lFMx~_7#Y7~-vBcH>wSs -2-?cYE#!HYUoW>926n}_b<_eP8U&~*hmgr#AYzw)sDtrwR$5-8a5S5;*#_KvES2LzQ><}4F(r9_g^%tjxy$4`u)vR2w#iS#z+M{YlO|xG!- -_Ovix|HA(q23%?hqqKEo!3`8|V;}??wgY?kx42&;CYB^@m4Z)d39l^2t`mvWd%N3t#_WZdUbDYTPG}f -Yz*%9eUL>g&IOqi*nu*31L5Z{dz0^p$Wa+LcBHvWe=s(rZm{nrsOL3SUCf_C;4iGra5eQzBK*D0mk)o -0hfwp5rK5Hcso)256#?z6F5x$WRI>p^-!Vu^q%-e7+seFsHy{!*1iN^F3W{6=$7(ldLq*0Coz9GE9YH -Z_eFGzvTxK>@>p-)H6RYo?JiyJxy1UaiLaRld8?1&dR~yD-Uc;81DEZI&ujFK6a?0Ov}U*}1*eh^{wj -qo2WhKk`MgUCg*rU3@+KV;+K&tTC!0LA_s`PXq#-~vGe}cU`>Q7DRpq-rKlxFcWrY8{RTEqt0zat(Hq -%)@pj1koVn(Q|zl*cEYCHX;2S1$_K&yc0+(zwl^8={b%5uMh -ijL5@ -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 -In2Jp0MtOm9kLmH5!`3LI+rAJ_~)tLW@{v -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 -msCgnn(|VMXP7V2tH85`I=G% -t%OKpc3FO3stcY9-JTivTM#_8uAgfCG=)yJzET&nb6zKH7``4V$pRr;O}l+;sLs{3Y5FoNpEo|^m6vUj?Lr_24Br~u6)bEyye)L8z!naxDr)7==hSKHvK0I|tay;SFQuC6_3U99Q?Pn^_No+ -~ZH#H#byTgacar8{sr2}CQ~{<=~4&e%QOAst@Smd9#}8iVF3A(-;fnmQjX>e@pn<)dp_gaK_gB=iXj& -c2w%TY7Kh^Cw^m_*;5`278{yV1G2!U_U43URa5fo;kwKBgr=g|56UZQ%8N#Mx6L3R!_ZsCGHig%i>2& -dc4B+0=&piG++wFbl<)V9FE4pQrCLw4H8wk`+`!^bhN=;S}`BvaDRFkdU~AswY!%t<5EO;J>}c^c?=) -FMA^ASW%)Rb^y<@&<$A{%ZC2M~@f;1lQFvTh17c-S$OL@39ghQt>~kOeGCxK`1J=e8Qm_CDk9CsseyY -0oqCc+LI_z@~bhumsF6&Mf{c+Xik8P-CpZnF9xSc)Lt!@hs#0Ray#Xy^_x5e@|59E0aqzqX5q|mWQ4z -=tT$w1i=mqvVd2~RvJV3<+ciAgO3R@iZ6MsKe(*!O6+VuZt@`3P3)T4iv(fLC-CU3RzB7Ej!!HrsUUrlQoZv6Y7k|fQOL3117``qH*}6gbJ>BpTNo-l9k&t9%i`>c{^ud(|jp{MB9}?NM_MN? -?z*#6jI-RGqxbg*e{jnxWm!4>XpgX!zyJ_RApFP^t1D+s7rT@mekW3s~!*huwA+4;I$M#JTY&!8U1d%}@6 -X>zeUIFqD^>toM1E*VFyljm*jXE|5PlFxt}Et0W~mo+z=WY?D(bj5vPfPU6N)dt--b-K2!SYH{ZfF`l-8~Z7=FT8?9V_`>dvQ!t;ZFFg|q9Tkr_!>9a7E-L`3p>FGb -!l-B_L=Bnb$@WNukK5z%r%cA)kktXW{Tj;}^>7A*&Po~aCP=`*uIC;J@dBTj-cTlEJrzlNf1$D=bdld>pnayVy>3 -n^;?|2laVs==w_4Xo}_|&3kVw<72+d1_IteuL6;cFfnEbJ5@h9GTVbMN-R<}Uv3S1FOZ#~HlstThNbDh=aiNeZsLlWQ>;=?;!hXG47V{*MuMJh4mBCQJsT>%BgV -7IYx}{4maBKRSIIPiXg_QQ8|ew%*!7Z&x8NUdW5PbO7BIEp9{!!9HH;Wb;pEvrmJv=QcJOiwCI0?(e7uAIc^<{+qQhYzV=uZ}U!D~ -lOvfwpJ3%4DJE5VO^H8lk>e{QeB@%r5QS%($ZHi~GKgO}oo*3}GV4rHk-nv-*tnoOze7$VE62@ -(PAe{8F!FAACj8)>j#q75Gd=&(nUIyc34;S?0jSt~$I3oQXDvPkt4bRBtJ95o9aN>`K@-;rYZ|ywZ5+ -6|LhxuOk2Rl`uYxg4jZ{OLE`h}}Fgkk~-tMX`x~y0fu8sM5 -K^R^&0t}R#QT@HrXy3QllTWUPvK>)0;PFWA5v17;`dNkSCg_-YOCMeIY=u>0X9h@ws`xHekrL~L*jeDn4Vl%h=M!d8oR^PM)F25tESd_kE%&=6n4$gu0(Xu!1ye#jIzPuIO(g>SYVs4aljq1hNgTK+ -6w*oJbq{*2yU8jGDg2w(Sx;1s??w0Amh!36uN8^;>De=(%C*GxM}8~?y}t|;!4*i-)1my(=`ZbPqVZB%v&cZcfY5qzmi))w2>%trPy6`JY -9J71jOXLOCH(4QF?Nmr-cp-Q31z2|v#j7@iYVF74?N{RM2XTHHms!)}OMX-p_w-_GtCdAZX!$+&>dGJ -Ni90flW$^|0z(AuXyJ&q+x;AVVWd6JW5I#ohxtVIcQCV}tGV2b#>wer%29BTv`Y5zJYTfYoRtD5wrK< -QM253JJk5X8ISXoW<;Ur{e -Z8ws)~28)xPPf;zwQhitBi`;<`#+amCGUIw%0T?E|nG7&bXLOI7j!F7Y<(j#U*8a%anW=as6W1~)vWx -*&LlV;QA3z}<1xtg#Hs59GlxdAT;6g@~TL^E#=v6J2@k$!By>*mbyQtFt%Ot}tNkU~jBV#zyGUZno&^8t;8>81!`p`yCtk+HIpF?)c(!s^Up}@fPwQmn{`6G+aSlj?WJ2qC2U -I)fC@@Y7fnCg_QaSUorvdTTl1$J!ZNXy5Q5=AFel#6mo%asbvpM;l8{S#)%xWHL6q>oQ6yPy3)zPCgZ -FEYo(0McorX*K8mVvDY)8RkM -sJt_^aKHvLSBz($_vOF9zdGJ@XW^W6{1%nY_TTl|r^Cyc-NQSb4=BbY#4bKuKVn&^Pxx6b;H!Sa$Mbb%FDtR__8ox62``08?qK( -o{5)S&R>vTR5<}(_X(bXOT?JG57y0**ND&0pTJz}yuYh6ikog(x=WsoB1Kij1&}1r8N|ky->1R+a8C! -h#HGw*AG9%S(YV5uCnaArW&vtH#v9C>){kqfj+<|XVY&6O)T0K&3t};1osciV?Zz*`4Pa(Ym*6%zbY4 -ilpoHMrLh|{R3(20^qVtzxuB*mh$8%6-zK(pf?R8{LtLwyuZ4Oke)7CtNZdU9f^&VCe^lfek&oxOVd2_1WsqFQUe -DwdPG#*4M$XY+8ja0ClrN(EahW;K9uATKCqGe@1B9kF&PHado_DqoOSm47?L3KOsE76{P?g-y0A;&Ltap}?`P}6pGvRu8*w)}7L; -c=Ehv9+iAAHdc7^|LwgBd6Q#k9+nePm|hPLEK8}x8=QL5hlhZbKJjj!Mhk1;q!G(;drgJ|%}Z@f{(Yo -Zo~;G$waZXV{_sipG`AUL>Q!}`>)crzorZU6&C2XS&Iwyw8>P!@gDV)77i8!k91Ii8=4#9Hs=#A=#|- -O_+kGPakI$F*BDyz0e@g=J{E*+#SdQvFQ6PA(Rhp}R(B+(YdUoT$YxxV{cAaM@GTXs{*~HD*}jHf6Dv -%Nn?8I&0$QsY?7@cmw2J>w(w6Xoo48o#VFJ3qG|!F_F7UUHdI=clAD3ds-nHt#oZs^j)@20Pkl^OI<(k2ZN%2MTz`(6BrCAh)o{&31t(fnjI# -|ow%ZOfj;{uTs3~vwkb-|_nNWKKUrN&!UAxm3Dz3R@46~Yt^%r{)Jke>t4kmi`I2l_T-mpik4eM)hJF -{3D*4G|lq+)pe#eKI<;fZD9ciA*kmD{D$Y*iR{QaV>6cd?L -Skj2824lT;AhmheM(U!cFbOkpwY)K5r`}$U;w=t6zkZO<0EfG?jR`0QJ8w*oexB!$SQpJ}U1GKGt$Y7 -QxnIo0z`%HRjPLz+Lh_RJvo7n)2jt@Xm;Dmnkh=za6}23yCAZ8sUGFj9fehhuy{S_*V#vWImC>| -2WA|G{oupzgR94Y6G#eAzi3$PJ{B<0D5ga{D@w+qD&PBahR7r`ePk1fehTaixsnzs+?}{N~(ND3UP-cuU?I3A{E`YzCTN2U!l54AO3` -L@5i7Qr&iTCyU%yvHb_kacK4RwGk1Ck87C|Be0`qfBjdPBS!*0aFlx1)h7|WEH@pum?^TH9Rq4C<$RE -oe#Or}SDq%O)c-Z%{CJ{`^fU=563L~SBN}2c(Tts74<#rT@XI)CLcdN&V1oi?YTeM8DyVdL6i8oGMoK -_X#!@&)4N`TbU8Q7a&UZ^Y2P@n)ATIWjRL?T@;=DlMYx~BoJ^x{Fon -4jsN13iegz!5qcwHK`PWs$~m_bZPRGA;}V-S~=q;AZJ%`#}ArI-~s?$VN8<Y&-SNFUibx=giOWF5Eg%NFTjgGzQmL>XmF~ZW`J~ -c;i1|G_-sFu5^hFVy-)S+y#irEc6WBMNmo~yEKkS%l$qNd0QLxgI+OWgJdKW%F?7h?tk72S64h=h8tg -3W77!*nJ8IXn@ZdPAzbe@6&>akT)6wG}9yqbZfL5z0_zF2wH<0%>vO(gJz-l0xp`@pt*$RoG`i -{P3w*972LNCg%ZYKC~Rbpa26qv{AJut*BQAj_y<*CaNXZBgY@)(oJTB!^hLEUPMO3q2+Z6ZnIvaWQd0 -&M)haPfS;8rrGRT8x5OIp)HuFd4)rcI|L&%sx(0oo%qbVeuKaWNW0|!6bCoFsNXbXN>{?t=CkLM5MMS -*iR@%-80ls`rhAEs|3rf)r(NoakWjup0oBeKMTWY57Zcncd<#ikZ>%~L>M+K$bO@53z<1fx(D2QX)j8RuGeoH8|qg6KKUOknh@V*PW2kGt{ar -znAMoeRfkutqiX~EFuNowQnG3$ -;E+v18sRu?Q_4Y6HVW&|ZSdP<_G+<3PoZZ42R6Y$Fnf>wheKg=4o?(MfAZ-Ur%d;GhO>W=M3vw--a;1{QdCN8p#(-Sf4VJ-sqRO@Fb -lrELp!gE-ob*gRE+GAIs1%c|RI$9bk+0Gl_%nM;V93`*&nBdzET3B`6NOYmM7vT_Hwcbrx*WW(QA6hUCZ?f2>ZqS0M`E1DsU$#;P9 -<6Th|Her9eM4-8QN9an{5pQ)j@KrZ3`wAEa1VM2GRNxAkC<-`AS6~>u6L0-&Zd-Is*gbQ;Bh1*iq5%v71_iNuwb>ISwQplERV-;)BWU-{cnB*546=Nrbt=p<->KY$Lat(}*M;z -=Qk+G`2^?_{{)<4?WPhgGpko8f=w{dQw01vF(FL`!%s<$O0!}an-3fhfGU3^KSb*MejjH_WdAsO -?t>IpYCF&UqMwZq|Gi?;-^gWg*^;Vb9_<6JbGGp@hXz!;wn{oh?`L(KkpLu97C^p1pLyzjjxc*ouW2b -}nX@jh3X|M8B?v)jx3?^3gSu0Vdsai*rs>R4>QvlH$*#(S^q@n&49WS3eW!3Q*O@*0PsZ0Z`tygFa8M -4rLefuy7X9UuYi^)UFXFC2z(+T11AdvO2B_$Gs25}~))3ypzNA9+|Z8(DJ&{TmccI~2}xlUkl}dfV8>$*lIBqetvGliD|M@aD_JuL);jPPi_#TX;&DMX6a}2!*v4mdLqWTm`P*mzl(k#Cu7Y^ -9AUHz^4Jo3vGC~rY4fgxh276wh!G12eWgUyfIu_odj@>;~u4BY*%fOpjY7_Borz<55wsufm>}I!1511 -kOp@wul&PpIu6s#jpb-+4OBkBlVF1cv7Bl8y#y~-d;jO51}y8t8Ja}Bi;cWfS|0sT7Q<^9bH!j*B5Q~My_3 -Fdo#!k@|a6i2?tYVoDxMk#bYZYEmA@)PoLrO5YK%=d6!FpGmLcw1z|4CXyk{B@SY(?t#^IrT?owi3YP -e~cgN@p_}c)|MUEs%-*IHR^aV# -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

    MH^uI}e81)*o$*(nq=_m -SI+5W}12w4Z}oSY6lm88RD73l!&LI(?L*;6pCaJk*s4Q+-M+Ke<`sP{hDc8GQZ6tq8q5I@vk)^6}LeI -3$tRjX-Q?I!9Z)O$z!&-ej8p#2LbVNKBkS84@+gn=t3wQWafxq@ -d^&!yQ-i5S}@CsLWxnLO!S9HL9^#U3JM(})9wCLmH^k@kg4@=}Yn(`{BzYFQ2DC0ChUIv9gKVyvoIwM -JEML3aV0zAN|=;1?pSp7(kG&Ph773tB`w -^WUoHc~hw{J3g63p_yA+3LZ?K@`huYJcH{!i^Y?xAqrj$5u6YqG}iA)ygQgwx0(w@D`F`SFC@nS9Qiy -h-BNOou$Z4r$AL+bk9sp2{IA-KV8yTF2yCCc&^c%Ow0}gUcL~1$@Wl=H%sOnc}RLtaupCS|LS{l)-*k&2+m3=UBt>jJWi2;T!rc5!~}O|As2{FOcj}g*NG%9D>qNpjff%tu^26+xc8b`TL1FBe=BnvRLxD6+YT)`YbJIoRC5YM4hNE|bgF^wDtDzi-18#1 -%fZBmxWWG1^@Cz?{zSm4Bpp(84@M1pRt6HuCGE3hoZ=giHtIpowrOwPa=UjvkZ>FAypZ1NVbwMixm%Zi*?Jh_0SXOW}Hn -X~4I^xJo1YXgB5uymZCXEkL{&IF$GSPBD1o)EPg4W<#Tt1&kfO8!hss%1X#^Eu1ki6&0QYF;~dtp@4g -Lnl2XDx~-WK(j3`0|OgvOHYSl0x|$|m4w+xauC;|-@B2b@$rd>`#`OLG|Eh4?N{n-6L|_#$fTHj9+{yLLRY2Usf_tO!sWUt=jBlvmz7af(kNZZH0( -uJQCG5PN>^cd*2vs6nwJ^hd+8u;K^Pa+dh|p_=K2GS9grAARe3F3EMELiLxU+_U*G@D?^gR`U0Qsu;*4;@bLjGmIA1}V+D`oXAK>QyF8H7Q)NOv;Ueo6 -HA1Cd<^yTv}cOl=tEWLbx+u<*IiD45!;GFRJgP&_i^5+kI9& -w}l6Q{qdxlG95Mcn6gXpiHZ?DMbkcGN1MS->m-GXzW%Fh#)W0wxKl7cg4DPyxFMs20#iK&60g0ulkQ{ -=s3RfWHY?FW?0MB>~S1SR>$R0rv~IRlv1>G!Oq>0bdnxm4FojmI|0JV1|Gx0?rUHNx*0ULk0A7Yc4Zs -gn6KVY5|o35}EHSf?ok^1gsXYQouI_tPrq3zzhLX1e`8ll7M;vV+D*BFkHY;0W|^!3aA!PDPZGeL7#x -t0#;sb9{w7kUoBvTfcXMu2$&>bw1E8u3>Hu=pwuYh6Y#%FE`4=i^Ld^BZT7cJi^w+o3wf>LH<8W_BHu -)O=E2SVxe2*Wo@*K?lpKD21c&G2{ylK9_dNec25z+<2?Ae@r`1G;kaK!8WOa(Yg8Wq0~8bA(@Y) -+6KU90Ca`UGa7I=fIUIgyMh~l6MF#-U_Ke(=3bnhtpF{-P~O1Y3a|>)yMQBH6aw`c@B)BWK%EEtD!{p -Y2q|u-Ao&2l?1Qu3KqtUyq0nvtJ{{mgp`89Kfb07aG8xQquf)1AXsZzi_;)A(`GBtkcySORPXXQtFm5 -pP6M*Xg+6MD*@&SGi>MWQ`0NX`yzLEf%Be)xc6#_^2X#`KJdVv0s&_;rL4Z!F~tT>Qg0JWgp08auq0h -AK($pGJuhTv -EM8{J!$f#e3w<=w12Angn7b<&tQ*bCfEx%YKY;26<`)2l>o_k6JH->S0L%jcri=ml0Y|uK49}wifWCU -L19LUN5A;0VYJi&!PzJz!E5J_^csQp4h8Uqd03HhPkwi}O0)Q`0hVlvKs{wAA0`(gG0{mtQPpk6)=S= -19vjC2q1~Ln{i3KLV!21?(I%fdNeuL9f$Dj(eM2l%Zp4_rh@LIEKwF&uy|7I43-0lr- -bJcIeW0CyE~_qzdJDdaq=mq7aosuA2EtSkoE5^#j^B|IEGz|N0}x(4t?fv*Nw^O&e>06%)1=lfcK{!c -(Xh4O&#S5PAW{|(@w3TQt8uL9U%g-Any=bq!`=RCmqt2k{704C#}JupuJ_|fyC-2m9}1s<a1adkEj#&FNVKFl-O+$72DW-V1F -7;0Rye2jvIwHvyj7$KyQ>@V)&&84EP#=DW@Qh05=01dK -&x#o&?bSGZ=ed{sN2x^)AK*F#R)5Kb||lGYY#wCP9e%{KFxw5dI|05#l~`#1ZxtIKpuPN0=vY+*AIvz -!9z$IKsmMM<@v#_arONa2)p>M+h7t?(ao<5I!T!5&l!)2=@yd;W>dLye@ErxbG5igi!*=y_b^({@3^a -_s7q)yR!8`5J?N#6SlTifNO-Md^yd@od+A2tOj!&S8W7{{;C0@y#x@~6~R#f4pIUE;@V-jqGdP=cEV5 -JiaDDTXvG}Ae5c~-Y+l-i`N}rT-)zHtV;koC+b}=fhPl*=InJ}-gBwZ<$d!d7`Sohp6_=n -|G9HkJ5`*3w*B5o3~&AI=D!yt{$aTm%w^oJNw=suyp%I&kj{3_}p{HsU#o2}qxF%O^Xvo10BRaHm#a)V1O{I4*6u7~( -3wI8iQ(!dPqyL$BUSDL|EahRLP8`qs09qqzg7Z#;bT)n4ybF}J9|{DO7_Z3ORZ%^K)G^2+3@#;ZpQDw+GElw -O;%z40ouM)#1uwW}H_vu5d!K}g&h-Lvb!PjhP)KBJ9W6J@FRxHY-jqjGVLYr!Ze0zI6RD=0+);SEh2N -+H}i`y17US`3O75Cte#P#&OEpn6a&=W0>bZ&l8tqM}G*Vj`I|X%czlkw==9@rsHH^7h+rleKHtvNHbZ -r=OBj7E(!ngN -R`bYZ01K&=WGG%+ZG3p(F$#W7O9#84IWV)!V@AmtrB$LJTmF?@MV0fFBWB7|H{qfSJHH4L77;h}<(Sx -czdQjpj6uF6#-FOJ4;^~BG6wA`-=C`GVgoKc=urLxH9!^G%97(iVEio7jEbS&tm_VjZol5S#_g?bA0} -qfzX=BLj*|W(*4?RS(v$KiCVqxva!i5XTOSVzuokvEJj~2y{qS^6e*_=4?RIZjhXNe_S3Wt;T3Jm1g! -kJ{lN;BE}#5hv@${Z59jgtO5DH*(%l2N-U8FG-45l1MQahQ_0lN97KN+x_oNgk*v-%xV@_ms@4p=9O- -N(u`LNm*GLS+QaT`Nu#0L7sW$8M12CDzbX@YVz7^ud)1Hvt|uhw{9J4%eHRaN>1!rLzetZ$+~(<_Uze -14jec@4j(>DjvYHjPM$nTKL7l4^2HZlkc;1*CMSNOhCFZ -iDg{`09HSqlDFf&cfxeMe2LE4z|8wBK7W`iX{|!$52 -lW9NUJGUYei)Zo30bq8kfShes^0~b@VFnLrw0@I#RNjnKTPNkD+sOsfY1gf|Nh{=7x)hc|96A`MDPz` -)x)@-&IkWX!TxqF-zxxOsY$kNVV}w4uiqI7w68gb@LXUmr^0|JT9)TJXOU{2vAXXTg7+lYga1fdKH|75w)E|9!xJf -AD`d_@55`9|r%+!2j#ue>?d9+{u6QFPVSNMsabYwWGBZ$2H7X3r`2?>T#3CZ0%1_gpWI0zLE`Xqz@QCjpImyq1GW5* -zF&u9$pr2!%hj_{KM{5y6WH%^ZMz-#c0OqZ4%r@rk;`F?Vzc5Dw73U+4fM;o--zD -CAU29)S)-`myi_$0R}$C&nivGA39Ia{2@P$-2R@NJ0XH(Phk-jvYIK1BZR`UG0)%2gO4K_kjH!W5zHN -x;gCQRPL(i_Tljfx1J08{w*Q4|g-PxY1CSqoU&Cn(UL4M{CE&wD)ko3(&Y^4Ben>ia$ -9Hos5t1b@7Nr`?yh1ToXu>J*E#7uvl-u_T!V|5=X^AStG?h-qFR;Z3dpDy^4!hk6j`2|I -B_DAM;4jJI%JPG^6w_4nek+$C626J5>M7VyNC?k4>AR`bNW-1O#Oz-4EX?`e)?(h+;h*7=bwL`y!6sb -uTBTP0p|IJtAn{U1$=g*%fb#-;*!i5Xum!B^ -(+2Hrze<#e)8ihR#^mo -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 -lTz;Gwobtkzg+=}){)+gA?vEd -+l1upuo3s2Y{YBm){+*QStC&%;vUHihJk?uSI3=Gy!#FARF<()IKXr1(gkCPbIr)U%XU~|>jn<3_@kP -t)j0uLHlXIrzOqn)q#_Z{NdCq^ndOdWn`J3GowXI-NuqAjj*dDwP^oGWS3c^+4P2pYPrts15nec^hXS -gdoGLjM*6G@L`NAe;Ck*dh1$gW6Jg>bsp4cjk2ybbv1dKM>cz#$26xkr#ELcXE*0G=QS^CE@-wQE -zzUVlhHHL_UMIZN3=6~HQE*R*dy&xc8cw_$Jl9hx}9Zb+c|cgy~r-G%j_z<-ri*Iuy@&(-DJ1eN9~jL -8N1!SV0YM^_Eo#f_UH#oT6+Ez%WI9X(yVkV%gVNLtUPOxRbZ7_RaU*V$=YG<61U%EwOB{3lhzrl-MV0 -PSe@2YtIP5PMg~R&QUcz1lod2}*(M)=eb>c!Jc4cm4Z*nhWX>)XJX<{#RbZKlZaCyyreSh0FlJNij6l{DsQjSbJ>2~iqUzKd?x*J~;+h;r7y -_3BvEm9V1id0F;FMZk1e)9r=c%$sJyT5z%YaNLM27|$1Fc{1XHa9kd{c8D8=hyQ#i1r7;tKFBcw&Bko -gY$V7oIJGistnGmS$mh%S@2D@D$}IRt1^a~XIU1!Kioe!Iy;El`!-0*G}u2rIzK)9>f`zG=@~wRavS+ -#S=DVYt*Vw!X@aIrC-g%W&nx-uho& -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 -Fc?-at<)9peMl8h9| -74IdiV^qLkGEK*%31TV`Yi5T<*w8?a=-_`X`jdkcgCaHj4jW}0|oCQ!yCdvN_fCR!j*4w05Wda!UJJc -JvD~-YKT2+&ipUUx1;`U8?9j7@d(M?v&oVIWxATs7$@U8K8HS|u&VDYcT+y6{qOzrmw<0mn=A)pw2S3 -rSSKmPg{bkq#wH3<<_6f!6@~Vej}hZ~0cd1Vn+_huV>(AHQh~?if27YN{ky_y -yv%lJq(Ma6ara_u3iu6}@dB{0X{O+cFD?PL<67y~^E_KVtt!iOjGga#cKv|39JPz+kNm4!s<+@r(7YFZ$i|g -6F$};8vvbd-c>cJ(zxA63(RfCw$+CQCVI>iN3#Um-5NfR#|mi8!Ob7+6umO(SEb5M;EVPO+Ci)OV1l%O`0{aAviZ`u -bms3C6i1kH4`5(;ARnHjCV3+kuJ3SgNH -aqUl~uWo7;WdxJmBID@}xE*8K29t%{Qpn;Uj~|AD{skMyrAOJCEg%N;Lpv7m$x^FFWC$%_0)KZk&+M9 -xW_?qh{g2$DV4PjGhr!gt!m_y|5kBIj)+jShd+RSi=-oI^efo{wDZ98zv1@G#g+m2mEY=-5no`O|`OJ -ve^Sg|EdO7R;$!ys -yUgAcdznQOLce<*xlw^y3!bvZ=8JLw-jmv7+zWy9b+Kuun07@uXiv>=Q32Gj&HTJg)lxikZP)b@2Gi{ -THz$b|UBFJDJ>7Yv7;bLtI97Ir~jMyZu8Y(liJ27zSt^~6YM48qMOuh3Age5eG)1Tkd#sF)hG!=4+00 -^mxpHp$d)YiC*fvL|WVB+7ywt=l@0A_(g2l~L4U068t8A>#St3ZX^Dy*g;U3x&tGC^8pO&PWxOlCM(S -pTYmSwwZss(Hg*!DRxpA8hTRTA`s?!J_`k_G1=+!3nGZ2|7R_TeA$*u|$k$_E3`=VnHzHadYDzBTbA=P-mBvfbS^gBY}iQGI -q<0ag!W{hyu3xoc6`AoH*z^wASUSN#R9v?Q@hsV>MF1-PrMhP595V=91Rcd_GWHhXTlz2nSlNMv~(rzBpqscyVwoo|A(E83AZd#D1K`1K| -@8GhV1rLjt1IA(%cMLGqDU0P0S92AVrr|li!D^Nk#hOAClXI_t5ZkVwJY!G6s0G>~Yea+9L`8@{T;(# -d#8fgFStb4qyvvfdKCBwyy!M#H44&<}3j;(fxu;c~`Uk!I2+bggqmd1e7#LJ#;L8-aG@EeTugW)f^G| -NKKishJsIjAupwo!#n-FTNN -CyVbwJhlrr~OPeF!y^iqqv6V&B#Yb$hrL(26{j(JTp(t3*aG$zr+NMb_k^=G?HoVVvi`lb3HD8-c9cu -QhriEf_?^w{+%LXw_iyLgpTfcX=sF2n7rM?a0)dR>t=>V-uKnx*RuUgZXa -+j38h^C`&7i*@R+O@6@6{I2Us0LJLQ>e4#E%MkRV$okZypac-J@wh@l=hlB9-p|zRzpn!&lZ5TAw8oh -_$$q>R@YH@ib&ChO_^@-3@3mMyJ9o1+vMX@mB?ls4D|wAJ8wl9=^E-xV}A`bXvT~emOmE}KZCk^yB?x -aYq+JNz1%0TKUJbV*HZ_I9n*)n`25bnshWOz2tc1aFos3$k&!X2cLpkI?&Ms6oG85$M|miic1kt{BOS -Ov??mdKZ3c8Go=h=fR0t6G{g=t{w=U6KcQy9u)K*hNH@5MTrCGK;#T`zGLUjzom>X^glAa(27kO)2e0 -5{YK9vwATF@(m%jqy+BhyS;Z-Ezwq7_wFl=WMAgrwJ4${j?PFNW?cHifcf;eMq5byXC2o@GSZc53^AUwBrllr%556dwVW-SIh(2gJ`u<7>q?MxegMsx9%+<@2f}Mwyc%n@m^kLr#T6zK4lJKcbUf54nud;Reo|8%YI+)2(oyM1ha -pe-;&9+Xk?sTlZOD}={9;$z|09XRcR(Ic2jpA!*vTG`kn|stu{rGNW0_GzN -MdQ8dB6)5vST?h(M#b1H4?DRm(&jWb>P1&1^;BZizvj&_rR8m9RY~#G<1e~^M>i~VIxLi^F=DkBgJ`^W5ntlBtu=Kc6*5k}c@5>G5mtH=VakKivu$;&;qhQyh -geklQkl|xNy&c5QM#0OzL$iMxy3QT(Ls)AM@l%;nJtw~92~MIOlK -29#|HwZoF9f56PqiCjTkdlutNqj6{r`tIqn~4Dg#NQLFBbt3ok>%W*7@ZLJ@PDqnnEYCEQAm%iu40nO -1kOCxv3~kN4lce|vKB_1p8eh!DWb%g%#DgcB|(;|n|}87?>9G^+*s43al}haDfZ$ow$mAW7Tujv^J4N -JRBW#7>US4*$xvD}|;HOUfC*m=ap(gjk17Ft3F2*R`}QoGmdn@_q@Rv1kA(?eUI{e -R)6qzh!(*dXy(tj4p-X$eY7*SbnBT*O2!bW=Ih*5woz3u^O8jwYBYS*n*LuZe=!Aow59Fvz&L%5159) -<1lE~!gk-6;H8@s03jyILtfFlpc0W4opvFKd$AaTUPBpyVb)>wytw>vTrNgcDGTfGfa?6GtSx#AtFTDXuGEfcXN8pu42VC$t$Gf<7r9KyrX`^8NQxB&9XFvjY= -}-;SBD2NVI6XDG>nz0JXn_$LGy!sVoDfB-Xq=4SYj -%@sY=xVeH{kW6)sC*+Ik`f&f%cm%d@B81r&V|NStLzGoL|`!+E5IGLz9WMxS&#c0*TcXY=21b_czcW< -yU11#<%f4|8DksLWd6N&y7LoKV=8u-M+QN3l|zQA_+2323gRnSq2h#Lv+vLSLj(^(P?BOG6L=wdAR|@ -0?Oc#I&Kfs+}x5)N$roosO*97X)!DN#r$!O(dP1tk9Q1hG6L{1i#p=UcF-A>d~4c0^*cJgrGN=+7m4k -@WpOGNx@tn1e~2Y2my{gh7}Fnakc6iqiBYY{-AfGNz>|qpYHrZm}YY)1k>u^$?5TbVt%=!w;v8BZ;!s -7UR+a-pp&Dn36~6;Y_?f7vnjk8xK*g*J%a -+&#IDp_QDlUrhvSrttz-4u|k?oCSwoKKtK_|l~#8FBpv~HLLlr|1kQ;G%6v>{s-=730>_ZklJ>v(U$Z -Um9ocI7jJ&ZHos!+>fscpb0uv^MQ_xHFH5n#@rq-1Cl9+d(jX`MHUufk>Vj -Gov_Gnvf$bI9sGdBc)zN%XB&jKz}aIWR0hKF#a$5NRHgK!YbUps*%I)6J^tH8Gr)=i%+jc>Y81N%>@p -D(CR$qa^KF364SD+zEHapqDQhsG0b%%vVm51@veXm`&^P#uGQB3j3GZ^7Z8UnYFK=4Cjf2E%T*rUd1$b5vH=s8ajGRZeeRgseG)Zu!~qyrNz_kHwebDIPOz$ -M4|4tRtU9_t&mfF2pGC5B_7Fx-f+u3&iZB4wWQYOx(6aoeA@PIhranr&TX}x@B%C7E>27Fsi3-gFElNMY_FG*+Oe!aW1bcXIx5mI?FlzP3DWU{P;IHyDSh4XCSkPLSR~ajHpZJWA9t{zRP)k0fIb~7%mH75gs -L;%qha=rp;lEB%_1Rv-ZUU^HeY`J$AAB09DI}C^N`Tav(lUiHpR{pc6h6%1+gZZ2N&_YdfJ|#kJ4TeuJmY8?UJD32-=6}=U>SLMRV>nZm -5-va~-pXRKA~_+2&0^ZFV>(WS6s*gRgbi4pA0oL6mlU~zq(~lvMlGOL2^BB1d(8zhe77u!?| -La`Hs-R8rYrcyDZYnXwqmw^8(=WW(WQgg<@g@nN%hd;!V_8smkmz#3NaS2kH@%u@x~c)GZJ5 -oyn?ii%S+C$S7lNS#pLEYN)LSb|!^oSo!!%i5RLMn$bkgh!A6(A)i8CT9l -lbh9<RPo5KQm$0x`^OMxAU5bX#uK=8lg8TaO7Vp3S)qWue)9;@3Bp@ZYu2&%R0XW0)}=nT=IYr`GR -fRo}N*X9#B=yzl7~bXkXPLLF_!braLBCT9LexePs$?pRH9)6=7xd0n{=>SY}?~a<6cm7O*>C>ne%`9% -~OsDP7;qLsdF2EyeMSbnsKewKL?Ewojfa3HxK~1lJo===yR)H9EF2BWGtmS5EwBPMTJG_%VWXnY()-n -O^ZWwEnbt9+JjvjW&RY5!Om|o@?~JO`dXH6Tj1G#Z4*_$ -7Mb8wJyex>5@fe@LfaJ`3PZam=3IS$o2Iy>R&_X!bjiS6Axe+6tue^DuCP_M1IiV&M#OP(iduYx+iP? -LQpsC4PVoS>D{^X5l6GrESJ67iwx71^vc>M -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 -qS1=_=m1LK)pv7cP= -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 -L@$X!LL%NCtLl-2tXBs$opo~8-UT;q -hVUdXM#r6&NtQ{ciI^S)F+2bU%i!vMpn{u$29e>r`u``TycaubU9blpKy~d7P@;)(JfHjyee4&L1C?c -P79&thLe);GTjc6`mz+@Zot<3yd$(FG!?_^>0G2H8s9r?mzfTPx^D;Me9h{3u_o@~B9Z#oz8NCj2bg5 -Bd*t%`ROO!gTMpujS=`r*ixZF}E`XBmE -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 -56`B -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 -glNwnk-6FqS^*FN#?_iHAu)lo;Uiv+Z_M9& -A3@V#cdS9aDH1a7O9bZyf3r}!ZF%Prl)ck&>yl|?PH -yN$DH85m%2 -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 -`>irEU_nPKH3FO~2*; -N&&yV7Y%5%T;ZAFj}#jxlP{RU3px2e4euZ^W?F?YnD0gA~bM-gQY#G@Ib#IwWUN7p3p0&w -Q$4c4;EU9IModZR?R?U<<3xLd8VOYj!)p8=YX`&o)c -Gv%uB(Wl5Oby`vCFBP5$~E9-x|I>Z%$M+KuO$f^_HE+) -vcIB5b@K!5oK6r{7bsr%I_DL`Zhde(*ep$4Vi?m90{Y`KeZ4iMdydS02K)K8UfbtD%knuQo0qub4BC} -G1gE-fWS09)Bx31e%JzP@UWG4PW*5TihOO|PbIRQBY3xX5t9Gwa5iIlF(PSFl)9~U)#`d7y^;g==3dDQ*MpH`bkeW^N&ycxQ=~t>I~%9*r{?Wca5JIWZz;lNDCW -8&3NIT1lbZE9|6#*TV}i?BNI9)&`vk!@P%Us8T&l*1{@Am8#S7`4O=`d=rrVTC#j+Zn%7>L-F(z&>It ->ZZVg*+MW46DKmK=f9fIPKI%fop2B~ViB5JPvHm~c?K#x9Nz=!5bm>7u{Vqe)c)S>h$Fy5 -^Er&0wwSCzU*O@Jh&u`>9%KwOwevRl|)DR_rTuF(kz&Ax7dZ=ITNROm!|Pq7&-lp+n9ty7&_fuqTkOZM16}9ooiRx=2?Q>lh4lLopv -lt7AtE6vLCb+C5XXd-An==FmI?@Tirm@%gLCXSjFgJnkHHYTB{2sNa##$d@DvJo69Nqd)_x-H@(npP) -I`=MQqL0-LWxZ;B&rXz5>zyYd?f`Bf`%yO|y^jLt`S4!DNjIryR%7=pa;YwG~&ZqvfnuQ~Wq7O*uzE0 -$yV$;CjlSI8rU+un3W-1X}^TAn;3o?0{0|YAJ~wI_3-OJ(Cx~BI~8IFp=q{<7gU|qFtYo(Lv;K^g^d?P!L^;`;6 -|bFmw}{J*G!Zhe<)rFj?;bP*Lf0tTb@rd>pz5QHgrgvX~oPWFLdj-pBFr6h8J_7LSqaN%p{7FrTGfE3 -knt?;f;UBpw*FtF!U+-Q9Le6~E3E-DJaLw&SLiU>W+lf_q2B*w)%}I6){BG@W4k1X(+75%Wk#&|F&-6 -=%YahaY@POX-jqw@v{NR=QlY1+E67I)Y8ygAcVv+j1Lulh)x7g*WmfO{u~PKy;6G6LYDysm3sP6m0yZ -hFJ}Z@tj_adCiF*)o6mskBO4VD+vfCkET10MLuT=HKmaX4~`~qU;k!%XX33@!qJ`Eoh7A&ng)ij -Azoq_=+{@axDalGa^rM^eexTvHhr!vndV}`b6eYIB8TdPij!6Z#5Q2!VCAV=Rq8Lxw-UEHj3#FK1O8u -9cf%ho$1l!vhyMS{Z@&HCQwFAhdVgIY<%GDdO`*#0SQ9om@Z58E>|@T>z?40r(x0~Vu|6n>2e_*l}bX -o^ -_(=a-tRBS+!-NQpx_|`UWpkD#;)sCG$x*M9)0o6h~p!h=c(g8L`r<~Wh0s5@q_MBFNJtPVG5@zjT!?h -xi3#0+;{?S5a6|W5qiZ}RlNUh}6G2;Vsksk!DCo#gDfbtIG*sQQ>N}8JCqi=qUs5=NXJrhC3+qsVIXz -xHt3+q8+*v}CLQ(zdk;xPX6Afz(uVQT_8Sw$gK0(7vG0anb@LtFLGd_5G@LksoLZFYCFZth#R+)ZU -5phL{aAp1vNikzvPPorI7e_ZpNVv_{z;J?8OhZ=)`W4#;%!2hi^l%uY%kWIOjdjL}#f+lh2U#9@k1^nZc!g9v(P&eusdwylUu=^-EdhvdKQZT7pXz3CTEzYg>35V`Ua~}7H%X!@0o+n51TzvW%m`Nqs8a%7I{? -MBLm{i5RZ@`59Q2n?&POYTAG-YcKxM-|8fD3B>_QDNd0e(6^GE19T{iqdLm*Hvs+LQnCs6dqD;Anw8_ -oiWrS_nMOC`7t`Du9Pt=zw>wt?sY_1&&P;z&d4`pz_w!o@3Q~7_hsN@q}D(8z3d(}pCJ1 -i>mP~RP(F&A>m=bkS*yHYg=$>qh1LxK2;$Do3)%KK2tnz3MCn4^6$97~2gN|b=g^jx5gZDk^?CpbOnn -swF&8wN7f%2I`{`a+%F>7DTmtCScqG%hnDbRP>>Z!B*l?kI?!1{90A>VEzvAYqee~{RKGB}EKooqT!7 -}w-NN_`|7H+=MN3VoH*y`DhjH;{X^`Pb0*+3r@Q1os!EGkJ;o%BNB6ht1uX8HW|>C&VvaG!Pny9{yvo -{IZ47{C#yvq#XIpQ$! -%p$D-mfM!{gzFxx3v~C#ohoXB?AtKQf-G#b=qxL$FuNnH%<*{!P=-r=>YCLrv!XK*aKJq2-9a9Ae!6U -s}CisHUA*nZsr04%+HnBVgWTnlct6}XwQmyPUATi& -?FRzdKIZxtKpfOVlK>HiK}DVOs%SKYdZ1tw&kniAdk12&NCq^#uds&Jh`gijFi^(wcWNz6CR1k)XcWb -4QH!d4%#zsv^{T}X6>o#s3vs|MqiwU -Co3A7bmR9=$uly94$qP(l&qtHbGI|iJS};?prBA_^vOx8ce7^y>TLbio~S|ePVD%uY -u8h+%0C)uhnF2>c`d2laHIkiOM?b;|`$}2ZF5N<=zn`N2$QV&^e&X4Br3&3;7f1WhBj`C4JC@NP(+gw -9~ol+wJO?ve9*P#tNNg(tY%mD)=0#u%mm3UubP+;ww)Ug)2=;4q1_3l(0P2$ -$z26dE27xFq{=Rz)x;_C*%5IfiORh*$g$`-TeLULVr4!hs_pQaK{q$(wibxFL34HWO8QVa$IUtl2#44 --8)|K@;@fz2A}9cUbd1)(s}v>ELci~6=Db78_l3|S8g;zB_=hK@KCbbii -w@;>X;VyKN9fF&r+1|=eSP5&tF8qQ-Of<>G^mH?B5Kq-E6yy(JBxs&}j>hfp+8O4A9GwwAHk*^+urY6 -k!7@ddJeT4`_J_(sCxFWzEx@BV;zl7M$smyVL -C45D{k=ToV1vLEgQDVP|c2k{j>*$M=5&LRJ>St=!6P7=dzn|v)KkXrle -_`^R>;qkFHN=K00@$>G+Q>gF-8g3sX$)!%fc$`+d?%AH5;n@Y5^y(W~|E5wQ?tm&+j#P1t_P;qC&|%PScQY8#Y&Evi$b#8>yRUk3}6EdR -`ik?UC5@A8aDC4ku{3vv{KUt+-C~2aLWZ8&HXgR`vAk6K%}e2!x!6lS4lH8ws8iveTvgU)lZUu^!`tD -dRSpYZ+PgMAN|Ml-jVd^Cu!}=i>-rElax!lK4F=EpUSKTTFxP@Y+0ey4Y=METGODA!KhgXU4Z_T*4f3 -9_VVIFbEGHH<{1%=L@I;UT5(dPltYdV^&tP1KN?YL9Hh>!)b*=B(PO1abe&#P`6nqv`1Eg@re05u9-~ -T?!xe3`C>{qQcyt2lQMHgANMSl1|4CA?pp)4rZw$tdtf=@UouWTm1i1vIJZBD)^Xi;=M6kR*xY$}rI> -eu}-(+h(n<+Lj-|7uom7}?7glo$pLU^gk*nH_M&#`5SULv$F&zX(D9tM148&3qco&!P6I_T_7X*L7B0 -zoG;(A*>_fLU~~D>8#zxQecXZh1+%Ha|_v>teEx(7M%v+cz}SEwud*K3!D~;b-eHF5Of$5H3%%4sy*x -E7}vGX0yWs1 -*sTCz!cdzIFwR})C(Wv@-2{y%9Y -vmgoB-&g5b8mO2qTEbwp-e>TD!NVEsgJF(xO{9*sThnkMEcOl{eXNLM6RMjCgXPykmu4?*TYarfPMEi4v`-*H+v=RzOXY+`N`|gjT697kKXl^Z -plKBzb)*62kKh1xxu~xH7{ztDT9f)go*q3sh2FpsX@1guo|&`cs?)f61!6RsseaOfb}P?m;7&q_uuZU -mxU9d)WzKF_2T0?V2o$6&pIEGR0#0N#$p14^uw5t^<3qfB7SQ5dB%rg|;YhnD2hOwiIIR!9wI#_z{v6_BVEb9)?S153l}+X%D1p%fK#1bWeS@-o1(ZHN(I*Uca5 -?E20R$Fl2#h^Z&H@~&x&S5Kz32H2v}DnIOnRv#xFz^0Qd`i$;aOwxrT<;7M|^~FxzJKf`$5^=+7I^HN -|s5i+>)kD>^yvFdb#NjTsnnXj+uBN{@oAfMIFQZ3$Q+2=G%gRBw&ZNP|ZWw&7{SZw(b$m75RWsI?f;o -NeNYzVc_8RgFaXUsA{aje|(Y59K?0D}4x&ol|6Ix$=0HfBaRx*w`5oDakaX!{e-Zt*>POEhj4)6P5z1!wATpCKGnP~QPhYjPQ1?hAXK -F&t2X?qI<>A1%v99S}%1D)ER80?iU|}7q* -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 -wm7Siv=JYhuY8TGcs@5SoUQ&Lyd -7N#{r1_H3PvM)n2W{{WZIjsE53OeU)FD+VUwfUU8byYbn<#u39TuZot;oHot)Fyi3Z*o8?9UDn|iaS4 -rcH2{o~03j0wVe~I;mwI_@Vw|b>aHwmpGFbE)!*0rdh;!1JEl$?YZTj22!lz}w*B;sFM1?C0t?F_)Wv -NMGD%@((X{=#zM(uC?)eB20|Xa_Qe%SIUK4Mq#Ze0@L$qaX_jFD@Hatw??ks}o=xG1BrdESkqhfu@9x -@3?H6H5A!2Zs>%3oE!S^4ZeuX%;r7Z8jsg -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 -Zh35g_&n#!klTV&X7@;c>x6YVtSf|d -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 -dX)ZpGOTe(e=57n4Ec`<_ddeCkL* -NBIcZUV#NGqhTV=ij+A${ScOU#IASa~fnlk>ANh|LYbv$l!x*vBQ0pS$tKg{MrQoCBpyaLOE9Eo8p0| ->(lBbdn(n%Jx+Z-|Xk#OiIu&sT^N(VyZI=Cf@QGKRZ?ND5YQ7FgvSTSd*jT0|$b9_%0v`G0W`6y{C=_ -%KhyXeOLC4BCOK1BDIcVdbde^~LOMu;;>|!Bh>y64!{U?8 -mYkGikw(9qG+`Sy$&!;RyCs@ZGEMT!FpFf1&B_!G@fO)kHX|j?@}@>mQqZfXzH7lm&k@w$zXN5{QOMSfMPMqX40fd?(R+Vva_dWXWx?ke|0zV2i>^P3JfBE-TX}LsM0c31CuS86DFB3ZyYbx_vEy6Q;N!*rOL`SWvWbhrU@2v^7wQJ{qRg!;Fn4TuS(8 -TC1+Eh6bg@8KmyU*Axw@bIYpJ4la)cCMReAslf<)_tnrk$UCdNdEvB3qX_*sMsUq`R{Buoavx7IwHK! -2jDVFT?v8cS%HLv$(L^fdD%uqxM_oa5kp2g%j)K~N?8H$bm~vm|Sd>C_3EViIh0^q1K_d|1C;+FR4@ --le-LS;idPuaj~Ecy#a7o#;wW&zdgEvdb;(ZXizMJZPX?b0%6cOqu3fRS(lNsx@h;DpN+bdB#Jx&u6? -zr3hUzbaD_oML+}-GE5m+)Q@y#U8yJSOyirbVui8pyYviTfBnHGutTSeVhlDkJ~IBbUYlZ!QO5^99kB -Yb`_`U4hc&tg-Dva?xuX-PKxd4megvIG?&#dKjO=t%Qo7uZj2>!AHzntqM)w~c9WT6;7N&Q03R;-;eH -c6BOU?15hH=67IxvsQrt)6pWvt_0TF?LZ{l?qIpQF0H|K-lN_y4)e?ft*-uIoR~!9TE@kwtf_>wl9B;`=hJ5F?ejTnx_!B|%D%n-mpQjj|Fvni_fILgJ^lepZlC|<)ph;%)boF -LZ7m;vSkpKkhrVWHwsZEN>=^c4l+y6+e68Eh3mNf2Xu@Z8+AiJ5W=!?J1-V5gA-(2t3=xEj+w -xX_w-W|31ts!Jw?POd4RZgU$m?$=PDl58E&7(gvS2iMAXnnPD@s5%bA<(h$y$i12kKg0TrwOd4ESvf+ -`)N?n!lV{N${aUGsHNg$OHl{bN=%oLXj2q>|&;7a4(F44J>rty}E6HPgB#8wE#k1Pt*MC7EIiD~KaR6 -YWiV3&cWBTzU5D9sP3?x=zMElsjkMEa)gj&PLL3zte-~C!_p>9kufd1wT&T$%n_MU5ey2+Hyo|5Y}JQ7)sNF@%U%O=4d9udcw2B{2=iiN#7Ng$P3T8e0CXpYQ|N;QF`iTVVoo=A0?Lc -itkPHdtObHPK0cEgp@lkv^U>1V<^j!BX1M5lh~mfT4|t*<3DmB!FCS`@hrHAzAhkJO?vQwFC>B^cvey -HbO2)XKOFjEE)l1WSpd-jXE9I3+gRrT+8$Kk#7gHRyZe=6Bm|i^O|rt8k{6k|s-jJR6SdbgOe6f9Jmo -(SM%*FCNGfzMWTO$3-@wGs0dRT&aok25@*G^f@>d4f-5+*=#18&1Jt94u1E_abbGM>3Yg;*#FZ;2Do> -U-2>(KaQQt#evgym43*vEWiwGuf25puy6m38nAjZwJqq>=<;b`;k;50rIM0#ICuILZ*}q6m2bTe3h5I -G>{bd=SHFAEh$?ltE{63fczn1;Ino7J-c&6~&(PV$py)pkk8@@6B|H+5TkMDFNyA$}|{`}E?3Fmr`i~ -K0@<32O8p$CnEZw1Y7m(!g+Dz~TGIlkBLPaBrp;f2($zN1ZsjF1S$eAf|dk~p!#bgyG&psI -8Shf;3UB@f};e72o4bJA=pV!O0b3C1A=t~s|c3L;TIFkBPbv+6QmQ2BN#>yM=+4UNYIl&MbON(R>r;P --IKtbfDu%GWn`5EHiBaWdk8)xSVORwpnxEqAcbHw!7ze>1d#*=f&hY^1l|N42-*^~B&hk4(j+)ZaOg` -Z{7y1IBv?oA3_%e=Ho<6uVFUvSv;>|6HAjt-eEjD{+Tc@q&G@&zJF#1F#kl~=135i**vLj4As$m)b+w -WG*FT<(K9awx(dWMbx&MZzac!gI-?+B&e-`h*^ZEZ>2IS{|xhUZJc_(LA_che>jeBCo6SC@=y?Rpm;{IVH?t2<>Kh}u5tpRt8{i?~`y|WXu5%b -Q=n;|Q`ofr;XQr^9~Ik9!_weO|9o!BI|+V>s-SNMUNgZ#jC^4?AF?(}kn;?n!{>3FvtJaFKE -c*m53xzo=TUXv>Pr_Zc(zf6(&F8O`>LHBCJPfe|n-t!Uuz`@kigS+MT8p$7LSk>U2(yt+ZJQOBhN?&? -Uzb?WbIB;;6Y9TEr6T-6&VL`it-3~dBRui9e0en&-h%%~!X|kmyf{bUnB*1RXi#+*6kIKa%r+fB+U78_VM3#QfKYGFnsv%ZK(qT-Xt?=O3c*3oNq|tvrD>f8#O$M<@43sHVj94A1y --q`JDf7{rY+)r1){hW_Rq!J)3sq%tZ!v8&JYDmBB;e6L@44d~$D`N%VB>+LihE_%O9v%|b##Sa^6ii; -j*Kyc;rP2unyvU?WG4WMjsRVY5^Ev56BWvdNPtvy6-kmXnhs+K*YYX0ewoVeHMvLfHGW^{jAW6k9MQf -<2QJ&R)zhvdwdJ?B4~^?1eew*`}r0Y}ZqdutTe-upXaq)^j^&zPmUJ+sRqrKF$oEb2j=j&LWO-_Q-M0 -hMeXsmtgog&PHA2Y{D7N#$V=a&YU@{q@;u`S+ayZ|NQf8*|KG9`SRs#)v8r&?b@}XeAlmE&o*q>AlkA -mTeh$xJJz!&e&TFHC1;<0`YGGHcQ5L215YeGWfzL>G*BsVRnvbUlNtm1802=`^9_z*UOPi0H_61IWA%Z~EHN_ -)!MQvA*oUrq5tDE>f-Ka%24r1*KfHJeZIms9+=DSj!%|AOM5cZlDO;u|UcqZHpv@fT72*D3yXihr2mA -EWrEDE@a8zntPK@3; -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 -qn#fjqK{l@yssx_cAAwfJ0=K7Sfo0kzBIL#Y -lq0yXjKF<dpCm^{@DljS;#kmI{vf{XAEGAzt9N&ojiOhF;{A81#+?nqu74Z7F>?dDHcT0Ck3#9oA8n>NATOOHwB -9lJd_SH71Se+yQUFIQ|-DqHQ30l$;AX{a!2XahR?{hkUN-x?j2&4muJWIEohJ0#os_5O11XjZ7YYxzt -2kA>aJT=rBJdb3T0riAh6^pA~x2=RMbyz$=O>KRSR$bhW!$b=wo -$u#>({Y3(Y3&q*MIIqT9{U@M!ty3G$jKqkYhmOJMlSTK!EFD=E@3MgJ5gHhYjuj^ICT|(Z_;u6K^why -*4ntumCNelf80K3|eMJxdpv4}=t=~&yX>pCE7$s#s!zhN2XA-d@Aky0bJU-QiOLFTpJ0kCdsIV3dZ7`U>4dBwOoSG -f733@C$c+P9npnG2R_je-?Jh*tPGIG(Zf~T_g8Vl<5V^GVAm_e|QnV2g*)7(#(9~>38pHhR<`hY+^$B -GF`$Zsf<%UZQ!Umj@u2w(!*h@C+wv(+`S>Y>?LfV3v0Q7r!mDNKja^zX(oD`gj;VW)!GUw+QggNwW?B -x#V^^DliIecFqj+$y>G(CVs>h7o*U0IN=h?NByN`|aQWp_*YH<}TM9P)>7#79FBnE67;?5VjLht!kXA -0Um;jkU4Ug5V`P!;76$;{?ADT1s{>R-BEMm-b@jL%q6Q7FL#fa9(-J3KXYD0VYxmtY$Yooyic9Ap;`H -3W7rL>oRqPFo|`bk8*bY8Wf<3am;Pw8L}}$0&!nro(ou>@8WraL-V|Ft~>xd^&lc+yKdVFgSvhq<20S -f*?&}4u*9NVQdUr6QKpEsvSpnGdF&ikPH-e-J@Pd!*a4?SxBUt-YfWTFaR|%&@@tN=Z+mpzuWquG6)X -^flYm){cd`a%9pnw%4e2;;P5??_y-$J^9OOm3%RmaQa4OS)MzWl|5nD4@XU4P4+He+$o%~luf}}PfNt -vA3%g=Bmk3g9=%FA5PgVe#BdU-s~4{@$~zuKz9O7178B6Cv8j=wFF({j(QKt#e=2>V%B)>{L{Xd-6dt -QZLTBl9h3Kwk8qna#Z{8mGcukN6y5iS7fA6#$~i4*)CA3q-OfQp7tj>BD=QNxR5STYc4t?m8ie3*IU2Q=^+a_&m~x^~j<#B3+eMi5gR;hLIM<=rJQ?bA_+aF -jWaD!kk;rBl^^Ux0Z>S(?uz^s^qOdy+H&&s -eP_x}JOFAGkjS0{@_ED4-(Iq3Tky=s-KUYh{oln)pbmkEBxM3`Pg>`5lXG~)tSf{WckSikacS%sBu+c -wW!6xIBs9>hwS?1g>=ZFK8cpl_@yY^S%uJ89IMQe7phl!>FOv%1WhuDHoEE?<8?x1k?g`2WRic{%m!T<16>=}g0-~hwtM4|AQI_q@shVC^U_*ab#TpF -zlrhYwMf^o^K&r3-_IM5?;M^MI#{WIW!gP~t(NrZ(fqkT9^Mgu-kZZ0WvnrFB^D^Vw^Urp1P~_IvT@% -l6W09{Y+Iv6b{{A|a<+`h!Exnc8K9KWfQu0_$pkb*&RvO|v7tG)4aqC3g*Q(J7EJakAnRw(f_HkyWHx -av*!in4BIIN=@l+EN{pZ4iJ^{#qs_uaBG)SeNOv1FB3mHh^RCs8^&eZ|6P;*0dD5_?E4sY~`lT{|d`s --?yV5aM~Ef9}=I;*ctHuC}r^NGUbaS+sCo{&$xq>qgWeFCXfEgUu4AQ;4I160*)PQd^qdTS>4i~@0Mp -BUQBC@oudLt5{6(2&gf -+*w|BmaUz=m -?$phkssHC9P@4+I>#KS@RDP4IDoS6mSW -OZjEmE8Ied$A3D!5Z7zWH%9O@2UNV`TRSEm&t6HP<{awG}pt_85TzVBr0KBOzdK!;FUbbrsc0e8zI7s -={?u2=)4$<>ZJ;Npw8@(F;i3<2z2`kbG9>KETW&@;=P#e_&rN%fK&om#5277blqXzoH8W_xuBB*&qob --=iuRPG9tF17eV-O3!X2E~29`x~z~<2xVO5pcJP&m3Zs7f21ea1C5UPl00Ny=bXLB259n^&&Z!%7!#d -TjE8rKVa;Vb6aA6Vc8(vN1}c=EnnmVv^by}?n94cN~FO@j!Qkqv~-zl_LA@XJzd`1<5~v3x)1rpS;wJ -x*&SW_FbWy>K$X6Dbs%^njbDKjB37eVq4w&^1E7TF(%2(9lGslAVlIy^Va>uBbfHwk5F+c_{dyCKMGP -Y-YnY!+)FL9C66wOc1 -e6Ab2ub-g&Z0j6T7FAq=RVj8>x^~dgjy66lS1Rl2tfzr+uCbiT8>`@}ykoVG}tAU+$h3c2JlezYu1`B -`(Gjb~|q$xH5S9*6KVon3TLyqP?VC`-&D$@axerQd!*Q|av!B0%}@&m0U-Cm2OQnAUT$f{*j=4S*`^v -$wfFT0K9$6%t5Bb#Gw(5&kAWyk0#Yoe90I{=m44Y2mUE$|iw(_BYlFGC>raceO-Tui<-K5p?x2h5WC) -r8r^)K&bzkrJufYlhmECwh@WS6n3s?xx@*te@!Eg5vk8Qh=G>l$_evp7I*XBX6p)sIeo7egVyr99AFVi -l60+J}ptpo@ZllM<&@bXGQd_!$u5yzV6`#HYuXnZ+o6C}=(5Yt2wQX#yb<>A(i}oq?5o!;)B8G>o_Y($GF7L -+v*xX0<;h_#Zkx4RGWojpSqGX5S#9Iv8I|L-l|o>g>9Cjp|N4K3_)C^1+JqY(dCu)@F7~c2&8CW?jiT -NqXsweBRxGX-sx__-dq@N6k=-2BP!qsmMDs=&~N<38hm7wbULTsl2oLJ%k1z^NP`gNFJ)Gp#J(%+qbAwXlk~b5DG(G5n(Q9c<>Z@l3Xws1_c}1ko^PrV -}A%EpA28x-kiXX8&9Vf5o+Y%u4 -xN_~Jau*^SrDs@pFq;dr&4eFqEa_F>XP6Lz7D$;4k=v*neplh(zv#q$Q@Lsrjs(}CQ2%c%23v_Z+_i<6Q -1c!dm!T@AkN;>5!!R}$5X|dJ{N&O6;@qBM@>zf!l1XfJnHV|( -h4@QC`4WOjx6uzr3vPH`zh}FNsH@86<14=ATJU{u -!Z*11vaD53w+7n9E3Zb;(!Oq}RP-^#If=ccA(BqHbjoL?X)7LtVyzRPeBSe$gCW+biSy?;juQKozhL+ -4V1xkwL%N-+gt(JXvp)qhFY0; -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 -+Nisb9nnMEePwi>%;#Zwm`Qv -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 -Hy$Aq`3-a=FMKRlO6hEUHb58w8p) -#x^I9<+8LAd0UP`BR?Yyw>Gs;={7)jgAz>do3Z;#r&+i@Ne|uTQoB`tfcED=J(dT$9eQ*%)WXBK=nB3 -C4`>yZbr6t*sP3(0Vr>6w3>yem6PPvK{`bR~z^K`h#uB -9dUblIpe(wcjO^^5VON#ApjNGo -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 -=7Ex~jj>P@&-sC!-`RM2>PuUXU -8}P#!W>JUySd>c#847VR{S3b_JN1@9X|5iZ%GFdYO}m$e0J=&;EFf+quST*2!o!0f -vEixE&+0E5pDtZr%Et%BqH^dk@$rcc8J|GBKE!V?;Cz1{slty%;bb&+>9AT?InE5)&kW`b4MwCAsV)^e7qQKM2fgO!birT}D>6NR03NigS3o -8^$1)gI@4z_%3r!VX7~G{-;#aHq8Q|Zd1faI+U0y@_kd~PsY#GwDMA&{-IPZ+`(AI5yJKnmick`@ ->O>F7)zl2c#e(``XA+S*D8xmi@-ql3UXJKVPyCmPhNNxc6rj5hP5cL7lpq#st8hG3s0}md5 -g$1z~`Za$qVTTLNzxfB-ol?fCYY`3Du45k776hPc5jgUA$wrQ7^E?DEnAN46Clis~@QHmf(_bQ-`Xrz -mWV0JBLsFKqlx7Fs2eOg55S-y65WDRa#`TkTrr}6Qn16bJ3=g>5m1%gCfo!3dokr7hyE4HKfwxYh^nD -F}4O_ndYFPsou-jsew1_*rQxU@McXZ^8YibM1d6&NOj(Z=M`ky^LSj -RLL)Fx)5*AWEVCqVH*B1;y1-VwKMX5{NR;=d#~Up4)6lMfOAQWL9d5O-Hqknt@Ju?ZSp#oK>wCIZ`Cd -m*W70CifiheneLEQdM#hnR3Wmow5BS4#b*oqjKp#3*V*+Ly?Blrw+HYXQEXHSJCgm^ckv4iGSU2Gv-CbzS -dhtzwt1h?o<2B<*_QAp2o9#Mt1%?#@>6FF=MB0`};k7{(a4uFy7Y!k&neAH?zna#^Ysb$XRF= -nj)Vth40Gp7TgC4)6+~(hxs)nf4*~ya%p~vL76J9$rsni26x|5TkcLM^XeREP-TY6Z`|$A-4^@~8kUl -84}K^|W}d$mmzhe7#c$li(#Q>_s@SV&oxKo*Hf5X|%T`3aRWYIeXq^d2R2xxu9zL?_OcuPFrfxWd!ZW -kH;WCS64BrK-_Y+p&bZc>00XE0%HU&AO8=%9Xx&eLy?4z?gwz>t0{+0&;u{mDg`TpqVrVVKFy)ojw*y -<-OQodceJpXosa*4QRIH)lOciYl2Fu{M6Bds(_#@&*|fU(8KZSJ;54x?_6KPI@-uhv_Nji35+4+qx+- -l~pb*RZ9^B=x9C8Lb}8Rx;}^k6jDoehlb_##(1bmS6nsx>PoDCNZvo_;Ys$yO1=> -PjV-P08kFh;tPL^698s0SD-uz%lpu8n4SF{0MaL^+jUyK4zqSq>nVKx5oaCQNjILtjml1Uk%?b1u-1V -`)gA1Ds1Ecn0D8HXtv=85dDx<#z@&bF3G;cB_2$N(%+`<(2-^s19c8Y@Ns$V%^+@iS_w4fWF)z-MUusnT(luNWnl? -p#?t2G>l4Xv5FVHEa7}GJpFPw%USS%BF86y43J{>{8AimS}`FKlm?Q*K*NjH3jhSi`NkFQ-vM9eI8(` -^ls7(+w2159mVfR{g=-tFg;l&+JPrKi>%RlKu1$5duy^!yw>TYG096e-(_X2pI7Jt70-beG-jOy;-THr$l5MtnWfc>6kzo -*!5Kl?q&e*4&OZ=+}Kydj>Wb6~_C`+buA$`S$n>3D#|sA&x{VYwjZ#0IvbFNQe#$ku|m0EF&L?1qcgz -h;uJtsxlS%=pV4ahvU9hIq`ZI~l|(2C+j9oBy~03t4tYJpDqRUXo0Inx&T{($jdlJ(>OxOV3ZFAG`w< -!VXBde*+inCj$5`g@NlfYXa^Ad{Y1p#S*s}95(OecDqfu<*czB~ZLz?*7 -n}baZki7xY;8*+f;P~R)PoPmLWkq4r2(%Ppqo$$08q=l*a(5NMqB0h^pb>>iOhb!@Vn&nIm+TY;q>V$ -Wr96?X_8Ehti1{5@ZnO)Cc{M!4*)L;g1l{vSk`3PXM&hte;_lDx8Fr7Kbb -u(QK4t~&Q_=-(vVOf~83<-6H5OS<5!XaDi@33sj@Zbybb_XIqn4s4KYA5ve{G^L~;#nEv* -Qt6|Zr8Wc5ZdOi(-l)_-;)P_;PW0obOziZb$jd{c9}7h?j@7_gfeEPWck%)toerF+O_H=0UC9Mw6a)W -HGibdw()z7hCP> -13|qMB2ZA~K<`FEti{wagr5~mN=>t}L9|#QiSqAo92;2ripNRSJcMB~5OjF0}sOGlIVc(xo{=bBZuP4 -Xx#n+e$?9E^B0-Be6tKu>^3W595&}6hj?=G@?0+H;XqU&PluWSL^O4Y6GTWt&Rh9h^AG8Io-PYRUQ17 -JWwH>MUz?PS|T#She%6dS8s@z9xuUr7RxivR?MApgnWMVR}1%soafZ98k*%=nuqJE}G#zf!q`mb{j1_ -E)RV-E4_8#hhvAMzCWFWDLC1$EMT_6Zr#_Yl3IZn0*4 -DnFpoIlW}*d46%@rWxXzXDyCXxL+h{Mu}{ZOQUimtKMH)FB@BCifgLVJ&-CzsR;*RA*huWv3e%%RgxA -TE^?)5Y+JVaSqpz&5r3YD$M26nUyMJiQ~5To6Pp4pPW^9I4v?vP@8P@4YHz7n{U)-bT>Mr#N%N!YDRMoTfcOh)=M?b+sCeC1nHA^#t{ -LbFg`?btUA?hxCZ^xwyd`#+ebhH+>R&loIC?+<`v~Hsp3Qj{^frY2M>73ng5(|`&Fm^4(Hq5@0K#g)z -N9k?+rC5vvgpnEj9-ix`&{^5NrO3+3w>hkjlJyS%y=VoF=?cZYuMo9hccnO`TXpyv~pH2gwRSS)c62+ -L47PA+6ZyWFixt3nW=8~V1h(Wgmf`{ehN$WqBaqm&yan;_^i>0FF$^wUG4n|KM$?;KEy91S9>4kMpm_ -ViBhWeR*2PU$e?!j@NjdH)%IY%#9n?!BzM0g-q;Te -^*+2FHu4gt;iZ19lePeE0-&Dn47EOK#tp;?c;5-k&sMqTSb)?=X5^{81y7_Ho6wrKRol&0ibx1c0ENY -yi%#Vz+WJD8SUs8<-jwu8cb-_ybTNIa4v9_1yjVY~4pyo1)Q^KjNF}U!1@Wd~QB^vgdw*g|RWo{KfCf -ZI??JW3_m0fGeMtxD(JYu1;r#fazU;4_$L%#hp1ARpT-pu5b-L}H8&RAsuJn?f?2b$j)0PED6K;6Js~ -5CJ6dnPhPH&UQ>8gXM&noA;>I~%=n1p>` -V$~wDCqFp&OV7!aEtT*Ved=eqO8{c&#=e{=-@))KJFwgsAwpfjLg`8khrCl2FM~50>O-8xu8H795F2` -+pVl@xm_!BDX-$bW;A#kYxlEL47 -jP+IytABbFkDyEt}I$HoNA=;U|u~n_e)x#!&7^|E#D2p|VK^YFEHHV~7q9NZ<5Py4Xu?09*d^`5K(fQ -3;v4Lxix|&X07_?VA1Eou?kXXGfi2i%kj~eQH6|4XAds+oECfjBe^M%P)$1i5Fw*64K7>dNLlM5OAC> -FJyUkp{X!9LJ2WgT@M!6I)QyrK{&6Y)guYtD*(mH7B-Rj|oXVVkZz)gdmK!>5Rz -GH!*Msl$hDWza03^mn*VPKIEgh;{L9Xdv#p5lLR6ZKLRax@`dc&%_xL7w6hnhz7Z;v|vQ0y#;lhu=-c -d6`OMo2UKQBgRwG|3`;#kQ#Ep!y=}ogx-in)Ny8RSmFOWy4iWByUGBdbDhI$lh59oDikbmZ2Zy~t=#vs5$0ozZL!yIn-f6%|;KYp(a4koiG-z6SNZgqv`M9*Z*6$0Ipq&_sx(Ds}o2 -yhR7h@Mx!NtCIqe-@)sP5=7uqnmlxC|jMSLTwX%zryN?XvmSV+d1uhX`;USeYv)XvuUm$%YdO95uqF; -g<#1yw0AiGT>&cGXDaRikVU&Yh{p(XtbH=e-Em91s6kX-RXaSTO0ZxYACJ|>obS-mETK)SLJDG&{cj6 -12NsF^0;*JsN8=^axEYKrsLl<{EM|XzSXFa9sSc3(D}jBE){Gh86(5(t1IuVao^*kK7R!}!>Q$%-bw8 -@YUOFJ4)9yO82E=Lwz_7LCj=MGwcV&+K+e -p*YM@3R|N(4!KpTHV&e4TS~2fbMsjO)l$6U=(jWhh^W@tClW2#(!LVu<54;d96I*~2a6Yy*k1VP&6k% -0~2c9G^;=r_M$EO%HSxECQiu1r0-x@=45tjJ;hLjha^EIq0$H0m*SpIkM5p0F2aDKaZX2a4`yV#Q0o= -Ni5kP@N!r;wMpBCjeM1Kt6CLX^XzsnreH745mlij!!U|6O!JX#7P~Tr0G}S8YLjLuec%3~J}0<2?~l+ -@U5nY9fHVeno7nBXwXpRvHpzvn9694>^HdY2wBqzDs>@ve2rIZZQ5(xh%bv4xP1dI?L~c;I6y?Y&H --Gfih$_69sihvECG?t#n*$?>pvF>La*3^|=vSnHcs3OWs|c8fDhNa|v74nG06;3LGvwazXBaO*7vx6d -lv=Yfr+-PB1kjzejP8tJ^yUkgH6B4a^{W0xsp4~R~P`ImU3eUXs`xJJwNDAXFH%( -z*-IWyL)|$#zIz<GMko{tL9`$$%u3 -_CFj$wK4y -S%;g?iF2Sua#aUVDpqQPjRFOWn3v{(f0OsC6}@>;De)gyt)+fp6{S#_FAnaPrOaOh5nek)&k$+zGZid -g9SlW-DTr9(+sDNHuOlB3J!<7Bat|SSz?@wfxxj-#?% -+DI7h?!V$?m4V -|<0tCLe5?_gc!>KJ@c%!u}vu95}UY~!R)nUMScRH)X$FNZ^4sG?RYH -8RO$8gqs>D|Xpe -t7~RxXx|1?L@mwX-R-@^?M&1(caz`PCSq11U3{egEdbfZQ!`K&SAl)kXI?;4H={!Av+p4eM>lLFLOjj -kskLG@x?0Uf%ey`PZrEs`A!&uPg2^WB5mB^p6=p{%4yrR1p3^N1HAVb1KLp1r5CO#>8y+f;b?ke)xt! -Pw78*VeoHR;CBvrk&HF>c(ka<%f(fz!G0yi(9WO-v{MDIz!X}&hnT6}Ej -34pgQ*OAnfJ-VXDt;14Tsf>2ObzHKaRvjLsc)(ILk8RKxF}SqV@I=Ip2O>Hq<0{8$Tu;JrbJ$s6)K97 -p4zgTYucX6A&AJ4qdqyDd$h7)b!fabx#rXhxFP0Fg)q%yHS<$V4*lEr2BYim-Q<(kyJ_q&Ff`unxTopnM;*SHDkbYDC7v`(@%M(JZoXn&r@Zh8FT43xbJ-o;uo@a$YAL|sskP0;A(DI2Od-3d@a -G1SBJtrA>1Nm%tFO3XiD!q^b3evMQ*a;qMt_}YN2M1&J4&b8t2Y$=hy)!6EZAusqgHj|noC%#?9VH>L -P3jyedKCSalArmO9~MivBPkGYY(iB4E0niJ%_ZFo(Vd&((|^q((}4p=`j@T5GxJS3`O^P$km?lVzuW9 -ZM6r3H!}%4L>-@`7xoA}NiJaYZ)K(^-5jwkDEck -d@{Jt7aeOkLH!9B16Oq~>>pGwFhyt`+CU?3 -H6Ca|ECNVdb}%>t{-(AgDBn!}BrDOca!8IorZ$l%IlSM{~*Ko~g0P1!#F=sS=>4O~C=^&b)Ifw|Rbun -_1Tl|n2??IwpU*~;}J0jOK@rKR{cO1#YUk18v%R8kJEPAx^|nV56lRprl -*rkRHaVAZPJqnKmWYL``%ZsjX9Jl2+^zLQH*aybf(!8VX)Da$ZgicZg)pH^5t0VkLDoQ~xwu=kFtyR` -MG)AJ^X&}P4{t74-aH@ZsP*}PV9)KFAFEWx$&ma^N7C=c&6(n~x_eQ1=FDHg0&cuH2v1uK!D>7SwX*R -CpT&EuprR}F{U`sY@|g7n&p98o94`qkLls!r6_5C{}*&Ek^BiuJ3pwRHjA7qPz6Q}SXF>vY3KtmdY|( -`RYKH2yN~49t;hSVx;)!!kCyhUIC}7O~!o6-{|r@lm;oWfiMfR3hf$uSxzdiqq(to5Mp4MV@HS`MV_f -=8}-g->5p+Tcw#JD($090=LRXs0<@&P1~_1Wf)(J)Jze4VV}BHtO;9Pt5}Aj^h8SVomBp=L>Q%YqM)HYr5NF)~9DhHhNn}`tM~A6 -oIycitb#*PR9yT@%MJ>;rPNNtK)(RH^N$0$c87D#_+NsB0ZW^gP(tujVg|%S=b8;8u^$ElhcFF(>0_x -cwRz%s#)~5K)b5H0EGv!`7^SrhYL}WeceLVP_>Xnfr?M$CjeR7trA&d9kTD#Kubn@Ipl=t9iyyzk!n$ -knr^YlWxwsKm?C!BZY-?rVH><9L>5?&E&ZjTtq|{s9kP(7Qlk2*2}rt -XEdAG2MS}l6)I1j+@~9eOE}c>WEHm9#slJqyNu?qHqC_%;&$82@CW?fiCJL>vxE5Tav0gLM+I;Mz%;8 -gnh8ed;TNK@Cb(BH9#n96`L(U3?dW%^hai6-|tdR3SkxOH}rKoX@)v>qgwI;qta-5=p@vMjz5f3qzmt -ajkXD#bL1Y5owXK@Hzu|x#A8wB*9QAV+ZXxT1&)E0@n;$=5Z!hjttMcFS8-Vwg8gZUt8 -(g>}VwQID8B$I|oz6wBS(L#=a>B@U8^u+|DFRi(^X`Zi53V9SGsK0+{T-{2{snPb0Qbfm7Ugz{$>}N! -p&P`h#79L5bo;oW+p!UJaqHR4P=W9zBGuoM3ykk7bYWaj*a*hj8MkVlDbRVF4CNf`idYp#s1J&0aq>Y -z{d#NiankaSJ&2s#H<@Abu*Mufm{Zr~6;Rd58K6>fE^(n?U*fjwyRq*BZc$60v5v2>7#3SLH0?pR8NR -TuMGspze~3S`hn0-dt2(JPutdWUm#tY?K|-;N4zvuA}k)u#$)#Z5z6SpTH>m0iWr(q9{jajr -bySBaZOv=-bhTQhVG4Q?pv7XPt -~G)nn-9RvQRnTKP)-IjshHm&@D@KXsMiuPztdoXOH8TB0|Og5( -^kxG2RJ`lF|TBDoHIG9ooye -Kb4$UPTQU{R_v~!%T3mxen@QbqpKI!|R~^jlEoSx_n{{$Oj1UKfIF8G^9dRnkfy!KQ?y>sbmfFP@n1| -GhUFzl%opbKOx=r1l3*C3AABYRtZ(7QtO1yN@yu3*5>HZ!I^({+UId5F3?daY^jpxC}?rJ)vu50qeME -IApsQJAUv3;BqVV-U+JYO+4iZtkNmTDJJ$|G6DiG{JGNCzJ7t9{2|&mQi*kHX1gPLGRL!4_gIyihUcp -K#euF3y)1)ZI$i@N9Bt*#a?i;DM`y#Thh1$zJMN^?}o-c`TA1orDJtLVTz3^HbDW*+k*DLpaW6yh-Qy -$vOK|XrJ=z_;_;jz)gA1sh^@1C#O+X$EVhilW3ckW6FdFVp`O+9Sa;~Q}rZ|7Tl2;6%2}n;)O^> -aL`Uc2Y_TSf-;^g^zl~8QW%`*I8&sGbyP_kgntWg}#O)*Jn?95C`u^6{5|f1;t3GxXhrD74IP=(RDu3hf00Qycyzr!VmDB+b5DpLlJI>!}+SUs)n__9$kyIBe$OY+= ->lvGyv@7^l)Y5Y&Tyq-=hysS3>}~&B}s%dXadbEAg}9%->1?A#1UiDeHXqGRETM*6(Pw^*hGl|L&NjW -?lGL!^Y`4y+^re@mEj{&4z8qOvleJJ}*v4pGJ^eZ8+HhhiwG|dN7+2(2LovV+vw*`U2`d-W^kr!onAm -orUYFLL0a*5$+yUL1feE7gYsl{{HaSg%?FlYF<-J%rW8Odl1*%s%1*%Fr=hyeRRJ=S -giYqOud>!7ml@fn+?rTv2Y2pY%wbZa#&MNOW6ur#EfVaZ=kLBR)jEcg0+cJ9}!=@<#Wn;Fd;mc!jG)= -*RS|(IcZOY!TX=hcAVN+ay_|QBp;$U7c@in%yOSV_aKnnZ+n)@x -{SNv1OJ3Idbzfh*^7zX!D}~S7r(hq|4QgLk%Cd@7D^y3y3Xk+cOsB9yjFU*s{qzgJMID#TmxDmm2Hn) -C~WmdVcP2nS9^7=gW`hMlv4osjak#vq;MRomKWDLYh;+`E2CFkq8seRIO2af~k~Abbr%6M)bG$T!JI6{xj&qbW=buaNHad#biOamC%jA5uDSdSsZ#1FU>e2!)cag9H`+8PpUf%qhC_pDHcX)#+L`qw$ -h9)(y32!9fsk&nCLnL!&xoO*d^gSEzQ_=?>s5Z1u!3yX3U5>%cXe*%p0V6wfF{En$ux^LYmjXyh57S! -(1fI=)s)%(u@te&P-{>hF52zG#`U`vNW%O*(%ML4{(l@<_efYrP&E{Pid}(IY^poVfL41Of))~H0xph -H9_(jW~Vd{u5b2!YeN;9stcCL|T?51(9l4e|Q?JSYzX)w>1=0uotq&Xe -t6luohH|I2I&WAZxnhRi#l;#qc!=!ly%)!#U8s<*Yyawg~Xmw;(p9>Ilgn!9(n7jKlFM@Ga$$ySfXJmtx>QP+baHt>x_l&Ea>%7by -6llI`Q)-ty1Y5V)c}#>-O}-?8LpOy98;uY=?qtsM2=IXqiseV-y^5EU7Zz=RsKk8=?r@9R%_`3eBb-n -9hmyqV=cAl9WxS#@Hod$7DsLA6h`VvU$f)AXvYo{KNuN~)7^Nvh4ja2T$qSmay$9{h+SpVbn`tNC(Vx -3e8*W!@oBq{)uA&x61~noDY|@dn_R~eCdVP%C{p;PUf!>^lLzK^!HChRHlfx~fkkhwmM2Raipv+?A+J -1-KKmPKA0D~m$CbtQ53nvihXZQo_O+Io3^Z(->xtR)!is9=ZP*|bQh`HJB5^|UtNVNo9TJ}~I;Vq4;? -Qy5eeBau(VOiHK$sGVo#h^hR^xrO2JkZ}#qkmTb##&g!%W}u2)aKfF@NF0D)1x>e9hMxd+KR)#kBEz -DY4C#~xtPYswDM -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 -;nixTr1+N2?A=prq9ZY~W*we -h6}%2Fvz&aOj%eT^J|eiRMgT|1ULc#vycc8WbSb!di^Bi469l=LF0MHA+c_XPiCLmN90YEp>AC) -QptWsPv><_K>2;6^=C8yO8!ITZ)zVgE=U@hnnvc6Jd9*Q%Xv%z~)BJ*zBYf#U)B10{nC%Q>K*5 -zGG%Jb(E?SpU9#zv-33DILpMFEwS3noJBXumP>!pQ*k&&>{L^HwD9OsN4tzi{_kS084SwK$g)vRA9+| -)lX6gYq#+5j34?u>BWcT}l9@a&2Qim5kOmXGQ-(>(wb^sP%Bk##mo~#wR{~#pP030Z*{4|YlT&lRZ7K -?6&fWz5O?rEHM(3GRXWD1YO3jTY20{dSdrh=u-jYFCCS^{^nwyc8LQ)I2*zD}P>^WoYS;Cg&9D)>Gbg2r=u|SEv8hROQm=5Y@`%nNr=-k`dm4J0vQj4HW -MoBU+X>GfC|!3xpCG9!Jt+ym)+Edx>uualzx56fhssMa*leBl;YS-j+%#B79 -U#20vEKU~YJ(Y46b%1>=%DH|`X6$8@<}InYdBXOA2qR^lv0a`MDNPZX%}3r+o+PR4JaUI8B!$`F51U3 -hYky@OB-x)OS`16poQ&M;EX+|!X`{x%=&e<|$=R;D$i5KuyOH4RC0U!}Q*#A5S;-PH%K9*@;aQVikDk*0Ri?lCV$Jjv6*r+%{L9mUuHbhE<%6BUJ|KZX0V-9}y^Zt*9Fm`x`@kHADT-#R2BCYcKm4^0uyHWz! -?>@*!_q(C$hxhp1Q2%-U^Ze(z+JicWqfoT^`nJ@%#O6>P4cuk!PA^Se& -P1vIF11C$%~Ww%x@+`B3Fp~`Mj_9$hKS8*mP_ely)Rq5ZV^3GK5vl(_qGO@=4d$MyCuFX{V0)_Kp1(z -uQLgini(!rU+ST27`*`HDPtX28FsN6Rx{EjI9kCcCqkK~2MGk3l>EQhN-e|7jj8voy&{vVD1|LcQ;q} -=Tr)c37_75u;c{NDasj|PvYdbId!ew2K8_9ylIgnA0D{Iu!6^k}+ER0H?W3o_q+3I;3KQ$eGGofHgGF -hD`Qf=t2c^Ac7l_`ZVs72K_0xq@32+^paR1=lP1s)FkjT&v(31)orGwSp@YEKtyoHGIxWcv`_v6x^@i8U;%f{O@ -W*60fg6?)cy4|GT^x(s+EW{R#b5mFsU3=BWHa`&~WXzxD}e@{#_=CZGQ{6#uPH)4Ttqf781M|7Y?3E1 -&=0WuU?He_SNi^jGsU9$sQNvX(TT#3l2VbW{E>d@kWL&r7)Y=?d{lY2?BJ0oPIZ9nYP5&e%lyi!VzUs -o-1J7~Z7dMhbuQ+0)N%zB2rKCqE+{fDKwGV;)m_QMrPb -l|H>z>3ajztF_P7gC%@F>aT%|)bp!K_hi(cgBq?4`-00#UuEOGn>E4mKlV^9f0y1vemZuD;1C+*uJP5 -eFoM0?Fm{pLg9$!J?^ZIeBDk5}NPnGxF9(tiL+-B=0t+eDf3!_A9ci@C>=YAeHS$75BAitwgh)6^KOEZaMm@2Sw`@UE;8;0f< -MtapWJ^XIJB#D4=4CTS4pqGk@!t-5rqjQIIBBj%gCHg(9nbQVloF1>`(7zZwf>3;T|&0)dX+u#h5>(8 -BcH>y`PXf;BCE0w`#6q(+Pe^FC#op5}epa;yjt)+w_K!c`HF&Kr)TY(+J*qz2qVG^Ka}+IySjupTt}J -NFO6}c|UQkk)Q=|Uw;`M_fCZjkna5m&QRt<1Ya72Hi62Epyv>(CuH^~I5muPQshgpG)$(mjNk=&^6C%s{02F$)e@~w -nmRyf5c_Z)&7!X@7TKcd%0?k5TU7A|oJ9!@-uz*$BQEp=5yIzanIqPYA9YNn;}lvx;EQD48bU$W -bypVD^oqS0i77Ki#NgmEaAdmHZGK6G^lXPs{{wkCf?8C%7t7rU`gRnE^da(!7G;aeAjyTsDTv$V{?C= -0t+enH4_?o>%6J1Ru7@xT^^+97{4r;R^`vzlr34%z$6tB+JN2&>l_YOXhrn?PFB^BG_RZnaRBq!C|p7 -op6H1ag6;+<`ROZZkF}p6M}pS$#yfs^A^TBPNi}sb0>mhrb^t*SVf&G!yh8}6m^A@Da;yzIFTFf;RM@ -FCq0+kg9xsiF5OoVte7rw13WZ?lSa0}k^@e(sh0OeDDJU -Kw{Y!T$4!51@+0nat?~Yw2A>VE|_@p?XK|IRtMmqA@&~;|b;$NgM!QSLS1I -FQ)M+g#j%18_`QqOxJ6P~8@$(%^=&8JnHK(NgknQvQyZJuQ;lfv{P_{?+E#*+C}fL9Wq8tgPze -Tb~X28)KiN9oyB>2uo*%u!pIB1i^A&j8UW+?-Dz%4YkBr{;v+r%p}=Ma4QZN+DT_IF5cA@>yoKclyT% -oPNWY^S!E%*P0hESG&8;Mg6~-Ab_aZsIeU+Y)@4-XQ1z1bz2XS&-SE;8J?y$-E43Kk1=l229zn`VoTv -q&J7$%L$G@NHii0!N1eH4DJMT-X(g-TtM)qL&RG$ClU-iOf-@?h~Ol8H;{QU!8wN|jrc|Z-x@qY?FQf -v$_$8o`fG_UKM;CYk{-E3eu@4hwz@EwsI9i#p&oV)oujP^7OnZv;pyEtyzbDZm<0iCj)`3+E&BQmQhz(}rz^YC -@2*D}cX~Al8*A5H1sEK?JdO6sl{Oj!t}`Wo^V=%(*qUe)vImPzU%7jL32od)YsX|7g9UmU1tw2lKQ1)KlT#Y1M2MgZ&P@$I(x-7o%ps| -vs<_8*llk4QJFI%y^#V-_b=$LdecMU7hhyswrpYL<>l< -7k3M3TFJESAC{`c>lLZ%QF@JXdp#pzq*f)3XQDHsGf4o@We{t^I`STIrM}FwyQGVzwdG8~;o-997T(Z -xd3%m2^p+kp+T?~u#^zTQ0F-`c-onNj0jw18D%0Bm~z83M*(k@E-B7{G5G%fAuK4rfs{WHn^BJ7m@Me -@f(VHU~sr9Jbk2!H6%(Y?~)tVsWJJ3)$R49S69GfL({~oQ{mj>jc(#yL@zI3I(j|n^`X~5Z&waE4^XoHdvYEY7RK -V@;@G4~lh{4?+*41+SFBjUUViyywqe5tA>$u@_#r!U=8Q|ubFe&2eSXgRO+F}zdvosP8`HM4McaSeo_ -1F@TSP^aww?1u+p7{t67E{`!*2;2$*}0DGq-boA#K5dGgGEa*`5{~_6os-yJGGh&-q&kd|_#y?YB=!V -2k*3+uxdk^tLQV`inUK{_NTHOh_^5eG9vGOe{J&TJUbdgbD1HTW(>u-g+yWF=GZ>m@<~lnl+2vdFP#M_Uzd#H#b+b9}5;NV9(e`vsdm -J#ok;P!3t+t*s{B#*s5$3dptLiy|Z`(`+Gq&du;JcwrO<^+k5{wcI>&kSnxK^`t9Uw&|c0)@8)diLC! -`V;cWV0&Z6GuY}_f%CVb9W9=%h({EJ^JXQ?1?9yU~AT_Vb -4GRyeQxG>({fl-g-;4Wm~syW$*1;&zAhe*<00|?b)-39XN1+9X@=R9Y21Yz5o9E?9{1K?9)#_Wj~%d$ -=>^!voF5*LdZpBWhMLd$8XtJ=Qyjbu4ZS?o)xl!$73M%5AjTVC#YXRI@EfpGqj`%Y~-!kC_aeY&L^;W -{BE|IuVioW*V+60xYnMswiLfR#Sf+UqbPnX#lMx}&!YJGycJtY@t>ghuTlJRihqLQpLUDio8m`O{M#t -Ljp8q-_%BiXofQ8##Xm{$Kco0xQT$4Z|0Bh(af?5&H|cjYmd&9t-U=GKtY6O9(U+)C+eMY|L@UNm4r2 -V%35=h?lcoHH&7v)oqLq% -3*xMeT?7z1mi2;VEpy{j358pExwWB52N_86n`eg&!_myDgIiD|0c!XM)CJie9Cj>Clvn-#jke7??)+& -qZBeIg}+e>&r=G!DTOa6h3ZzE{XB@XUng)@b2n#aS8{glbpHTcNxA=O+fk2Aik>Yow_`NB9KZ<`N#h*s;@22?6DE=rLL -kgrZFb7Fvs={?$xt<_ueUq;mJ+u_e(d12k(PS{26GE;>fSYbID* -u?cC`-&}O5PG>8a>98&<_E6_3GYD`A5e^nqo{*<|v8}yax0O3Ar($4#}9f80{I`F{oX_fB`avp540{d -)$QhlzvQ1^yrv`&TZNUkv|0pRsnh^Q2fy*M2?C{=-8%Bd+9H5?AhH&NJhKTPY7(=rp>rfB0z`;(9MYW -QD*p>;NP}Q=WzT9iHWn -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 -cK|>MP_O_@f?>Jg)rC#9iuUYS -l1w$|7zR?{*c|P$$3-q?%o!`Uz@i8pFtyJo#f~;=?G3LEA*=!{$kwm;P}Mr{>?A)z`lpS -xpOZvAAWiC+_@EujjooEOn))-R8XfN`-`BiLHcg_7ARQ$SKz-$K`xe(7r~|D -3-Hws{i3j_8eAMgBuA(bqzK`Am^wu;OFT#!$m4@?yO+Cmfh;-jj>hoh#Q&T7WzxK{GHj3+t<3kb(s#M -iqD)~byulxxK5tdS^DD_hz!B#6|fpAR;4U4nbYy4iYY>JJG+hQI9rzI`OJnWsodS`a2p$RyT@AT1nK~`@1vO9&a!PRHWM5SDZ`_6cm!%CiCCza!p03xL==!-E^Z!R -4x24VPmv-|tItDWZZv^K8U!f*WE%x0pA^L9J6V{uCo!-8Edtm?m{e|#A>_q;6f5fiii?G$ivcxHT$9v -kEp-H?Dj0e1vnl|_jHF+?$ndp-P$Q-m%<_l#yzbDUyE^#z6(K!!sledAFefu8{-Un9p^5~sP7gO5JBz -;iyy=xzm*E}E-{MX3euZn0(p{irD8Wf)lR(jk>f~)5nj?e7~}>v9ZjH -ck6hTS7PfEO;4#>BK2JAh+g_&ui(euO47$17o!2|17kuT=l{a751Kylj~6RV#^2$E*6rdGW}Q=y9lJR -!zW3o&9?-|aBz??wG1JAaJ|^LGioVQ~0tXKsEcEgLZS)JtJl~{IL+Vl9$ZiJ6I -cY0=&~ppSYr-p`miywryoz>=hoUn;;7s^>whOgp2oqGf@vkAHkTwHd0 -AH>@~E>JiD_33W6zW$PDPJlD*c5$+8E)O)NkCN`Q@_6sxQ|G_V&zOhA{9c^Ji`^lonJ}aNH-Dxu7O=Y -SOCFkBtkKgxWB;JPd-v|Zkt0V6!G?&(;X~)udfgy=APejf-_gKtPi&c-6L-=_kFMR({u5(w-MY1M$Br -Ep$YI~Ueah}(ckzALe{=zPpo`Gtsf6Ij{Z=;KqUb5PSo#^hIWE>6_ald&*8Hj -KruUMLWw*Ds5kf4efNkDDg-vAtD(w@ZOK(@0kl3w8lDlSUaS@$Tz^l9Y2u%(tgOX3IXMm7M^jT%)%x}8-}3wYV&le*st&w&?_O2A -(76vX=N0+uwT;Ll*(cNJQ=WH8>egN3zXb~xtdjFy<$?Hma2c>A8E1(#Yu2dyp03uMJT}^o>$R1J+JS6 -_2mGb{p)KQ&VX#E%#`*dAs{RTOH8nL#?$`s3k!T&zHDs+1(ocL^US3`zbvZ0!Bp&Q0=btI3N<&ss_HC -u5rN0K_p+>)I)hfYQfUilvJb@P=cddtdjfj4gzUpHs&+p2`Oe#Bd(jn5m`d8b5sy+aYgix#%FZbZ -`ykhZjd+46qAa2QSD1yN%6+&vWO_?KAETqfqmI&z?Pj&d$z4opUqJ@K91xBIeJZFP1M~u6WaRKaCG@9 -(tqg1?v(|ojTQNIJv^TG-dy=KP@dSW%Nf)9-oiR0b5wRcCEsgnHQW(Lk7CWOS}xGLfkIz;n021o}iyx -!}8W7@JF?^waPZIR#n#(882kbePfgR`}>dICv8O^I?~oC`+p}sbPRm*Pw+7tJGFEvo?47QJP?(XhJ|3;)Nb{bCo52`oHgayTaKBY+4VlVJ8_-i9Lf8y+{bgfzG?ZC{xEI2@1#CHb@b@bmm`tLzod=2aqQT!A0 -0n_e2U$P$Ky9;A61rRssGD!9y3idzoVn$Y$B0R|;>s-x%|d+!%d5A -#;$Ge{|MCWy|=w{hI3PjJ}?8(P?5h9na`Fg)MvTeJ5ukKD{Kvny72+L3kF7<9Qe$w -&$!`__RAG)!od==x|mN{7an9~Q -jIJpgzvzTE$z$d&GLgn#8 -)~8}UOsRUhOWd6EytZ}sZc3g^a#A&0?>o#J$JrphOY-HF@D8_1m+gUb|+m46YUOUk9ay -@;Kf=Qktb)b?d+{paEOZ-}>Fi*o%d`uekH&#G8WugAe|6LT>h*i$bryvLV&^`Gp7p;Ywa<^?{};dJFU%j&-AH%);{N+=~KI`%`q|p;c&2GeR+ -egzM{M`oSDA4w(`kvacQt35MEFbDz2>xS8dp|pt!2y$w0W`iMmDUzKTF)XhSfpe_=2)ebE#C^sFy@-s -j8MRJ%E>ev9xPdt2;WC$9_#i#OMXHZ{1P<$r2}HJc@s;PVBwp}J6cup}6s_|p6J)AjOFe)#a4!Mb3%u -bjV`>49*5WnI%+&1EK< -0?py@9XS~3`jYRM+|eWnPR4zK69SwHW}b=kO3iAs --fT8o%{Fto=;dL1*#7_Rzfem91QY-O00;m!mS#y`)S#&iB>(`+m;eAA0001RX>c!Jc4cm4Z*nhWX>)X -JX<{#TXk}$=E^vA6J^gpvHj=;VuVCxVBNa=`M{~V>e(UZziPQQvvHfhP-Cf6JC<(F|OC%pjSy6WPf4} -(vK!5}#*=_gs-Ys7nOB65|41mFWVX)&39}m58Hc8U!J#SG>hrh=+y`A2U_bSU*MRI*pdBLl`_x$OzZ- -(&Cx89FQ8n3+b_*0UHQ0#3o7HKIaUX^*(jqpxa)lHUq=h?Jc#)a_SWQ%kXR|&j>52Em5XfLgbWVEO<_ -;y_gF&Altu+D|>-X6U=JU%}RtIw4erxWkh$??V6(aZN2CuisQ63X?aMK<@MXu7Btg@__Andezi0sI8I -BBEJRi6Wkry`KDG6qn-L7wQ|98JFrC;3leMF7)@LtQJ)=D?|L3n-cRlnW -1zQC -e2w}Af=*`jF!{dW@hq4CJK$Q*4iMT%Y0$jH{{$VDtu_pRe+j9{41kW`2KSD-xD*a4Yk627FSc~K?n -l}on0o?P2hiu?_zh|Pb)`VZy$ac&l2BNBcawx;reY1zx94RJd4iXzu{MU8iq6^^f9`Ni@-O!mS&Tz^7 -}}DG^@NCz#b7RFXHQYya&I*G=VzQu+@tHsC-oV-XrRTNwCYk=U2Vczd&Ik)XMjEjha2co_{jBVHM~do -W1%1ez$oF^+gdY=!b=XFJlq-Lmx&h@{Kp4d;^eP9<8Ov`3aO@B4APEobcBg#&J%pd8mexL1HQ0o-Q(= -(dZjPH4#%Uf;E-gi6|Z=fdqn2j%@&_ORO_62ymr~@D%C5{d5(*K79H9d*6Vm;f8UZi*yqB6F_Gxa6cV -g{1Bb~<=w&Cwfrp)`#XMzIq>r2{17HCAq`*8k4}z%J -><7(`TU2&mj}n+w;CN4{)h7M&R3T|e<(hrSC3(!RMFS4^&Gu*)%ZD}I>FbMKYx9-`}N;HobUGgAIjYz -eBA$?0pav77eAaFL-mor^A)cqzwzTw)~`#SSa(*2rO1hOK9P*G$|8~paDRyBqe<*#dtPQNNp}Igni=E -(0RlC8<5^sm-a8P-U^@)5(I+vk`o`J@j+azX6qI5%H5Lti4PkFXNelKHXdRmS+du5zL7tGWHN1E-Ay5 -MkH)Y(+1|EnFAS(iQE!Q@1scKvS%(_my$#9XQ_!by&YXk~02X^1U!DzRxgp9R?M3`rJpsVRxz_Y#Efp -_O6sR6-e1TdVp_`Ak)uO)Th`qn>R-d@#cPm^>K&9lj3rf{DwW;3QAqO*@;fYA+TOchwuW+BSOtdbqAN -uZ}vs~on{|<2^WmbQNI5AYx?_&3IJ(Gi)1z-u_R%oz$59Is-hAhN-s -D)JoR2Y|IdD?LC^WCRH_My&`G0)t*Yne2X{4$MBp$6G7@6cc-G2jWB76qm$# -livjJd0NfzJ_uNiZhDFh?e4%O2r8uEsZks@z&O^Y%(XEdT(`!|Ni0%_bScn)CauVrDl -_W|$HC%a=I?&sa)^2*^BPU -C})Ogz9wiPnNa?>6k94|x2T{~7ZGOX=6#ta{3^G#Dn;2)*5PCY^n*t_qn-SPMen?3JQLEFMQ>?ASV__ -fy-5h)&(_&1Qhbd07sM9$G641U#_+c^V&@qANUi_3wIeHH4xtpi==WfE|*O$BCfTq7>*8dT-Kl<~)q! -__Dg%{fE$AL^;NRs%iL2MYK -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 -Yhz2wsKo#*2-*RgieS -majWBo$_yJqd7{W>vr#<0rPBiPoV*ERG=_?}J>#LX3FzAqOShv{MH(Q(dz~%tfLJQ7L0-BOAgsO3?!; -{Ml?^NdPAC=G%PXpgQ;C@=?f>YmZqS50*+g}s9+Y^ZB2lEh&h&BPv&@QHUP&tXLpZ;k;OB-d5a=K(uY -!G6pt;0lciKTZNvl5|*o#U&;jI5NVVMOT+{>eCn?pm4`fv%5yl!L*&?c2lAoMqyW?v* -py=?7W>B&D?2w#^XU$?vmO`rr=$`r&4i->~=chXWo^6saN4yEu7%z%Kq!mbT{C$$4D9&0V@!Q6#HmIl -ZH;jx=q?Y<=*>azlPp2IWALP{gn#<}|+zgqlxXa7uS8Qvoil83)h+O)(3v-cfe7XX7D5_wdloSL<)A3 -%Xi}3MTNY&lwG}a=H&(`3`Q8_H$@5|CkhS_h+Fy>?JvB)xv@8uP?lr~@Rgl{ -DCqP(u4nQfWQjOs?~mmZ3)iiNdTT)2w?l&(n3~@Px8&NXu!b1Q;%AYeo_d{(j7;`whIOO%V5TIcL=>( -f)&YXibf9{%am=;Jbz=oBCW1T!0w)?-B!^K^J8S{6&6^z*QT7%(TDXDLYw{3nB%X##c@u^3*_w5$2UZ -j)0>6NZn;q7GzS@^G+l(ngW`>1<5a@n|1pidENZgIe6=aEz$qO!AM{-AtJ -Q((PNb6EY(!5z%_RaL*H@Ck(R!pdV~L9j1z&XF9!X@#FQ}7$4NgTn1OE -skxoZy7I5gq!lt90s%e~G -J?nB9FCT5jZ9YeBoQ@Kk_WFG*^iKt+A=#OaDcB$a_bkD~fPkNAr@|L)V5VX^RJb-AU$XD1{h{-Yy6HX -~a?NTzmDmEN+31PSftn88ja{J_1BVQKr2`>=gb*RogcEExSJN9PcIv%gs=8hiC470q*WlyYRVsa+8fT -j`ZARs;s^D!r)qC^D^6LgmZWdqpv{Ac0QjuSrIz4x$b%HCOV{>=x|k*zT?iWD}QD2KOIiHTV|CJ;Uwc -O;8*h`ih6-^NjjE@p~Ow=ckajDcy`nVXLl{t3*q%w_`Zqt}aM(>{#PEqjL|9WM9?p=~1-Q3f&Y-geTE ->eHo_K$8-0aIQN2D$cn5QMUg5HLgo@Ott~Q<&lEOE* -I>6`!tJaNKT^&I$yz8_8k=~4F6-+sqz%1r$k%lrHgC8x!DeG5LeRqJTkS*IUgbG4+%A0?FVZ}AVU_ea`MC -@lEpI@9n?#uViv~52k(5sVzItFamW|>W-_M|5;towWA~?^uvU;0Rpayz)DZVxH;=3%Fa7-y|=&AQS{Jck|1sTY&^Zen|m8Qw@LzLB`3GE7Pp~E&KXV*+FVucI?Te5c34Pi=ut%kcO*Ve$?!>%n -*r>48=OP|gGRm!6Ra~o{6GhNih}Ru)uP_xcw+|nqIo*S_ZFO~VQm8**Y%P8OsPjC~WjE+Me17l?` -41^onWE!*Qv$iUyHE)pQ(O;z-2#Q0x(3wm>dvkkPg!?8)uD5;oa)@b+cbCak$KwHsUM!oG+g&g1c+i{ -a}#N%>`BUq?|@21v$a`oU(3`KWS3XRS`toh%eCd96Fg_INXcLhJ07excg_llkE4AHxjE*Yj~|E|pBe> -885pw$=D;dY`s3+fg7Z`42 -2oHh9at#KdUqUBCn?SgSpBKrWzL=SU1ckw~^sRc3Ty)KKiUR%HAYSI9W{%$c>jEo;!&J#VL^2QqXXf|dp -lgqlXracB+XcJh(cq?#v20Uc+B^Gk@^=R@P7yk+>%fHWk{rlY4KjGZhj(2hL`a~a{rTL$*J?#JWQKhs4F^UZcv$2?;eK018bADi$bAln{H6y(oQFb4eB~<(Su>nx6ZEDQtkvT-ER -#=eNGkE3fRKib6PuEXXNJOyr!mP#pNzd_yb5W}s>bADJq^stA|Vq6aQY-p;4ntA#6_LJe2=u|Td}fpC -di~3L*_uzwL>?)L1~U5;=CiHGMgjZ7qZQaYT;2Puxka0a&A`OB~PRlvz5MpPdoo4q -S9uDbql9|`hIwH{N{wRHpymOAlHJE9Z?0^`77;y>nl#M!aiAjm15SAg*jb`%5H!qZNl@2YuZ~S8)R3L -W7~tpcT}=*t9#JWA2pf0eT68e{C8f+<*G&7i|)R~Sg;m7ggS+HK0Wbfc6kV6>u@y5{Dfs=0E|o@XeaqQb) -}%LFqu3YlY7-aJr?=Pdxz$`V-u(LL!Pv21`M4I^m2ghkUNe8+0v@eU>v46c^juYDsZ^bT!Ico8=DyW< -ReL+*2Sx80i^?=`3_6JcnYnugwW=4uQr3sUQGN1mx?I-#@ClFmkwo|2OE@cEa0pYA2SclaPa99Of?D| -*NT7(NUX8XVRxZCKOeSyqZ*>M*!;^I&Iqk0Re1?%&1#jsaL)XLnX?Oha@6tOvnP`6?@Q$_wggUL`==q -gpE}cBoygD=D_-h-(%ZS8JzKZIyInVzn4`XNpq`K%E*@(rRP1tyh5z{lp`^HA*F$}- -j!1~;8e2JOlo9NV>$G$Is`RGoA{s16DjO*(NirTsIa#C<|ItvfzcE^H9}zWM#PbmLAwcKJ3WAWg?<+&qZe2@U>y{{6Snw=cGY`^`GQ -01yD(7bF(kjO_Lx(PTTj2T1tDRcexON498dktVo~<7Ruy8}x|r_tee -dhWkPL!fj7h(2#y;mpiP7f}QUcNnyE)Kpw=M$y2P=d0`togdf5{w;$DZLQ-emO}LodHW*OJqTcLoqMi -Bh_S|-*cfp4^~WfZg@%Mqr1+s%jlhy{2r=7_XTnCa=1pP^&q#eX|Qi-NGOy`-^M3zGNXmgYnxx=7q$A -0xA4t1psslL`c@b_j`@E8P)h>@6aWAK2mm&gW=SLOXZ*te000sJ001cf003}la4%nWWo~3|axY|Qb98 -KJVlQ7}VPk7>Z*p`mUtei%X>?y-E^v7zkHJm@F$_fS`HE4_5CpyP2R$J12Pm6(yN0Y&#SYc}Jubb?j6 -9>~7~@B;vyr0oD^tZf`i{@Twk|k9ElbU#qVY2FVA3b7eSpPiNN$))=+cf9!dWW+a-E)*mQ{Vz%UGur< -1X$7d3k!qg8G)emRx?WeOTIAO9IZmDwS%OnlA)aSVwNRd?W -Om6nf@}gG#1N7yaiYac~8Wy_KJIwl^N+HG={s2%*0|XQR000O8HkM{duZk~a&H(@b%L4!aB>(^baA|N -aUv_0~WN&gWWNCABY-wUIUt(cnYjAIJbT4gbb7L-Wd3{sCZrd;nz3VH81cjX~F}9wD0y(Tf1_T(=p-E -4}AjmSEXj3FZqPO_(C)rW!rr2~5P4YcGKFL#9yjy^@l`@ArXsKR&iWxR#Q&`!ibLwy;$X7GC{qXS?_D -6(o9UZNKovrDQa0p*)Ybrs?nj(O9i12l@T5osjg3biORIqy3?jJYzPy2_*T}*~PHknNBh5Xf6M;>bHK -$%MYR#huBNG-fa-(&06$jI%BfM86WA_A;Wk?%ZXoC~cvhb4T^q>xACwX-MgZR;dva|lVTMXCF^_GrSu -nEhakk?ZalgcSi0IN`$khKAu;VneX$>ucw%8;}*&Z@crRD5i?eu<_bJ1OggvXgd>&xe9~%-gPm#4Rf3IX88W#oe~#2%q$sb9Ct+k?pFiVgugt -ty9AsHvq_3pxGm%qeOL%2s>dWJ-CdeP1uIlm0sbLOfN9ad=Bc-Y7#c%yD7EkW~9K}Uhcx}Z2DW*e6c< -S@v-^pjQ(K#Nk*o5*3`>q*A&L?|O+c8j?+FqTviP56kr4{`aeAKW2uK)(LQkKG-CuySl2 -n-d#PX=J7X=&8k}G<@TBB+Rfwtz+X;IPfpE?YJaHn?R9IC7c+DAS!e37l!+X>FUTt5+5mxiPR%1 -;5s2XWI<0&kT_C=WGSw0JD>me7CRa)>MstY7YKmo3$sKy4u0xbf2}?Mjm9#2EXdKO}We3mHWD?io!C2 -`jf5evSLuF0%@}vi9I=K>%+4X1Ap>h`Q?nhE`I;lv&H+5Z{NOo_u=LD=G=U!J9}b3uk5}xuW9Vdx~}S -H_3@3Nx(T5QTT%;@a+3Lox5de-J^`-_(^oHRx`XQhu-6XCnu{SY -Z^oJCojuSd0mw|Tk?+1cuV&%LI?JFd29}7+`BAq?AqL3+YG{##DP-lbJDzO}D8U -iWyAGSD=Fp!73|I&~A@{2Jm2TW*SC=Y>3Rw3`iY3-{*TfBZU{zbbB9&Y6e*Bc4(GXRadNO^`$iyz;v* -F0QsHG*1rmJDb~-LRaOez8h}JFaX0IOz$GOE{v1QKmf-;>Z*#C-XdRuUrKv~|3j}V2%*(+5Z?e2-2m` -P6Kf?Z0w+$hon*IZDH_-ENh|~48-IzeflTA~v=4P{Q+PNugxoxk{pMLwz(O$Wqr?11eW1;#}rtsxYQAzrJI?{?)ea>QY@&I$YO{mOXm& -KG>li6mb%a=<}iwXSpx37EMO;%&e~M>V_OPu4HgcR4JxHpeP9`7?Ry8YpnZ0JS8GGo0;?T2#0%TAvLp -EEJ1z#!e+mSg+)Xo5QO}W{UI_?eZ<^Nt{yd4q!|1G0u0m}BA(omd1O3{8S@U=vnfqpnhSk&dB+wuEr= -lyi|#Dhln>jnQ-k)^>?)Xz5?=t#6{spoto;m%8;vIO?7+e%_km$B_2YGh!A#Y)vhSe{&m8g!b_{t4y9heS>ZUS@qh)TuQS2$r?A;|Z6)8TRW!j#d)5&U -mowE$2`W6f{QIo(M8lw+#sMdnVciX8DmpG;PJ5($)tS;`8EY1!H~ZC-M`vC9q^$7DW>lYxPbsI|`<7? -i{od94ygBmP$9qSN}z65Iva3U(|fp-%T4;ZU1B)o1sT-BTAN{qesV^|3i%>U%MN@{NA-jCdtkHn=~aA -7WD^slzZ6MO<0oWE6R?p-trzq=rka;Nh6DAJ+32+uP)`@b`KkTf+H##pvY!G{FeRa9a|JN-x-OwnW7{N -xGYbQ!J|SK-iMhIIU``IZA}?>6a|+nzg4#I-*mD}c(4xpW3HCfzcv)thm0JL_UBuvmJOa|0x`A8-f(r -`4vtAkIh`{?nyAEU*4OmuSh<)JDgrmjR8?k^eB?0GBtzfk|WoM{ALb~?mc19(hmanu7Ig)x_xSjTN}TW==q{^pi%V^IJ8q>r^SD{8c9|xvC{ZQpi_MIo2cA68{`qfpcK7(Dtm?FjKox()wRbz~Jl!sGooCTzSvzzEzQG=Ybz3$ey#KuKUraEtQBOMWW^0Ov(HSY+9D* -A_MxOC%^gj@vzO%{7*0TybdW^lD_sBa?Y#;~AM?Gu+Mv*`@WaNT -(WK`02Xu59n5MZzDzpWN#M~@9EVr{PZ6Yr%;@q{$SAG+bytV@>8t1$tJhc8;$Vm -=N8KBb>CwAmTs1+hO<@!SrFE27tZTufOQn)}5Lk0|E!d7*eOM^p$lAM%u&PHlv6>gafBwZ6IVOhRY&Y -R^Y=raVCyxu$W?asURK#kP?c0mxBQWDo2x>r9iE02SOWEH@!%3$#f01s9K#IG -qY#(WO*n3y5C#-!u5SbiocE1%&>swbv_2WV0RJizai6^-XKYYU2Rk7YHlH!)mfE_kE4x*QDE#gBaFZO -NQWdFc&>&f*L~0s=7K*RVeYSCeV5WI5{eO@gY#i5n9MqOica1D<^0K{q}pgX%ooelQsEZ<$Qf*u!nibW -STu>?2K5r_b|Co%HM%G1PFmRx$E!aa4A;yCiahk>_<5jgE)Bv`s)!#RwV_mj(Ou?{u|bN_fC*f7TXXv -K+i(AKxV##MWb%Sf3sJsAH{=vF%ws2GMkT0@3bir*bCJJzXJdQLEf->tEhI;Q7MSa*y3u&PR}hIpOo` -wkZjOYX#LkcocxI0h;#A`}5qE@)o31FvLONezx+A8O0yrYUM>_&+rZw=sml+ZgfO!&1m^)?p{`I?L<_+uIpDymFkx66{6>@2n0rD@6|z{F#{-t0c5E3CcT;)dcxsZrrtdDC>Z; -i6r>gUA6x5MFv)R80fVkY7DV4_q%6dz9birI;!w*&dc6L?sURkE;Tr0jF} -a1v@5loqpd_oS%La|Zo-}#t|gNEgiSN5Gt?wkuTro=4Q3mWe+c>!0Pb(S1j54*0Jb~b0{}4?0U#c0O^ -4xG-7<)PQtWZu=IbP=gpg~JO0a=vbFRJPm%8fq6oREeO5j>cC7d@dw(E!Yf(5j9dG+oFSF#YuyTex}mpT`!0_y5TjYQqINT0+W`plw`m -6iFW`;KP^-pfu-`?U#H%nHz8}%c`;GPe6_8!=mm=_&6{tpog~*Jj!t@$(ejEs_oYHD+(__m#K=7?7@f -SOFAs&h3$HVjolndQI!kRGk+Y|m21mYf~jIX74J7y7*h^bz)3L`CSkWt#{sjsnJnSgvk4{qh?veN8m8 -par$oavI{bbY52fu+2ut`r(w8*`?~rB!Pi>OfFwroa0x0w3r|qOvz -V^kcdh4^4&xTEsoUSF`7Llgg>gW#WB9)4v}*te+5YX!!TO63_PP0airX`N2HgHKowG=r>GT&Gu0t1qLo^offFY_Cao2v(Ulgx)F{M49UIHlics6wd -!*!xjDGif6g!+)=)`celn6|Amh$iVM%W`yv*$5rJxszmnKBibJkU{m)J-}Zfxel@Gm-zmY6`eK!F0(Z -xTkxH5^qN2$7NX33>;!%?qQ>$!@#X7h=I1BBOj4egC@AgQ)CPRX_?^sw$W2k=Q1(I^QZR!K$Q(9%7J& -h64gxv&MzK=3$jt5h$k|5#CXQ{{3XR)N{Nv{-CAgCnS|`-kM|fc%gc*V)$IcdU(8%V_+@i@MN)9|_z- -)|99)M?vRbN=g9frNGKpKTc?vxQz*IVo_=o_GGEruvybAm~{!~Q8n ->T^oJp?w>)*XS}Y2gV;?mI^r6v@wE1CgEQdb22{R@hMbuqXC^F*<%UFfjW0@{aNr%t^ELI`RINo1o4^ -&inb`Yd|(eV5}hZvwFrWp~0xVNb9@lJ$;^4nO=I=a+B7!w2d)MZL6tEh-MfJV@?k=Z{&4D2Qw$v%~Wf- -;5&&kDvV<3-9pKr>~OV2a;KZ@{%i20?MubA9`Q|1l~LKc*}%bRO(AnmP%Fm*ze1gsi^SgeETj`34;kX -kpIkUK#F=rqEvCqB=XB+%X9nSkCA~$$!PIWE4jR)2YF`(-gSb^vN^Wd-^@T&&|8j*}T^R>1r~Tr#fOstoZEYL3 -@jef3A#4|C;Zy_alixPHyj5-Twsv#JL0b`t9QTm#_Zx9P*g}Bm9$74L;`(t!U;h-=dydki6ThxN(~?Q -UnZ7@7&z+o*=4odQHTOW>h1KYpseB>E^HnN*L;km}JIB&UkxVmOFwB+n-+@0e_$P^#3Ap3WR4ewiaSD -7InqGYVrKti$A>n%ge>9H}C%Z{KI?9Te-Bb{esERGm}I$n7O$~!d#7W+}Y)v3l~!?I%M@@@)5JSR6QO -Bi4$1@#UICDF(h*jEb^Y0bo1F)XWS2!9H_#?@CpNAJhG3MkCrTJdX8{-Lw8Y4 -H;ld;08w$}!IUObw#%fF6+F9^Hu5=Ol2)eHDgL|Q`JRga)wB$2)-+pOw*?_1T>z3SrUz!M&-cbG5EE@ -w{T{mRk_Pmrh?HLrYV-P>CI8Z$3yd(( -7mtvV@hadq-!MRN(Ea-Py^{Sv>Apk4m)VNi??lK|%?3>?ES>&w6i~Z_(xoKvd#t`9BXKV&`pOI>jBK6 -D>W2t|(~*osL{2{ZTa=b?fBY~d`S`=z=P&;F4`n0^dI67ePzw1;NW)n06T}8M9WRk&^q#iHr8pA7m%> -{R2BrN}T3s>Ff&Hkl5H9y^bSyRLdqCVgK(}@UFEIst60q>-q7nMVscpo)W9*8o5UxP?`FJ;a*G`7(UB -E}wOBTogh%^S|L6<-r`S!*PAoqHIxl(?&hC-s7~PwGDmu3kd~XVH!77(dOue<5$DcsQizWpX9SCl1uj?9xWPBSNpC*i)y7^*w@4QX=$az@&#wdU3T%HQ{!Ye(=_2(tT>{S~aSm -0}KSz|E)ztW*sD3@2k@T*9o{*eaj65DiD1%Bw+S6R>Z(D!P{M-!ycKvILo@%b95^ -Irgp}V^f1*(9}Hr9le*!Ow)9#*UHAOcFXkMV^7hvA<* -&MEIMHejfFI0Jl0>af8(WYaj$WsYNe&+&{LUtUmGXG;CL@Dcupe6F`sa^!dP1k;^5GO*(i9(djeVDNJQ=GfUIO}yjiv -FCTglgA702R?%9y&1;w1IGn6MD>D*o}c*oM9=46qv;-2ZnRh1*(Nt_?D`Pr*W?p|@BWHG{BrDZos~j7 -)7mSIPrF#w{^X{@@VNu9$(6FpJh=o5MD -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 -;~XkY^#IlE+8m!%sLRq_m)pDr`+6i1Yer -Co|k)S+<-d>7XRUJ^xeUbc-YFZ9vbQ_+Kc)FYXUr0E0Wd|1VSX)Oo@xJJ`Z#F3s`g?OyAmcsAw&H -lmol+bI7Go#^~!w>GZ7*=<*Km4%w?w9?8O<*N=j}Ha>mV4IZ(bc`tYb`nc9irEd4a-t>PdobDmoFGaf348(^8v%)^LeU_ -0r0K(ybWOe?AZnD(@QrHc)xyLWq)L#2E!G0^cI7+t15cy+gZ%4pfjOLM)<4wuxbdloWuXQE%JCPuFYgIBNt9;XPCpi#sSX9 -Mf5X+QnHI6ACK}LM^J2?Vmr(pPxUYur#bmU0^`50hHw^a6p+~$1^@7$$S$hiM1c@>IABrEb|=0o;ts6 -OY81hS~<;@yVhNHzt!M=jni3nBk0`6`!HfhV<1)!6N1Y!S}?K1eps_xC=_VYt{Edc<6Oza5i-#u;~TP$Fv+qj+|F_($u -5j)I90{4brPts}Ok~6V@hj&P(i -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 -JFie@>{EOh!?bSI`T_3ulZmV~UV>YF7p -AMt*)0Y?T4$cmvqx0y^+3DYoUL3xNItS+wJm~bJcSjdLoxZ(@pvc+5$;B_x>C5QgY&eP%h -H)n_E=h5j|boBbo@zLRnespy5{P^vQqmx%r^bG2roL)r7N3V}A0P@9YM9m7kqr-E60WhQ2hiA`!f+q* -hj*gEmet|K4d314tkl`Buj}D^f&B58l(et;*2kG>hNIC%juPEJpbPF|itqld2#Pc8<4|49 -T-qv-H&@H;yH>EQU7+l~(2LZ{9EGQfR)`sSCjqgOv&0F0kbk6#?(^Jj;E@WHd=LvEWo{QUUf=ygAOaq -#-!)gjkC1!#Z@7GXz|q?Bk;q*(<| -Gg`YF8=X$)EQzNP6-UavDbgxIA_tBNBwk#{RTLMKtMqeH4zT#f#%S~zmJ(D4u=`QxKhBcRDgOKqcqeZ -n{J^`N!S{om4%CR3z!wUrfKN3a{dKvslRQFR+Vyy8535aqgJC7A_8%|c*B-Fq;c$CrcYF77H2iMw(eB ->PFnX{93_9w*EYf}i&tE2ED%Oks1EEYlm+6$iAe5u&p0Qm-PoF-1`oseIn1TL1x`vK#!=S)wnkU!eWi -b+pMM`tN=^=WjG-vA%WrUMwPO>@6Fq6sR^hcaj7ZK=NI`WrM_s -qaZqWV!lLrPoPas8~*PF=R#Rdy#BxRK@My29B*fn-vRSz&F#4nze}@eep4cu0iOaYdNSCFia0HSah>E9K!kxzaK9t48&Y+|Eh6FUN8N);I6sx?hbs1 -J^dGIZn83V4=($C%{LO0+>3W0~|NH%I8zs1sKqI^1MiZ#?EiA$2sgc$AH?KBK- -`MGE1;e{EbTcm_Gp2O;q|lHIOIqbz%(T0ybwHI$Co=iE0k+<64=|iL^d+F5==PyaXsu#Vi~CAnL>pRJ0GJTqKDQ*k4EEVIKR0Cj3OWb8)mBy1QDK?%RpFaQj{OIq8Q1$U} -H&AJwWV7lDciu&jPZHS4K?EAl^U0@jDddZUW2+1oW`qNB$K?DmK(25-i~1JIeJdWB3~(@$iR6 -MIMOVgM6+y3V}lYBh##;?9=&%f{`zGHJ{_~#A}`Y~X2p%;!;@DRKaEZfUL%&nogJ@>*YTJ1dUaA%8Q{HfV3 -rTigH!zY*snlPhskxWqZo5H?3Nq|mk6 -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 -pr>;DkM8$<29- -El-Od2my?aci_r?AC`-i>lhqau)8J)d+KK%aiZdAs%B_6$8FUtxgs_5wabo=Sk$KP)c^(oa$@<2CE#J -xV5nDHTMTIK=<9TAFTF^|!khYwZP5XXVo-jREg*w#vQw#9-*m@3s6weN?vU1{}%3G~`T%k^qrUuVxcpUj1r0?4B6_r<_#+V39K|V)|SPGl -uC5X2-aWO4d5MY2;o5x6IS-rE~bco@vMNsC1D8jm&FUzZLZ_O6GGqINGX`BytqhD_U;)kz>XY7+eLLa -Wkl+3CTM0O72@VMm^u0?p0^N>1~1l2)J_PU5msmlMcV&!C?N0O7ru0bZT&<8 -;TW`EmZG<{8)VZPc0P`6umB;W?p`YbLD?T8_wwu_l3h@<@ZMA>n;Af;0#X6CnLLPeGM0KGFF-kYC1LW -d&c|kACC5=r@t*$p6XFz!+9aV_>yOXyIXg{v|2>_CrMBZG3ug{xjP7aw(r)gMhylFyyuh*h~2I96y+q -;#*L33#wQmw>iR-QV3ScPTGWM3r+x7wZ6XmG)+tiDkT0mJBA@{8(Vu7e@Zf@4#a8j3jQJU6FYSv4aM_ -H+4?m};XCxicA$SnzMy|g}3gDpz43bX>sIRS-H`2&7MZbOV4vzv1X<=!3Sa0Wdg1v -zS7Tp!93UO$XG>V*f~fb({>E@r#1LbIibsYMNn;Bf*J -wUUr4QG(eaT*!A`B^kuWeDGm5`XaBiGGNDeajrARr7f_N4cQI(r6B~ky -@DXXIfb=Pa7XQWZOTKs!XN!&a>Avd9K}{aq2cB>#Wx~`sD*F_x$(#8X5Qk --$`xKGZQ*WE1S;JRO{Z6T6FFlqDAC_7Ht*(y1&(1eYC00)AsBks88RT4zPmLs$;dRb^5M%^boAzR&1> -o^N7#4kE`+njL1;2<tiGkZlMFHW~ -$1JD&H6AE;Di#u=LR$o_hd;FtMy#HvMbjVn&f0oh85`DDqI#9ec&<@LX-yStH_(;~yW3nH|ViAK(mhL -mdeMKysyB4>2>3Z0NU3`2O*q7HrG|W6#VNwif=r%N<;O@@A1PX*fG;Spa=GE!eVkP`3ta`LbfS`V!o& -iuk5ww^Ec7+^?YOTGs_Y0?~U5_0bf107%22!A^!%Z5xBy-|&qg`hD{bcV|)9)@W@$jBtL?AOlk^WNkg -8QMc9175aLk!e*X@&_L}q_LIjkKnyZddYYLwaC}c6WkMq6Y|@6tC9I{_uR&YKi;BdUKAI+7( -*f-|Ua%#X#}MY>_oT>WGjz^pq3j5)D_?vMBLrhv2Y?7FcWZ&QJLhM{xahYi5tyS+5`pTB=W`*0`lD*7 -!Eyw6DGNcDT%Y=?LOsParGd3$)g?xSY%uObUocgi!Gz -P7hpXUz|-&`F$54*%N1_<*06m#fRrRVv?<2P$Ph=iJX}mJZ3+v7<((|DlVw3Vl2}LYV2DjQc&|A~_1= -{l7fA%pITVn94r;N=Eme-k6>8F5+kUg_*b!s4Sk(G?bAzoWJ;i-AC)#!fLlq1NV_fw*&ALoujX*pB#F -X+_=%Q*rx`yU9>mqg^FNwo0fPeCZUX}ZLWqh!?)<+KrjtxS<+y3^%{6H}8Vu@VgTvqc=;0MECIlb@KY -}OD};c37;-q420b@8Jv%$m~${qtwa!3Rfqg(n-W63xZB_AqYq_y$gIO?LxJqGnVb3tw<-1q4Q+y)QlV -DRg^3_{zfafmg<~yry+I8xo7eIMG=TiaA -tiKa+ja8GR(V@%;q#q?I&KqCnnA89~#_z|tuyVN5Jy;B7WDC!8_qD`wZ6xP%#AbL1xxb|~>me0=8);k -$!6H~_%z!Kc7H)4D>j@T8y5ADU~E@|m3Erkv5?zU}y-OYB*tthUd>%6RjM;b&s&cT&Avl6TYPjWd109 -&EwbKc;VS(VQ5yh=RG@D}%1I7@jUQjY$5YB*}a|7Fg_*`Q^^GVFer?hW+Ty|xBt)DQDki%`tB&5Y23> -T333;AREW^KE5M8hQ7sL$+Wg5gC*@!F8;0xOBV8fhExk;Fd?H??k;^mK14-f&fg1`a%;^5j}&kAiJ_f -_wzJMOxoWb1}GnW`6N~amTw_@p>uOc*dIIFR<2+5Ij-`;B*jdvE>jPt(V=aeEu!fCHBMOnMO(x?sTia -G$+cprc1%?|)>=lcxQ<*G^z*&*tD<@BMuMImy+G*2S_4* -^>v=SbbyNr;JhH31)Oad41Y4Av<^_IUA7q13d%aOGKj^OyL2nzT%MxO(r4(}Tp*I)YPx-FYEL_BjSD_ -L2XQ;IxBaIsOvCOxrS&K>uMCQ_t{*{_Y2#7BaLVSKX}&?dMwrPgC9uh(4UPtuD29PV%zT^re2l1-BRy -d0b#9{xN!KfL&M)%(xs7eHlXap4;H28=a^WQgnMI{wn7&hGRK?b+NzgRq~!J@cdvHWUTehSx5%>8!0t -a9Bgo2=yWeZT;RHp1fEwQh>2;hnSMrhJ}5Tzn3+);sByf0z0nI5fs3DwKrtuSnu9|89^XOthOTJI2Di -5Dk=QCUlg9CA}N3za?zmrIVp65TV)%Q`-2#ozb|_X?v?`7VQHmZo0@d+ID!r$#Alc8$tS^Rxpf2>3t5I8CZJotKzrZi!>5Ft_#fXa?Ui4zr0-T2#7T9E4zGy&v+q9sJsB^s`9d=gZF46q5m3hw2wyRJeQPPU3I|RLA{v5&RgN{+hgS;R1P7BWzh3N1 -+iC9ognrh0Mq32b^MRKz*6`<&G37mAR892m|eK7&!E$^@x)DFnu;!J9hFXj~?mLEDq>|iKSf -y2q1D&n{1*!RYd93E;$R8r0C>cQL&)dq0KLq71+TUY0WOY$+;~tf-G(jl$Xt_qr)if7;63O=PP^2dDX6s!l(FFOmB(L4K6@0us9wp6)3${w_Vj{UjsAw -8N5_@wjrgni(Uw0 -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 -6inv1%fh_=<*5JdZPaI1WIowB -HTwy0V^rOJhRAZhi?X9e+4R01wAf9Nr`_Y$_@Ph}JwAom-sD@OvIEMO&I#OHO?;>nT=XLlV6*8#2KAweTFflVEssz3Rt-uOWf8xil-om0hI$0FrfQ7zCk&N4!n -oaYtRh@4raAsmsl2VzckjuQ;UK~c1m2|%v0&>fn>T2S;;VG{nw1weiSz{&FF`U|;TSL&98|_a*u -rMC%S|d`5$b7fkX8tf?uiGU&6#R#S=&W|GM3bNjf6WfD&h4$*Mrlr(68R -b}q0G9f1I*p^2jBjiv>XHnX$1J$>f(EY{t8gy;r;o!vLm5N=PWlQ9m^%_$}$yeF9G}XTA`+!A=SOpim -p;>9411)(D(O$*zGM!hLHNavq^~|gHEmQx7XBsvkDJ)E(;FMIKviwFK(ULb -2LW0HRU&-xFQ*>PwSkOF+ZgXo5PrV!M5 -kAFk;HNhsxA9zm3$1Hb>B*H4RDNjkX**TPFL3g5W!q0|29ve=*EWQ3%r7{FV+U=t_b@#6Fc+xhJ}t8^ -U&pOs&B+h>S#k=Ci~`@iw#gW-H;x9Os;6BD%BKcFD9wKnTx|C5pXF)C3S)R+mA@rH0WqIhrTVQzaG8# -SoSJ1ir>fY%g~a*qV90+D8J-`4)_?Sq})xT@SK#ti^K;Wm+a%yI%O3#J!11*zb -kDvj(_YxQ -yr-PI?XfDw*azW`5W8BnJ&ByE*260d(80n@vE;_$XADB)F-4FlIui3{3y!Q*e@ro$iM?L=PVA1q&U#t3%Jmk5|E(AFm=u%_T0E -YGp2~!uyzn5)KOsZbYb=MB3Lu~uw?d)>2rmpCP$BYNdou*{bFgF0xp^*<&ppuX$rq(J$6RjUW26*+e? -QIPqQi*oLf1|pcKMzP`=rvIG20;fWo_As@?|*+;(JMbKv>V92Hmfgi@#f1ATzdSA>ZXS)RqSDb9*`ia -F3!QIzQ-U;)#)ZW3jEx -zz!tm~m3GVqxQoe|ML-s4CcYV8h~z5X96RK%TdltjXTMDfkZ2DlmR*p%@qrSIx(2tqez#c2=~+QV_J8 -#DR86IYwjHg2mL0!Hl*_dq%7=xACb-j%6a|_GC|?mD<&uKsy5R-=Iw0q`BfJ)n1y&f-$H9D#)XkM~BB -R&i!SgsJHdi5wPw9*=kJO$S3WOKyGIpH1WO*`9*bx973zLINfyN;%?^mwYoN3t82qx*X)A7i;mTJYeYBWRtraVmal`Aj#jc7Xkh`?FZa>U6Oj`;g>v;Uo4FpyoF|;) -WOUDSdN(nVqJ=fnS=~^qIj-LiMp$u&(w%RJDVQDjrhF^z|0?>+)DzqL-H1*1KhZjz|zo!c^7nYX2uz7 -ZeO|$#$6FY1;eN-5Kz}|h~Yb9SCzVN}_JwFcUc6hhb@AN*d8UlXuVQ+8uV_(|)FvMSNLosY2^fe9<)) -|vw6S0dSh+|g9Zb?zz_=lVClr9l)`kd$oRpEZL>jlK%v^;aOt -^{4}1L;YX>C9xSchbps=>abNE+%xuVyTH}l{&371%ea*`B=yXfkQ{Y$&-Go8bsY26f0Xu1;NFrmr!=D!X2sQ3rm$Pmf>~j&94Y_JW667H!rxk7bWdWl8j48e-40Mqoc;~)dyPrh% -UA`yp7WOE*Iznh1Yqg2%6FB%jKx#sTie|CG#hP*+8}M^x-4W^M0i4c6YuMPpz)J4euO*voDR6sZoUt; -8*tzM^!x_tPHe7QC7;~+2O0VpcJxRU{ohVNK1XuHjEnRExoG2I=HM+vAn%rr{ei9ubqnX?9)0Gk57Jf -Do(D}LiPDiE~?}CS}i_1c3Zqm{n*W+nlF!Dp1Q+RJDW6AR(7KL$jh9Tb5lLrRUL -+$7!%@1J7>Jag(nT5Z{XleJk-)gJ=*{D!W<*rfw$kwS6)cE_&XdmxUK<{|6#^wsI+zZK!&KNwQPptOhmk4{wSn28dW(YW)9o=Hxu~cJ^(kFF?n)8!x_D?FSMc2_-a2tAMadIDl5qv -23W%-F1av{^V=iON6{g;6SAFQO8YR|4(8RZIWxnx%ST6&Rnlh4bCQZCRx!=KPK+>W-mzdx5!=eD`ofI -?Ht~@apkv!6Y!hL8>0mCi*NVf$vszB;R6391t3Ys4hN_Rc`TXe~S)Xhj;b})*XusEX=v~ok0CMx7%mfXlYASF!SDx|KP%klV`k -u~874bY4O=9aM%R`G8#r_@18M%2ec#}qwWlBtz!7{01@u@4e_*MukcO{PhOnP4(>SFA_RxP=0;n{Kxx -`m)fnaKc@Y^H*^;H@!Kba|Jzbz0!@qG05F8qVObBZB^|Q@r|QT`0?(jf(pC>qsMc}v(s^0(&U~o{;^+ --n(_aj|kY?r7LM33iHHp&+gm#A;la||~0Jo!@9RqZ%3{sE{Cy~>$qX>6|IlGHzygI -bbg1ja^OkCmy%^?WDi84nnR=?eg}Mni$L=%k^KR>&Eh#3S0*6C96AN}R%>995S|aItNL$=uA#E#J(e% -cBe)-&wvAp{3|;Nn{Kc%VcDr@}^`0o-Oc163*bc@P6^&meI7^Ichv!Iq=1&u%mND9)8KQ{i -Ma2b_h#``d*@kJ6Fq$FKw&tKY`9r&9qh&b-D*n?>M8fjns>xxsz!pGp_-cuE#Q>V3Z~em~W!#}cchx! -VMN49K$&yEQbq!L*>ryY{(m7;x5}u7P>Pg)K1G${XGwdtrHUj7hFV2sXB;(A{77+W~w884!^x4#zTHV -B^O1`n8qB5yx`83fft^|w`Omz}Zu9RDxl+FDl$37-@%EMA$ivV>knbtGs8LYf5t_WIHX>f{C@*BFxBr -WBbqXNh6_Pq0GcW(`CpRe(9x@a>JRmB+K(9!caxl}=~*qMq|L??NP`n1JvGP>j@5@osxlSr%4x8}emL -$5U?o7=n ->eQ?uP_0f8)WC};{}VfZwpX_HMDTKL^KkoeT3&h5Pvb&oL^v~UKuEMx-I}j -y>i(=t{?C$menUnMGHujh8dPG~SOTigDT69mu_e9)Zuf?DYEvsX1cfjAlZdP@->bZz~ummiB^^X4o^m}4=;X_YxJu7c*z1;t9z;1JQ2B}R^yPD$&T(J_-k3Hn67_Tp0qGqscB5BRAsDlR=2J(lU14W|C4^^%`)7yG -PtRU(K;--PKi$N|tPEK-EGveg!1uNKj#IXfcmXPOfw@*0ug$3$HEDjbZHI-@wG~sa*8V0j+`!L*uhQX@t4}(39|GKYdGH3EEF(AP;NlUT1RC -))>_?JT&6bGRuf-rbv_8e%=@Wl3bG{AFUIAat$gR%~gn>D*-jK5QV-HtRvSi2h`5FInkiEQfn%3GrqE -0AI$=Sx?>SrH2-d!7=hy2K|tz-3&6%VzX4MOhp#Xwc4kUp7zN-VCOOeZV*78ni`lEP;Jjr)(IrNON~z -KDmVH0=Z)*E(XNittuZBu)y`<^io^J8uefGp_mgRzW=jAD{K_^6P?W6`k{S}J=3+Ze)M1Rf_8|5t#g2%}v#Xp{)mk2K^ry5!OO6KQB$Yvyvu`sFuhR2kID#rHK%h{;ohH3}s~i7O -wBJRZs4s8R3P1;5o5%%NsrKL#;_hA02u4Afpzqdn -lMJs{=WOB$iLjyr~S5*f-k`uP7c5C4xqlnD_ml*ezlF&w=s^caE?A6x`g=a%GKkqX{JV4#SZEtUP>+n-yq@wJan4bw`{*Yiwy?dNl?XLEsbxmwyzDl7c4pVL>TU -vooc;@-q3`N~rh-5KdCIU=%g$3*jzE|S=85dG-q{{23Oc4wC`w9gW&)#dPmBf;V -xhqR&bLX(OOR`G7}((>oB3@{oa{=9MnvE3y&Jh5`LalC8j6x76>%3Vopo)U4URF^7Rk7~l6nwEISBT7 -Tl?S;vn59#;t`6j-(NunD}M}Ri!F@}q)G541R)rM_NKAWch4}~aVPZ071a_n=V&t_C2bz`?~uJU=HbL -I^ZX~&u*iY)Z)Qv@$k&VmWkb40UYuaD5gP-RAtL!lW&(+kg!bmxO|YtW*vrfun~3F@QOV=3vownN8^U -#6_?Y?I0hJHUj*D_o!B2@A^WN9M3d#oEQW%V*?yIk?2+u^0~t83=*mSd)tigtS5QOTI+DW^;{cdU4KL8`;Y{rR=P^NogA&}$owJ4UjzQLWjfcP;i#;PyKELsJ%*a`1V!?x&S64{ALwF8#k& -HGqFKNU2zf9r^ZByksFGY&mJkIone$xGORKvwe_{5oUUH^d{c2i#?i=rvt1%h0rvdG=`?=XsYKhf|*P9eHF?$OeC-#k2Y=K|r_ -`PrE@PIL>5G$ji#6~M`uklt{8I@NtN9hOcA)kLXHS<+=7sCfVhn=KD7<792z}0n!4%y1%svwU~)d5F> -z)$#a#;O{q8So%BYY?wf$}~xiS#Elu8R5UpbLFzSrkHOG3fdi6ZuB^?@M>^AIyyf)eAUI`ZrFj0k6yY -440zTzVNR3J!N`c7e>pi`*Yz@rgpYO;eBozCtlL*xmUz)(akVJ^vTwfnKz}|410hj#Ku&&14fCBMajp -$i5T?XdwEx>HAcsxng;wiBKYqt*9%WFrNoFsO&O&77?pf6kY1C*^B_5_Rt3d;keL2n}%*t?PUT25=RFWx&&9BD8C -c;FS9xrJs%A=J|30=W>bGhPBj1^us~SmA8_@pCHf`2CVRlqNgHNB%y@Q)Z>CRqqU%!%G>+ypj2U(MaH@U}mqZ%}w)V#bzG?LpMgr(%h%L#Z^c-sIDclvoyWH#>Dc&yUYbg6v(3A=4G@!-`Ylto~6kxtHqLvE -{c4*oHQM(*!BheIH19L6E3|9P*K5wxY$*qYci@HUZ$SzZ$(>yL=aT1bFcjCy^`W)+v~2z2-jM3Bv_9q -W^Q#{8ZCI#hN%I^^XQqCIZ{V}fXyxpcen?gd(-~CX{SNjaz93w)hg(Fq}^*nJuKYVn32uQZqY(Ckc|HM+9KLle#@_p|_vE9|@`m56wf{YcQ2(;$hLULVebP>+*95GMQY~;8ET( -;4w}0&Py{%CC+Yjc1YL6)YaLFu}Mti4&y$~@w^Co3s_Z?LD8(EmyRr{n9)rlP$pnq|mQZi+!y%?vCapLkvG -;9LPS!_F@yLVAyPu6X$@NxIkxZ`=m`h9N?F3XIZMtl{i!Nh^JXufx6QW-TVcn`ks)Q@Q&g2-2=cH&!% -V!5@dZm>+bgH5E|)dPxXB&&Z)k61wZbIr(`=sWh%c;#`zQ$JFOs8@x>NzPUXN)wxj0Bx+ESB8?e7$R| -y>J`F%p<7A;+JyHkT1$_by9iKof7t_Zf(cxPDmErx6pZtF3ags-C7H5&5ognh3o|#PnbOzeIM%LBq39eRlt5?@jGGcTzgOoL0uOdP -$J<&TN845kN5%ardSebbv(nOEbd#Skr -l@E>bPg7F@_Auz=teIHy4Q*9?`O2ly%`EOFymv@}lL?&_~wOIBI4!_MVLn;_k%3Cdq98I(cA30f5v6h -^(XSu{`Fd92I%4rt8OS36nQ&skUP{V87S?o|&%lf(r*{j?rFk8i#V@09x6QxCwa{ew!Nu?z&?DL&>@S -2O@g>Sy~ZBH$JbPQ=W{p6UG(ugk7w*#4|pHA@qRky~QZi*Yc`Q=6vN_R_Icy@m+Y-{PfHdnVaVIxd7zywSjDH^m;+MVmr6=;codP$yM9pX*T7)zyAy0E(5=4X}Vi -u4KhOaivln98iLn+~mb4=cHO|Hxl=zit?KbV}H|Wcsh{`b*WrETwo|Nau6+@)aX-FHMs&P35UecLQRkv=*{ka+u_=-W;xOW`(jC{c2IbSFjzu1^F$tXVx6V_LFNSGa=aPa1;(5^5ciJ%U4V;^ -uj#wjW0*{51JQT(9n&*Ng^$d>x3j4zXh_+m!sm2pH`xmrVEWzyftzuU1RPj5yqayjg)Mrc$mO=SA$$A -aEJsAx@dNpZC-$O8nnfXrWZLKwAx!s#G2_RLvq -Ih77b7t{^f!nz;&l9|UU0^A_w)A?c@2q8EY#iD#%GmS)FK{Rf7Xy-Scz8_9)EZaF*v0S)kgdmA;D>^M -L*b=qFk4l4a%HgjhQcb84NrGlEE%Pu8KJCxjD`*ObiI2O)K;SrvO$+&b8q5vaADuPz!e+snB?gj<~1K -zPA_XR@tSv9f-8$x74HML;axzm=PhFpk^8mbc-7_QV}hfVB-aN>Ud3%-nawd*$ZvYs>w}Cnq`bm0)1)QZJK}7Tbk)R`mF -ws4>(Syv%75BCIqIrh)=q(zEL0dAwzkH_ED?9z_)|hB&b -9}6stN76xCnNRx(ciqQ7>C*Cw8%3wP&KiOAgc(7jy{_Rvj{X}4fG0VG!oQ9)Wk^!c+Hk>kNgqLNvsat -8f@Rdv*(XoJCj|P!LB=McV()EW-N>8j{KASY>E9TzU1&Ri{GtaX{bo6+GM#dk{JbR!fJgxAt*lD=Bo> -=pHoaEmPG@Q_&6c1tC_HB2s+4;X@LKN5$T#Qa|34~k8}C-F`kj{gNLdzCHD^d=YOG|_T{Z#}S#Yinn*+ca-nAXSi4L> -Wn_2NjaKA_EQY{Z4(8s0V*o2V_gKPp1Q?nDz|XCIyL^5Y&ziqVk&jKbIf_%rH$ah)Qum_f*sg+axX}# -2X$4(8&)9(*bCP8X8AkK(j|Xu;wP)re!_GHMWhUt7Dtl&_W@Ld`(TVr&3wDM#2e;H7XV&22*paxlLY! -2Q`2#t3DD0N{!4x>~{e?4JvTi^k9UU`Ai8zE0Aq#$}&-9Ia{gXvdkwbQK`OI5Ez38)&&il -00bCb<*Z2_BBo<--LU8A2*Iy@EHTAsNF@>~ptn%(~oES7`_uuM2qbwFD>AqC@Nn#eM{Yu^`=>Lzc5Xg -Hg#T39w -TajB>IME03Xgo>sR;<{h%P%wKo-F -))~(&y)&gd=H*gDmi0X&RxN;~;qbg)#wT`QY&I{n7bFlcH}8c*Ph71gsP*N8Mt>%5obVKfCV1cEUEHxu?Us6Nx;Jy -AMQ3U0tJdp}9i}*2Z)tfKAwFSk_re1)8zr%vYZ?|Y9>S%Z1!_mI@hx6GsFLfB(`l8das58mN#= -4mJ;^MExh{02los{5~feRb^Rv*Vvz=E -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 -;c_wZlfiqXvuACrP2WKshf*GfH2d -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 -Us1C2RdCQ}jm7GHoxP(n?+1zFatc) -h3TU1)lFO6PKq}~Q;euMM#;xxuw|j!pWcLnp=oBTTN3ZbF -$U9S31g%y7J7 -qqi`x$`4*bh}$x)>h33-vIP*!CQ9*j(PO9$N;@gI4^Fc8|}@Fpp&7@ykqGOEFOO|n3h25lJ2X8O*G6z -u^_pTgrjtCOtZTXv(wfaEQjb-XC^rsxlB1`~N&(V?oNvhEKYNpKE_UEiZvAT+FD#Zi`Fl -z^hT6~hkh%B6pwRG*Y+JdYBw%}bd7fD*ZE|0 -o#m2HKL|HCvX>4AQ(ZCOBGS5;K#+>1P$4$fGkcM89lu>Y+fLcofg;*YAG=P#&) -BO-DzMEF>eHRP$@!kDgZ|7*h#V-45nS@Gf~=x1$AWllh2*ht$JuDu}x(|LSb5{m^+Bk$+h!{BQi;C==G$#Q^Y(Pn*SL;u8{8kRYbpDZ;ELa8GIJIM63)0*X18e4g0LU8<#ysh44y4?WA;!__kEK8R(!C0t&M(x@7pzM&*~wu-8 -32l*zBF#f*cXf?3BX)CV$%C>FX62?UGA|%&6FW`suo}c$_!T|2t4C=wG#o|e4}C3e>fCCK?+F-xDW)1Dq5&u^ -$qpMtG%+H|XZsKr9(q+b@Kv6<7qh8Sx8Ej5zBs*_1 -~|t9ld)?)u%y&GRZ{I;=VO&_?b!{K#slH5^4Xej+AiB+31xdN_6d|0ieOnG_$A8CU`^U1347yCH(gDz -qb=2fpyFq9vc?WwJ=J31|_ZHWyZ!+yIk32uMc!+J3zi2<&`SjrR7R?)Qc$lrau6;P67tu{{_ho#KeWjqV6 -6~og@dYfTULgd7U-s@Z~6$sLn(UwIc6?5Y1a)Q9M!f|^uOF+@*n*=5i$@peTwSd2HiUMMB&4#NG_q~8 -Wv4Ri&(sPLiv0&ctY?8BSLNh~saZOcX#Cuo}Wsmm67sjgGHhYLK*YHYV-06zj(u0z? -d#fPmr8ti8~t8vX;E%G|Hk=D0^q{5X%~?`Db~-=H&(QqP8y?y}*x5IE#BU;%~bCV}zAOjOQS5uWsWze8Sp8b3EoVG}A;}E#P!-3loua7FluRQx;fegGw2-C>%|Jq?g&L -+z`vgH4NyRHBYYB)WM>`J1k~@lZU}PSn(aa*2a0J-EaKn|4$yYIq_d@E&Uze9OPf4$es>f-@aAWRZB2kQL*2&0kRYEi>p -mg%!(YAtUX7wa_?C$d~K|2%RQmjd*8HI$0qpx2lTHE+VezFQrHcxIvaP+nR|7}6Y%&Ur6;?O!GOoNbV -RA3!1g63pVfmC`M{1Jbi5P9{1m2nL4(3KibyL|_EjF0XAQnn!dazJtK|vZxRBoq5u7*z!_NV(+E{$u45THmEHtm>XwUZ=x9P ->k^sY;#``7Y1a5)06~-9^uqJb|*}^rwGQLtR{w-_Y8Q8nR%!IFv4KO~o%{ff8nuCH#r_!!Hw1H9{i6S*7;GR5wwcWkL^oQGvo3x9&bPELe2kb(df*GX|$L79O0bg)JRQ>w -M@InETeMeos#zNNy$+)sGa)5INS4t(ufFu>A&MkNc&qZ|a&ai<)4IewZvlV?U~8p#Ub{WJ*f9LST2dv -~FBila8YHQ)X?w0Ya4AM`?m@ecrU!Ei}hGPD1A(R~LY7BEtK3|-@IAA+O -m^;HYz4o3>-kr*xNccNLzr#`6VanG+d%WL5d%Pcj1|5#t4ggI9`-f%lkFN%-odysydSQfBI3{-`4|V@m7l(kEWaY8Ld-Rk -gh9tfL#Titt5qO*R|0d}RQ_K$Ss;0wPkOJ`02KJB&^eKm6Mah;FM{TMw?8 -)`pN}@>C5GFDWr!!U3lt?hcL6H&szhaeW$JG+5;^CQl4r!L8gzCEXYk?~)T$XhNRK%8d3NN<|?vwxIX -QQ6XDqNIfhxT)#|!>dZxB!DJ4N#IQ~(7I)z;;!~P7v3!izu}RQm&foVR*b55pSTebGPgd}dG -S^i8QNB8!Ctwg8O}xh&^|7Ug94Xfyod<5GB(%v)6QPUFLv`JX_7cQyt6e`FlVd -OU&hIk)fcDPZ>99A~0$+nv8!g*v^Sg|nXTu!> -K>@plbw!)1Xf)v&xP|9cNb-1e`Dd -Wye;qog`m%i|n*Zi6ATgc)h?uH{YO4=iFIp!@m5E{da9EQ?*1CE3NEBAhZqW{~%@S$0BMcVJg<;ZK_u -{$>`{26MbZaapTIKJX3ma6=BGDKjE#qsbwTB95V*r4s{!_`dguLXux)lth{Xx? -AK;lT;v-ZmM)g{&rBDGM{JQ`L{W9I10U*^lk~6Fo)EpQfR0HzS2Wf{Gnj7Yww2>Z*({ga)TN82~IU{Vo -X+X?A9>*7#ABL+0E>qJNw%6&c2FJK)je+%iPjeZ0QB`Nq}r9Ib`G&&dFpsVyAMj{xG>;%}S(p*3U&Tj -amwRr1T&%FXHxzP5F0xw52957qPnLeN+wuMV{l7J#cQiqeW(A=N)Ui~l{^<>c)_(ZdmALmOdof~>x5m -9zua)4G^zw#k<)B;5iJ7!f3W+LzzcNym(99`C;x=P3#V_xRQ`I -B=u9{se$*eEXcGSdhf2p_>3qpe!Fh!Ng~HfnxGN!b^R+lW;N%YBAiV(}u6ibMYP -T^iEAMYe$u5!smH4KSjQWmlT8=~$!&n)XJc*XEtRmg2j73mR@3&C)^)nZd4*Pp}e3Tp=Ysqp|Z`UWb@ -su@!;Aiv(1lkN9JYJaMkwgygGvJ5^lXw(B=B$e2+KvEoq)a)OMZ8e|*j8N;}_j;ixAS}Y^))G>7nD>- -#UlzQBKv5OL!#_c}R=z8kbCi31aV!^=y%E|$0_(qL)cmXR8uxIBDuMqO^6VCTbaPkGh(;mKCafG)MZ+ -l_hG4V$u_vA>tUkiD7IbdbpcaXZV -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 -q{);Y3Lf1_1_zFwjH7F$%m#@$-sOZ{Ev;fn -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 -3n(iWpg!i!^Sx{FGWQ^gMKYuk@5HY!Q -C2ZlQ(CVppzI98Jn%P^NulF)1M>QKVRSoui&=!ipxx>S!cu81MD;GOV={i_4$Hren4Ij>CO+2z+8@L! -5bVdXSrmfzf~|**d?1wk5%dlNcQMNaLr2!y}+);pdm)bBLcW;Bz(T4GtDq@V}zc96!GnpDBJmJIKGVv -y=q2Qp9anFa|juJvyh%$Zn2PpW;>;XDlnOpd_ch#lLOnSCa#njD{D)6Js9TxQ_M8hDtyB9>s%~7A&N* -^qYo+EI&ZZfm*0CO%&M{gKMe7gQ6W?@}sUEY1-p^(*ndflr#>fy5tD-hmL$us56(Mm9e(vu~Q>{Z8uJ -g$VVr|;sAVR=I!D}L{FW}q*(R -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 -YZ_UiUXVd`e}@nCqT{fO##zOJ;lP6HiL6 -vn~h6l*c>2Ur1@-vF_a8BHM^LO&$hjIKM?QJSo&X@yPW;4W+O{)|4yr+YS=F3uW0Y#?d;suC@bz)hN1pz+vKW{q)<&$4ZLbcXgF4t -hGf^8(AuV*EVOA|J2=>5OZN5AR9&Q3%Iq1zI-BC&?%#s$ZG8J^%2szYRVz%hD!cl<&py|B(=O}V>?!e -NZ24B{OP)Hy_&SdE%4k17)uLQSS9TbYZA)?Gp;h6P-Nq8K-`mtyrF%yD^)+qF5YhuIb<0k${B$VX%N -1FWF*zs31*Jj9VU-#V6b=o#`&w%%O7v1`rRdY*)4^Z50l}1Omap`B#rodlc$8S|+E5B+os0HI7_LATM -sWHrSU9zp159DsrC@}7e-WVSgnHR-6H15drzie>52B-AD=y`FR-s%`-VjP)PXGw_1us|Ma#KNO&KX&% -ym!_qyxp&x(z@t{nCa1kYXNU|)o3~GbwRjA(6LWke-(!bJo64bm{>1z}EOlc9_g@Lx#|M}>V7HY*&j% -zga@alhy&9~otb9;OH;&${R&6eK`rqk&+cNM-p0`iL04(j7?-YSCXKW{JEGWpHYU0~Sn_rKBDhVV{Jl -dD~vRQQ&78yi2qy{K6+eWfBvzJrwt|IK49r`%6BYR)#=sD-u2(l246tk~1PRkb~ZDF0TA@Ym_`li7iZ3)-A@e5 -_>c2l^O#h{aPp6#Y^>jBVfwWRDJDYEElPe&C^n(Pr*v8Su$<7d@?=W11my!h)!I|#Bc-_zfRm?bX@_h -^oCrz3x#sqpe>pMK2MPGvvEel3|VbDdGRhbT_{t2+03H=PcO?55bGb83@N>@({Rvi-hNfN)P^e!5406 -~Qt~%gsKj_1fDf!eAdhER>78M+JjuPmhA=W)H!h9tV5WC0x(LJv~`OVI1W9X38R3mf0S4TBPaTG1NAG -4~5=2J%D5{%d5d2{BRF`vF%{>jbW7?JdKea>1KyXT7; -A3loc0)?J@_Jg&U-sJh_jB~2ym4$vfm>5WObscvQIvW4egJy+YuUR0Rdk=i*3v*(X@@v1r6)1CF6)vG -#R*+Y^?YAbTLn<(D1qF0{%9*Qcz?;qe3D_NKOD2hExVdCvER!RB*bCaa??A=GzY%>3DPk-N?e`$|Zljdo_Pb$)UR(aqevI&Y?Wx&~>>$}=P -Rl*&cDv7`x?8(7a?9qc@}qU(bESgItlGeR(C;xk)T!=l0sr6Z0IPn~yj&`c_y_dn|Fhk9)j==#z08YG --@iUFk0T%^W$q{Higd`v0N#1H@oa$gc3lD9BnqLpJfsiRftIgJ}AKF3eZy35x&~EwLCY#PZf~)ZmG3(vWYc}X@h97D3w7>6Xh-Fh_C -^@Y(WiW7%aoK7y57Rg&LeNOT1WZDAO`igV$!|RKyMPV~hOQBAe1mR*E7EtNzzN6s^P>`P4s!be8e`W| -f5tjjsOwsQzwonHNN=<3;8rdF3~M3*e;zTGXbs79iTYQr!t-rJY%Hr-|y{Z|mQJM%NRE$x@kBL#L~{s -9}cozIy#7uZiwI)IWgDH~KlA7X7LD1$+^$4feA7yTR3M*AqtL>)$8!@0KQ7N7_MBDiC`5!f{2|0F@Gi -Cl#=v*3WZ<*(%g`w=`k>`%V2@&=?ukKZOKq&}|gdf~kN0Q2jI%`BkH{R8fBQvW8i;OGy2C-~4LudiG(A^e;I&o62EMY-Sp;i=PH1RIY(_G_HZ$)yn!ReejA(+3FuB#g8`jp0PjK*e{Iz*Ef2_c!M5RABA^O!qM9CbWgwHnfF@cN;aaB<)!XG -qlQ~3-l8+X;9PY-*4;REsZ{@P8W;nV72-AzW!+_f*`z!Dkq>O2~N##LlYJLs!%IdUX$pbm(|afqRbY0 -O;)Q{WgeQ}pQ_(2&3#^k>sXnPQg0u>Z6Oyeq@k-k;_C5$sGTsndP9&_3U>FhhJ9*b4eh;y_I?ZPmo(K8w2fDdi~e -efC_G&-^Tn?eY!q0p*(|n+jKu2bAnK`_MM?mCk_Wk`?3uC2JR36sXT(ok*c9vYn-&XPNs -+>MZZQ|cnDeWM089f2HO!a$DnfkDk3e|w!r79cxRKKnGy#3uNpkT7dx9w5wQ&YqU#Z^|%g)-T$&_U#@ -EzHxWN&dVSr^*~Xd)~X&6+P2=81oUCY?@p3vlEpADk)kQvUHv5W{ElE@4qPm}(?`WeYc=jlWmQmp(tTE3Xt-`z0twajh(h;-6s+Z81Gz -*^kN?EFZUsU~j`s~@W?K+{=$#355bo5e7^PhWfl#J^K;hOQ%7wwyS_Nt{&xet$4H4P2v(|S-=gLZgUL --W_j{B>yl8k@f+j~}Uabz0Fb4XMpWyEm-QZQ707O_kkU?aQzsK(a&?&}>^XOV`}|rQ^VDRaMy1xV1Xs -*Y37;WXiN}QbOtwaqB$@77G0+M6IH}e&oU3yC;X<)(Iv7SMXKtbR6FA*&zm3B{<-~ix8Ag -W)*<`$R}+`T&pHB&-%ULg)ALlVN1k)-Rkn}#c^s*IuXcx&-)Agk9afZdIUevS7tSZ!)s=advis}HME1JQ2nA#qa=_?Sv-(eUF1Kt -0k58Ojl%qg`a$CAJz{+gwKn0uH8%XWDpAfnqO$UC!s`! -W9!(CP_w)f@|L(ZoQ~w?IPhR$VXP-a5?|nLd{jQ>#jK`zV^M-1Gh3fOW)3aCS@6Jx^x`u;eQ`fMrYjD -z2)x3Lsan`$d|HHww_wS$IU!Gi^zkkmAFn%UcWy3*piG5$x%ZxFsu;e(V&n19#{PxzEqXIeSdoX>Rk1*>Fmq%k1s#JeRXm6WAEhU%d>Zv -O*@BReOk9OQmlMXCElK2sHV)Yjm9L{lUlHoek<6QCm+srN1N6@)uMfQ^6~w!{;aETr`r^6bUZ-aXLa32r(62>v)w<@#;a{@Fx9 -lbL-i-EtfqrT57p3WA+-W?s^Q?s6l-UU67k3L*Kc;08yX#$j+$~Wo8}sYa~B(!V(n}>ZJXO!4!vtb?&r01|tsJ20W`Yb9XJ_w}=6`zA(wNCQZDzbYQ6}UXVIIR`r`0yBY)w5urS --Sjqa(Y&A&eLFoI@@V5aM~BgBp5@|?IeIrt0ecJSuh0)?JO8sEbN#A(;ahw1lG=hGiT>IGhlQy>6x;x -nzF}R=Fd-c>C^L*vyW%mE-K$sZJp1W#l>=$<6@?r!#pzWty<|CN5vB*62l7lx~10|}jV!1GM)QEG76AN0-6=){jQzoC}ESr>ZWR&Y4z8|Wgdp`X -=Gd=QNLW`lLI%+!kB)Y6yGSqH2m*P=N5=-W*~Is+%B -0F=Xshf`z<}PSHr$Q{aMpq5zL3S?)CVe$mZtjQ7@QSR9JE3jN$9KtF6*Rw1v_Ne%m#j^_I-KmO=O`lew_*2i3^KK -Qy(bx(pukJt%UH{OAi^MO734@lXI-$FQ8cO)ZL{=~Uw0MoF0iJCWEAF(bzkSsn5Mi$-=KyUOnHqgS6fSUr|(IF7YGAlzGD_E_UauA0LLO6Rg#B?w-P7Mzh3I)#6p!88G) -`02=G0gUh%~-ORS(+Qkd&FMHgo3YQpIG=B)g-l>y -7&xaGXjl&>t5WY4J!T)k#FR>Ep3Vb42r*Hy>J~8REti~{$c9xVmP_4D{jtNHQr%xQD#hL!p09N%rP`d -A1=h{Njxm&FB3u*}MZZh&QRkIdWQSd{%P@2)V~tnVrqkHb;@C~qZSZK}bxB=hQ% -UAxedr(|-iNjrKX0rG1~%Ry=&_{vKFlh8RDKc$l4$Jm(@_UUMW=%<+U9a0Y8T$li0qca8Hs;i9gUktS -RrdFB_*3Cv}q*4U>>*$xHsbo)3oDZx3uUGSxxzaEfk`yBPJ5VerRE&JUvm++cvE_D-hV$_sy=1RmS>v -_U^TT9vU@2yL?m6YRpIlnss2jkDE&9tOJ${!vKxZK28E>T`0M`W^m8gyTfkb%w8tsodunB!1XZ -_Rw-b_25&F~d{f+i()R>EDI=SiQ64Ymf<(^z)3@bfeK{*cr|lHtPWOJI(NU`>40co6>h6v1pnGUa``cdG^ZI4x -^~A^hfyu=lJ=OX6pbNg?-f-r~s(!Bqryl4@8+o%4BEoWk<%kyb=;O;Mc+hG?ICJsbPP{&zbz~t=BXpB -LNQ#0)E458H*Vh1N@qHY6>wN0>OK=0cv7z5DoK89vX?fw#UlI_w^EvwHd(I9ifBI>K(aEIzN-K3w;s7 -%^wDHi{w=q$5t&z7D@AunF!v{A`mSc*~LG_UQ$?d*6xR#wU}wI?UjJqrahPG)SHu!?4A#eeBXF}XqJs -3w%~8Px|;uK0Aidm&EC+48Qc9gQ9M@~{z+%f01bA;J}v+_i@xY@8O9e8wv}VdoHslwsyU3pSoYzQSLT4TD+Es&C9-&hTuAdCf?$2SY!DIa_s>5ME=b(U3P-}-WXH?eQ^uk_?>eC+)uJ$^xg2Vn~) -FBYDmi`1ah}9Wkh;!Ti975J9uYty5owMS?IXf?S2RRr*O63*n(*$s{mM$1Jvw?pR({*$RI4O={?=QCf -H9Gm1PFKzF|D|Jt#z2J`^Kbg~7uhev)?Y=O)70}+1gA0X4?6@Fk672Nc*)QkSr}{cd1#^S&9UI^GK;D^M5gxn(1qrX!z?j{T -zTh$i8|_G^D&Slj$!Ic3Oih|aG}Kz34O7P`(30cECk_giF|2X^<6A)OUz4qjg@RH|8f|3OyY1*CycjC -9|l46O -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 -x%)RZWQ?U&ai+h`KcHy|djlH?@ -BtzL)^4yZEm@f!pfV(|juF@x!b;eg=?35o)=aT^1AU8c=CJr}@P7s_sJpTQ<^iN0Y|!54Vq4B-fkVMM -?PSZVU;G$P&rA$ZzQ_L3+;dx|Oc6tQ@tap2Jiz)|29q+U@AcsADa0tVBQ-GSVZ#B-sHKHzkd?FcWP#B -=j7%YO)1P5d{4U18lN%~kL`hMwRRuNqSVgC1C)NWzSaI;6(=@jOVL!d=km&aQ*zL5pL3Vf9k@=ER=wWYH&mi2@mG^bsD7H?2_Gz!4KT -Ha^osHvv^K=}NQ`p~fVj0|htz!ThH@06RwCKl37H*uDniWV<(w>)ZrQXi&d20E@Zi9=*R3<+Vq9}lfh -Z}|enfO>yBx8I42(=SF*k*Q|gVU`#?!hvJ^|) -cGMbh{?A_wrW0!>7&CWgsw#)hXv3QGpm1hnC!)a$i3|-GHPcRow)3Jb)(}Z!dK7T3pMX$ZnK(3|B4mD%U8%wJe8nNdk#vYu%ec$}>0Ww-l9`8SyL --5CY`F^JaKl2bIoWWC&8Ln#R?s`VVS`wt0CMWckid8V9cl0y9OBUnfuWt*grHncV2vgsPgFzVM3fbD{Zy|f|KGwVwF?M$?v-i<-=;dV=2G*-cW|FUMF9*Z1f)Ef=sy=K|4+x^L6>!#t -(rZg2f_9#?Q81o+2nZ>JntV;gM-n>gf;mqb0g4Ka=ZbW5*IvLii9$?9=6?Il#E$PA5_8WaIw -w;W`Z{y>duu)LAB>5F1xT9rKND=SBOBQPn$Cgy)6fc&$bwlZfw^+Ew!hGA*7im?!ItYKh~ueBAs=tT#OgA>WV$linQZ3`1PXPOL9h9s -(gAK(koq=dq>)<@d3y4q5MBb+ATn6c=2jd<2Uy1>P>0OhN(2!A2K@O*+milX<>rEPkJ1vo3Jg*8vmzv -b=>Bm+nRc7T*RXdiib82@v8Y=#hZStDrUqe7g_B$>trJFU>pnrC<*P6N*SPSPJr0x6y{;KsoruIYt0Br2Lo#r}X<-t4y{oEDdRT`d-+>f -8b`acn+iIrgFcC_rF}O8>Fp0wOobUylTd^?IN+>bZ3iO?Ck --)3eU@wj-fmPy={^>1(U&JF~31?%d`C!Rtlg8qu2#hOTn@4)8g8C(C2P5c&$zFNIy>U@nNN;s?%VokU -K(R!y1#f9oa6HdC8rju}+_kAauUy9wRJWKf5>67qP}2JXh{P+X5FjHUK>ItWNyq1hJCN(o_-vV*6>gX -Ah$VQyVDh651^n8H*v7yXea^4>sR;UCSj~@{^kr5sv@(gxIwc)I1)snq)N@&E|9{2mMiKeju ->?c`Kny2mjG;!KkV8y4cafp#xpSC8^)3QIsTRW-s+$IqAW&sflaf -pZrZ@LNT(Iq6Lrt;ZN3;?+s&_Ma#5yXaLHV=oB3X1Uj04IZo1;JSv*1#H#@MoZ3$h -6FRp;usUy`o01Ln9=7I&~v_BL>-~;f-jCGbk+sqGTIPN5v1$@j3spD0Q12aqD?izqmy9t)#TJJ1Z>s; --q0i+A+jcX(lJ53W*8<6o4J6}pXNGf`SD=7?L8X7d2?pKY>>@tQ&Yij49UL`ENU{dUl44Kw5~qxb@N= -JXP_0h2=Op>9~ti(+q8mle!p=-P$c={5roakJlj|48^p4rM*$}|)80_!;65t+)t0N!8*Ufu#9o4zDe1 -CHji75VA!Bf*m=s+(xgVGZ&aOb~ -s^7af@U!I5L}cw;H{|i8un-?3jEiRVG1WB1Zx^>p&^>%L5RbqB)ULm>&y?3|t@?OvWt;>N{HueJkOJT -L}H;B|LXKGStBcJBtbHT!rOr7<`QiCDN0Q86|>&&_MZS^H9L)Y=#&}&YX>NLKgG8l_h%ClBShfQN5VV -^e|);`!%D%kWqP=Er6ooPwCV&U~rK-5!(b+W@O`$4YTRQVjvWHx&=P|rc8X^2^z$;ZCy>{*Y1m8*PXd -!ByueW7VH0Yhg~zpuS>58GyQE#dhRq}teDbNuFYKe?*hb+fh>S&qQH+CGLxW8-k+EQ&fp=yGSA%zD3k -Xm3=^5S6k%*De@JvVs>6W;LW)m?kAVnqX^}o;opo+fjDX^7!6}33Uc`{$^vc(m;e20$Dl#`C;N50)Gl -HSKp&c?96MA|yW&~ZCkZ`&gfgBq<2+MH3N)a-GuTpr7;HwlqBj_r{q2Nkfr8r~^U!@RiaZng=sbs`e5 -y6tcFRkE-IN?Sad6xo>$h#C^3U?{~Q^0ECUkS!{DSU>DyA+|s;4TF&1!VFd9GS(L^|kvWLhxM*D$s;# -!8_l(MqX84i@dz1lCVvq$7xtiHvkO+L@J+j;@;gFtxr>H7VWf1K4qzGVCJd4U~}}a9u(12QCsyw4; -7#0@o#!!wyCF28l0doEK51g2Zvbgp7%%aNRJWX7E5A-HOQc{nXA=TM(1X??=aCkz0&bVoD)~f>??A1B -sA{`amY)DS4=_%#9BS&bjeKFLL8y24r6Ogy5DJG$NG9E2lQBymG7p%s==f=lt9>6F17f@e6rb9&5hPB)k$FGU#|nR1LmW;-;1 -tB_kxnX!KPTnNMTfDU1iVx9Z6r8xwYcQnTY=4BDvS9y{P3oQ?F2`U!R1rU7mdrZ~v#%n@gW|KN9H(pa -9Y^@yuCH6kV60O$gFURq*>Cs@sIy^xRK_Hbpm#J!yvz4kgW(2vcqJXfrgz?+VlOu-By1?c`LNh@0+b` -e(VhpWUnFkX_B~JJqveV%w=GH=u_*}m2O*fsdZw7sWY_EJJKglvB1c4!#POiX6pmu~d^Hux#iGV<}4l -G*I^KeL0sNf4Ah5~WpMDRHtK}Ck8M+iz;7%}+T4W~DHLk81lnEC{#XS4za(;dJC!6{7>nWG9W7pOzR$ -j7Z9hb?#6^R*hPU0S*J@)axv_F?(jev}qmY|)K%gl*@D;dBe#BPfN`dka(fHE5|08bMfM%4)M2o>X8#|QZ}e_#t2!zwtPaEz>e^M^x+@HHwp6+5(xiENmKfJ5_ -eE44z1Y>_5tBlnUmBXj|Xc4i#D=HE2HAwreODA|s+#~P!VKA0k?fTaFpuh -EsQ#(Z3Z63d9wseo|dqYf7``>>mNP3OMUP` -6;_09*?YIL5@Rryts9(p!5m!5%$~)A+8$_2x09G -#*CtD6AwYzBF%{>jFxq{4z@Bcz^MYZ^=%Ha@mCQ_Yf&8grY{P)5~S%(fGzpaG{wPacgl^W=@_t$<6CqX=Z)(_b0pptZ++qu -au!*`#{}ohoiT&WW2z(MpOn_VoJ%x)qhmry%KDOBAQ3#8j1r>>mifSNfRJ!0&TL2}I~ES}TYk+B+9zM -T#W8#-j)leyrsE&8*p$M6kUWsc>oaWD0ovcaGe-4BSUtnZ&3EK`AO}r@kqwOt5jLBv;zNA+K{q;cS%mI~jB-RhWI&RMIQ-$D>TcAw6Y --9%LnVFpfcxUSKsFybDC7k(?D20n1setBWh=nxToq2Lf|3(FL=u)lu?on726nKpgO(8s2RhuYiC?1S7thSq -DK1ytibGpu%iV?nZ+mdcD?f6LWa<$}g-|=G?M{rp0*v+Dc67T5Cie_rv#iEj9z(pl!l%7VScNX -u&;}}ML@A&qc2i3akjMbD-yyL;g>h4mpvB7nbyG(QeHOX(knuX)8Gn5dvIFRyiR&iHKt`30^!-nA$Us -FdXtk1n0iQMy+B#_XV156tPqgnTIS{?yT)Mjk%&DZ6}1e$eVw*DEJ-1EmrkQRC08C#>7_Z`U_J-iot9 -s(ODX~D3W4g4ZgV{mEVi;UD^v%}vEM)u_we#{m37rumHfy1f+7P&7XfM#U##g-Zx;EgkcX??1AfDdwf ->B!Rz;g^m)A&*=0rLaB{Zok|n1lGO#&qt4xGpF{C;W|u;m&$Z_zW!=%?@zt|sLJ&3`W5}FSFcW+Y7{7 -_JJ9a~cHD33J$VV(prJF504Uh7p&Oh4HfkhpjwTiCu%$Z#Y}~+16j{M0EvygNQ46DXkLxyuFRARbp&L -=zlh)%W*mo`66tI^K-I#bjZTm}dIcv3vV6R%bR|YoiH?S$%oeo+V90O+L2VSP576#c*jr`E=)W{D!Ph -0t!%qRtGc$Pcog8u?+&r$&C%ZY#ej@oeM=J(#{~VaK%&7wJ`)T;6X&DDLCa) -Gri7se8Xsf2g+t4jSO6jZ%Jr8Mc^0Im(xwK3EtvptB^X0f#L>UwWuP==0Od7}s<l(^D3|Z>EFhM|CaxW0xg@r{`&0Eqeq)8Tts(O%R%I;MxWk1?_E9 -XEz+!a^}Kh}i;`aAt;1Z)CVvqX;W~f%OciYl{_XLqC^p}I^Udw;?Tg#di!@t)Gnh_~zj>?Nr|Lg%FCP -D@s(-A%$nsb<>BnB4_fEaSyGZl=2elPc`@pB4^Dt}ve)etEnT;Yd$UH!Bg`WQ~w`OO9 -KQH0000805+CpNn_Y|+{{7%0J6ye03!eZ0B~t=FJE?LZe(wAFKBdaY&C3YVlQZPZEQ7gVRCb2axQRr? -S1`s+cvW3@A)fO`Rt2)*HV(E?e6B*eK$#yuFq{gPVD`-$JfV?5+Rvuid0F;irUlv{ml#j5&!`blw`;0 -RwpNxNMHaA27~#+V3uc#;PP^|DpxtXybR*SGRw;#oD^BID%mCfeH29TOX1mY -bEJG@GpA1fU9ZjMYcuNmwvh_Dz^yHz8cE%2=XuJcS{bVOmz>9@5B)WjJLoufjZ>0_FjQVKI&4zb%(6| -MJId&GI8rj7{S(d6lpQ0~kla6$_&{o!1YhQCNoc&s_gaKxn9EI4ws(8P3n@pY%En7mT_ieqWV~6xL$|(yg1 -|(IT#GyBeWn4fUaOBf-Dbaal%GPe9eMv@-K#@nU)!pAn=0$pM*(ptkKqZ&dM|R{eu4fkVQk}g5ni^5ZL8q%GQ^cLxgd}D`4M`0^}%#c!F$9sYgr@C@ho||CVZ0KY`Nf -dShVXi(+V0$4@*9fZ-D(nzCV4`-n5^@oO=bGriO5r*82$kVCHl0lv%%RjVZ~COcwTN?2js -So-6Fb?D6?f2#BxDdKKd -zlT=5U;NsrUGgrO8HnelaW{5DHrD9Aphd0E6_r~(rLB=2A(6fBp4d{NZ>%MMnT!QNOIW3k>izDjHU^(K~>7D5T%182`2TN@=0OQIKVZIJ -W*o+!4!Hqfxb>*<0)7KK=N!gzpCovHuQB8PsUwrgQ!+ROZDR*_|QZM{KFB<;=CvYLR4&2IE4ut3&b7^ -4A+ojF?2vBPN%+T=uJDn6HN3_Z%(N=Y~gEFdFp)uHO?;{=x>%+xKiK^ib})tAzwbzq!5HyHFtPO45oS -y^JHZJ@&n^|Pq2qXmWPt*TpTJy&vzTq60MvgfD3C3$0A9-vB?zEJccPs=dy&diRh!NV7&q16$V-T){9 -jwK#}UZF~PD;oMZXjm=q}~LXlc*9Ak55^4Cy~l5><}KJoU3VLufT-94y8C06Er)e=At -#%Hj-|3}qYY{`U%W8BR`^RrAq`mchL+E18Rq3#h{&TUb5p1GBFX0T6c=cgCYxY|3;@*&&g+5&Oslep2 -S2Ui{JIzfkAguGFM#5rKzWpA@|QXNi)B~}5>ZR3tGG!|7Hn4UkxDemg0XwRmr@$%j&cS -oF}Bs)_Bb2`%`?WL12ls&3r$NhU*dpe!o_akAsKH1dxMO9&X!Y1;N&6!J1$X0uCumU?D~uWXw2p{?u0 -5s~dJ?<7WxGVv|sa?Mg752cHin3^*+NE9_^33r7{eAFz!Q%ZSOctzBA(CsYzvJ<_Vm8yaY7kS?uJ9Q< -+v8+rLGii>cPuw&Tv*bJyS8r_6>jE_dRzk3c31su>(2j&(8as%HgpaSlZ#%qq14==w56t@(c<+u;B^4 -)*Kdz6Rx`~OIDFMQTKL}G80977+1ab$#D{8D9wGs(9ShF@ -loDaB(VQ^s|E{INI2m|DB5?ZL37%Yvd4cA4_YgiYs*M(`3z*-+V1t8N%bLf(mh6ChXk5GmM!DbLHmq| -P&ygd4d5C4eRIc!_Ja9cc)}9<*9))cNHm6`SqGIm>;z(QO*4J5z}v#wx8%VkBFkFkG3d&Ik2dg_ -EA@rZihUqlj8rNHEq~;+<0bRT?=8^EXP-m)QcxY#j!Fr4;@?n4W*A1mw%8c;jq4b=kB4XXi+G;Re!=L10&Hfs+rd~A}6-L}Jb^Qz=fX#(Y -+!NpPCD(bOAdJLjM0le*(Uk?whP*n=CV#hAWi2)1~mJaRHc!&dg4EwEd4+ooF6w!@2=i;$K@ZyoCTI#E4G -s2rWM!&{?cjzkwA=Rf_5n8*j;Cm$53C=ObrfTZ#m#)sK4L)`R=LTaCaPJ`dV6HE+dXHK__tTQn)Et4*4Q95=&OB$x96u8x;UR*){?T<^%a9krfMuhVRuuxQSrhVFw -ObDJKdzzT1&I2s8_e1sOX5vVaSn(0SHmc-Et_UKl7E`EODT<@9IHO>fsJyfmf|3F^?s=x_|?!gQ+|Kb -W1uDEEv8rN7p;TcE3KUDDVaPZFp6&;{! -ZAR0bz^CkvaLqj%Wl^7*NyMMTPdkpHcjuP%Oll$G!ZpU4Mz(4^QhsxmUVJHf@w1sf@wP9f-*LZCq7`{5MfL#QC -sKHq_Jia-Jmh*CP609j8SDiq^__wT#dt4ZS#j_H6 -XzLRp$JVus9R)g0NQ=Nxmz3t!e2aX!W)2b4pz87&xZyEZfsjRqP~g4;D>3pUgo;KVeDs^1c=I+|&?&Q ->Y1;Sq2u+FA9*EW(ROY;5@3bw8dVIUWSMuL{@*k3~a{tin-P)EDk@2`xfv%ers~IRJ_oIg_(_go%Ta-LFi^{Q`@%K_TQC -dZA&pR-VHArmX&K89&*4p&p!#&pHawyez8nSgusx)+maAnbr!v_%igk`mE)oRpwh0L0kORgbZs_3UB~ -Dge7HFIt4#dC)dVkyrlSVn8huj?E;`dO8!+5 -yB5c^P?@R|40f6}wi%mqtS2B*Tr8z}9|7L+raDprlDm4muKIe3t>}?gT2X7@P|ML318@u1RnBDaK6~j -u{KNq9#G!s>aHx%!*yRy&NzI7~eC`GEKn@03*%eEcz%7NDj$6#N`k?tv3#0o!Ez{r6Ff -hhacJ3g_B4Ji%?L%}2Lk^$yzR-VYgu!t-%Rv^+lW>-x4+M)Eb&^d=JNwPHx7c -m~=$YHxF$LPt)8F$=}bEA2FgG0=2Sf0mG#L}^S+(KHAy%X|}J3QymIymWva}Q2qO^Oq2m9meZ+XCuFk -%*MCH=%fLJ6chOh0z{{*~bdp^bOxa3(^DZ2CW)M3sL;9u+1hcKi8ak7Y(5f8>*^+w$ajx&?waT(9Z(k -#@-C3;F@UbzGnJ1vC1e%o&C_DN;J#9WoTFnrlhA4HJ2HHV?6R!p6{VS;dU&93ATt!w8+JU0g`MiJj7` -{M*F*58+dZ%2A;dRdZ;f9d0MZQy$pk1+aW!yD4mT?tyqa)ZHedVs7a^tQ0|~!I#-(gl!uka@o)h@>SR ->dgEsjdaKa4R8Jl6ZO&)rI5}^PIt^0HRY1$|puau| -3q~!~-+B2g4$$dtb7{RR6JOnDeH_>Z7S-TQ`{a7{`lxo5hsf< -kCR7_qB5c&bR_QJ=5hYyN$}(^fBDnnCy$>zdejzxG8jF26h=2;kUn+2oI)mX$2 -UoE3!!z+x|8Vph%+Kwko&gx#KG``7 -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 -*V6h$MgCF0y@tYSLczwiGdQUZ?P~N|)#O -~EG*LCon%VNvBbR^=)U+^7DWmj`n(&?u+agjnVScJWOpA|8x*bdGj#;L-r2C6sJtnaoR7|5`btCQ54{ -8Tc_rZGz8oKApWHr{Bv0?aZ;!%Gp~KP0Fv0GkdY9iTekE?8eR-t5%~>c!A;mWOf+JPNwH{B=t!Hrb+A -Hx1rTUF)&ENYPiF589-g!>WC*{gUIgd8l>A(QhcoZf_XaQuWoe?LLtqTeepho+f~tmNO$3dV0}$CdDf -zX%C5ycve&;>(Qh#%~_Kl?fI-sGn%(MTSbrXov!0Qd%ErK*gxcI4>4e(`TfL!RUO-F5S;w9-A%)1tv! -SiKaG2NCLKcxQ^x<%@~yo}Shyu1{o&ASC84mdU_oNABT$~ -PC7aiw?Lt=v1`2;Qi@%Z1?jrS%-rDZj9Of7ccFxvJ1)d!0ASwcoeu+^8i5BAvOf3-#P01nGA07w6{Sb -6Y^m$rZUl5#eez#eoj@>D?}FFYXSbTpzH>oaHgs90k%vkP?O!{eg_aA6|a{{OtK7k@tm8cnpF+h&BBX -k?_!Zs^+vS=}zCUSJ828!x`Al*lv$pZd}hVK!bw_kq?;!RAZIn3abtLvCY#`jbQr+X%zzVR(-p~ -J=xS!cI?Jz%ZT99{q9}#Oiew;mHd{qOuGecd3KBPr0%IXZJQ$Mu&PF)QM+b2_A|?KQGHVORq@#F81|) -c9y%WAZZLXCUX>06N>f`8o9r4^%$x_}{bm%md92x*VWa}SX4G!fQ$t!7LF)E{+wmHL=to@aC8?6qJmc -6y2+;BUOSi)v=r}$p%TekLOvOB$x_|RHhB%Rbsqrk2c)6P5jez$TBryNiVMkNun=R*+0-gyCe+ePDtT -9-~J(yAMg{Uwb9a%i$#aN$DZD5P-P0 -RkllhxYy>r^^l;2I#}tqlAl_p=|B-xdde!*wD{~U2f;sNjD{8`0o&rYIM(lixO_+fI@LX-6q=<@r4TU -an5bns+l4;Q6Y!49J)I(BHmkAgbArkH;?@3_&9?{v+TLwDaxQ585JO0+3*s&u5B+n&ni4S?VCyhWTbF2Z>{{i0Q)d! -1(s!dq9)^cv0lIKCSXzRk5{9Tg&3mvrsiNA`XTOaJtY?W9_zN_320?D~60z&?kd=4o^eqiY0>5jQNVs -s!Y+tGaU~nDX;|#;B67(sdt!l;eHTS`E8_)=G%n9;aQm<#-58J6@w@T%lD7amo!^{F(J0gdW*wg`ClF -UYQrPS0aTg^M4yY6}_nis{)Rlgz&s?&6}&F+HJ`zyKb1d4_Cl=P!g{^BHhv@8CIbDRxW<{sZS6dGdkJ -HLz7S=-CiQ!OM>Z+R2m)#!$G(Z<+{(p9c$bZt#;_GcXao{_g41Rt@st8Z*-GoQI`37PCkK{X0ig`#w< -dbV$Ik#EwE(NRX#vLgm;-Jm^Zm=>J#!<^i6!CWYuz+2iiVn3a|hj;TH>(N4{2Vr#OQcr8pf97Yw)Z=`}#L1HVm=qa9v@3_x> -L-^;{_7!VhbI@>Sn;Zp(gJ8Sm90GwwEmPS&Nz#UrEl61ESh?nudg_^-9%+k8;^D`?t==^K<9%$4b!IO -?$EaBR@9HspEW4N`WvgxGqZR2n0{+jii9&1iiSx+ELT6Mb1VtMHt##yZRPaaEw^fe+Zb%S^sOFq+G?t0jiu0?E}2tmWPsZ#>X;d*&OjvnAG -={?0P5d(b|eC1^_r+2L=8Q{H!rSPu@Zo0xPBp>~DuSxX?m`oMlOT7oN1_FfC|Mm(_CnLVR{tI~HOIjb -=wEo9%ahaAheygstB=S{JWc)wn}*m~oRZ42n+p%PcEw?BErs95gt@ZzA#r0i(_+HRyfjdD-Yv`4g1kB -A!|Sw(ChSib*VdtF=0XE+nA$vE1byY}&XG7(HI)OC+RPcNjOFlxu<7J^Tj*#sWiOSThqJ|k+>TyZFa- -NFH<#~KQMGbfzrYBSwDns=NSvf5MezUti!yXI-8=8o5Fm1y`ri+|n6wG_Rt?ZnpY9uJCIjk@>s3=ppL -mUBRT&+`}))yqa>qDaV~dfbG!82ciP+ieX*_TztP^lPr>wQ+t=dX8T`| -_>h2)K9hjmkxV_qVcC!;r0YbI5M*g>adPO!FTdO5byfyucXGndQEXSQO&(DJA=?3$~hDDI2!Bw_KYkh -GQ%4io`bWQkkx6zx?A*uvt{h -cCAHmVh+&YyZfz^>5Pnao0ADF75jBGHocPBf*!fhNGT_i#?f3wzhyc?M`=X`Ur+7vaeFS*rArqDFQ{D -lF-W^YD=`Sy8yEGXe!CuY#TdRHjve9A#Ci~;-O(uwM7eUd7G$0LYX_D@OPufT^c=n?FMbD=q~alKo@O -^NqQxw*xqQ+fppXl|jrw$6YfIuk -MPt5!HkRwt+ZYosDAg$m)m=?nLabn7>W9#ml -@^m)KhOM=^kpQxT)J`{EDbxw=MuJ9VSzTQI_w7Rd_LHIPQa4g -$pY?=6faLqQb&yYyXK0-wnHt#HO-Up!Hl2f(I?;E(s>W(ojg7p0-rK;dNCA@-|klRsGwo>tVFMG)Ax0 -*s;;B4m{@>{D4`$<{U=awd&BeX^u{-eI27FDrL@a-c`#@}JTzpcI(jT;8WeWwtIow*LIdy6m~z8e=Fd -`~>xdjI_!;>_WWQN_8*j!9GrhI8#TcvsU1AnR?J(%7SqRUTn$7hBC86%(%HGYO;B=FvS?vvN=2&7XVe -d+HtLqTX+Y-fHspZ(aAu#Bw+6VjrQQeXyiqO7`E0q%N*{z_$}B_8pINoW>>WGNiK<)&A0A{w`ERa6*wL%bXCGuO@{4g8o~CN#YL;b~4(iiZai5@8DZ}&2QOVP57UsKfHRwqfL&+xuPD!I&0ViZ%2 -|r$YJ!aRZ*V){RdbOnDDZF%ULGjw4(W624Paplg;u9RRZ|_1AT8tK~)DDSF3%`x~`9}YT^wAYSk0`-B -mY@7h%b!S(4>cm;ZiAzy0biGHwc}9=ypsvWv>XbhQ>;lw1QitDbehm?rTOBq_o(et#c2V$PI0GX?~fM -p$LWUeMRh8iXF`Sss7n^$0(2_ydpHi)EGqaqzLST*45K&*Wo2NCnKZ0)c*d)J$)(f0PeBpcK_=S%gaorGEG(>|z%jN(q}T^`!!VPpBi^^=CRMJ(R=f9PiI7Dvt@acmRj_^Z3x?7-4`UHjwjE3&&!TqD9Z-@P$gJ^g4=0^;x=+ -lN}CiNkE*!k^t3;Z||9naLop-ce~Z1tl!AAkURwMcw|aJdG@G4LE@?|8B*nf0!B-Yef86gTtM=9`+Mq -e***p<;J$o7IGUrn{=LJZMD3v#kSf@zHr*m0NEkSW)CDZbe<6NaQAHj}*whH+7-xd6Gu#BS1-O4<67=FWDPr~KFh`s?L0I)) -WueeYf-Rqf{0*(%-19lB*Jwxa_@i#T012jo77pyHxAgPm8oy0Imbc1ZZD(f#=h=*yi(`o4Q|-I3o~*- -z`c~7P;-Wh ->Y(7A&eUk>83OoI|-Rk0i&kr-cP)Mi%Sp5Cct$(ZlX?+8D#IN-$yPM@Ypo;_fcOx_CnMfM -)F_tZ65Z}qq_8_UkasJgi3-m4oSb(5_^#Kp7(L|}vU5kP*R+d~QRMFcfaZ4dVA8}=B -h^f^p=<);?Lo&Dx^kS3$wz~*Z^eItiwR*=YaSF+Zy7Ed$Yido~Wcz%DR0uKanSQUCYyM7z8!>yhzss{ -Y&P8a!Z<9ctcTcDh%?QdyvgS~^BpRA3`b@RDO66&<={g{Ktgzt8TL}v`L2QK9BRa9&vFnAu$8aB+s)d ->0?G*J0Vz4mNaI++D)_AsxKcGhh!&<21Cg?apr^cE-`TENw2jk1o+ll -FzM6R(oCqirwHAJf)jQ*<`^SvJ -R)4q2_G53|{9*??r?+h}%BCxPbE^rc4S{;k`KO)wT1Eb#xJ_2&Xr7hC2YxgXKGS(?e(e10ikCiv=li}aHTzIR?v@=QVq)qQ*)ZdNOdJlhbz^-XQnUE -gr$^h3KeGI=Vt59E?5-aXD-pDuEqo4sIK^5^Em$c;K76XP~v511bH55#{dK?if6(5|9Ki@xs*-b|Ie3 -ys<{+Kh7^|^AlXrmgPWMGDcYN}mWLQE^6&y9zpFP|I|NI&OIx7UCx9DZ>sL*<80lpItDDgvK^yP#h~* -6Au4y^cV2$Sh{Q4-kK0FF;+<|)P2agp%jhp&dfoNxp=PNN3UQC90h#NUE>;{`9J09>20%W#&s*W*+&d -%a-w-7O`$8;W{p2E65n#B=BjRoc1aq!Ep8gn0DKjbcP2H%Twd~$)Oh57!$yUU~epDD2PE^48>&(xkGO ->)8feZ9fG`Z#4gFC_2gU@)K;h)miCqd@6aWAK2mm&gW=Y(~yEJnT003b(001HY -003}la4%nWWo~3|axZ9fZEQ7cX<{#PWpZg@Y-xIBaxQRr&0BwS+qN10-=6|yE)liLa_ly3YFpW5iM#c -dHoe$cvx{>qMM4&8isT5=wz}@S?|A``1W8C%(%x;#k(NN<{f!sT3owf!Td^QmRAp80AYfvZXGO`vxy+ -KPAgs(W-CTyN%2@lifWm$+h^gxr$LFEN#h -7tJ4O>~MV4$H8mgu5sO5r9Z%=7$;FXjyQ68z$EvJ7GapirOj|GL_*SU8=Pnz-1JYO@e<_S;-qI&vPD; -gp$pe=S_dfMC$j%9<$Gxcj=90r_X-&T;nmc;81Ioi-h~$dk+IPvH`6R-ndWZ6~79j^~Vv~WA}f&%e%* -qaUJ41!u18NFL6D=^%btKaXq~(FH>(HZY5(tUAR9X)>hct>i~_fXxB)cp%}|5DwbsQXvy{` -E)Dd#di=sC!8FBh_-GT8@-_Pj=O|`U1L8EFq|QsuF~nIqP5*<_M*K|7R}{GN>Z?C4MD5^}WltQ0eiv_ -;_PBo3X>aMOLuu3AbadR|as$nEc9_Zv+3YGT`H!I}F0vP}SB}| -UVqi0bCz1~dWJPRuQbLgQFqy;fWYDRQNp{N%f83?^faOT9u-l`gJYm@leS39rqSTjSC6cg6){K1eC|u -nWYZ>17vn$3UVQTd*}Ldc>#rf*p7KJ;t~M -Tqk8VA44GIm4|}!?(}Ogp-ixc0k!8D>BC`tR(M^%o9WUb9VG$+*hDuvmN4fz{#S$$p{xk -Pt{?h_r;*7kGcd~&rZWUhhBcuGVXXZ%E_N?_bw++N)94;dc{jW%Ex_sJH$lD)dCgS&_F#A6SczvOqM-20>B596^lcYpy?=GVvrgU1tQf<|}iaxnuoK{Y -kM_x8HT&i4lCz?*DL5o41=Brimmh+nxc(!2s3CB!xJIQ{VmqrrV5y_)@yrF_Ev^rxnO5oCEOn`PtOyL -ZRze3?~A%x*c0!f44^xfJrxs)NRG2nY+%Q6ya8=TGXVPfxThD53oA;`>+U4KIJlc+awvoE9)7x@pQxEB2w1D~qH(^q#gycaVin?(!zAF>GpTNzQqdJIN3MTnq3K$_suTn~k@QLyG8%;yLKV)e%t%F%QhG(AZ7@1Ta<-sGi&~sT6^&|fhCa|QItEJBz`(5;#$+)y$e?^!{i%@AIL%k1uU90 -M;Qe4`~+NDu`wzp8s-6pRK|F*&~EVcaS@oPskIH^21&pXDb#gq;${zPAR1^(@|%W@AU=_LM_rJjVK`d -jJ9eZ-H@|6{|3@h?yXkbqACFn`T+TG$H<$>x8#r_H)bjsRL2W0G5U;NHZ*CwcrHcuQD17(*D=O*qyo*~Zs=lM*O&4^4l$}kHrcRf|fhGLb_1x`&A -E^=`9kh4F3bRC@21WE}I(lt^f`sa{dXz^$7nT7nPJ+>$sj0uqjS1+n%UCBEaYy(pVQP(fm)?9 -TyRE6qSyjT(_Fl?4=j>;yg`Om0PI45@(iqap{&UcD9zrj-4PT?5_V9smR-IK -~zIuEs!v^f*R`v}C=-@?fVj#bg6D&eZb+howbjpG)Y96B=Ec4@o11id=S6PM`P8-n&`9VGE;8t9V11z -1zOM9dZoZ4xV^1EE6w1D6hATZ4TD`qxIe1o{yzSTx(Y-*rXXQPca_IkujxME7M=S%D&z|Fj3hpUK1H2&r$+12?xgg#X)N^~uzZbVTOOM=Z&qg6KA^&SKSjL -qcz>Q`(Y5Rak0FLAslQrfOfW3iondDit)Zwkz^SLB9O@cD9|JB#LNL?Sy*}{!R(0u&Z7oA$s^`ATT4T -#j&+V*grCqGQfLes!C?6|8B4xEwlh>eMm>lc7MT>gT9y;m_Ek6t6nAR(Zo?daCv>MFbwt7^sgVj&^{Qvk&%00!TY$c-Nc=IF!iZFaEW@$c8Y5x_Wf8{^jLe;nT-#@Qx8-BCfDPZy%I -7M9sH>T;^QnjT#dDD~2QG4*@z(J${qrvr4+eP+x9R8c*K`}DDXLOZpmpS^tj;^Ln_p0S6LaDX9AC8B5 -LE1SOVk)xCs(RZ=;!F_sA^Z0zmM(oG8e|h!Y3+92xsAbZU7*OCz%So=0l~+4)^4R%5&o9otAD$xbPR` -X6UQc6xN8He}i@3CB56{prB7?p -9IzaUb_MNz^;}{ZGeB4<-FmhePe)$k-r;N8|*ZO11C6(0=N9_ -q7<;k(oX9`rT=rt5L$nsB2&ZIntOy?IYI_bb4@a2sy*&ZHxa;4@kQgFP~pL-w+c6qxl_ChJ!Z8#*ma= -o_iFx`{A65Nvv|@g)`a|pzjXzQ^smjqsd?QN@OC!JJr!h!`z3aM7`OXt6$ero}%+qP0`*q+~DOFDGpA -h8{M}D%6%S=mLh5JkHS;h-F1`0?X>jxfv%bYWdieEZ{X5;)QLv(c8puT2kheY%h$*3InW)^(&#`|xmq -C!Hadr0!z2xVXOEk@hmvZyfHUqLv5_NtY#VXyo*d@*T=m~}rU-*xZk(h3b^Qj-;I%Sju#Cv$HF37l -H`EQWMwKNKUpGkob>53>9-_5TB>d9HhuK=(LYE~lS_v3uV~vD^@pzMj@eG{=(Qhjq=R8JVIy+PNF7^^ -v_(c+B8+DI&D3mm(AzFp0@RVh4pBKg9NKP&9h<=M1Ut}vq+_6id_3dC^mmTSesnGWKw^nFQ3m5^~nx2S!g -r=YE??06L`_HW1o4Qon8a;H7@Tt*r&FTMZsIH$g@5H&?LVZl)uU`%L2&-uM*h39+3La%wDW1k#t29Mv -@TMGP5=$8C|J7{RPtty`$G^u|*9O(5sc(jRkId_@&Vpv+)&vF*{O021GMdZ#bVy>}1Ks_E#5$dDp2E! -QcXrkPn&^t+K2#X*aJI7>(eZffIR4QF&>E_@cD#4*-m$YcZ(hG)-=CeIKmY3)`{C^D<=IQGa}q?o=v@ -{O^H9Ix#8%-o*G^o~TUKROtgYkt_C%+C(^d+!{;1i_Wlb{O9KQH0000805+CpN$=CI52gSB03iVY044wc0B~t=FJE?LZe(wAFKBdaY&C3YVlQ8Ga -%p8RUtei%X>?y-E^v8$jFr7bFNFL217sAzL8pra=V#ZbT)sEr+3Pm1ik7}GC~W17D3oe9AS+@@tSX3g~;50EBLL933$H6H6 -1$M7gKT&5_b^CP1?RR-qC`p)U1`FU|ZtxkNmm=vz-@xmNAqsfUF^ny8VMK);ff#FY$4^T@31QY-O00; -m!mS#!Jl|Gi70RRBg0{{Rc0001RX>c!Jc4cm4Z*nhabZu-kY-wUIUvzS5WiMZ1VRL0JaCwDOJ#X7E5Z -(DJ4$dN>ih*?KV8BC%b}3qP$YultZ5{1HDN?wjTKnIZ6y;cU9E6+1ckfFl%b^3U?GOh>t%15ea0IiJ; -D(60JU7tNUlIzwfx*)*w5T0LWaC6Bn>lvDIo!nrku%9p)A!`}N~xVQBJj+F)%3DnDM)9rSbW_|WV4H~ -HG)u(HZa75mUOR1V2c+1;7KY$XB+4lEgjdtg2#y|p9knqj(l9TBxdVyZFoO)=%YNgWG(V5GE>1CWayE -r?5lxHTrWqBTD=0vPFg?$S?;2i4`b@hr`cHL$=Too{657)@bG#0Wd%NDOe(2MYzOqYN>O)MHpel1lJm -u6GH_f4r1; -0m$ANZT~T^!!+yFk=cD#{aVl1TN`fJ1+F4WHoYZNhT7Sv}IreW^EcBX*Y3P}2a1_$>BbUY-7y? -!C}%io7o0?pXAQRj07tvy<@!B;SP+k_Uivy9O=DvC}tTEo -%eh5stKA^5hHEF%Ux)cT0N4Y4MBxV!dUp6` -|`YY08|d63xLxf@dIPRbFqq5aAELgY^@>PC2OsOTu>G149~tCpNx8l~C2(`yE^&8k=mqrsDS)LsXlsb -Mg*BKN7}3r{X;)3!>ovbX}obFIZg@|Y*DHk-qWA< -EAzAN&qVo^#3xd*n0gaDn>3s2hP+1>$B(AOHXWaA|NaUv_0~WN&gWXmo9CHEd~OFJE+WX= -N{Pc`k5yy;aL@+b|Hk>nj#MQK%ra*8n=CMSJYYw;&*BX%#O@lLAR4&fj;bhegRw`an^hEY9w5W;ujgX -HOty+lStvlt8D>x&Z3nt?mQL@w@)N*PI^8n` -#e&|iUP)7Xgg@J(T@>Lc<2T)f-e!a7SPL@x2M0F7oK%O@%0kZNm!;sIO+#YZJ39dZ;*+>C=*l&2I-Ja -u0;#zU8`)yXk2Z}vs-t;Qz|44>Xty!1XW{G&PPv)tAu6 -tjXLmXhTDF9(zyI~V*5g`-&C=q6^`7I37PiS6C4$_6^Fij~Q0N>t3Ai-~ec6l#xmf6113o3qQ_^VIM} -RwaQLrgC#~5m_i-j-)Xe_5(epgPSC*iDF%;nntYJ@>LDNhYCJzpJnoc!Jc4cm4Z*nhabZu-kY-wUIW@&76WpZ;bUtei%X>?y-E^v7R08mQ<1QY-O00;m!mS -#zA(0qU&0RRAP0ssIu0001RX>c!Jc4cm4Z*nhabZu-kY-wUIW@&76WpZ;bVQg?{VPa);X=7n*VRUqIX -<~JBWpgfYd3BFXYr`-MhVT9rBBumG*tyW#I@oE4?pA_PVr7^*agdeL{QKESJKD9?$sg|{J?hx^pmjIN -#H2OYe)KGWP4I3K((AnhV^20%Ka?;Hw)KXzvqFq6DAlDN)fH_pkW#|)MnSCQv-QqVE0GV^*cTgOGVit -(Mdy}AfzRb<$L#rr^=r_?;4@aK)?oTJ|9?%7 -+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 -Z0P8@}=pCHq;j5lFB0)#QsIMbOxtZ=*>GQ72P -1WSZ7ZFU17bDb(B3_F#S>7-JxnLEj;+$wjLQC}_$qDb!e7UYbkoi|rtV$w4y@K}imU76H`$7P>g7K+D -`IU0kNIdStA%r0ejbGgERFUvG`;+%4gSn-TAGbN_F!nm^qn3(WK#Xsjlxgk^WjRV4<(&IY{Y>|QytCz -}SH(Al4bRD?ZQFdhmqalciDWtk5T!wTwn0#l7y4xugFi)Uva;8n^S=QOPFX6B@i!|cS%z+FmH~%mkvQ -6eD8{O2s0?Mo>$D+bxo)-G0)T4t8+zl8Ta`o7##BqkLh}_852_WsdW -mliRHCj3ieu5(NNL6Bs21`o@<^l#f+UeD#?;us;T0*@lS?VTW>pHXN;j6QyqZQC -~_Nda;o~mcJ7RaDquzI_#wik5`En`TrCbWI4Vp}mn;!(0&7uJ94ioo5BK1D7KCX}9JRQ<)k3;8xTE!@ -BmL@I2lAZ*!F}#2RrjpQ-Q-_VVcfbKauC9xe@M!m_m+D4bnCsIA{ -)iR1_mh^vfTDFE|PBrcq)uZt6hDPfrWDt|9`5X$lDznk}z6n_H-xgzo+P8y<;hFH0kTd=!@V@#F8PzX9IM -xaxrV(G>?$M2;5*GQ;yZ(}n+8rV5Un&J-$wB5_ii?cukS2GOiW;ZN#JzpaNYH!m^(++JNj~UQyQ?)N!dI0|3%8=RT{l7idK7e4JFMSEO -0LLJXeBxAF4{Wh<$8gPmwwyqz|9_juYtp=l(5;zN0qsh>Jcu=xmUGtH@dbVlzMRQ<-vL8k?fSrXtk4GH%n!$FI3Y!mXL1F*T0S*xu73U|A=X2B26}EWHCZNgp3`$-r?tdVmSiXgc2{V7v88jbCDeM}T(={0c#*& -%(0pEaXeXq6)+9114&;i&jfHtHm{oAmz2(1Ybk$0<%1|*+fgAbD@}hz-f8!J+ -mMKdQgt|4FdkGjnyxatg@{B2+n_T*sOs|END=ab=`D|W%BSrb*2ihFqE{fBp-mi@yW{&U-cTVOE{ANn -Y|lRDtTyx*T(5bM?T5VORdLjOZ~3it%=$^mZ9TH`mDk2qI&O-!3$Iy5z@~Xx=HXh4TEdlT+-9XXuY34 -Y@jiFU!Ueu-8aC##DB}v%8#)6X7!5d7 -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 -;@4oYvV6glLB_I1~a@*IO4r9=z2kRE4KSzF_SG -{G-US2r@qN@Is)Ex`A(#_N0OWKF=HtoR<$)nQZ0B8Qb1mT~}N2qxxR`q(Fy6*Y!$c#&_p_zu|Dc -#-}V+Yw10FQ<@A}6kAT;`B%n()|hhR(4%|8MJeG^Nq^9I4B3wN4tW7Q;O`(EO1_5;Xyrqe)|clKWP>f -WJGM@U%%g6J3+C0&OvLc{)!14G!9Jn^W#C9-`7e~X!b=}f#=ISmC%#VtR6EB|SGOcQ+{!x+zmk|`Nz* -{~s%??8<3@G_8)ZcW<-5&V=}M~HT*4QYxKSVLs!TJgiu_B`f8aj74`*z6i-}Ngb*BR{5zV#5tK<7qwl -lazAHbS4klu?W_+UpmWrDNKP~$W}9-i;fk$2pm<3>>@&?zA41OB0Mjw(6Ty#}wX*0T2~CWTqz&r{wPg -?erby_q<`C)qUo^G!RXABlnE2U+^zkX^t<0b?Bd3s6e~1QY-O00;m!mS#zUGGio<0002c0000j0001R -X>c!Jc4cm4Z*nhabZu-kY-wUIbaG{7VPs)&bY*gLFJE72ZfSI1UoLQYRg66j!Y~Ylcb~!v3rMI3Kw@O -z3f=RPqe#bdW9M-N;+y-7yO9 -KQH0000805+CpNiiqKz7YZd022lP04o3h0B~t=FJE?LZe(wAFKBdaY&C3YVlQ-ZWo2PxVQ_S1a&s?dW -o~n5X)bVi%~aoO+b|G*_g`_S1Z42S`dSF1BrfzJ>9!cw5{yx8xzTD%#*({*vHyKK%SrtsEq$CIMDl%i -y6^7O<+UmyN%F=tHBS-{Wu`|+tF+6eS05b6+v`{jDMv7ErJSl|XH7m5|5oN}N0W#foQM`&S;=W%zFc3)sc&DOa -@xK642|g2Opj3q4faLRK4CS?9o2}u#<2S7JU+S+}(#GgO8&oMrq{MNAAMC=Ju56j9Na6if!9bBr?_DCZ^5)UD`& -}gqBe`fmcOcR&^ow^16P<_^px#n-i9rz7E3^ijBt#;^+wo;W$PtdPhgjOI4O!8glMYorcJukspn`QfWIL&PDE~QZOh|uRc}tScvpCv!CA6+!3x1+KLO|@A4 -kkw_;iYT)@rk{W`pYAA4qOM99<^=QWu(AD=b<08mQ<1QY-O00;m!mS#!hTwf3x0ssJg1^@sk0001RX> -c!Jc4cm4Z*nhabZu-kY-wUIbaG{7VPs)&bY*gLFLPmdE^v9ZR84Q&FbuuxR}ebcfaf1jpob!BfgKhU$ -Oa530zp|?CQH{r}+b2-SSLvkD -2{c;froc=|k5(whSQ#*ml}epBru4Qb3bX^%o%dGm2+OTE->O>m{%M*U?Yz+5jY*4_#`y2T;08P4umGdMTf`0nx)+7E5W -QzgdRqV0US;l*ss<;?+g!0#xY@ces?q)lso;$g?Pqmh*E? -6<(FfYy2n4J)W3b%Wy}sv(GyMSK%z{t$bf0Kczl{~o^MIfkH%cEn-XlTlBq5MJW|vpoPiCcpe{bYkVPr+g?n!4>EfK+e3Co`n@ -T4MZ2(Zxgajj^fK~^U-78f7eQ1nJSdFsJ#}>O#&P)THZON+4?|}nr0yXsSnz`>HaTme>3(uV}i85G$d -lSaGH##zfem91QY-O00;m!mS#yu**9+E1ONa|4FCWw0001RX>c!Jc4cm4Z*nhabZu-kY-wUIbaG{7Vs -&Y3WMy)5FJE72ZfSI1UoLQYomNe6<2Dez^H&VKSkzuP0{U?>;6s`X+69^v*md_(6b3DgZ8ntXawt1#( -f{5VQj%pkaf9R%+ZsMTzV~LR(P(rHxw97YU|a=m4W%n;iv(-uVO1Mjm}&!sS+CJ!72v^C1xa1-h_Lpq -R6j57eu2W}b;$*kDYbBrd(;6z$Fc~6K0<1!@Brayhb_nyo?OkpVgbQ1jxy!WqF@2x9=)~@woHO%N_{( -lYyLIJ+T3cQhUi{<<7$eyksT%kn!(40*i=5r^QpRVW%}hdRb{Z)A|aGD1vu^=wg{#Q=+`E;??r-6JVj!&q#56MUQ$u;bsn6b^3f1Z@KL^H4dIDe;A5y+5M -C5ypHe@8w&Y-iN8&7`CeW4R4Sb{$b(w;bZ+vV`iY52S!fu(43Gnz=Z9IyN--+0L|J>?N&Iycj&4DRk! -H<4y9<82))1F}%WWq<&L79s8H-TbGPLGw8>;Z@cMie9Xq2<8G2*I0G9gw|m19l^}!&P)AMnF -f8sq*Tn>a=EUh&6Z1vxAT0i6*Lw)LVtmeNIRz|&rv-?Qmc`0(N3p#6p>GX?y|r}&8noIYu#iaqof$1WoLAvZ7&mgW)u?Os<6_6FKup3XDm5vE9xZjDu3L*%~I}A!VscD{&^TU!arTUXB|@=})4L+2%}=i!!nv&l{A*fg=mM9 --DU`GwTlA`;&C;^|6F4iKA;UKV}`Le(`*s4nI3#oaR$EnD`Z}|MVU3>jKZkU789!cs1WGO%!3g^SI8M -E189%!0xUlCkV`7;1plYGOT82!bO~>BU?gEW1iIxFz3$}zJvSQueYBek3*GTAUJ~ZS&U>Bh1`?Pfn1zEg8%ez=JK4s7wz5Q2_4hikhir6`qyoe!LO4&)#(Cpt^)IV5-Da84XV4wc*#UuX0n}dhh(0oA$TLW9~MUk-67@iy6JAkzBy=zEeDPM#FIEqm -UgREB^yfO9KQH0000805+CpNkqz4s&Wnh0CqM204V?f0B~t=FJE?LZe(wAFKBdaY&C3YVlQ-ZWo2S@X ->4R=a&s?YVRL0JaCzMuYi}FJ@wRE7}=Z2(0Tmd7Qz@$v3_yJw0?^WQr& -`?%e^B}Li!P?SJq@@{utJMWz=n`*=E@0YD^8*zWnnwJcY!3$YRKc*-=N7vi#1qS04?sC! -ZJjZihug*rKT#%|Vv_6oM)&3n-(#v8#T?Gp>OU5k>zKG6VhR?UABxn{z_g8i`TLo0+s$Z}B>@Pn5N_k -hC$)Z_n8n5dAEGO+D_3ZZc(W;6TJ=O3O#{R_m%99ooYF!|>_txRdSeXstKJ=x*u(OztLq&`9EE -0IrIWg>?KU4XG_sV(E;(7B)N9&R0$9JP1|tHqG285qYDw$zwxOT6o{g)9lpPI>-Y%-V-MH5i5AP!{T1SQXo`lBhx{ -yMl<)S~LrwUEb1InunX{~<%R^3QYe^__QICwv>-gQ+hP%g;p)Z(kT1jmD920JVf5$pL{7K^up7y+XF; -5vG22};nO0c%pRO{=trB+I;Lfh}GX-k~r+3>)A-0g9q{Ba0oY09s>2fF8JG?tWSD71HsIr(+`(`afQZ -ss(=Nyy1aj{lCDm60OMNJjAsd)(H?MX!t~Q*Q#Hf)o5Tei?{##%}N8mzGC*5g38 -ejkSS5`#UVx8ols{jk2FAS&nZ<&(-Wl`19jv#GV^lv?o6~!h4}wgvuhzBR2K;&d>za7%aV0fMrbac?7 -i)5Xnn6`tx(eo~yqQ-Tq{z@y-sW03Ws&P7lZ=6exO(p+t|`3}y-W!Udk9^GaylkykQlfKg%&Hfs$gVJ -bPkuU)!-B71 -Ps@7s;YTI_D2kcI2n4riU5L;LYMNTL6?0V!v;$r_bD9O^6h6Fz|=8l;aGWiUf?T*2pX}eK8nMd_dTsKj8keyIB^SL{Vf#`EQnm=g@x@X65Dt5JSOW3i9*-^7&)jt9!94 -u6i-mFLM%WhRb|{f26yZ67ghNsWaXN474@1c8=y!a;gLpaUjc52l3Tt@O5z#&;fEg}=BRbm!eMHPYeK -IpGz`dvf#MCKT!|9Piog1e=tYeJ0H&Vfk6l*BZs=NQb?51lp~D|WUVy1m2G#Ruq!HxQIIsW*P;G(bdY -2Tv%ph`e^WA4cDh!DxU&6AYi*OjjX?0oobwkY3iPX?v!1dgCc7rH* -aF_CQe;!qZ*na^iZ{M`az(=!eMFG7nqy3xsQA$G;-YFPr+66#M6|5|9#0?}%Dq#jfSvC -Bnfd3dfG0W#V-IH(`EOd#1|*nPc8`*22NhK(X<%Ve=%97ajsa(%V&&v@@&-KMw=L+qXyWP#RQp@5O#L -%A3$S%zM9ML?8`;XPNyP;jShB>$^s& -fD*)&&PQ*fq*Yg8qHR>RlmAeZG(i>);uj&1nuk5r3T6CEvM{jbJ83cb`drb&QoASy -hp-%3Y177kpyEXZyLVpvA?vBhRgR9=v4OOLHhc!csSFc_?P>10_Rj?1>uyn&df*w!8JcrsuaR8#F6?hxpHyW05d{4B1rF#R(q%(Gxct9M(pbKiQC^=d -SzIg2%GIsLpj~F?wdIzXy{>pLSOQfDo*_&4cFC`GIOm*q9KKCQAq6|o -W;%gjddQoDL35W(e=ZLwRSl*>yX`fV}q()pV5z6@2WTLXnMwlzBlW+g9oQCb7}VpQsj2RJQC-e;IWpj -#e0>PFt>kD_80J-go*s~fzPN>al(7aovrDknmySp(RUjWhE$j)TB2RyZjF{h%gr1`6{Y$v2p+w=qE>21d6-14u7y1~wUTE4}?{y754+P*rm8pmUc)VCu4g5CcUe#c*hXAd#s1;y -PIb<1P(JyVEF;$CPE@e*nfGb=-v{DP7`%|A_2y_4{r@r5%c04OBq1;?fV*Fv9oh5+iF -_aF+vw1n6P8#0LWTn7z6*esItBl9(1><#A-moSEO3V8RVttPE3cx7eV08{543%t}7-{Sf^(JDQHo)3f -@c01pIlI8pD%j=RD`WEw}P6WY_L-i9J?0=8-EhL(4ph^*{IrTPT}^1?TG!5{!9Mw&grm}7}hP4o%U-E%iZtK;Z(F`0B~Y=Uht-nm<^i_0F@50gE;nJdZI&5 -bDpB&k3DLsLP{kq -?DHU^B@1T7=5gJYx3QJR?5RXv{cY~pY#+&Py$jgO}w9wwUy*-PCfUaUp_o^C2iFKzJv4nl$R&|6_bQr -OxyG=(XX#noMM(bc>QBIeRR!^~D<(-N=QZ8{+#cf-=9U++`%3X9k%F>`mEhczM5BzndSmk7lA_@!)sw -7JMR7LMq_^_Q4U+t-#*?60ml_HldgOjpoZN7h$cqVzy7YUs}?L&I(MUd~+1?ajk*WnXAPZr0r%d|y@W -xY=hE-G)MeSX`v`6B1rZ(S0rM;%4$G65ucHX~k=Y`BK7u^E)Bv_< -&kmYQ`MefNch-bD#5R`SkVPJ0)9q6ftcnsGT(17a;)7J>Op4w(|{}u~0!*-daGNUDtTKN0g!6BhnJc* -ZO{kyy@Y_N>2fG7yuO#-50?MNRLdJ|d}`V#Dwn~Ms=H<}jIrdv#N!(Q~kb1s7h2Cc{-n2&>)H%<3DCi -|2<>`mF@E%$DUFSjER^=&YUZqzISLNDXS!k#Nwa~a-iLIi+R8j!o?j*j6P()iru@yoW%snl^JQT7;uB -XXB!ow(7f7L+;Ko6U_>rBFC8VkWNe6*~Dj2e-;skYf$z3;L{p=!nu#t?5CcZxtn0$!yC=r#q-*`|EKq -Z;4YQ6J!o-h>R`GO)6CP+S;lFZD39G$#c6?(T_Y7q`Mv;!79m2!9mX -=YlJDS+=cZlKB$Q4<|$a0{jhfE5RWSsl(b72f`g#%EH$YCFja)M5Jl+Ieab>@Og+tD64z@orLCM;a>U?JA -cE(wWlvJAQJk`tP}RlX^Ksn2DLd2#fV1qIr6yei0hD@o_PBkhV9x|46!Pi=z-?0G;nf{ -Kuok0`lC^LgU{;j=CBBaMB;X)1Sut)uYKI8K4Nk7cRB|}F+Na6fE{Fmfls%4ke9g^9bZu9=xfnH)RsSsX7BK-Ut$iroull6Ib$ -0kvC9d#KD3}2kWK8c#?yqOn>C~zr`=p2mGvfkLHsn=d&;82|MBUlLBRh4P)h>@6aWAK2mm&gW=RO@F8 -JFA004s`001Ze003}la4%nWWo~3|axZ9fZEQ7cX<{#Qa%E*=b!lv5WpZ;bWN&RQaCyxdYj4{&@VkEnt -00KHDMHte!CW9s(yiE%6sFWw#RC9j*hM61=hBu#F<*;5P&;T_FJwo3v64GSVBcIZMBhCl=4=E>T7}pq0IVL -bD0F$3;sVCUlL!TcjZ}5_fRC1?@O+QXotj0rT@-eI!3?n!2$dNx{e%SI7)Xu+C9GRHQkrvsQk~8iF}F -)@PHl%)N9{c@Ur`KSv+|U0n%+*MKFKT!j^+nlu9Jhiu>|U+A4pQ4-D-GG~YE+EX6$#WWT6*hy|ZPVyg -lhdRfk<+_8ohsa6se>nt*GJOIw&WIqY!4iQvxakfjz=DTQO@ -b0n>)E;26$2eC$s<>6bIfs~mfw+e-H?S8*Or6>!Y*-75EfR91=;z?e+@2U$Fqo=pt0a?%Q&3Qq~Lexp -qd0(uX+^Q!7d40?e)djKw*(h6ZF`AsXbPP+mqKDnk1>zM9-N=ay(qI+4rzT-iX46`-=pX#g1_?n57%RB>c<}Uv6E=S}?K$z^1(^X!ao=fb@z3$etKPP7_eCL`HIu^3^2;B}{6?L6FA)1cmD8Y$?vz-C`|V(#zvXUD| -L~o-^;FVmKewb#frF(4!SkOVJ_P6{AkwfMFX+UCzOObmQNBPE-qHI@8$QrkWbpI_^wUQ-MFP -hTnStpaHoA=+;Nh&HasN36-+!hCA$>)U9x^(pLArgN2e><9Ukij-%eiU?c}w+-z!q17JjEzs -3*E(p97hPenY3LQ6+o?nGnPmEpb%Blbn?fDiW~ -slxtM=fGp{9?3Y#e3$#Ohkiaj`Q-@VqNpFbZnKg_G-h3)4}?$+X1ybQf{_p-N_1_v^m5jFu#!Yp0%Ij -Y5jzM}rlV8`xrCF9L$<>iByJX}e`SBSJo|mQy0|<&ll3eeJRuzku%%w};()n^8JQO%T=<4@)Rl_u6O1 -W&ub^|;?f&1mJk-i$-tn~tRmpc~Dn0jke3OScQBz7FBU?82o@R_`YC5*}-8!vuac5qSGmJTmTFTtJ=n -Q{)dGh7_>|(iE{_*il>Thgc6CaKk?4AvA&Z8H)B%jHO|-v5?-L)O1N5CTLt-h-TgtqoDKbQM1bz!bPKn@Q7iJY=<6$y)e4X$oUEZ)0$Ub#(7$JC3)z{|Cmh7-L~nS8?-)R%trE6Cw}WSB1NsTy7|Io_KnatukQU9 -V!--C#2<>I@ft2hz{>>E5%nV`yD@S8PtjoUTnjo@pwp8>k@T;C$A623I}+SKem}kvk6tZ;m^6M&F}1b -NiLJ)0Zo-1$twx3-P+yISAHI*7_-!@AZIFC`n*lCJju(1=VXqQ>x90zE)BCXHBcPxmUaTEwC`N9LCM| -&=Tr>obeVHs3aI%kk_J*LRkHZ;?=DC$;7$*28Q+hxFWWGRxzLb3s6e~1QY-O00;m!mS#zzeV6bv3IG7 -yF#rH60001RX>c!Jc4cm4Z*nhabZu-kY-wUIbaG{7Vs&Y3WMy)5FJ*LcWo0gKdF>n9ZrjN9U0*TFzzC -J4*=!zzm4S^fg@LYPWE~)d;tFGNB(tSRfirUKZu9Rwb0cSlhZN;a`qCv5TO!Z>HfPSztGe2d#bUJ+yP -7Q)B;RbSS`d22t70eELVr(4mOtb?ugZk%%6wU6Y*FNb)wJM~7i9ZXpF -_?Cif7G$v#dC@%IRN1az7j!AA`pNv7OaxsoYPM#NTQUO~f$V0R7c7o`kLUmRdi!enHBMhmqv>Qa$=Hg -lnK-|x8GEDvi`%Yg@ez1Sh_X|+)w!Js}`YM#Uqo*Rc}Mqw~D0k!d>hsO78n5y?4`>c8#qQ*ueTn;p2!Rgur5d$B2^+r%-1htD7qMoi(iGDxgUypc1j!5j7 -NPhI)Su-eqWs4gq$C@5fU^S--rEBkiR6=NTBOv>NoB=Vx2z$ -)A$jh|@N>+KzMF9Tk(WF|^hX=I*aOQ8I6wBW~-A=nT1 -+6p=F+jvib)z!4Rxe6gHz$Z3uLTj<#zGRr1`>m(P3_(rgKe4b#$Q0jitAJBcy#_2TP%i_6X|NZsDqys -m!9PgTni>qg2e{K(cfd@nXgqP2~-QrcTf3gRSMfl1jD;MJq1b&%M;c-lYj7`T)<@+F}9>Z& -VfUS{kO2z4vTG*!=HgV!UDFTQ3TD@4urnOf9rQ$4UljjXZu8rcCGC7$Zf5F_6}$QbD|Drn-_9_ztnn^ -lPz2{E*e0&KWK14q2{A;An)HQG}L72J!%i6 -rLadbel>#Bb07nM=0LH;>u$SOjpl4Z5jEUZ`m?m|Bz%1wj-sbh~BpGN{A43Z9xsw8fZxxmNd)0%sqkZDH;Th(W2ObT%V8D!P6ck*g -*)S}r33qz4#}5MY1=2-HZ)7O#^-Jof83CUl!&QM%V{?ySj9qRjkec+w;jptJS)$W0a8LBFSoswrQ+lf -yc>m4Swj(4w#{VGjLaRZ5(I(wACxKsCBZ49%Xb4obZL^{C|xn2z3RD$jNr{e}eI;-lWzncR{B5@FMQr -rHwA!1MZ9wcOd!Z^llCS;Jb -l&l(=pZ)^>RcW4dA|DH9hIEg15niOLaVr1Au(0}~({OV@$;r;uY2<3KB)Aje_dhy|xzse7mvm^-ZfcT -BoIW6*kv%1;Ex0LG#q|$MVVdwk?FHzlQDQ2(n-41NaWgF6hM}n>+Y|GP@b|=j03TSl3{ocrO<`oyT8^ -E)8O4_+c5Yj#4DkswhNcOdqZD95=9YC%h>~J88T6M`0Cy|_+$sZ^1gdFvDzxs;ZLW`F3LndyHRIW@XY -LMq~3dpJrX6QvfSGpV>ZZ9&EJQ2D9I;<^o=>F%3e~#pTrNK+`lDs0Z4sh}#c{5Es(ul1*wV;LF&z$Da -KFMYHysoP{j%-=bQ>`T}CH_5q&^u~e-)@rW)*nKOmYEuA`Fnz%_&z|Gc5e~wcP)M-I_P2W#Lqt*AIk_ -oK0a~Wp}jHa2s~h+=F0uMGoE&&OxmMwaPnu=I??&#Rvo3=WA}ut!5l|CA!c^1ws{U!H(uadcOS$zR4n -i12C+HMPSq`s$^`Sd#qFKUCc1_EveM@dID>pA|lmo&rzw -uJI%>;QM$t3OC_2A%yw2x>+sCYE9c+jf*l{KyNN%TzTKg}C={(7oFDeF^b<#AkBle%ZI!xQA4G7rO7e -xLLRvdDEFw>B(*z_E-xabdL(f_KpMn9X5#^snW5p5|DCK>ThRXJB~M-pXhTLrT?t*GOi!oM!M1w)3(r -Zh7r7fwJUd=WycQ`_`&yvG&E~X6Ap`X)BVczIv3_BOD(%xPEaV(yxbEl+ow0K$P0OVJZs;^N-xV*1-q -RK^(3B-Yw5dsD%YP~x$4S0#KzTXdExasAo-0tec -9$8aogk%2NixYcXJO8g@4fDgIzLNFYi=Qt?DcdJ)GquE=XRU6XX{g4|X~LVvt>@zeWz2X?62Uog$W2JwKl#p_9&$z|Vq -+-*q0c0^AU-8Y=oX^?Z{pytF*S56h#Su?710pwmcd@ggnficosnDZb7m%2RI$EI4e&5W6fhAix~v;oY -$H?Rla&i1;WU<|4!r+5cstll#?^~uU(7du8qCbkeI_62h!LY!H(H|!4-;@ -}Ssrj!2yP)h>@6aWAK2mm&gW=Y!qO3-W#002=p001ul003}la4%nWWo~3|axZ9fZEQ7cX<{#Qa%E*=b -!lv5WpZ;bWpr|7WnXM~ZEP-ZdA%EJZ`(%lyMD!%h9RnzSvOw}$W;Ln+qniv(;#uKSGYc6O|C4~6shBq -c67b`_nX-lcb7~0f!qmbBa`#qnc11yRTM=(*LhbmvaTD#yWOsC+M>E9?S_%^^R`S_+c5ZATs5@WC*&N -S7dfM3!y5R;Nn4YSGeSApcG+fDuLWvF+v3)s;oDu!d2v;;CAllwP2IJChK$w?y)J!b-MfRXeNbmI0p)ZOK)`=nc7I?HywkX#j$9#-&tweOGZ1jR+AyvO*!<0YzF>bqff)hH<1x%hE_hP( -%J#!gnky)06NgSK3qnF^i&THd{Afvou|IZP&0g -CB+uklF%z&mtD(J`S+6K#cjchx>}O1DzZ9fX<4+ap(URkklh}nZlC7`r=Z;mlx$hnviyi<8RL95Q&jI -HXRiNlnEuB1T*;DX5w2j7)T1P;E8bExl6vXuqTuvv1Mkt4ZV84KU(&0tD09|uA3ZI=0~q+Rk=$}>jXe -W_yRtmTXDf2vbZpkr>$G9l?DGzuGz`Sv?!Zgq=+F4#pIfAD+neh@?jiNo= -1xWr~!|xq?{92`wrio1AJUx{Q>4(Jf9KxChQuZcaqH$ZceUmE;{2*Y0a -KK#nk@G^M!b|zn>DekMsq9 -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 -$yxA#5LJjS7Or9igASgr&$(_< -D$XGteK>K0qBp3}oH(hTZl;!-bCF0wzLFyNcZ^J8rUu3G@OX&!9sUqq$!%^fPBKh8UjKjG8*2B(zwQ? -WYC&(%Wu=^B23t;a}rG>W4^6MVm~fja8B=$B9pDLPV?A$&YU);X#8ilO}Id;1b`8oNrS_W_2YVLLHa+BlKwihkI_X&ohuv+PwqCN<)B>^y(*_Hy~>yDRH{Y&m29J&Wxg9wlOXg^`}25C-!QjW)Q4Xz4w+oWg2#^3 --`~`Hx3#GFBO53jZ>(|KGH>p^fI?Sa%pHfi~WeA~?sRAI6oObLgG$Y{akQ<=7eNeo*~Ko8Fm)-=Dfeb -3|*3uT{Shj26eN>N}_)NP)h>@6aWAK2mm&gW=TyWn82b0002u9001Ze003}la4%nWWo~3 -|axZ9fZEQ7cX<{#Qa%E+AVQgzv$p5}Oen=-vmXox65y`vz-3RZE)LNH0OOo~8?6pV|Ci7jX4deG!srE)BZara{e3X?eiw -WBoGA%QaC~1V|s*0jDVtmcjG=r}PSOSY9Os8pCRE8I(3dDlvqT2CPR1@}C%50%TE`UB^cK2e-HBSK@u -#p=A8&Mzw~m}t6I#i9L0M -Hr1-Zte(~n_IEs!!iwyDfb193_5oH`jQL1=Vu_gke^8T|(&3I;Gmx(pxj4Y%{l2Ikpdcq8_dMXawoZ= -p+!B0fxK#7+l5}M0OfIH?Y-??-U*+T15H=+WUUSD2qsIY+aE!cmtIqXC{WAO)}C0FuaVIlBjGj2FgK< -rVqyX=p(5~8@8vSfl<>P#RT(XJ-I5I4O013Ny`3phjI0LsGsC%q8sE`0L4m&fAm`TBMT!M -wpN@@pN=}%s&zP^}W?S1&OrEuDcALXi_ZsX3TV-N3zBT|>n4D}{=2%1hhug`o3&&0H@I&CTGDTjJxf8 -bA-z%A3WplWSU|Ah1BXYkSQg-REUY^ZCA#j9g4_B}QxWcqmfkv7G@ng8`kol-T60m*oP?TSafCd-b3M -9LTw8Pyv8OzO35$It*HNy3k)_=i|nkl*BHp1ZbdMON-sv`Eh?AijDw-O4&cI$6JSwdg=AmNCL&9}h3= -g|4BXRk&%b%{e@12zM=b_uBZ$l9bLJm3>uY+Y(*$_KDV`aHLHN)6bRXiTtj0~-AsvkTF -CXy;uW-ID8`9$00 -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 -LEKm4-0yKf&KpN6QkF1iusx}6u!O6%mmFmrR| -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 -=)g}pC_!F;7PY7NuEdW!{=77VK5%A?WP!M0X<- -wc)scYr>uT63XC3@s#N8Ma@nW&Rikpov0NLg$Pu`ATXy+r{Ey3We)}rP`b8=9!WTtCZ_hY<|9FOiaMf -$a8;xvBG#N;IH%EYo&`nxBQ&a9{aS|hmDFs_?D?B1ER7fsPRI_DZ-WBK3Y -S4z(RCQZwF?Bq^3m4w#pwj6f90rfWD7;W+i)i!F9l@B6ALytSz5wS55f60NFr9O9&#)C9tO&d9iUVvS -gSmI3lgLASds%{bSA&!84oybgi@43E>Mj$bOlFN|w9MQycdz~Cncdpw?)|;Q3Nm(6!hbGQe5@9 -xouG*$+pb0CGPR+24dVD+Y$*AX6X*QicCe=%zMRg>^i%j$2s}?@A;$I_ct~#_ojyq`Z$ -s|ivPa)r%%5x>eo*Eq$BM$(>-=aPax}UxMO*II(T_Oro52xgTLQ1+@cii7orVBKLZ*y` -Wuuef{ih75@TIO9KQH0000805+CpNs%K7**yaQ05}Q&04D$d0B~t=FJE?LZe(wAFKlmPYi4O|WiNAiZ -ER_7Yiw_0Yi4O|WiD`el~!AC(=Zf%&#yRS8YH5GjmJp^fy4w7FeE1NfKcS5C#zLAF1AC-zsJW;+~(3w -v#Qo{&gDDbxww^*TgdaOF^$4J2fp1&Wq=i0ipF5>pQETdm%85>zQri2NImPdk}tB{d|(EpwYa30PV -GtH)&=iBd4;$%0|pvrMm&xN^Ug?b0%6 -5H58LmlJLdF1kQ1S^bVzhpmQM8Xyt?g>~iZbZ>(RtXDambvE4lqaaS$WA!SWzlE!tLDdJ7F9WV92<+E -X##D+!r3-u3I=fx$jB-*)!Aqdb5G&kd1D!#J`enp6*laiW57<#9hyGh(_V9&Ur8A&tKPlfobsp*P+{4^F^1 -3ppRC732xdQ$OpCi>+A99$kre5r|K<`2Qw*wgVniqIua3&dU0C*(C;U!9#TSK0Nbn`T2C_mFN%Dr471 -KkMImzZz0#`M@?jL5;)&zI`=${yUY_D?(?2pQVhh-5rtx4{!AYS5B_gL??H6 -`9|}t&*(qAs;t6MVmNoTZlpPJOz`-HF5euHIaEo&Nh@Im|=1nD!*czvchJaO}YMqmZ<#Og~3xEo%w{e -JO@_Qc1jlX=kHX5Ekch|=N+-X|>15ir?1QY-O00;m!mS#yjDOkpd0RRBd0ssIa0001RX>c!Jc4cm4Z* -nhiVPk7yXK8L{FJE6_VsCYHUtcb8d391vYveEtz2{eml-|-zTb5E57Peo9g|aM6>7^{jlPD9hj%94Qk -bl3nleBYb4so8WCq2FB3|>YGFpxn=XCJizLmk?HJw)512N@9r{S<(Q0`8pd(($~cHSmf)5ZmeuuG`B7 -wCzjU{r+*wX6WVIRuaK>l7&`EX=4)e2fS5~o?0m(F{xPHWDw#sX+Li;dfGnUmsvNcqm1k`+Un -qxL~hrslN;>V&7O{<6vE%EV{Mz1)XCL<`bhRzS0@Vc%>#RcC}c}fv1@T*g>Zd&_3a|PZs0uBa1NictN&0-0|XQR000O8HkM{dfp(V47y$qP0RjL3 -ApigXaA|NaUv_0~WN&gWaA9L>VP|P>XD?r0X>MtBUtcb8c}yVrp03-QFcwhI8pXOe5t&F7&?kmKtbqHoDaD*15*TRha -!d1TJUiq7I5F0LJ_p88|eMn&%qj)*e9t2sgpUV5?X8BHx>CK+!&~<+C@fUYnxhkG+o&LjG_`_&7kG_O -)7GU(eXuvcnPz=;tG59&-zi;npcE%z -1yD-^1QY-O00;m!mS#!jX-ebE0RRA80{{RZ0001RX>c!Jc4cm4Z*nhiVPk7yXK8L{FJEJCZE#_9E^v8 -uQcY_cF%Z4$R}A(cb`eW(F2&$Oo8(XkrQlL1rHIMyY%QXdHqxxqrS!jdBsnH2tuB&g-h1=8gwF??ptp -`d?ruT{&bH(ebujskBJhELDGmujUq0_fY~{MEFb!WQCL6q3!lt>@fW9lR_xqb?OaptOV!Zosefx2Ldk -W}_Er!5VTQZ0=hGaR!S@il4p$)_6hzUAkv@SKOk6{2~`iZAV#(*8h5E<}31vfF7`q$9eqs@tF7^C$p1 -mAK_RGk=UPD-gyUpKJJ@8(zwG1m9t+vRuI?O-GBtN**NRL;`j1HIjX505C?JqTs1Ku%%_{KN1(QpzG6 -wIY}3pWb^+R83m4>Zpe&%Lg+^*{#ErR{5pjO~I|J#A2~1_jM$c7GV*A0xxW_ocYZw#K#22b -9Q=p%tLyx&p+cF-Jv@O_r+HxXSt3A -o(u-I~5#=p|9YOi~8>P0@eYsPqbGG^7fq`~7L8=5!El)lMUynyEuN!G|0$yG(4f$D`nPpNs9KF8N^!I -YN?<7|rMLc?mU;n(lA`U6l)0|XQR000O8HkM{d`u(I5a{&MVhy?%uBme*aaA|NaUv_0~WN&gWaA9L>V -P|P>XD?rKbaHiLbairNb1ras-IG0UgD?<=cmIl0vw%cV)v;2Cexy>QC`+QQmIDX4GB&l3Ncs0Q5Sj#( -qIBp`FUG!m&M)WJGuRZ;K_(S~pVL|>P%=U7FojyDXn_g@LR&g8S-W_uMB=AqmlnZ0S|^QWGq{iMA`m) -l)1KF_eNGH(#CCJJc$u%(^TUC<-Lu9}SKBMFSQ#hD*uAfp84HOiD}{uRA_=Kn%ra|A;5@6Tw#YfivND -!HY@JaxA@9}^q;e-4VG&eTYVv?is1eFoqJ(p>(3#Yd_JP@cU_#*oW8g=MnJ@2!Sk427D)Rw242%9y4L -3b{bBYwg6&H~v7&Jw@cz6mbI$#kP-w`{e--L2_hTzo*eoi62UD}b*2?lLO1WkI(dD}0}&qV7<1=`>1R -VDMuK5T4#_D}hwh#{ddzj#M0%mv9E_P5Je{{@dnw}jsY8s`7PNVk9Oq+vg%jWi_wgO5g!W7Q` -9W?Zachblwi3uww*7_6Z@16JL;uun~uNnpOS@8VueG~cFd -lJu6=1>;F`-(;YAePcxkCj|b^VUaGs<+PECyL!K%qOGKeiI5=7&85sxME$a?i+B>ffd0QJXJ`DBaj^P -7IBT1j{L1)U#*3Kzvt^PNmx|yENS%~$rf}GqASZ;pCN=vbGb$!2+B}mMR12BP`-TbwAsU*On-UJ*0$t -jbm>k!)SydL@%49N0)2yoCsODs)OcWTH(~N(mJcvo~JNVkBtZDHPdGk`R+FM@MwG -T8uE&~gvv;CqEzkl5}(|%MqPk#8~?!_>SV8NlAANoGpQcjNBptxGQiz1*4*#!U467I)hR^A;Z9cPY6P4*dMS4 -HLoe^U-YcOXC$HDN&%c}Q5Mt$2t~y?hJB$vv4V!|`U}k^Fjw0kCEV$xVYYifkUKU__;`g6V -MqJoziOb3Nih!Hhu7Fj7MSVA6Sd_z0I8R2nsR=NV0$*wCJqPbi<9j5848#$yv?>|jv8i4x2)YZEudDi?Txvmx$$BPdqOE -^j$HBZ8zw3blL51~utl^`PDErgBBX>%{P0ODh~kONwHL>?iHziA;XJ;jI9ie`e2?mdOKgA@t3ZgdZl3 -0$iYX+{VFY-$nRbtd*yVj{6i7|^IeEWa?T6w_USan4x(PZs-epu*OCntX&( -zjwG6Gdg6%#q@Ba$&~azkY(S4V5uh5r!-zN_WMe5xJ04eyli -x9bxusVaOci-=Z5m7?59xVBW4yNPKAfGMD1AU?sIIN}j0dhP7pSm}s^5vru7f)MygUUkRXc_b<{Q$R? -M;t*5xI!Z2@Myr>V-ZzUtBCdX`#a)O0Y=bRERK|TsT{izh(I?|8i0cfT{#a4PL&rqqdcc6*4`9y3AO;C{t+fUmK*51pnQ^9om0E -#_YC`qbTvx2j8wx^Vqawlt#vI{3A#taKv+q2j!$*X8|t4J+B7cY{4?+BFv$EAE6rYH3mR5X2*%n8Vy| -bg<mJ}d>5_XG_Gzl^>#O}6~>!#8L0E -|*%kpVwbXj$)Sg_A)2uPfIa(mArf%W9~czm|<5r#ew8`cBlgi$pMu2}lLQdK;o1QE8^8tQ91TurjxW? -`y(ZiPdmo&o>;g7RnTPmswY*}HFP)-#D~PJ -WBi(dXKAn7q1PEbdIB2_IP(;;#We|%FRZLX#imE{z12ks1Gr-YG+c=S%VHw_xz`xXVS}3s;uBK{wkH@6GXzuXX5;<{5OyXrMCJ}Mw_qOBexe -vMtw!;N)W=2Ry=X5v6B7qD(awzeHF_$!8E5LhX-4W11iCf&Q!5lFWiWo^R#~1}Yg{Z!6j+ct>75FkdCKMkCYVu&=k7@Lvdj0E! -k2)rG@Iq+s_9NrAq9B{od4&CcAobLGWBhx|$#UI~|a~hv)?Gy0<#-w0A?9xz=-Bj -0n9(i^)Zz}!XH@$)n|MZmHWGRfYV=b$0pA)raW+jHQ6Ebxn=zmqi?^c6AN;$`m0Km$AT{2S6bo~_*#R -lOZ@IgPPim|S?*bAjLRhrg`CKbzP>OVxDU)Fxc(&dl;jmZcUz4R-^pv&?M_-DRZ81_nO_p`;w*9luqm -{WD4;~Z;Vhk6hMO9Kooxt1#FGvkG3j!pD6V{kufqP`T`imtvawux`!)=N!#MZfQ7>0t;ln|2RN9X`2F%(k%ohdp@>TKYDH!j}eY0{{v7<0|XQR000O8HkM{dt`V -Q}cLo3e=MVq@B>(^baA|NaUv_0~WN&gWaA9L>VP|P>XD@PPadl~OWo>0{baO6nd6idLbK5o$e&?@1>4 -%UbhU0e9nT%4`VPq!NL{~{UM;(^~i;#_!A{YSj(Io%93xK3RiOHmXut@Cgwccm+Qb!xo@7gbT__=Lr209tQ}Qxn_Hjo;5rnN(s@2lkq5?rE#sW -)MuPAX|TZpPAVp-Wc&f}){LVS+f)US1m#3xT8PkDbGAWQw%*DuCs~H*rea(od?i@1l_WFo0m|tuRfYw -q;jT6T}SF{SVTT{)}WQvC?B+;xZ2qkk{5PYq@7#YE&EXynE~{&S#_Ld9)mBIqkXoI16 -3h8K1?o<@n`TC3);ydhv${BD^<9g -^dmCu2C#x5eX+F8)TBgGavSLK%a=c`^Z_2N4(`U<7atk!F)|s-j{5JNB3;4-BbRnJSPr-Gla)dKQ`rK -$CRP4_$#{0VX(a;v|ItWl(reo*cKfwih7GxH`z7yaFiG5cprrp>KXsFXLCUc@mGJH1=DdN&G4ry>Ef` -ZrKmRwRrQH3iqCwf1|FtmU|k_-djnvL3-n8G5CSLbUl9`87)(Ny-uLEVX)*MF^m&=@)8$WiN*L7UZmdz4vJ&j)3ub%Q30u&+pGWM7-<>z=p(j~gXWP%r|A_6bZBFsg-5<3 -*fA%egYG?MO8djt;m6_AuE+GMb%btxzYt*2Oan`hs@_)Q#`q(@o_pOX5Gz$4NYe_5r*fwDY>%9NcMjo -xMHuUG?k^0lEun?F#^LsCKYhBHFoU4?K4Dk*wry*e%RpwufBkXktUTrZC$(L(ph|`3Un4W|bQ55|S&n -s~a`qRX2sVb{K0k@YO7IrgMcT!BmjGnT%KoTCZ?kJUoWAZ9_T}*jk#b8LJ+S&~kn@AEFU1(Vbc}1&r$ -(0(&7xf^FbI8!ccDEMfmE0r!ro!>;$IHJJGuuR#{wusf79g$n=W4VI_qOuv={P#_9g8NLQo_*I)|rh< -^cF4{rU3$Qi=!gNOpy-lgZTeJ9{qPGAJ`zPBPn0h-p?Q^h%*g)w1HS4g_w~McSJvDL3$r^TCT2h&1o* ->0Ku-(l}EbD^MM)HSYr;!4;ng+Wf3-tzP8miZW)k+h+uI{a_%4f2tLDfRvdUnvz-SOd47S!7%QEME6_ -ryP`;U&HW8{L>K5U4z0lz@e%D^^$^wS -&@LS9?R+4VaO~+8Zk4PP{x`kjdp+b6o6a1P_p`(jSzYEf~BQ-s&j{^I3%B)^CC>=4Tc*>Ie|M|=t6zyw4i_;yw}se01Vi2Y_4w{9Q)?>m)sL_ptvP -)h>@6aWAK2mm&gW=VWSgN%MmPb8uy2X=Z6}k+T}ka0f$CjOG0H>ux-zfx%Fe;#_v -KVU;a$252-I{X#d;I!wM>Xs+&YiRaLATd7;0LlUaV9BVyxZRp(^`9m=dhL=Rk#%>GL6s;W@-K -@L;)9@O$ckDOj0N}{pjss^CXFPiO2s&TT(o5jTvP|XUVl<9G;DP(&Xf{l}}(9UVA9yfMs_EZl){Foh0`eKYgk@-Iku}g|QO)T2OkToz!Q+dIp_0 -X=L7z_nKi^7N&{7dkKx1TuS}IvK0$0s(h(iq+^-3BXQsQF=%FJ~tJs{W8vTzF{ZxEx@Luil5EQDI@Hy -e>)+vFM-j~IH#B<_oa{D;8-mI9_#--*f;I9iIbr3!FvvRO#%oB(bmNFvGmrV3DWz%;4=td@!V2k47?V -_nMM7He$27v`(FT7eeWI^1FSS^_Fcs(qF|KoNRBwcQhe6Wc6cVuX_@ifRKYce*A1Xc^f~Cx$CSCsncm -jn#|kSTkS`!tZ4B>tnlvC$b9UGcPTwpnI2NK84BKs_eu4ONquQF9FM33-=rZy(A!L(hO|C7Bv}}9C-R -rOu=r!a4nv-m=Mq>P3LvBUJVC!`h!u5c7HV-j -r$uLvma~AhCWQ*0YKSRXr7rc7ENTCTs54k!4%jVm1d{;PAsUK;XmkkE0WZg$GBEctLD^aRI-TVhQHPUnE!!J$L^x;MrN -A9j=ST3()%TtR>1(%Ss-MxW{0C;LBl8#~nrfNHeRqRdb5Y`w~pHoVixAFajOH-NPZkJ`Ob`C70xho}B*5X}ZG&`GclAY5J&-rgPai<6ud<>T -)_X6HQ}V4D?$LD=8_+)p2c-9MIhxh7%=@^Y)=4i(361Cw1X+1zEmgw>HAn3eBYSTiwuNQgP -`i{se97FV*V2eC$y(evzQ_ft0T|?+T`}lJXttIyW-Xh}{`A<^2tuVB(Jc%O*+)AziA*Nt&kF6KtS~73 -~-G#cz)(!1A|Ms`R^YnOt9w76PPA1O>%*VoUt-=ZfjL|tlw~b`mZM9xuhyyoh9(h8~lmXL}9UD-yiiF -m{@qmCkTw;?9e$f1qEU&Y5-Y{TAHP17>5rE-b+y%EUoQXYc53@^i#W<9lakB@qU7~99FQQPA6Xtc+fD -a80`>dj^h}Leo0vuqKW}Iw2f!E{hq+#l#T7KBtgVA -nj-8Esd@=xN#V;27?zqt8@g*I*i&${H|Whj~>lIA1%Rz0)Ywh26k1~xc4avS_9HG$_5+V&I{KV#uDWg -Hen1LZNA8jAL~idlax)cZuzR+$pw;+=3;iy+K;GQ`Rl+~(pPgnuyJy9bhR0E9fZT=6im&!?&EqLnFaa -TND~ABRZgk~HAw^B!EF+Ng-Y!&~6hTJLoys|EvCDavUP -#>dgjy*@vFUH(doUWEx79{RAYj$6rIoFj7A^_@ZE3N`zFO0b&A8koft+bc99z)?st`GdWSTYUJ2vGMA -by)A>yFvmC -9!wg(`sSro?c1yS -W5FFcWCMWsmOz~uuoN>ewJQWkAlVk-)v^+G};p~)i9>MwzI0tR_N@$o@Rx -WOZO45D+M%(L%H>O*l>^TIb6U44;%F5JqPXb)x*X;dFW&xIL(L8@`3Z)Ip6_ -}Rs;R=+P$=+4==4qeC876>82Jdg>M|P_+%w#d!W}9M6Y#R482WP@bI#qC{U&|W*Jh=@FGJK -yfCDCh$hp%Fu{dc%?nPKL$*(R;xCeNJ=9vCXAGO%&+`u`C0E4|LHop;>J-lEHut|Ts>hETr71e_+2PTxnCq62_CUG{SZ78@KaLhT3R -427Q0IPT)~?sUk+yQne|V?^g -?=}?<>FK3whw3`76n_S}N0tl}t#~*>z;$R#sTxjSjOWNzBH1sVpNa@H27A!bTRJoXt{(7+2ieJBq4Eo -~i`00P0KY28I#RrwEisg3gM>mB&?^FHj=!jaIy+;gs_$V=3`QAP>&eMzc>3J7hf+=pNx7lr--HKwhfG -@HUw*V0TUFUMs-4x#ik*3n6)+kD?_At@Jy$0t_r?gu`OOA%N_##p3DMgckKQ`!j#wDlEZ?yDr#%(hbsa8E|{H!lX(~TLm#MmPwbC`V5 -IwLOkViGdA>&dT00sap9EYrMnXYx-b;Bf5 -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 -W0@6aWAK2mm&gW=X~BCl3(;005-{0015U003}l -a4%nWWo~3|axZXUV{2h&X>MmPb#!TLb1rasZBR=~#4r%P=U04mFJ0`0Me!nd@UaJBk%bj6A|cyM-C&x -ON$Ts@o2GgY3`2&Qd@r)V!_h``))8_yqjqq%B_GLP^oAJeNJzweMCi(JHRv|C?F?)1NE~hOVu4e+ZlJ -v>uPjo6Y@x^JD1CjzdVZc22-FglJRX&#c!4MjQIUQ6d;h+PWx3$DxN(-IzuurC|FZaD -qO>;KoF1o*NkZW~X2c2DUzBf^X9lRQxcQgb=FLK6u+|XTL}>z0e0P^OKy6bIO{lr{8YilB7iow#0#Z%|7E1QY-O00;m!mS#x~ -@5Z5F4FCWnEdT%@0001RX>c!Jc4cm4Z*nhiVPk7yXK8L{FLq^eb7^mGE^v9}T5WUNHWL1>UxCs$6S0< -AIqluGo;YdJ`Z}J;xSlwZez1KiMM5%bieN#?FRA=*@a -^#rM<-`TcEN(5X{Bnz8xm+)sw%6Mz6ZaV(jrldGMBX!sjTBHucE_eiAKO-6!^M5(i)#)KlNNzj3vk*GYE{HSt|GH6;Wl{XKx9GC^8Nmc7*LTgrT$>U;{6p*SB1e1bC8l?+BAu;!t!Z{<8r?pqIzi<>yl($ytMJx`IJg%yPU#*0{3N`%=dN4cHCh%~Zqdmbgn(Pp7#7Ph8F_p%xr(c+$z)i`d=~aJqCp;t -CfD*lY|qPUJ8L8q`MW>a%%i;=YdK`1k;vo4G>t`tSqGvLFNE^B%Fn{}u)|jV{yEqlcG=E9i?lC$Y(I- ->Uv{__pGDX&I>I{Y7UPjv$ofj9tp%`q3nYA`=Ax?OB5Am{!?Q)-66!?N$8;JjWKqj>(3RONwTe+IgNs -+Y3;dngS+r#%%IuAmZhB&wRc@NZjNIqvi4_r+2f@T-pGmSP@nGo9_nZSx8#kdht33(l=H^+!3t#C!#( -#z{g9yj#BCdxtbx7j#7D-HwaaH|Y&4+sY&q9x)%%ZQ$2?)28d@FLw658^!D`*=xTE}{pq7vgjVDR9A?pU;l?eC{%a -1M@iHT`^h2C3yc~F$m810}&+lyuZohZS#ANz5%|(`5ps=q!}TAfbZV}Mf_>Oz=Y92vmk!e)v&Uv6H22 -egy$a9IjYJ$tD9-`;c17xSsjIbX=K$o(P#d0BamI#yPvI_CpCcMuiPGMpieFVJChu^O9fJ8(btf3CR48$(aF_P^Fz-1sz;F -}nTHZQN@ucpAgUnRg)SsDWdBf*NPggjEP_Xcfl{3LKr^AnDr!gjln{2mi;Fv-lZ?B-fRJSrDrMqBcCswDtN#*wKpZebH4XEQ>tHxf+BWo>GLc5WJ3cDGj-&LwIILWAg2<@FGSm+9s&Voy$I=%+l#RNIH9K;vI_l -ByB~UZlABS{wcD1@Cl_ -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 -E2bjzNqIp5! -c>X0}v*Yv(0+bl#@wTUD0dBXvF>1_x9v>7^MDLyT7Vh|5{g9rT*Qxzt-DT=^Dd0a2V#RbRj?76 -wMM=$hB|Rg?o0kSprqo3-@q!dA?a!3x^WXK;5{biZ<=D|#=kBbMvG=skkYBdx#vFt;@-O1KH1CQBTwe$lh#Wt(Mu -R`C~x-3JASAtrpdKYeB$2SVlDzR -!-b_syo5aW`dQ*s*6jrU)W^(VbhcZNqc -bAj@fjP{tiWxB35?E-_`kyE6XBj~;o0Tw=#d_UTr?BC0c7bG(gUd|PIOgS|*doJ{2`pz9z~S1fHaEQo -@bk$8XLmB`oxa3NFf*^}W!Xa_!-1ta*CGct-@;ZLjPB63g(IdqtKf}0HE+r -vHgJSpmCN -M=qQJuk2yEWet5rGAvoDD0W&*#>_C1`NY5}JTu%Zml-<+R}=)cM!bNpin7>sa>&db@N0AOu>Rc7Z4*a -QnX2?*3_2`$d(^v6RH&es}VYJs1$XInmO;VcA1@;#Y5B?UZ_pu0(1t{rvkL0>?$aPa*0w-3K#e1>l~O -WgGGRVE0}82tAeJZ*0-VDuzVka)6$|F)Zw&$2?N0c8=l+H}ez<6CU;)TWaV!QqhyUFWV3MQQS`TyIvy -jK5`gUsu4NhV|(`fbk1bFcWa(!FpT(LA2%KOn%2t1MfFW5ixqnv7t8efh7!{^-|6zf7WE{_rnB|LE67pYZ -IWfBvtT{m*}G^v~0?fBvr_{m*}G?9-&b{MStWZ+`8`U-nFXxdut-%8lW&+;;hzLF^bBoLB%T#&#JZa$ -jKj%k_lL1UQWF7m$XB&0zTb{C@Ud*>Q3B;|c!peg0qB;b?%8UH9?#0Mp0OI%zVf-@~{9x6Tg -D2TwHW+t)zpl!g+h~#TaK|TjRkPER -lTg@cjvs1%q;oLDuVeag)M*N|hNm9Ap&bGL8RUa5SY9AFcb6b0CjjBg$4?%eAf|(dj~;*e+t2>}cfbF -S9!Lk!eomuXZm!Cvn(>{ZsoHv(d|_Lai#c_Y{|L8*#qjst;dH4ze0y+jkliO3dqJy%tX#Hy=>Q?7Sgb -CJ2dCw_cmTKMc{RtIJ<2<$CE#0TL<)N;==5X|u5!JYhYQ_VGuBibWydGIE1xEnd{N)PCLSedK-MD%E& -@$amKnm}6AgLzAil!Y3`t!FS-|ZEgr`MW;4Q2;PrfL0XVtIP9=s;b&NAjv# -?k0`JvusknjTOcHWUjdFVk1+F98-uHsz)sq#T?0pB!5n*EmN!m3XE_@#3r#)W%t(g@E2t+{4Da{(!#s -Pr%&zJd^;|9L!k`BQ2AAD}ClqnnESDwTh6}j8W?ul75irkcq@EMF}c -DX38%f-(8>WC6>zam<^4f;-|lO_5Nz=jwg&krZ$ -S{gY04Sr;UcW2<58G$HLx?R6qUKfjMF3ooU42OP=+J*@#H~}$04@IM&1l@^T==t#w9-|g@oZY*3c_X; -XEq^%5H!D03hwy|R7?ApCUd`4yvRn}QT4*@V1mb9<9ijlqFT#bEd!Vn36?F)Ix=#0$>Mj8mork7Z6hz -yhAvSt;e0hQpjt7$#m7;j=U!M%m;b(@XVlcLKShXH2`d0_P6BlaP#e%wSrE7yPU~n>ocM%nU(2ot_jd -KYLvJk-14t@a1c(on638kK>F-$t#DNe_k9YKAX&w!;gfcN#8S(7C+U*L`Agi6F7ZB -?z@J#SBNjEQ+hsd6C^Kn)CLFs)DdLd_gp@C9odRy6epE@9)2rqZ7{~eLQHhtKvg-wYhSt?S)f@<#I8B -lL&R`K*#W36xR)OF}^IeC|1`f5g_xus+I&(0P$GQvagF-_WE7+H_?gJ8{m7V%IVpva}W6cJ=o-M_OU* -0rAOT9Ho_*${=8X}u`0VM;Y`QF5|vxCi*knAvQSx%XB)u3T-G;;BEfRnt`2G}*WPR3Gz3WZ(DDYS@J>q`uvl*Sw(FKTR`0>?tVFnTP2hM!nP?o!Oj&!O%S4MZhm|O1v${bGDIDp6f)QaMO8^Qv-Bb%pg -{-NChgZd{R-XQjy3DVN_3UDZZMhjp&sVrycmqQMCm|D+zz$cCGxz63b5kw%J!1)u5rfWvy8LkXNellQ -WS?Y1xW?uGs4F=4_z|5*!_o1R$0wt4c9owu^=38vbmT=(Id#4*7Ms#&@AY#)xaz`2mzcJ-+yarp4L$* -CnoRI^v&RtrT(lr{JBz2#L-J08J1 -9>81a?CW9)tjZz&JXm~e=1evC^#!iu8>Rp^le7cKYD*vx@`3=+e!$mcS3j$lXTSytlI`eKz5b%!Ea!^ -EH%nxB%NICR)T^5_fv8=7r`BkCEiibPsR9uKnZ7bE-a1TlXbFWgpwcO0F*LAGjrCVGh~YvOXG|XMi+k -u-&Yh&V#O?@nKNDn<@PT@kB@+m0sDQ*~LNW}DIw*BA*0tFRu)SEgov?`ve<|UI4N49AlTL(jgNTOBx} -1sgD?u=Pd{;k~LZ=GFE*xBN;f-=$!fkFJHxXX!)=GX~emQym^4)s`_UD(cp1%FN`}*$nH*cT4a9^MO< -;AnVzW(OD`{DVEZ(n@%`i*?op7-Afr`pfR8g>R-6HcXY3y3#IQ=TK9^wWbyU0-fi=qe(pz5Kdd7wB>E -#_+zEx+Uz7U%;GcV_lCoFdzOm80h(V@bzl7-dY$X{$SWFLwU7XENm-)V!uA;eQ$sI&uaB10>Z-t28#@ -*6dou)IrcTVfEigtPuU%1f|m@>v_1eA@~^2Fqr6?+Bn&N-xc;aMd2kAiZ;ECf$yW7pp=S^rJXb|U`{( -I(Q7sDC4bMXsxp(3&q!AYxIxgeI)~BZ}@rCS^ZvHje;ZZpR)VQVNlHbot1kjQl65r&D3kanNb-Lav;8 -&2p36sgh+3Mk1g0Im_If~gMhi=5-h7tOaz4a-26u}8M-yV`OWU&C@$*FJzM(b4;$dJl*?Hh@(_s)r6A -Xcv{+OBi|nui^1THGH2RDxwVy)oS49~1PjS@2zR|DQB?JlcLjNz8Wvz%zabaOs&!?*iseume_QBi=E% -3J7J_3g8qUKRoGs9pK;k_9J6M;d{u=CD)PW$f1k%@ZLT0asv_27;|ubCnzxhPZn#A4s~*Btvb5g_<4C -|8?g|(JS5gIRvZc|)gxfObD)aQ!Fk60Zi+=ja(S{_F;|$b)3z<>%>9lN2TScH5y*aM0E|cR-1Xu#ych -10{)W-_c)!H^OUw>43$yFq8}r@ -;v?MUh?Py@hRj#0GkiZe*5N)nUk?2K9_)Y+X;1$DQus_8!a4Ca<2`L+KLq_1V}s?#JJ!I$+yrD+UVD3WfL6A?qg88@|)O7=l#SMoH+Bk -Y?p(z>hrUGl4i5BvOpKBeN|$dSJ&l|{FB*f$jM9-5cNPVMLQHLVc-0H^7YgI_4+NcDenVz{N&S;r=j_qd>bvYTdQB=ce82SX3E~sm!*4~6*W@>dCJ -Qb{6sn{G=9JrG(+>sz%&-l-*`H`s^^5$gz527uh|Ab}wVC<=AL0$X -RSU?a0s5DUF3#t>6-H^~CZXn?a&BI!4lHH1*MtLBDQ5fa$0-0kIBRf)qQ#&jmA_L~}qWilJwT>1k}`r -S8r#+JYQK^8iWH7ny$Svk~$z1Qh731V<)z{?ZtCA#_|h@qQW{J?D(4tu< -`5IKBZ%-+=2s$HFVP)FHd5bF -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 -7tW{2G_VIH-Daz>& -;qq`K|ggT0UalI^AYuY0(rhcs`KdTNX5Q)OdVi9n5~fpSy0^LpK4zg%umq;%*lpbOq4p6bUDd2EnyEJzj4z5JMB~-1jv!- -l^74+`BY4J1Ei0{*KR-mSQI@RTXLCuQrf=TLB^yLR;R&%BWuavEqv(gP9z($>^0@z+cP#qzU$um4O@C -5JVqa+uIPTU+gi|_$mB)fm@$*p#MAzQmcbQ|8X^68^g6cW;q6rF*Go6KqJWEP{VlhM5w!D?~0>F=#%@XKha5Y;GCq0jI)1EEhb~ -2=ja4y-a#6@d7hlJW&N>prV1=CLAEk=whv1wqFRk91z;1QSW%RBMilW#KgwwVFU4{enhfxiBCdgIvQT -Uxb!O~;&3mY^USWZvRY|rJ%_sD06mf~W0PCd!Z7bbV9b%PUxfh%b5X&qJ$%xR6fEa`-NDH%6BMF=gRj-dz@Ug_VUDkV)1mIdN;_FXuLl -_V9lwmqum@#sk2UbMS%Wv(bWoiafzzWs0-igFcVwQ&9PTy@N={P-A~pQLqOHj1K68KY#*QU)nesPMbq -Cbi2Rg`d0Fq^Mo5U5cRuwkiIp&pw48>(i}11?}y2DxI{xL||^0g+xy2qUz=0e8c|cj-#gN-)}g)s`1( -p-Rg-bUzU=fhQcN=i^Cwi&EJ&9y@2E@mA-DhleUu>WOu`p560R6YDP6)mAXJKm;uV -UFdWv8jj;1ynsF`q@bO>}mQh@2#SIPnFCVVQ7S&?%toZ{(q#YQZaGj*lo=912BV)Dh9>i1{W6LS -?f)LWyUr3D1sLXzB>`A`VGPZO0_xu3FD3lOmiY=8#=GDLUIMokTE3>A_tag(g7M#K;7sSC(G6TTdUaf -x&#J3HZPZKlS7m(r&+8c*Pgp5ru0yycL+Ptm~L5K!KJYaHZ~AM{mm(5Jt|S3m>KN@el#uZj6$M -%W6PMDLOP~XiXTjBiD8ksc2c^ILjE0f)Nk8<<=a+ILZuqlLR5escSXS_k9WTn^cKGD;_EnjqDp7EWev -PXJ5HA8OO($pDp)a*73!4EYtK-w-|*VWiA+W;Gv9MZif -YPHLlYeQq}f3lx%SM8V)7dP9?cF-`9#BIVeh5*7^&G&N(|3Mbcg1>3uiFqM*)d{0e3XIO-wC5*3=RF? -(H2gShy9yjhwjG)VMMrLt{yoH4E3%v7Kf$(~V6s6|$Zfl@(rD#K!{b5%@4o3O92ABF5SsaiKBSuE507 -U(a}7i5MF5AA4xSDBPk<$H5pnyrWuP*O$t3$T)1TiDW{Y6-yk(Dd}rbQ)pBi-3V!m+#hhnGHWh;b~?3 -gBRKg!ud80u3_JfO>F6c4DAK5}Z*(;t{x6@!5r$@v -J)6&&?63{fG9q(eaZfhmTGoP&K&k4#VR7Y6 -WG`k_1F#rt?Spo1aW`VXCZ;tihZ~d!_ebu{RabT)0StO1<4H@cZqN*vwd-jDtDI~AdlyiqRNkK4UJs* -0p&OYObpJPr_)Yld^*XD`iu%F*Pr5sTwffL>qf+kf5?skfRx1ZVdrLw4cP+33zm}1U-HQ~+s<>P -NEre;jEIM}-)O`fJtfW>Gm|&p6FjTzl1|@nMB%rjyM*35wP5SzMkdbZ=cL$MTz;bD;&1w6JTnV@Q4v4 -!dka}>!IUPnyB*~i6VT3(8fg2UHl21v9yY8QYJI|HU7zEAFD+JzqfmdyYpu-{p78jAwv*_jr~82_yNFLQFOCmT-pY@n25OO4SAn-cNB!y#jM<=bm7GW -|ngh<2cXCpUDVqLKer#Z7d#fQeJ$!f7VhaD}~H2yY$tv@Co7VW=9X0*bcW -iEBFFq6)M9673pFHUv)egp3Qb3`>I||HqBkZh><)za9ylT49(xZqH@$?p;_ZQV^o3z5?2i5l$9e8mZ; -vIvAhj2b`Wi%00po{t78Qq7-rKT?C10DD%)a=^%yxYxFZfjymb-+jqmXK}>GCWxW-k{C)xmWMnwr{Uz -`YW0v7)hnD=$g3`VFyl8CE}WC9QC2U1P55>th01Iip9+Fbu -{$a4JN!`;x=O>DHxF;?7l%<5h^ddh+TtJ6jZZhnbW4p~XzRBp2P3vXcJxyvCe0BxDI#%$4p_-Qxe^F9pn?H^>>N|0X5I<9)JPMI=B=j+2cb>CI2KFPJ=m{qM8}E5rrH~N4Q$nz!9~UjQ+xX*_Si4$ -e=nP=4uK|k_e&@Rz%$_6{pN?ndakoJ~x05`JYo3qGJ-<&^o -(TbF8|oR(|4s?JRzp$K-~N*bkL_*}Lw&_;xl%K47;84$fPsXhhy-7iVl_WqGM)jevRD-*+Yec!ilc{X -`b%VWvumn%KCOkE}`{5j0AScl)_+ -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 -hTuWgQ4h&~Z*2k4Bgig6Fwl#>*>Gq)X3 -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 -ztz_{N4NVKA_=Ag8vMYtA~kDm=Sa -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 -Bvm5ka;gsh?03^c4 -2pmXk4nnR@eoDHy0R@uEG_dHRs0}iXJKj(1K_g%Rcv@Jyw{WXm<>yVkSy7gA%Wy>Y!J$luG&u8Li^(m -Ixu$VDFdBW8r|2<$8Jw6apOg~PCtOFco2UnRWB52+##UX%*hmLwAzt~TR$#Q!FhF@6wBnuw31yImV -cr}mhBKe78jSU`98chh|U0PkyZRbKu -c_FHs{IH8zny!v;F-NL0Foqmk?6APn~LZiOJR>3lBG0 -t2x;mSl7n)x_J7$@1i?6(ep@2Dq)QX2$|iaL(heJ)cijx$)y6^`Co!vbN59QVDe{w7R9zZHT4$@ISsPm6Q>hm3tJ`SnRcOX^%&(m;bnYX8lt8|5?BOMeMBtuo^fd4PNJl${w7hk8R88u@@aqStr)o9H+!|f4DR -&9m?H9$5TOLBO#yTV>xrwt3EVly4on{-5dKM2h%LUd(CC3^TiWXZ5yvVa`Smk9tCZ$>!bFRROEuoAOg -7|u?+@KpxHMfWcYWh@g>a9)#d;Q}w0mBPM5p}DRrF#jE2L5kHAWDWjOP|fIlEX^Ga_ZU@-Q~~+$wAje03#OJz+fEZ-4vHixj*s7O=T6)&6CJr>)_n_sE?~C@D2j4!wbESw6?(e?7EXD -EtimX}9K2+3=qN{ihN6$DfvnlqeC<+9WF;9_~vRgsg7zrj=)ZuQ$ZcC_P&}p95fEp%sPT%_+eLhp&VY -`7b#gNHyDFxmT<Id7nLW%O=5PpwQf>>Z^Yf&3&3FpF)OW~u_N-JST!yj+nE_@icC-} -;!TpI^C5>-swCYH8lGbDX8&AwU(^*qvRf%Uv(TBG-;HuY!+0AU%aU;2o=$wWj_)9D~Ji8ETI4g@a2CRJ2IHxsQie1^3bS=wOT!-b>TIYqAUN7Qe7ydXhwTuasp*dXBAeL=e|-#u)u>voKb(}8-?RNy3_nD5nXs`Gp=i4yM$+% -MBv_Vfg|M!vUG5L;5rb^+~+#F{U -e&p=5QFSX!~o}Y*4*AO(0H?hn6XA~r9r%&y+Ye+QUkjV@`X-9^c^pIHBF0FD=*Lk$Z<+j6Iy-a$p;RS -?(TGR#{DtqS;aStyz9sSQ{#rBUk%!2jDll^$EadND4a8my~3Ke-Y45zQcFCp1KFY%tW<{-<>5-&05ON -uF5ZB7@}j9wu@k{nd?PBQa|RblhM7}>3-&IOYL`IKC-I|qba1aHfcQQT&=aT|xMHa-?;x2?w80(K=c> -yI@W`Ameal7M;U3<&|aP~~q9p4N&*{XDD4rc)!{OsA|NAd3kuTg=Tc70qnD*!Fvhq?G*$-H}|OVr|!| -oH6G+I_f9aL>D{L$Qz&^3pHNdt^*hQY`KXivkIptBi|6&J>pvti4J}p$f*#YP6M|b5I(2$>J;~R$5+> -`0=YIhk%cj!BHy-ayJlsNr%cx)*!sGFv_^LY%HB>>8FVo2R(vj3Ts=IhUcwmarB!Aq;k0BX$j%I2JW) -)L=^=**@(kTbc9JbN*_p}1U0<0=eEelN2>{KSQEUQ@vLke)BpX9GBGWKk1}_Jz=vKEHJkI8ICb_)x2*is-(oF))>S)SD&-!Id>cRn!zRtBrzZ;;z -Q-3Nf$_>>0zsr-tk;TM@Ut-TM0_!|I -AO@Vj4#({y2`WzcA;DWHZc&b^w-w}ZDrlXb`Bg2E5|K6a@J%H`&&L^b+wnMeRksRS?!_7RODd23x>z5$d -<(D{@a8(Ez;Pru1ER+I7`R2!X{;I0H?O{W@$Q}4(s=Kmmgpxr7n6r`z2oB8hR>!}W@u)FGm#T1!m86+ -AFrOAq*oy^Qv!0g5<@>UfmF`eSsrHf@@x?XL+D5HgCRE(X3r9UG-lJk6hlrzW;4RRRbq3hN`Lb>}e6 -m`W*A?p|jma7T9co8ymOUBnT<&GNqDbf2nl8?OLDIU@tM;?m7H8cg8a+xNJT8D4t9>ff;ksT;C{Qz{U -PLye?@OjJqhriM=rF`2KM7kUw4@20W->;BGl(jn;UGu`i{>`7p7;%phLpZE3HvP2YMIO!(&Gtb0j0Dv -la888kUJy43uN43f|F(7evX_0<|H{)gote%uIrsAs%;v~h#jLmkq%N3Aw>a -dvh7VyOWVxV4sxwNDwc2*oO;oO_U03T3Ilxf1ebDmsBHyDChLw%hr7y3 -2`|Yz6_RpdiwU>j_Jml{mx7<&8B~a*TGU3+CTwfA~oZUmGa*8K^Jg%GINeW;b+o9MY8bIS5EZW7=Q!c -wVwD1^;!dP_6qFX0u$K*m9UJmuGblWMRJu{5yCVhxLJ6Mmi3)o@2EsBn8aT)q<#;pXXS03aA9{EwgI1 -HT#7tS8v*qgw-1J!kBP_u{iMfO+$`~VJ)kc(jCHrWmg48D$gldqI(6H$u)}{RKQW{W-(sl>{0&cQT{N -Wm)8&PKmPRbf0RXO-Nek}i98nbI)AvuA8NK-5FaCF&&AY2CIj=RGbjX%gNa+6PzY(e9`=rnS7nqPW}RUe2eG|Q7#or-wdBNxPr|?v|AecWJxR$&+ -R7I{dy+g~xZO_@a2yKdCLfZlINeMEJI<_*xj@br^(n~VsZ_lO?A6SNa?`FkQ4>%CO2%9UrOoaE1>S?{ -nd2qWyh^%jd!fv<`hzLhf{kKFa#p?I8HmR?bv7ilNBP-Au*HtgLo(oz-PfV*xV&IpYWfm-GMg+^0xNq -Ir287VbKV$q>6l=Pr|-*(vuRfljb+b*L}`?>iWf4$L{d2;V?#Wf&N$r|70yIUb9Gj!8D*JG5sW0w;lE -uX0?jZw>}HQ#}BfZmY_%Za78WYm37^4Ch^i%&H4UNF586<4$_!$3IgvW%+ -$Qt#@{Z=%W#lAhch?RT$I`2Az*_sRVEh{r?W<8P5@?;-|OlV8_`U(X7^d%U~TR?FI~i=eTx@5dGk@rGEc?tcMBkI(&SR%o9P4?n{`xiN41VvwlNN -)F4UnL+_Yj=`%M?f(;PFx0^R6Ol^^W(Ch5g>-X8Sr(b=Qz5mP0ciA_up1*$f&DSqpy?^mM1JU*`ub=; -c_(#{PV)UDxf@Zq`VQgq#6W{sVp_o7}mbrSyE?H;{a7vt(a*{|h4@#hBPAXyuo284eSE(q-G1(iA@0! -NJ@?GZ@4rU7&HMenPxnE1RqeYgl?lz%GBvk>9SLBUjn$cFzui^6|*1hpn(r@JApc5epZU -)`y*k*M&4LET{Vvtv^Ebtz-kIv`O|-_SdZ(~KwX(Y86XAzJ>;kz4JA@3~bxh9J1SF@XsJXYg~7J*CR7 -aEXva|ET4?DYh*aa=~aG48fud1tj=LB?TW1R-YMYbR%LX!W?74*avCNg&5Err%t|E3#7E>SRu(}r_o& -o97PBgv)M+{a3+<0j?QzPe3@4>D6KT@7iwqBx*_3ScUDVp>BvDV5 -kv6Y`L9psCSI)5}s{mTT0-!0%F1At;(y&G=uFY&(i0CznrrXJpa~^0|pw9_Vq9Q${}|ipJPdHatXfGC -6+qgn484kq#&*e8wsEu{=P1YAZ{!+a{XMsa~|}GCEnAbly}sU7wNxM-<5e9 -zOg!8im_<&9_&Eo78dW!{fCULZZrH<-|D$M7im0$rA4&WBhE;0g@vf$`4ra)RmrRFOq~`i7#BCwQqxh -(9+C|44z*VmnA%C-BVqW(=9IRmjUsIqX**@+n#Ma1{r+n4WOOx}I-=FRK3#tlQFm -Y`FDH`34J -V~!kkXriTu7Xl1Izhg7|k9_5+8Yfw?9<(9*x_{G!mOwI0cg=hQ-8e>gqsJ8=3S -&AEyQ_&UD-cAMXD{;OIZ+lJi;85i4-Ur6C)XRzHrj*}a7u0#7LaT95#Xi*6eLT8uSD<+Fh -Q$I?&W<7esx#YU{tmOFhllJE5&ueK(49H@i^QP@`U6-z%=M3ND@X0}jA@kX0l>ysETA&O#dpqVpSlZP -k))!hO6iPKLBv$%nriy>1^ho$}-4sm)WXo&-E-S?Utma1m5U7a*MbjgG!T^TKey8wZDvPT#9cU3=to= -fDdr#p8m+Ddm0z*E?-XT+)@xBSd*vY`iX4kPxo`QFGxRExkxa*-c>;ik*LVp0Q0Tk*h82Ue0(K0LW{z -|E1@Q<(tZ}uIk#FpfqY4ifkW>EqtefdTjl|{1vnU1ZP^_k?_Q^gj!c%tDh_PwM0pqR0t%=erYEPQvk& -n`PaaOfI!4xIWZn2NEWr$QsZBPrq^MN`b`+~pw89_61h6=80TNzqpGa(LF4NdGLI#9gDmpqoD#I8w?6 -ZtoR2hz!qB5ejIlsk<6c6?7=Z17l=G=Ea& -K|#d)ra%Tm%=yF}~LDZTyl&C9H~E-I=Ao-@mNk75SV0x>blCXe2BuszDNGtyPod;yXLqSr0YpU{xhO3cH!fz*+T4Cw8S;Xu%GctU7VPW~FPYsdLw6o28eTaPV_I-dOak;9hqF5 -^U98h6kdVVpy&3_!|&nK9N$pG`B)MamjhUDS$|Apd6XMg_&#pg*XvC{mPOWuC|R1iQ0Ca^U&sSpWqPW -iZXBls!Jk%`!2fJ%-}lCJvE!<1i!A@>^)sTv4_biSCXfU^mbE>*fRr<1C8mX)GjyWVlmbO88MBc6ox -h|Vw8($PPJVqf2$t^{fg$*5>7tJFo2$+^!sVKsBat-;-*WxJf6K!*#j4N9)`ZiC7gloB9Wn_i=|=>Js -@dBW4@RH7PbpZH(Dy%iBAWjUGcS``-&+rMUNdZh>p;m3ptl2r3}GzPVD{vP)h>@6aWAK2mm&gW=Z;5a -g34#007Sm001BW003}la4%nWWo~3|axZXlZ)b94b8|0WUukY>bYEXCaCxm(TXUjF6n^(toSHm{S>l*H -Zf&N9C@NJ5S-?!q6Gfmky#bo-ZjJu?J>4LpiP@d1^&!H!eCIn?a|L5o?Kxe)NHEd?+>LJUU`82VGXYN -o70D|V@W-}({Jt&{nh#S}eCu8HuHcdIf(k)d36jA^5ED|wGofG^UEz09W{^=KIep$p0`djH1Y60sgcD -dXjs|i -0iF-`lkG(i&J|3D*MkkNV?DSwO#J|nEbk|TkM`KHToXwL_Bb*T;qZhWW8VwyKbMGxHZZXk)=bd|v}^O -KvYJ~_=ws9Xa|@Slq;i-B{sLS-RJ36k+8Dx$Eai;#L&Bknem2qz6l=>OkH?Y3uK}>*Z~${VQJjyX(NWc-iosV;&`=@8&2XFXi -+gPadx*<%}isEvOFiLM1g26$ln`MYqLZWNegmNsppL3GO5)?g2UaYQbO}uD)udukQw2;7N6tvdc8QtE -mUNX-aYhhhj)FHrg%Z$CD{C3pS!i=mib>$z&h9LRM -gzJQ_1%6$>zNx1MPa~jyhzMkd2%}T6kO`Nu6sS?0jlrq9)|^d~0x-NXeVr4qk(9_G|1My0!&CqYemNDM8IzsN-bxdr&NVx%w(mlQ`Y?4=cJfopvr}6`QIAW>wfNdN(rw97OA-fxOPS#C4Cc5-RSb@>Y2Q>2kKJ -SD~4MM*L4_9@c*Eamg~W1sK34pGP#I{Zz(C?4gKLRDEF$V8M4HDF9IE!^f6LFOXJq;&e_+tv=_;>^|% -C@?2NWQHyv;jMuUG@>kFg3W|AF7TOoC~w@f)sLCwA!?G#gww6gsV3nTgd{3oTIHg$t(XP3z?C6$C|Ul -E&g#!nrO7f5~n=SBPnP)h>@6aWAK2mm&gW=RjjMguei004ao000{R003}la4%nWWo~3|axZXlZ)b94b -8|0ZVR9~Td9_vBZrer>edkvUVi=YLN_E_qB4~or)Jh^ikuFKu2m-^P#ig_@MKVj$wt#$q(<|Bn3HsW8 -K>w*<(%I#by2MFS6cJ#Lc6QF0v$Hd+1L*hqFwY{EE}lSD#{DmZN7D|#%vo43B{2!Yr -al<94T$m#C$NZ*R2Nn-0gsFg4-qbckZwcmnD%UFIb(^lrf0T=Nj7+JM@TUxo;g8>acbFC@LVPzS%E`* -e}EL=xIoT{6M#PvG+Vk(3D}l#Y7-c_9x@rubMViIX&JVTqCH{;Ix;lh5MjEGPrjZZ8^*xUm>Odt!;?_ -86sMXPf$w5g56|Y$>_D7h*X~;X<8+uF9eWC$=ZdruQ{S-bwk;@hCgbRv}qa*1ksyJqMV -tv?QX+-b3(PxL9Rfx6@xDNSM&Z!E5R~zpJ`U+|T1dkO)ss3!dp -jiJh;u%w-WCb5#=5YXr%g{7qo8PsR%fn4Oxxm#SVriE=m`n#N33)z%MMmNhtxoo5G@J)m~TyKw -VM?e#~Rh!<9v^Ko0r;Jytz0?Uy>&qK_ld-h(LMha1%;v6iAyTjNY;D%0dP}$esrN58HLQzPH&{m`@3y -UHE~2fh%3w!|r6`; -2e?c!%-NcNk5^=gG%1zWr;T@$Kskqm|A%U12%GWVd4ZGAw9;fKG*{*QJu5mHkQCAC>(<+3%J8PTAMW- -XC@UZJN?HAGTjTN3~~baPD&a0oxzB2H1m-8NN?Hv<*Va!q9!yedz3p=rw2W{*QsL8D8`sU%q$j@p0pL -&wB`IE`h~L@H03Dn&21p5P$f=zz4Z=tnXH*FKvlioJED>_56b)BkG+THKRqb^GK|(@Hg-ql17q@ -wvcD?(+twKT15ir?1QY-O00;m!mS#yRfAKI60{{Tt1poja0001RX>c!Jc4cm4Z*nhia&KpHWpi^cV{d -hCbY*fbaCxm%&5qkP5Wedv2HAt{Kx;HP6+sh}E7LXsS#n8v7eP@JT8pxY*rGsEyV+yfq%F`xQ6N9>mn -Z2^rq@{@=%J_%9&tF|&x|Ra!TIBJSnEnPn`h9u`utm;iJ~(|bbDviX6sLRZo;-z_(q^MATuR(1U -nvXU-5g%O-|S1Z8?W{LMRbPXr8IkGt`|)5ST+?@$~vR2J143OFQ|A=uE)kg1O3~JwMs@Ireoq}9QZqbl#rJfhXA$7DN4|0+;W-QjePWA;`R8?KEFS&mP?%0eeZG=4bZu2SIka -+D2e^Oya(wG0hWK&yyJOW<^7Ux+&`G6ln+INw4F$6QN7_id7aF`=zK|ELT)+A^>2_OMX;F394PX#MH~ -9SVO^CmQ_-lx7LwpzFZz293;va+2e{83@x3QDWp_@ZybYG%ybFZ4=vGg3C#CUDEP#wC0$49Qw=&QpzQ -U9oZI?ZXR<>=+0{{Rf3jhEg0001R -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 -{+GGOwP2lx?6jazIYGSk|)0tC(aN$qn%;s(8 -!mwfR{U%STa -$-$V)`ZB$Dk^$)_2b3+*Z0ZgMe_3f&8yc}$=i$jpQh|V)QQNIbtpxw1y5lnry~~lY)i2fd74zqwb+P6 -u994cRHTX#Z|b$x<`jj4i7)vBUJvuDLuS$z`xfV=6}t -WTEEaXKe736Jffat8p6~8nw-TEl&*@k>w%cr36pyksKJgiV53E*SPQYyc!VPVoW7JXqv|~q8cd%0{f7 -oH@)6T<`wI(rT*ZC9AWO|3r$&K@%^BGYRKnb~2ehN-C8bR9`^)sL!g!@u1Vg%th109H5^E0|#7%&KOKy~Zb#(a50O -+uPgMFJHrLHfKNb3}D*5b9en8S8(Iob9?pO)&0Bct2?-O?olT9*Ke+F-`~THn*tWF(P)|Rs$wqzelFC -K7Zr=Yz+CDH67&|sqEz%xCZG9e3v=e=urIL`8Lv#d;_;#Do7iVr`*JL};a#Pd*QW?Z9F#V~*cCX8$Q#UFRrN5vKtf2uK{{i2F{nAUa_GukJpG45oR5x=Htcm`7hG -rj~n24x`M+Hw3lB@+8Ve*v>rJQ@Id@-t$zEWjiyJ!)es5W*$SK0+Z%-fR}ouvi&YIa>{CqDIeQd5L@6 -HvDrXe-?@p{E(Yw<8X93Be&;IsA?JyHuv~J>jcAivgR;5eVYjo#^K#A2J529QpRgAvn@a@m=$6=>KQE -`n-;lpfEAY+DEHOP9bi@Q*lb~i)mtZv@s9Ag6?4>LFlEYep&`v|4cQJLK`205^U8ADz%~Kw-#DMb!kE -3>qc8C$qqs)1NDGiOFKVW?HA>cyTrs;|v3=1n+*Ys$u(l@SC7EhjWUP2n7J(O1sYXI(VtMV>5>&Ypx+ -mVQi|vjHZDL%pPoF4u`ef`4RkDRImKW`1VXs>Q{`M_pk%4w+EoLgITst$+4$Ka63qnixc)|C0plu&j~< -I{7em7y;=RMz)d<_$}#rWqVOO*EkT`Y6?=-_~SsBH0^o(yc^dASi4>K>0LLScjCbzW+dgj7i>DKhFrO -P*?i7AtY;o;99--*P;q^9KBd)PMROC|M!>J*IK;Fa2atAWzGXzs)Z9UfUw-v(sPu?QpwRtJoa&g?P@H -PH^$Y_zb}xlm=&3W*`e%qzIojNrq>czAnUfTXy8TbRKBmfb=Pkd9YnczCu4-7)`ayh2p)kcNQG{MY`4 -Rl0?O0u-2zx@vfENI3hLR*OLgRg&2$e4aM*r~3k>r$J@_bwaa_4C#aP8$O=6cxJo7}MqV%>gV$zF1Z< -Q!JYD4d)c<@Y$t_-2tpT-)TN#i>SNSz*sxxqO5GYT*W|L)JBDmiCU(73^hr*3jZhLyjpDizZ#K=qsJt -b#1d}7-5T@2JG^{KAk?wgt}Jh%wn+bDf7DR7-SE6a5qiNds}Ki?`!Bl!jAf9nk*9(If+nbi>7kDu%s2 -KS-x=H#_$c|I9QV@QGfwHrj$V-Ts5T%Lt1$Hyu}Qg3RfW*g$M$ssaeoEt3$~)?$>dk110Q-gNxXUPyI -dR|2ztGnEe((puYN6vga%zAU_(zkAUwGa=WNAcWpOV3)&^y{M&3>waHR_wqdCNV6 -DWnJxLy^h9|x*c~GMl_6^Z!p^jlS+D<_m6NQ;yQV*WN@#a^zHeda*y6+BiY=F*l(#to|`Xyk`@#O7V= -&TgBQmv@ZlxBPv^V7cl%H*uNvudIA78F;@3}%f8u%cta!c8yRB_bcg|D-adyqo8YpMlX%Dx`ze|5ve;g6Kf#q>}m!x+#{D@_7g|D*XY2??E-NP`tDl(BS>M*F7?mj -W+3&ov_KTWvx<(Iwfs-GHMQIq_M|9;#u(s2SJiT#UO@aP6RNNCPqs-@(hk_2kg)u6uCD~*+m9i$uG}z ->KN33Z5XuSsMpwQ0ix*9N|iUm2xQhXai>>BKI(G8wub6p`*3~0Gx@39_mw#TjZQAD(XS+^j)URK8sl4 -T -G-ZJIzgq1OGD1H-wwy}23(2wTa>uD;N}Z+lW<+AO3XSz%(6=SxA_aqCA0wS@hwWG3`LKb(II6G9~B(S -7^zXl-`7Xu%oJL(;@l;;);9R=+G^MCf44|U-dA^ff|_on8K;Wz7|ynXe= -L~Q0ExY{8>(p?^KN&h@b8eXpR!vtAtkguXcdg2cLHKxU@Vfw9ET~G_4(sRfrcW -CAJ7r9C@6b3A2}?3*GZA^%jG7oWQBfFp+)h0uPQ9S{PaOb%k{D;OOe;vUY7(A!^)<7O#%&F4*39{AuP -FBnReH#PHZ#>q{ab?)IYHf8Dd`>nE<40HAi{m;k;L@(#_qI8htcwj9dJu7q&G^V`eM6y>gE|iVBv!W_oURhZB25r;lQt+&NJ?YSJpWdFS32qp8QkX+Ce}SOT962H5{(+O-PM~^BS#UH7FPv0rW{u5H?>h&GLjk%Ec --UzxHjM)R17kEUg8=Fng;~4QI;*A_M)O#ybgl{iH~c{^krixH)d3pEl~3&PxZ25DLm;xOF&?9pQB?%$ -6|v;HK91)Y0dQ6~;0RW18EWo2$$FcCDoq^RL(z?HZ-iBxbf0T()D>+p9wx2AuMsDYZ!jr-tT -vM|@ruT(`6pk=WQrR^8)=F-4PS7r?S8<cWgua$S8+6f7%y}Q-xZSwrC+(=E6I?^oHP5wxme_SxE?296$<26bjgH -?<#l@FY~7WqTH9^+zVXl;gcAg^icRGC(1D{G&zb3a;{s=OCO(;Rwq`Z`d!j}99LnR{&J_{R^>^@DkT! -acTqDl%~Ta;lb|4d3fSJkHc%5IXmU*Yp60Kn8KIEnLPe%87n#&x-uZ`L8j1OO^F3@&ui*lc8nc#Iz<& -YE;0bITPA}30~?092NzhM{88Dk0;=IMyZCASPjWc+GNt>q*Tx%-J0pcr!I&dD|&<3NNJ#A^J64@$u}*1V!)A_c3uk{fey-7 -+up(NInX(^8Lmw6ModT-wCozHyd$=;_!=pHUF=+#cd>Q|m!T$Czj6Gia`%PxUCb311={+Ve09_5#x52 -ZI`AzfP%n$FRdi=R?C)jUtcfK4ObUArxNSZHxAv0O;Rc64B^PlW6X`hIv@y{ -1}V5;;2=e}q~J;;Pvz)UW}s~xo*Mg)XB3YdmT+7Nec#67_8_yq?)p+zT1+@Cr%ZQ;o}#Z!u%U~5^cbD -OeQWPnNxt05q~#%GuD(dAAGa)1|XEhtb|5l~gAgwGC>EV+4x2sx>uJZ4{Z5$0#7Tpe|VZIZfb%|M%I< -h?h!8|dD=SE~dEzIWy|<$TdQ`o&y8QZ{oR`fE_S2Glxt{^ -^IKntOuL}y8$Jg_AMmfmW9c71p8`LYpD+qdHkD%cPN$KsOHGYCHS?i+j#Sc@e*qMuMm+<_ -3C5u}*CQ#WW6394l0zX4E70|XQR000O8HkM{d$g9t&!UX^Tq80!E8vp(SCbpNJ@#ET -esK(-NpJr79`Gv=bRaiUc>g*Hl!+(YR4vz9&KEX@ZrX#LH(%|*bPYdZS)yIga%q1bL~$-tEDgqRuoUS6cluxu;q3H -ibUq%zOlbt-eN-1OoI=to|T$in -I>rHn9R6LRj6#X4O&1BM>3dA=;J!H}6~oorvkx|OS3 -{VprKL@aya&fJb+>vA@LuU#%sWT>BpYX&Ei$t9flWlflsB!#}{JXPvO;zQ>Q%8`5bgV39x{4>{# ->2p~pNv9MAcH%qqw|yX!BxI&(#UHIDwxVkNGf8^BrmEaZ3S|LH-vxl)E0Osu_?IMicH}b^B`Zq6j(C4K0ms&jzH1dp(vC=O1!Tles|whW@P0*>NzY>~$R;+)g5Eau$T3<%5S3lDbZ -}6yejGkzOV~{5?ob$+4v*!Wgfu*I$$4S(>Xtt%3sjYDxja!T$QAEj!AeNmWMfd@qHd(imDnUc#ToZyg -2s!d4}zhck%(;H^B8NK#YvZdC|w2k(0yvqBD({?KkdP8xHJ2S-(Sev5z(aW{Ih$vq=i(TtJSr}OlmHJ -)(#Jq%2AX97^ADiiLU7Un!)A8crv`anhcLeXQRmoYHLD(z46XiFno{M{d^t-n^J^Uo7U>L$9h93;X*8 -z?46cbm8zVRV#N7G2%=*T>lSy!g`BNhE=lLK*0VJppFxUL(kq$gT&r%qq{QI>jt;I5ug;IpMs$FXfVi -4PZrmY3fo^5S%Z_m-s4=)cm?R8R(r!ysI4Fu%29lf6cjODX?l=#PW=Uu3T`AT1$f6*?gvERfnOc?HZy -H!bOQrlb-H%*}&QSYpu|!08Motc*T%JN%Z~L+1w9ogSG>9b##;m8PTSt_6pTc -k8?T`s@t`OnMB>U{o*j6Ty`cbByCCXnKEtzn)BLgL`l25$xT0s)v=%_oE5ty0CT`4~P6WmE}O``EZW5 -(+eJ&1mWkMH*bE~uZI~Q`!yV{p)z$V>+o6AA<_u)!Vy8jrJ6MrU3`7J!HG4V=E`8k1XhOD1$W|B$qcA -;T#*}<-XN(%EvXx>7BclZB6{X?t)CCtL*U-MS#YmC4~C(UK<>I1e!ki}S0z3+HIBoWNOaXCw&%i6VX -%9*^)75IhKmr5lrgXBX`Whal7#Ki>1M?ZnvY&PE$RAn1_o{Bn^3p2(PODPxFh*W2y8di!!;5n{Xn4qd -q}iL*L0uwDyaFrxSX6`oR2>;$DbeY0nX0mXI4O)$DNm;J{cVxf5F+|?9S20fo3G1LV2l7=w3Xch2F&< -PcODH9)LbF_MgF5YW5%+caYr(p91`k9}Dn=pEG9-eG}15ir?1QY-O00;m!mS#y@P(3GF2><}^9{>Ox0001RX>c -!Jc4cm4Z*nhkWpQ<7b98erVRdw9E^v9}8EbFb$nm>=#lnU`GAA*ykuw6L!ohWX7b6!Zuzf&^G$1H(C2 -dTR%}v1OUnIS2egr=n0yFE~SBUT85*wI~a=NQ*4zQn6Vn*^Q$}^ao;Dl~S`(xi`t(n-u(T(U{3_~~nAPba6Zc>w}(dm2y6WtD1oT+6&lrQ$=Tv}_>Cd%=|h;g4FTQ=Qn)i7u0 -Gse`Sx$Qwwalw<;c7r+viLk7SF2>!qmppQHnG^JBrs|5LKu<4J%;Ns);-R1RNa`(4Sm&vamZ$2b{-28 -rdeev<_xSO -SU@(**5>%!ak%vPhSpnkrRlRmvjci(InECNbDfM)b6zl;1B -`8z53Vj@6BZ;u-MU@wPK!!Uz(2_E*`Tv2LplM5``fP+*vRL#TPspuA{eXt)sg$hu&a+jeOP%zK`{y)N -~tOLLkrcnAoHc^@Tj7l;TgaV(=Ao*bmi?E{0v%qCP*e<5Qnx`S?UW)$y=xjz!=b94md6TRlfwx?%Jmm -HDlh1CP%NBm??C9!U=1kiF-;Vpv=_69ucd9GU9K@)C3pC#6j1J&K6|Nesxit*0@42|afwVSuVbp_@oH -PmV)&S*Tia$A=;`k>=u0p0RJ3ws7zlGGYrYQ@{6Z%M@dTw -R*auFKP`c{^FL<>Ne7Yd5{^Otf0IN~~9Ojz69MsF?^{ZnFrv|4n(xeu723-g`uI)pt`z<*HRW`(?$5S -9Wtb0F``l;e))C~FOUOc7w60Y1L=$C*1g0BsN)9Y3Q0`L&Nm(_Og7_xL207%e=c$&{4Q|QGGwhUSW=p -mO?3emd{(?EG>*n%d|9>3{m-@0(i5cocxcAYix84f@EH_8?93IjLn+KZ0*xaIK!ehE^XmmWIXymQtA&`tXtF5lJR?@1zvjzIKee|ZrEzmQk>AJUwXb#V0R%_HhyH+I|SU@&ZKD17i}Yb+|1f*^N;;Fcnu;=kb@ -Vx@{}nHE{O4BvPrn7VQqcH&)i;{D6n@#)vdH{0{lbKfz#t_Y_?BjeDr5%qmTV{z`sy{b$Ezkh2;cxl8 -^1E-53&jo-M6?t4{KwnJ-#=b%1!cnZMTtL|!_WL{{IHAVwz%hT;-nW)JEd$nZoLobD8*#RV6YY`D@eu -8BYLocPs*83ABT?vhf5P0?oYMdO{AzO>mULX~K%;G|zoJ}cmO@bN%U{}63$8lG?T9=EZ64V4W8dj2`w -qF)z6I>>eT4<6qOwp1ct=*Vy2orabb9T0vFWn9nj}s!vkvWXbBpE`d6pj*pb{%2s_nca8k+o17-FQ>l$yr0xxA#_bZxGa+Fhb<_5cy?AlIO66R2d;c4* -xMtmvg3=+EFsCs`M#cV|07A-GsOFOWIlVWs9Ix>Ur~6oK-tW?TuDlW4xgY~lOiNte8Y7KR(?iN$oI@D -ItuEcD(`>bGERoHF50Kb0vq2Mrsd2q0I%GF|B?=RoGXbdpzy&Q3;4AJDAn}zmI-Zo-6Rs6j3odz&3go -*LboOuxa&k-0vfWE6vHOhlV#WFWrkV$Ac;$#zDqxak2V-U)+$?*$dt9RhLAN3VM#+@64VgGES2&oEA@ -;h#U)agn;Kw|t(@o%myL{lC(_SBR97@X-2HPx8=V}axSHE34`@o`iE4{uBZlBz;Jpb4&ziK1e!qQNT?AP(T2IQ}ig{QY{B{va*)oy(?#N;|H~+qi|OQ -p4aySdvE`1UP3F~RY4_rMb>w&GcBv99?a&SKte=~-N#`|f?m_r`aLoJ1GA{Z=~Cz^k7cbnjFCqCdD*Ck5-$X9)SluL#&Lj_YXHt>W4g90pH1e8+*$wE6K4c!Jc4cm4Z*nhkWpQ< -7b98erV_{=ua&#_mWo_)eS+k=^m#%rwuLwKmrjDtr#5~BXE|`S`NFe5$HfD)Q5`#ee`gXL3jELNk@nz -OI)@9b6mKnLj9UO;^{8{f>%a@@4`AzA%A#FF`4*x0Mhf5Yt-wyWYkEb*q+VmTrw*4i$#9^O)V~75HZ7 -=;3`k&uULsX=3|IbcV!zisb-~PwXhqM1<898k)A?RgbjD~RpK|q@(5Z|Orlc(*iy)@veB(;g74U=qQc -!OXY6yMO{hDJ9`w29CSLT!+AlOP);+NAL&!IxpTEb`+R3A(}14a{u9WP@Ux1lu6^@&k%&D14LR8#vie -*>VvQT`s~<8=BmZ*ai#V#zP76#}Q$AgEAW`+~DvAr#4Bn3BfhU4GnK%YJ(w53z;rIP~?WdHgUM2=nYP -9Qe+dQnFun+&wj(7!MLaH6c}-+0lq6iMM(OMJCLnxY7b!1L_2&e>7n*jy -3ygo5Xp)w#U9pUaEPj4;O`ZB*+8rzN-VfoVX$NFmwfJv?C7AAE60jIka>N9GhRkbNxt~}nOdQ_`4DmQqQplt)5r|sQXXe -B?w}v$%jIT^!G4}XM9;YBs0KK{HuC*p-NPK8&S#c0kL%-O6m&!ws;P*YN6wyqX7OOuyFx|WVuK2aqPv7^Yc;elt3a?Ep4(zfjKFq7?Q-ZVKLgODq(vR -ryIm;C$=EUy6cUwH?XR{;9*9WdaLA757z#L*P&a-1~o`kI-@8kWY%oG>e+X5}Mv5R|88`LJf$lUuOr@ -;lxdw8*gC|81`roeZewzEW?-G`^BS)pZpNbQ|x*7dp+6QVe~qz_T|V(oT?z -1aT)%70kw`s}{6ujy1R#(NgT7W_YD0iknA$MeCPFqewJhj# -_$5C;e-v*Ru)IeAF`Ep3M+F*gLVCjh9wD3T?Fz_psSw{F$qQ2PFZhwZ214M4AAmnmv;p%3x{SLF7cTIK0F>wr@tR5sxCnXyTELOnhFsvc!N4h?m-#I}5)1I7LO=MSa_s9LPO|%OB#cooK0X -eyzATj-SSFqMZNY{#EH;%!m^cV5p$X!o73>IU0vCeDCujr>`Kxhh)1-LfXLk2CsBf|5PSVVBl-?Gky*P2(N -Mfd -@eB7Yv37?*17h79)d$r)brom2OuW>9nX*Ora6kyH7Q`q`Yo#>my;42nChyla{iM@@L@tHIxoX+2iYiT%uRXVL>NVGJsRTjs&fT{qiU*X)o-N>^OA -|Kei8}PHl>5z5CTXsZqu64>R;Ekh7KOG9PKHkrWCau_L-|AFb7#4XVViEB|r1_!LEQhVy7-{sH52Y^b -p$+ZB$9a3M@%tqCQZ`XOdw%@=ZRfqVjhp7h|l<`dB>gEW -ga+#m0OJ?iNbCf%U&BT8D~uYNO=$UPKH@Td8CQZRWE%`#L(?9)j`1r;!$86ZlwNs>(hu0X$NL@hE41(!;HfiECu0I8DK1b~8C&Ij -|M7hXlo27XDQMawXo1W+s6P{=~e5LxC7l-hzdfGK=KW*Z{f;0v-As)AEMFO&WjUqb=#b>II9UjpveL= -Jz6FG~=?>VUuD3z)W^iB1o{mO2})n&`rPuK5ZN=XRk?;>?;KXyd=569n+|U8nX#C+Hiu=UCSSA5aO%A -0Y>1Vn=srE5uhD^x0T&ns#Ex?FV_LZ+zFfv>}T=)7S7uKhg*2>T>1bNf9eCz>!f@>7wG-L -027uK0Gf{Mq9=_j4}Rv@eRSNhPZlddoM3SpZus@g -&ttZVns{nL>4L6)ipcMUSHtnN^6Rp~{ry2m!x_}xW}_Jw|;PI+cbgq88Q8h7Vs?{qGPov(Z?UbDuk#7 -5o8ds9*81mYPln2*hUH(uMA*vgGLbWiPZ#rFcN61-|FGhsO;S(0MDmy9u#l4&dc#;R`@N1=KHEev -h>b}xBQXJfyXez?C6AUZ#(YJ^+eF`u06(#!TExZdj1+9<9K>pv@^K>e24p0xHaKexIR==e?~m -fK<{tcyu58{O;icbJeSXb>M2jP1_ud1<1SY{X`(E!ZVo;sc%FE{G^V3`l_9LE;rfDQ7+1?`@r488osG -3GS?6iGR(NPq2W~%zhI+^44%)$McZ~Abz%H|}Yk|fc>8KVX%kFMWKugYE04e% --0~89yH<Ct)YdJ^1$;Xvo?eBf>@G5esRb7!+@8*Fp{f?jOmtFY_7Vc(8JR9)h4$M#YK%kn!n-sRf-;m89BlQ96pkJJCJZ%P -yY#{$I90j+lE`fqyLgAY@={rDbN -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 -=oJ1gls&P_P{Wx#i&U<;-q0 -nt4Fv$)o5xlD8!sgOQCXue^mZWH_x#Oi@tk3UCx=qx0v)0I2svBZRex1A+Ec5udfc8kBRoW$J~5^igG -@6qXbhefp~eM$PF{DryxFS9C40vY3;36fhiXP&GP;6eA4GqM8a}P&zJR;Z(&HhHP{sfX2?9HOn|0+d` -UB&Qf@l}*wm&PWyl!0UFcItNt{>M{1BealcZ!Sd)mr*hRRO8;8UpAg~H!)+{e<=5L05MhlA11_*iXQL -z~eiFxJRgAydC&wkAJvUeqPMrJf*@QE;^vR(Uc$!!uaOi`iKpQf><%x)asAKi9W^nOJO+yiwxK>x?Y< -Z|}JI>|(hEIG=yDtmB8n`zLt)mk0ac*k`wT9sk`4tKm&?UgEU-6VAT$WCH<)qsx-Nq_$x%M|89(G$7< -+c-cCXgbNuWbOAyZf9=VR7skNp;z7pa#RCo_%Sj}>n89Tyy{xz@ao+Qt(o2VdpPB*>t?itG40F+viZRg5BxrsTLSo{xkI+$nO~>rmYe1$@x3@_EE~zPwfE$cIN>VWuM)D9+U2yJS*>>RC -aFvhv%mAV$`|5acvtq&=(Q$6m6M; -G^eqQ0BE;yS@CN|yEg7}Q{m^LE2U)+R*3Pb+e@(=|*!$Pa;sR$81~@32rkXMBEoGSlXz7DdsTn;rb2J8>S=Kb{90A=Qy*|$HXB$n7+bQcHCQXp+d3pYh{}+sbPr||X^0(IfM^^TJQO`zpm+6p>BdRR*h -x%7w&@LYxJ4;9OZAtp6M;|fhHX7Wknj|nh&Ky;;E~A=FlwLc1gRxIcR%jyz5$k?e=uD$Kr^KYb&h|>N -@ITr-+{Gc8?NXNFk?P1>NTL3U3^{qsI}$W?4}8DIFDe)Re0%ufwEra;)pBJX^b`NxafgMTSj$b -q_4$UZhls8Ou5HWP~@-eSddm{87a5n95I1fS@{Dh%6^=aFL)xUt% -&qMzOSpV0D{S&r7kNekP4Nyufq=WG#*BuB$An&kjA^7rdvUp>GoTLDNL(u*utO4heWAqYL1_Nc;CW9A0FVMjN#B{P;DR~3&D?gu17o# -GIm&kd9FWLK9w4uQ<%;Jp(h$oXJI-Q}vg|+^24U@lv_2X~DdRMUJr#ILBj(VblC$jU5fP#bmyso^d(R -VTW{kkHhTeFI5U_LLqzfNyr6#7n$E^f}nQ#l``WoxnWbK4lrKZ;QswkJpu*wd#Pg}P`=Ji# -(5%9CS7|x-Qy^+D2;Km+Vvh%}RDk-bNq&XaikkQ+ipby#yQ;Q?}z#to_xRD_gW -{?#eKdV&w7!~xAi%6R}=!P9u&e>Ig!{9*-{o)w}}_hId$FA4S8E%$E-SHeA%cWES#U{bh?_cnd}=B>- -9*a?z0Yw@CkdK9*Hrs)vA_>(7pM}BxASvaC90cU}E@&z#+z8`l|1BKAPO;uzgU}s!D9ehQS&eeFLy5NnM$KKv-juiijMGL7%k6d;p$`2(b(N2 -B#jeKQFYtWja<_eA1eX}~O(IXq)SZm2G6z*b34THio#9Sf$X9f;I|B1C&1mN0TNBQ@w}=VXN_I@Q^-c --ei^azKbK%l-PneUwcY9`9SpzYy&5?k}apY~&=!+J1ac!HKjo0k!V4u!+APAct~$?OGrb;#|R=N5eFK9YZ5`OhojMhD&iA(RG^8kCWx!1JQ$GJ -YPHKZaQ!mI5t+{9OsATiVyNi)@tRbZs+Y}inGjZ^<7f4$7y|GB%Ev2p#ds`2%)+uj|zJokbo$5XTm9O -mY<)KFlBgp!kNQ4H~sLj -e{P{J;7tbxZIE8U~QN;^!U#{9P*)ZuVWeZ-UFA(!dw(LOzavFWxT}}L|@W;z}9fwQ74scxnXYd1>H_6UtH_p+qaQ_GcrApwMYoG!o*qhi9VZ8i5skuKltO -0Z<-^0>K++7#C+9&f8;T3OPQnQdHfD37YG3nOZ=IxKhk2Xy<=KcMmT*MH2(gyq%cZ5jh7U -`z||G(a=2gfe{+@8dVRvp$N~9Yd^r_)j{oU*DbEZb~$sRc4WFbZrUvy#9L|Ic#zDGV`dQKwpP-qe6VW -|xg?A(ZZ8>ngnO~0VjQ)~%-0>WY&4-~xf{OLY-^xQjBSokGMlok3b>f5tHZXzxVc%`!QSJMPVwfG%!a -5^t@?U)D09tB41Kl2p-Fp8VU>wYw-8dfSp~$=latC}h=aXFn;mvB&OCPl%ljkMd4cI2rPRT@qOI7KE3 -DG=q|iOgl7uNiBNnjz#8|Et@3-6 -ZiXmz7H9y%j{$IMJ17+L#5DLtQ4R*e=jkj$THC1LjG3+-=*tK_QyaFRp@66^Dhld6CUO9!@x9u!1&Kb -gMquf2y^**E3h{4wE6_UkboZ8uV%qO<$cKgmn4->&j*oA3Y(H5^*8#{rzGttPGuk)4)rb9ijr- -5?rmSUYD{G{mTkt^5NiSdi7x(y89U)f5mMefcUR?M>Iu3D42BS_rUp|5BDcNe>c=0b-eyX -OrzA2pp7w0&UBnCj&LGe!mEpL4i}g6k~M`ap;kQJMA4U+#$RQ*s8^~tpesWx<3+>cIBz_5Qc!T^t$$R@s@(zE8>E{0=rnOP|tXy*Y9@A#xN&wTrZAmx&3f0g%mfK==U*j73RmKv*k>R=@ckVSU8#rBw&gyX%tjI4WB2}}Srh1*gjdy6`q -BVY)CK7KE(WQE8L{0dt_^MqxK$(=v`M4EbYptC3;ouXoIu^&+z0biY1+;_65KVFTE%OgX(-ztE(BLDF -?T_%CypeOKmg4<^p%ZnQ2L7I}kYbWU?h*6O>R4C%Y@{y`dRX;5Cx`o>Ip0fDs?WRhctd*oF*jEMxvFb -Ujklw9*rT*`@+PDs+iS;8$Yqt`N7{zm>?xK^z0JhQ7FRaBqD>Tb2hmxaX1cGBl(B>dYPC;)x#8U|Cj}s=_tHMYqQy-pJZe8nb)oT}H5bAka -P2wg=&eecQ~s5j{sGxs-6m;^Ur^^wM~_LPW|lqrlU3^hk;|&Bv5f1J-t;QMWi#O$?E=e;QkuJT$}?t`M71oBR|d&$3t@QtY%otUou330QC$Dkw0PaG57EM` -tkPaL&|j?}y%9?1Sob$j-h2eDc?>}WoaSae5B!bqmsg$c7O=9uxJi^1{!%n*l!6FX%$7-nT3(An -!IOHr)}EA=_`L4g<z#CU@;&hPLeQ1_I -`-U$hTT-*J>{r=g5%!)P9Z|1ZYS<#Bf!2o6S4=*BWl-bqzIyNj`I7Afy2+Sdm=4sdq#8vo${f#@f;2I -?_~gT6F#?EJ2%mb@Ut6}d(HkmW{PyX~X^)W0xl0;4xoikJ6r|+Z) -a=a=1I;$At}AifBp&Yk#b4g8i9}{JEuRNp$|)rL_GquN(R!v0KYS5B%p61u!Q@@ZUL+!9wLmaDut<^At+mB;)94pxglic7LfammmA&+0oB^j#UxKjm@1M*&dH5}*1~M6%Fet$IZPK -HDJOdNq!D#QtQYIF@Gmqr`sr6Ocdhx!-rSX;uja_)uyyhb34%1V3g{KMaJk6uFu|^SQz7mZGD;Cb^_1 -?g<6%vQ^6go%W9#$S$vB_r;t-zsq(1{LOrnIej@Pc7Gi3Sqv}mcJN}j`KSc`&kR46IsFVTK);VKgic@ -T{HhE3ea$EsVQL2_mZ(lAL|eK-`ha!o+m$Ow5#JwYOcaA!E#Xvd#n9>^6BtlRr!{NM?`D=6upH}Fiej -czv~&0S42N*FVq+_lo^X7qp114B?;Zc_MJCfAF#lNRN$fq4ftW~`sm~JZhk{G)_eHcV_P(&%d9nhv5lI*1bgIhXZu?j%&SF4{g -x)Yi*P*TR5Gp&4Z)Do649tU*T(7wSDeLjPT@knA1!8ca46+W^NBov=IlY}PvU(%d4!KGtl4`eFcU7Df -y48#3nj4o@atu+e`wTBY9r%d0f3L<*`<58MiaUY5KsiglUX~x<_xoD`)xw`NOTn~avCWOATl`$A$Gk% -2!EA2(z{<5$4(`^(z`d}-PfYYv)Fa%1TP07mjSJgz9hP*KsK$B_p@$1Ei4H&3M&;O1ICqLu#NY#Sh1G -%;*!*PtqCV;?EyY3vendts-}eIHuP&y*+WFm~gJ;t}t^PEj4DYTGGn7xG#vjw?LvgQ-$Mnzv+0Xm_(I -Co6^Vk0I`SiKc;W|d5ZTzOgBX>wO;b!2JnNQ|CD&sbO_NMb)!>LC{o2Vh5NdtP{C;Q(}lcKw`X&N7}tpT5;GtBd)GW$V~sIuw88FO3Xi*37SX~wx!6T; -hG(pIT8*E#XaJWam8>fs{`7#K@0)=p}^WJkIhx=sZDJmi1ms3IQo>dO5nboln9=lU8Ah(@$VAJcWcXcXzMv -R(2S1uLFEpe`7e>pnHxJ#BX?2c?lOLZ#T -6No;fw7T}{QE(WIpNftAy$)20iI4P)(r0r@`S0&cHj1e$ZGeFl#YUPOU*WBgoguDyEF35G$iX{+#KXxr5OV~siDSt9J58Z^JAF>eiwKi^T(%bs-%{qX4RAqfgZmG4!FUW^j6?P -;ZoI-#6_mm7T9OMyb -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 -(qUzCHL*AgXo*&Tfa! -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 -}_oD>wY$GK8npQ44qQP9^>E8x~hUA4O@99!ZdP -(3B86V792Strp05%WNYR^T2ej6~b>AybeH63bh5R?$1IU}ty17iH)bI%wQ#j9uXN@{r?&@-wNPpCgJ{ -@A2+KH1Z-Hewka?KCchu&5G|L+R!zBMn}9lYs?Zwpo78f3qToWKB>!6wb&$4%jI44lGg`?1BEf&ld7N3^9V(Po-9rXa`>3xMk@5nA0H^-Yc -=KyNnCoJBK}ymxZzza==r!F9D5w~dp-Ah?u2L0!8GXQvVDCvu&dZqUSt6af9YV@>Y@PWRJjwHhW7ipB --6z4e96GiIzLGM87mNV(T*#XBhq&crJ;Pd_fdGpfFqZhG4DPZh-lB+1+<->D?}=f7@;V6Z82$Vp}^;| -l-{8`+%yQDn8#ICC&iCTsfz(>z;p(r82{i+$^ACLR%oW2N{4cNMM)w(-JaudbZFV}#rndcu*|)EGoYm -MphxFu1VB&-Z!eu?L##d;FY8KjatB`U}fEu=;309~zDuwPmmb`QIQQf(ToR2-QQj_JOLq! -{`gh8ch8<7X;dCab7UlIOE1Hd++^sYaODQoDzBz^PS<@w*gEx$GY-Ta(Z_{)vIg4>r3zu0?!k89+LT= -b_y($SVD*h(Da9)HtYDLzED5F91$t -B!17f^4|}A-j0Vh3^3+;Fo`x?01!gpbFZBUPDxhco`23bk( -Y&h8U|gcnW#O#4f-aY+YlhzEmI0%FBXaOVg2bzl1<(7)Pf96GKd`eNXG -$2knS2TR%)irp&fm2A81Qk@K7 -56^}t#o%tr(InoAtjSTeRo>9+DSKDyY+M$%@1HRPXNx3VP?D*Jr9)NZ)rIKOrvSzMDqXE_s^q^K%=u; -E9eAtQi2@_%-9hh8yj;SgNt|B?F?^x8dQC5glJIxX&rDx=<3nck=-HB%1eC9Ssjy}M*r$$p)$wqQZ3C -*EDbk(rnW=|&%~7FS@OAkB{Y58nKN5X7YICha#v*{k%v --!<+^*2cuT8Ry37i(Zm4`wR$_W-`VggQ3s#?%Wl&0$}x}=~yC)#;Y4BI!CmsCAu<4s2f8g|~J&va5V#rsPru7`u?yXwvC -08(aOHSQkFv(e_c-Enuni~h-4&$8_I>J`6>O`ZPF8izD-v#so(8z=q4UBBVL$9vn}-}Y$#j%3EBSH*1 -Vlp(wYD>SvGhl6NCgUu^w4{_GjdyP=2bwT~yyJ!szHjQX(i(S_BcMWJ_a&IDIwgNhd?+I#T`$O*G4!J -MQ$<}TBD>R_Cp0oho+nsk)MU>iF1lHFnWa~D=>AeSfZ(7>`DBi|n;E&Op-P94^^T_C)mEOV^c=vl`c5 -M1<+h%0%krH&23ZS2eRe>FuNUD#F%}ScvAAqM`_J8R1b&<_CD=!5z47FU-lxg1oXcq_Lp2 -+Nc)YZr%z-C@J(4up$Bx=~y7>+Ot{0@0GaHu+;`sE8hV@P9c> -mJeRL{NhIRP*o8Ztb{3(Yz|&|)KIw75&kT=Nn -?MAcshP;EPGOuG{D)rM2M%)E_qlTpB#6Db#q$wnDU3#{gA9M^-8B(z7SNvRgi$iGi0Cuwtg8k)w?~3L -u`x9~h)Sa`SlTLL0w3XHq#D&(N79LR4K!b&!hPZONAe!Bj9Uzlzbpz$|>d;6)fHeL1w7_94HnX3C(asjXC -6r;^TQ?3jebG9Ug$~;rP*R%KiN&nu#K+$I*DPa3dUKUB1Jy!ji|C*p|E^4a6IyPf6q(RK}S)gk>QwpNxE -2;(QShBbQ!f3HA6dP&b++(E_yTspd3s -?$SD$mnQ@gCUUaTmYv|S4i;`%h6fgk=8(unWQ#rgs -t{VZ(U|7t$y|g{MSGYq(Au_{ZpXc-TD3vP;YVoU!@^*88Ip!bLZQ?0Bhj$=#ra -s{BVF3p^fl_Hw`By^g$EKg9*ks{0?MNOwH<^o^>Fqu{j~)wj0wao-fvQ_Rh@1WC&H@L18rLmG+ZEsye -+ihajZBU>Of{{Car0PeI2nfbz7c!UUtVq7z?lp#g%5gMNBXDW4XY| -mY2G7Jgu5{kXg8Y|D;<53BxYwhv5IwdfS>&d%O%g{$(dC!Aj%QwrTLT4Xu{q8{Bt74kQ62L|SN8jOVb -fSPCdzp`69x|xo9f7X8Y&1Zh(!{{WWQjJfG?-lj2&NR -oVz&13U8Pa82JS%;BR0(Ej%{~Ke_Xrjoi-lBb#LpoxPQEISbFngVlWakLk(p!5a93RbP4usiv7M<-LW}YcoFHLrSGOD -A6QjUu7Wyub4QuVj{KkqFCX%SApy>L=PdsRm(aGSCOGqeF=N%t>440)*~-R>e@JTk~^a|LpJuzs5ah4 -?-Px*4i{-aAdrYwrSJaDqgYrzGo@k*@;pBIyp*Dg#PF#TP*8O}Srz-ZIsHk;Zn*z5A&O;T9HlHBbomE95qrnfkCKr81hxOg?mxly*CYHh++Oi;g*z;m~O%BHu#Ed;tc5LJzFcTuaLiDB%EyB@-)8J29pgY*PtBPRVXO*KLNeX@rJ>6Dg@sKp2 -A;ESFP6rZ>rMUjP45HF}@A^rt8kTRnvOt6}qv#D!BeZ_pY*(+-jKH$>Ij1@`nsr6STf#MrW=LsXlST(JI^rh8p6=^e^_pRpd|l9&=SL>!Km)GH>jv9CG4b_s(OO`bZ%mz@B$_Gy2r`$fb^kV8qV -cWqeda`?R{3d9r>8c|CBxq?%36e8Z+*Cn)#5^l -#y5-0wa~v{%V%H1&F}2Kd*|$J@9Fu~j8{w6mR3H5;&<4Jbw7)$l;$LC+dcXsV-V3V%Ht_xxcK@9N0{a -m^sndK&Jqc=wi&P$7hPP^7Y!$oEMnAr*M3!vRd|wy{P*z%&d;C4`G)$1VLp}0GR2^V5Ihq;%JSdzgcL -$^4uIroQ;As%A4p2AYTz;dN4X)^ -v4$=dxATu7ogxGs1ic(8VW3@ME3h^x`<8Vi)NB;%&(EJN3s%>-S0J*@N_dOl)Z@Rfe8q+F+>oUUeZJf -V5X{5eQIjB=xx7q;K~B=A=h&RH(hBw;!YG3B;*rR>cDFCaxM|X_Hz+EfS6Msw*E#d@NsLid+!w$iACuSzDJ#ineT_Gk%F8|xuZN3{fi1Y5RBqP6V_XUJ^b*Des{jzr(--e~*J$?_v?HZV9o0wY}2eB)2Bp;5F=!W+(xt(&G)!T(e$aG63Y}ZVEF`!^}V -zP-??MDgIi1GrW5%YlyBDc-zygazm_f( --#Y(oR<8Q~z<=`q--M^uc)i>@h8BJK5T5#YE!tlLwio}%1vKL)87wRI7|-{tXEgr^<$(H42W$E!S^1} -ml^1+Gel@z9T?_c`$batuKXC!z&vZrxR7NWIM7q#I(sgt^-P=_3xv~mvYtRvLf&3>><#_3eY%A{gI1)x1WYt+iZKy49sdin3++Q$V#qcQ0OMS -qlN#VshLItecq77*7csWfq;>2Rlf&vP}v<9R=Q^=bNqo=Ayx8FqP2=;Bj(b+}&|Svpq^(Vv6c3JCrZT -@Xg-#&t8(xfE3N&HxFNrdx!^w?e_>S6RZ>{HgCzPR3 -Ldz%@*Nt|vu@P*~>xwJ>i(Xzq#8iHf&J6dmVAl~n9W4P6~W&2&!^XTg}Iy8GBj(E{?z&DI5 -Fmev6{Ft6*i&V_9ycD%ASra9P%J*%nntJX`SGG`+Y<(yCCdHhNnDs=Pi#iq)*7+WL#Tvf5=|W$B$si-JG -BY1#);FsC@m^mWZaIfUsMD$PAD@v((e5h~u|Dbm{KoxUbN|N=dR5M=%zWw?# -(UatRsrg23V1_a5(eb?h#Xo5$t>J& -;4$MQ6#4ObafDM$Ie)Th}*&lxD%a`c^ -lcf4&uAI75sqd;%yAbZ_WhIc -BuKh3|5p>E53~QF}`swz0&OmIlO@5sL6Vwe**sB2vGh00DmGZaim}pJ^NZAP}(CD9jR`fK6)iccsnmS -IFOM48IpLbX%;x+vdY;=))^SFTSK*3USg4bEQ=(_9gAI>@9O2ukG|p7oBhG8Ssy&){jzf`!>K&YtuiP -xnoT}0A&4ntXP;m2DEVS+fl$3wJpcn-GbEz**z`wx*T!2*YBihwP112{XiKAP~kH2s!c2Hm>V)yS8Ay -scb8L+R4`;jf5_9pZNn+Y_^j)pqy(w4mAgrJV!9?v&^?9%JAepcB|guk)YPrr_PeVXi;1XNWx+v?XM4qdg)0<6tMZ%M5QgJ6jN`j@K2&yFnU -#|#Ib|(w*Un;B#9VTN*9%)r{3yy+$W*$c-lwR`%1zRw=&OJ#&nA8p7a&cP1f~fil<$x27q%%$`k&(#hXjtPKf(MU)DXnM{Y -3L%hI#taEHU^<4QOR(9DrV-F-8mCh1bnGiMyuU)z-tB<1ADjjE@$g=X{lCarXCc^y@Oc^6*9oca(<-M -0$NE=4V}66K45!LT_SW|ecA>a8C>(cqLi%}N2Dy4d?hJLPd@75y)(Kl}%4{N0%J$0qjRE+6QNI4+uLJ -5(>A085)UtCyW%;l6Q|%}PA`WaDq!l9KimqkVw^eqLez=>h}%yuy52V47bpZ6CvZ0)CK6GzGZo-LwxW -K90_C1AW`_&!Vy3Y$NaMLg*?t3B!Bks97&ZkonlnuXiSXzdS=_ud1;;fDFnFh)r;`VvJ**%=a^Pv(6L -ds7jq4ZA~!y*@5mTH^!Vr_&Nyky!JHQ;*96Ydfx)61U= -srQ37xk>4ND^_$(C2U3+3nbLz$=P(JaAyvtC(UmGYrox+T-1A%(Dg9j(Wq+cf@mp0u1h2lIDZZmR6(8 -Sn!5n_~_Sukp=g0!O1iHh6xVh2=S%FH}I-@0#Ju6&I{1hMk@NlDH|H|Lu2=2BP)__)hh(w840ddrBJ|$q8f{_*EAb+B${6fN -Ov3HOZFrB`{z*`~$=g2HKm=RnZF7-}w{eEe-96m1g2=|qw(i>Tv+v7ZK-SHY}*M1Qc;qcOLe$~=SFHW7#)#Yd9}}Fn~CND<}Zuf4k~ -H|MwSWph6C{Xld|t|j5jarOq9Wr^!FF7RnI$!^%RN~(85G2eQe|eWCQKCU`j2_6$(+3mpD!fCO(C; -9(!{wB{GN3s!op_rTUre;-d}Jw~?gkJ_x9j(XYhrp&wRc=mx2klR)U?kR+G~R3wx>KA%KhXpTNmkd$g -~S+&!90)%~flVtp+qxIv2U$m08Y}Y#7o$H+ikA>E(k?gzD_>90E%5*PYRe4V$r5`qZIK)K+*o1fzsU@ -ibJI#q2Y_)F5Pau*7^vaDjdp?H>^^BZOcj-hrs~e7KOfn)T -0Eq2k|8*cE|f1T`$VP|su&i)^P}1ytaTNh(l1!o{Krze8KTqE$I9$De_}l(akK9k@K%afB?I2BBJ|uh5cBwW{5~_9iJt2HDz#=jHfe -9)`)Eu$qQ(eBpZEd(kbB!k@mDHlE)+%O%tL?r$klk`^Lkoc{^+rb)zNzBvd8|}#*I^#*765!zrS7R_( -3Q9`)z=)MGN!7F6&w+O~1;9Wg=^nXm%7Aay)ATgWlZNtiu5Hj-F^|gni2kXe^j3;iPDkf1D5`bLJ$kA -zxMV_A!v$Ox(sYDCDVBng@!TR(?rpAVwM-p}_7wEbps-qPZ@#VzfJl7jw8^&+a)U-uym^4-!@L32mhY -32*mx2^cQN%s9pXc+}7l8gY?qbga~#2b5aQr#GuH1M)0Q**Xexeivk&bO-DR6NwP?+}nrjdnKu_R&`_S3hXbKiA2=Z -RRe#SfVtY*XW^6)~B4_fk;TwhPRY)WT{VJLi_h*uV~H8}x-&xvC|+3FIfZ``F1g!(2GvdY&VGak~9a7 -N=)mrhrV{RD_lY;O1j -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 -rs2|A`9NV%KWOlECB>=UF5_n@zUVrEBG{@B8Fg -gQMo>6z8$Fw4=L}JosNJpW-+j@~&wyiB0Ha}!jg@r*lMBWTgH&z@&@mWUB7}D}HD$Y7o!JagaR*=LX) -OiALfHcOdQZ^WoS6Acpr^F6fLu$_^oShaJnP*?&%ld;iwe-G>{Pjib%JWAyM#lKAp7okv1t7< -3X1){d!jR!|0F7MY~#28`b}VMmT%hUZx@+gam>Cazd4t6N6Wd`D^~Sm)0SJ_?cVp#|3J_bc2mK11+W~(#+-IX82u9&3gA+JP(>O^pG(jLFMNkyEDa#_8)GYjIR2E`eAKoTvM{V9l6VH^_5|DJdK7FkBk3Lot^dS{Ev#E%Z_~+(Hu#On6}f-iYq -*{oO?P>RcsnS%*Q~cdk=P9RFmjWYT@Sa?ffexa{cxKN`7SV#?BOLz@1}jbR^W$2;1;A|o4M0p&5K?)M -1_NIin7)b*K>qr)zGxy`Pp!KryL<7KAcTzO_H!e;;v+*JbbcaF?xk^Z2r;J=&UiJwBz=-*S7Bq7p%**{h1%&x1R&gZ9fNdk`~teGD~U;m2nRhGh3Ixc9U -}0yRyGvJ@5tWoj`Un*EJ-kvM%d)XQL#s5)V<`eW%{k*|PlOS`Wn6y+pX%JndtC_KyWC*R@V64`-GrIi -_O_(Syw#I2OKg0pRbD0SqL3@u0S0brp-2ep}h&fwS59nD-{pk7Ym%bH -aL^Vhk#=>MY*NwK5`_+8;Kbnp61Pm4z*~utpn%LFsRSd6gKjU)1Tb~mZhp06=8Np -fxT8d|8#GIF;oWt7cX)nA}6Gb-xsGn-k7AGSdS>~6bzjqgIL1s!Ma^n=(!a0Fs_f+@pxpJGd`c^@ -a!KYvGNkA;RF;TV~OJPiz2y@Bc+|KVoOb)?|nC3e;9ol3C^r3*L#7|t_dTDQ??*&|PadFQyLpbz?+?s&<9rcgdVRDLI-vWGO5BFV~ddKQ#)u$O7~HoJ7*^inlJc`l(@O-_hRo>&j{ -~KNmp3&^&SCrqdw9Dt5?TnUZ2e21*j2>6d^xoT@2MWev6h%o2#uyYu5E>^i1YxL8g&d=;{8P+)&K9ggR*=``0Q4SJ9j`_2X-%3UCj|@_P|A!=9?1VquSZ)k|(RWR>&)U>Qx}f$?cDN -e|#?MBZUruV|d*E+H)(s(i43ku7Z -YelAe)Ni!bqI4+5{VVQ4keej*o#*F{#UMNY^lPNonM8K>u{eyPa*`?G>8`Pu=!FR)aI?*yQP63V-Uz| -PV3n8P)?7m8cq-(v5d)1%&aYRC7Im$1-IdHQ%ED{N^O%)OJ(q@+f%+nra3@#Rke2e|<^8Rk>GNy459U -h+gsw=>2|;t>9P<^?mT~x=K)5M_-niq{0?T9xbGVmJ_B}35Aw^Fep(ENu_b$w#n}No;hhHn7Sy+x)=> -L?tR{o&=_`Lxl@U7+QAkEj=4-eX1s9abv7*DF6$Pw-gNf*s8!c!)r3*C4MSga8|Sx4_M@V)ZX9|-A%a -a|GbcXnIep3!4{-MO#NjfMGFt=jkmuo8;tE1@_PZ1dez>&7R3Pj`&Y?{l}KE`Qw)*f!+;q&{m+*sPQqZhtPS<4KHHkQaJGg}7z#ZN{Hv`YR&mhi?U`|CwN@8}IhWFz%y$r$ESPslYfYk&!_0icS3I*;Y~-(1x^BCB#dx(c#uGVKp^z#hfSK!s?PdV_c{MF)6tcoBr$s<*pFM!T9kKV -t?bFpH;$xkSy6ZYMmCu*!a7Rt{U1&C$ImJ>EdK`|E?ctlUWb2J>>s?m`-7!X3dc~I`pF%L-%nKLxBqJ -H`Oh5x|9hADB(M7G9KXEUZ=pvK3?lt>rIkt;09i+wRW$$y>=Jak@;WoXWkAC}>F>!a7MqTRA6b0nBdH -&QA~B5v6n_kZ`T>QmG>`}o(jgJRND=*td~!JjN`SgAg06~!D|YCOWHLinS!wD$wUNeP@F7Sw0N)6BNG -sh{9D|hq@)?Uj&G?Oki-ZBfD*kPnUmQX0lyrXwJ^GorVljT=4bu4YhfPe4v$hz^-LROqI`j^MZ*evtK -DN$&ZrJ&(zl@i5$uZ5+CixwX1c}eK`N21+^~QIRayiK>bd!e)*c@Mr$>Z6N7&|b~qKMqXvg~O&1R%I8 -y`$^Q0Ft}b2ZZ<90PqD~tE|mS7v5m|`VZU8??|i`58*Gwlp;O}&X_sDU-fjB1+_*Bc?WnT^@CY*90Yn -bbwQhtLi~J-&faqeKjn%2&tdCrfZ~tESGZ}GJVEkj?V}RH{ciAq1matx{tALx?!_gr-U$4b-rdV`H85wiUUaqr9!*2CU4`5&`z`C5YL-z?9M?mY}4SVT+9&bTUJM7&Ea=W!ZgbA<$2J(5#mY+6h@$q`tmr -RH&$<7njNJ-9&tP2CBqU&{HmO8*|IP%?+Llw@G}r5+AYRiegi+f+k07KePHjGZ(&-d^3FpAbTgMHui- -bj>ihSfd8nYz?;fpgQAvz(9gklgni+im@9BUaxT$f%M*1_>LMSP=E|RLY=kJq;v@D9vFNzJ~o_G1Z#q -ReT5%`L0_Jf5MlYV>4UWnrIl%=`(ynK!dTj6)?w~sL&zjsjP#^M=~oV5SzHD1dfB6s;_dXvk(7hZPaW -WP9&9_!yQ{Qh22^9E$7H<~bg@j_&7cj3O|Qn=UGH3RxwG=P63Y2Vzy0*>727mbkO@-i*1QANvP(X(ZC -*izS%7Q)8yNj*=5?9k#(zaLs3zD0*nx<&+dWq0#+6Q`N8MawuypcZBir|@|&&t9xH@D!@@;W3VaO3x( -E(AxwX_L<#S2bpv)uW85ETdU&pBr;yC+T6MZJ -K*YY!hG1{}S`l!32pI5fFTXB647HX%XbQM1^y(9(Fes127$EZm$`-$3+ybQAF~GMW)SAvn!SKioAfK1 -hkt+^+@k!#9aw16qzt-a0WGP_fW{@?9f`AIk;@(gRsHA`fMHKjB^y1_szja!ktJ8x1&S_!(KXqDu5;} -g4e!c1%H_+Fef7IuD2UgquQx`;hO=`U2AGcjN=4W}qbzc8wTF`g%`Zv>pzMI!~(^}TlzsXO5d7EQ -~c_A-^Xq%2-j28>~FsXC|Q%cG}4&+NSGbcpk@cNYhhpDA#7low0)45#cCB -;k!%*1_Ynb(0!9e(n%5JbRZaXB_4c4N2Noq;PPraCqo=R|$; -h5mF2Rag6XB$nBttsP&-v#v_wkX4v!2D5m>Cb(hbJ$2Dj}-m9DE{qU4wq4S8CuK2syxdrrs3!_c9*33 -2b=FV+nv8Y1`R%&^k(I -=^vviH32}_&q0~KR${7$^TIDw|tDn@ymPQi`kFf4Y9fm#{RqafQ#NTD69xM0%vJEcF)hiNin$Gk01Op -L`@W@)AS>H1SD`i^EZ;VMg`E%{uJogi+^!57q@ZvS)Bv=ntM43!*tEAqQj>qo?^qcF1EgdRfg-Fv{Cf -A!0aR)&tkpbq%WD*)w2dg%3jG7558=-XHU&i3Z2!gX_D2l5ct&dWU{2j6 -E3uY~Ti5jeTb_xI+sJKpzY9dX4HN|h98jqQBpwB&F)P>tes2V_f*Tl9joW@?P#axWEk4>?nHGl$XL^@ -ly3TJ8Ddp5Q=sV1(X0bMA1g3BMmC^Dx2HEU3%FEa{mozpTa4vUMzm(%6`8o5%67a}fkD;-}kOPmyYKh -HgIdYkkYQ%w5-O|}s0H#@gIZkkxyZjSLWAWg~gf+Pvpkg>uO{cmzFdOE00 -eEmadUY9hVUrqVP|L+al&i-G2*x~Kbm%|v|=4%-y&Ej!<>@S5?^9qNkd=1U55A*U5B^&+=cpN_;bp6S -j`G4n%AFj>E(Rwq4_xa0}zL6#V&aa`#71o}tH5g`X2#Wy`0uh7!$+A6(L1HGNfXkD8&nO-OUjaZI7ax -eg04f9}fX}fwHOof8O1}01U=c`#08)euWJW0Z&zSrbZhxh_txr0!6&X+#DHO3_|a*A?An3t{j%)Lob0>LF|Bv7Usq(ZXC5)SyM-2~1~=mY=*QpL -#}}tzclKQZS(Ydm&@VnxcW8ar9K)BmSP$dF0UExXT#c}{3*3ZAYo?X?LWuUeS3GkZq*&bN*}k6at+n7 -vXo5WJfCtMqU>yOS1tPJE8QX8$pk?E?H|L+;8|YUz=bzpi=vO!ApWYkjS2yRE_vT-5nM#%>P=m$@aoQ -O!j~=5Ul7uc*od;|eq7aq>^r|om8C>p}m@0uh&M_ZFM*`{Wy^6(|eno1LI;F#_d1b+C(`nbss54U*2R -F-O#B&K@nHl3MGtd-KX&b{i-nUVG;GCmo4{haKc#6ZhlYNPLaeEn`X3A}>TXW*KLp^nIO+#)jY`d`Zl -hcT*0`43Q6yg&gh-~VbNzN2t;dXWJu9ovE$x_P&y*viJt3-Q#X*62=L -ma)N}*|c-YRs(fbn;?IpOB{UDsof?uPpF}xVqZc!|A@5lAWOui;2V>~du6Cz=n;t}!s&E_j6--Mzs8;&Yz#VD`9 -2o7HSByG0)jhQ7%^bmrma7)B6jZ_f`T!RR_SG%)z*H(g($M>EwTw*5!3pXJO^RTd&vHMCWvKOEQ#$9q -*W}CZ%A>s?|r#x&8n -2U-;rOZvbg9v3l5Cd5v-K-d9b|T%S{3#uq_~%Sf+Ha9qx3lOwO*1Lf)+uwk=?z1rHKPK>tMs`!jFG{% -78dWt*fUe%)3+X5>(^r{50z@?9GUXD>rV!6@E2Y{B#J7q9O!_hcQd*+UVk-`}O{uFL1;ip>1Ro_ii5c -h^Szdhp^=|81%d5Pd>FAfVXKE+Y9LM%beY#!a6$EX*B=#h@%6>HWOKc^I>O#Wq||oN@zLKWLVyBloib8R>!J-B-D9Ti3#3p6U3gE>nrzo!dB8mcZG;_Yctt1k4 -bIGEdsgi<9UTLq>FaD#g)cz`>Z8*8GG^6Xvg{$P5Yx!%i2++`CPi&lNU54vW>!j4uJB^ux>xoW4~m(f7|VoeBe{QM!v350+dl0g|7Mo=8ZFbXGN1ZRkEkx?N6`ik&3 -xx5hclP*pv3I&OpVI!2irJz@|W~6#qb -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 -qI -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 -!HnG3-BvtXrVGv-*T)Vj4w{i?{05!{)Wld -n$e{Vnm@yBf!uKG?~!_js&agj54Z7a`CU^LYwzokjydxnVSx?0c>k&rS1Sy3H)j=UU2cv -*1Y^<%wpvALz2>B3r`ca%2=Uy|E)A#J1;N$T!erj>1Ja1t?GZ+cH1(WGW#2Vmmah&;#GyR&`ur!GLV{ -r8U9#?KI42OXRRj8hRYykmJXB6K|`?xXYF|J!?Vl9f|yk)BzCd)l<-)%^YFC`+@3<`YJ+y|mdBo9zOBs2*phpfoQiBOB`1)*fT -|pp>`L8YaUJ>E!vrKI%A?qfGm_j==YGsy8h%#Pt6rg8EMA{Jp=(SIS3CC*Bca(f=B9O@xB4y)#Vz;k4 -9cb}T^&RGP)_-1qc26iVcwQ5@irBuO;u5NmSgnpW<`2JQu0B0^fl#`o6M%~G!@s7?jl)f>`}{kWUS#v --3zX!ct$f?eMWe+-_&M9;^I&p2Y%RgnlvCK9T7%ACHl8`rhyTKR2HLofG}daQ=9bAG^;Pd@-5~!O#qW!Z?gkI71*bhB73!m`EGP1qkP3g|;cQwMEkHv4WI*R0BGF_u4 -U)Ar(zv`Up@Lz;O8y}|EUmFL&1fexbQ-e$dzgpeq$z4TYG&pR~b0)ea%pc?)Zz<}4R(VBXZ#iWnW14z -Yus%ri#wj=y97NV!7onqS!l6FhzapJMmm_wza3iVi3JqPiYps~U6W?y*hyiJ7X{>nN8R$eSMDW-sBW% -2Op@hGRZ*~=cD=0kOZKHl}1f7>+-1>FkL$x;%t6ir5la7^=w;A&@URd6Rq@em -SyLljxfc7Kor6;ew#dbkjF=h1guh=uXPo&*FCej6B1q~9dl@28}Tap@_6m)!Y$;xIx#GA-i{mIVmxs9aWRbFCWe=GKPXfgQ1Bk`o|Xmb*BQ6GCWPH*i`RLU>)@zeJ)!I-Iv(3&yG2h9!6rEblgI7N=?`?`9&zLZU+NQiBC}}NN10zoF6S@x3eZp^Xr1|Agou!Byw>U=Fje{uQbPRK@D4+x)&()%$#zFe|5IZzwCh4}frQSMjtOw;6R^x#IS}`nEGSG-P_G$+?jTZ$~W#|7d_tY`f_Bh4==8qm%#34>w+h*7K0Odh>R-)$U!L{Wq69 -&jR;S4+38-hqIHi;`Pt^Mhr`NAi&`XbohbRI*p9FEO)B%^EwBr3ar%eo{2#EH|HE_s&3yjyd|xdoMi3 -Yd!!SkS2)qQM48l+-PGK;G;TS~&y=nSe7MJ9$hL8e)IuQecWMKZVm5PM`vQ;qwEb3w(m#FlkQ|#|03P -8-V_L5`RTGU{GB?}YKNWNG>X6+AO&bq{qNC;>T<5fliC4Pk$!B=bt0febz3^26Bt2h?G&r`r=F5&WWm -ULx@S!^`D@+yKF2n+&EAc+-$9yQR`PW?%*q%_Or7YmLo208n!Azc}ryH7@EgYBO2p>9;;@K~1Y+kC(J -Rq~xbEO7n*mLcsY#rR+{Ieay3^76Tn#oa5$oEflVfgbLi^F{pm9c+TGM)W=6d~Xte{4ZV1} -hto_jtB#2*aV)gJ}VxV#HN6Er?rwLnkdP9xAvA29;+S#X8{%{Y#=g(+#_W;5fkm>ke)U`p!_^*&E;u} -)MXxuhd@XN9}?uesbmTa-359kths0mK@jnWC_ov&?vM1!R -AZLYD-X@S7uneB5(?4R5N#nrQ2;uhV%XV>-1;(dKXC-`@+73f>C6;<3!=vCOLjKn6Ee<&K6eK41RABF -dZ@I;;rU*kd+`j0#RLQHb;1>$`kdYGQZ(CszLLGH`WEJgA;!<9Pi#%De!SJrUoy+UL6Ky=-so^|O~bd -lRoY1;XLU(-TRW%3238WrJ)PQ*!6$$`P4l`GYyd1acme(7Ya(`cisySAQB^6i$F3dRXI;z*h+1{8AHL -50N}wNsdDrhl1_Ss9rAYo_RMPqNHLYt!hW_a|9AU-Y8b -q4`s42h{Fseh{)17NhH-*f3?mK%qH&U@NEoM=@RA}J0$y{Ue^1BKph!=@(T%NzZ7c@R$&3QoR2Tz^&o -EsTq|wF7d}|P?H=raAP?8i1Z0Qm~GAPhYS_0R_vMqrhiUG2*B_NDZ0CZ$lFhCUjN|z}Ex!7eS^eV>$T -Cqb=gC|HJae&|;ZJZFm&?X4bc0?i&UoJZ=;{=V`A@~zPgKTcHN-ZpQdN~!gYBj{sZw=xV04Q&t07{dU -UB=p;eDtBWOly0~LRgvn-{^sX-#bAk`$zbqS;0}i^9KwC8tPoUYglY`wu(!JgmeH(Aqh=$W@kJ2ypVEl3?-5(MVLBlCpc -iOnvX&l*y2N68j(f1_e^*h3QKsz)jjT=y{@lwi2ZqZmKhL?cRUW{5Q1Y|gaVZ|445OtI^;T~{*IfYn= -PQ&ndelJ-eEopwA9r~Q`CGrl$;d~$(nmrN2jd>WDp27YQs__oH5r!#uZb3tHw&Q8^xqW&qEjfGnG -002wnj~0>nD(IA!TxqtA19k2`a>N?c@>Pu{g7c*> -kRHrb+YNQ*>zltA{pc1;&DllEYgCjP3(e8vkkuqxa`?DY4dI~Vb2J@8bDpLV@YupKA9G`8=q1S+`oxi -zyWJwPHr)$MaXILE7<9~A=0vHwrxjh5l@-%qqUYuEc*6Zfg#VhOtkpUKF2;{Ms1&jsHnRXR8g -DqayQTaJYux$&oIuz-Xl2xEdyP|;Q)G!ZJ<#62jBeH&w=5;JM=UD`{A%3#f(vgp_Yh`A~1|$mLC|g#C -s@7G9*F67`4QE1o5qyF#-(OV%V10Yq2PcNh4rjDv*`U1JHA&z^;%P=o^TMZ*5x=0s{Fr$}M6|VPj57ozPM7eJ`NGHvQ2)s)9fSe0 -&iD;_27`<(Xj_Ou_I3#rVG2kx|IW5qz_wkKzr>7{&6Mlmz~`VWl7qMWRMuVtb2p@EQ2gG^2 -bYB{LQj%+14(h%vGfO$9g5Df1 -7u-_|Dv@<2f}UlkbTi4s3bx~)O?8#b`RNT^_p)70zHJFNw^PJWXFYsSyDq*KI1{Kx?Ky0=^LaNx6c@~ -h74^s6nJ^fE-kL>hoc12cxM7XM$zy1$M;!SWEjsL_yQ4MrJe3sUv1NSHLjej?!>FIvZYV1c-<+A6*iL -Nq0cg^BZ82QG$YHJ^C+KI1njiTsty>?OlqyLiy4k5$$=g0TColdV=H6t*MlU)EAqf!Aa;?rQ)S1`p{`b9#4|k7@i1f&aJpV1LYnB-qi39q;5o_(e*IqlQtq>o6o;x|f_WeefW=0>!wrCtK#hE6wO?4w2Nd_wGXOVK-y{PVzl)I*RS43EHKRT3A*n7t&lbOz= -Qye`{8)CqU;{(N5;f5q)JJ8Ql53z${v)6n0A}sP$SE9@jf$Y&4+w`MwkSCA<^Mgo_pRLUV@ov*MtwDC -7Pg7+#g)?N+_kPye(S)l5j)Xds&<8QLT1y4K%99+nrK6$i+_fDfQ|e&6>K1o|(W;#(y8|eU#6_Nn^Nqh~u-UhKO__l;w -zzaHF=cFL(P?i{^5RvrfZE6cpF{^@wT6^5kwSc(9Q6vo(vm6|)$;;*J1Odb_c?z1~NEnpumQTu7Bkbi -sa&_a1NsvNCau84A@GlLoco0<#e<-5`j|}-ols>TPj<8)`x-B6Td-&kX& -fpmB!#_Ns`mxK9YF34i%R^P3Zfs#5&5D3W_v-c*rzO6pu+!#n=EXGGa&jnD^QOGkK}lH1j)DqZ^2*>o -Z5}+9_5^o0@=?dDjf5Sp%2Pk~{EhMF;*2<*jvyX`&z(1<=_4AoQ?v;cC}%6R==-e06XxopxFN;-ecW- -U7lz>7b(HxM4<84e4a0%Fc9NII#U*DhyD8zj8jqmpEb4imQUp=?l@bo)afn^b+z=_hSLO^K;$FU>OUN -o5UPd*x_V#+wSY6A{NL-5Q5sE60&X1=~ZzDVD4xUlQVtVk7SISJ=A<$l5r;{kEp(@f(vxa|8F)H#$hE -TND3?U~eTpu~e0ER83>!WPfP=dW@&E+=%ugco7A=RTd2D>$u^IZ_aaqN-P3^Dm(pzGrbeK&dVeV~1)d ->v|EecLr3o{S-pnS11$gbuGy;sc6&q7F~R$AGl&qD}s!%E$9r5H=@&Hq2W&OH`(At_4+mC0x*-Du=s6 -P(7j-O5+kS>&wM1j9}xTgcS4_t+hzD7-N%R4jI)9lv_iVYHN5ZUi;cbmexK^Jj~xZ9~ycZd`gOh>2amduP-x$TQF2+gD#pQvWyeA(lusa_6ttDTUJDyzW|%+7}Td! -jS1=V*?n`yeG1UR6$uR^zBuDjeMPS@FNd$KL>zh5~#{`dc8?~b;+K%&@W^`pOD${OGy=r5|HFG@ML+2e~7{qsMX==IP4O#b13~+SqYynejvDL*h2SN5iFEa9%)ZqXEvX}DLI>c?$FZlb>#oh-Fr$(pl0p|6%s3Km_>6|6b6wuBDCCeW_w#mDd -cmT1*n)Mw=+46}#IB93YgGc{eq$5bSI}(!vIf(6e9zb%fi{-Ra4QE_d0!N9TM?PGn3sJFvW6S&h+w`7 -JTkjdmmt`e&0XcF*#y*&}wu+Q!n^mlI9XZH*GJ2&jJ`vv{%hW+jo3}^`%JM%&bwQCyV)CRm!DZcVJNY__0*E -OeL#=ckFV>jF~ofk4xTZq>~>fkb`ZkH^FG(>Ii`y)loQgFGHDSMwkjL!aHo<=81>&JvYPcJ@k74Oh*W -W=(MaI5XqX>)2qF+D>zc409c1RdkShhr(1hGVwTYL%lAx-J-?UWqij5)T -N*c0q#72VF%c(v%L=Z;L*vWJguc5C -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 -cN%Oi~D$^lfgB)?QSYq^8%VZHMk@t$Wzik#p -6voukn`9W%$J4;8Z8=C{}7EF*nsZ==B6O;;CUk0eWryP~nuEKV@PA#JIO?hdIRGXLop`Mx-)XCxxM`u -FQfk8?CWvacZXN5}fx5B?a5`aS%76>$jVP~MjV!Wj6MAW0NB*kBY*Q3%T5Fav)IuM0vY(b{~mPJl}?P<#S2UeUFm5CN4d -WEF{|^a69A=T?xl-C@nDU>V3@ybX+{ae#6-4a#Z^v(8#bK(2;NK#BuQo%>lmj84G<&>ZZypnQUWA#e! -{RI^A5uoWXg+J#vSabgslky&eI3lG#fi}=>=Ja@UWvFNd_8d3$w -mkC5n$qavEc4G#q8!|RP|a|YnhiSf5l`HOdd*4W~0i?b0P6xD|FCWqPu)7^Beg5#*ytCA35xMAGu(J% -vt=V-4O(*fA5|^Ki-tTdrzPrZ_3}jC(w^K<#+DMx2hEA7cO=8>p`Fj>Ed3Dtey$q;fDsRaxK<&$ajWlp|>6*>0a?j_mo@1vy+7Mw!dW5`ZQ7wXGp?rv!=bnpZ@ksD5_TmNlQ=GsUQ$cD= -ja6XlC^sE*s8%QJ)bFEibb?o=xe>~Ka(5_0P8E@Bg)g56CI7g#LQ$w^J7gu9Tl&b&e`Y0R56YR|2U!9 -AZl#w8T<2JM^|gKLm^voTb8Dz13+4lUkA`JHf_AmbyS&0zLHZi>q}xomv!l -0OM~MfrOPi%t3P=>YXKrDp>?)#vW^7)+T&Qq}!z?DM%Ziu2u7;%lg=Mz_06Pj&E->k`DzdSfjoN||>xDD|>Mq3vyAv&_GXGR;)egGjG~Xi~;mR*#KY2z~J4!)JEc7^6d3$#UC=MqIXKMMCf}6Ko+}iH -`v>g;=m@af>YUTEXcIoX3}hf=2d$VHP}&gG+I5Km29Pg&CHcHLXKj7~UIR4H(=st -o*aCTM4r~aJ444BEBp^Rn3VynL4vqt1Z}u}!ASMFGFJV8Gt)_S@NuuF3hF>lAmS~?@t&A3Cl&$`HtfarDDKKb>q@I6d0nFaMlp#avkDcmO<}BZ-&&~A~n)0eXf#k2vDh -nhxVY6V|T3`79%x{DIB2cpv9Is}hFMH}H35xeNapwB?cAovsLUX<6g;O!YlXCAmJ -*w*8`Z8)37vbiy0UDpXxh+n%OADW=kcOOn6cx_UQP+mi6&Y=R!}bKYK=4Tt1+3O>YPt9n7g6hd?iu%R -kOR8y=S=w4mnQG>jPvS`OuJ=KJ -idY?si2lna-H&n+^ieO0t#4+WTB8^ox%}#(g+FtlAtj?{2O4la2~l?l(WW){B^H=j1>y>~7Yc)y3(Ku -Gr=xt0?o~kaBfVjxhpo!|M9B_5YIaclF1`Qr9+i -XtDlQQ$?hA!kA&vgnmT!>uLB3`ZwA+0yDkJExr1rSk0w#Aji##ksY^Wbhz-dBx_8FDUOB&|!`cH+*uA -7h+~1ru)A$FnY{MucmL`N38fiF8e8Fevy7!2pIsrGS5=tLtu_{{#71vSc9;39_2vuL757m6R+*1jc{`6 -OhV~z<&a?FQb6kq!^$!G4Z~BAX&kIz!+H#4D$pOC~^u^K#24o)GsGl3Qv$Mx$%Fr2p{E6XJrRQ -rChg)c9@z!Y{iZc{G+YKJQoaPJTFh2r -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 -BR*$I@tDX0JJm3{?6|dfO>|W%bcG! -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 -!NeEyclcLa6vt&Ka+#?H^4E{m}e>8 -Fy2Si^e=>&z?!u}>sizV}^S>_;SABokzK6p9_Oq4><-Ten-W&tvv>N0AW8S+nB=G%yqG<6#`^f$H42g -2$O3%_Z275p7wM}7Xj3<3)^S^1PJ&OOZ%-zIU^TAG}XPgWjDYuERmT(hB%Qvqk<$kxIHMOWjL4+K8^c -y@qtFIbp;%$`Xua)U0|{sqb#70K;g><0SGzkcN|`IWW@`a#^&Ppsf&=a+7lq`=eC{19EF;s}?h8yld7M)gh=m_13WhFaA2PwQL;O9Ax8^_%a)`(Fqw -%|Yuq~KdK1m9^PbslYn(MNzyx@f9?T`1rZ{ -?KVQP~*X$zK*BZ(x*$+linF1bPS6-e@kzGOpo@HZ}%UKC$HyJmx1`OV#tRb>t#t{%$fi$^^l}*++xsH -`!@S9|fij4;0#!A`S`?vLG@cV7O3mXnx3$c>O`mB(%%PquB?#fCun`CSTmMiRXSL7>LaoHdOpLgIuOJ -oJJM{WHa`sE7CDMkZ#14nd++k0?n>m@|%3N9OE%LdD}#w<94?)_8;aHJai4!{m%1 -zh`$6|P|U6#_?G_B4P6hk<>ua>T|1hp{}q?11gTr6uc*Be3BMEDu-?VR;&ySpcy+jXh=TOH*X!qgpGA -*dYty<>#JdVY2+#zkI-;ub!|_3AnNutIK)apaaADpPmC)H;z9JX?sT*ei;91t$gDKVEHn%bq?Y(pFS5 -%dpts5FF)>N9axJ|JG$QiSf68i{M1$QCofO|Efr*xBDb6_=6AG<;g -*!R6qTOVSoOsJ5}+_E#yfXly|!yfxE3x_KsxVPzxF;?FTga0W^j||8~utF)L#3oXVd;1z-yF0V+1?!w -aZb@5S~&v!R%+w|o;^9bx95kxP-f_lYP?%mQ=B0%>_9lFUB4r_03&HTNmPFA+2M!prGr?0OEWSm35lB -vXMr=hsKwm8|>C^6-amOA$xd=kakTur~C;xOwykXak(^oqfKM$@7+$uNhoZOJ~RU&F6j{6hNZ+7Bxzh!e~N3)S@i0a#Vue%|(*{KqFPe){nC%J -qV35}huw@a5$y-=YrLT2c`oin48Jr6&OaTqd%w+$eg%s>>*z7~ePL&O_r$hXhC>ZY*j -q6+@irzxnQPcF9a)+W|BTD3Y0txEeB|hl!Z)M_=LHe?spE`fmuEL-WQN~>p6{sQiNq^3{celf*d3m;48pYE(E)dS7w3JfD< -f%|H2!hm9>B@9tCoCpz06@GCh2?yvN~HLXv_hIAm=!yv_bb)t;gqOgZ^n=% -Bq!7ELju!&>-`!bq!7k5n|RYn!k@}?63^uZ|Jd%?|+W8p?@HwSAwIwNBUsaWw*(4s_PHb{cMO0W$olk -A{8m;)+ta#Zl4nV79PVKolF@)19~`*65` -9;B@2Qsf?Qbt~23BbYd78V8(!7F;O>7ZaVK7I?fwkik7G7-RI_U%D2)O_;A`#b7zK -$&qR5=)=xr6QUpUB9eaisB&(DfJ=TLw4p0x9&A^B3196A8e0h3t^|_-J$*=A4a7efC5tU6&_C(vDY ->mzDfq6Zou(vsIhPpKe=rqZ+=r6HPCBG5^J;&+hTu1!r#Bc9UI6OZ$j(_;e(vAg?gyh+GQJ(zaBz00< -n{P=k&>{CvAF>iiemQ>w@9iXd7jf`O+b54tNcX>V#~=9k>z)4O)=qz^Phac7@!;D%c>_i65K --b!I6HB$>#nTZiedJx~b%h+tC~7`q{>-6;`+NwH;5prPB^iERN;3$_Oaef2!9<`^hu56mI=x1%zN!=qf$@#LZ{PSf%;5z;@m$7P9{xg>Wt=e=!`DYx+ -A3UicxYFHr2hoM{fTl&mB*NK??K=fpqU*KW!XavxQo}VjwPuy8<0I<1PWGA+uu}hYk;v#M=c(pAWa`` -FmAWsZ$laF6A!_=oqE2qRSzzAU${9J0WV3Z0w&ymwJo9Ziu&3aKpxKOQ2W0Db$dS@qJ%W% -cs`C;&S1-O@AShr52N~Cw@g)3{czds76*U*F{(`!&5Hl*tvNg*TR#*dJmWrAv@i`H50&Na1--+NSmr4 -n0YS3FSdgmAbE?K}E8Imt~3H`fR<@2?#aq{o2WoCsr=H?p5k`yGvd*@)ZD%r{cZKZCwzlz1#}%tXxrJ -3C%kcN}xN%1}QBXjt90Kek}`RDL!NSQS2Bo`Z~OR-CW>4jt5PddAxPJ#{7W0xJP*TySys3$@6X)-Y>d -zFM;Uhf`O?)IP*55e#_ecyuQ2j~pD+T!y15MP8aFqc*3k9iND%F%&_v;iJ1j{XQo+Rw*XS++qvF)q$X~jEqc@J>1kZqV|je?H$>l4@WZ -&`twKM1YMbras)0{1Q$B~;sr*Jb)DT(h^2#tr<$}Xq8ohM)z7zFFTa;1$s_POzs=GqiImpg*^D{>Wq>EYn3<#>J8EqU|sUH%{P$(#bZJMj11G&HH`*1wopCb^hN= -B1pv_i=m~*%G6Zu-7{0vyRkM+`oFGntkITX<6J}M6tYSpq;l=MA6GIS3Ur0`S5I4U=!JC!<`VbR*xARs;{i93Ao1ORgY1y}}sF#u$-3FwNdFAD9I+eaY##{N)5xafEuT({4`rz^XJvJeb%jMN2c$JwD3U(_Nujga=L$j|pj+>Jpr7%mq-I;S|>zC&wxqzrj}U$%c{R$&@LYRDWWX8w4a*$ -Z^G-S%dFb2zItMJoOoH6ip#e2?;SrzhRiDdHq~v^zUMc|rU%2ci|k@ -LqD<|71$KI(Rc>41VNw7H>6Af!@u4Vr4Lw$1`Aehl`R72sx`m<|zJ2tEuB1C3lB2cm6830=>JIo~Yqk -UU!yJ`{{n8w827v-0Q&B3`aY6Dk*a>zYQhdqufb7B**=H*##R}E1}bULBaIMC}n5BW+4YN+&FH=xY)&@T1Gl9KsgWeYpWR}%^k{%#ciB3ChnC-{5 -(FFNQH&TSSq-DgNqooqiDW5J&;Xw_F_IG8$P_f!m`|Tw;}Vh-5&01c)C^NDZWG|cZSOobUGj>&DtAcl -;!wAv#QfM?A1UqG{XCrh(>woz!ZaAvSXOEJf3Wk5y^Z(~}_5p{#UH2y)1i0C@-GpBoa=(Q3rSpXmRPONfD_8vzG8vn1u|3k7cjX{%76r$0XK3Cq)b5ybnOuidVQy$Ops -hLa(S_U|WHD#u9HtnaeUa&-&z#=jLZ?mCbuCBC-~-9-iCyK(fOiY3CLDy~=Q_G -<(1&@R85T6Z!iRMVy#Mc-V-x&~aapHtNVx$nKoQ~=^gTwJt?$GB?NH-D#$l$v --nMm_-UE8!#{QCw$5NS40@jqQw8oO1hV(^(Hy(j+{*I6un466hhq3pNPMqY7>3;UxC3N=C#JvbIrZ)~ -%72B$Z$(ep3dZ~j#+k_CwtJ+mSXc-;;?rm^V=(D7XbexZOQSkG4PqXY={?`EGGtGF$h&%{_{4qEU4c1 -qx00R*sE*qlJxjgy;BN5PD=nKtMJZ1;X771RY2-bnqLy0J&K!`ZWXr2ug)= -_i!{=AMbxj -_#XtjL(SEpWq(J@Bz6&E2_p5~#x9$Thka`Je&qxFU -9_P3EP%t}l`qEU~1N*rO1OhUe9{eum)4y^0~*JN#U*4p4&o9LX}9uzlnxOm#;C7qDMB -UoBVjZGQX03S0`2JEyr^n@0a!jAtcI!5!kPGL+zaphjcsgP=6VX=KZBk=T5EnB0R$Ot{r0nP73JzZwt -KZU3$=+x6ZrHiR0T|a+_u{?!G!}ofVK>Z+=ucOfWzA9J>EU3m#Yp?_J-b|1VMN5pcMD?7t>$HOm -@wHD=b&m`CGa>Dc+%2Ck;;(F3mp?QrR&6@llr8C -cAMYn4;SN`esV~x~-Op_kw!`)Alb0Gg4*tz+k3!KbG0D_$9%f3@ZN95UhWpdyLB}WLh@PB{;K$_^)lH -t4rR4G2(=5{q)e+jC`>QKkUdxVt>RlPrH)}U5Giw?=&1${Z5PRdJvwJ^<&$zLBwlasFCQdwGRQ|zlq3 -o7oWQmcR=g{Bn!ZnaEhHDXYkzsi5q{WB=*L@H^bS*9$@u;7l;iIf?Ji5lnoos8Z+&Z=v59Y)h=3MsH-GP2lG;k1V&s=WPz8~@peOJ!P=lRB;A -nWaYYw?U?-SYnFEQ%c!iZ(e3mJroVp`v%lSo>Ub9bcv$pS=jT~B?zvs4$;fT_Jrk7H9-wdQGyj<%DhbyYA_=o!M|4#*CDG+8=!5?xlH%b489sI|CuY>77{x$lKf9?L`U;p^qANIfh+vDH=t@#66 -B0Xn$T@_RE2UpZZ(*)ky3_BjlYJI8AV45QYJ)av|0uAYRzXpsTaJMrpgyqtdkgNPn9GFXMw -*eYTG7a06D+TMYAm+d!SAWr<+v5;r&?sK?mLzv?qNVv{CI}OMqO5QZ-sLxBE~J9BW5 --$@@oeu4_fy-=I*c`v~h!VG8;!xk_4ojFm#1hkm=lSMU9n -l889?A6%rt7}jPrPvgsp|9a>}D?NP0*WOuFoTEt!UC0g7EOqx0~i(2m8ZhP29NyG4kVqb4|DV*lA|d1 -_}Wi;}2F5EVRUyYBD@|pyW3n_e^&=w_1b4`Hb`qJKNaP2nAl$Vp&1

    ^ME8S4Z9H&)n*NrY+{|q14hl}l>@RmbZq|9 -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 -n6j8WBmrViIa9h)UUMb4_hyT -Y4D0$Wb|_EDUb?^f=SY?;=;b=y`LnQ#L2bW)2Vtz&yA5Np-T8hGcvOPATUFqZ_!x;9r;*Jy%MTC968p -a#7W8>A^vO41{P2ZafDri2y?y#$K4UQT$4?*p)ezu+_pv_U{vRCYM{uW*1;8;BCMlFg2^@jp4XnM05U{;{~+A?;5R?reXTD^cU(Bm*#jrM>&EA{s<{ -5wVi1y+iKV1fVN~#6Z2^eIK5gO!nm#Bk6R-Xn6;5%@pO~L>4D%@JgHpup3;25AZ -D+Nsxfxe3dc?5z1+a_<;UE19sWEUd}P ->+iwm&hf-Wn^YX#IU#g_tR!2Kch_VH|@))z~!#@FRdx0&!0h@$<9F1E-`MSTH_rwoP8L}0>%5U_3)C6 -~UZ`r=```Hkd*ucpqZFULWSw&ppr%Z$A&Z4Jr-`YKD;H;q^Px}Ye*Fl`Rp -7G3EtSSAA8||gagTn)ZD1Gyt&Zhy@yVnuL!!uDWPs0e34>98r{bc>@``ZDSn=AQqO5&-ZMw4)CEXNxu -!XoJOs~WKD440l?xbZn+}j6Rt<16&x7Y1`ilhx9V%rwGC-`GWH+QtnvwF@Mxow_03EhI*b3@(dNaNZ< -RS-lqf-Xh-;Yp91dqL3KP8n~qwV4|4z3$~F4G#2`2@5^`9!7--x&;Z;njL}bqTL%Pw_EG)$ZVOl0LcM-I1#!W!$p0!@suM%hjR$d02 -L$*?N7PBbPZu?KwNiqdO~zZsW*xgw8&uJ|3{6x~9HIo>u}bBJmYpjuSDlbyAk3=>Ah?rN15!u`dSRpU -KfOTE2=X>HZLkSJ5p?w%>@@|6&mMKXWd>2Z^6+b5UxE6M=%4AW0fQ8D{PIw}1nQQVaK6a092PFDc+Mv -LYdHIbFtAIsk6p3vZ<1pI022T*3alJ -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 -r?A|dMmbmm=;ncjhR3Li30+O&n8m1jINYof -p?~WKm=_v1KB2HABbIm`(()b6N{||ET=GTP%aq6S%CH|d=75^6mhWamatN#V}`4iFl7km7cb&(i?V_+ -B!P9p?Hz$8f$7=kb~LBPn$!blv3iBEmBun@S^uhc4iCEP*uAHD|GWUs7$2G|es3Z_vo8uU}vwLX%(Jn -mNtL}$SA3PS*4qZ80s#3X=Y#VIpG5z2 -`C0V;4;U99T+qK^Tx+!a!PKCC#JC)1G{!HCYni^KZJZFjEWp@h4V@9co*w@EO?BZf$OHt~#EZWyA1za -07##A(z`hKHTk=u2Mf`0joI`l!+ZzbpKj^>m27dbz{?!`@-aqKS@&U=a@Zz|#ZRM-syy29avn}7lw)BZ+q&IBXnX1fB -lx*SS&h$$tR7^M)?t}J)jwFD>pI;RIZNv^1ERoFIqM5jb-VfOkP4}QG!}>=}Rh>obN<6_=($x}?jDYm -W_t}x0)n$j*Wxo)(y!NF#o+1Gc;rom}+)cBx*fyyU;S?K5!Jmxg5YPuBIxb$#R4f)nV!QW?JcJ~37laRLK-_v(T(zyw%3+#snLIy=6jMxWII)BQlh*UzJ(!EU@8Di!{{f`0P^R7Emy7mo{^ -Ngp10(r-(*N_ncj4_n|L^uc|Icpt&;R2FauDx_@3Za&jP`d2RF^RM&;P4hm-)2N{@;Fp>Hpd1e -uv(Fa^CL~?F5daVDcM6BA-gRVglsOSIo;YkTOqRb4ZgnhiepQs8*O{QqOI%} -H)v$k(;<)680j2Yh+?AMrn4Y$Q<@XZQ*WvL&j$1;)#oV3Rxx?P*lld6$AG%8uh;91l7KI_kk_-`ZDwV7Z*-Q6_X*7jfW~mQg#0MtbbR7hrY` -{@MaoQgcg~$aL?@WN^m`x%B_@3A28Pn=br0@_dd?|Q>p4o$q0=NT_rlqq^=tl?o{v@dYhQtpoanf5N2 -WPZVlYPd_>mLr#o(yhrjq_M8yX=QqA$4Gz-KAY`GQj@p-0-9eTP^oI@JKrV}1lcaKuz~CB$YMDDWZAqlsUic6}mS+3(GhVjJ3l_MIiBo%-?Th(*e?IAKs -!bVEwPeheCAAK{=TI?`Y>W_ZW3N!cvo~)j+4Q81TuV$)-=3KYKgb$=LR& -T#;MqsVw<8Y}k`!+#*&6jb;0bc86DDv#{2;HFz*m75Xw$Rs0=2+;V!{sx6Q92mU&8)Z%PW9dekBfDrz -#3-SAIOBJK{3`W{9_*3@FxO0#2bbWJ~sm3|0IsyQ+HA!&~~hU<;=KL$=ExCpm@f%o@)h!?kdtd!b?d=3%=qu@Y -n~MtLLu6>0oJDl^R!)}z>nHSsv&H+v}MT9(GIm1E^Lq;?mY^fOBvq}UCP{)%;dv#I{JqyGWsO&SjT&4 -`aT@}r)<-~;4iINCN>k8)bDmHugGk5Vc7kVq|F-YuK!-cTaw;>lvsay&<_y*Us~uLum66L?=*HW`18^ -=|17nRK^h-^4OAtf*EosfWmyEjTq<$UQ@lpNI0|r*{=DG5LLg8)qoCZtAV9npQ$XJg2B}iO$0B~2Dy> -l~0LTbHck+sZkzY;00OgAKWu}3@CX17xNV7UawtCOH$L1usJkvW5cH}xT+6WQIxD}Nf&1PTjW_@jL^WD8=dbK|=Qr0Za2;h&8>klh)izrpPq3 -ia!4uUqZ7H{Q)BclHX51yBiB!CB2$I9+ddt?v<4;Nd^YwC1lJPWpU!p=LfEkoy@DKzkFo(+2WseFC#v -y&t4~b~R2)$;Ka+((VEFJqcE2a|QUz8Y6n<8eC3ARGZhR6dRqd-huw|S1$<&?V#_)+`y#jSItQ3TQgD -)nvvEwTXzEjU3uHHB($66;mr=$h|?{YpIuT?4k4=Axj~ftxDi=PZcb<~%ElxI&%(HhPxwNzTxZbM1L} -`Xc5%Af;7KaA#VlOrRU)chOAES8bv -Ty%=wj9>z7l7?)j1>IrH5_eHdpIZ9Me%(xYLvO{iLUbL4+Q9W-w=C^H`%;{0d6_l -v2lLn`2`qlSo-I%#qpYLK^HYk_wEdAi|7p*p73taeF`NXmFUN(>Zf45!y&%5#$nbo&zte9}5o}lySxP -#X`G>yK|A=!tDwzvfzn$Vo{!+MV`xyh2tlBQ)IRAC>70@iUY&L*F9~mF{@%WlZ_?q{-N?V+^?_t0Lk? -^*yES5jz&LwZ2Qa$=u?9_y{a6SARkj*8UlvjoHyK^N~lX4SFLxxSkI1beEBp(gi8`Q-H;i=%crLb%PS -WM`P@{FcG0`z#-#4^X)1LOw-Flc;7QrRczV?C;*%*oe}Ks6df~bV_C?(lG^bv=W-*Y^ZX3i>ca}jvP; -`nf)%J8v>kRQ$Iu^<6K6OKyOj8y2P}YSVlq_nb3OB|2>Tx%LlFC -*Rz6xnCYD>JX9;M<)Fg)6Qdk^;K#6d3L517k!>N3cbTH)t_SG-4G=Y;xP}5??Qj*s|JC4qYoAW`*x;#uG9M$)2xF6oml0-V4+k~5(Gt%;$LgG&HZj{?m1-PvsXtd?DcH;HI#kdB=^Cq}TNi(@UK -x_u*he1@1VPY55UN4<R2CYg8MXcIVyQRZp(#KcX%Q4#se_p6MP7pm}^;3o@w3*y8S3OnMxyQTL;EGbzh?+PdOx##%-lJv!sD -(Zqc=F?uc3B)QqM|D>|B@+jfbUhUFqV@Qy%Pf?JDpeax;SjkJ -40<|IhN|B&1Bk-Yl^GiFLW91Vq45?|DqQB5OuaG-R2k;@e4g|;S`sfJ9jlOw -U4kF9soiRmJx13 -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 -)|j8NRU>gn!E -46Dh<#=W%9EqT*6713F&zAG0Y3hk1-Ij9iL?P=c6m${JaqYLTD8mw%!-hb4xzihTxpg(i6KzmcqI+{2 -dckiV3aW4;hmycAbbIfBxiun-UW;=f{kh8}S&Ojs^4yLV@Z=7u_qC9pEOk^)_o70hEr@D0eH58ZOkvH -jwp$5)89ax`D@3#v?>#^X)>#OT8H@!L4waCj;4By22prDcIDvAl<(Ey`fg;;7DP1% -!fjHka>BU%ty4d)wk*Q~PVt86-SNW&Pwgd={KL27jedpr0Dx{(+bHTY_TG7e_9rwP)ffvmA57J)xrNG -TC{Jio}W9AGT>i$Z9An2~I2g?m0hnZxEKf&tp>!?V~WtEZ4G}V`KAp6WtzTGxJy{iF7Sa+QlWxLPC{O{=e$7!$rfJ1+G?8i8aZ;$)VrV~aPoWU3hjNhXWguy=rp7mNxzsapo;3Kj|0 -|fE%ElI%->y;e@G_M*aivFrZnZf|D*60F#MJgEyv}Ys@QmQ~{h5^%*6_XGeOwuD>Ds1`%7WA(=(t(Bd -OTMWeXpHB?_2q|JAvM}^3zUKmH#D{a(yIN{T&gPtcx6tgA$-NIdn?pZqOykn$c&u~gq!9s+x4 -AYOfzHN7FykY!f3zBNjw*%YIYF8pDs7k1eA5p<@QTdx`cVxEVT?u|n!UFK-ypKy -@XTRaSR27C(mW0OUdVqCY@J;zTJaogIK$CxM$>58o#kCYqj2WNXS*ly&a!dAVcJU!6;F}N8H`z+Rt;1 -UyI=(DKNPCDE6wBJq7!Em4~jpv@*&`2g72ai6pjX`?5VG6e^Q=2Bki}-C26~a(v~K;4#Qn}? -0XS8s}O2sC?@7n%iCO$9Rtmttx6$4W{&h9&ZcjhBH_Y`_iFDF0NJ0jAr8vU%E^J!L~Jrjq{DZi0C -BjC%EL8WBc#$@eW2Lf}jj>v-HlA=^aOsIN3k5x53n0XVk7PWE2FognkblNeArg*nRCs8?zP9+ImpKqn -7?O(}FbMiGW8V~mj*(3UUx|w^HJoi}G6ZEM)+mCt3eYoIO+gMR_j!F4>JvkhK9j^9%GCmC`iytK9kLF -bD=Wf?^$#M^$4r3^{7hWqw-Tb=`6*z&SqP(IwHgMBIvVR0Uh8B;p+wpw~l!uDojqf<)34jH-nNaF5UeeXLOsgym3YBg1?swD))+GuB`9^T^<2tRp$pK-K3%J1)^8(jpmHXfJ+ -=M5V)lu9F<-<1l^uDIn_O}Qyw`*LEqK=MZc{93EM0i)bYr9PCHH6@8vyDbO-A)b%jmu;&Qs--7V&*rd -i2f$a*KQlDd>tSou9SKe}Mk6-{L%SJ!1Mg`~+1u?8NY8{K61s -A&-iEzkLy3A=p&3-JmZC6>gZibmsB^4Q0=TM4#`1n6!&y2LPTo`xYBs?uC$q#JrKj1Q2kR4YL>{PXp+ -KS)Yv8ckicDSue0`%ykVbbdUG>&NMac#3$fj4@|!p{eM0L2RtYvx6F#zbE13Rf>h*ck?y%)-SW!sG)I -w^ut|fv8BS--|_Om?p@^{q8o8O)~PeLZFW&Agn7;Fo(Io -&JKvVKESpt?Y7L5!e!ipo)&huWEPp%07ocd=_S)#-7rE$59m6Ax(m$ct` -{Czhb59;E>huVL)#+e&qG>_&&2fygZ?-!QWYl{3V3|lE$sEZX-ui -UIY4$g2YWmMlo-A>uzlGI*|`oe -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 -DR?Hb3W$&4m&_ -Sl)j!?Qxrt>Ta!W9UdO?{B!Za@= --_KBAn;5Z3Y#HSOWp>NTug3SvLmsY?P3Um~dhMa0W>_$$D!Osk*LZ-?;wqcx%2H -Bv(Ru%JZGQN2fn=dzIsO`7fyUTH$JU5$)ZE<~2kc7i8a&=YM6okbX-Q=FkzP0l*i0WRPF`cI+*$I;SU -B#>B<4y#RuUS>B5?6qgE0gsKj3w-+4qQRG;B?-ZG=(g%ON;4S90 -Y4(H5JS67-rS46(97VdV!8uQnbJll7-+XJ`0evHZ1fmhl=o=v<(Fo8R)pOK~6()C&)*~b1yZ5hJHOTO -E1cnKhZ0~dIoV~ktMRVHNXPO^FO=Pv2n+nHv*7gri&Uc1UH!{)bu7me6o5w|TmX_{Z98}uX_-C;R`ut -vOx`OF?A -NtOncCmb10wL6}L>x^Z#oSl_3v@7?q$&r@~xpbkPTXt`f?Mb%+Dq5q2h&?KJun)|M5>FGKD)-0!5HH; -Bo*ys)>-89NYk$0m_hGDkN28MbXdO4J4cV_;mW~K8ySqF?$)LCSfIv4=nU=gH> -x_C?X6`fArT|zQa|#hQfog>4D2T1%mEGkZXYg6(?ix0@TPATUT_xo?I{?~UFaP)BYqWwT`Cc%M+^d4v -WLqv-U!k9q4*OKqB6R~S=aw{&HoavmrK?q+1nn}zux?;_W#WZe+kk0LJpF9pHaa7bc`<|M!&iKyE+u~ -Wxa?I48b5PW28~yQ&ng(d$p}(px~E`{*7dS+aWKX<&~A?Z?(k?=t;zZN8zU|aixgVEBP3`bd93;Jx{l -C!u9w{_g2=q61w#!5d$iFfsj%JWRdXXSBXOk+-@bB`O9f>C3|TOT$l0Jl#o{(Ol! -hqBm(L(QrwQdV^xY!By(PJLV=C}vsMt$*TIrr5Bao)P`mXE1N1NpGmQ8%OulaJ~){&0D1n@PuZRnN** -rN3`>H>!hyPuSgE|pp5t%VoA9qfZ8ZXK@u*k;ot^SYi>0VgX+Q`pOT;1RzrGMkUBvfaBc)YtOnmsi4K -)Mxao{UWd}{(5l5TjIymrDwRtWWCK$m7X^<@a+{btzrwLDUN&%r7QZaq!n2o$T?K?1_)OJoy)gmh*`$ -Iw}h8wiGArk2lC~-n_+7cB)ug@Woc^om0IJbXe|4cZYxhN{MdJt&a$|^&2I-Q+=b+KwRBsdHTl@>D=e -&BPg+NBjUvW^^>=mv7X_I6-Z#n(+RMqS_`a!5W^ro$9u- - -60j$+ASm6(6AFXhKEc#HwRzr1gpAsbx9x!LSq&rj@$5RkBT_lBcbbefyXKCL&PZ;Fb) -RLNX`;9JM8Ob5A!Kmh}ff1hJHi9Qn?&kp2>Q(m9?02ZTq114aztTwZ_Q*TA^(hoCb`9DLm9e_P3ro6;jD4)(8Xs6Zh_H>y&RO{fOOg84!gUd@h)XL20B{D -yRwFsh~iItffBkvKkE5lE?Y7mABVP0%3F;PMLuX)EwNj8ud}IuK2CJu8rHFjjrvlqG; ->_<(7A3^rK&Vv>q)>1MIgZIDFOcv1Yp{~A6Xdy(Fvu-bC)MbH$+2_0*j$@6(CGUL5M`^aNYfyXrN%lX -jH7hK9BKAwwM`bP^4^y3Qirwa`9;|lYq3k>w*3iGE64D`0bRDxg$HFnnF+fEs=`g0ePgY{8>9!#dlEg -;zpy|T^1b=q>@SD>rPmkRVZ8B_eczGrz@vEcIBFM3Z|{6hO{#Ymkyc8i8icY|aEI-}y#EmLRhQM0Ta> -KT>ZXCVK+?Ax -!6v1-7#shdCtjczdAPPTM>)Ves_DSMaksd|R9bL`swO}Xy}6e^miy;D3B@y3(AArqr8?fz) -h+ndOqg)_?B4!OBKDeR_x)ErwK+hs&Ho(pRjc4;CNlCK(NP(!2@HC}YxeK)RQd3QwZ$dLDJo9xaWw}- -nVhYOlw)m|S8^d^e({yv}D&cvYGk*8ss-15H0->MP~^z1151nfAeD2AH1LUQ%=l<+E?qk{}@joOS2Bh -zCm%$6x4Xz}TGf40HCpB-()uMAJ3QY;?ZcGK7=i7(L|6(m)S58M+ -ff^KNngo=GTb;uXmy&q8mIlv8v9v8p2_yfYul>5tRE(G6S)t>6nM6OI(Mi(4`qo@^`pE_;6*4>R*rI6r}u5qo`Aenfq#@M0RAsZvr!wf`R-b -~9>a~NG(#T;zkM)&@?4GnkSlGWcvWy-g3%Mb+k`RIZ0e2#nSF^GIunj&7b?YP+)m-@jf -!TKc}f=#`>Xk{Ri?O#x|x|aE^+tf5tT0o~~O(u%_!XL$mvt&yTSWTh!jqRaSZ -K(XG>;_K1Q(T8g`qxc%=rIU -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 -z6Tr`Oe)4HblKONt6XUFO@)H1-#qy*{`|rfhS -6`s*h@VjyK3p?8@=3T*BoS9DtTIZs&AjhQ?MxijAz9uwLdo0VDVg`se9BpvrTySCgZAEP~F4@xSVohr -kY++3fMzH{T}Y^nWOB(5aMm)#^G%IGh`oih*EhMuAt_iDLx5V+n@8MMs=Y~-4&Vo!nfCmJB15gSPm{+ -JAXcFo@qB5?k9;WmMw7)G!N%~0t21EW4AMZmKK0TOB?`EmnC0l{Ed5W21bIEsU`>dJUl;*_mnc=~y15 -(8}eR_5}Gpg|TEa3~6Bt*sF}kd8}$?0rN4f&;8yVz567DvEwp=?gmZP*4t>zs%Iva2q(~=AdMFjoYc0 -fN}cLn_Hvub^a^mqFEq*pEEDXxeSEWK;bw7$z}4TTf#7aKB2&3@OPw$-vCk+_+K-+deT&VvdJ225{f_ -rr07{A>-uR-w)6d_DD+z@@>Okqr6TEfga|MZ=!1%Ak|$cvS3lish}>+{=h+199<>en=@3AaKtJ8bF+* -}+Ta?iEdz98&ixmec)oDE!m ->E6Fe{F;OhYDOIYdMV*~+9DC)7dLsikz2r@wo)LYVMRyzvhA8ttbe^|0I%TgG3u6vns^B{kD+aF -q8L3$4vlF4AaaLKUEnz4eSmMA-T0c@@XT&%tsxwKA?_OPaCg?qHA2tLW+= -L>7bLhQJzjcSMYNw&WuUoCz37|CdW#ml~yR$!xA~TZVFS#bYA?P(xALa*j8qRXydB8_%s!_1L^zl7#? -l`8T1)}?cpI%&3M`xne`_!MOinjE5>X6$kLB|9q`H6|F_##&uqAUSDEo@GzQ)q?-zdWm;I##<3}N*|6 -_OgB6akuJAAtkVl+z=pLRE|D_!;~%Ontxr$d?dnoNQM;T^*Q3+#2pL2}TIOn>g{u|{fZ9Jt1K>%Z7b? -R>p-jpk4mEQMV1{pufq0IWTWKY9t8rh}WV<6R$c_4Ag4IuY@IvfKV2! -i7z`XA_A)BcjYF2;H(`a}DGLG7$eW~bgy!g^ -k;mLliab^=>2UC!@P!Q#YZuS;=XD%9L=YJzZ-(Qnv_3|L4M7{KQtvQl+O~N(63y;iOs-X@hvqyL -|xW$G@9f+;gcLs-v%8;H!Ru@J=&>|>%rYk++Knp!{P!~keXWq&-xU3S*eIk8eMF1F66Kir}-8FMZr@MOEY%92P1n-Ib~8hL7Vt%Vy7oc>Zy -+o|nNp)-qAvY1RG^i$-=$TZbM4QNFB}o0iSlxKIveUEs*5lBi4Esh)WJVUP^tmh?gkB?iIupf|w7kCRJ0Y^X<&x}07g6&aq_F@BXMYFF -H_^hwd&iW8Cx-mpzivnuN46bIbO-cuMCDTJ8mnkeDW^SHq75$Dg@JU|R_pj`+U1Nt=i^!3UCu^wOtz{ -eng`~o9HWM^P-J*gr@4){7lGp}%dp6g?pOcAp}vL3Uk>w~9LT3;A -vs8n(hS&kLvUaexl;Fp1-VkNuf>9Z0L=h20`b4-^NqL+5bpHlHiEreukzPLE281dYh&-#A-Dzv7zMWU -*0EC@;Ma%w$WQ19d@ge^ftAh!Y^Fe?ANJ}=Bws}wV0-PQN(h1m6yP5Xz!qR60<;N%VhA{a1TurjD~Ae -#k(C6jVaso8J>(W_#1Y4@rIJ6XK)dqF3hN&bL~&R83Vm2Z0o$l|fLjp}y(LfSWbj|mV*jc`tT@DY8sy -$7NJBJcz2?pzsuPC#hIqFXch*S302O^7z8=U#fxbB4GD0?A75LW3;R&><>jG3WzB`P+9eh7F1wZsz*p -2ps|CZT6-`sVUpPcvhV(*AGD4$&80MU5voinj_xTkRpCjG;CghyXk2CdV2tRck{2x9=`djYz!ziF}#+ -(*XH`CcgFN1Y7lJE066lUpKo2x_DDmtizuAsY}4@j{#|VzR~r6BBQ#`wSaHc}V0;)Bz-;oY7v?Xp%?| -AJb@5Z~K%;Ofs%J_(rbyLrc%4L}v1U%0^IaIfpza`%cHryI7GX#4N;B#l_q^vU@s7=Xh$C-H3a}Ew>o -2#1UU$oQ94sR|m5(S>A3!>(;XOMuIv(EK6U>KI6JN{;lTqVlRU#7w=RL -o_(gJ+F`nh_mFa?-$K%4y%i>-rfk+YDIJX#-?aBoQ@dcNyqNMiRV8zRQp -%^;eL9Y$7*!U2@)%2qiP1SdB~3iyB}JYvdfXDDrXL(qQS&5|v5-tQ!?3;u^mf)pPk=B6<~i~ZuzSNI) -E&mDLeCg7C9Z+a^J(Ag*mp?2jomV+`So4YZhh8$_?hk4inVeIYL1T3bi3)2cSFU^h(Z#p -IK}UjMb0HVU4QvD|41T#H3$ -ol1+NtiQLwWj;C&agaDdxOkWqMz2Z_mtav@lG8xf{Tz*)_@b%n7(n}6tJK>m{t|I~By8wO!Q^)4*2^N -~Poo1JKqJ)P_6+28KH$erFiH#rH^XB*t42-Tg>3fW&*E$(Gk^7(%1`lS*qIN(B9%^2!1Jnr4RL_1E}v -4)Rg?s;Zql&^!c;XK$Lx<2p?QN-Fl+|2&HO|_=*?po*cS+EF!CdOv65saJ|<0}`(t-q1A6DZ>ZL*`EpAPVt2r>N~qVcJ%9u0PFXh&2?_iTQ79{WVt?wi$9cZ -E2YL{UlOK@JdfQ^WaGF#CX?56THj$z-Oq@`dn+54LF^uQ!B(@M{xe{dv!Wc^X-EP0GD%?S+#ZejJvxsAqfFM#d%IW& -)J|ifcYCERPu}+CSeWxD~dkH6nM)P&ehSrdYbWVwm($0Zj!%8MDIBz(g7hbpz#F*-N4s0mA_oR2+24urGc_XP|v0B0#OwO2vTBDgv?~E4f@r9-6#F -+TN1A6xbYJspWe4`ai((6bD_dzoBkQ1>~AfUlJSA9yvA9Pn|9=`gZ+Ml?-y9Z|>Ib^v$<1Z(R9I87mC -}1VO!v+=o61>R!jdkq#hZ@=oWJHQ>@A8x8p%w0*w1ol0pFU%Vyo=UWP-%;az#*c(?qRK}OL+y!Ka(zM -bwUyjEsTmoPN$=$iG}JdtAe0IXt4BouAm-pizo`s -0naSKG>(_LRL8DK;yeQyOTbl;;#Wrnl#o -)KP5ZvR&}@R6P+`$3n#t5h)(z+cu@qwtxkPM5$KXXFRg8kDa_{7zff%z- -8kS;H0cS7k1PekJ+V56$w85!m|lt&1U8lU97yfHF8mkuP5~pdJBkPP>-xpy)`p=|x&UM8+>QeL1j$Qd -@6Qz1(r7^gWQY1_gTpq)qFZ4(`G!8_xp$X6wnNv7Vq_zqcn_kEhpcJ?^hWhD$9T0q$c^Qt&rUv49=f` -CGd(Yg&J*8kch5^?-{kz6LI2!LRX9BRJ9GwwyGr7p`}bEa0eC13$ENpyk_{K(DDN-~=!wj!O!$IS& -r`FC#(`t-f2uZQ%y;O!YDZ#MvMi32|a@cIaD00#K*bQ{2X48aTQdyJ=VW~RKq74^KKINIuClC@Xe -p)PyZ^=_ft2%PPJH1P~9(gO5WY(UcZ0iN(Y5t#C7Dir);bvi%;;D);|*t1`1vexd3-Yz*|@s{|6^9Ts -p0z0MHr4OA_;YJIKvB+aSmgwG~kV{8|(K8nTp`f{ptd6{?%X3(fd*leYV#B$x;t}w$}g2QV+eY -^@_lYgG~Cxuk)0GT{;gRT_jD|c4m@BxEv>43pFC#M7pm{p2JDXrIIQpI4quZSLZF&2RfG9=zJEV4i(Z -vwyS>TZBy=6NkJ$+vIoN6sDC`gS`C#|;+G&-3-99%|th$@pHh5#(S#ddYDcnykRExZSbgL%mEaWvlExzpQKGH3|(}j;OLZ9YWQ-Cqf+;iF51Q0 -amKI?ae4DF6!1)rG&Acip*N69n3AAUvtCwgZhMjz4pug)mmfJ{0qTBk-^)cm3H?3^;iC1e;uo&%(^nG -hQ43=A-iOMRhPfACOZ$^fBhv!L)JdB?wpm~U&>I!zF8D9lsPhs4IUMH6<7|*}Mf<*(8^;iB9%2!5grJH --tz22E|9dSy!1ZRkcx*>~ei!OxIN?!n|uz@oMbrnqi+O`K_gTC-OYMd#|+E`J@e{zTEFXHuCF9;*TeN -Ip-~3ih_+o^QkT0=(I@R9eg>K1jrAD01t-r>34kR)k%FV`62Mn(gF8bH4I>p6x2{o< -tW*!ka)bBMEq;jn@Rx7k~JhUW$1$UU>^ekIXv#Av~~I=E{)<#k&OZe-fbK-7$AOB>SZo}61ljVq8mUN -w3iY#*+#Q09f5xZ}Qb?UKgfcF8+lPZoKn7#rT_pGWId1S^l1q(=hVatJ+Jd1LA0_Fg%;fb1#^jhN%GZ -A5*u`misPJ -&4RB|vd`3~vpb73QK^F3z)EmYSbbhq -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 -fHlVCcr=h9cGLC?EOxv&#$@iEni}zLph~ -6O%LB0;F{V_01cL2qTf5G^UgH-Ys%BJ@~FMhj4$M4S3?2XDBq!Pv6ExIiNA>S4jZ!e22{zS5!8{pU$4 -8AAP;$3;0g#QXm1!M1UoNs>urv6)Pv-ts`99WqFhiAD@h_axnNu;^i5k?Wj%PDmBX|0PQiQ}$LeU3IX -+O@cL5y`s=ZKwnTZ_vCOA7K{v!}NjAOvmz5WinIF;k=iN+S9T<5qD$L5N?6(hbp=4V$i{Q4#nk!l)F* -G2ICEsy@m=|F+`73OEh?2cG8s67!Q+f7($g5_q;oFn_C9ety>+sX1{jH -S=?1Q7Vx#<}Qq&c3Psu8Q>WkqycIIci;x|x3N@g}WlwE*LCm -%6BLV(#PV;zOpuHh8t_Mlh37rf+2yq!8v8oT2iP*kMN%DDnpFKq$^}C;}5Jvqa|DHZ6WVaW9h~ZqO=| -gL_i%-W-##ENV0uMtQ%;r5>lky$6zVRc@Euqz?je68f92XgMTbR^FyBttd=baqZMukrC@jOOkf##SLE -)a-U#C9xTQt2I=T2Wa*u#0@G@ -!=y&XFJz}^z(W)7<49vxk2h#t=}X1*BBVpia%%BIEE9>-R{3{9E-3#@;I^zXE6+E(Naj#;_2m2;Zi0( -e$>EO#7j*PomZEt{O(4m~~@%3wl{S@3&$VZ^dD#&hIP?DmP#Z^1S57^y7n5lB$=zU|0<-O>KsQTTmF+ -a5pm`(w=o_@cC3kZ800jSb_G)QswqaqbmM&6zOI-3It+a}-Ldniwmp>R^a6qt@c8f0W2B3Is{p$C{X_ -mA_q_!*e3H*mAAF(Mwkw0bh%^e>}RWL>0EhtxG68+FM8C#knS`k^;OZ>)jKDxLad$SA}r6A{@p{qN_D -Movzq|!|HHkxVC^N21GO^4o3kytJ7+(uZ`&dnbJp&dp5*Y;t#isUVZp-K6EQHYhk`ovpy__%LN4Q5XI -4nq3Q?IsA%fB-~q*?OAna$=izZT2^u@F!}(c>x^^^h$|M&(J>N&+<@*tPfvBZxP*XW*L{A+IkG#~D#k -g*y01X*tx3)2Re#P99OU@=zSpLgV=^Xp}b=7o;o4S7kYKu=HCv`#?dJpfoOvKu -~_<_I@8w*=%1eDTkIwf5~eVWBoPeRzCt)e{WLVD_b~}5+o2PB=Vakzk6??BB1k=N5AYH(ypNoIS>ks-lZeV -YWo-w{?WgDyyx5ZbO=KIIGvx1Q@FUTU%sn@K?lKe~+7)Y05X`g7#jG4V -2#b)7{7X$FLcAXJbFnnZGW^Znt#V0Qplf^!sh!E&o03{-0U?zIxz4v;2Maz&}y!X{khL-P={S4vl1ll -dqXC!1u<2YdUqhmKfJ7>4U8f*CdojpE;lo{E(-bhqpMS)_Cj!$H(M+<*qFg!U3fu$~^+Gc%c+Sn=!?7 ->f3IVw1vXUfpKKw!jG=A2A2^%zGV3t$f%p+93vHNEo8JW3_7&ZfTp2k{euVonS-0O? -MS;Shfv;Y@OlxchnRmQB1MJcw4)uC#;C~H~C;i>c#?h(MB4jZkQjbX6-Fd -PamY&H_^q=aaN-k^hli*MoF?NmTIE!(8Dyd2}HG^F6o`>2l5iO#~-`r^S^5UpM4HR;G!DZSd+;SGbP^ -H3`q7+a588lWW5dDqp~C#4_MQn9hTViNK36q&ro^Yi<|toJxH33^LI-W47Bk!cd=8c)--KoN!wXCdkJ --NCe5czz0yr`s5B28^!dgkTFH(5gr-WmxajCyIU?<6s>E+Z5fxtDBu^7Ah?C|(fi1c$HOIfAgGXEN#J -tS<|#n3mKh9tBPMr73l@k -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 -L3fE?41)hYMM5c1sf;O -UQww?C6n|F%mS_*qYtONEdvjf1RPjVuMDbBWbz@(sTGgW#T_V@f06H@V9#I4~$T{S;#iUDsy9@ -41rI3Y$g{;(z -h!{3cQ!zmC7RtWe(x$cnx(0nA&H&IzeV>_we;9z2Qu`aiQ9$=Sqre0g+t=pAp6eG1CTp7tYQzBa%9Jh -?*>EsuK{cJjH0l%b*0yyDdaZ#8t8CiDhwfTBVwX%YA$^_L8=r8#5%A5f&c^Bfg(-Eyf!_nYDo9l(eDn -gdH&h>$bmD$o1%<#2nkN$lM*CvxYE)!|63DaNdJIBRAnTis!4cJ<_Ty$TD4a_?q3~3ajZQ>qbVyMyP| -p(7f?BcsJ}(yl%#IDJ!8>x{2W~Vy@c<<}x-N&_Ae=9WKr_EhORP7zdAuCQ6Pi@pXCT-R+UIIEfxlLt{ -pIk=R(4DSw+!vE$Oleg7NR>|c>@I=?<&Vch>hQz%TJDDq?X*grn_lSTdF!0)v5f2x{6yyfPRe|@xSZw -zXqNqD?BTkRYJdUtM9I|JFiL4MxljlFe+Nqm>M&)##u+m9Ie?k%Hs22~Jys}}Lr3f|ZhlzD_6rit;V -XLyTJ+Yjl&6-Ma^`I%)R-#fB&CXzOO9)MDO?WS%3Ua@7FBk=vA;R?VuoJRP@n<b~)m({wP0DtmT{L1s)i@)1v%EfHPLr)PD3gPWcoWY(P&bL1b($&iC2AvTOy}Yl06JzN#dy5aX -QDeD?;dqV+)U}NvKsdx#doHrZt{5IB`*z-SoTyC0ycJ@%DpSubHcM2u*$E1HVR)90SvGd=XWpO+p -xUkLssbWmUig|}8TX`cc6metX{C?8GK4@1+6v`=)9H@JP6yhLx|@+>vE0yk!r -3i5O=9LZXdGZ(PPqjxp7T?KIT|OXh)c5ldJ|O=+aJ4nPCDEgC8ZWPWQP~R!4lm>Gq)XdsJ{9hjb{8rv -No_;%wure(=!CB_G6NA3IB3^zIR7hp8*H8Z2I@cyn&?nO6N+uL04i?(DTaz~KUWiLqjm+(il5-WY0uX -IMXSc+3Qv!xef#JkS$+WiQW4z8-o5y;qJ491mW-9@XkfZ-GDZiu@;Wh_!*S2{tkV6QjfF -4~E6Smrl}N=3}hW>0tu2yF2u?CUIAIH+#v^4A&>BpwYA38z2cMi8C6~C11?bt(Sv5Cv90#>ngiwm>14 -R;QLwWUvy=C+ty{=m<(j=>qCc~c3pw-l^GLFU=ISq|DNE-@5v`0rYe9=o|DxmxUOnb!tg3dVI?^wOVg -5VD?5k0N~qxwBH-*NM`FB9vYH9HIFsFc#0aDZ7z7$qmw3&VH9Sbj5aJvO8qk)7yF_pRRCimtfXq;wm0^OP$=I;Y@pQyv)(+|NY -UvLEEc!al8oFO$=|#FihchXUZOr3&c##!Obfv1*RoZ1Qq7RhoRTrqk&}nz?u{^Hlf&{emOhz1nFG!3G -M3o4QBo1~1p6=Cjcs9?Ie#-d!)i|WxQ&rey!qWqF&pUfjv>6-`fLB~jSJ=)zJ(S5Bo0taALO*J7Kx}W -RT&iV>xJE=+tN9c+nkwc@fP5`8^<0uHq9o$`7|V>qARtk;^zlz40WO=W|7&X#0@Swv1gbsPZ -7DR;8cogIM|-4?Py$1{84g!+YDJHh8ebypQ3=Mq=xXg(P^fMO81)xVU_QGjVpySwSm -yx_aT+W-bG}XYo=(q|gGwuMVaXLwm+R}k~eJoZGiZs774owHmatMhU) -w`d~_p3L7*K7CJH(Ekis`WpxToGhV#n=Eat15I|TAv)jZxj&dvPVED56!q>>&)+_@mS-T)Gz5lqUp58(!H2U^LdQ&OvFI%ww|3a4j(0cU^S=vn!#2?7g$F~3JWXbp+Bu -iQpbFClxmK9J9k!2S_GVafWa#&w}1~~#<^^SKUDa3?^p}Ts&{I%db4wYm -hqrXElit(7u-S$t$wBWv@z<)u#7u+K`El=VZ=vboZk}t)7q<`O;W)cvZ+T0w7*}!VTQ ->M`=wi_c~sM(XyGlXkyr8P3QCD5Qkm(u{3JX}9 -7gha7%aC`Jrl69JJ)>QtiK_``9iEyKDx`>@A-;32PIayd}R -!#+}S{}xkZ9(O_Kkn7Ax!iAW>J-N+Tkn%4XRAQX*V@z4z -_N9pl3<%lVTWA(8+bHJ}B`dDh3PNv>W~22ux8kL!&IYu?qAl`yUXa7`4)WCf5ISYC1{{)#ik0T$@s;IPRk>kpmmmhfmM>3 -RkE_!+C)lO#Z*RItsV#9#om1S3ku(m#88Q6-(=f|u(xQao8czl_`2Z!$@T`QytATAGJ~wTv5`p+Nc}5 -sm)hfsv$}+|;DJpjB&r^8As{b8A(oD{M#u!D+>X4To+Z$J0F;s|}Q()Q_vj6Y?&QGCTq7P?94(n=s-n -enQ@!&mkr}d1SkJea&XgwFh}Tr~g29?!S0>le>BPo76m#xcQ(hUpS1lz5J=YBix5KJLvPB&%Ek1@4w2 -f{=V0TUJsY=JO8Lm_doSYUt8t>omC?vsA2r+aPE@`-IHuTp?0@5E#m}{V@OR -TWveTe6*{g#a7fZ9fFCIbnY!>31b+s!m -1#d&kJ8w~H~Kzea(9~a&Mt9e?kyGD_j@ZvuzsqV$}5urpR%Un_XmG!#`60V;5kyhk?JuFS+s{>*G&z~ -W|t?B6N#=*;rvPFK55i99+3NJKC@V!k9?F2jV}hf?~>szbocZ7`#ZM>{Mr5eo!bNc?Ee1j_CAI2epYk -*!E1q|v-5E})#^*t$TGjjeUYGN)eN!Wu$llR=p}*HO3)C=t+6xDUNm|*9@C@a4q5H7mMK+tk#+0Wq}6 -l4&}U@=8QikaCE}+8;OL8Y45iNNA@lWON);|GN2UbnkvA}Y^39gF-R+T=6@46|)(jd%%em{~(-AKUE( -TQ32&tDIN1nzSn0F$rI#j9rv{uEgK$2!co=neqd!1u?0SI@-NCdll&hm+7?+Db+t_c>z&?~bAb-t+H -hI#JbC^!%-Sy8-m2+NuHs^$v(8G-q0cPAGHm_vqGh{VN}_LRh9$1IZnI*``#D+05tyI#=O7W>o4-CBT -9C&sIWoK(C3nM9iWlEb{*PL#+_ik=^%+x4l&bP88!4BhW4g{Lj1#4=hsXZ|3b0a$WH7r(t!+s+q1ZX2 -55`f8Z&_=Fr!f~w(jbUX)Duxx6orgjDC4|u`xP@Cx);Q~D$ujC!dCjE@9`~cu@ -uEW%zG;ohtpRd6uaDg@Z~x#F@l)R+41Ig8Q@eH!neB>n*c*+CcQZbc?;w;X`#Ao#1Mzb}P3awullPd~2CfvepK` -AOq3?zna<4TZ_5SFdhPUwT{FE`g3`B~?M4W84` -%$`+y4e&8s9IoooAy6`;c3*e?$JILV&>RfI5B!R69_3{2?EQKx -SY;*V3hu6KT71R=P+3I-pv#ln(aRrNLS%uaHr3)`oh_w(VsN1ypbop`QM}(J_gyo1rwEVPU`M-VasNx ---5>AloP)yUwUwium2CL@@QO`bstg#3@=@b)yGY*i4FNjZJ$8=)-#%C8`fV~@3Yl1lQ&4;erR{g$an+ -O7!6j#EhqJB#)K9f_h-GCX0svka&}o4_?pyl%1JE0O`Tj>v23OoX_yr0$8+faR9zPMg<+AR7<`Wzf&Q -E_tSL-^eDykiq@l}ABKuH(DsLE6oR%0uPP@*2`fd;h{z-@U*X#hRFX4rJ2Gw!^Ry*#gLTHvPPJ>zZYzS|;iEM*6(BP+UI;aiq8y_ -N``QrWpy!*5#_V --_(yV(;ZDF9wHFKg`yKcdj1pIJr;JE0?4H=8e2GgM)eA2YMTvKD6jhv7eQ?P)Yhd%SzmA$!^qAmGyW{ -D&BarvnI6C}{|imv}am8kcPBakV*g6}pm4+2^(Cu5pKDtaN*vc>8>uS9}CUw=sGDrV6KY3Bj|@8kcKi -ouL$WGO;barXWd#6b0OCr;g7$yffCczNkH%mvpIwK+T-=;d#~-?&6~tMDM&*^idB?`h~LRY>r-cab=( -FDJRjaT-WsFEL}=3%;h9I)Zqn40jHjfwN+LBIQ4x--Du=$6h@Xx;e3YvK{Wi|{trj<9N+bR6W%@}k9& -Rn1k-E$n_REAeE7|c|Kq6?2e>M3~|M&k|-+p`L`?inorT_MSzw -&!i|Hpr=znrYuQ1&B_BSaB<>un6}HIkJ2Fk0DrJrL@>&lcDI+^=v0X!5Pqmk@jOo25IZZ=@kc_tR`I -Z6W;@PH($WZ$0>(rO>;^5Be*sX`0+MeD|G*w>Z&<^n9`tkT~Ai00ix?ZtP)WHd}yCzD4i1(0p$hA>O` -(@0~XeRJ`?w_Gq5?VpF|^d4I(lj(f6y3I9Sso?~CDa4>l26XB7-uu{Ok4!++6UchaU>DxXe)SXY1I|J$Vbj}50640ZU6l+f)50uGV||_=`Z3)S8g`uk4% -O7#D~0J$88k=%u;Iq`P=Wnn97z&BvSht1jP!mye3{n(+B)Vdnnayh2)Jv40eh$En^S-xu8Gb_?lGTpuInfV&;kyy@1)_~Y095 -|gjE)1oH=`*{rYZDx6+==LCgMbPU3$Vu4C$wf1Yv_|OZSPi$7V+sKU4sf7BMe5721V-Q#>dYDTo%kST -9yK->l!~f9JtNS+4RoG^uu2Q89^{vP>8_cUMOV7zX80#Qf*3_NEsTeRe&HPzED@BHhm+|C! -pjO;4Nj-YWf8LfRdPsnTNzfD5;|MCH*-zCU*h20%H=?%~MPouP3BLBb<{^_xw5dP=KeXk9O63|b@WOn -)acXuU0|BK4@=E?YN0Zh@mp~@Cz?+prX6BRVug6p4W&#ArlAx?ImGW4w;gT4pjsrS)agbgQq?i!)@WO -z~R*TIV&cZ*-m*<c@!A$M(hZWQu_^}Z -^dGq+=c(szaj3sKUe3k!9LHOj_c3#vJBxz^DsvQ49A~@=?jiBv+!wA_L)KcU25Ji_GBv -ePGtNT_dl&pY)c;{A^i2U)4WR#x9q^Gx1}c -vzMH%@R0t~LKMQg*bBApcda+&L~wOR6PKD^L9TCRL?B!%Rvuiw~^Bvob)I&C)xoP_xMPk1o -RS5YBB4&tV=KL%xFsx89Z%4(g@3D&}!s)URh4IpB-cfq|Yq%xu2!p02=WbG-hkxUh<)Jhno?5s-^LT? -0^{Ol4}cAcmFvCGRR8Dp}tO38_%A^5JDZ_ai;|i)jdOGlPc3^h(5@nUls9uvLSp-=wRmH2#pUqxjp^U -ugbU_<2?4@DwgiFm@0OZgdLlJKY|m-LLXD!1*^!qp~#A%NX$bf%0f9 -4iR4r%|9I($)26rJ0%Q`sn)fd7{t0|jOVv}Rj}Mu@7+(q@`!-|om+hl$vhN@2U0+ -h!l`MO2g};7$_tzW*u3c{CkG>-wk+017vXP1g*p`7L$d?S+#<5b=o@|0;A3P`>!|w;R&m0VW)Nt@|qt -mYws`h}6*hBUqs8po;GDZ6G{#$^lHQG)bt!nZ9TX6A9di$eX=r`E{FhW*dK?yf4T#+bc-V#~0tywoX2 -{zm5dTR(^;v4D>kqOh#gUQJ6H4vx8nwotno)VicIIv?xxH53?4k3pDVaWUOsL8pS$7X%GpNqzpc-O3D -5Yk;tq+1Ahpa&l%xfAo8Uoq16s_QI|FdEgMYw(MHrv|Wdi*CJ2*9$UvXB?hS2PyI!k~9t+rU5JGKTX@ -iPO1=O9?TvVqma_7Cot7xwdCq?s(Cpr#M%riDLK9`q0U{5$T&5S30o-OsD!t8dffP&^KKG17X9hkU~L -uQl67tswOSLi#{1#;Iy+@dd^OoPKxeM1H&u$0F}R=E%-HP3c --I0tABa;U&Hm6L;rx-KeadAFfAqaEI5+xNp&Q97pk${e`X6}@efUWcvn-y_AvUVh)ol_gxm(pd)XP^i -_%*xy^G+y1LW*&IyDI~JwX|Qa?0e(}{?xlhz0VczOk)kAhQ?X1XcATuuV3n&F5AM*%k~a5mr| -uG)@odJy`45-anUk9{&$<@3H-;vUds2d5UkYRV}VC8QvQS5awn2W%|Jyl;&jS$*g@lmSpGY^My`k -X)dl2poI#d2$>@f&;nH%u1%mPu%_=i{Psd5@g?Pg&YrX!#x`hLf;SEhcR%aiL!u$vyTWp+lr)zdym#) -gk7=b!Efe?9lpD?xUnS3&~(hn?Fp=EF|U{;hO5Rl66}Qt) -f{kcaghbv>nyNdQRd(*EA8WEsTxzH>YK&TZ{Gx71xke*eehEj2tuVFt8}?->F#*TE{|9>9!`uc5Zw&OCbuTnB;Jv#f6Z%QlyX0<#ul(%y05Wk4r1%w^w9E$G!;#}2TmCvRwb%% -OF%ra8ey?M4x@&)n4}+5 -lMkL!SpC&Sd+Yz -sFb;QolEmHXr^CV2_QbY0mw%f_9F{$u -k~BgEPKPu|0Qdcag6w~zYoB9F_e?YFA#@4w2uU*<2Ngv+Md74(T3#QbtC>FUR?lQno(fYo={n)`*!w; -?e{)ZiHY*G=TOia{P=>9}u+pC4Qx9#T!@!gF83*ZV}V84%jdUSWR@`~v(98VCF0Fl&fB>W6E-qv9XWq -6!fuy9-y{03FNu`fUOK?$`CF2m0Y%`OQSKm3``eWkk8%1(mx?*Z1e4azEFl{DKL8E#h?%>ZaWlTo9j* -lUoMd<%pV87BtU>AJl3`0R-c)bLuLurt?VuIi4@9gLf+5)g$ginBL=_Grh93V^jJrD5o-PY3`Ldi24{ -#*L{6pSTD^kq>;xEB_k7!I1&9|bu=8BQ++?@ak6D;jXPT?z29xm!b&xOry&rFn>-?<2o%YEhZ-_HQHt -C+CnLR}ql`pbRdu=fEPD2~EmY34@Z;{b9r&&%pG7>671%z2hMEGdk<6TLeVZrp@E!$H*Pn05CC+zHx> -NQA9g=Ih=#9o}r1&&$*YinH!amIq3<)nW2LgJQ_n}(eF)ln%2{xaRqOurw%Pmh -0nK3Bf{X5eXN3IdqDvMUi@w}&g -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 -{N-;|t)i9tNS%eEv> -b)f)-fmD5wNd9i`%RnJb0vrOxkqO?Kff2`#ov|mnNYp4B3-l2EC{&I396P8UHArH`>>kMjs2#q?x~q& -7}pghXT6&h=es8I9OMw*oE75Pr5Y2xQvrPcOYB_Kmp -R(6cm%ngfkRBVp7k17eGVu+rK^9uKKi^Y8BYq&yUtn{26w`U&^13_ev;zyEq9dY_nCiM6_rU;Dxyk+A -`YtB@cLe})l7e;KCF#vo7c%ZWa!FoOGr)X@~Kz|}+Lw*`|Ww8D6FZm;%mjq@3`fc8b|t8q7w_E`@0w( -7Y1ydur0cwl-?=SL8E@nlov76ss3(n;Fj7KBiFTt9Ujb5!8X2-C$|9xB!v%xlA#23&=w_XvVAN4S-i8 -pcG__zoyn(#0ed -z@l+Veb;&7t$hK~%bBwwsLt~9gY(-U_GE%M3({lJwpHaH1sgR@Ut{S)R5C{q#9K;ie{yS5cXVV9fy)W -5h6Qw^N|i5~@JI)_ds)G`d;bSil{*0AilNB9ATkp=%40r%2mjabt9;zQYWqDx_e;B>~QO)=w -CQ=l+7FkFX7<>#P9x_+T1OKb5&4eh6X*;0L}@2 -XEy;4jvyNK;l!1v*Wmc7na2RYG0E*SA~lf&89Jh^C7k -VFnX`RF9+xQF9E_kI4t}|n_r0>Y___tM<^?TmppFx1^D~J9eh^D2X%W9`6*h_MYL(}yT9>(jQrQnzXG -!TVn_YP?`5BVqZjv_krF|!McG4r5--Jy7-j`X6?;abXc0ct^)EpiE`Ij%k^RZoky54twF5+D<;QL0Z -U_ye#;Hy!`Qf(Q3#+kx-g-q)86MfdX+qAnr=>o?%MN}X$j8LPUyurFrD{ydg|y*A>wElsICVw_564;c~yc5o -r9BTvD51%LO=)XcXMctw>vMnvrOHJaufmcC?~32Zuhx}}NX3SO`9TTDZ&=v6SYqYlReidf~ASzBnla{ -xk@vYdxEkEb_WOgVW<8dK{`)10A)1tzA;@4u;SG^Cti?hU0C3#=@hW;oRbM$jsb=WO8kKB|cps2IG(53%@G -;+qsoo3h(Q+}b-jw4Qj%Zn6<(Zr#6K}XrcLn0s3x#Dng6I@79PE*BIy ->|Ygpi(?`SgNJ8R2j&_v(NKtkfeF-3{%9V&rAzL9~_7v18*2yl(KuOw -7tjOo-PCM0HB$gF_LAZa-(zPLVBFAw{E6$u%ks5%ajM}F#gM -2Rwua|PsGZ9M}djrL5rXGaBV1;%h8hyL??C7E)%7(-;=uzeOf*8QQMkxpNXMmweW5Mv7XN~EI=#F -%l0%BG!;pop0IM?zmvWn(Odwrhc%SG<>;*VUgBO_RTA?XS#}{>hERcK9%~2?;S(+vln*gK(-OE!tv0k -2oJCZFElrSDoR?&snZb8tZxkdpb2k-Dr?!i4yMc9D0B(!@UcXwA8=bjJj%JtrXCmLzs?kn8^1M0496W -D9G&=C+Q?z}#Nw3P?jM9VO$o#GVfoR0GES8#H{8D3_XE~PP<9YSvyt?(WsGiM}0cuEeI-HFskE7BxSz -1aQ6Mape0uUh2xa}IaFN#Nn<}|et>OIhJ_(WmmDnjQ{E*4TXLjtE`ovr5Wwc4jTMV9JD?)VQd@OkNFy -~WS74`pIcu1{Ufh}S5KtO)q+GK&*%xN+7f)%^;ORVP5$pfCHOypO8;p42dMOuFAM@P0!A=! -$Jz*mAP5QnzD5Yf4_{Ckeu{!W%$*Q%U?vnhXgCn^!w`xbZIJLU5cw@s3b6wZCE?+z3O?d+33`Mn4;LD -Bba05_Vh2G7`jI?2ikXRnmy7rl!FB>4RYYj8U-9s65g+ogg!*73?C@ow@PWt(>d>?cKk~Y9`d1hpzOV -3u#dhR`f9i#TPb8L#j|%4WLsqum#eWQyt~az$r@0t}^7nKWb_zhA$L}Kb&XmDS{r5w)U -S6O|fbLo$?iRr^%%M&^PeV6=bb4~kw -5}|=cnV<=ic|?`*%22^413GA``5enrrIG5D+AVWW2T{ulLMBWA!_Gjwdy`<2@q);YhKCOe5^F0Y+)og -0iOj&eO)0LCjgO0#HF9L$h}7NT4B6(X39PGk$}6;zYhOutIHAp3bHgL%;bNqp!+frupR+hYz4df5Qnh -(w*(76H&7L!j@}&WWh&!+JEY>$@s!>Zz-BVI@v}(D~hPIO>4f-~x`b*B7H*CIj74i91HUo@F+LeM}K% -(eJJY@qD>N{ez{d!#T9ODIyH!cb(1(T82&<$VJ40%mufpeN0w$r3OM)!Fn+4$mlVrZNE)dY`NucyO0$PDxTLU@D0wf?f3{r?|9rSZ|CFM_>OiIPFtbKEM-?OALxCh#9n>4%JTU-Vk8ec1 -XXYluh7M7W6b&5%iO!i~LGoS$cqz;24>-x@&yM%J*39lP#J9n#9)4STK06~z=WD*CtgqM^;#Lf=`#XD -N0K0-sv7Oo?Smj4W#XX9|d2Z}($Cz_#NIrX)NKZF9;A%dbk|wFE=uSF1R6!-LpPYPCU=ayAFBu{28Qx -xNa4`W@#J_vUZJ0}W-P49^?|64xX)Pmek%25Nlei!Bf*N)QL?Mm`9$aOCbv!P;Emw*WXLwIz3B#y{UA -xFl4anUq_m(p1M2@_s2Q7umsCfWn{#Y++p1BwOB7hB8%=iX$NNu-^zCxI{RJrfuUmeDN#9%jM8QJBBnIxd2qjP -wr*IMke+Q3Z@IVrW{#$aSSnt>Zq>l747&>BoMEp_xfRBhD3I7HDp7xYNj#G(G*bl-!{4VK{xV`@gr-v -Jff(};>_Ju(86Sl*U!`%b@i7tJ|XLxcru^{-b1o}w(ejrYm9M}q?4pF!rYVEk^aCd=6t~d1IeA#i{4u -GJ~u#YiAA5xd(@G61mm&CEZpnnOEByeL{Cj8FFa`6TY=_~czYxM6DKWC%lt$lI);17VF=c{p7Ij6odm -eVai)R@T}9UB%{GX|)-iUH2-cXkx>>#<=5e&kxeZ{JhEpby`Qtsu%4e@Ox3c6hY$-;XK$W#LQO0KR2J -vv+|rc8lG(*Magw4K_Q^(w!f_jI!iah5oKy#~;T4=U3ek=TP?ew-HYWJcH@%-=E%VJ$aA52R({=)Ne# -bC$k|IGBr1yHE(*_jA%OU7QEmsy=n^Y>CiuKIvSgo{p3O3)Nns*7ZqCU8a16*^a`o278&C3|(aowOpqF028TPD}E3TzNTD)T -`RlKrQL7EyFyW))=h^Z=Dl!L9lqC*BFWBLL>L~-~6iHZerWv2~JmN4O-8M2vF|w%3r{RCg+=AIq8X;w -yba3SfFJWEnXNH%*OozHfNgb&uBs@tnnU=rwNYLOqNeFWH?Md1K{oAP>ynq%iy*K1(951v7vmhsg>NOg`-SsS!vw>~cB&4BU8M -WOr1c+rnruurM00BR7vMXWy2102&Ab)<2a@)U{tbzXQ2K~JJv`<8XzBrYxIz`W^(2GB>ce>- -H`FHoNc47;)vwg2#?W`wGA{X}77;u$y8f>A+h``w)$dmdVRehxqs~-?<;K~54*l6yPS_=~MQsInFyKs -22D3w@WYF{bPYLnA=8vg2Y1H&oT@xE{(ua$8QmqcFB9$lVD0+y#FzIE?{ysRO_^y9c`W8%P9tDh_!U& -i9@HC0Q-(>X{_V_?xaF#Y{+AtW1mJB+anUxkR`mx_7EgJNNW-3~|AFtf;3Pc$Lei~#{r-_ybnDvnC2MCenNhXEHJq3=y>l)I7aX|M!L7#Z{f=a!Dr|^Ez@5*vJ6K2+=4-a -H0RR_O)oUZ)2czkG=HaW2K~9k;}#5BP>!DKuUF`fo@1JsX|AK?nSRq!M8`9O&@B4(87Xv}?Hzm`;&xO -QeJ@tszX87rBoq9Q9_~{&UjLp@GQ89exZXnX3paxY?}q!{cvOThf(6oSYWr_tww}zT;{(wYf2Je+Oyv -Tr_o>|kM?JD@jzHj|Z^OHmfmp*KqI@B4_?koV5cl837p9EQC=`dP9^Tiw+&|bF-j}J&^9PYdW-Ol*4e -|Rg@K5Ro`?h|K7P>#T=eyck`>uzvjYQn%?lH2u8uzLn#&o^I-agCY19~=#>hF`$x~q4edKH`8 -H`txxlluJ#I{sy-&iQ2UyA`=zhqaWj6wFQMB=x$eWu;xijITRLj0-F3zaOq>x;QIJK} -9=re-E*`TSC3d*GCfVXqHNl%^$NXP9%CX*zi(abjEF{GZR@mL>!FPe`nrf$ -tRw)ogW#(c?iMrwuX{H{>8_kF~;++VCNGx?nK60CAD+8RkQ!nunKtRCO+(uNCH0*EAcOdh`Mu;7$md- -SD8np0I8R4O&pnTFBK8J~ksD8xy!Wtm=LvUlb}4TkcjjOD-u-}>IN6y9g=?(i##`WN^gZ!9o}2mc>ZR-| -wd?Z`_zSnwA^F8de*DVH9}}a|6LdK{wpfEE0xTrlz5~OVzekJ3qo$T>q(xsY(%C)hdNjSdfjo -2C3wiXRXHyMoJ1a3qpP1WQ&!^=>H0{|r=iJ#qoeZvvp{{~-m{*x2G%Q5`(q@VK^@!twjr_|y9B$A{2GQp4hJtR746u)RcA3+WNM@Av}Dfax7f8yX#LXu)1ZG`kM9Q%Xufl)_f`peZ*;?Q2gz9cw)XrD;pFlvsvQ0&NnB(TGH! -akLyD0Uc3;gKZl>UbQiz59Xu@osx_pPX7-|B_<@W*}?_?v&wV)|-`lteD}pdrg!8Fn(*@W4{8nJd%K^E6X0K1Co>bjFF3 -mKVb|pZim9!{-z4Zd6E4iQ*Hi!?aM8?rD;xX`;!AT7qbt~RLYf;lk2vVHYu#!ut2Poj2Cr`?c;B?gU{ -AN1m#Wd)0Fai`yZ&%qu&=ErM)FzmrIZzPFS{-~=Y%l${v^t-xw_`|rXPF-kN(-Sb;L<;DVqZdGe5g)( -Fh?joy`g+wVP?6XM7!f;|kUaK_Lw3J99(6o=>6Y&LS*^h~BH9+wbeX1ZshrW?+|HFCK8=KMK`1^X_W6;rw{Tzfi!cIE{MJ=&m(IN)6v9?Fa=!HD{jqur#7D~<^W@kpuxaW -C2S0b3(8qJt`-p|gXsJdRSZ_lCdy3wtW|qsh2-yLb7ct(dNaJ$uFSj@TG(ODD$CaP`!e?$TDJ63=pK5m)*0& -YH8#Rzf&mU+r`v-|LffNyaEaVUGM{wZn)9p1xHo&(lOSgI5r@<=kv}by+XZYkb*;TwTwKxIz0pR<}jU -F+@i34C^l%^PYvvcxeFC7R=O^Bko)M>#EEb`}dMl+!sLplROo0{vG+-*X%uSvzT}~xl-)aV_dO5YPfT -NXOSSb6u3xgl*s_JW>n!xk7ubecy5FtyJIhLVMPy5182yL@l=50i%+kyT!vh?&-1BwE50$FR{tDYK+b -zL3r{>G(aGzcp3e7Ytem)YicEoJ`5WBSeS}=pcWIyM%QVgl3PJddBTjd8!Ce86@VBmN^ZBNu3h5-GJ= -6}hYB@ahn1}xpwMJ!yk1I!C-Q=&O{930wGt^0~*3ifpBThhD)Coljrq7%cIGa}4a}fh9Z0!8Nmd=bbq0VZ3L7NLnR**CrS6V_~ -v%D&!78!01K$sB}oV;9Gqj){t24=3kEwUv&p)W!;%PJd_cR|4cuEE#Ws?$_e1Vuhxh{ZjX36h -!sZPa_IGv+R$S?SPLh;5O@N}ie(7TvvGt7_kV@mp>xDY&fpE&-BGzDtAKs(5xEP*B6qF9hE017#JBs{u8jWdZ&(S;0Yv4rLh@1}ibz{7y1p{kd-f_cc99jF7H?;)^e -fa!@MXb`ICfGUbMhO>6IAmo$?*`{I>Z|VQPv3QHa8E0);>dgg}DA(ftri -5->y%Bu;`5hLOKRM+k9vE71?rHAEgMcvNt3V|+m{5&Y4F`l20;{e}L%WCKMG%o85y>2QhefQ7`53fu@ -f#3c{P4*0-J(Wkls`4kcF0EdMCLjL5MjpL&cf*;HpFmyzmQ}C$5*n5PL!)Lq?28KR=!bj@fj-bA@gsThP~L!#IQmi0f&4{M{}LT(hf85)|1R0Mx+meuA#xQi$=0yZ`zdb^|F>>hK;8KJ*J -``N*(o22#(^u?A-vnE4gZ5YvZ4sJS%+es-(hOEB(M1aH-N8rBa2J^tCDlH?C1wo4zfn>K7XmWxcq#qq -!GpZq;!8OE^Zt>-XHGL`;Ph!8)x-xKK<&yImENvUqXD*ESxkLH#m?OD>jk^ -dLeHFWA(AXDdc0ng@E~|Zoc-r{B(RqRb0-MjyE%ElgTUmngDM7!P{*x6wFGTTqjYps8|i85;ww(nQoo -OMK#8(Z%C&6r)(c6pUUGX{>tc!eBpM{C9_>&LSWtp1j?iAkUF -Q{DX9s|Ul#ygMh;V02^E6r*a%;CwRg@zl#9pLM9-v~n`N3s6VIj2=qm1_nXc6h^i?^x);&JY*h0Y{ZJ -qv9#67Gqnz=qhrZNhU)2~u)MC{I_ndm{pv-fdm73a>iZHtat|DFL*cuucNXp^9{sE}LE65xcg7O+6T$ -v0)Q*db~EHon9J68Lkt-fjP~!*Ul}A`$d_6Vc%-WEy!N%xe8&4y&Dy#ccVRpV+)UqJ$a9Z+Cv;>aoN7 -2X1R4WM>5(b3Up-LM1ekwiR|vf%q5Hy+mmW*CWf2hsfn{mgc-TXIlyzKPLP+8VyA6nJ48cRxq&9^Mx+ -BU)Vx(gO7D*L%;#KW&o_eaFK>S|&cR(Jxi}CO~a$QP=2GVL(coW(2CykL*G89?w-*gm^m-h?Wp#p -?m3eV1^K`mJE%&`0|dojChdj8p%;aj;@HYE+oAhyshbDq!V;l4#U?u5t_Eb_8O+D;he@ESy|k}0S3jUmEv4E==1z!NWi2yp`lSSy6V5JG!A)zel+crV7SJmv~m0BnEsqOM=tJ*?xfX8~y -g~zPdkGN5uOF_o}1PcwAndC3$2@D!WC=pJeG`;0em0DjG2aV4$wC_`Sb0_gf;Q>ryB>9aot}q528C39 -;2j5ekjTZtScRCcLtTOz(UC;M4|OJ}-c_)|^@6-VL&~JA6{DDRECPYT>Gzoa$iLsmx{FA!c@8iLTY`> -rlQp)o%)UH&&Dr0lb~}EB26{z2Ks(-e}MDnZqZmHeg@5hL(5Hy7boMew;aTdV3!3aL)k3zMK_Y!Py(hROE+*fAB*Fn0WVU^ -hz60gvv?v(Wmo*z&zxo+tA|A8X-|FEZQhblkIaMRP6cduexcbIdu_<#QIy$R2Vf2(xbN!50BR~8>}&U -f-psZQ>5r! -uX>V3LUw9WN_3*>{tv54md_oJFxq`9NCAzEFnJn-_!w<@Z@kPQ6G&FEIPvVV0qts|JuY2SnCL6ej$k!xsLKN47T^n(eTF+UL7zWATM5vHl&eRL#`Z;>6X@eX -UQ3=0H1&{`f;A6m=~y2dGlmv_+A!y)MXMa}Y`ij{5g|MK=G%Z{RJwAh@dICJ7&(Kj^%(f1%)&1gj<5J -HGa_PY-n`=w;Du -K@kfks15RhHKdO->QOZz5@f-&vJe<=KF*>|LeU-<$~oKIc^u$cKSo-{?%7d0mQ+TL3 -Haw@o`y(reze)}?eG2KSGKvP!Q8B$W~NyB}8laS6z775_+at7s9kh+W6v`}Ij;+0EAIC)ilj1Nr7iPP -Fx+HS5PVu!i$EGDpxt7o-On(iV1Hf=J)QL%#QKY%9;-uSybr%P+r;Es3*jeA4GOq7)WG_m`pIwHuvDw5Pqn|!TA6JtkpNiyk>e4^Cy1;V-mF -X?TEmaCw2;sR|s>CmR`j$H+r}_{tqhz{@6D!RtK&8J`x!RYcMC#>-F6<6yMPz0)(1196J0c6+}l<<1gtzgtl6v^tGvl=f>F2ezbc@IGv`(W1jU>5Y1 -YQa7UtmO&b+|htBVeE!&p9CuYK}8xCIz!s|dtPdUWbU>h7pL+`Ijq -iR2wm|Cl01*yHE{a+6HJ8Xs0<5XoTeAsIKjLBfr?H)79WxtcE-l%0pdWYmT)G14O<2Jb*sJUf8oGTB= -+sHYjhV==fnAIG5l5CBi*}>z4p)q!XW -x|x85BH!d(_cjs@K>0gv#m^#GYTAzX*_V4GIr_Xei`Ng8K|f=J)d#TU~hr@%tY$4zYm8pKj8@sOV1(U -^0V-c$gq)ya-flV{5sdIoQWK><)qq+DSb;X-JG&%@rFKVqbMgC0h)Yhs)kf8My}lnuxoLeiFr;?|>;n -~5%50S78DDPBBZZn(?R9MnrtdT-UYpHLQg$&l`xX7{IV!`!>B+11TXr%O?Y&!D&_@qFfUnE-?;=mMtJ -64+on{)RcoZG*Bxs%Zz3GnZqpEODZUpwf6>^`ZJnv$uz%?6JQcZmxC*);(UZ36$0zZthR_PpbuQk@_)gehXH%WK)Zr__ -E!h^5RfPOUs>&OKb*k+J816|*6#s(GSCA@zM?V>F3DlpsrYyLgmhOr2CZnMBJ-YVc@CZiwH>J@Ve4m~ -$?u3^244DB~##)g58k`$v{^6O%B91fH|8+l?S5L!^C873ObH#JK;(&F}doPk*jy{z~)im{oEA%Vj+ja -9;o54<_9mX1#u;J%8xt9WeBtdwtQ<`z}ZDfA&hhq$&U4D!)lqes_Q-ITD8SXXb@Wej?Hj{|fXIi5!zJ -X?kEslKhOS6h9H)pEbtm50hW^sgF`0=D&|(Jpmup-xxoDEQ%bHIXl!$KT`5;b_d^7e(>C+*)iyY;YUd}Ne}%%82e-;u}_lqqtA;Rv^Iar^gACdV$W -YXMA_f7{C-4s*xR?Al)Se9>c;e6F`0a~M-Tm?k&>>g@ZsL=*d6s4zafM9s+o7BD1ooIOZe@2cq?Bg?ITfar3is=`Tz&-0fiZJ=#too#UY|c}@Mxwpxb))AjJ6{{H>_mD>aU= ->Go7?E!yue}8m)ACZY~<;Z_76|-MT#r#n!W{)Z7kbWc~SZ+-o#-Vko@TRy^Na;t6mjTT4vbAuxNss4b -s3^sy+V#SA?>IUsvNe~_TY4oEHXX!J3PI>xNF${=Q}7;IW-hBUAUs^+IxzBbx9eN(8gH*T(GC4JpxeV -_PQvug9;pT4cL=>Kc;$HNz&n~=7w%mme5C^5Qgy>2UG9x6fN0!FPYa%>tlq3b@fxv7JWmTv?k? -yJ7PWa#`U^*KE+NO$6R11&W)W_#3)56K@bm7EoTJ`s!P)MNUkI%wwQN;6&x#X9SZ_VgT+fT>2d2buXm -SN+8K!Q9v8D<>oyw<)_!PVh%4A3@c;R<6Sa%_!z*yIVqIENJF&g>D7)oDre1Ki=5AO#c=DWD$H+jCx2 -?#C>!bt571eBpR!ZpfNOw-@z%lEiFKcvk(quXW`*{>oq%M~zQ*AeuP9IVs_774*dA!G+WhsJ5Jf#@m0 -L$~p18hvpw>E_b+;H|vJ5XkIMzOtAz@Sc`Z2BWRrSR&r8RZc*>j5*OY*Af*QI>pz~=x!8~@nEB>t@ezRt8&eFi&HGs&43Xvz;#^~J?iRpaa+4>7_k8;sewG;@Kl`ja`}iaTfV;o*yQ-63XDU-D4vu2(tqJqHXDwMl(1i733q>;xBWn`c8F+ZNR`t}mxzQ5=d!%1(#@fS~h*)$z-5Td*ou!<}v%l<$?DxZuv+DIr8wdOk5#9aEFWa@kn9)Dsj^r#!q=n)4JKk6Mh;xOW -Reh>q -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 -+I09U3m1XUp7)GyYyI0N -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 -__yXF*iVACi_w;bu5^(Y+rM`&d%%2(y -X~gPEAk?H!;nDMPyt*^Y_p#qu#w|MP5U!T|lk&)3uP)X47g>pGvE_anck -NgL2DJPA7r?~~;DictBPfZLgc9xKvo?WE1J?8r&r0(p+}mfc|b>vaTrsxB$A@GssqCdSx6n+e^~#eW%Ki5qkM3b1s(*C;K3(>3n~t5DCsl+98BXH)-I=HsRJ%|+pWe%_}znJxh&*`x+%Gl@YCWM-cyaA4>5 -cOcpsRViG=5S1_Lw`CW-yR-?ngiPDy~YTg&F>#`QG{p;>5LL_Nn~>xAXpFi`@t7@@}%V69v)Jiipcgg -Z-|wSje8xZTpsvqIq+Pl@~UtKoZu$4sG@5N&6;u^^r;zji1e3=Gv?g&}#B^L)`exSx -$QoHLtO?0H2z)BB$Sgak&jxBu0PrT?#X -%k_4ByIN}4(m9<8aLrZvVAEu3(dX{3FXK5-@-&F0T-BD%(5sgi?HbqFJ%0d`wVv}g$T3iSfSi?QASGE -Dq{JQku?b2)({U6QWN-7VhsH9kpwesAj}Bn1JCy5&tJ2y&u04-x?;vCVM*R{6nsGDVMAo17TVo9 ->k0>h#fx0-^n};^-sjhoXYVKv+~*#=EyA#jqEvfO2Xa>UBS#8Zt*0I$hL@ST51_h|^G1Jp*ULyGqH!n -Na;k>*$DE%*rLZ&curM%%6cD0jIx;n}9FCi8UsAO>7@>3DKQ2;-2re_0Vc(mR --Si_2HrTMJpka9C4)qKcj^{puyRR-cEdFSk01E(T)uO8V^cohv4nju%5sW|>&K40%Md46$cm&mI)q86 -p(EhiIB8HjaN=$ooeoLd5@S!SIwXp6T>Eb4~lZpPZfFkVA}8pL=a2iW3_{)V#j67ohmKzJzeRQoTP$Eql6DK8w1yp__+BH^bt -g|-#rudR^!cv{z%DT+{Cs86t)i&IqB7ze!R+w)~TJS9<_7`t-i1(W0@W@>LEM^Ps?-GE5vT}u-N@8*w -^oIRShN$y_o(*Q#|yn&?_Mz5@C2pY4;4821*>FCf;Jlz&U2QjflRH?n4BPfLmnoXOVcv2p3eC6<#&~l -*4k+;RP(|XVM!|$_g+LKEu^9|xc<-82|+!PQUN_%t#Au~owOsegEiI=0KzZnh;AnLR*t;W7W+>cVqh1 -Yn7@l8{s7k0V5%tl6thy8bOlc}4W`48v9{DC0T&pZ7XNByfO`HHLl`~<&6TQCjL5VeCU5~q+oU`3BPC -m1DA9Koog(;J21@20chSgFgu_ -6goNvk8D%%VOgXOsFWl}Ig*Tz0jA`Kbw=dF%m^P>-%ow;)qgk_k&pi8mu|&_YKS~~DEE~oA6fE)J)b& -yN_G^szl4w<5l{4}lVZsM2ovnUYv`Y&E#yF3)IZUds}A@&j&%Yu1r3o=Fq>lcJG3=_NbZ618!2)Jl7B -%```KK+$<}Ki9GvtwHxS+tQr-^+-n9OrN)CJuJY>lc;dO24b;mxxfonEI8}1$y{VpH&Gu8Z;d{|>xu1 -E9k%3i!3Ed5dTDU+I?>ype-gT#TO0QpT}5<8ggzY^X5*)0Npc8`B{i@=}Vw{N38;XGn8{~AE(hSCKi)EBy(qwT_$|clNwJs=S`vX#>l8Q#*Nx95a2=p6TzZj<^C(5}~1yt6U -3f6cEUai)UhN~b>U8kACLsp3FNiU62yiPVsbmB&!gY;Af6lVlTkfzMQ)JB7^0!{fm1%Plei+)NjK~3(6q?Xw?&CvI97mTwB+1Hh^%?N-}!D53vR6lBnE -qNq0-w!;|t)L;qqB~Htw@qZ%~Am=JeS1Z;Op&W?DUyP=j@Gt<>Qz`b8KXV5XcM-nEDWOi)(km?R-B#WuriON)6z@cgKzliYZxwm! -$2b1I7^m~lJPc4yi=^P^=`z95a4S3(E!ms*VvMArUrn427p@1XHVAKkby`CqetDEb0?nx>34eyCg&NtGP@?pEOW%CYrYQoW4_(8^=&iaYI|bE)+EtKLkB|gI4NqGsM;5(bR4YKjLAOt!X;S;R{70*!*ZjI_4$UTx -^eX_$*o=eoemBE2k#vjN^&XjMVQX8%k9Lj+fJ6agw$%4<7%GdgGVgB(OCn-#B%kO9X!oJb9Dxo+yheq -2Fh%|B>a7k)IRn{qsyA`^yPS4Y;O;@}$cM%wv;&jtPHSC$I6}qhkph!o=>}SwLLNztgI@NQBbmE3&wUZi04YL!KX2-Uky|M&$br%T2 -#DAs|e}d$30(yd3y?SzIXZI21}#;gXp+c$9~0T=qnu7)UMnr`PMAzi-p~_GtOh>&!L)*!RsoDeDOu_i -JKIRVxiAnTW%&D1>nujv(6?1a1;+AYKD>h1@apVCrWnuT|h0xKto|Na8J1pHCKPDAl?1e9Fxo0+xPt? -Tj$Orbi10AOm40MHsp|4_t(+cjhvW_689d -8Xlw^oy}n&c$9)Na6SPR7?j7H1`Ua0MxwqUVKAb(wHVRz%oV8(lnF;InQPZwMk7|)@GPzSTB4T2lF*9 -)<9xHbB2BDULnpJSAJJ?^Ub99_S=NL16PPJ)jqXD3j=_W}kyKiFT>~E{7*y}*TmhiQ!cv6d_R}gL80% -P4RkO<@CrSH`#h~75Z}a{V$Xhx?!kP=X$EjIjLOz9onavWjmau1mxj&NzhY4|oO+O6`9cz7jw-owwSZ -CkTU-svkj%EL%r~UYN-M_(y|LVRzVB$~h=WB@~6kFjTfujToffz}U1V%w50j=A&jwiW(`y-r~rJG>Si -tbim7!e!BLy*mPlYn>FmF@mQ*oN04>_;9DWVQjgPh9#HsI6cygnv!I4G-e+#%9lmjVqt-7D-9?SqO>z -(Hw6|Z1nk<+5jw^ZSBf1+#06ouAYtTi)-ZW%d|d$+;J(suOt%a)&eD|eWV!ONGt0WJlWu6jBI3$o#r9DH-Crn@%O&eZh%}>)NKPeAo&7Ev)!S*yt~?;- -6h6@H5x>XO{{5%ys_RWdeV8oj-#YfzN=E=4;2-bAp4%Vgc33=lrN&tjxAm$jD)-XbVPXE$GfB%ee@S+ -9hl{syi|Oa*^yV2?%}8O%=?-a~zWATMhbnNM!+BUO^R32K9NK-{#@04B&b6WQA5P@6#jE?pL5!Bf*UEhBQ8Q~QDsOmKxHC<*)H@qDmhV3cYAEia~LPDQe8MoFt>kI2xTtCMRzL|KH~l)VQ;M -UFn--FbH{)s*MkFCH&q{arT55dmnsa0JC&@l8Wq)#fd!omHxA=(p)Ltg60PNcljPrWuk~!LtlLrxtbV ->K5ktD3l#QUQFRws0%(H&R|~&SHov2`0z*?^-`cC{31x5iLt3n!#bL%?%4>%l$1t}$QtRzCQul2%!AX -c>jx6@rL1kF1dXb$(w3n%FjiNZBxf*}K(aFuN-y)-3` -FEg^&h_)}0Hx$do`*Le823uZ_T4B5)IFJX|!m3h`(0nouxGW`^2$bc-g*Uhnb&R^0(R3Xe^{$rGKYRR06h$bCzz7&Z(C;$8!fo7a)70K)<%n!Ua#^ -yWHE0tA-`bz>PN#xbxCMQm!LXBw<8aq-*yr0eld){Wp(}{PiH*3h;>`@)n8({*<4x6pSdRn#XizTO`m -Z>+?F)@|5Qy(UGuuuz+jX8Gc;i8%yS4l$;}v9o6x})1QL=%|^;PS0@Ni>7B=BZE7H+GWf64qRH|E#vH -|Ccwzk|tboheZ!wN0^JUFU}|#Se5T!k1u%ZB{)1`H^MyJkrAknh}^b{s;;&O`+ -s(L!97A#;kR$$G8mr$obVNloM~vP^|CJM^Cv(+ej0_RwT(JAa^sZ)*6eS8%KpxZgV%(=eDjta^~WavMVB-j;J -nA`%e@*IMsn~2>S+wHEbrF13HOHrJ7+^SQ+Fby?0J8usAs&+$D)&!>Ac)K2V^yad#be{m4c#LAbO22k -q4N1@TRV3JaP+4(JRk7zlKRw#Qb_|&-ch|gI=FKDFj`}4{!O;H-J8oU_Xx)|NaN(_djj%^Fs&t-+nRC -Zvyr|y_1hf{U^`*Dn6qKPCzILQz!+)6po@KNMaNS!_aQrKoJB<5h(H92n~Z<Z}A-4r+|{(ZW#=BcSvdv+r-AfT@%52+90+IV#Hey3XZo%6TbI*vR&VTKz8L~_*XLis|d}Y_8OtD=| -_Y%)v~xt%2j1_jO~h|Vh=f3)ABd8N_liR{tjrY{HcdAX^{zU`eQ=3PaGGYg2-nYEoWGCzaAOXOl{Igi0zMn{ewqRP?LlsP@TSI<=oYGe8sW -o3O?2`L-W7YArWn&d6#0tpyl}Qk`Pp*{Qq-5`Dg}Z-DA-#0nsE&vM11;z54;qnn+L;ki7rq%sCF9SwG -l8tr@};~Qoc_qMO53tl?!7}uoFGZDZ)GZeAULGTQzQs&#xxX4Y+7aLcf%I7B -gyq+5A95RDBYI$HdQZTTf{@iZJ}=y0)ux~^Y6E;H$E-8HI)%?Ye$FZ#_UhCP27A9XW4#)73(F*Mub4| -o%$bb4~5|m!WOi*xud;#zMc<~Y|ENpwztL8EgT}~7W`JYyJ@#)+u&h_?f4VgWO_E6T4Ym5fRJA^e53h -p{dRB{T%*=={YzjeZA+1%^(Aawg-Su$>-!D)7~7<3oK-3;j^DDu|EaJA{r3%9e>k*7TsqbAvddj#Z++%?eNxOzduCp0g8H~SdqJKp7GCNRW3I#vp7LzR$Mf-mFph` -q!P&A|v9G$ZdRa61oXbFZx%W=R~^3RWFvja%DxkldI@pnhJb`CF*$D}v%By*@2vXc_WxGx^}Lfdc)*(dgm2`1{r!d!Xes#)|^6QpkGdm<(=HV&H)U<5<7o$jnKntNGnPqwAWl7 -<3xo@Xlc&}VSQ72k0g+ZSy(9ROzH`%KG?JJo}A_kOyf*GVc|(;F@ajI)4>{+;7KDt9S5yG4EtY_^tG1 -1>;F~QBx&=zK(vdaeD_J;#KM1RM<4OyOR~PH#}B+MaG+(H3sfAEwn -jYtpE)9zA;2XZh-}lHnkHB+NPl~YAa(mXhv*f(IB|7#MaogDGl%AI-9Uby4J-%5>koxk{H|?HQ4Th8X -?_l8@VAj4+{+0;%EwOy`o)ncngkMvJFbFIBpG#o0Ma=4IQmvcv~shg&X0Y;GJ!QI?((P^>|t-i -u3o!pu=ybpwEE)J4bFdA6*AAZ&%;Q1JRwg%5eJ{iNbsR`qr#&R6mCfj#cbL6mGy8c<%dzOYN>-mG0_c -_rOEH4wst($)~8dY*A0&HB)j>tM;fTqn|>dynGIYqgQ@i0o(WAJ9j@c!PUX5CxEhORzO@Z=fE?oxSno -NZB|jqzclvCm~`=Hm-Iy(d7Gs^?S8B4%`E=lUe0`8vAxjS&CVa}C)zSPKPuw_#Fwt~h2|A$*4;@9L49 -2`tF-4%I4)cl#}`*i3;OneMUr~OYP!fu!_27^N<7{mo(IVHtI(a{euCbq+T-z&dx=$;K>{3Kv6)g>dW -x4rr0Hh}JwWV)h}}%8r$b*ZcS2}=U|PsDrt|TkFG2@H11Kvq9}ZUT-Gcmh?u2b!v-90@_iW!`nE%?HnMZ*QaEc~#vMl@PA|9JT)mepZ -nmhaLO^N@(g(=Z)X_!<)OtAaX8r#wyRCkKO?cZVNz62KjTOq`QUxP{Bn0sD9^2qv)$f+&MmCUlV$!c) -&CmclqOF;$P9wW6%k0ktI3yb^$(FHexL)rhGWC$Dc(#Iyr?8e)OJY5gc9kL5(c_ML{-_y9D`$*&QfCcfbY~x>%C6F!>}QD&Jmq@Z|a`0 -@5?TH7&s(}KCIHer_c%fSjUM5YpTk#wv6C}=VaK^(#^? -A1PDNA9n#PdjrB&NC6c{BEc$v5)N4qcH%@8jp*D%?ey_hp5oY}#a)3+a7mxzJ%BMHdQ47mzOt6J2xdq -LOX3VZg%te>hIadAcIVNamkok#{b(8wATkM)a*Id;Ua*b^(7B}dRZaaZp8(DO&>0pMlBvMULVt8d<774 -h)7ipLsAp0H^f{SV+6qPVH!1I%cIP*WKbaqWF=I~goOGy)>uYlH&-~K_Ah#|G-?ke9O)V-DqbQXXk;?C(#opZBGo -r;X)xPBk!aNBD!k7BBE0YpoE>OjQN5Bvy$UZta5tjl^%Bf_AZrUXWqY>@s-nsq4W$juT+?=A5yjODen -mg)O=+L3UCK~`yC_~6z+^og?&)1;eM?1Xx1@QbU$m^$e^XIthw_SXTx>nGIe7A`aZ=H&8*E~weO}!|C -Hs0B$#6)hj9kFXOt)OWw=As|S*Wued3XyKeXR9frt=?O|UthH19AX=n*_N-ObOT;6weLIGp7z5fGIVz --rJxPRq474DLt%S21mCL0O_OzpP%ENZvDXT@(tQeMtt{c)k^Ci~(ov{kITza89G6o#N&FPMC55w2p+_f*3IPH{yG)%MOHTaO)hT!O;xAj9#Lz=d4yaBJcF -6`|tWF+5{MY6Vkjt;w@P^q@}8NCE`MBXhk%r9B>^HOG!?xO{;((s*1NA)A6{Zs-zWVvo{SZ+0Zt)9cy -!Fyg%^apF<@3A{2r4cDA4au}n|!jX9N2{VR?K^jlC7)Z6m#d(>z^Ux?<^4dm($&}}pAjrXx -q?H%r~WzSF7J+EX@?CgmOq7fW&y__a={1_8>h)xJj~@gih>$XYNu%|=LuSLPACPQxU7YEzy`N0YPjG^ -It?os?Ev~foS!d4@Yb*jvzu3)5U5I^(Ne^BA(8{zHto~_6H+<5NF(EID82O8_*;Xx?1 -H8#GiG{hY4%l4u5l>yFKonL0=h2jY?XI4#}dXB{wwFy$_OeY3HJAA{Egcuo{O5`*UDPuE&HG^s@NioW -@ZiE4MyzGnH4JFxm{jRH6>-(S)AYGL+*zi5TMHib>L@fa3E*St^U7_~X^2XmC)*lOG*nWwk=!pRTX?0e?*2%#AxbaTwXIQ`y)#;Az25GTvUgv^E^c0tU3GGSDYq -r=sd@P0Kr*V2(kHSsw3?kvd+l7@zdl#gB=Trf3|5hv<=gU1~mZSepgLi#>@MZK_dNiL@F)u&%}OBt1r -*^G{V`wzM7{si1rjNrRj?ZyvHz7|xh6iIJkt0Nd)C%ga~6l&?ebBHxYqK9VB*5bbO0Qts@($zY!e8EMo53kC*jLnYYKfvzhdkHPn>#c%@(jzSaqb6;2nCgYiOZA3ZlmkV^TD=WDp*5{#S -|F##DM@lzp8%fU(c*NDirKK@^{ctQQy_~PLGB6n{Q6onNW(hxD#|lqWD2_*z#?Mm&-#A0kOhmyy8$VR -XMY`pHR?@(ZGYlfDHxl;J+TyB|IO3`h`Q-K{y^R58IpqZ4p7)IHxBd6)7XXo5lscibdOVHz82DneJ~n -0fGHsrH|)n3H^sX2&qyyjAxzmtUtk7A^6aol7QeQ+LMnMRMyh9%-1E56vgy}wHE`=TX9Yu9fMkENQ=~ -B|$o!B~Img&(Nu&tLQvrb1 -wfBw+|dPzuEn6huNTf9rLZ3HGv|E>Y5!R7*+)9W9{DQDh-wr}b0IS6r# -`aR)GYprxY$X1HALX@a7=fu}R&016W#}fI3DH{p{TuFiAZJ`KW3mDIxuWa>CVQd2(ux78 -|s+5;cLmtLP|Nq^_l2QNe83Es(($AdH-_fmX9HvPx*qwqnT_ioqyk6D0bq<#Rt&*Ew*#KgUk2TJZM;v -zzL=6s+n`H8fG2Z;-NVb_95V-{1tpzW|ONG)~O)Tv7k$I&`J>G8zIHb3jeJ{saSBE${gAPWWZ-;|5oR -H35)*>Ax|*kYia?plS7L!6gB4~U6tcgN2*Sh> -$H32dg}zj;8XqK@VmT8pgMC3v{Mo5G!A@U7|RYoG#&w7A|iV=o}8`N9djWQmmzQv1Lc%Ce16z35EAJ#6A#rb -q0a_{8gkGsOIMnSA6V8;B47Ftl8+jr|Jj=zJ2Bj-+!gtvosdgLBnppi~k!s?QbF*6%8O@wE!i4l%RI7 -7Rc|%yvE0G5=)H^ubC(lFZxiS0WYD`z^d<+QMyoMT44792aSf7m%vhc49&P{J3B`P>Aj;wa?%;w(>u0 -3w;l9eXU#R7{RDtM&>cRpVIqayyM!{inHEa|HJ^5hTnJY1V8URX-e1NYNCy*L8*HttKqE4_sjhW;n;& -ciw-T6!>Pay4y0;*HA(>fDDe8)8-sZ!<}YrlRyRCOqH={$P|nI{14J>0bf9_^Adm*xl6bg>@kSv)Lr0G>jIX|{x< -uS0N`Uo;w&@?s0|bSNfZvcoF5ZzyJIA&q>3Xq4@|wozy)35AL4d<}H4cp%1f?LU$rG+`%QJ6@p?*~+h -2~{l*Y34kD)&mm5M;2&qlm5O&5_~b)x4T2;KBY-7)v6kaXwE)r9_5)Fr@L(pFmo>fo03LmW);Kbm7s$ -@w4=OxIvvS3#NGopEf{`L+8hjh44<48OMW1P1lD^ui*3LA8(rTe6MdD{>dh~%_UH^ELTb#DhDNwugBd -!wLk^syxgPcNX}#w-)wjk270khDfH=03&*kFN>{T=w(UZNz?Q}52-c_43VaDR35rgR;m;%3vx -b#l|tIIp8ig-mfasPPzO>FgZul*yu`oZh|8eu^cv4UHiL=g%>aEkmM!a|6BO$*!FcG*5&K<#F3+gxn4 -^%J3R<3z>DHY59kHLdmO+gcK|L75e+QRHsGfbN~dY!i~))Q+$X0Kw^|Z@E#clFfZI`;o=`3WzoswYL# -Bhq!%;0>-zA3<}y={MasW32iHF>qZFN*3C$KU%?8u-Xa|D>QLFX7`6#4p?eFG+{QBCzqBI~f^B{R#J` -KM7BC?H1Yzla6Jb3@^~1w`7QRMUj^q}RSe3G%S69Rw;^NOxRt#y2Hg6~k*kIOI8%sw2J7)!a@3emQtT -v?eBahN=krpgJZSu(%1I{NecCF)+w>@9b2LYt_N2gh>Rz~b|T!dFECGd?6;g>A1oKe19w;xqdoU@{Si_Z%)2R0@;*VuUzJpBPmI+4*(m35%5bCbe$$VGPeVVq{Mj17i({!47e+ -RTdB>oislVkauJ`5qFl!hFP+ -gaCC#zmZC%s$Vb#hM1dr?Cm5JjTuSE_SMu2xZYZB!N)mnR>U3LVSH874LUJqB$HqRc=KxKG -@5NLl2|SJSvQMR?7@f^J%)%unpr+-ti(W^RFBZw-2?q6H?Jh>F=EQSAj~Z&+m9=961cE -+9_x?ey{`;T@rEIa_Ncgy~p>ZckX@#ty9n`+@g!da*pxnWG*GJFM+o+7_%=_p$>3&PqS-yLb>`DsYcO -!8vVE9N*MSuSo8!XUdHUo$JMzrsv`LhCoqhm-u;to!KzgJpo=QNG^MS=kqO-R*>8xvQN|D*-YmXT542 -AJpyyZvvGIHs+7xX#4o -0xYF{BO;5W~vH5&05ju`F82R!<6poBU&=L#}{{9Z_|Jhy?;T)hF8>DawKgL;x7qXc^Rk;p<;(VoHxl% -~Lle~K#0NHR2RP+lE-#HYr_@DSO>7*q*Ma3Nzb+xNXafj&a13X2Q@!s>xVdr?qMrSUVKZJ$mjdG*!Se)K&OZJr;!%l^q&~)JIeV1wdvnJ89IJ`?*Fm -5v;6xum1?EwFPlY6`ssmxZ_@r)rFmHWTc5t_?)bmO|NAd62vWa%{mOs)C0lV-_-Xe`n*8$a(qA4;HGh -NT{=1#q2U7g$^ZJ_0h2onICkB5H6>i$&@Gcwy018ZZM22kBV%wa3xV0N2_`9f(++P6`yQ -k&u#*2g-V#D#B@0IK=)O4d*ttc&uw!N;9j#yFMkA$F5WM?4klf5fk-Bt#(?Zw+P8M^Va)?KV{mDpKY8 -MN(m1)ST28@w$bt|x@18~EH*&!G)7ZpL8YK76~mdi@nDK_bdx}DHJd^5NOY}_TG -q@B-`TQ=vo@8lDt>SVrpUuSe$cUFJ6T}hB$1=eTR77qh~PxK?~9r(r&iS8Qa$3EHGqrSEc$|4^x)Yx0 -8TJ)@OG$!-E9R&D%lx@1Jju1J&ei1}}RsqXEG3?|KjCJWYlFQK_Qsqx`J^FU=t=Ia2^!{93odtKd`W> -Hg_fcPHWQC$LpxX}kX&I2-Y{9mT(7vtw;|=@X{Q~~Z4g22x0{+eo``-Nm{>}~i-u(jp?1tqz|09V3<` -Z(}cZq>@Ba7co!3<-l79P|9w`t~yM6LEJT*G`Ra4noY>2x^`A)7|jay72%)5@+LbhH7}LF2d&&f1{NM -Seu`sWHL_OVhlQc3RfdFVb@7IDWwSz&=tcth=*c`->!HE+l)K$%Y7a%c&{wle<|3cTs7XBypdehCkz3 -dVoyIC5RChiS_6*&O(0SD7mNI^!S9_JYbAfr#mVk#-?F2+y3-kjC%H1lw8<}_k~hPaHj5BJ~%wt8k5i -PF@hLAFoyKP5Jw1bphJ8a4F7Zvo-ZDqZBaq+SN6c74jh>J^m#?vuTD>skkBmCM9t&&ZBEUh07_u}bLRWGk8P4vEQnw4O1K%ABTM -v*1WKwk@oZ4hjUNiePYW!7vzUl%C3STo{{Kcfq%MmE;`)j|@$UT<(gn=Zq?;~PST`Z66(p%cQorTAS- -y*Q|YMR)+9Oo!Lfh$y(cXuR33JA)cfISTAU%|UQ`JbSYcx6msN$xFiW`1v8mFGfGx3OX#P2{iQk-UN> -ud1NDYVNjTq;v0B54B|PQJD-)bMk+Is;HzB5URR2c9-TeBxvE38i&#r*rF_1}q-q}_-gq&tLnkH4M56 -NWSLlvC6^NS7Df*Nnv=^wq(@OivoXWG%KcDO&_FHBl0^Yrq@xRH^$A*GJ= -Gt`Lv97`eb7I)~tL~@(&|E$__jyPgb0As=wUacT}(7;sj4s01Ms8-^RqCMYC7%^x@#Q(2whU&v%ujg8 -9Qiw#xxF^-Os!c@yzA#C3%So{_Ils$`LRN78*`Sxq0bcJ=<{=)V!CHrv$D3!Yb4Sie$lng6mgFx?3ZE -~nWHysaEE^C$k}HWAHOZ)Q!J1wg|x&B%s5CoCR00)f_xfkSQ<4;R0#YjpU=~7?)qhn -G`;?T}^h(O~EpekOKf@{yNv^x -?KWP>kH$jcT`q1nH%0gSgr!>oz|igVK=iXe_2yWOZY~sCNlk5RsI?@8;$8bB-E@(`orATW(>9BX?d9{ -vkNV4|MY$yakuuFc_SoC8Mw=v+`GphOAtk-btVJlu1x<8Akz$b|fXXHO7bm@ -sRHg!Gp759Ha5gmH~CuUK&}vS_*O5=LxXor|mQ^j -wpzLVx0EmU0(V_IgZcXxeiAFBc>j)(K@@D>)Oa;WUNR>QJ5T!4^5ATG1mwV -s)S0yWf2=zGoE6CNZZT2L1?B<9hA=+avV%N`BB}HlN6X}Uv^Q}chN0FAG~Zj&*VZM -8ih?bmY9kX3)>YZNL}Uv7xmItq?YQJ2YN8_GfFavie5~&ekpx>bDViC{Og#?8wvz3!>!NV{Oxm5nGYB -b-3B1`);H~q#YTr$2t>|;ML>_(RVa@7ohUjA6@MXZtY!K@sjtqXVE>UwqfY>qZV~Ue?|vWB4ch=Hu~_HdcRm7t -C>xih04(QN)%7Lhf(MDPVBu{NfzhKw2JqXSx_@LA7bz(ehl@Qn|vRYt4^MaM8K256H{eFhY6CvNz1MD -3td{=W?*y^;ZUz=cRXQc7D=PYrh9DoEi#0Iw8tBZQU=DVMoX;8N!XL-E(q1opGZ%|ifXSf%qRWig?5&BFZ3Yg?h=S|9rXz|T678MM -=Ls-J4-Aid<(3w2UYc`#)YN>l={1wlN(_a_pG3jgsRRXG3SKjVM=XZMf){6)exWw+m6%M? -{!{PK_gr%Lid70&J7*_%4c!cdd~173eM(y!qH?JLNsu9 -Vd3f*3I-D*+k(Wc$YESX0H!C;fJCPf+FaKYCm!0S9qAj+e*SFcehi%Ha}Ku+Y-UQg5>7Y8j{8_9X;Cp17U&y6doM%w2e -gurOb3LD%^1Gk%+RS3Aefy?30ogmzhm4ZW!WLW^6UGF6G#2n}5IvJ_P7IX$C~pZSa%)@@NeJtu{F%KY -t_*3kO=X|0&=Ibc|X&=lyjE#7{xu+FZ{HG*<-1;uqBBR9RN3K4UTVC)&rjQvschA^K4mRRAD=Yq1J-_ -|2^SHIyq@4|Qf`p;ry{ew)l(BLLovSL}}v%}fEZCi0{{$-;ki_cx!^2)zU%6=xI -9lW9Wdx32fhsmx7WAP_x7~x}DQngki7TFsy)5*=JgJ@BsH^VdXOldWKvKK!^@i~ce9u2FXMNEeS`2gQ -y!2EGTXp=Q3xIv|n-GBY$*)9GhN!My+nCR1ME$z1*B|=NKJbm)fu;2T(=Cmy=}KBty#AByB+oQoxA(=`HuN+?&wq~9Oer9zmXChHMps=@A1qUUe>{}rd$BRXgV|7Rlvxtx60$`4Qp#&3(t -U6c|RcKJhldrvG%r2*_?4ZUtf|J|cmW!6>tZlo8(S0{gRUdA5i_k#eb|(4vB~l{w!Cqd0i6fY0nVNw`(I-&V^>HePg>i4n -RS}-Y?kTjhSSlnqo%iVKGanHKrjCc}EbLMnVv?i`=0y?=XOIHMlm{&Yy#$x}r+-eQ95Pf{1PVtUWVt-{pI30mlqSzeCz!G-8kApsUWj47S- -l&!a|daVZ>+MYq3H>?{2T~E%>H!=R%M2i3Sf*AjWr}M8u4E*b%TM|Mx2L+0Nap=3#wb|aCNYhO}5sx- -j_co52Z0R~9wnoF6pVQrR9Z6UG@clW8a2H*SclOf?N04nD3EYJcqi_QOD^}RXTk+4<2kEYY3unKkKa# -!OW-o|cYX{rc(e^nCVz+`P!A&%X+GWS6o!Yc@B=GIMT2Ztuaz#712=Pr_5d{AlVr -+91m^NKB&X)IWf -L?ytIBp)CUw0%-OEdP^yxj+hqXQyMcX|H*6W>4Oc(g(a|)$`Y}X7%(L -U8hlHAvFTXrr84DviTHWqTsLK;}0L1=N?t4uY*u-Mk}%M((2&YPlMo0Yp7MQhRohe*$HJdT(EX9X&(i?j>*c({BPDp?`pXQVY3h`#J(RM#;f(=yGy;>& -~vqvP^y+*VD|aOP;;n2{z)@IYNxV|R}FoIW8A#FuSeRpHA$@j>Jck04#CeGRMrFH2k{Nf=N>xaZuF+1 -BqPxBRRwM(l!Jtdn)*8F*t0L2TR~!8CjveFzFPAweWADO{I`t7x0KmD>Z03ZJ-;Zj{BHBv`9DDrgnvO -1WHbH-k#9Rl|I{A7w2!{?>aTM2ckPSNeR46`GVxk6!{pZ2N66jKXm7_8>96>17qn%&?7LZ++PgAq`U9 -aYD{toE;Is8i0D`xL3ozZ9VDPTlNABvPo50^+tLNRftc^b{=k*_^+3|GV^P;u@ --)#JYa-LbqztfI?*zEnQ15JRi(C)`{0#|OLmvXLi+H$t<=q^NRf}=QoFpo{{)2abBL|(P*&G+BrX8wk -9o^ETb@#rqt2?nysN?B|U!y80v;u=4D@+{>+)Ih9&cd*`qdV{<;JbSQS^Dxo-z4Xwfc`yH8dtbKXsFG -#-&R68)ZPV=%^Ki`W14xV#NFWBm8#9POBLeaD*PRGOMn*=Q%u`)eU2WE8HDn-g9LL#v?P=}K3Op^Vk# -(8+^l5WUsN0I&aA>|DfPR``c%1UBthSYZ=y%69A=E=7ZCjUr%;$B|aqXr^ka5qc6GCv8!PF!1~2&%#izrGxGyCHSS*)YdKAcG-vtU+MRWY11)KF_rEYdU -in7A|>WNNgtj?mdCfaLtw7WIGy&Q_R6=rn}T5h?+ubO+-QEsr ---mO=vvD_@?Ot{IV^)5yh5x*kw#cZ}Mno`Fib{|XR+8v{-#91Z1**(%`w4K#Fb&V`Mo{x`K@tRzuH+! -$5trF?4`-T(e@+@G(gRg0_e_45sPSZU4=rcM+vcW~PB2rYOF*HQI_#KTU`fkoilje+PwSHi5CU@~f1M&}-z#S -XLPGE91q+m*F{tO=E>sE>!G8`;eR(qeiKIfFG<(?rbMR6F0x6$uFthD07yYr(!>~KfX4d-R)-31fOio -vMqg^@5ZD~u&51HGtavvqtU&`UpIOmp6dIY&Bp_BF4&k@mwENbQh#R5)qtg`fT2mjI45c6 -?d25^i&X0{p*9m#?SXSUuQwh=y>J)C&Oi#%cNNO1@RfCMu5{G~w;OuVaN!6HoctiseH$8AHS$n-=I<_ -tcoUMRdx?A39j9j5968ssB2s)RxJ74M+86wC6NyxDczAP@-|?D(t=px@&clE5@xD#gRW2 -FpB#V=Jf*sXR%c|=9UZ5kiV9qledIiMH^QpzO<=ZRohX0c@=?6GH}>Y@x?$gjqSa2I4=D)<(gFO4nH> -ha^U%<7GWH4MpRTLqOQ<4|?AH}eB&yn9G)wy}B}yThdw57@Q{nCsZ7xochLx6t0t6BCnJmKw;|y%d!y -caHdH0PM3oRhYyH3xvB%3Zc(Ez5GdEp!e4RZ1pi0bg|uiE8F;ZIsNTh^!Rp3v%h`&KQ(Mhe*IRLVf45 -Em{LSBj(aOsnTGnj`T4))1V7}fem1!uP$Y*lG=&n(=V7F&#F<55iAfy8x|5WK@Dco(#SqVtIBa1FFdz -ecIG>|Q4th@@oeVwE3Z@Xe!NQfP=Mam-kP^5Wb~Y#BsKi8QgHf<*<#RL%@FJKMId$}4r}R^D>RFVq5D -_v7bl8v+B_KgVzYf5`Fa92Us;2??GMV~ehTKF&A44ud@KcsS{}T0U9}jGr4t{=1Ml#UL&iu)qbEXhdK -Yms#^VZ4-U^Vo|L`mJg_8aq=7peVJ@`1qYQ(&swDuAIr&OPD#v$2j^@{^2fDC}kKTWWF2`zz}@))8 -YoB{fI3;?-dya^tBIi^p?bX8e?Qq%3|!V5<}0-*T%!_ -Whe*NKA -dLB@T0%9elkx(reWWH+V)-I -?kG>szWnO5aKzaqKPr=;vnDox~r&0xgY|CI__HLF~-S;2Pj<$+DQ>1v9i;J=+imaXaTavG$48GR+V5C67c;_GHRkM~w-;8+x-q_$2Q0T(O~rweS}5j+f< -`2z^@<)ZzsgueGL+CsFzx`1j=h(!u^nkE#+O;D7v+s<`05?$0*NSNjF|-3{~AenEbB!+f=0kl)=fU+o -v9*f*Y!jHN{QA`)_MPnT#TRxEguIuIyu%7fiHMlPUFYnIm+y?D? -)K~qD^cP2ff7f0YI=KFYtX2-kRth%nqEh5H$YH -j747USZT6jeUYz>zUS|!D$!T%;_R|2u@N(Zl^8>gZ}dL2t -258`|nx~$vIjD6x;w3u?TJseP!Dw(qyKe~2}Z#OE}a&dwH@SU6F;4jOSx5ih8wJ@VE=Kg*jHL{=uCmt -GX&+jScK;71kv*!A0bmo-UnN(wa4d|0c!rB%z$=MiUP~CkzC6)XrW{ToFb;)z -+pv|-r)l+xbK#C*)mW1!UV}-tP8|fN4PHDZa$X)%tF{(>7cVrHTT7&v{qaU-gcjA -j^nH*Tfk3z1UEo`Cr --zZcL)D;vA$X>#Maw-WE%hv(MvKvH{^rX-;ruvuTwT72Z`Z&|HkZ`$)nw6 -mx5F*GYoFi8q3~k7+8$x6)wm6TKhD!}adS8nbg3i=A~@)byAc*lz8N4Q2!!;?>P5NGwf!pp|V6X2k4; -!Zn$Bt5hg9EN1>PudL(B8!J4R>vMPCM_b0q0!2qj#)RawNi{Q$yZIQmePk@V8OKB=b>d!GQ9eGF@bXv -!zr4-C!ru``+XXvMB{u@Mo~`!k_M9&A%)bn?gEV$IEvoCa%r7=}gdaU+R;1t>B{L6u-R+8v_$VsK -n)+G=ZyhdOed!j%=jUWe;3d4!GFFA#6O-E;w6$2qmSjll9Qg5 -zw>+!FD@dYoG-=r;LnZDFLh^)ar#iNooV0+sgd|GbFW#eaOW!?wGYw|m$=sxnNDK(Ig0R>Jx?hPS93Z -^!l;=H<6lcAEtK$BRBT|NU3o@2NdL-0R(~V5H?o*8ESKvjGD$jV8%HRWrtunGD&x5?E#fGc2c|1rb9t -GbTT;)0xO7C=6PkXb3r0vxy-en%y*HR7L42eSv~)gHjA~RRCcRGz_>ro0B@Wak*jsvp8y8h9fUM$ZAmqw$e?kEirbgdOPO5lok_9=)2i|{*Ow -qN92*7_J0de1>s1UDkM=&^A0vZDHpl -g5zTfBRQe77HS*`=+=FHEDxg8tYAOep#F7GZeZu)WQ?3?J~dO4l&OL4`ny24r@xT`keZmpo@QqRx3@S -M?Pz7Lb|lI@JvnO%Kf;~MIgRWy-yk1qCYTv+O=X0I>Fs`n7E11eL~lZ-}RdEGY){=@>~a}~YXl+T1gR -R?_!^)en@^;`6~B!!n++iZTsBx -1{47sqlg-AR3(Fs@Sz2Nqu@g+V!X<&#=QdL6AfUpu&2Rx4cEY{AHd$MBl%RsjWmLf>6*hqVsHSQZ~^; -(PQW0*3;DVQtBe|z)swo)2xt>)0#@9J@*oTyMsI5!G~1`4{Z8$BLWU2jXq4u@vI -ZP38Kot%mv#O%;E&TJn*ecCpa|~-nrqxBf-a!I^VnI!MjINWr>F8fJb;f(@=x8c%%*Z{&(M>QI)YeAg -p?NlpRD##~ciBhWS?DhA@+-egJ4yyq*YWa1CV%jlgWCmfGTQ_rW^t@Bprh28{PQelgsSu#g+zGU4ol* -9M+z!ddZnyswGL*U-VdBDg-UzJ?0?8_dW!fi>z>@OlHH%8?M5{ULZRc*nH-@li~fg2~}<29xow%FYeE -fm5^)4xxvE*GlHd&cRF@(;U;GfN3pEt-(X^NhcmyINZr$YY$bij=}C(f9``fRlo(GKp^t;=z$a9L2#j -V4m<+|7u{bke76G)(*ZLD0_FtPs*GSCa=0Nv#X@66r`Hc|@@T^8Mw5_vDW?aL_y7ingp1I}Qm;L%2t6 -P&z_o}^2tPgR`ll>xa}qSU$(xt`e7{_-_{FW1*?r?9w~%ngNXG{)PG`tNg)6&VdRwclKsJ@lhqte1YGeS(HFU>Q(s%i4wk-RFpix%Hb#(=A2yw&p{1WPkmCZ -9z^3p72Kyt-zG8Zv?#@K8?KnPFZ3ChGgVEDh7O6qc6Er;J(80G9)wT_01+904HUdqpw-=z-vG4_w0j7BIslM_jRdjB9pLZ+0 -i*Qb065_WcHs$&6th!BF%RW>f;@00!CnV2h`Xkqbc09_fRMLYA@8OIPSkFJcWdB<;FBF=+-=w1%eI9B -O^8Pc>Oiihn*?&*LN6P13;~29UHu6b=@2V55uSig7a%u}D!^2m?~eqq#S5Oghm)faJQH}%E+RA<;>Pd -KsOJFkv`_Q~7w!e=JVDyDCIzr;#Mcwy42C0k#=9zu`8$JUvU;GyY{HroBr5Jv^8#WK@Y(>9E6_v{#_t -i354Zxi?ml>1K3?A@yxmAGc)bAqYDb7@?@w^~?os#;XeJMK*bS`F^@-*nG_+k|i#W9<*tJ=x(uA8%00 -Lu>-vRs^fOQiBuUb{y5&V4*z?%xE1^AlE0Wkk=Lf|;Tw2a -$>M%dHg}Vap++6jG{c*F}Ax3#ST%=qGNB!ie;gU5a^NQ5Hgwl5miOl!Tb;Q?vz;S(NzY=Srd0AUP-N^v;#5DF)<{TRX^;! -lc;qZr0^vWd}*z^3eC4mLjm;4O-##FB6#c+FtlF^x^^HyjKB!Q_#NS0DbG!sL+*gCnF<6C{R!xz5}#d -qw_RM^W^D$0*7{9d+zu6y@dMe`^%w*NgRU6Gb^RlI$s)gL^eYA*{0{7{Ig7>?}Rq$58@i^xDBQ!`U6z -xn&4wv)U|LEE%)*M&A;cUMp$Mme5x_Hcj&ClwA>AJj8caT&TKVoxm#U(g}|uDP}n$Z3_XY-Gky$HzA7 -8eW#Kxb4JG%%PE31V6l1j5lzcaC$tVu2|?aaqx7?_P2L1|`>QC56f%5Wib&AsS7Mk)DO!zOVzh0xLl? -zje8kR`JZa~6pSNtgSeiF|Hqy1jZ56*NLLD{j^^U%4NQ-*iRz07tia74$gXD6v`+4b&8QCawn%C8(m> -2tVhh6&A!18mzHrDt!3)_y6H_4nwwnY=mac|qcCfxinC6`zZKJKlxr!L2Kb~p(8-zUTPuLyGNU!*X8b -)PR{?%40d+-VA0(UAX=+IY -t4LX>E!c_wnwyBT+4Ku-kxkqa0onniz* -Z0uF^5jGQWCQ1XAYwh;f_w1uq#n_WjYKg8U>AN+6C7QbGse;aM#d%i}OQR#JO{|;v6BkObGD16Xyo3p -W7_d_jYJ&V%p^^#*%8}{hRtNA46`9UpZ^FYoA@zAiO!bRLkE~6P@cdeCC=+zXkAe8B5CY60_oww*X9| -)n6^Dy6#%S-Z*3~6CT&5~FyXVs!vcA6)ctdH1PpXWDeboVj8yH*xRt|# -8Xg%=Br9OCd9ActT?5kbR+@JWn9gIwyF2IT&~V~ykF@(8aklCFl+Ey+soQwD)|tJ$SW)eEbIGvve*OF -Ag?R4DEF7LG+v%H6bix1UM0xzOp+n0Ra(=>z@1u!Al2yzO;JZ)ks{0Ax{g;8~mfx`Kvw>u15Gmx5yg))>)+<5NW0)?UIwFDTM?d7(RxI;;<3qc6;73^#dy9`Zafa5U(!>R>z2=6h*-_#w#_^cblbkJ(xm=c;{tcc4V -jqd&;Q>*Sk8~jmXKfh9K96y{GKQ3wdAkiN93O*5-OY9`2ilzU&`I($7~tBDVM0f%f03%YuVYeH|G7xx -fs0sW5xts!@B>*M*Rm#1pC4s)b_}PzOxbTPAMGCnXaf#RtOv6_PHsotWGL=@6s@D>_CcoGoI|kDo;ar -bwEAc|cw8gVNA$pd(|}oNS#pn)_A{ytdKyk?uvA=jwVg2F+DYaI{GF`8FF$b(M-ctf<*^P1QSb&L!3i -@dQdKFmvXuWbBsZXNFMPyS~M*PA!wSG!JL4m!6JoqYScN*zF@5I)2coe3>UZb!8xPA)BpE{^jPan$rR -2GD-_Z_jt}PDv_Fhg#!OaDJR#*D6Ibh!uGEX^o7j*WRPEiY$#(B*q{*LQJk63F$=*mHN~8m$uW~m@gx -XjKc|gn(upV~grX6PVQLUPQL{lG3I=^5u(u(=##8!GJawA}Fc?Td^2=t@8Dw0cahSCP1uOxbMzBdD^# -?v>GeQ1%7P@@^s0Tk$9CQZ(M31v@Xh`rDLE(;)uagHe1EM&4!P(3&1#bnbk+bGc%D&Cd%D(@S;JxXK> -r=8-p9)?JAMQSYY^v-oV9+OO+$oXB+@ZsJn5)}7I@OTB(4j!V`@_MX%D!PKk+S5&XE;hk-68Sn#^2{t -eGW1e=)6MNwf&OG4?|0u_~VH$=Oxz&*I;w$+JvDwj{*P_hS^Z?jP^@z&#zK@x-Q;VyjEXr%iW6Y0&$X -kcH%_hz$tCMHw33yL~SVUwYIzsjB?aY=Hr%-(kh*jF`^4RXp5cgkm@ITpo>cW_v4kNz8 -)g?9;2k>eVf_v8+v@vXOcUUDfJwR*@>5dsuOI^x~zVQ|KHyQqiTb^+H*a>9!HNu26{< -R!;+S@N!Y9%iQuzqDpxvORWS!lh+t(Mh(o!5kRYCf3fLWb|}?tVBa)cDtEX@kqd+!i6RBI2*zdw?$G5 -eRO5;WG=6mN35`(Bb1eS6B-wDt_vBgOtHs@%MyQd3+r)5*t6;zx`mw-J!X9(W@v)C5+Pb$=5cND>HT_ -FH`rP9h1#oEwfp-tUPaj7(r?>K+LT@My+RSvV!iydIJVcWz5%iFEsmk<;>X%bctshf*Kf=6US7eGkHl -R6j2paBZGAELFU2*G(p&}|AIy}vK+}`^0Ecu}?8Ju^;;@ncQe9?$5TAFZ1!9%SVCDc2+Cbz3X-X3?|3 -AT@qy#@fo_7*f4ZuET#MB2Yh2D8C{6btqW_c7=L=aP3kCz;UaB6@X;}diIq-979;&L!;B7*;mhmcJKr -=a5lBcOjLp`fY&lLwF+x_DxkRLcA^Utu}XbDkEz5Z4P~{2&LtN*oZ$=Is~xmfK4ysbd1BVgV~0m-@i| --Vat7bZt7e6P$=hx+nF;ONWcWaza@m64?P4a$QWotTKQ~AHu;O#iPFPpE3N*d}DSp3h@7T7+!>QoA~6 -$cnD&+4^9Bm-lKz9ydpQKBz#vciUiC~m0&Fyc1k>Ss_sHw%e#cvo*M6bLX{vDbssnGE!?}e_5QWyvVs -x9X||Ia0D09WxW3GLpg8*X+C+aL*cuJH!Zt7iH6}lBYn=q-9fiCq_QM_~e1J#lz^sZ`c7XNIn{P=W&U -7qyWsU%knCQawC1V08Oy}(xMFVC+V37jZNaEbb^&fkzpr2H;y_C8^e~6x2a*c;jY2xIdzVaqO6(&p8( -cdR9E6sea3#>&&p2eu9{qnlrNmGrt`~ar(MqZ6YJ8Xn+3;dT)US|uPFG%#8x(+?~czC?;`?^cBVDu`+^P-#p;pq}*Da(|^!YhY4NlYy3SA`1GJe%{I;^ -$)B_S2^A)~I@Eqbr74>T>JLg#XY8qop4bYocA|s7R5G8gC!wcEmiSN?TIQEw -t`;VJO6mbzCPu#WB!#+Sg-Q?pQd&GDca`uwG1rFpGw8TseKbQ83JhhN6bPX4gO@YssDL2m7jg? -jll`%|KLdY9}0sMkFfL}`-5a*5*n}tps=5c>%+-^o>4H3jfHybt2iwQuSciIYKlWvfOKkXPEHM@z-;j -hI*39NDik(+?QM=FQ!lI-DzK1+ijA7um|#=20}720NCA-kveV^Kgj%M3{8Gyd%l~OwCeVfWsb$RXTIP -F!K9GqG0zEMwgyKGaEiPV99(Zdsm8W#24iS#N`iXqV{X9(mpm&aI{Akwm)d96IB`hK*P -qdw^6SbEk;hUAB)6pNy9k?sk1=JkXS5@y&IG1*N*fj^GhqJy-~29Q#f7Wbs*7EzD1P=#ESs4>H0 -Wy`{Yq`@{7ToMldvyC`&0Bah{W=v#6jUki0x*UQYAx!X`)-}+nGC?~AE;i_HHDPkJkaa?L>=ds4nZAO -c~2W2x0S3wuZi=07IgI{Tj%ST4|&^Y_tkb@mUo=On2q%6+*hLHfLIJ@7Zx%)bAkkn3W6zKf80esM>i#^j8H4FjQ^qzqu>phANPMc -Pj-cKNC)XGZT2oMa(i0O6m=>7=h5Jjd)E0WBLT4c=3z`y86W>+n?QmG7{Z{WTKYcq37!KZl+RX5c)$e -F8Yapqb+77*>d+W_-$G!2Sl6g>5;xG_>{0J-$%x{L1|A64RzWIBN`Xvv^t8Ib6u7;Z*jSKR{;P`G_?8 -i?U9>2~O`76`?Y_`a6P4`biqR6|LsJ54ylr6dyZ|zXgU`5loA6%L{Th3xz@ckOKw*hV`TPD|h<*_GL= -R!n;@N(q`j?5_9?t&wKE)5PlKcr)0NCTm^?F+$QPKLqS~l9=c*F -?LbKb#R1x&ayEoZE{VNq=}{=xUmFy0Txhb!w;v&yK`oX?`<(drexX}ZilALap%RsSnn|M+)gg@ipUae6&2BNmSg;#S8gqrp^BZ(R%n_(fZ# -bTHn%51mWSFD@hWn2TH@l?XfK7U37mb;)FJzMK#Jcr49-m1zC;pWkHsNl3_k`!L*pev>}$sy%<6_|2YLY8&aTKVGVTtf2mf&+We`_NV#$f -U9W+XDNaO=ou$44zk))7)FsK!?Gv~;5Ex)H2SIV2lx~Af{ma*1R!08g}#)8go%{^+{PG`x@-cWDHTJP -$fxCw6R89SX^EhR2Z&)HWr0WrC>Wo7J0vr8-$-HJJdn^S3;Vai2=iCvjw}H$CgQ2jI0rE{%%zz+dXX% -I`at+|6YV#eL4CtfFw~1pIXz%1K;}~^3_XB@Xgb*i40QECwn*?ezoao*@-WS&xq{D=2-RUV4@|_LK*kKR9^ZMrHqu`m*}+_;fXlupn^?mFhr@CZ2W;Jw106?G$;^Bi -;Ri7;)-69Y5X^!L7wn{LUV?5PqIP2`>s@xpa~2tz$%JCnRm$>RCJ#H3OwvuZ^E4_J`ozAcFJSOdQr%6 -5!&?le_|`8wd8~_)~QMT(pmChWyn<`?zMvUtP41Yli&QMfYV%L|zPaneRL^w)UB -V%M4cUD%RQLD1s4rc3z)uCMCNE)ZOn}Mw+qbO4!`b^_V!iJY#qVEFMe5E_JIyPa&HDjZ24%gZ{O**4K -HLk}*b9{Gjrn6}$&;*W|iFw*evaP3)WAX;&c*iaF7)yDwdgFLB$(W=!ffz^0%hQL%)=xan7I9FHrrp+ -wI@$F)1Q!=Rp{q2N=dg!IxniSp{EXIdJy#?|REgu(hATlR7j4#SBOwPoMGWu}-?pSy5r|bXyEKBGgKKN4?eLe6G -sharb;eil}=7fNf8rTm&~C&lB^xsSP=h)znnJ4%7)SH(=0VYU2QoKx{u -bd0-2342pLqg)V)D{K|x&;CVPTWq>9yPY6R{5E_gN)9vvoJ)ePjrBH25Z7hJ*f=(2_FjF&vaqBFD|Db -8;S4ya{X+`HlN=Ul;sm>eKf1j`z3~farY@#qT%(fRLnK9+#*~AS@l^RZ7|sK46pMz183H>D7@h-Xgf4 -t$~<8)|M#?X=;t}dztMEcS$dBR$9cga#4^{ClaYAyQ^lK@`!G@lg*bWTM@3MS+gY>2q!vgde)hV#7Z& -pj9KlSKFyqYee*PXhg?YPR>~<)b@-!>xrZK~YeiYndw$&p;<}xM)fGD&jf;vc&ZQ}A(lFlkvgG!dU!Z -#uK}qji;Z;-Y1vOu?J1I`6o4`uz@m4lpWwt*HXJz7o$bEa--)alT4oaR>$)O`}bC>Y(Cyp!Fb8QphHH+)00(ka#3mL5zk* -)vOrcmI^;(A1?n(Bx?C|dl*l0VRKOv=}sI0#Pt-imF=LCM4#q$f$oX=!Z*>()v`6I4NA;aTVLZ%a!11 -E#Q$mraods|ByS!3sOXG$eeUdQYlBXGP&zDdxsl -#p7kh`F_X$9B;%~Wm|kFabcXCe~~4!qpwqbO)g=V0M%M+F`hdz=5WMaZAa^Bpni7%V2{R -(GsfWMf;(e+%VNxKPB17-+ApCF@Ci^$0|XQR000O8HkM{dw^<84nF0U+mj(a;9smFUaA|NaUv_0~WN& -gWa%FLKWpi|MFJo_QaA9;VaCx0nOK;mS48H4E5bdGqkQhU983GhLY&-O@bwD@lFbsxb(+OKeQuS!#%Y -OSP*^ZMwhIN7g^YM|Q_)$8A*_#lRC0 -7Jp!4@w(MP?!d>jbcHDI(ZNLuEm-nobV<4~3|#IjDt7M$`O>y?Mov=1&$qwe;sWO9hq%Qaw|InGBpiG -(0hjOt&+ZYp4b=u~Fp+l|RNN4F*v}-35Lx=JF{UBYN2VXESxOU -m&hYpQU=^_2ukGl$OfXQXXd~(jXY2T%+oDWG(594dYL}(NCHSfDHpQeJt#&H=S4>Rra3$Sy-8mjz}T~GrZO-qrs$wL#JQnVV*e;1j9DMZ~1`Bz#M{oXiePN7Z}O -<|3}I2Mk%ZUzlQ#mTtClz{y$}U!qT*Jp8tjGp5;GKO9KQH0000805 -+CpNmR3|!hI6}03b&I03QGV0B~t=FJE?LZe(wAFLGsZb!BsOb1!3WZ)<5~b1ras-CS*t#S(ohf3;;zmGl_7hkpeF7K;tRagBH=}6JHVks{J7I&)Mi+ic$QfQ)FAiYuS{!^8M;s7Jbz=`hunbMv)!i+Rd_;Vo-ILD=q2U(3tP9TliC7T=eR=x)AWOlin+tqe$uD3$ -asbDZ1lboj*vug60bNsy<3BE|o0hUDZ^$3enz)p#h1NB5@>=OCsV)%8!NYdhv>;`khj(ismkd{r+}=x8gQ_{P -@A6{@^J$hs)$~%`1x$!sY~2^98KBgNrf_Mj-RIMcP -r8&nuA`=!`bkFtR|C6O%KeO@&h1rCp_7K*$n={JuLIBHe3tD3xaJy~c1I6%=}w@rP_nD@GpjcL#wXjX --WaMvoQZAL3_o<<%(wR7NFi^mFtx|97H9w=CC>aqI}lNLxCP5Qib -D>IAacx$p}0YLfx3Z)ZDrjaGP~)_Dzu698ntn~PC>KpmX=|o9{9oM*;DPkm#{twUSOQ35P>m-TkGO9^tLI0|Pus}8Zi|=*@Aw*6JV%enxH%Uw32;*N8YUQz -eIdRDb+IH^|43D2qQ%=c--wE}5*&dN_j%bQJ?bz$`??L}{lX}ZdjJEQwzoT!nO(pIrU{Nrf>n&UU||H -bU(qU#qO3}qzUomMdR56suvRt}uu@oeuZDt`$F>dH#Rlf6p?F}|M+9>%+?#foxY2Nz>^x?ThdaO_8|m=`{0Ml_uBmg-B-uu9H~2%@AlvYT-*CVGb+6vnn$Usy9#6E3B -|fqL!j07xi%(ctg^}Xaykf~q8}ZJ8NAo1DKOEI>5L~Ke~}M$fAhz-nVE7<)p*=wrl8HxTm)jt%QBw*K -^~XlF|UI;!B4q}f-(VR7q#3$?A(JNB&dOomIBKjVnJK}2I-=*Zu8;+&Ewb(5P3m!ftw8dp5rI4VE7-~ -9^z^(arb0N!8N_)*yS9xzHf)RB#cv*psj>MaQQ<6!Msvr0G5}<<%q|*PNBGg<3UcmZ6L;X*zY~q2=$D -&FAN=L9M*LI{|BRqRQ=JBdxnk@t+6^UP7(Y>hdSNDixdNXBMTI`ssL8x!XR?(IxRvq@f~fpK?Wd!eq5*x-l`LIK4K(j(gWUd7F{^N$08AE=+&5%V7G91K9#)Y8GBJZ?%^BBk -&s{G(-ddT*K8a?#1@aGehybLn5+NMm?Xd%mx)-q(>0!x&b?aQ4k4)(PDBAi6c-b_b&2*LaKRomRvRl! -x5^v%#VTwVXkdY4fFOih -3xe-7zQbTSvpcukAquklBuvYP0#~`|pA#+JM -dG_f;)}r$!cUo4O(ts^o5{VLt=CpmdIv6TWm+@c`Bd`sTnkU}M!_{dz@`0}orb}eh3HE>rpWyV -c?>GtBf@4!{Fdp_mQjYh6fa*s98jL8c1Qoe-kmv7zi_T4uyE#JV60-j5O_l{oNCu#MFY(>=ZH+AiI4+ -5!M(=zvApMCRAd}%4lHMeV*Dss81o35@IkUz%BgLQn0dneIu`yk^JQ -LtOjm+i6$)vzq4e#O6Lr4l^={Of_PEerpkVwg+uu)wR7OfQ3;2gb3NvY01g}MoM)Ywa2`v>N*$QvA+j -k!nm3|jtO5~UMc+yT{%V4Gd`|9l1TWdM -U)5Vye}Lo)6h%w@CeXz(P;na(3IP^IJ3g+RkjiGUk_k^l&;8TN_XlzFbv#H`0y)G$sRJ=+$kozZ|d#$ -xa=&m8KSQotDIg(7ei?C{@%{z}o}=tHGtScEqPwr$(ivzq*KYSFl$Gip7fU*VbNKdpBx1+Mcd0;+iFg -21$20?02u5hL%yNcA}>+bv$u!INaHgR0#?s2RSW&IITX+&adt4iCLsaKqolo+|K|{3%(^~2s16?p37sS_EXO*S~=s~lhNf)I!2p;3? -y2V}*n45NeNr -ik3PiW}3c~bgtyBPrTo=|4L06kFk0oNbnoPWESd)ufOMg4UmbPfL{D?JxsyB5J6B{tui_aK;T0P=9<% -dNmT|Fb+>4E%6$ZpWjBx0^ydv!lLL|3;Yl(7dgB#a9T5`<6~&=p@$?`jeDm#* -NxbRdnGLf`WHxJ^H#hcz8!OUC8uq2_0U7&oIZ%CaB_9a)b^#jmMc|N|9RBwwNJdK+H)ZbUt~W1R<3f0 -&IJ$c|h{%`TXcq_h#-?*YtZfWSfpQ6haVp0+h{<#gDCnPO1&mNEhsEK|f89iJL3sECIig9bBnIT#32U -fw4i20{W+#*Ox6`Uf2*&T5~{i$5ikLz89RQ;%)t*Aq2VN6Szi(MSHrjkFMgtA-r*Cd;dmCjoYXFfs9v -6n;71;LvV@54w!?wCvxF&NfbYv6y<%v@RD}NE+0JAC>{GJY_M-R&4$<-B`*JNwuvIQtOl9<3Nz}n+Y# -iYU9L4>O|Tah&gOY+@pCsNlH1eMxm02)0#7hHEeb!u4n|-J7&~BQ0wxUB+VlfyjJtJTQJ!D7{EAFtuV -%Q=6dgs`IcBpo+xV|?b?Bb}2=&qc?h)*=N9TOF{j8Jo2<;C3ChIlBq435%BWr#yq4A`|n{V3UA --nq+tDUXbmcB -VnqijnLVPb1@C2pIYm7jApT2RoOi%z5rpEKptu3#!^E3e{H{i93ApfwFTv+iSQ#Zn=1Rw16S<`6m?a{ -M1NJMw>Z1<=0j6m>Iz9h*%=V;npv@$oi%}V&DL4(&K-EA@o|M;SuMI>LkTT)9?h_C2GYlBl65JdBB*n -{$GbmsL6S8+`eBF0y%@P0vqu2vo0YjSCCZfoInD!d%02~)v}a&bwi6fgR6bp26DjTg9XC^<}>P=Pkyr -nvc~FD#L7CHeSXxb7R4mV1b|B^VBlisLs)67)i^oO~8M(XtqnyrJr|e=0wA6|8Ygu+l}Y${Q@(`KLv@ -$Lj5=E9nz>FRY -=D%ANT*13h);gz(;z0&m{kB3&3t}d=u;z}o@pm%%h_yS~#M6dV^%}i*68ZXCsq41ssx4cVmv(`>~6Rh -sy5l0%fC-37iyqo7nnHwqdK8GNbJ1(-fXQ_t`}p -hmx-ClgwWNmcyMXt8s}@R4R&8mNDOAHmIR`I6*L5}uk)#XQylOJ=zdOR(HEWPx4HfGD}j0fLs-SKI5W -AH>zytE<Uyn#I&5n!h6t&EqnBsV{c6mLQwRS${osjCL@-&Vi?a$@`OTa_rC}Iq-wvvPZGRh9N -uL{06&+@MvO_wPJUve2sCL&m#?>!tYDp!4xa-I^Y4*D+(jt+TXZSMvq>&sEVHXGtPPZIamDpP%z_4{M -KKa_{`kS0fzxd2%QNz4-YY?MCeVVpoH*+e~x7EearAgr@oD7IPM}EukQGGcgbJ_fwrk_Pl^KeaKs;jn -2b>#(6{LrM^wQEOtGqOnupCXi8Wu#4sz#6#Wim*Qwz@~PrbJhAIQ5G6M~%@ml~Y#P|pYy+MFa_z|66! -n>7NYGaxgVpWifH%!MrvRQFQtq}O8ufN1FZ;zAD^KU!Sd95aDfg6hX@?^p4L9|m`%Xm6IZj -8?CZS~eIkkbqlpQ}r;aB$iuo9qCO@Zl36Qtl((I7ypDPuhF1>}s?cIf9Yfww6@Ze(=Mc4jW1%xix*{FIXa15ir?1QY-O00;m!mS#z5aH -4e80{{Rl3jhEj0001RX>c!Jc4cm4Z*nhkWpQ<7b98erWq4y{aCB*JZgVbhd6ia8bK5o$z4KS>I0s7}n -U`ETp6MZVoQY@RHe;*p(SnGjh?oRed{|Zw`R&~W2}+a{so{krxOngFV)2M~aD8ry(?H&e;zg{`<-yj -qTE5>Q1l6?0diXq_f4#HTSP%|=6Ap)gEX#^oIG0%N(%i}YA2DEhlL1{sH?PnltO-GA5Y1Apf(dRbiZl -xnTol1tl(4Q8B~%G5YbpO4RCKJW -vj6IiLojEMUAWrRtC!_0J5!U^x~fHH%DY`RmuBl<@9r15Psp+!5{FY_$Un&!i*?XTC+T0^rPU~HS~ -gN|WKY3E088Vm7DN?Ivbv*eDr?AAOwA7|)JrU(xnONxs?n60M>P1)=SfNRXd7Q6i&QB=AG|J2_5{O6@2?s=((zY+DiI0+`0uX3ooZ-JJ8?{3PuG#&Ja?q0`qe~Ru2k^d$l -)TF)LKuIiJ(K-R{7z641$!w^fUX|qk9Q_cTX|OVDTJMN$AD#sea%0e#MuSy+q0*jk9dlCHa>l9g?tjUzhfUu2Egqvx#)05hU+bgh6r6CfA| -s8eA6DQYmXQEB6`8V6puDFLCXzCMewl~kVTxU=xuPGPGxK-3LVsDr3xrxb{*C`_*+;_6>|G$FV}yV^! -F_&7meh_(I`C47)~)Q;S6}6i0y%jnDF-SXYdhQ+S`JaA8>tulC74DVOrF*DC}bR=J||DXA16y!CEDHw -2g{U^tx19*bUUESH2o+`wvh{0|XQR000O8HkM{ddD^4OdI10c{{jF29RL6TaA|NaUv_0~WN&gWa%FLK -Wpi|MFKBOXYjZAed2La_YJ)%!z3*2H$w3W?=OW}#$e~cE(B>9`+32WC%&y&CQ*!CIcXrj7v>njZH@-J --o^x0&R*~KC -%i8E-TEUdxaCV&EKXlsS7z`*-Zuk{LgW5R?@B1iwNods666S4fjP~jIV2RjrJX<@>v}lJy?n?3s82y)Lmt_7zR(_f4MwR$kZK+VwcLo8%6% -8JenHCC(ixPp1>baO9KQH0000805+CpNt}1y4}l^807Q2H03HAU0B~t=FJE?LZe(wAFLGsZb!BsOb1! -XgWMyn~E^v9xJ^ORpHk!ZtufW-pBbCaG>vX$0waRXq$JV=T(@C7`%;ho?EJ8MGiqsO69dD=ix8L^wKm -a8DxY@Zo&9sq7-~;fz@Vx*Zh{MN+VpZowbv_fjc76B^pX}}J@9*z5>hC+HTb*s{T$Ot7zrxSn-swf51 --#sq3Sd;NEGjM93njKqv60PFfQRP&3IG=!B>wrUY!>)>kprZuI9Kh0Uo0+^%vCcL@Oyh>A3}2jZ7W -xo@?7a`*OX;(_B2};s>~g9gTOcVaJ)yUwzY0;A5{T~)nWr!D7La`7wfv&0D|QhfL&XZwlj3lY5{M?8m -rGMwI$lwF6o|t&ntzazHXWt7W)nseG25PcddEyb5pl95Z?U!pc=bq>VQ -3nV}#H;Ul*8+HQ3xmP?s=xtsTok -w!f#y`E2XDqCco;sT7Y0r1qchaRuuuPBy#xzhK8kcZ$RGa(n2K!7VXW%@%Uyd+ixGD?M -^RncuzFp$KKw-Oq_z6(yA5pn)pa?Yi_{$s;EG6K?w;71MJ#*0~lM$vb@3W+olF2Yk3B$uTgo?0Lx^1? -_R$;dH4F|>EiwAi_;S^cX$Gzphd4#J{95TKs-JA(rdJ?chz8{W3N#SI<^^V^wewADqJ#X;f0;wlpFog -YXlszkrfC*-00cfWN+`)>o+ex{BXK(%lhHu$CFc7*3+ZCmv4VMef`tv;^p@re)`+u{mFm4hUZ@%iO2B -28XR~Yga{Za)v8>ZR``K!M!_ami6qH>tpUf~^8SnrU#vE&y{L1C>wrvcA1U7;^`5*ROEJ*(^`u#O*{LK3Pb1(wLZN+>Pii_>QG>XWV9K6(#wo_G)>4JPA -1W!FKIKI0131L{M`ynT-^ce$_I8enG6x$?V>3!V=D4mtG~}ro1L0?9HG@X-`qpy(Pq&p{eLR@lHV!Wv -pT;a;z;2v$|q=19+ChWx8XiofChVr0(hYK{}Y8D?F9pFBX7i+>U2xmS$p^m_OZ!SJRN^KC1(jX-J7jP -KUnWq_v-`ScN**wW2)&%sG_{}r6?JM(MfS -B^Gn`<=WEunc8PPul~MZh^+jYXth0^0^nyI8*)bNlXUx}a*t{=$&DxtB?(uHVAqX(h(J)flLF@Y-eNe -F<_&o;Z2An{&P8xL%Yz;aTqj%(^O@+DwNPr1=651#~lhX+Hh3y4f47SQ*)14r&MymuleiR(MV+TvTh@ -%0aw`x_u%0ca17vTLFz(6dq|48pA;*m({nXfuR?!%F%egrgo2^twA3lZ~m^ZZC4KUvBVB8FW920pqE^ -+Br7ErBGZb%E%?*YT7`=4;l7bORoJ2<2WWk7V0MT^03CdxQjp6Cquncf?#;pb?C-L&KD2sy<@}pvN1D -I-57H5ht#Vz3e_d8ijG22*nftH3wjs`F-Ma-Hj)fo6QGM@#z6EhB@@edn*@tc -7cGqa%?0GS6bjZ&MD(G5IB$%D0hJlKVI+^EBER#ncd;SA{b-I#*_#i=dL4+hA!7 -Sc7HsWM$+ygT(AjulcQ$dc9GLbD%3SeBdpqItAl&cUU7^|Fd0277n&VfY=%!>+PTtb6RK;48T#G7 -)MA0&+)<0NR8Oh;C%oEqt`Qm=?>5;RbGOKqUnPyIVHDk!j4hU$)rTWu^aJ{9{*J~I1!sRiPlSAopB+3 -79j;4tp)AdGr79tw}gC9S+K4OjO(42=gP?fe4ov%=s$n{+=hg0mdkqsk6^cR=`Smx$zNWdCZJ3&+IBm -8@&x}mE2^w+&YzsC*2Uxugv^LtYM;kKCO!hZPtUE8cd8SVbyc*Bh0&QTQggHeDWYz^Sv!D#5nJ$gr*g -=I;MdFv<_8kgd^IGnAQ6e?JF+Exoyo=g=5!FyvK|{Z=3 -hZ;dgPj0%`gW~4m;T2K^ODT3+LkeTp#l@=)%vsVJMI22H~t?Fa+fkUHfkTfKEZ)G4-6&z;htKl$vC)M -{l6v&>kIbrnEPqm59IQzI#QDjS`*)augiXdEulTLSwAaYfGMx3iQfQIiM!JAk8)>P6}T*Iz-r} -my~Rs6O)E7th$(6uJt7bM5{3puKGTYBFVE&JC#`;0~C~NjcR(gXeO3YP -(rfrPzQnZ;Lu|Y>Ag5a^u)@hW0J&bzr))TtBs4*seeJDXS?Yk?TiH6}p4sC9BEoB8Cz$0v?m?SLMQK0RBo3 -Z*VL9vos%2`P=D9+TlRrVKEVJ!rhev}4P1ttqUo*lIsaev;(YKJM#|D#=#``>%#^tx()==X|5E%jmRO -p}xAV7@bHcJcA}=;+RE*i!}v#?%FrpIOT^ri5)9s^cJ(W5IYPabWDVbp(bLcMK!6hX|q(<*0k7;6o4; -*9?Dt%uzWniIb@fIAj!Yx2v$JM+NFH9B#IgbP<1qsdlN(Pp&hlzO}{iwA2G--%{wco%~1V=#t -j8`;bUw~YS}#+n64;Sib{*JOddD4LGFC|ZHf&x+B5K$&KAj5J1crnIeyFx7tmj6>Xxm1@M5JDM=5c_nMWT)q~!PPObS`E~6<>Fh5X!UgCu9_dr{0eSH*H=cR$d@~3VTk5fYa -?2Pv4RLOu1V$l|fnXgc8k!zM;FZdFel(+f=7CYwsXjUl%5*Ls8OpxuiTh*kKzJ7G2J0y5cJ=|+u7?JQ -71zP>ZiXv@6f$4?3QYND)kfRmaNRmU8e&1hI0*Y|QatwlbRu)wb0!hg-Q*`$P;DDS~rY6`s3mIlrBLn4=}_5Vk(}_#Ldnuy!Yme4f@q_c9vF^XY4PsOOY!vIo_!5;Kr7cn -U@}Y49mfTui-wYbm@2VqIh|lNVbf~dHB&NW2P5fy-x@zG={|nmdx=4VTfi2qzM|BDrWs(ln8&#NST&) -JEd(?Ns4x_uPO0aVi^yP4Y~=X{orQT<$;$+DROhI5zW^6`J+3LCoJdz+n?6>VY|eF<-JqBxO)u=N2OHy~BN^tHa2|&#JkQTP<$t9Vjmet1xcFZ%4oXX@4>Zoc_%)3@h8Tr>sag4ByAeI9 -gj!N}MV#_l*~a*uDcX!4e-ev_9Byfh)zeWYZcdh?#2E=?zqPkG{T(zahdHRu -VgZbbLTPnKQJE-r7hy6CAg#uERv}}WO$XOJX2+s1gm)o%A9ST2F5n=6IuvpH4^30@SN)eFW{Mp|DZ>j -BmwT}bvQlK<%_vU{+z^szF=JVFi=KDA%GJ2f>au|3KsJnrchW&sagm%oFlN#Vh*`qb*R&&x0RY$LB~R -beukOfqK!dc;(CT#;PSG^;5th1mj}RQ^)n3BR@A~j4}fS?*)T|3M@#=c0H{@rV{kpiX}|WMkLl{wO6uTM6B -mnwIJrM6m2|Jqy?MSP74V){?I`^x$22XVu$9vM3dMY|3P%ahFS2-RAKKA$*K}xN=5s-1PerqyUW%@C+r^ZU`!=ytrEpr^8D-Y%3ys0pidKi=RG}tF^Iz5Zdafv&>#kKjd{g$2ry3LWb7 -ck`l=w^Qpos^u64AWyqhoIRI-MZ>>uggF+B!1YC1o1gRTB9B}=jqaf580_4!4}2=;+!LzU7KA?X$f3w -xzoUdfu(6iM>#E)2&a!6$ -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 -9sQ{rD(SF_|LJ}DeJAHlwyp!B -XuVc?$$4sFT_Tzg8KCIA^b0(K)#o3Kqr4`1eac15{%=#TlW7Q5^_K+Kn;3f_H#iM_nN#1nC=Dag8S^^8>dftdtD-_ZmrMGn8$boj6(n^z -=$!LUMnN@^R9ny_#txEG!6t_yI^~QgV6681*1i{nj(e>{d7{woot+2u_}#7RSH6)`!M2{T*C -#R;(-A#%SylZ(}+<>2`&!k_Yl8&Kt0niopiFqIwm)9mBk=;D$@ -LnspycO-=Dn#U^kd=1-KT@o450KXK(-OZ_MVz-+N{giMP1LahqX2?v``i8}MmO7Mt;l-8kV5B(HJ7IP -eH0FwvO>P-LhqXsj&Fn;;uslz~aP?KZ(-d#$Xh%Yq3cBhun;B9XJjLa|# -`*VsKj6H-feV-T!$tdLcUv -osa-}0U_NNWNB_@Z_IHBVj10SfZOcd^|EUWSs76?OuLCeaj-+|H4dt{!!xK>hU$Lg{K_bZe2Dk`h1!* -#vM535yzS+@s@vziBgjGjbKT>4ob!OdpOW;$J=q@0(u3612{a{^O8d~tgGeCU(e&UpC4>BZ2U-}4f*C -B&47C%t+l(h`eD)HcJt`5M5-RjS;anE6GSydrU32b&uW48gD5-n2r&oV1Wp5VRBg?(rC=){L_j*c#$^5AbPN_q?0p7 -~hoinz+38}Uka3fR*c32cXdzj88~06gk^9@llH=5yRFw6q>-rHm;*9kk*js$l$AYgT-ueOY=JSMi3PI -8Yz9Ve}A{9QTteStkU;6h`4Qrv~uJx(sf2Z$n9cxNOz>e4Z6qJ)e_8A5R_GoQh-e0S~gaILj@1!0k}& -WPvm;rA@lYI9a=3ro`FPg=SgADLp)0a2Fj4XR5E0+0g$^KRjKuQcHeP>*xjLa_;U50DR70#jzjv)y+1 -iZTYs?5@-r5fT#N{BAAa3i+p2_pM+fG;T -KGXF55wF25Lm+i1T4Df06=ZS5agcz*rJcYU&kM_O|ub2 -vsuc@D@ZV#l@#wf9v!*LGF2Vv&$CU2#ebG`;Xe98*rHeR7;v-Q$)E!W@&@z@NJCk>z%`XoeA7xuUG+u5xlJccEJRBE2^&oY~^tkOtB3hdq{mOY&|qF9C$~_&Oj -%TG~ho`O0jHe@*XJ*X?Iri#)^+1TaWo{XC_UKn$p#o{gT)gWsC1DdCb;Cr_IyFL@XN*8Cp(p>xW(G#l -lvYN4Dc)VQXtq*OQ_TnOZMz)>m9U`sLHu^SSi`ostVAIt42$Wl@E-M)BadBA1G>nnbv4Wow#F@A -d96QMzhojF24!DNG`EBWJDKdD<|SLCM!)=s6zh+u6kR!5CMfn7-vuwgV{wf^jr+NjQqzK1>7ui&X2Y@ -v?n10%Wu@NQVc%h8+0w9=S@p$4iMz;}`pA? -%zQ0_EXyU85#!s<7m;X*%t`Wh@th&54odeyG2FmZ&bo)GiPM~<0{LgvY+Xf-vC`u`yGGypMO+kVL#&! -|Fe!)X1%4nk*)c1qaCj*yXOE+usU`<_YA-vC$5tkbVs@bo%OjHL)f5$=Ej-N^TDdo$)EL4d^($4Aca#>W>1dJjZzz|TTA+c*0#yCTjM*{Gy?$Fb+yPt%{DLNv@MC -w*%hqo@C1xHxS~V@gwh#Ht2A%87v-(UOWgb}#cd1^Qm!ygxyo*MbzI~uRh -IaC0EnMNQYgbx8?~;`OTNH_)b45P%nf7XAS6`wo9OKa2RUV!K$yOy%nGH88Xz|xHsNOn(#m!2+Oj}JD -P^|{XW+DT;4FSuey30r1n`@GI=acj_1$bzj^-ZRA31^9Vel>gQY!QpN3OHvh~aehx6tGuI@Q0?+L?3K32I% -@(dL|%?<@wjH0dFjQxqdT!{SN{Fs-}T(4;;mLR0)95g4*HPtVxecZSl~f=c~^d=S6kR08ud=aO^1#XGGd(&OQ!&t?P*^-L~V$Y7ZE{Y?G8eqdcHpuux8_5Bxp&X4}acC1FCb`Pk?QyJU!HA8QOUJb7Y}{nExx -X{KnYxcZoMY5ApY9u3ko=G9i}>C_~6xK>kiI`!xHw=QAwx{-29u{y)(7eII%IXo}ZA{W_{1U!1)77hQ -j6x+2mIWj{mOROV8jqq~>EeSZ4t^y2iN#N_s3moadM0VV(6+riz3RQpWvj=6v;*e>chJaFGQ8#6p@C5 -frF<>(P}40s1w_Os5ZsixA$CgS`y-YGg-;{f9$s1=>>Zfk|OKm|g)v`M5+((nn3ZtT|M!Ppu=r$%UeR -|ivO=#~WC*+J(mYz5GrjoT7Ow>HcRO<&@EWP1P&k=ju0GM`6^lO)5FXyBUdSc$|YnbG0t2jYhY?@x=b -V%+UzU|154bxdLvXE~CDu5GY=@FtJW4OjNEz+gX^uk!dSR(VlH|7iHPvLVWsg_&N!Z7Lde_F|iDd-4a -Ql`a8U(S<<4=wzx -!4kqDP`-vIJ)y&mGjRH&b_SFrg+MNb0zLRFaDVuckEs*j@?tG(miuR{M@1YPw~_JRh=*HGG_*$OM@RID*=>N^OleBW!MH!a5H -;Wy2?Is7%PDMC-Ej0BJ?EB}r}v3mNiW2ekP(_8o__?+L{K2znzWw5nm%i7L|G^3|#uc-2a8cz;>d=T- -D+w^qp-)#dIxw0B{BAndtlgz+zX^c^4h`{13$JzqDg71=?)(zl|6H5rk%l3*$IIG!HuB@!?M@LI)Mfi -E$%2aCs6CbSE~EbewU<75P6bOcxmFS{`+2Ru!C3=_!5DYLhO2OG^=Mu5booc!uN$*Dm{q)XKH -wWB0j(4Qi9sm5!bow6u@&wg5UtH>x@$#u4EC9>&g-EL0*c(gLmz-J!?8db1l~5VFEd>Opl2`&c-5J_r -2fq?4YnXIde5QCO7lv!!bPuNEpDm;xl`7IxVqfa)^grI8o?o2L?S|wKan@`2`7eZU0#kH*_f#8Vtv2 -$8cH->!mVAE6R?G07Pj0$dr_k?Zq@y>muo&?B7)k1lE%fmLzX#nw;szI?c>iJ|mZ_Cf8)ZyeSvFqmRP -4Jjg#(!>P2-cdX=J@2t0eYl0TZi-epj~~+{We{krLbOk3ww?`7;Pr%r)126Chc`<6zmxi5Y5a-CzsG3 -SP+Scp)3zWj7kTm+mpd-g^>>2C=z$yXC|;C0Q&`|KRTc&rJ^wTgp+?F=+v!9>5ywCRw}pMTc0t>0*sf0EPPMrdw>zb@=uiv`38Ke$p#Ef?4U -~iy@EDQC0@vaL2J-3EsU>Ry7}9O{GdC+kp}f6kx>(-VU78rDOfaoxSya;E^s{FS`xo<&Io2x+mFQS$y -3=5wZ}BH@Y5+@904@j^oidmlnHFeVqF9!fT6-yJm@jo&$XFP7#2p;t^fhJxD;W_0`g&5gyH?tKRWJ(} -~|vspFV$D~A_$f%Z7(*a!Jx=tqBau$~6#2@SiuMhL=PfbthG;TGP3h~T&dHQ?Ajn8`%o*%TM;yhP$+S -{QZhwZW1QY-O00;m!mS#!ZWhwLf1ONc^3;+Nm0001RX>c!Jc4cm4Z*nhkWpQ< -7b98erb97;Jb#q^1Z)9b2E^v8$SIurCHw?b}DFp1nc9CQg|75cP_SE)Jpr^LS0D>|@+d^ifSxJ+`E&3 -Ea^wOu>Cn-g0B-u%uOGe};isH{l`GdIp?ou?i)n!I1>m*C~t4R0Ow(-_atDQ-&}ywOp_1H{%-E(VEj9*-{4e1$A39#M?*l`8|J=f7AFV;^g)u|38wK -q?XxMqgsge>-5!h?NLdJc4jQX9{h^`s#Yh%lDneGsKV1S;vXlaAF=+D^mkT%eb5z+;C<_ldAmpDrB3~ -{p#4W>t9Foz2(XzS+TO_bh$^}wqPm~IU^~TVt!fDyy2wufM>TdqOia13!hOhGyZlm$Gxl`JE#u(l-TO -^NL`B_>V{hN)cFiJT@`pa?~ePIxhv=%?8wPapBeZ$aqOy(zZSR(Yq~ -R#fY;bdc1JQR74LuyxNk%4 -KzTF1fPI8z^DPPT|U|rW!tkFi7;;$4a9HpU5Pdt+mB274x%lTA4Tzyp;y_7GFl8dSYyu{57)EZl@axw -huUrD{k8|OFt^pzUUUox6{2w!hCH2TJ|98^6|{z(N%a2u`#RgF_RkzFV;Q%-^i&U=j+q4^XF_fJ?hI# -e_>P)U*`P4<46B|i9Zpni@zM;LLdco@h5^2ti96s6!DAYJ^2}Ngopr!-sk5BzC=|BZbAE!r3*5<%ox2 -B7y#DcPZE5V#^=&ufp50?vY7fWb61#SaEs++_Fqs-0|XQR000O8HkM{d<{-)sd;|ah#0vlbA^-pYaA| -NaUv_0~WN&gWa%FLKWpi|MFLQKqbz^jOa%FQaaCwzhZExE)5dN-TK_n<72eyWN8-is(kak#swi|{N{g -4J0EuC#Pw5X6&JY(2?`|gf-#~75-mW!Zctd`x0i&!bNd9fT9r6i9MhZ{3U;>V}<5W6uG$8&ajQfnkQ8O-D!essXXi)iiC -KsQU3uB7=Z-=e>CU}D&dV-0YQ$ATrO_6Fyb#P#=l#Er9uE3ApkIDdKZYLCyTue@N>?tDA2LZ5GF6{5@ -tm)?{Xyf8NCOYUHoFl%hAXn#0K^XQz%XCrK&?I#zK&GE`GthpTN!qa>X7nCAQV6I5y&uM0BBCNG7W0< -z+yM6IGSCdXXu!SmrLhE=y>9dXLg6)=R6BEBoCyXX^vC)0bR5d&xeYg-Q$eUiH6l1fxhZ#uPiy&7s^BR0rN5W)By4>r< -P8eBjWb+=~Eln4@{mOBu8B&)G%qiUr80a<0R5BuH-48kA-*^H&&^R}s^2ciIF_1H?S{6TO-TZI?}cVq -JqlQ&qGIuM(u#a1F4SeGnvBM^bye8_kOD5KB=QlPCXSgV=>>zX_Sh^Jz?RJHQUW#&My=K@2MSD#FcIA -2^m?4{kfZZyzCGWn8|L?%R2C*q4*vk~%3c1C6PNH-nsaU1 ->~+JM2Ptn_wE{T(8fHp4I;E^eW(*lN*n@GM6%ZR=3XxOOuh>D3U%(PaRIJTwOy7W -Da~Z0DS?qSb$bJTImCuWYo?oTfZZ=xj`*k8w79O?}|$!H!65{9K|VERM8?Zo>56N3Ts;S{*!Pk7q0Il -qKMTLLrrm6DHCo&p&V(80 -$d+uir;jH}H+cp-7i~$9E|)p_3=@>08Ka@|XzX`Jj{$t$WT!Ms{sB-+0|XQR000O8HkM{d3+S?<4j%v -jV_pCN9RL6TaA|NaUv_0~WN&gWa%FLKWpi|MFLiWjY;!JfdDT4qciXnLzx%JiZhKD3P$DETrbvw-Z7Y54-~R3gKmrtHr`y{*XF4abL;@EV7Z>*%*cE&C_rx@hlWaZ`RXN*xgi -m&MdcEFGA^%ZHRjQyWlT_{e>U?%~&KHRi%RH`9DON>(mBdmBY?_p7F{`p^ndF%gXpB+n#1uQJTbW-@F`{?=Og?1Mxgb<@dlOf92KO*$EewS^#}!X>^n`bA_kKevL51$@~-@SeH?Bz-L!}0kGXikg}TrXg4d}y~5 -%bCE*hGiZq94(tlKkko+vcTDIBupKq6J;XFH20f!)Db2d6>Cwg;;57X?FH{nMIo~?T;;eLc}6eVDC9^S>=}kO5-o -r{7I&6ut2?~BrE4C**DXDPlVRN}X?NchGMESAJKQj*uYvu}h+j`%2jSz820}9@;FYF;J4lgbeg&v+!waa2Q&rB~f?mH{m$YSc`+dJt)RZz!Z{2wvLM -soj*X9oNU!R>6MGlL1`kKDS*{7iO~AVyK# -8$uQIay#e(~b<_b14sRR-%pqO;8^3<=H0>ne$WS~682KiZ4QF3nxGB5e!OfJ`Dx!UCBsqshmRgS+yKMew$oNC&3wVuRz6U+zeyHn1)<4CgGnKy -%LewYIG!M9$f$rloRA^_XC_g&2Y~^a%>wT%;6PR64;O(p;za^T7>ge_K;Ir1jhB^RzO0rLa7Jp51;n) -qV7c@mnFT=rW+X`04ckL*aK%}*ScjmC!_sL$n&Wp`$Lk&V)VgH~33z(BtCl32t_*(e7r3UbRV -7d<9Zz{BwsM@aBP7Uj#sTPr^ilz>UT0xR?h4zzD>~P`s1B9a3*h8qa1}&J^(gQo;V+D()E`e8>?j($> -49o%rXu^_BlM?lxx+H^=Wjqh8Hf%#%0cSZ1R_U;WJ*U%>F1M=jrKV&(B}p8sZmW5Y-sF5Rz1)QOfXV8*p(WLQG~KZGx-QM4L$@P6D367*gQ -V91OaUCC44rpeQ;`kPmz&+Hx}MwZ$oI)>%BvM|HQVPG=~{UiEwGA_@7bBZsWu+q5DtgbX0Sz$z -cH{2t`PI+!P!=5m6rDobP|NmpzQ>%5umVyF)C`In%YX>{Kau -k~$F>5{!S~=OqGWEy1@a+~SNDx -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 -8c}{5-V19vP#7!ucVm#?O6}ZY(U1R -dDFCDN=c7WcEotKtW(hSQ&$*{3sbeHRB9SCl!QFfDPN*tiUxbmnNi8mUeW%j|Sb!~zH!xBjcfD#$&5X -@m^TE;KO>5+9z>S8Exznl_-UVNZ-ofGU=)qSH|Lf7$dqM -bX&loW#2-RTdS4GlDinrOGRMTjMVSzQqu%^f<`jPR{DZ3NV)S3e)HNe^$^SBxs{l(;XO;cC5UMeWpn8t4oD7D2Rk#l-~f23E|T{b2jH#S$ -_;xg`WSGc*t%E*iHg#!TKfGqdv+8QV%^hpQTX7q`HO)#eArz$XeD(wKyco)Ic(wg^!IIRGZNlC<@Llp -v9K!G^mL|34wvsXhcv`Ms%hz%InBG6&*?CHiTbAUd=I7WVXyc!<(+Bm^;k1;8YbCl2DN^L8UxqM%q;+3dI6E;AGw%ysV -;`q~t@W*B0o}``zvr_kQpB{rg`I_DA20zx~6-`(InlF<0UC=| -R^E#X0#9+^XK_c5pLmwm+)Xd!8MDrvL=wF^YmbU_`sDj1`MT2J{Qix0Yh^3AQr1Qn=n}+aj- -C!j>iRD6y|&5m)=01T?`U{9D=Wu0oD3c0E<20A$A2`Nk}EZZ=;g-HIu`mWuz`Y7kZqRzz?DBMQQ|L_x -sMEMD5RnsBxtJ;`at0C$ORkP`@PY=bLew$0q9R;z+M*9(u}YXgnPQvnJzn|K>)p<&5ldb8{0||61Gv3 -rih=5r+>NUNoye{OYT~{5!Z^wCW`}xS8pX_(}MO;_+i~G!%P+=eZ{iZA#e0%gQ|RHHDeJPfk5v={i1? -zpAjyW9b@jwxrX|WT#{?hqpKudLQAQXu)Xq+{NK$mG(Ac%ORO<0@6T_#UW -}d`u+rX=5zXPpuBBKI}ktEM7(>YJ6GGaus(ws*!k24kwbkvnGQj?oM7Szpn)i{c`c3K%3X!-inIdNb= -Uf%v&kGY7HPDc#F4lhVMVmeu970pC{zg>6RYA|4}%K)zoI@R3VvS#K9FWlgI>*$nE2*XHKt?~PiJvsl -LrQs{ZhlamY|>!J68Xc1=M=I28lHitb^-E<7Ps>XP!2apN|(gM@;mQ3M>4|omy6lF(TaAU84n3P8WjA -0lS^9qcsg&!v&1i*lb`P9!oaMg)TD5V&^0zR_!;YhBa0994H+UL5GXJShAo=U_VK&W>SFJ;kz3u+Cs3QpCudDa6Gm$z8wLJRQaZ5cg=;2mooONwQepboS_)*QU4E#U`B#qL -&}|RUu3A2_X_K9emMhwvA@zywSN1hPMwEYT!K?a~mOY1?mHy*HKn(0f;v5YNb7>TKw_JQ5-3_lTthNY -El)(T48R0S5>hHLa!pmb5hbe>y5K8!dGhfYh0~ejW=&W69?1?nhPfyg9=MRFn?3h2__QzuKOjM~Q5mT&lrYMgX -udKi<&A&APj$gOz6_U3aG{HbsFs24krU=708*Okk9jR(S>z5aG4>w?G9VfP^yf%)koJCb -yhIlwTjOJL+Lgkn}uAAO7*`waJji}31>N88`w5A3u=+rj>z9SB30-pEO{ypW1dqN*Qv~EG_w~#hTnk} -woeYsR~=TFde*-r-+9nJio8=iR!liEARNqM6#5?aYC?|6y=b?-#yTkv!gn1meF^}YG0WQD&0ND8vs>u -+|&9{2a}TTJRb&9jWF-|^+8l&d|k;jW}^^NS&rU6K%j7P(aI>iZ3WN?q`PO?GK&Ct8A)?hSbf??>V>p -TQ4;V1EWuxC}n7(9EptpSHe3%Ku?_ -UA*&pUQ=)fG@uNLtj%(9|FNgbv2VNRg9W-N`heyJz&CEu_8ngL1{m}a8ZUroKNdfG&<@rY{?{cS-s2} -Ulm0L6tq&~n>ynZNsn1E*SO+e~44|n*|ILY;*4+hWHWx66o`bVC{kr13^Q}vgI{S$~+NaszHRT~+RhS -6HRN6OqV#4@_h13TaKr~@WAFVsE%Z$Os$F4sr5HeLc+X*v-g4L@x2M3O_qX;RlK99wtgdH)XGTV> -3BhLC?miTO|}ipS&yW^`zqLZ;#^Oq9faN1O-_b9fjCau>=Y@jMG1|JKY`o-wM``Sv= -RpMCp#w9<{KYV-s{Ad`yJQ;}QAw2l*WYc!@@V3FDp(hweXlTv?#_kvwqa&)XcZYe@4e-&PO6Fc0;6Qw -T25Ybegng`p$g2Y6SKMz8G<@GNp~Hu*3F(JhCw2I6>!fhqXk{=uPJ`wG`A|E;r%tXUlmyJuy~P_A)gvjM~~2-=X%*)W-fC`Tz3n -PR@|TEA)J)E_CC7?FEU&N^lZDRjIhoal^fq&<#-8NkXz@*5Ti&&+9^x+Ka74Bbo%xdjUH`eIN%D-TE% -^J;mwxoJ=_!9YIQ!3uOBz;G-;EzYormJ`gjXXDVoL^4bRbIv47rk9v0jZ`@xUZsc&oxX)#PB)pFAZ&e -|Po!b#xTz77;#et|lgYSyO8b9U?zcCMDv-#P(t`kLK(XlvD?`KQd?nDV!IE)^tt(kbT~dgt=JmYPj~X -_#=|u(ulFbh2YIbU__4NJUL~Ez=7;kdnf-HdN#sdt?p*ze$+~#H-)KFMx4eXJXcoTxIBeoBQ^1WU9yg -1tKd{u{5oPn97|u -VTUj!@m$4)}3IR9b#ZEt6L) -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 -wmRnr}57D^0=_Lw$XUT^d{^{ -tJ{hrTWw`6S75ix}5VfAeB&b^Gs(ev9YlQiNZ(+$SVRrgW7zP)Kt9KGBv;j#NY=S#mh{hmFmdG{r -Ll#?qz4t^cL=@-pBpdg8{be^^ZMh7HaUCb-3xboSpOe((lru%TDdj59X~G>gYA<0V?W)73X(7wLMg}F -yjrjU&}bnkiCA^QD|2BUGdV&V$g37D=$Ph`oV0q-gCW{i+#L&@sr2Qfu`u6ilH8C9p|uG&L^^GzuEh3 -vLO@gbg`yKAeX&7{Vas|;{94s29w@uz(tx=%DkKNS;=DDXCU_j^ -8DpPg)%p1c$LGFYvCp&pis*)D4$BmI~bcGt3cm-Vu=0Qz3Va--ajz2C-&mmZd)i&;QB&3?aLSPg{xo} -EW;n6`d?G1C}S_2i?Ue_fc5Q**cX+gN9hckpWraPQJq1Eji|$ga-VdWex!d|(|w_ZY2kU^` -?%ki`E|v60V;dSRzIOdp$C1m&S=%U7&-kSrU&+Q^^CMa!f5ph_J0ok@mY7j?SnDP{WykIr^*L~$Af2~ -3j)iG5l_@b7SCd@v?wzp7iL^_)dS1g{m$pJ^}70+5zU^}o)P_xK>zVkOnk9WyiyAg;(t1GjuPQP1ND^ -lyPjLGPyCYTVf72?;Gk=f^X#r(yh|XfQ7*1N3m&H=i<{R~8$4YSZ5N#{qPb$bx4 -kTmvN&K7>ji3hgOT?Z?kVdwp7(RQeHEt;?wuY1E<_d*RN-7PF^nGT!bDr>h0_U=Di_?)-ba6Fuo}n2r)p35Rns$q2;=9E)HDM?dvIu-mEZLC< -g>W3O}op057gZ~G+&4rgy+d}vGs8velX?j=S=73MtLI#>y8uV$Y?_mW|rr~V5s{M>eP;g{e#JTBD+7O -WqSYlb_4>3%MZMlqqdd_1~e1phmo5nq#`vSC{mcfakIoc6{GwGi<_L)F0B_fY!@fg19~yCt@)-w<=xQ -`K%Y^6>O`?3&xJ4*ZgSEnIs>xm;ab0zR+fUj!v5BHl~Gi=!V-XAbq2nsJ=8)A`!++dja{WViQ15f7;W -3|=&Hn3lSxMI%)MZZ4bSU{$X}>vyq;!;3xf(oeMh)N<{2IGj0*@@+R;JGOp63KCC0ab)9k`>6?WX@?Fk&LZZV4bua}`tke=wa -IWEcrB0fj$`wQeY;oy=GUlcr4w}_Y(2o~PF0JcN(oQ;<&26^r6=>i&NDuax&4Q1zvO|AIk9+Wx@Q$Oo -{sqU_FKdT7|Jl@W*XTSl`0=z4yzUjWjybG@k`hP{dpyS5{>az#!m+hEDq%0m57;pLD4bVCfuLZ&3d^9 -?|`NnTOLxsB=|LvR~rmIuN`8S;RrnlD2k^>dsIECEC%MIo~TzW0SX@<9gDR0TkG0hw_e17TRhOA3;%c -MXsxHZi@5M)u^B4%;w0=^7}N)zWoy=xCBq(nnuqpFj=gbu2t5yKCpP5920Xz?IasYr!JepZLZ)&zVB( -qh);0XJ<*e{amPV$9cp4te%RRvR9jX!(o#E$`CulrR9WsK9#1|w?&54UK_C9Wd((!Ri!J)UMAC;*%u~ -4o(N>GcNm*QdUg9g;hU_%JcS|RmF;`aM$ux>a4h;IMHTO}bcO4w+dAi13^BO{_$La~dt$)!iv&xiT6B -ZGTT+kdF`OS%#Ip_TiI1#PW|$=vVkHc>8#=?1$OVZSCJ)>FYE#8NA$f0m?=uZ_MssZ;h -_TKUxlC_5nF)bIsfv38cs*f+N-Qf`lI#JA-(6 -J{gQba;IZ2auWU`a95{9Qq}%outEJxIofDrpSmcRdhfh73r5zvl=6h*Dn)qFcf;LC6bRnw(2P`vG2fK -Yd?L!NSfg-dxau~+o*Pna57rX>tY=|lzINnV6DFDI)?000S1GGdG)}8PUSW97-!9VtO8Slo{4;Q>7wm -!jLpkpS>xDDmPpDSj+kV5>eR2?%wHsTQ9pg2xcNUNspKV0}F2<*V@o=jdh$0e9{$@1`~Clh}yRD;gZr -G;UXL%D&llvaJqS%*d8tgJP -CYu8Sdf*&%m&nw`MwrZqbU;U186_;inze_aK4S;AKiT6Q_-==K9sjpg&P8O6Q5NIim_|B$WEE>Yhk9M -gr%*B@*K_yVen}68J$s>;F1C;%ERCMZ$fK8?h~QKW4Y3H~fwp-N>9js|%?)kV?zjDtZiFQr%qk%np~a -zJf{y8b4*C^^p=|&ILv)9T9Zy4rxy$vx3G0 -zbifz3-=#7@QwBE5XN4=(<}^~LaP*B4m8qaO@#2%HN=j$8LY@APD#q~^8zZNH?2t``$$|IQZk+fA!ZO(YYwwE=?Ay+t_=%YA#IwvDP_U1+KEz&^{DEK+rP^zRUxLCVm>$>moiP -l#eM;{ci2e?jeQpe2 -N2b00>k%cwz?8&X_S01t;Y3VVVXXVch->;X&I?#AKYlGmgN1Q{Wu#1hK?}RLg*pFO3nW(c4CKqLvO@x{ -(`Rm~|AKLYe8bYScOPXDStlSFSjH032QBG_ej-isCOF2)oTKeb4dG{;dKdb$;1m08zv -RSETpg((l0;2If6mTvuu$Zzc)zY&ShGNQPw;dE^NYdRM&Q;D6JB!ge#2ynfuow(jHD@sQ%Pb~HTGD`* -t-$xfrt;C_DdYH_eDSWWia;(kLGZ@;-3vn=7D3n+~wyECh2mjA`!*Ft|Z!gr;~ZZbzkABQ;@l!S7Qr(}kj2P-X5A8+H~|Jpy~jh42b_=Uk`rVTQKY7f*AlE>t?_1l2~Ksr=$8nUiB`4UeXhf!P-cf~f7c*l!DKN$g{71gY2_yMhy#p@gEH$;Y0DfEE%Qi6AhheD(krEt7v(+RHx>2)fIKVuetcOO371(malY -jHmOGCmQo4#W2_dlXsr?i15!+Ooq>IafgCpeF^$3cHXJq{`u0I#Oeg>Hv+JvHF$BubmtVRI-zI^9SeL -?N^BN}a-Di=m%HHZH{p|qAJE^xn}wL3M(j^^$VFVpi-V;n6*>bxI;~wuR)lTZFNa0C?ta@ZS-kVIZsp -RP%VbeBcq4s4_Z`y-AojRGT;!>)bvjENRz?^~UZvU@$X>I$vVS3kj@dk7!v{5~jaHilEyl_d -I!Vyk1EpVQ_1|De&l0cM*1>`bxBOsU7jf!lXOCD_-oxD@@mS*MYRcB9F5pRSGnO3 -#VD6V$e+TbnSgKF`Z0SR~^ui4En(aKVp~IV1h8p6ITHJyFT -fMtNoG_`_h|38+F0seFEOzl<;C?a03ysLE>}3YZlw&B+q*qqnS&H+rC}!65_1!)brRyYX?t9y`aDpk7 ->oB1fLwF8(#v77_JpfAB8NG-X`PtP@`2I9R6ru8B$$5NFPSKd1tML -iUQTItks3;)NI)E9g_dZ4nfEeRtUgV&jXBI+yKwhw-Ro&}EJ`Buz!;?#lt{J8P0EI$OC0&3F1jpp+oH -?FQ*AbPTuAYB#~0#e5Wm&D;!XU%K`q}yXz`HXpxkr6h^cnx2J3_0iHMKqr+I*v06Dr5{yjmIl4KGAr( -=>WIG4^0#_Q1bBZXv?rloR;qo4yYHV3D)r27?y7%;Kb$lZ@=TJUKl4{AQm+_`@&>-2#r%ct89XBl2{& -U+s4OI+u$K8i5OEFn64k}#QU@E!+4J++~N;E -JN0PT7gIrTZ=*_4;KQ8Cu4|)Kk$TT!Sh!rwLlGfT^LL;urRxec9?7d&9l%bVRO8Ikyt^xCArfh7p}B -8gx(Cu1>SmJ_!UJ4}#)y&qQeQ&ld4HZIBU -f?ieq8c+b1-Z_b|Xx9EaQ2U1P;zJ=CC~H+-85T8+EVqG(&448%_k&>}1e~JC&H@pb~5miuK5q7QhyzI -1-Mbg0blSmNV*JC;r*Nwj!KE5TRCNLsF*)x18MTfl?cQjAep_Xk}6;xK8WI@R}sd^h@0&F(I-y -n(U{DVf^T4f{7}^;C-GP7K<2vpJ+ -W^?jm5j5N|yRMZI0vSwuVk14^!6hR6D1iV}5sA#B+06D(!l|VP8xbQzLy4fJ}-mCzX^-=Kv>Zz_ok$? -1AMwn+?&KB1vz2F}6LX?zKH77r;h#$@`)3&iy-Ll%){+7+zc@j6o~SxY`cci}UWc{gS0J9%S=SWs|hS -0~Ix?5IWpoQxbrhHIALKnZt;H95MN8RoS`oL#K7G#7`$$Z&C}o&|(As>=Yzhz?EivJ=6fkH&JVJM?uQ -~sSJYub#5L-s+sXZT@l#Fp=4Mnt(`>)D!P;{I2cMFPHG86Wm1)j{wPTuA$EzhqLI@t79a^Ww=fi>%P4j -!{oCRFW>I(P&wxX2!!hH4@PH>*w>92kKrQ!`!P$1Z)&V9)o2cXvZ;>WETZufC@RmWal9hKCS)nuQ&y_ -Uoy?(V26M#la|Lmt+H!{@QJZyAoxj3Tp0`xTj%m0eK1v|&~eW%b+6~}2nvG8V)vqeXpQ9XRoD${?6N~ -onwVH7AlIttaqN07>k00DseAS80DN+dts;$zS%qS24*y{4g7Z$LUm_vI9~f?7$Rq2En`FQ85~jckD4m -X{$!Q`2Yw&B&n+sKp5?sjG95f=chM7yE{cH0x5EF7nU8d!XNRsM>O}EUX5gtgmz1kMs1cl2DVun-S{z}YWRef7jCQ5TDR0DmzvY3t*Morg#6>)TLJxgoh -=03?h{98(K_QZ7wuY6TcJ6`#2iW6*c4VmnfeG$`*k@tA4Uga1Uss$3ZnwL&M ->Zyc5YE*(PRH$zR~>*e$BeiwX_Ww%PrWQt;{{f3*5v_?<^A#*2tV?7Mf%0awv;$g2L*SOb>y4SS>mCI -2gVnkA;j>iy|sz4Ec-hosr`83bT!8N7FSam*c|AD&K$woK@sCeH8+hh=AP@P6gtlzYA(6cqJR0>#C_#i1kiflZ6*Uit!yZ1h(fXhl)i -hhO)`njKuUrk(QNjy^Upt|QgtneW9$GOl6X70cPs$IHEmbg$eJdyJB7y=TCu^(o6ps0gwiY*^oJcr -s~`+d~Co=@{L%C9 -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 -(o2+TEEF(>h9R8=%h!&k`2qI -aG#c9;VLDZSI-m&f#&GNunElzn(X${175=zAoDB@8qPeL#63-U^1Z(zWNUHhCR*qt~_a-m>N`Z -ZyIz=8v?rKjapg2T%&!dsQ7+g>|fU?komvGXm!8}1cW>tbvz$2~3hBL7BUx0QBz*&W)$bHBo6f?iMQt -u5?0^2a?7buP52-X&L_5b5GEDS?p-$ -#U;a~CWz8~_5i%Z*w7+8nvnYX+ip_#x}-pq3!Ma*=V`Em#_~=lQ`l1{6b-O%kC6*9K-2}Nf_XHSYu9B -?>s~<`GcCF_)HE}i-n{L_kp7j&aBRU_w#bzbqxEZQhxS#zTp4of2kKrI(|+n!P-S!&;O+ZByix-1SRU -{FxZvYSzH)h~LwfrrUbi4}?R&o_b+6~9lGb@c2c`;4S;dLKkW3SrX?PEW2s1yb5VgX747r_Mw=$`FJt -;$a#J-iq4`7F+FYs6KDo24%_}$v)4o;_~rIu!oFf~MyGj@J+Qulh09G(`|@cBh?`bnkrvUEJX7Z966T -5wt4jYCGwEWhJ46t)Iu>dfO_H_izkx^mLPX>E^nL|(tmw%(VDIT(P)rkw~D*Z`}xJk9qsf3nYCOzK_- -^>xDwIJl?g0a;xZIa_Z@7IxmhbG&U=Lf3`smMuE+g+Z<>Zh4^Yb&y+`@X6B~va!{Rw8KcRqC>i#mX<) -*(nJ9#uJ)Tb{?c6a`P2dKo=Z;~7v6<$y?6==dwsBz -wav<=KdL+Lx)d4*JtPz)O(OWxrngLDFTAyd2)8B$)?>pBAN@X1O(O-Wh|BD|7ee%)5@CGsG{8m}-d-0 -f!69H%$s4tINW2-`-Oq7|PS*aPZuj9_BK!!Elb9FXY_b%k=vOa;E^1A1|^jFBk+MU?B8x!?I+zj>-}> -@13~>ou{|guAT4ZtV55Nc*y8cA@W|TwSRK4c|XHBEGRO4KHVm`hN2SB*AUB4Z?*e{mzd(kF`PivlceD -w*LQkly{F0v>QAAj>WvU!dQXr3uNS`UqtA2eb?ROp!U#sR@YI$i6`Zb_o~gIYZD~QhhCo0ua_I$V{woZ!6 -<5W>EL*s9@=Ai;m_q|p!*=I;hA=YvR%Ty`~EY~>&x(BMo%;mp3L+vIsB4oj^BGYaZX$wO2&uZ;ZdFxx -EvFC5pRjx{DClub#pM@4}&k}vB2=F85|%ki6F%rKa5$~7sq}tm(f}<+?iXSQTKXqQfYbSgOFu66`0`r_U?TKO-Rtluq&J+gy{GqsPtA?r)NpulEC|!{ -WXMaJR?YSHtq))L-tWTR?CbUW+i(ZGui5-uFs=mDpCN%kqNz{+&tP>#^-D?uyq}dI|6FhCcF;xH^L}m -U(!iphfq>pm5}b;S%m)=i6SCyaea+Qtzn9Evl6r5ON>hbGk2I#2XPnnISh_KmGC&$khHij&0wpdyW0} ->;V%(&Q@AU?v+p;jC0AD^YpLmOG2R#kQ0$0$>aRAZrrOzCBh25jA<1hAVc%)1Iw=@z%}!GJ;>Sn?Kz= -B(sxyXGx3@CJn;QE)G(~rpQq|;Uml98K2;@b@Zl*HMA38OeqTp=P*V9NMsqjb_JX?Ca~DkNYZA$kq#u -{|kbFRz6!4ZquS6L>5Di3f+C;eL6TD(I_I-Ghy4NAr^RV!gr(U|xzO!FwqKx3+IA4HzYZttdaBa5feJ -|cafAhq&>)HuDJCBb+3cuz~MI!SR6DxQb%r*SYnu!vI5q^J13u8vJ9AL;;XY!k3zv~q!6m9`?TfI=w*I4jSk}GfmhFpQBLHMbI3PE@UvA&>4LMPW@IjV -W!<4riLPfon{;-1OQ@`*M3TRL7de~nM1JM&HdozD%5530I*QGpgdvDkwHw+YPqSse$z0S8;yqrpx#0N -)q`7K3$RmbI>JhE}$#tR07E5if1Y{~NZ_!O5nFx=yXm!#MEUw(k?>Vb9lu_wF25&0~32>Eu2MM`!(bj -oBL+iu?DC69wDJAh-;Gbf(^wS>rG4C)t;`zwOf|5#NMSkvAx)Iw+#*SN>qe#sI(u03ynQ4c7GGl=B7* -w#>Z1(Nr85fXZF%hU&AH+p;G*x#$cCAcpKcHrUlbQbGcEMT#iM@T(jD!KOCF}xCx*mA+tmMF}7{w}{h ->AL&nUNw&Z8qAVhTe-8r&=13Q&oXi#02FoN4;*l|WkD)V+OlA1d8yc^e!aiMSv6+$UNg^XdSHnBo9aR -UmHW%jc=Yg29{k_SuU{a@@$Qj*kN4X5y}C)YLl$U&6qfuIfZ%zJ@}ee5C29clvC`RBj5KW?wAg+WSJw -4-6;7&r(tGyN{^??S?f~^-knD}+-umwG#LJiS)R5%1vbL_hAg6Ruj2A4gZ9@23FpWXqlPR4w -)L9A6OIt$37g4X|i`b{5>oEIm~BCuMi>a`98o3IaKL)UWOyU5J~Z8w>`Qg;~O5en6 -=*0wkAVZ(Tqz46qr58PXpw!Em6>Yls)fdlI=v-}O-0MvI<-ZlM_1dkL`yEPBpVVIU)jt-6&zL(`Ank8 -bz+?kl`wcPEFV=EefMUbR@aB4-u*W+*Crk#B^Xt>gIF-iB6L~7N@(F&?q@DXVOg#QWd3y}8xVq)J{RfUqw -SD6^I@ff*wkjd8@)`{stfdcx%XfNs$1fWU1zQd1mK2ii^P3!^c{xw7z_fCWu+lOtD~}*DbM9Gk#Z3!p -vYlVY>riM!);v!*}n$f5VsIAjnv86Km-aZewl>N656ZODFbb`DLFH1n(@R!f2Lp0iMO3%;XpWUsm -Y!QpAAT_3({yjgFd7)n%EmHzgs;%VI+0Zn<2n)bjOfJN*=JzbqcNc5|FJ;_*cwxrq7}?$%Obyb7JG$d -+HpfjwVbq_wyrYH`|r)h;%pLb&_ItWa0EtX))zo3kV#u#Aeh4sdae&7$IBaf8|7YMaH)49n|VP*tmL< -4f`E;-u^H-YyPVE$<}pEDmL~i#ppydE>HBmV%f?M7#`IRc(Hk5Ha_v+n9N2tcCO*me&HJ5f(UXL9rH0 -VX@~I6|Bpztl$vT;t0axOw#g13nA^QovffZtoua;AoYubE6aPAIO?%DeXzW%#~UK3-d+}DgS?hyLlo6 -4cF}^?t~>ckZBqBk2En{8H11N}2tA1E7xDNa`d&l|3omqGTb5TFs0!H~i=64YZl}~sW66Ro(q7ACmq( -2Kst-JoB{_s1EiZcZUTuKMvSJ++u?+W#>eqc}b$MwlVe}&0T^=U1tiwRk$cj*75f?1IU|n3i+oeN^gS -gOs3(sv``w%GU?(P>^LH8|{jQ1FOtD;+os@eq!TNH;ZE}mJG-Y@SS_G(=V!mU)f_Ls7egzbKj6>c(HU -cY7qt*J1a=!I2WT<5Sn)5a;v#d*KQ;e|yR?V^NxS+aKRBEeV^xQvSmktK4w>RvaJL3)N7B))87aSy=qI~2Ul+ph@lR(uZpFHU1GN_+#*6kO{O6wd~AA@SUYddOk -C1eYxYC-H+z%z}%>f=h9Ndbfbi1rQ-PFc+kBf|`{8L*X*p>*X*p>*dDf)Gq{XDgqQ#=c?L1OE8=Q#`>b -`@btl-Rea1c80EB{?vY;L; -D47b1b%GL>pr#@~%t53Q_}PK~9Ml&C#Q<^aWChW0_lvBMV+}H;0k92#b&%Bxl2-x43m`_|x(8lpfVu+ -|93YthqQrgaJn>Zbi>!cd1A-Y4!2sU{)Gfel0X7S;S-__P{1Qa#L69E=`9aVcH>4*>=zftEg1aE}3Zk -7LJ_)@1z;zG2)xd)ce7?ZR3p}jAV+kC9z*@&~JG&Im24~`ftZz`<8JztMj${PIUO|dD$bhtae_!8@V){x6=0}<6b0ZWh~R?|JP1dFurY8p;<)a0yI415g -$rsncRB=|AvmlV9McZ4b8r+ -ms2mLr*u=RnJHuz`ei0a=>YxNP$lwQw;UK{n;Lf0CJ1CA0>Mw&j!XS$q6q^OrUqM+`ocmH7e3tGPfgu -GSxhx21TPmF=$W>8dTl|sqY|h8c -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 ->w;Vtw;Vtw;X@{pCF -vh?jz37X-T?*9EyQ$aO)k3vykM>+jGb&c#H+ZE*N -&funUG=FzkY17Yw^#*agF`yKWnc(ETDwY8F^_!Lkd6T`=r|VHXU$AlC)eDF8_kWR#wlmP5TWw_lAh=z -ftTrDne*whVGzkn4h67v#Di*9EyQ$aPJp7LkEm7v#F;_Ny@l-7lg8w65tTp=BeQ`xEj5v@W1^0j&#YU -DH`YZh+PWw66QIYK%emi~Ins3us+H>jGLA(7J%u1+*@pbpfplXk9?-f>#&3y5QAy^J#&3y5Q9XuP%6X!K({iUGVCHR~Njx;ME1Mu664j>Rt;}U7+d$RTrqbK-C4RE>LxWstZ(Ipy~ou7pS^ -G)di|9P<5?c7laAuei0Z@b%Cl2R9&Fz0#z5NxIZhx}ekrr7kFSL8%K$T~ -O+RPS@IXL1_B!7pZ|#7nHi7)CHw3D0M-p3rby3>Vi@il)9kQ1*I-x_JU4V>^vDt{-vPQ1*I-1bwQ~MN -#&3y5Q9XuP%6X --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 -TQDyKoF9Q+OA*e%8hoH7P?Fh0J>R -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 -37FVhn2@0O -#?PfvFT)gkbqX4&h8UH9(xqh3O^0}GzT`_fr%^zH5k-jP=i4Y1~tgW00%=^JrtR9w##n_dl-Vs+sE0H -bqs1Ss5!9d-V4$SL=6x%K-2(Ha|kE^H2~CHzr8nyvqB(hfT#hY<|3#V)L>A9K@A2q7t<;HG#A-~od$L -q*l8}ZdCfjIhtopjX^^Kuo(6du30@CFP~oS6p9X#!_-W -v$fu9C`8u)48r@08|ML@x(0huDw^}?z -;EYpo=0-&*aXY$iYtoKg~sCL8k$o26UQ>>GUF?IMd)vgEI}zG&s{-&v$P)EySA!ZyLO5@TS3=25%a?X -)Y#FoM~{T!I=hUnmW^I{c!kT)Lh%;H&{IiLB00geE-g91QmH2bYqaGL7wI&por5{oV;(yV5fnd=3dut -uKx8;FMr2C{q{Q=kinn^gBlEKFsQ+x27?+5YHp&6Jq`9W*wftl?hPk}7}Q`;gFy`jH8+ukp9X#!_-Wv -$xtUH8r$L+saT>&F5U07l&&|bIA@VfH(;!cSJPqJ;xvfUAWnlg4dOKSwMn};D@2 -~=Cas{;fKGFhR=jEOrnyNg&NMjF;7oIq&3hkhvI#NG{p@So#aSWLG*Ht(O;c(**((rKylHNNx^GJMJn -bf+5Ys?R12GN6H21r&Z8s-{P}4w712qlQH20>5N%ZC=oFzc-#)WL+OoKDcO*SE>ftY3&0g;%0{nPMw; -?i6mE-x-`E*~ymE*XPK6j+*vL}E&VDGjDH&+Mzg%~>I~G_@t~6az5LLp*_{0hR_>8enOFr2&=(Sel1e -VoLMyNt1g|qi#+L0j2?%24EV1X&y2PEDf+Uz|sIq!(t&m6fx-1pi6@;4Z1YDVu-l(Fa#B48kA{Jra_t -JA*gKDKvOx--eKlch-o0EftUtj8i;9j0TDszVMr^=G$_-cOoKAbLs}owiYX1IG|wKBlwwMQDGjDHn9} -TmA~MqB5L9ewu%&qjDyB4;(qKx1DGjDHn9^WMgDDNBG!LuP_VC|%$HPhCvyU*7D8MuT(>w&VuynGwm$ -afwgDwraH0aWxOM@;Ax-`4oh;aPtpC111<&rU&M0pUPrg@1h#554oKuiNM4a77M(?CoEG0m&*-f&I`H -4W4>P}4w712qlQG%sm|m-u;a9u)1VGrvaS?bQ;iUK&Jtn26P(GX~J|0HVxP`VAFt212zrVG`n*IPw~J0i7}>U={zFH(; -!cSJWU8H=rmzE1)BzJ8n9`=rU9D1?%$GY!r(`T84 -{mki!CeBal1EHVl@4d^u4A+rCO8QX+J^b~}KsPtyW`LUkZ -U(p+fG;!PN$g>626`Ci;l@0S@i4~27!PASjPWqW9_`_}FV}s!?#p#wuFIDj@Fey)FJrun@iNBC7%yXl -F~S&Oj4(zxez$@Kl_giL?SUIVM?kg9r!`OlE&Y?>4~8LCIL(Wn8dOuVM@Z3geeJA5~d_fNtl -u_C1Fa!l!Pg1&UbHmW+-e)*pjd%vHD4vk}xGz~ -pxyc7lp730)Gpq~Xi!NdUy8*#?TABdWusWlF%igOG1~VJ^$=;@$c} -mC8$YIlb|L+O@f-lIw(O*f|vv`iSIn)6;C*ma3WZN_dm-CgDxOo5YGJ;Y`Argfj -_e;yadm$#u!Awu|a>(8Dl97eG@j3V9OpB;-lRlaMDNPhxG95GNr{LY#y+32~CPixP`Wgggm(lJ*JOM{ -ysDy{~&yNNeTkZ1Um_K((W?N!`{OXS@=oiC!M{Gd(X%%1|;3t`R7IqTsB-lx?lXi=09@QR)w8Bq -B*35XI9B_K*Bt?-jr1SQx>u#; -dX!A|mbF2E`i!B2vp3rt`tTGYuB;-lRlaMDNPePuAJg -M?@I8_$>B-THP^-n^agg6Ot((Z4~W7xwGROCs>laMDNPePuAJPCOc@+4M032_qQB*aOGlMpBE_p$Nt^ -*GF}$diyKAx}b{ggmM8WZHJYPlBJsswcrtf}I3A33k%?&IJx}T1R?^p{ -K-laAx}b{gggm(67nSENyw9sCm~N_nUioP;Y`Argfj_e(zRW_SZgA@NqCd+CgDxOn}jzBZ&JO<`~DJa -64)fLNnn$TP0k+on?G4HT@tz^bV=xv&?Vj9dnuNi2xSt=B$P=glTaqH!b#|o&?TWuLYIUt30)GpBy> -sWlJ2!ovED=|lTaq1OhTE2GKqCfLYIUt30)GpBy>sWlF%hpm(Kn+mza7O)|&`w64WH9Nl=rZCP7VNag -!h>K}>>}1ThI>62v5kNf49ndw)k+Zz8BkP?Ml0K}~|11T~4(OoEsMF$rQ4tC@r@30)GpBy>slewIWmI -1$Pulu0O)P$r>FVj+{zC80|~mxL|}T@tz^bV)2=60oFuKT9H(oCshNz@!4x$#;bg#6l*aOG1}~E(u){ -x+HW-=#tPSp-X!9vm|20iBKk?OhTE2G6`i8E0=^WiIqzNmIN#bSQ4-#U`fD|fF%`{I1cBA0FwYF0Zd} -ik}xGD7t; -dvvDG5^&rX);Bn36ChzCPgWYwfe&5h0eF2w)PxBo-}+MN7hzgeeJA5~d_fNi0?poFq6&aFXC8!AW}eJ -0iq_6TwP?mBgYY!AXLX1Sbin(Y7F4Rv<}2l7u7)NfMGIBuVdnmRT$~5uzj(EeS~yk|ZQaNRlc^rwxSZ -r-dmAQxc{mOi7rMFeSbFMFe8KiCDfQmM@9rO9GJuA_+tih$Ik6Ad)~Nfk*<81R@DU5{RVtd;iXY6R~_ -rAd)~Nfk*<81R@DU5{M)aNg$FyBo&d)_AE$}kR-j|`*#+cu+LR58E798(uyPrNfMGIBuPk;kR%~VLXw -0e2}u%?q<7cSi4`Y8l*IBSAxUESl0YPZNGc+oJs(7pgd_<`5|Sh&Nl22AB)#AK$$}FhN@DqvkR%~VLX -w0e2}u%?BqT{ll8_`JNkWo@Bne4U_B(dOf)j<6pWFb}FbPf)YnX&22}u%?BqT{ll8_`JNkWo@Bne4Uz -WI{{Cqk6O@+BcjLXw0e2}u%?BqT{ll8_`JNkWo@Bne3plB9g|Cksx5D2bIze937q8H0EtNn(weKqP@k -0+9qF2}BZzBoJvQx9ilKlJT&n`JRydCoIyS%u(xqP^Mxn!VWpkbh4pk~u>lHnx7NrsdB+jaF~#ff1h!%AlPlHnx7Nr -saQCmBvMoMbr3-N`{rpQYFJ -lhLa2@8BQ{sWH`xilHnx7NrsaQCmBxi%$I|n8X8tItYlUx8BTIJ$^5drrgZo%GO%P|$-t6Xr({gYn36 -Fi&wejSZ)1OV_8%Bc+$`dWDH&5TrsQ3;6i$^GhJd0=Mwg5(xw>@nJz}glG1O$J$xxG_CPPhzn#}SgLr -jL43^5sEGQ?zv$q -C)t_kJ+D!bygc3?~^*vi7qiX0?gSO4q)yVoPQO@@;UCmBvMoMi7vL>5jmoMbr3 -aFSWTWF*Pn&ytwsCPtLZLM9_gMv{yq8A);_>0EnLNGqIVILWMLGLmE@$w-pD>*~#N6C+AyHItDfBT23 -#UB7)4NGqIVILUC5;UvRJY@RagGSanD3~+t-re}nPl?*GH)l7zy3?~^*GMr>qGZ{%Tl4K;wNRp8xBS} -V*y!*#4BpFFEl4K;wNRp8x?{@P1Z0`;kWg(N1BqK>il8hu7Ni -vdTB*{pUkt8EYMv{yq8AkqjakL^6nE5Xm5t&o_Uv;KVFnauMlVdn1V_lH^L#(cVjDQaH&hWHORu -B*{pUkt8EYKIgkPoDw2R`)z^yMQi&lU*8GxPGd-tkt8EYMv{yq8A);_>Dp6%ILW&=J^$RpkWpC4tY$K -tWL7g7NivdTB*{pUktA1=&b7}F*@Tk}C;2?zz2SrqRx+$))-V}PGMr@AFd0cQl4K;wNRp8xBS}V*j3k --0Oa9hUn)N1T4U<76gGdIE3?dmsGKgdl$<)rK*fOPod4FZzT6y0!?fKts4aDF5>*d4Wy<9Q|83mCHA{ -j(7h-47SAd*2OgGdIE3?dms@@{R<-}N|T6htzJWDv<9l0hVcNCuG%A{j(7h-47SAd*2OgGk=3?)keOh -h&0C29XRR8ALLOWDv<9l0hVcNCuG%BAFFSY`-v! -89Fj_Wa!AON%FnlC1%#07&1eltjJiAu_9wd -#){0UBV$Cyh>Q{W-OqfO)hEV^j1`$xM@EQ@5E&sdLS%%<2$5NJWMs(5kdYxHLq>-D?q@#C>JuYGMu?0 -M86h%4WQ52Fkr5&zL}r%^Eg^UXs7c -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 -}aMSkv%WAYz+E_DdF!TQoyN*Af7Lc^ptRqQPv -S1RSh%FA+vsMo>DLmz6iE}ocF4syAnRud|TnQP_qfu -R{BNU}qX#}q%KN)!y?WihXm+~oX06w4-nRPfD!vLE$zSxg$ -Z3Gu76SOR{Py|?MCO_?eztnQ>A=-lI!%^jsAV3gXePT^fY>I-P*@;C3n+oHE()1>CG>5xt!}eA<7iab -g{~Bh_))K+ai?VnLUgrhScv%6rFxQ9}0h1I9neQNy?c{C1Tt-1K$SnNEogcUuPn4kt^6pWKZWp%JMlM -5vfUx(UmaPqWMB$y~@%`{mGWip?gaOVwq#+DGIoXP}VCtd22}HpkaU(t{a9l$K-UV`HXgM@RGdyfleAl9JM+qp4 -P(g=@ki85sYl7f3Eij?d>0g}D$0FS$aE&BTv!<1{{;X)b`vOkPSEXE8-r;>W$*=FFODON|!79-0ZZpzF_UIUhS=j -MqS*a!wpC1%eCSdQO*)AEp7K%+i(|8x{b(Vu9(n=m0{3vru#JQ+NrS2nuGCLDU1r$me6lRdfsOT<1_1 -xitt-v5vR(U?8v6*cf>zglBDBB&Rmx|4ei(f~3uvj1jxiBC4)m0yPgHHW-<4-0Y~cD>ig~PRD17{B%H -bgh${nfLn9{h!S)q$A^Q30q!>vfNSoUycl?vPM2YVpIU~eJt$(lZx`}>oJ~**xaKT#+hHZHceMHzHcC ->bz4;3=;numTkr`cPrh`}-p@G9`2G -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 -4bSr(WCq)|PIgMu-MKq7HA{i|vQAYDcHl -O8j7w$5jH4bWCQu$ruH7IumQsR~fsoZJyB@A}xP*t=QuMDG0#=WXY;Ee3+|8h|oy=ewU%7>yul55h&c -j(PZoE{v|PyT}C!{H9@McM7pZ66?^UlcsZkv^7dP>+={wnKNu`2d|p$n6dK{oYOgd#_Kl$PxMKp*X$& -$KOx8)q1XYb=c4^>a|*Y-~3#pKCZcGH}P2XTbvp{Wqb~R%e}Dvh>5L*=nW$A?u^JEXIU{?6wk$D7Gp8 -F59scX+ty!DO9KQH0000805+CpNvj4X#!LeM0QLp|05kvq0B~t=FJE?LZe(wAFLGsZb!BsOb1!gVV{2 -h&WpgiMXkl_>WppoNa5*$NaB^>AWpXZXd6iV#ZreBzefL)k>K6xa)VR9~Y#Q`IR_xS>Z;)&hc`|5eWD -})GgQOCuU%y9|FKOZcTRus1IXrV_IPLc3L;b>W^p9BYhCtZnbH#Wtv&JkyG}__U?u_040GQ^+HuluA@SM@Q -+9STdO4u4}SK+Fyr%rT5z1!P=0dX-rpin7_>sUuIJGRf9HI+n0dn?zaH@4%hzQRH@5%wp|rP^3o&^3X -fCvRw8`K{51`XP;yYb$J3tCU-2awhjLAa+NUDJd12EN9X+@DRe2(Aj5Wkzbfh=2dMfb%t_k)}C$Qjv7 -8pmo#Pvru4v?EvlK9Yb8@8k7df*F$qVz+UB-rrG_<;I -h%+M>ltM;uT0&q|gm}%nU9{aIQ2XsrRs3Xpav7qR<<8Zoox -q#(9idA=0hXd`ye>o}~6n8qYBWFsHezXZ -nyZSVoWW{VPX^byPX5q7yymiWB_&_V3$dGQqY|tyU{l!nwxS@atTrjb(vdfyu~ewUSslt5wIb$`AJXT -uuyr4?jiMf5ECaR6C(>7YgsZCVNiBhMg@2UmMo-YZT;4EIxFgo<`_#{TO$#q4s0+n`DPUUh^xk=3xF1 -n&)g;``|6jck=#1pTB)9edkS~7HinUcoK2Les!3dl@c!Jc4cm4Z*nhkWpQ<7b98eraA9L>VP|D?FJow7a%5$6FJ*IMaB^>AWpX -ZXd6iaOZ|XP@edkw<)EAIw7J9YPZM%J-6k4_r5TUy2u2#q-6R>V#N49A%`|Ed{F9?KgnZ{|sla7mW*8Y!If3ueo3m^ksm+HN^5?9!1QNY7IWwoJIj132rzcAMgz$n -VNiG??h1x -cc2$VFt=C@bJVEbFvv3LOJNjWZH-h--MS$Qz=WxvFyql$@fa?FA~awm%ywoYMV>!N6Y-T|YG+jn6(VR -Ens*B97ItzAJ`pI&YHF&pmc21234#J4IkYX7^9|0;SmKY%4W7*McgOnG51 -ku1g0UeHoe&^HMD_vc_1*9M4zgA3&`o*-u;G3lLfAvZgE@A*aoSf$&8Jks+m~F76rY7h^nCqPp4LbeW -n3$kB8uLdUUjan`tGsi&skw_mYsb;BYVVh>FQ3{tCK2+@hQX=dy`-NUK -A4d}2R07WCuf*S+bRV_0;bM!8sxgB*%r~?Vs45F}4pO9bRMB4QnN~DH(L4(B1pa^qecHMGtl`PamDH) -FR%EF3#ds{6LbFxk4BHWn6d?~#_$MSJRy{#gw*0P+bA4UfG17Pj)#>c-4-td();6&F?cv>NRc$ -$~y~;#?C|sNds3 -A%&fxpZ$U3JZ3Yc>5=t1gBL!`*(5J2+5Es&nxicmI%4d26x9-F|ro-CE$jw@U0EchISi;DC9beHpqd& -7?jW`y5V!ZTC#5Q*|)}lQZ=?A6fb#ADNH5P6xe|I~z{>k_ElYzhuppodH4r!jkW`)aO#J-42I< -{{T=+0|XQR000O8HkM{d)=2%#$pruapB?}JE&u=kaA|NaUv_0~WN&gWa%FLKWpi|MFK}UFYhh<)b1!3 -PVRB?;bT4IdV{>gTaCz;RZExa65Xay1DMptUmq?gmo5zd#f^d+KBLo4_DfgyY>~*lt*mP}jqE)|pXZ! -$|3sA;6TL0K>vY^LQ5K27ZVi)gn;w2Mi3uKqcdrk -|L5eOjmKlms1Hvu@)$sFC)8IM -y55s==b!;*7(o=ka23r0KV3g=jpt64P%GLcM@b1`;6&dru}fG5OR$6wO4@FigvX7DK=}4gfkJ*B*sim -pp`~x*awzLas(G00;q~AF`ZB~!;ad7q;cAA|x&eldclQ#ci*} -m(S*j36z$oe2Y-z+I1PabYMET=sE(pB9q*vhKX{d}Wv0JcNsSU0lhn?Zx;~y9h7y1ovBbZ89hSFJjMT -~&H@VPg+xqp~IYw!r4Tcc5HFnPR0U)*W5;`t?!-1)+DF)*%52|rq4;uzqrGiu);(YosOdy_}XzT2A&I -^!{P??=#rVQVz$wIBMe5ey$j!~1ck1TdB|+hW>GZj;wr>|n@wfIDf+NVr~@Ed3FWH^c-z8)o8J;xSv& -#XAZFmdIjt(iwVz{}itmk)QW2^;Itl-)het3*yz4p`y6Xj -jD#BF|M&x?eLbhz^dRf!WvJUVt#*uw5=nOs{*+k9?1xE#QC|Ov<5gt@XCr9NY$B|H&kL)N#smNXw-pN -AY=F2aZ7sAhQUeJr>+#3LsEMxtZ>xD9BYmm)hZ8~v!#_4$*aXQZ##2Ng225|<@nZ%hqXA)=fT!pv_&s -B)4@LZL+D$iAktMXipxEjyZh^z5jow$0&Rq(f3G%_1;bqCKc|0Y|5xJI3~5!c|kCUH%kYZBMwIYFG@I -YFG@xhZi|o|_Uk#cX#-2mWTG=-&>vt!`S`(2S{3LF-awRB`#fI;r~ -16Q`D|p2?fObHOx<|*N1@Og-y3DaXb;xC-}s?=zxfaK{>uNL_w -U%!-ftB1@9o~t+S1<7*|Ofx+S1<7*|Ofx+S1<7*|Ofx+S1<7*|Ofx+S1<7*|Ofx+S1<7*|Ofx+S1<7* -|Ofx+BUs^QfNjgFVceHFjQQM -t3_vx^fy}lcVwd^P@jJ51!5nP{trL19J+rFoc*20_|-VR@r!$d-kl0&_Gf*!_IaFQP8*LbWR-VV3)@Y -Co&f3`EXY@27h%8Qua=h?2Bv%Njrz3JhPr-xXSr|aRr|MlKMJxcZP!2E|q?x<(G!(Y$Edbqu(M|?}S_ -I*tQlD2u22JC)ycSr)_gFi_E^2<6_0zQpM0`S)J#8=t)0DkbRDEtXfO9KQH0000805+CpNvwRlMGFN0 -0A3CN05kvq0B~t=FJE?LZe(wAFLGsZb!BsOb1!gVV{2h&WpgiMXkl_>WppoPbz^F9aB^>AWpXZXd8Jl -uZ`w!@{?4x$H6Lnp)Ca99T@&RbLP$dk1o5IO>P2X=$FNs>7wxW-xWE2p{lbfF+Vr}gU|yb?d1iLjXJ_ ->XuKFJbV;By4{qd|1SHrvBXE%n{TPk**cM3?MX}%>Gh7Nyf7Mp1^bY~UM5;{gDP#tHSS2Z9H55}8YnxE0jRB|EgwBT#e-T8jx -eMJegsHXFFhz~(5&f)^o)kv$Rcxekbn~1f03)Wp!Gwov#UpqFl%WA5VUn1Q6nXtbO~_Y@sl>7rC`8aQ -Fi(`&1tc;Cj|oudbDhBx5eAs>|CEaSBkA)Xv7%V`RF2Kspo(9jkZ-(Qd|F-=fZs+n2MDAN=!1hX4WJNC -Ilf6@Cixjs;IX=5dt7wP@G^@MpovbL)NpH0b->d-nmGMtS@wE4nDqv3^2>r9vx;?&nii--0OO<4fTC8 -zbZTsj)VAeY-y@8}+z@2u@VcNyihjNr0{A?GmJife_N@6@Er)4Vw~!S{R}IG1QF`zcz_hJ-spGQrE(I -I#UmHq|(5G|PM>mx4uD4yn+@O28{B;?1YYtG#1@=%>alU{~>>3mek@x`YsglWKMfyH~hflXO?t=(Jm@ ->4B#`^d8>7`+S~)+6~KS$dD==x%Ym+Lz@`qGMgDvR3)6U54j-b4K^C_RwaJYhaS*Ewj$swCZ-n5I -30512J*~Pw6QXMD0^C^s$KCa?*)hKOGqFrt15mauv>ry7&N;8_Z&Xw~AyoP+CZ0ONJn;g&slrs04)HJ -vbe>vDc;&s(H=dYmifQ+#;Bdpl3=xgTNkrcxpayl@2gjKpu$4wuCf%*N&BvYmu*|s8^N3wGrVp#|Ic+RzYXPrOOMMwozl}n8uM&=!QuTXRbDD -*=bC@p9QxLd#z}xY^@u$?MH;O=YP0blP)h>@6aWAK2mm&gW=SgKE|ITO005e^001%o003}la4%nWWo~ -3|axZdaadl;LbaO9oVPk7yXJvCQV`yP=WMy=z_({)Z}#NIn%#oH5c@_z4o|MCAGfAgdN^ -7&65KmPoOKl;hffAsj9AOG}+|LyU=`0V%Ieedy$-@bqR^wWob`tZ${Uq62M@z?JkAHIG3{m1|N!`EMb -dH?*o-~Hj64_|%x-N#RlufG29{+sU}U)`Vi{<}XX{rsB`-+j1K{_XpJe*g8y-@pI#`1qU0cmF}2_ve4 -|{=09#`ttYh|6kdD`1sAY_m7``|MAoOaA*AZ*~d?>-+%S#{g>ap|MlZnf1Diu{iVMAB(LB9@xIh=zkB -?}5C8IUJ)h^!;y?WO_a8s_`s>FRKKt$Ci}&BY|MbuAfBkxrAAbDiyH6i}^@sa0|Ki)f{NL{1JRX1l<) -{Dg_}PcA|LN0*-#z~7ao^#0kMBM{e)h-je*5v8KRy3lR9}Di)u%5%{ZXm?=F|K4k8eNz=DUBnZ|tuhf -Bg7|$5&r|^Z4}s*B`!pWq%jMcaJZ>`SpML_~}mnyN|#A@S8vS)gQk3_5C>R`n&g^e)sL4%kaPa;eOw>|M~r=Z|~nc*7vVJU+qshe)hQQ`Y*ox&i&uD`Fjcf^1kUmKEA$d0>(iIteD}xu&hHHV{zqT@@W0+Ee(*P+|M>G?{Da&7yU%~|lOO&3=a0Yp= -@*Y5Jbw0rFMjd)4}baNAAIrn*)PBN*-wA|qwhZ+KY#!J&tFRs7((+_`n|GxM4 -m+Zc{Z})z{f1mc7`$O*MPPlfy{nh>7e>wTBe*U@j{PFj9FZlI;bm7OlcR%{&5C7X2|M-i4_}S+_{K1d -^@ozu>`7gfs{BM5wi_d@hlYji;2lxNGGpp~v{p;s`@HapH(LetD^Z(;V_wVluF6H&Z-+uW?)Z7vCfBp -2+bTVK5>g)H9&mON--v7nNe|z^oKmOwJf4+M>uKn5le{c88di(6!&-&~U=lbmG>v_N2zkBR;K6}*L^R -vggmfu~UJ^HQh&%NF6uIGGiefD^q{_NeIL;G2-Z*hm`uFtOPx_`Icwm0JbueuZ0N&j_coo~k*>7~3(2 -FJ~u$#5><<-X1P<-YtC_e;5vEy-Kn8SawJzHemmk8@}JSd(JA(qs^yy?Z?4zLa~vf6n_eaew;x=DvD< -=N|U`yYBlTR!pwP)7~Yp6;~gH^tz+xo#A!eKR@rMf1La6J8L(0?hiiNGb)D5H9O=V3O5vF_=vQ}E!33 -CU6AkY(sj`YFOyFGRj%woC&RhCba&OO>oqxT4H=m -P3%AwqKx$C;qp8Ip}9(!)Ce7fep?b9P4p*!_>Kl~jc6AmKT%bMptLaC?v?`%~6{b2Wfou?En*CVj6S -B7`#?$<9vBzWXIi0=%aE)r_~{&Y^E36a`z753{*fvdc}-rRamhWCv;h2Xj7Zlrs@`Lquz&D0Fq-Sl&L -V}4W?Pbr>m;VJ8<3}af@b3XIb^tR`Iy05vp`_tE5d-s1SG>dC%NA4lDdwzyp_~>o0mHd@7L`=!;9N -|y;EM=%TZfT|MishJl?yjwT>VY(&bN4$B+1$@PebIbm-cZav%~mbHE%%@cTG!<2=Crk=^Eul^wvTN2Yc -tdLO@Um}zSVs0zFbYE92NXjy7?*~7uCnaM1n3ME#U{ci)2`Sb{}^I9ldI%pJY#zANPs1_-fvcQ(tFJe~&krhSAC -BRp8#b#yd?$(aHaX<2esj9 -!cylGcQpLxnXOb#`_OCd6Ect-u<(H|=H>*)W^o%OrBr_%8}Cpe|^p!qfrpnwGIy5@}#Ub5+V!!0dcT2 -G~D{cFO;Xu0N6^UlP1&yTJ=y`=_y#K7HC3K6+Z8J@YE{O7@r9{XBTnI7dR@o7V%=qSF27O?d(I-f_yy -dm(ET&3nH&c){ahR)&f&?UU`ni0-D2%u$zd%jI?=?F=SpwrEBWe!(Vf`$DX!4WvG3hxw-q1pO;#GY9ygg)AinUW=Iz7Prb%d-@1Bw7P) -H16VnFzyO7L={CJ(2E@*l)Z+fcwr@Ss5;9JcwXN*^^Z*MaJnF|X%-JHU`L)HDiuH-iFDszYWCe7t(2& -m(2v8nIA|4W0O8(#Ag?#t&~)70QDS1rSs``oWFMQfcdPMf(j7v0`HF)}JiH?zqw?mwrf*2I|p9nHH+MVo(`a9+mv%XoVkeD2P4f-&@58pLzn -og5_AAf7ROo%%a^ovGC`RJC-Mo-wcauwvF8p1REE%nzRi{-^% -&sZ)IB1gxr_>M=izd8oNa&dgy_D0)%!H0-?T;oeFuuQhM0E>HIMHUo<`Grg>47J7*1Oc$RMPhwN9mp< -~TAa#OwT2qlVUC@Mx4)&=nKWl!}zI8O)1Z}Me=b5=HYfti2*3&cARMgy|`ShLZbToP?pNZ#GtMO^ir` -^{?T1=-dio6^8I!|)HSQ(hk-7QCFB!{ILq_BL2R!=RvFAq9NR!pUsf6nxMW}Tk)n%JBUwuHl*G4j$&U -6QP6?~}ybAZvOJm#bM8%?;1ZsawOzv!_3IhnGpjnibxjS-Ny@Gf`C)&-t_>oyVJYq?fIUC*9+WDbFdx -nPWfA9G^OiHPP(>;`Lv0cug+vD_x%Z%;Z}O&TATgDic)Kw5@sMGwpF6VET@UKE*ChuGbyv>7Qnb&!^5 -brqCqQf@i5T^N;6qn%;9(3R5W)Uxp@CareynIsLhMn}=F+rB`gauyNp_GuV2@rKLQKa1UMR{mA-!^O3 -ctm-V|d{itqeqQjNe^zrw|v0fdeA>hp9ds&U9ZeyFtSzugm0_Zw3^i4(0-Av$_(oa?2*{o?%+V{iYxi -pgdbNu99$?Q9;6`e4u$Z5S*)tI~ub)2hIh~d(?a9W -4r^;fU^Od1=ORnJoytDLpmxj8Y^E<6)Vn-0yjE>XDdj^e3JDs4g8J@YUSoM^TsV-4_$CF~86{@}>G|_ -9!WY!kr1j4e~GtJcB9X@6y^)|B?5qiy3!7zF~XSF-M`1CfDPFYW(P4&n0{_|hn)l%+P#hEHecl>bq=V -;S4zcVY`^Iv*YFV|~5FaJDkzT?&9cw^k7re~Dl+{k1 -o1}=-{*VwkEV<{QxU}qT<69oE`>7uXK@>3^2aX#@o>zSi&pKjsl7M@dPCedL`iTgg+HS1+P@ulQ+C6| -%?enXMwJg91&b&!a>^cB}w%Osmwd9L9;Ek(5g$@|63bgt*VW`ZF4?l<&6&-t(RGMAIJzV5nP;<~0SYZ -~{9ye^-Y;utw%4@${U+-fXO48!Pph6>Gb@~T^>q`LJ)@AOC#|K}U4}LHFx|#{dY)&lH!Z~& -yytTB;%>HgXWI07Wc}f+k4@Saz+I**_lpd*{D;nN_biS)qe1slJOlYGf+4S*HX;?xT-k%w9Rw9F -D+o&9-c(M=0P7Z!7) -?k+LNJ~o$2F#n|BnIKJ1!;)O}s^c&{6t-^oz_bj{Vvg{RB8AMwu6kfV!R#({NBZ(|x;uitsbxuupv%b -}+X=f4!v7}*TBW?%O&4ax4XCzfXNs-aGAU{ScPnUU}LQPyXi%Y95_nS$+!%`mWZJ;%v)Uo#e!UeJpB{?QohHnrAAOl8g#OfRJb?vYTJHj6atpq}}N8S9>f -kKz7q22&|&d8Xh!SDpoc;ZX;EO))$th*iJ@Ud_$jPq)m-%=6yeuUd+l0lyD()MW=?t=Ei9A2Xx2nY;F -}*zjUlYnFpGizp+sxws5nKo_*eO$Tp`Ga(yTw4m4`UJD5=P_wN3uXw#HYrT>M<(;99$NFqpPA&7|H8V -7${hAR+Cx0g<&U=28SV-v7mVRMrlS`w!Gu#r->}U#Ol9-CTie>grgxeO3OTRFypV`P^un%;xOd!t8R$X3~U?^W}Is&~E9K457A6D}^p9clIo8$CKlWg{+X4L3unG@4$;hNcndG{1w2-UgfETYC+U -v16WXx8Hv1=`3xNcG%^NPC%sd23AdnB~la>OZzoY3Vg|<;!eht+`<>)+WULqUkMz!^4!=`1g3l#7sbD -L1_q>-g4!vpJv@SK+BD_O+`(2Jawdpd(5;?Ct|#K=%*jAP^zg -E^QIoaorj+=)#>gb8-w67i#ih>Gl7b^NXyWJPNPu%{aVorjBB<(VtRw&UP*c^M-qb+q`VhtTF;9T=E3 -AO?c1!=B=OzDj9?kB)(Z!9rfU{aau`F2sp^623EEdSuBmfy|7$vjjA_fJQQ%>%xtlX@tEg#u!^zXa%% -?0Km*v5lDtoM1UeEGS1{xhp|zZ?)O^b{3a@o#FS@o;nhcRWg=2GF ->1-ui>tH<*U6~@w83u`3H7T&!8_jvov<=v(bf1sp+jTzpHK8%jf)_9C_hzrZ2wO_jvD&fBReTO<&UCG -ik?iU}_!5SIw&nOVR?4Ci&9OaR-kE`an*4xCuH1gT;neOtjC&T%)vYBBzCV!8jf+wCzAFyBB;5xi?C6 -n(h;*IVQV?Hx?JPlQkgaf9Llf*SUr+a=JVjRty%|l3Hw*8oHx{P}FFXtWp*aO=?b+~H)XAGIa2X -v)%QEp2|yG{Cm2qZ1-te>gjlIPQMYkY-LaFsEmkk!mJ!`?aejXlKf831_Z(-6NArn>mV3q%C~*JW5S7p0+R$WH6XqmE4SxduC*_v>bt)E`f>1tU<= -fUzK7&n$rjIy1aL;k;M6NUfioaoOsTE&GObo3@0}H)}EE-%wUbT57>DJrzg`h?rEMTIJ;+XGZmR|ehz -cqw}h9jw`r5Q$Jz1Tv$>$9tXE5!(o`6;1O5uZX%J^}a7z>CbL-0RIb|Vsa(a?8ZJB#){o$VN?Rk``89 -k6lSbNIiwGJ9*o)qp&|Kt?Ma@yd|RV_~kVi$hdQCzm3)-1WW#KVDzW%GLtecJ!Ki)Ly*JmVzuqXJ3C5 -|&NjHQP*Umh0CHC#IP-qpCNqdF1jUPG)v`P4y4V%s!YUC``K$(KRPtj0=~}=pshf;JhAb*$%#Po@8!G -<;{+(iRnG`$p1NKMaBzN=}cUckVD;pPn<<(w}m*Hsz@>+A6W7{ZPwg=bCI%j`K%uV- -b-hIv7e>SF>{zA!!@X)=haHV`yVVbHR+Tr;<^I9=A3k -HLsP?O@EZ!ZK{8U^Q1CKQcR=_F((tF|!bBtZQh`WMf&{Tsh@j^P?&8jGF^4F^MN=-G{-srdE4udA8!^ -wdc^7yP5xTu;?1{pIvwZIy -VOQ!~3A9iNRA(>?$yU^q{;$<{jubMa5DHV#;DZJe6Q+He{N!Ow -s{9hlMQ#oI+bO^C@HLoGh3*N{;bfvuQIYg606#M7%qEJm-#Qqx<;uB$*t_OM96&WWgy9dSHJJLG_%Ae4EwiY*x< -tM$kScuiFo9dPdJv0oXA&^_A+bBb$*T -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 -843(Cy2=7dn~ZKUy20o -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 -7}yU-i|HWCXgEtLrg@w$M#*v4DrhU77;Vm -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 -^)PMT1GjQPkZTnE?k~8co4Cd3Xr -uIyq76Fyd&?!=W1{{=a?%wT9Yamm7CWT!FCQ)4rWCZn9Bt2_vhs9}2(hG8fzfumZ7W#_I44NqMBSz;v -Dn@SqEbY}stiW4cF~taH;rI5beq)P={X+0cgOtT1K3Lq+du*uvV;T=w -5sAzb^pY4i6;#x67^SeKCnyjX$HB=*y7KI9N;1M1c1fjhk`c(`fN3FWxpqN9PPbT**@bjGq_mjOE3qA6MxH6G^6@+~qY0lpO%qlv;wwL97dJ-Yk|~R6g -*|87csY3cU<+L+eKDc>9MFeF^wzJFBpZ6CB1(dRb*b>seNE36D5Xojb0#BM9h1m!@*BSAQ4!l4W|!6E -ur!#h+m{B#bKJPJku}#fH#e44>XIpQRynq(hSbZZ~ns09ke1Ve4XUV1mk&^RjP<)=uvLh?v&;5DAEwo -3Sal7f!8oAXDAz)vzw2Fl(mahBEg0Cr$#Ej|%+a@`mk=R*_E81}?`MCQxz}e>O|^+EvFwZcJB{eY;pk -_#H--+QUFQFeoSFs4|VhaiA=O^PpNh=FLB#d(DfinJ|p78Pc1YsSBaoeHol7Sj8x&Dje=FX1knj%=xM -~gzj~rT+54~cC6Y;dr@gTmP_L-)EUSd1=qY-%tE52WnIx(J|ssP% -RIP*622(M!nXG+hj^6A9+sZsL+wf(P|c06jC+L+)U>?wxG)lP)j@1E~gN#c1UxNzeFlyYo$SuN`&RKr -A+R@P%jTc>nAIsitm#b-d*2c8tepvRvChqTNgfaps+8p?hr@_#DNZl0~1aJWPz#e-dOU9OUD|l_3Z2R -USy^Gfm*92=p*`-{X+DB)?A{pv2JxQ^f+%Oj!~9Ya&USR2|0RPobnGp20i|#d)WKM}C -j0lso*q~27EbNBfgOV-ffx^0!6ps>N;G~L%t#;A94p_4RitBRTM~PRw9G_??R@2BzrIOK(D -4erGdNFHr -e|gH}1gZi*#S$l4wdxP$szlVVfkC$6VB-hf);D*gI_?zN#n8kg9DO3@`wWkCWzh5~!&)f_5s!_$QGhF -Y6^zU%EUsJniApnF~FHHLl_k)0JbB$-oO62*}Lly_$QpefJC}r;yk;^3+0s%dJ8LIFx{Zft3YIK0A -E^?rIZHQx9H`wwoj5Bc*a)_yJ&p9HDx#z?s3~P6oGFiXw>d}K6p4BdO91t-}8t>>mi3lO?W8BoVtCc5 -zlOYS~9;Qr~0#UWO{9DE21KsNsZFQ5lT@FF^Lsf~Gl)>O$d}SSCHh07zPI9O=JHc1hxaW=iI1~eM@tC -d=i4`qNtXv5{X;~1`xXb-Rw+yVSiFz+kOII~t`pE;`E7d2Et2+P;o{&8FYYH1Q -ANm@cQTOt;;`j>o|w+KrS4P188l -njR|VP8%>b!2L%fWEPueBth<;L&1jeG4vO9b<)jc4;p0n91~XMVM-(Vmra_c46=NMQ4FHQH -A}uwxH*bHSdtIkY{@pAbi4mjO5K_^H*htP1>M#>)0z0OwE8>A(C|Fq5<3W+;cQhI|KLOnXHP&1aBs=|C^zM}E)!1w -r~du>?Pto>Pv|4nvi2z=IU^UYPjte-D?}}oL~r)?qH!P{24b^l)l!dk!P#-m|7vxVcKOelCC7M -;G_?>K6E(;vNoR3ZKz?Hi|Ao<=zEYWixAU7Q&4VmA@V6UI+Z|QY7W}wYm~d43D?ra$2|38XHj<{IE_l -xr?VwH+ruF)0nFU<;RX@ -aZv=aa4JdINI<4MKTtS5t8^-0X7Lr4EjY_xg#nT?>UMG7#mfKY=JRWM*rwI^iHncdFF!4>Hj1d$83`{ -RchCBS!mfqvQew?$MtAPjKHQdEu_i-G68S;_Fj-Nr08yAH+Q*%=OC9l13Z&&TBJJ7u@Mg5oarsBKXec -J_eOzA1c96rGkV8^9Yx=T0{WGnAJ(7kqQ{G%I>!E>a`6L`0ZC#}tkpgr}TdUIr&rwUvbCoYHj# -kQ)Rb)b74=D53F%n~}Jrb*OPL#*DNeoPCs_$L8 -~q*xBS1s(cYG9%&z3g4mBNoloY#bH1@TqYPcIAhj6_XFMQa!>G~b?L8{WFmO7De6L|15}@;Q%iS@!^L -1NukHG2f&3lk(Y-d1b0@(YCZw#l<=()h-%;gnF~^F76wvYml3BOrV!yR1vg$Yoy4N`^{24}0RVB>0H7 -;^iQykqasrlB6*C3};7Mr{rProaz2%S&B`&b|7z-iT@t`YLmxyra1nfV+6l1KsOj7wHSz?C8Ruos`r~r(FcP?(s$UN=>1Mu9vt8HeTrV2Gy}e(Yc@MOH}>Ldv115?*pk!A3F6rp;QjNQOHlCb+fR5!?mD!3cb -N%%{)t<%l)I%25P;bd!3R1%hEXfj{A=ZwvBE5gUn<)Wh$je4m-k#uBI`Zmat=frR)LSDSfvOTDV4CvMQALD@Tbt*-)_gCb(mhGMq6cY*s4l(j9?h^x1+{g4N -`*P%*{NZQpxmEU3ExMSGeovJobE>GlWo36L1g#`fM8ipHAuA6^A_u4^Vo$ZMemD-X%vA;!hlDyF0F_q -{t=57Wg63j{!tVo*lR(<}s+$YT3Lxv3eLvQkqtU)AgbDCR{Fsf)$dB2PP1uTLSx4j$2SNU~xuMN1JJ@ -N&vweG;&*RmD}$xg8USpZ4m+FbsuclTO@6xX`_I=a^m2iJC~3YkAiEO-KTDKB<)FZVDbkXy^;r^JyPQ -X}Zoy|qqb@#`nL*TJ9+g24hgHw$i6i^5Pyz&1#uP`cI3XSQ7pf -*s@=pT9VoZt3{OiUI9$OAJj{Y&SftRyt*-JKLplu~r>qo_)X)iE<$q6guO_5>9k@f2BsS(gp8A0Desl -#xhuM{Q%X?9P1-}?>kp#_FI)!srUsBs|*-bB=Ie*8Y|g-D -^h#&^?Jp(HdcNpw3+ga~Dd8!H(S_$603Q5hGUFHG48HdBl64#EI^;k!=rZM>#!2E0R>mkg1?rnItvZQ -G$7yG)`>L;hygB1H{}LIBFcwy^gN7opk~F?!6m6;~XyXPPW^tS&1 -^(pm19`5i7{0C(*RJ<+`m%8eV2sdNk|14TfU?HJS+5$t)w4ybghQv?k{zm?&=|#TxJ -CN9ni~?k#R-g&kncG=|`-r4VOQQnOxP4)KU2NMEBY)W16U7t41CE(NR#?NT=}V7Ndc+gmYcC8dFcceW59VdAi>cef4 -X`~2+uJVTnrVrW3irU8^p-yLME5#83gogHefemp8|7Ch11*aP!+*gq(Km`N&27u>AyIf}%)4&?fbMlF -NCo#b6(sKAINd2_pmx{uK6$jPgwId#3k5|^eqL=wS*2

    Zx^;XqSAh4i}QN_Jh0Ki}j|LmV9IauG*(S5w22yr_6_hLGlnby_nRmrx!p?F8$8!AJDxn -^%6|%LJ83h_XU{?v%p~Ho3iBPStXKE9z&xtQIsVxchle<-_X5oo=Kw;;c~yzG{wSWO~(c+(1*KQlByd -e|7CUgbkBlhxRIms!V}%=f<>J&(&~-eZ}0fxPe!P{A;gmquO<92KnXd`TbAh#`Fzz)&sn&H;ZZ&Bu~z -b)*ku3=x^4D_iDH=jPj$#=vM~M=h#IU18Q4Q9v?Zwlc=w7#@ -4g$owTp>F5dIm#0l&6Yww{aWYEtYxo83Aotx>o8`dbtzb>qdNQp7|!*SjV4S-a&+*abgdb(o~{l-aj+tF3cL^fckag)K{D5585{EKPH@+yZb(?e7f+`-Pd*$#trpI%?Kp85c)qc -aQhILlD?>P;o!QD-5R>11?Hy6ElviyU(SK}eO1vk=;VHJyy;)Z#a3W@k -RH#!fl!gr;=AQ -0$@Vf1N)_&C@`BFnbB@-2(8A@+jVbaro*({cwOBqpp~6Z%&tT-bMNUbq!G()uW8~HSY@5t2!%46N~BWW*#KzQ*1@umaPVa#qtm6Ub|b*)Hp>Qg62VsAnZCS4ItkgD -z~M0G$LNCI&Hf^0d^lA``s@35(}#oy&D0oxyv6Q-C^20WY<)-;Mom_#vT^k*{VW%WE=z{_j%)Abg!F& -MdcP!uWm1ZEN!Awv`~w>={&0EI3&eaRcHdGcV$%!TAe3$qI=y~nhT15!9Fj~jsZ1v^WNH-BRX}ngi1d -cdAEI%-uIz?=Tz-b_7K)_0509*Id{Re?g9}49-t{T3U3VuH+(q#Y48lJUM21-H|{(Z-RodxnoAzuvF& -bD@kGu`XGxQKLW+jUZpuc=E9tH%Be=1%&Urf3y;9to-EA2zNEPRvKX%yALAR_aJ4X!0;c+JN#J)%HUa -p_J-6hY(s7@aUqi3`{_iK8hD--2jEU5COC=s3T2#E>ES9Oaq1s(vZtslgluBVFGi@ngjI+zy`0vsK*TC&S%^7=BRWaH%iR -Bq?Q~6C27?hWm<#$0m5lCuooFS;O;SNI65Y*WuAHrSRx?yYMB4!iyRxdgMkr83s>Y;lY8(Lt0USF+6D -*z{1>glsQe#H0pf06W!}}8Ek#h;`uF>?X<>Nn){#)ai6ezOWlftUV3zkIqn08`Z$ieUH0Qxy4^MK+Mj -B1*oe5ns*i|!X(UF>4xD -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 -XzbWJtgX1duC0ML{eHVoBim0}eaje}fb+K?e -L<2Y&Ai)qWfp-G*5}=m=SOl0NKn(!^h<@Gkb}?_*iv9-$U!boGBvOG&BPc5eCCdOH2Us@%s{y$XPzpg ->8>CnT7S4FFD{0u0n_0XY}wm;$*{z)}Y#vKXa^3ly`w@D5jED -^!+(szt!e2V`)-^#&wi!0iR3Tfnjfgi^r61nf(UxaaL+-mn$&`Y=x?I}cM{veF=H3sWZ&n;;_yQ4v8r -jGF|?K!_Q$lxu-vmKWYxyaX>?iH(pA2I}Kr`$Ry`2WQL#$G`*%o!~r>Kra^@cM-D`P=R8W7vAAYY{i5 -E;b@Sy2jYUDI2}|Cf^u9?(Fp)yz@Y>wR|F+;Vn?f1v@l@J%_ -=r!az$B)QkevMW~geU6>Y9vY@~lsD}cTO;FDXYG?t08DwYy6%_J2a2R0*Ogs)$$AP>xW+{>b#VjxR4z -_}hGN2R!Ib)zb3>0*M{3np)glP;#=Kx^`CE=jX8q^%)KAAaC%<{rJT#2oi9+23Cqzn)yfC3@8LEamrE -Mf8h&Y1Y61;FFHUh&CLTUl8pblUY;+LZs^guDo3-53xwn9ZaC^`pK ->hvOg%Z#c|^j6tleW4p(9;F#Z8q8L;I6nHO+n0TC8tTmkS8NZ^3z47kX -EhK%FJB`9Wj$#<|72%`W#hg=S9O~9%ItV+Oe1Z+mY7=#o7S$vSO2ibERH!eXj%M0&tCALDU7o>VYHWp --KVb(L2WP -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 -CKO2vP? -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 -Vo1NOjwYqXRmo*Yj{VYDriQPfDXJx>O -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 -hshV2M{VHSK&l -_^&V6i9UBomRx+@*zgmsE6zjj`$;Fq?KcmbO&TNDMP)(R`bSjS669D(Dv#8mtK~rxA$3AdMcprRrsc` -WRmLvKHyVo82#Ul~fCRp$vGWIX&j&5dcXm(TdbPm?(&XvzzA9rV4ffDqKoqf}51ACl`bweaYo58Ax!e -|G)#oZo2-yq7=Aq4TO|w`J5_Uab9LC-DmUOHea)mLmjkxJ_X=1k0s*6I29-u-MkS80{qH -eI4@!6nbJ!Iy4=5!dI3F@g>&#F3`w0A&gI5$5`2wNC@I}30({x|IXaP5NFYUnD1Lg=^0vggGp^Hs2_E -Z(Yq2k$1vi^F@OUL14nEOUS872rhcWFD77#=}D0yIv4!azgE#r47T}J@Jsn1%ERxZJ+LE{dV2s@ -_~MfU4C}ig$rSd@UI+J-jj2d>p?QeSF>lCYr&=f)0*56%HMni-k;)TZ^ruo9- -RrZL)MKl-UQbVsffEm}F+#zew8=X+!(}uusN1dZ -bo!ogMsC5eIJPFD3P>FHqW-HprL(v|zB*p6#6WS@VAuv5@!-A+c^}wYthMxKCUR{(5Ob>tgx3>j(bc= -!T#&yH_I(SOngiW#O@BP$itN;ZX;kbUS;^FXzES0{j4tCuZ%ccm%8Jt46DVCLv^G2=9U++Yp%4032Q5 -*2ciU)x+n`-^jRU(~Cr_2I{2axRJ;`pK!Q!vGY0!E0R$|=+P^+*ouWpWW<{IDA3`Opn>F;J7hny#ilW4V+Vb>)eCc*#mF94`O -B@YH>QE2xO3S4dz=L31y?Dh{qC)u6sN8?A~oXJF>&=Tt6ltHv4*N_HNLks{lhM*XdldMu#iu=TJMK{R -sLFH2W=;88UFTO@S2nuIh`zB(Ovn<)-c6Xj>gpy97En7gHcr>ZDIm% ->{4mlQ0m`}L?lSlHd)^gDE8m6aMElR$il2hUI~s&Z^S8sui>;TfMx_-K26MK?HQ#ATr##;bBqW$AvzB -V>djQowF0!<)U44=h_yWEp|4uzT`ChnNe)HpTd>23bC@QCk$9HzayI+8dP>;Va@6aWAK2mm&gW=S8l+x8j -*005B&001=r003}la4%nWWo~3|axZdaadl;LbaO9oVPk7yXJvCQV`yP=WMyev^27bQlvpr3DjS|kGAY=8h5d)lQf)peDBR@y4 -~v!4M&fYIZY?YXr7H|I9()v(Jykloi45RObaV_QVT_iDVU_A%KVT@iOAR;<%mU{bLvD(FOm7c&#cUWE -t!)16%6Fh*}GgE7@?}FwakT=Mmv1kgR#dC0MpXgQ#`jUJQuWWj)?EC5;kBR8eFya)Jtw?@cHu}fVi3- -QLGfDA=gpLj_orSCnbr|-pXz5jqSOcKM^6C3HzOvQthm)=p%ulCvRxk_`T7sepsXA)(YDMmrBb_&XoQ -I#O|pvHRVE+JdE%pbn%<9sIN>R%O-?sT|iD??b%lD?BU~lO;dJYN{_7BLd~+?Dw(5rDs$G3NjN -%$nA^WPH4a3wmI#dv;E(R!6HA0qKSmx?#_ip;K2pc$Hd^)J -NPs%*P85q4WiFL|dlXaapTA5RgmXCabTD^@`&86Mc)*G@h@X?vV?taf$|>kYsgG62OpUh4u}Y17J2vl -dq_Vhm+}K^%UrjC#(4=%V@kvDW+wdt|rNP8mF{er^`h)iik4iv&X^BYc5|rE&*8?SXrD -g?CjioxBTnXpe;E7@HI&mxv>Nt=zt+SzP+j#b&l!*jhbdYgX94qwrxYW2?O%N6OpH*DY4z7zce_ -J8>oM|wX&SS(17;6>Vw{if~aMvIDnmT1}6R?~;m6(2f(15ir?1QY-O00;m!mS#!glC36d5&!@%GyniK -0001RX>c!Jc4cm4Z*nhkWpQ<7b98eraA9L>VP|D?FJow7a%5$6FKA_Aa%FdLa&KZ~axQRry<2T_+r|< -8u3vGLKZu-?tmM>f>eS6pvSf22${Iz^q_MvFxm|AXk4}pWPp^xzN{Za7s5H7Vv6^j|z%FH78 -cZUzIFp(gRa-N!(*Y=8t@<#zd;9MFof -=<#R3FASH{+|jk3V58G>x~gpHND&Rhob>q$+h@ZNNAPOwVu5-eSl2baFYl`$*hhOzy7EZ*SGbyBjrD* -W;VJ$=UnM@r}BEe{=or_Iw17Gsdf!l(|pIjf&?WnHA6^TwW)s712M!ycP_mv0Ca!12abkF%m0{h*)jD -%Z6!@FIZk|X%+gDO6Dprs)1UU3490Mw_{yUY3)0J(?_F$dU1k9I)6xEf?I6ANai4YkrqWcP^X2hXz6r -}y~oc_PL78sKOCPZ_5K!5p88SeSFgV@l{`B*n3qMSMlMsV%3=oTVLb|=Gd#RC)ipo#3lZ%VENcBCb5& -GRc%pgDNhZk`&B|;=o+QiGrC!|^Wqja0(H#{R#^y(ew5Y0enr_H8#UfAs169L|^F^%}h8#uvYzC96Nk -ty4)zYMtTpTSjK4~2u>rMLB%u2JS@HMGhW)DbpjfIogXuGxC=S{~8*-LTa6%)e6G|c5zS!KQ;lqiN|J -LROq$?d!0k3YWn+wjLjWTby47Sg%*^m?7-aj~|;ljkp9(1Ocikwl#pErH==|B5feOh>~d|4l1?{&{N= -o-oU&1zd^<9=1G_j>!8Fr?4CJ4n5=*Zzjp152_VNr3q{euSP0@o_1MBhTP_a5?Qq_kYMI>?8+-rJekS -X_&1-<*#HU$6TvYf71Bls&y(E1%yG;na0LyX0xCXbA$ArNS;t>~JRTl@`P&6$SzBaAWr>ZDZ*y`iwqS --TVd?eSAhY>pqN<@?nJAfasK<$p5X4DjS-Rl(qmK#xu*)Na{X$nY1cml?*a0&UF%$oVd^J=~Ba=$cs=O1PuZ>GG%V!0diT2n5n78G=4$GY -h8g!l!lbU6}4lmsnI#Ok%Hl3kC|*D0Vk}MdSxo-IqUdx{z$D9T#1b@HtueMe2Hr>RSn9Q{L4mV -xaOmqcXwVo#zX}YocSQ{ZaJfynyW7=vb$=P=}Asi)iy6gR#>dx-|WyukE_oVRH^hM-d)#tL4$lN3%Cvs`q+STi2(uqbA$N3fXMeX4p+_S1nDBHLmkc8?IsB=Mhlz@Aa95pFIx|ed0FiK2K2 -Cf|Hr4B(zNr>(tL#cfm$qaWPQ(lyrP6t5*`e122X$wU$X0-LpA)F4{AnkcDnj7)znNy($2a-#lZGFlvPm?dA -u=vQ^_t+>jy0=W}W|$eI9~bMg_2_+=sq;&Cyh -eS%Ha6M?E3?`GDBZmmmis5}cc#t&3B7s_w^R!8dO{M_|-6$he1wBJ^fvndcx1k_6W#L7fPFxdh+!LQZ -_ew}5rYzz*qOL{QL#bRtD~=IyQJkel$c>z&4z|rDNg0i8-gl)6k}A -}KbP+i9irN*Ic|d51$QBtq*}aPIbz0{>5(l?;9>6ypIxnNz^&!bA%}wcVPgxM$7Hz@~f>7iL$>#*5L^ -XvQe{FB0Bt2k6)l3S){5n82hAkujxdaLMHFvMGI!PUDcF=H}JfWr{WzA;#K}22Yq#PD==fNODuo%j9> -h3BbgxH)*v1&y&O<-p81;0Q>^nW$Y=-5L%s_YCaB*PN<-^iVP~U{%>jsvz5nv28@zFF4N0NM4p=9M%Q;TSTZGjg2Tr8)voK -n4n0h&=0dF9STVk!y05Tt1&?1(bh5sr>>$dt~YVz^&LVRUt?4QYDE>;p%mDM`NcguPHpZ0M&luCmZbf -)JIfv@{QsnSNjuSt_YPN{dtw@}PD?PJqIzFi>ZU-vfmXd}M4vS6Cwi^rHi=g+Yw}Nwu##V<8;Ieup4D -xR_jxFYkXDU#M5=_>0j8SMP47;ggwLGCiNlgV--=o*1{}>iv~GnENIE$^6(YxjvV_fAA~(gFm|kcei6 -Shy3V;UlTn03rRTz9LUfwx&G#{>83if9Wg~P&Ebi!=sXzlz&bO7Ld;2ifGkGHy`)j5EmHcAYYBHr^Nf -$C*hG3dxw;n#&fbo1?q5%C@5WbWB;1Ryvn=lOzw!#a#*i@&Vrf5<(|51WFGK#2)lLo${yDjQ59Z&VpW -d8*xW5`t=~d`o2bb^OOwM+fbe!_w;2=tovpP}N>r}@6%L9Viv6-v;duXM)zwc3MbkFIhvwqZF)hyz4d -Y?Hpx_t0TT_LM)uMwqxWeFm|RK5N|!wGxx)v|-uqo`Ts9kWmVpXDY -7PWPFZ4hkFuJMj@QFdyOQ;hsgvsbwa1*+ld!MKkIN~26q9C8S#Y3ZfmI!Tt0m%AolW`J)QfV+%EUB|Y -teDW)Gq>i@V1e|r>v-sAu1&yYh>%6_x458}qrAwU#QniN@ -*M?*E7d_|s1k$&gyWm{>DPKUCrAFBERGki*8M+b;gLSWoMsA45qxPfgVs$i7N9d(=wmRZNkEZnuY33m -eLjrc_C}_k6G7IjWND=Pps6FGFuTa4^aB{IGyeo*RB{eg-nJ1OY6tYMY^E)Y5!R;M(%1I--DD(;NBDXv^Q`MViWdj$Bl<7cEWnVB%1slfD{@ztcwv9F~ZL6DQ+n^Dd>MD&i_8hR*mnX0{Qhz)NO(4)GRLAr0l5sbxCV7`H -mo@zWOuREBf*={Fsmb7Abv|&B!%23~rQ|*+p%`ysuA8aaW`XV?97E?{BEui*Z0Vl+7wS0b)OWWzEu)@ -=E)*y(5)0x?yVq|_2&;7|eUk};A%!!6>(;w6G7@bc{qP&s0A4MtCw-1N?;g-JYOONcw7!F3B)k9rBo7 ->MD?(lP3i_w?+;L#JtBRsppc<;*vZM;cw>_Om@%OyEgSCY?aiOmC0woyuk|%sJ0EZL2F_pvFG&_JJ1m -vy?*~~*%NY=SB_oXgN;yC5bRlJ`D-ZWC-NbXckx{Kf%>CihNfI-$P~XGsTA_evwTi#RHi>y4J0j9L41W5A;_a?KfkWL0k5XOF}yoM@NBl&BZt=WO5InhyrEV2<yiUEB0RbvinGWi141GJ%sQU9(jCpQ!C?DQ(@v+`;-4pbD+F@SzuJKHE5Wb_{-_NFyX0Pv|zJ3}$e@Q$rf1f`MPhN&0_4yN&`% ->OLN$soM=O16Glf669%eBmRn}Kf^;Q2lQwrk|)PhX*jj%M0wMX?N^D)jtLxG)CQ?*gR8HKOOdH{H42e+^ID -`2fN(lZSOQuW@%FG+y`SOr>Z=VNgPd;gPO%OY&~l=y+4A7U$bObVH$$}c%_~gI=e -Kcy1RqJ&`~D7ob4#9LS^OKw|2xDj4cUe@I^_hNq#Gu?Cl%kaM^9IW_ta-@iN>u)7jbD4^`6~{13G|K> -a$2*&{ -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 -R(l9v27XDyV{72Dfy)Li8@OZ%*cVFTsWt -G}z+(fC4LmmR*uY~0kL|V(J098fg3AUj8@O!Xvf-&UAldNL8c=LNu>r*f6dO=%cxnw#t>LM)8)vcolK -lrIJ0-zN!&7Tuq=AtJMj9AtV5EVO21Xhf!Km#ECBR6FGj6f{l7Wfb7fOPahLhI7NCP7cj5ILPz(@ll4 -UFLP54`!oV!tnx$TMy+7&ov&ymxuK=tgpTmd*Xs{Vy-u2Vxu=lesb&jqqqMFqpF4rfp7fBHFQMfnTzi -YODD%jhQ;DGr*f6dO>)sO<}nw9dM@qmbQRAlZOq1Cn?R`$9<|*_fmqD0ZOOfno= -W_=5W~xCEEva_mlSzhwVGNg&yQBp&O&P!dRXYzE8YzEBb?BlHSx&4y;2PJ`I2a+8~b|Be-WXEiEpxA+82Z|jicA(gSVh4%@r=#Egdg7OKAlZQ=F4VqI5=eF+* -)dxkD0a+N$82?c?G8pd80lc7gONV(ahr@ASm|H|hkjou2}U{?>0qRTkq$;W7{R3<1B?tXGQh|HBjfhh -=k`nXAA?VVOLCc9C<#VjJqAp~z>y!WWv(j&j0`X`z{mh2KFoNr{FO&cyqn&Y^+b`LFP!g;Rure@P1B?tXGQh|HBLj>KFoJ`%FO&cy1B?tXGR7IVx&4y;2PM -JE04oEtHNeOKBLj>KFhaDlFWd`^3^0P@v@etZBO}hZP5hDpRt8uZU}a#o1{fJ&WPp(YMg|xeU}S(1Xp -ViM1Q;1$WZdz^#4j0OWq=iesC}U%7#Uy$Z+>4W2}TAO8DM09kpV_@9bD|=agQ5*Nr06AD*;vldlFy-U -TokF4|uKt1vDgdU{i+iIpNtb9@ERhb)nt`UxHsUa6g9DQNtKuB)~|3kpLq^e*40`z(|0R03!iL0*pjE -+DMgoik7zr?f)!!FNfRO+r0Y(Chz-3u4eo26p04o7j0(%l*B)|x6?!HhGj06} -7FcM${f^T0a0Y>8H9~OQ|fRz9%0agNg5@002NPv+5BLPMNj06}7FcM%Sz(|0RxZ{h3UlL#?zzRXhfSl -VGN`etNIM}U0Xg-LZ2a)g4sSGd@U?jju-0{%DFA1;`U?so`G~~V%E|p8;(zy&S!6ms&E|dTx2}bh7g* -#%{;|AZhFO&o;i9Ja$l3*mkNP>|BBMC+lj3gLIFp^*-!AKq+5#oH;3sw@WBv?u8NrI6CBMC+lj3gLIF -amqHCnF`mNP>|BBiZ|@7r!LIN`jRHD~UaUFWEDgl3*mkNP>|BBMC+lj3gLIFp^*-<8kW6FG;YHU?ssy -VowM)2QjfJhm5Ljy->;0SF -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 -TA(%63iYu9JUj>R!8N01j;d$dFKM -hcO8LK+-N-sdmJ>Ss1Udq02Nf5N@@zGAA-~h_en|C`vM&H&y1v+aT -nBrar-9xq%H$shH@E`RM3Z5RvIWQC%;PCvGL_Qm=+V?=T3fIYdto2&SgWiZ0en5$fu&V&N)o8)i631> -L-$%As%ZJnywgdAn$w*MVlh6$L2-?CkAa>r05IROj9WYb^33CCZzpi9ZIZZX!N7Uvf2=nO8qvA}HK*pd&@SrAz8Io<(t6y@KCn! -07rEE4239Psb_DAy_4jGOGfE}hMn7t@@O3F6e_6*%C(JYUqen%%*nT5h!qiwfH$a|_n#2_6Slpqcuaij%vnJZ3K=$J1i=F6RPCQe6a8+hrm)aBGexCIi3XZ<~7z` -@AgZoo5-8iT&0I=x>9@BJW-&h4|Bo>r&=YKg`J8#BQq+vbv9kyD_CuwEqGYphbsq1gb|XFk1a=Pq&II -u%4yO~Be-2lJv#6>{!T~tTI_oyqz&y~cgvT;3ljI$Ep28{mDg4?v(^hqT1@s5AEQQU?eGL0-D^RTQ;4 -ZTb(q;}NaM@BH&yOSF8?9&@mi*?uQZ2REFq?wy-vLgURgGwnw3$Xs*2Vvi~3R6`lag32eE;Ss=zjGQZ -3H>x$|U5`?md6m>_lL1`$cvqiSY(G?C{T;+DQJjmnyylE7*Ka9v=L$I->pm+WtGrxc5_ekyA(tXY-rR --3$zYo_P!QG?>lJUWvI_7GB`-TTRUF^_YSKUje3!tU{vf)kRkdqb85wdb(eUEZGL?NAk9y#-(J#NGYq -UKwYn+B|a>!yl$cF%qtza_(;VGBya+Q^Xgc$`hb^@aQ@JtQYkq%BEcBi3Z!Tf9_7e7O;CtUHY{gEsYx -fw^6QA1{zjmD*N4D_!3X}J%WRDVU;4qJ5?JJx{Y!(5P_;kVP|ne%TOqD7z0?Bqkrh=UYltv&g&_z!lo -tNIR_Wo4MpIgt4$RTYP8*6p14d9!<|`yFx`1M}x~?85GGmHRtN77u{=7duWallT(g6!PDzPo=4Nc0~m -vL|m0>Bw8r|s@><=u;*mQEi8bhtLurM)Iv!I;MpngtPUdy7PCCnP9yj~`gw_e2mav9^Ip+p70A-60+z -tF=?&zD68c*NyLpZ(?e-H#vs%*z1&^!)nmzw@4mx4hWkdiCbR^SkH$JKnJH&GU!nuRWLk` -ybwY|Mva!Q&q?guh!CygJc~D9Ez$-&t53n7mgr+CA1tD7A=L)B~@3kQAwK1Oc8v;Iaic4Fns3 -1q<@!oi!*3NP>)Cka7rmBOoz?H9nX{QEwxIcs59=2T@lr_<=q<$j}9ZP?#*n=?^jnK_DCK>J3DrfebO -E5!hB3_oly&cs5w4gVboiu?LP%0Qg|Y12IRiQZ*1B2<(DDps_nYSVV#hVL*w8Mb*F`qN=0_?ut9D86C>H)$-vV*a -&||hVUF-(-F`1!()fF!MHY?PvDJPc6K#z8V0h|hR&=tH%$Rn2#`P&7S#&QVHzFrY;yy|IuxtV?A>{0P -T8o^m@ewztQzT0JHwxNYn%{Kb&@t6@oXDXq2y4ou0ckoGfSds@8P(nh(j%4T64HXR%lv4tTEuwl{KgWwytF!`(olP^FsX+w-m>+m+ -{A!NIR7z*hk&M;o(kjNeJY@o>r7L(S56Y~=>Qjo##O#m*93_S?h;PK%Isv7h};7JGjpQ1hPdV?U4ena -vSz7K-Mq2bL$a|)BRfm;a@Ye5#Q)gzPkGfX#Gs^PZWdtM-(4T$rOASIw!10FD%il{v$f+!>Kq&xC}mM -3mcJ{w$cAg0*kHb)%S5zj_*cSHAMDmVB5Q&4KH%ka@vx`1rs3Rz0ekU8RWM#P<4>jbU5#A4Tr?SL)`* -B1Q2AS~{lsDW=5cyJvZRwo}9&0fNoI3mpjmie~sU=8tXG$#ThvjmnccO&4mHaf!xZ~lu`0tGn4&TQz? -e1$qb(;v4;>cn+lB1t>03U0kZ!%)by)e`-ody@=ceCPzQgl&TQ$&?)FQp -m$?|N}=um$ -ym_@`HCv@f>64C%~6byv(lg97a^fq{eHAgMaKm*zFA1QX;xtM8WuJ*V9m!(|8$|o_)J@FAj`i@Lpa>9;gG_u-S!OeY*&jnZ30Gcx -}`~e(^GIB9_&MujKiT*FjcN%z;yp{`~v*;JmhpoJlpZvTNhY@BApyO1IGQXTo2iBTZp4Ng6cN;YOck% -&a`&-10od_UmU>Dngo`pVT^nu0_#glX9MIof`U%4*cEgcqzpMhY*tx!d+|$}55)UwNF0WtNjmQ_+E9P -dG-{5jZPV(qv=aaI)HGoA@56~Z;@LKRU&8QXN^1X>f70j6Rn-JtbehY-(pvXVi#8EE4>v41E7cULdLaCp>)Qw`O97! -1Sp1w364yG1{Je&z+@*+8xlU4NSyLI~W*+6B9w0_{Pd=ZS8TfbNEP?CG~|k;l-HkBi>!e$X$GA)bCmq -nXTTLj%`2x`6E#qH=G@LWy>>g|!jZEFZJq^&(P10o@QVhWZp{ZwCd9jjVw*rK_7YG0{%FtT4mMF&93P -KfcKk#k2LyN*XgnEltq*@{*Ji`GD`yR4UIFLa@>9}+q)*xcDku?0I|0`{}J(Hwp#SffMU00KHV -nJi3IQ7?W8s=z=x5lF`Z;xQm%f=D;eWCk+(VAoTOvkqb0=`=D;0dE`RiF+RMX&|2M?nGLm|c!$Ik`$U -@X%7hq$^rg!&Mb)7U^9ajm`=P`WXBTnWOS$iJqA>dmKZ|vh@6(Ijx*j}da@GUC1Ypxd_f-=Od%opRDFKi^2xCbG;-Q@5ko3G5Yxje -m3Tw&m4F^ke?C%L)mQF`d2hX6Q&|O{Z;Zg&_YTd{h_I?iA;iXd43*ES!$5h1rHDl1BuaeeA{}K(l3CY -zRwOF8>>aO!jP1X?s@hYHQFS|BK45QuQ2QaSg+DQMj5WPgWk&c^)U;5e(GKh2L-~E7iwsrR!X|y#t1S -;n&JpQGULhpi9Tswyl;_rk=X7J7lgRrmn=DeYJ79-yX_|g92#o=walMNRNE~(?D1e>$lNiogQdEl2Ro3&gWsmrG3nG-@-5BZb(Hq#kFL+*?JQ5isuoYaLLr9Z#*3v=1o -I_V}q@4vh`%B=^*Igx1kbHHyu;wc*N6v!`^B#*)LsJOb=tehKoZ9DkB`xX=$gAO4Q#mrc8os0k;n<0p -o07^`1b)7zDqdKhB$$5x3CcGk_|p|PQJ!0Z)l(r+FrB7f_lLvV{tZjr7Ek5OQ=P=qNq3@zJ$A`bsB6w -mUjK&#Mj4w?cbeoqROFPw;UkSsUM?DX|Oq@~U|2oJwyNr}7O?U%HEZYf7IpGUDuMot#UyxU5Y~ntAe|TstY4jjF8)U&E -9JjDBT$ET441{v+!_d*msR4B@Pwr2n&*r@0p|K(S(phO!MVA$ELm%A7wOPd2T3txLkjaym!veN?&tt^ -1O{!QnF7%J4DDX3YVt7wTnCB;cVZBUTT%9-<*P7$+Af65L$_M_gZ$c7>3_>R)bYN*hM&=MNxO}iLp{N -J?x*EphdF%SnO^#j^&2kXRut!s^;R`r0spV4!;lHZEtR -4jGORYi~EFp-ZBhoks-E%T;!J9k(;R{THMZv-k9k|6(5Fod(`%=zN;mH*&!5>mI$G<8H5h$@2O9sYV5 -F*8asw!W#-4p>9~K6NA?ftoXt5+%QeyntLai#yK>0`au5PrqVY2D8nOtCN~Pt^DVz~pqQqqn{*l`cDmc-JKE~*Y2{~vF| -Cc~L1Fg@#@w`Dwn5#+1?2Cgq8+qZ!lLi2Eg;yj*4b)zm?i- -J{d_Y4C&YWS*L1CZflwOP#?8wd(N&!1DytSf%?V54>FEDe#;_A6CBNI7F)H36CHxnwbpl5N;XnzTwt$ -6VkG@qeBR>i}R$n#VbubJ^4UdZ%VO-OT4n`L -5fNgK$KRFsiYKAPy*m-R=J(p6!fLz&&;7q(0q7z|4bjY6M^b`x8@f6SEw;C){!)Bd=OPTE73(Uh+8jN -4=ktK`Slfy|BbA)Ep8Qxay$>1bBo_unz3>)&?GDlNT>n!H=R2oCxe>KOhP}FCiO5y+z -7vBHgbj{0EcK>2%KwhsRA8W(WJu!WOHsNwL&KiD8H`?8VF;kAr64;%`9Umi}?fMUFXl;fk)7kE7X8cYjY#BfLKy?+v*P -G-&vuLy+0~Ih2f-t2|ZDIn$SCA6EEsgXL|Sawq!699MG~G2a?XTy+dsSL3jh9NhdF;@R#STVYYVmJL( -Z6+tXJNO3aOLs=+N)h^qLJS{k}Bsl%6Yv|U^MjMrj;O}BN -Zum4t8jve}9=p!VRd#z>#HA%Tp*@L;^I@E`$0&(Blc2LBwn@UjG{lpz;}nr3a%ix2d2jLx4~>Np>As- -@<}LBf(+!^v4{>h`=P_G}@HU&Ixpo~*PnRIVuJ`-pGQ3=6kDK}1^D+@4)#Vs*2NThIEc2mn6^@{E51p -nZR`ZCbCmSR@uPUT%C-*xpxZr_8& -`U;Qm~j04L@R4v(u18%J$YVAfeMEui -1VH)+fTjlB}ieqgrHeMvKGDi28W0DvNn(0S7PIB{0YF4_hc+(Kxf?b!k2hx7UWn>4}Zo5KXJ|w&P+t* -cc)4kXz!m!)6;}~!<_a#-w@9>RXdO|>EUP(-9Qo785DiIMz?hOveVt2XXsSkDF%@;yu-1-sNXgoMAD# -+!I%z;4~k2fCshvWkQ)hCxQfiL -*)N=O%Euur4?~vi)i07-#S%R36hP=OZgDAnCdUqRZ( -7;8D7A;z|XwjlYW45(RT%BaONtTLgLX!|WL1v)x>B(ei?2~?$T)-4F8s9m6X^t6>TL*#`YWq73FR2{^{_LRU2QYwIFXemI)x-_ohJ9NPYG#VVGN -ROA{|G%v#KR~Df&Ezl^`(M^~#`w8a65S!XTtTfAOoFVd3!IJNmF_rge&v -&jIB$ZoG#2|@3JgQ?}+{Q`M;)2=%?>|ej&xrE)KIRr0{BZ5cxvFmjkm1Da6DQoYtAMk`7OC}77-7Ko( -u{I=BTlWhmhs*xB>)n1yl7~!liNynRaOKQPxH3Q7Ee5bOpzg2LiWZ?OMpGi20X=ac!VBu9^K`?Q!tN8 -Ilbai1g{V2x3 -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 -CK(GP%i)~fE75f38gXdRV -IS0i41EZxtd6>CTgpR&}t&InrN#g+Nz0gYTk$0Pjs(b_=J*R1*OzPBsI}OO|(!GE!0HsG?6+@R8A9>( -?sAj5jaf*PV+uDX`*}O!Y7mjD@d3o5~hi8X(CseD3vBkrHN8$B2JpW)Ea^Vw7f)&_-Npv-dq$Wz9iIQic!bD>*(GyIP>61+MBnv!A_D*uS^VZ -o+bgx|agpy!|oXsRFGfBEkQYe#@$Ry7(Nmxws5tDqtgzlfvClgwHU&_y|cl#wzA6?(Re)+G@^FLp2-u -~Omr~emFO9KQH0000805+CpNgIXa$V(Fd0F+Ar051Rl0B~t=FJE?LZe(wAFLGsZb!BsOb1!gVV{2h&W -pgiMXkl_>WppoUaAR(CcrI{x)m&|J+c=W`u3v$hd^mfL@e+KwotMp4IgXup*0Ei-Q*)_Q%0)|%#f?O2 -Nh%)SuRnmmgKm&?Hrd&&x`|?00`c1Y^wW(d;b+gL|B08!uTRg#+3C^o`Sr1Qd3JI1SMfyMXR~MGW~Ib -MQ{Ipa7>Xxt6XSJ@ksuA^4bQ68*`sb -=^=fzgBZp*rA_19)wH~kmgvAC=oTRv}8(W!;Fd+d804^=d#ukE8AYSoFoqkSQN_~Coq#bosZakyTKD^ -s@>SE^ObXSJ{^IjXC!DercAnS1U2kGe#Nw?*?wT$bzmrre0HZhThGRn;m{v|?+@+7(Ia#7yMcO+=j3y8B+bKM7Up>t^iFs%dqJNDd@Mb3H~v>w2%~%>1= -Bx2EB~p7f(wYi%@Wc`zvgTIoWRRp0GO%U*xb9qNTXXjq9mC3dY^?$(j+LDv<(oZh^-cy}WX&)#JISwx@El)eu|=y{e|Dx<@^6-ND=AtD`r%#o^1-v(uaRX7(qiH|NLK*W%>jN*s#I!> -gOqqjzVASK{*B)#b(Y@qrN6N^IVl0QKHZ$v -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 -OdFFcj{DvRH{yhfAbu!CDTXB*ye}S#f -Pw{ND#g6H}Q0hNUTdd5=XwHiG&$~FC#>E?Ci2noqS4m!!0Eaa1jfdNV0T=qd;Bvjq+Ke;Q4BubB>^t!f}=#Trs0|zi-oY#M4(}2QPt(O9#l1rNqRVNA`UqhZ#9Xs*^m;+k1-RinzgIt$!L{H`o$|J`zQ)BSaKM{6`+ln2^EOTz7s{?pSRh*qWP^T%NZ!t4SEFdIHpNJy69cm -%gEj`ziV$z3(tJ?k!LZ;l-a9 -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 -%PHo>C=FN}}w72K~NAFHPoSxI -!>G8?=^$EQ@yEy(kt+Cw;_UPt8(nXQnCs~}*aXyojl=Lb8XOgBdt{)#4Su%~Qyr5~C$gH9%Z1w{^^fX -JV1S5Zw-(;H4WkLBJRUV(PKbKWGjpx#Go8(!E%VM4vs|z@$%e<)XPYW4Waz?kymB;>6aiM(8mze6IqF -2YSiBBdGTzJj*=_pOHbXcHbtQ|(Qgis> -{4<@&5=iNT%w&ORE*H0HGR5GtWGb^#Qe4tp-76mqQ|}d!>jntD&*6T>?pu-xo~yaP$)dy^68l`w)_5E -ca{Vf<6n6yG1&H2iVf@r#BxjKHt#M`4{ -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 -BH(uc}kO -tFN%r+7hWR{HcUj}beFz76j}iuJFLpq~wVIuIBXrC$=b;11Kz;sr#XC0UmH^dT!sJ@oPza|0D6yLCY5&{1j~biqk36o3C$j(JenbRiaHQh#VSgYHO(_sXah-oN8IRu(P37q?`0)n2nld -?96hLCZ&kU<)2cZa+#hIBC&oIYjO9{`n@0DEI`XFHcOx0-?rC32QXsQ2HVm;T+=(@T}X0I1lhFe46Nc^dIW}L -!1*Iag0+`Vupby4$*vw=1Jfat~9|^0kHz2CITn!C;EQ470p47hDJl5#u6un3w;mmLW|P~(S9g=2~

  • +ZI&?blA0YW9v%ArP}qYOmRP+y@{6 -QofcK!E0iv_@P$E+qJp5G+BaSv}sqPCJ*Vs}hrH -Q1WCYww6Nuxl-v&6-O{J_y^h-agNk_ASCab$iXN)9NB)v@sJG|4?-~>>uzMmlK52pPYeP?i0)3+1F|o -6KRzND1j7)*r%0t2QTk9L)rk+`=!eY_;Ha>eK1=UN!H?zH;3Uuq1V1r@d^jQ4GXa -@{6wS`)0kZX`-Zu4u%_M!aeBjP``qz@WV-o -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 -n_xhm2Lwyc5YSk8Jbtt3MixL%r1YfITv$R|0@B -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 -%aTQ!pc<$=$TF{v%UPOdMecb`>*n8q -8$Ok^KloyFa!<4GC-?cx*&057}t40ZWPd-P#zlM_b@aIbIZ80meeas8AZ$3$^vo1snZ7!gE;XH9MuXr -8zxdC;R+40#H1gxZ93lYI0$lr4T&-{WYb=1}Lyqz=a<1Khi5swQSc^r2Ce43UY2(LLL#?DA+>uK?hU1 -i>WWr`*;ZOs8oDznd98Lo!4*^xhD${>EHqEsFqbg~QILaWch?e+dF(yseTKsi`x(EbN*G0Jq1PJ$m4q -@ZA@QB!*mT`h(5(_u(8dYdtD7G#wx@o~ixdnuXoIOGF{d)YVCOw3MVq*G#teyh_~nRkL^AM&=`s&+xI -PbMW#XHv}dFH5Sdn4eR~S-E&8v^OKXq)rE;MAz5*8%=}Xq~A~w#ovnETWX$9bmpE?Zj*4Q7pcg}cp=i -{4<`BGBv^lSM?PkuY-_UnW!|4yg6(s>8OtBg}P@-UOdVO{+(XABK~azKjO3Z1=p)5T>YQK -L}c!Jc4cm4Z*nhkWpQ<7b98eraA9L>VP|D?FJow7a%5$ -6FLPpJb7yjIb#QQUZ(?O~E^v9JR&8(MI1v8MuNbLcKw@)*6}{C}_W@X-Xn`UEs;bornZzMhjg4%l-Q2 -IgaS}>W!WDX!kjTtD&%8Uixv4(T8;r&?n2h^_nKyvmzrYQ>S)d7z<_?nti7)l*>I;AVV+})M!7WM*Cz>QMB8|g89TSDKtK+y;SJ~6 -2n}oOzta63=LqDq>QJoh_YP!1YJc2>iq_^TP+tUD$O0}at;e?t6@PkRWCHiGU-cU6x+m@UtKr;LJ7c> -sArfnzEx}oUjQRCU?j{F6G@R;cu|5s!ll*Aw|vtI+McQRmMVnwkCFkhRNp=zfOMIOyoFrgY#fe{r{q5FBf;mk+yg!xox3Pi)+%5-!r<IYVO1N)cfa3>*ojgGK)y5#8Q+GG0E}= -!fIwY~Xn?d{{si=H10|++R()3z)AK^9OI>U~?%wl-L%ts>p984v}&vv68qXgmImv{)Fw-7$6TIA}{HyT00>UVKDnxgT#9X)FG7w5y#p44kfsT*is9_wc%F0@S&sc};#T-h6FM#$5%J8i1s=kOEJW%dmr^y -MC$+Jr(=K9LZP#smalf`)fR%@ma|Z^q?-yP^H?>-*aA}umspbyJ&sXc+`xnW}a$th~D -I&vc1Q|meXEhXpSs_I1yVPZwZc7#hs%30INST;kG+&KUYqzvI##V`=+x0HTd96u&|=@j$lgsvgAXW@n --k!_BMyxhfXJbXcSV|Vqc$2@u$xJ99ek|%@X>06czBBm~V+CU*u&Nxra*JPv{Jw1b-!T`r|Kq#1`V0xT-!{ -b{k3qdK9si%0V5wsI$;hfBDoP!EAFk6&ah+Xvx?WMmWpR{aD30JIJO05bpp0B~t=FJE?LZe(wAFLGsZb!BsOb1!gVV{2h&W -pgiMXkl_>WppodYH4$Da&KZ~axQRrrB-ck+DH)o&aW6LA8J(UgH|V98|5TINWvWugo&!C7oo)-!(QxN -w7X8?{`#A>4LG(*)82l9d3k2$nb}#NoHQReA6|{7FdhwtQ*Q|8 -CvHZ@Xh`Ca&!6%v9+L?|7H=Hal@DU@qMFlbh(||$tQ#9IVTO?5&CxZLTa49tXRa>dDKLiXjsdBlmkQo -eMm1cA3CKu&ra`w^8U34C;WyJ!Vs -2c!ar8Jj5d=?4K)p-(hMutG>QhDp>R1hR#%qs8^j?E?DKJNVk -4&->HG-6`1;)1;;T0i!FjO@FF~kreB!UUE4QdI -~%QAx#IK6sOst>8o{@P!9d=(9rvC2Y&C75fcv)wZJ3yOCA#RWhABQz`4}Mnoj!U+x^(_^a!cj4guHS#V>@;)u5RP$YS|89L@p3BB|A>gyA*ijW)$7MTjGNJVr75bgVr|o5 -ELUpUv@*}2oW}6r1G}lZ^hjtE4SP07{r`5GwIvS&}klWMj=)N@HTibu`GA^i^z*z%pPN{^NXN|A#)VH -&vR5}fz4;&tRE6i5i6zye0!aW$j~~#&XY1G8` -EYxg9wF_Y4!@cakyQebc@&MbUT@8$L_o -zXJDRkE%dWu&Lt)rQ_QD|Hvd$rXJb0A|Jr&>|~8fltPg=%noRsF^b7;r0$U!$U(< -U8+%K?_3kNBHj3T**Bq)>Ykz&pU?1s=tjPb%edleRub19DGOz5v#$-Cj;V{w-E&oxm`F*8H?Ukyu|3C -e7q1oAk+`p3Qn<_6d`vAQxpWZJ}pPhXc)iu3uaCbi~*^;D)_XlH|y!}GSS6sU?@)u~(H#E&(s!Pu~w! -x)YqL9gYv!stH=Gaf(pjusNk4X{o0EKU3|5*y{UEjpYcVz{VTV=@!=^ITzR<;=~Uh=( -wJv62+P;J;q5Awvv)1Nq{_aHqj40VNIhoH&MuA40kz%w4^T@31QY-O00;m!mS#zc!Jc4cm4Z*nhkWpQ<7b98eraA9L>VP|D?FJow7a%5$6FLiEdc4cyNVQge&bY)|7Z*nehd9_% -5Z{j!;|DR7Wx7CWE2XYDYR;#YM5>V2jqZ9$vJ*&1tAu+|;5J$GNUGD9(-#8&a5<|P~oz+TU&-^^^Gv? -$(zo65*>0#v{?`<(`X3%4QtM!3KeZ|QPDB=|%UPc -jZ3lA4tap&wF7k?eweBLRyD2etsIfkyfvk-~E$f?KOq98%Afl!XGn@`&-|3j)K4@pRwg#FfN{`8q)?U -*&Rz6|M2Ar39l}gQjKK2%#l6p&bM;R7h%bh75CCFqW2sjMk6Z3xpLh) -SPt=x}0&@}Drwhdw(bp^wfN`7>Aq!?=`^cn(m7tc6NtqFFT`ar`3c8Six4+w~gK4JL5oIotdA`a?^fV -A*ie|mLuJB9Y}3;fm|kK4oPmrqEGuE0}taEe4%Q9uzGwc>6l*C;pwT=&M^E97W*`h))Ti;~{yPlvt91 -e}{Ov|-d9Py5~5L3<3N+wtgT(lgPygk&aG#?%>kYvKh$t{7Splf2^iyb=rAD -_>2(`pIjK|@9FxXW4pV96VYW+jn5b+v#CrQtC6gyM3>aWEv?I>uXsr -#wAlVzGdvJnQ3Vrq@8g}!S=7w!G_rxP-ag^u0?sO-YYJ11LiUUa-^EDb%6+YKf0gdG^6F}&ZCS@c+!^ -eOefg-}ogY<;gMZyV@JCy$9rqQ&U%{mb2nVC({tCj2iuz!7fJ)2&Qdy}i1!3CUyWj3t}8O5Bmg-5B{s -St$CzS$LWh2<}i=^UDsO2rFYA$HaNVpHVLDp=kyninveQLLl0nITB9sHOXAsjud2iD(@vGd2X}#PrxI -q5(1H)w}!eAFamycgK0C)(Whs{vkHw-fFe}{QHkuiD^}`(K!rRNQz`R8i7Q24|x)f>UmAWAY$q{|iTl*gsBOC~Q|=^kS3hfyq%KXK -#E-$k;4E2Odn63wgC?J3rb1J>MWe#GQk+hugB`el(E>OGJLj`BELA1ny*6BpFM?Zo?z$V685%wusPV; -)wvd+q>x!8rsZG!l$`2&|OJ`Ei5|VcrvY7R<}EcKganLOD{T)wy$Xjm4P2*N{D_c80b3cIxDq5noAmc -h-7<^Ycx8Gm&wIlppgKrI+;_=yagtfWm5g+}>0oJrb|)64u6~fBCK$w)TG5szrjWjHenITg};^r<2oh -!0CZyslPWeVbQZ)p@-WkLV^s -E|#6WoH`3GeW5sp0ADa(ma<*RvbhAm$vnn3Y!hCC7}~VYPNll#=qVZU;wPTX -hwA_1W&7%C?X60&(>Dm_|T%dtLE8uGY%^J}Q%0g=uI@rGt2F5-Imb2MW1bXeZ2EO)P5kIuPuKb9ayXv -(5;5k@VIoA|7YmG8AKdN0Cf9y1PC@>6fKL4O<_DThO<6oC4I*67x(@AJ1}ahDV!zvBY=$iiUI*ukg{2 -*vlmg{8GlhAV%-32XpnG#A{iB_X52A2zoD2VtD_2kvHDdAr53otycL5P)h>@6aWAK2mm&gW=UWBAZs2 -3003MH001)p003}la4%nWWo~3|axZdaadl;LbaO9oVPk7yXJvCQV`yP=WMyAWpXZXd8J -m{ZsRr(eb-kEHZOMTsCE`xB%5Xd+p!a)zCn_)$de#TBbx|C8YGp}{rV0i`6fGyZmTD2bk59~GeagxyHN(^(U%6P0WGMK<}TVy;h6)Br*v!zmN1C4$YI(K)sl;R@X -g)ZmdS*!*RHL5pE%1-)H7{!*kk*cAaUnv4GiPS618DA-u!8MRV14hDpYt~X!{gXAEEmfqp)}>S-f|jX -yCt>%nl{v(b0EG$DWqLBgKqQjiq#}MM6P9jmC>IH}V^teencjK$G+n?LH7SKB6sV}1dA{Tpv5t+Z&BX!HZQt90k*X@56BBK^Nv-FBtU~v-rDzRp3Txp&*rl}9m=lIgw^yy5oK6cpwQ$>z^B}#*SDVzyc97huq}vs`7y(u -t=L`_Hhu`(Cq6htD(cb&{$;{qH5zgAghz+wg!*t;KoPr+ -{wl6*k(f3#{gOcl(;vk6+;Ajyu6u?RDHX{WDYI_urB0+HO|p3il6CO9KQH0000805+CpNzTxtyLJQs0 -3-_l05Jdn0B~t=FJE?LZe(wAFLGsZb!BsOb1!gVV{2h&Wpgiea%^mAVlyvaUukY>bYEXCaCwzh+iv4F -5PjEI3>*Zqw~l~qfffi5py_to1lR<|#*01*v^28WP^6ZZc-61(kQ6OBcDkq@f^aTpZihq9X0yy`A^7G -exPtXgBdf0rYY-|WC03Rz37t}c%PlZjgT^ao=ul)ca?Kj8S}4oLS*Niqfw!H~7TCrp;VhQ%oDJeV(~^ -A6;8%<>e2C;c&w#$W^?LQ;pkI-Gd5}MyQ;cAxM=z^@*Z2VSX=WWcOXt=;m8GA60m8!99ov^%P+L -n#dZOtqj?0upwlWdDRx%dTt}gWzSgdXg;XT) -Qo_W$rf$7qhh9N%Ue|LfU=Iq<2Y9LN&nd&vMjrRC$vyw!>AJ=)OPC`upVtDez}Em5uWX@SISa?43&&s0j{T$dg+#l^$xrYKX@t@7;eP -F9FElLA$RK-Py#F~55rhbm$n^Y_>iKfiJe^lfSa%RjxHm;eYh@^C<)11lwQ%G`NmXfv9`b9wnBsxr~u^_k1v*4t_xxg0`Hwp9ik -H3BSb6|#Fabf46=mNnte098f7QKfFD-oV7?acOWycl+e5RnV`Vz6<-J7$rE8yBNw;Y@>YTAJXJZV_v& -{~O`CEsheopcTyxv`7rCK_b@1huqLEk%U63vgDH6vMjpZYp6p3J@tpSq$cv)0gWn`z#B+U00EGsRvK& -Aa{`pK^c4YUx*gRs5i8~s>mvsL$0UMbs%o@6>eu|psxWB(Ac`<+CzpAYtpa(a|*6}rv3(p$MKEuLwc{`pTj@ -N;+~c(<%ui7tlx2C9<}m)e__<)4ca}@bsL^_vjn4HkMNAx(I~##p0oMA5qWv^u#MmA?mgZ=aN~c@4Su -JMBTo75{lBbEa9?#SZsOO^#=K${w@UXn6Da?F4ItlN$`LW_Wx7LYsf|BKrtWXl!?%*QAC;4mS!DkLP) -h>@6aWAK2mm&gW=RKV5jEHh0022D001=r003}la4%nWWo~3|axZdaadl;LbaO9oVPk7yXJvCQb#iQMX -<{=kUt@1V?GE^v9JT3c`9wi15NuOJc>l3PdEv=0je@Z#**c25^=w~Ouep-2OVmgt0yEU6+L -+bzz2Ki>=~iMqte_V^{TMGoga-wd;^%Z*qr*IT=-)p9BHrYdVIHUe?r>e5z9sl-SU6=Kx5NF~;F73LkH|M5Osb1 -^!QoJuc4I|`()Hxl+P^-m9J;rOZrsUbTVAN*VeC|3vjlyhf2Ap2bpj2Xl -t3Ol}zs^sjq^`n&|c>70#5m$|R-Rvdpk&ip*fS(fekVhA!^a! -OZ!I1;X=(-@XCk%cab7n0_IyqK_(t-txn*MrCix!b)AJI+}~<`%j-fd=CStnof$YY2W*8o?}FFu|{ZN+=I#V#OH}tuYYb8j~^IYF6DA3apyE~oUi4DHc4@PV&VM``*bF-0qqyJJ -jH-dzvrMV)4<&K>PU9Nf$V}2m;3|XL0dj-V<-}zARJ_H?%rg`qiNApZf1Z0 -$3A%JsD8y++*Q>33-QW_EzV}7FfqwgWR^01)3m*x8lGl0;bR4+2?RMg@7Ux&{BvD&!x;}$;|Y#Dl&2c -ek7|Q=tT}zl9td;+q;gHel}r)FNR_zRawQvO>gaB(G?b4V=s~Dt%LJzYv)U$v}P>rTsW`kc=C?tk|2n -4)IUoSq{7k|y~+=ch||bk8%z3f^q{8*$40%4!y|{ffR$qAm3euVN|@BifW3EXv7;Q56_NEUBI5cS&S} -X;-`-hqCm$5qxD{qVj8qPQOIFKM`hzbKUo -n!kUA&dKQL|1pIC~s?5-#1RikwoE)>+_kY=K@P>h0{sTc+|O@pjC)j>zWXsS?BZctP_cyb!A)1H!Az*6Nfex#!c*(dk>w1f -pgM@E)P$+Ho}pZb21dY>3+%5H`}D>`z>&46hUAE?xPu@g)f^4x#4-L^wgr&%zM>1y#yD)Ab^t;L|HS% -@xb6PFunl7BqpRak$%BVGULFYZniG6Y8!5f4waT+|Cwe7yZ4zK~1r0vkwYyUg&%K!k9NsTRQ%A -=$>;WTIb#R -ms%R8lKA9@Ld0DNSvFSpejRhbAZr$j`UrPUyV~Hoh)r5j!=JYWj=X=lZ)F1(sTowTh&HTQKb{{7HkHT -9j%Z$`i8<-=vkylDHhOF6lw=Lea{8Uq-T^qyh>!2-P|xO94SR!mX((lmACJEUZVEADM{!hxee^+kd|i -?jMdu|R)(N-Y~x6CUvp8nHQsP~L@dLHoHv+qqZ|NUIZ}CPtY`4mt5;2gA!`l7b2eN;lE%?5%AUU|%X_ -V;VOp2vVkPV7k;Sm`dD<>s$-fqVZuk4~>Z^zx9|hnXmE_jmMTBOem(h6LFW-G?C|>j1hK0Fk$&Yuv@z -j6x)ZI=`zwHDjkiMtDz@5o^(m -SewsJ}~3#kvae#s>6~nTeGuYloasNBU{xTy3EGgz|Sy04)=KVJqMnT+Nd7dMKRhz?=$j~xZTnr3s;zq -ZG3)11j=Iw)~7W%mz+KM12}>z?A68P^=H6AynQy`eua62l;@IINI)NoZd3HS$=dZ-W9CB}fVuT;*x_KK1hF6H|hU;1Zgcn)ceusVWJBHy+)?b&X=3s=r -I~vq(uf;9ELgBq=M_tqp>cFiNFQmRIOF~`)s=#0{Q+?n_A@zt|xrL(Do|+CfPNL?D0JFn0Tj(OB^GgY@u@OnDiwBx7(k7sEm3Pb9xqI^o`(z%5bb} -o?b8gf#s-WJ)q&6RSPPTFFW35hQF;Aj9a#T8-oZe?GAQ231$PLk?rLxW@lln;ZY2rua?rsL?G(u{R)? -R=kG&wY}jw$Av$r*!s_+_aKjg?yH&erms=$fX5GNYysO16lk=9J9u8}n^l5~ihr^C`%}%;SZsx0yZX`E-Xhi6hB%aY*Y>fZ}J%T`q*qny -}6QGmlklq;}8Tf&}0wtv2#s=)-$J2bH}M@MWpSv;wux%p*m3sBty -D`c+N`8d`%9o|Nt4|m1A*fOwOuLx#nxqzhC^< -)!f->LbtZk#w|0!IIjVu^gAp#;CX@5$wkFrxHm?;M|(I%oIdsRQ75Z=2z6S2qii{DmC%e#anPU24UTS -4ed;7$#D!^a;Gju3C3JfF#9;}K7oU`F`pjWs2$kr@rq2>6oS06NabcKDn&NR<6xQfMd6GI+^$`dk87d -f`7%6OMI^EV=!@ST}s?(VpI3=Rp)g>XdsqDcK(e8qVwA_?(F3?FBcvEO=qCQP`#7A+6M?Y8BM+`MpV> -snbI6_0u=gmIUnl26<05jC6J8PVYf6J5%3E;y6LaSFAP5Xg$d}nQy>lLqr%{uVn4cNSZd5|a4JA~2n8 -ckQy-A_SdRI6(0zQpl*`h|(VFtbzfg^0V(7x|M6zg*5;n>y}j!`7>t{!F){#{=C>L|jldUOT$B9U1Nj -Hu$zA*DHqAmCS5L%iZaG=m-HkF)DHwrC%{!PT3{=)a^^v^6sns2#V%%BmS@>0C%MQLC$I^ds2Y(vafmnJgCX6yCP^S(|4$9uN8kd(HJ<%CagoYk -Kt@aM?eio%i{8{bWuFuVtAa+mG8CN -niu8YmZP?Mzg>`s?H+r+h~KzC9kseToz9+MBN>G6G5oOsEwx_jRP%oVB;pfY(zXz@R_E?t* -=o6Sj@b-yUniR2posAP1JNFRb{^e-#OQMEM$PvbaZ -^Z#z6;jocDL8)J~{pI<^^=M)6E}T$f-&Y`B|6W9R;InIEYhA^IJ7M~e-|Axc4;?)g9QUxfjiXEOebJ} -V_Q|ea3fM@RQv)p1<}K6B_WuV^O9KQH0000805+CpNdaCB44MuA0AVcv05bpp0B~t=FJE?LZe(wAFLG -sZb!BsOb1!gVV{2h&Wpgiea%^mAVlyveZ*Fd7V{~b6ZZ2?n#Txx@+cx%h{}sFzgXK<9(xh8EW5FSpxL -dI-$u;hZp(_+xqHQg*sEJe@-(mmzy~huUl$18T51dgn62~1vQ45xmtRQlo39{j7owE^B6UiF|s@6O8k>}as-(;%;`Dm6JS)KAtndLBHo5?k~zCQn}B4E -WTa`pN*Dj0lIypv-bj_j*lUEnM)Bqvf<*#b;Sy-&1Saw?a++U$vvCD}4drsRSn$w<)vq=5Q@7r-69Cp -i_uqa5H%v&4xOBK}I4IqK_QPk0JA!LC3Yd%O(EmW?Y$XqtjGX^}_{e;Fz0h6%7M2KGuaNfKI+1v8Rhs -b;d(gOx>R#ERnruxV90934)bm307vPb^H^JhKxTs}Iz~3%2dx3SC}}BRL&5Tz;Ut&H<$LW}=F?6{ -wn30)c+zpX2ox1>s7%)JnhS|yv;6p@AvtB0L`73$2X-a3%yNasUr5Cu{M@lP0kF7Ye~8c|&9u83^Z?{8Mo@Mu#0w$*Y5~eHSqB;>A%o`g1gTJ3F0S%;U3@`3!(;)Q#{VI6Qd%A| -%h@A1+2)&{@6N>{`_aT&dNV&yy!l-l5}zb*D_iIJm%)DpzkoPIJ4?2ZF!Z#@+wf11T!KO;y`Ug1k{(=s>aA*BbOk2sRBc5Cpre4BD3KsjD0WbriLvO3w3+;I3fk#>LO;Dq%5%GVl -rt2C(Sch`f>bl^6Mr&=M4ErW{5ul_ -HL!dru0=H)F0Nm*vu?0Aj{b7|3E>fIjmb#%2u&ogJ~-;)~48x -XTgQuCruqRVYZB3A)I!z_Bzg=qhJpAd#Oaf{PZfmxICMkpZtnO^n3#R=O}UCY*1Vaw$4B} -6fOUL=g9pvh>qRUO_@W$%$8)wYskf7jR;u*j4&iaeqyX7CwX?qFqKnd*fw`rA%qQDM6=0OYpEQ1I&BH -!?@^K=Uy~0W6#fFEmg~#&`1^kYRBUL0sp1=fr<{M0f9!t%JpU2S2AW2W}822^(OJB=w2$|L$zjNd@~0kxr@buVC}A?;R -Fc_(=&*UtF=tKAAo5!eb_@igT1axR_US$oQ4w>|A&k(bIjr8*DYTivxz?8Y>r2QWyGjkHOuirh<0QqB -<3kd71T=EF#}A+=wSs<8PrVpjFzJ^Z6=)rG_9Ddt73|ML?2J&l5Cz;$rj&kv9|rw^Qpc>rk?d!$PZon -`G|dGA9^%^-Br@V*gZu%*xm6KJNAwqDii?#Ig(J$$KrM*7|4!D1B0)zEX+O=^K7;_P|220$HYwE=xu& -r`_Fu~Dw=@@477HAX0%~FaY7X&+OLG#YJvK^hT1AHi?Q1;$6txb6Y|yP*Jb8U9$LW6Zt@JW-|tu- -m8S+E##%pKgq(aaQ91zZz1`e>t8lN@&{D+Wb7Yh5Z-GaScijKt{P2>}>(Vp#*#T=lqZs{mz;z?w|&vy -^SEd_;n~j5;{5`k3zTuUC8|F^0daWQA(%S|Nc>Y-!<1(2xrz9TGp&>b6(8 -fbeh~6{}S(*2hL`$-!kAI^;pCPJ^Nw8;$2`KAHeJ@m1`bf--^@amD_q!QA3xT^F}3H8O-&Z_ObKL9+& -loTs~ElwwHMYIi^!cVz0u%aa_kZvm+rHN{PPu-U-c4XFmX?nML$S`~5)2BfF==nPZP93(u|wQ;KCM=` -cDvdBR(gIpL!K{o!TMqodH*))$@C%7iUph|=|??~`AD`TqK;J9Jqn2hz%o*f#aHyDJz^vhbBg$JHghY -%kR4Ys^s>#1pk>zER%8Jl+0|V!x-vj)80xig5{9E-~F~CDRMbmx^4ktsLVBxPK4hRkkSSX-Fj6pQt(w# -7E7JT5i6Nbtf4dFdN#1^@;Ie6{t4*CVI5&t8)aber>fgV(s90+BCEp$`y5=sK|n&`b=``*{MZb8j#Tj -iJ*JO1JP@^2^S@!9P4$-DD;Jb&}^?DE~bX?YuLpDx{79z#n`{~2JX^Ro;&rJ+|8DizozV;f^0{Rxc_( -5&sVYXff~)@Hbs2dxyeF>D?wSb$qho#8j*J -4a!Q~@O&c#1mmYi-+bFoy%m%J%!!Y0LW0~u7XD_E|%PjWhz{DP)sX?j^QijIjG^^ZU=VZkl?jNOi2Xv?|=qeRP;|gEuoek -p_!0`Oge8Z7FVKPvCJ|CpluHTkxZmta)nPCQN=T20O)k+!CaX%HiN*JHc-p=E61mZLk=at0wlR3<36e!`XH<-FzLD8s&5X7@g%}qBvb~@A}0M{-@D4-&G2gE_mFsP&aKsXlS -jAFR>iSrQ9&;Ac801NXr(cJ*Fo-~x+DI=y5sXDB>vho+K*F@#9$Mz7uCNARwdPLNPip#22Fv52Ks)L0A@|doZ|?o?L8C}KSt=Q;RM}(tO*F{kc~!FkJM67>kbWD6Se`A1^37j#;i@W&i_41{ -`K?Dv@A(g;ezSj|&indRi@P`Ot**CEP#F6+r)%ClB1kd8WT5H(T#I@fM^$q(`(B+wePmLbaj4!`wy1w?f?*0r@^aAZ5 -^eAo~jL?dwx=`0Dv9(+a632Xf^K0!h7yfR}x-rvKpEeRJ_+Kf`88?7#T#~-%PcyxbtEdCs5)=o*v*hrUBkEX(3yUgEO -I*L|aF?~`4)t0&ViW^z#R5~m0Dvos1A8uzO8hu8M?CZ;wti`JCw!lbp<)e*v(6>XtiA^N(m{m-GJ~3{ -K+}`K>nck{BD_-i245{lTT`j#U?uI*bv+eDSsQLX_4|Mn=)&$Q!Oy?@z=wDDv0|XQR000O8HkM{d6@O -clqa*+TH-i8GHvj+taA|NaUv_0~WN&gWa%FLKWpi|MFK}UFYhh<)b1!vrY;0*_GcRLrZf<2`bZKvHaB -pvHE^v9}J^63jR+_*2ui)AUBxMvj$4oo$jylLBZfi`^Wa4CsMO#R;_#|;dkt!c)M_ugx?fYHtBxO78? -qGlsipC<}{l5Fss;Rfhe7@@1u2J)OQfzm1(vd7B%~!qG=Fgj~so;%1 -I$GiIx?X-%ZQ{nLnMD75l)#5(`MFb_GLyV -2R`uWT!8AGF?%Mq{`MN91BlT&ic5QM&jcDdGH^ATSF#t9`F)g(;R(Z05E$JdxiCV4HvegN!?e%5yeNp -B0jizogF!zOR&bzA9DxYubyerk5pTpo){d0Df@XI4P!IT$X)Rmbt8PlLI${L!zt?QD{ksiKn>b716k7 -y53vu{!PTjnys|rpURwR8Ua#Xu)`7v87ooZdqw^_T~%r~&3D%;x2eW9ARSQW4#-bvKc -G}FZ=d9$>Wg~yM7&ad`!z1*m+;1Wc2^WLmk?Gy87 -%oXi5{*j_8ZlU&<2dIvCM4*~~%C(jJ1b!|}&Y`D;K_i&y!^==37>2-<6&a{SOo^J@s<~s(numgaNTP} -R@-x`7-?+rQdT69fm-mX7LA`1qLq#p_DAIg*L2EEDf|chFBy6WuL0a -Aefsj2fRU(hzEJhDDN9dD!4GYLVK>=??}?*vfZxrRWJ!nir*pXO_xw+gz=H7Zg>|&gWyT%GEUCQ^iA` -;Q+EVqGu~0RV_7e5AoAv1#GxaFUH5;)zm!EJGCTePmd=@w(m)@Y1>^{TqSv}bTtAFQ+xz)0)DblRdNG -=R?D&jB74Sdk|mrsP;Xf6&;VD+a!Oq%JG`EDqiC!6M>VjnWt06(kA|* -RMo1(%fhEY>rWmw02`j;>iDngtdvJr-Z(Vr68Z9Y;vMlj9{y{9HicK-s7H(_S+$4lx3H=rD-*})xI;2l={il0VYgX{osTC|I$G#cRBdgCGNfHdPQ(Hh;VKZc-74N94&Jc}Bqw-@a3TeOF903F;vXN| -)j0AFtNOgvAaPiF>v@sEVl=S7{Ibp3PQNNDg8VDREFwpuO!Sjp1GTRViGn65FnG%W0+=PR;v%O_ojyq -)C$P&W=@Y;EZ#h%^q$%<=brvwRHx-clo4WZ({6-Xyrzs-@ZCwFDA$4F~)eX&V^^@?3M5uAYv#w*cp91 -L*Kw-|Jg33TB02QLRE^;8*9(>B|a9VaKII}ESm37wQ!N38iHFAcVO#y>w|iUnm`7{4@`{O2+n^YQJkE%$vM8M<&sTVqx -G-o40M#v9Sj#5U-Zp{yFmOy6$l<@Nyvg;)^PIf~$astFH7gDA|G(S+qo9VDGvB#!I87$;AqoI}tzN?$B2&!bBqS)A0QK)!Y<7&tU~ -i7!vhPlwaVq_WT0nF?fmV&4F+&iMH=Y*D5?cT6}O8v=Da^usB)I`vx`Os-_k3Ru>C7Iav76(ue|Ot;1 -Zp-Zc3hg*X^#)hHG6A{aTl&WaMb(UdPA*%l9oE3;#Dz$8l;(IeCV8@#JVl_2ThwHQv7$&L7$IRd`N+d -vOoc4gKayeX7DVSPw8Q7WY)zR8$u!sy{m(fP>f1Y6tzT#+0Fy><?M`3n+wMY4b^dnk` -Sp>p6;Umiu{_yi1S_C{!Md+K*)8xauS0Jfv>aNTU022u1MFYo2vb&L(wNgEzZV=ubH_cBrh}T&K`h2r -E9$3x1chb*cN*W+*_PjM-pftRFksj8&#r}px{`l}AHlBaH@fMip1+A}iY=>`|)&lp#WC2l3Z*G}9=77 -_CoNBCVE-ZV{hcwO+GTaf{scb)1Ji`Tum5A*Ju7R^m;QPCk)2WCcGp3?_l|lH-O!z|j^8D-PA6~tmzr -T2W{^rB`slnaZlPMFPgChw{$h3k!{H@=Z0Z!V6(08bdy?sx(55?N_;8{#OEcON8UJqV^r-75|!e@wrI -Q`+?io#!LbMa$2&#AG_OhQ9|ku_%KeTrJcoMaT!cM^;*2Z_WR4<@oJ$jcd1Cv$tz^4+BJSNPfuB7a5Q -N$#KV-^Nff7O;qPUV;#4%PcAyhA78OZhPRJ0RY>^J^*>=zy8~|ihPZH5V;~-xVv4VYZgcH8u$kqzs3_ -ZI-sS*@=PRNz;-+}A4R@7QfW4Y*KGbuH-&fr;k*Mxj>OAm`IS_*jqxAj6fAR;jK!vaKb%uGx -VKsv~Ae-afEV&t06^}5!(E*u=M^ct-(~AkjZk7-*A3A4Eo}gM04z+AhGy3_C> -cAlZ`-KPBul -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 -RR*MBT6Zyp+6sp3gkV7|wFPfY@#alEuc -xWOwpi_cD^hz>{r&?)u_Z{Vy-w`$PbBwKb_=Wwjg9zU7F|DJ~XeD?SmKK&B^_s2<^oMRfQ-T1NwKo=( -guU(WDJWP{R;SWa#Wb_|142Ig*{msQPP;ZkafOg8my21$ro_Iqf&DUN4mP=3z*M%9T5?qOfJRXoum~j -al$zGJpK@|5hZ}Ed1)y_z^Tjp4t2*T!O<|{~>igiWn93Xvz&O=PdG&M7(gy>C?D;+T8(7s<_8Hy-=*Y -kF4v%Q}%Ja+EL$!~G`^|#~8ru{uB=XW%rS(13lN~cJ`95#nROU(E2rb6;Vp<%f5#loKv$g}aXnwal6p -qSH|dhQk%Vdz5HQMM5w0mnyKx2Ok#(tVMww`YMN8wx0Dg_rWm2_ZB@6f79-xff!_DZh^CaOga-B9N7k -L^FuX*rB*6j4R{Yz-kmMnIL{>gHLv3BU#+|g;Ma-6CDX%CrBW+d_()Is -vIm?lbQ;SJz&&i=X-=eFq2cXNS_@=XEvG=EuSm~@M+ -NFXoCRMg;zPTk51R$|>hE_Dx1XrXwv7A -kOu&rUS=Mg%8a9G{-o*(jmd26ictgEV(bB2H{#{e?#WxPaX4hYdNCT1_r*+v`4EN$o`gEEQ=EE*0lK~RB>#Qk=U*N4PG~PWDyWoWWSymRve|1c&M@ -V)l2*&GP6*a)jPR;dc_U*0B*n@lCtv*GN%F&!pNMH&i_K6UZ1g9@PJMQIx&{{9U8SI1p6X5ZOMP=HsL -dgG`V@x!$}|7*M)6u4OuNndknvhIYvs~7tZvHXUrbbB!D1an43hl?8BV?1N3n*69$-NMm+6^cks%D!B -q-)|-BvCc-3R;}Ll1pMh>*7`#lnMvU1H>D -A$7_Jw#|y=>UMlyN%Q7U(Dc(S;LhXX8r{%TeRP!L+4zFW{xK(<0K<}t(7%a=H*@d5;E9S(c=pQhvQpR -_vxPNwB8!gJq8FV?L#$@bE%#)*D$IlITBS_Sg^1~1lWGoVL6AXhPLKk99tS*$3QRwPaVY1_9JI|3%>gkWpv^t{F-6NS%Lp^&I(iEsnGkhE*HHrNu(9>CD)FqQL@*-2@I8xu0_InOuZJd*W;~o++3>v43dw@|GuY^qjmY!3kXV@sTu% -2HOIo4`IWKPl5m}cddK{k6#fP3`v-r9+x*2ARB2Rapt--d@bXuK|X -HeNnT|$kB~I?%HO-@%_r-La$bQyj}*}4JwvvwDA91NC16u9{O+(`>{_b{)~dz&?_`R#Sf=8Cs-wwwE2 -TM^+Va!<1n@-u5dgY_{&iXF}488W|0j<5@X3Tj6vOqPci)8kVVj&n9aW|g;wfQYbh*8ZbC!g@aP}N`k -0wjY)bA8mma9hZa-Y -N-eHzlU%BC8s{dL|9^jwI5tc_QF_6;8956C+7}m3teNZ0d(0;%-|sHJCC5xlaEI)IPcpeK+rY9+Z3dZIGnM(V?DubOeP2CcGm*ayJH8gg;nHb<^!exjG6^GWa=Hn#jo;5yTLothA>@#Kf6KlSp5X&Jf%5qsPtsiENQlKEWJIr3SFI16EdC3z1Jj5H8K2Hl -zkprL{RsGSupd8U((MMeG|<*wfs=Fx8#f>> -aBf!K7?bM7Xwoj)Cz&HQ9;KLjtwfC!JZ?7Bwox5nr_Zb@?(1RYf>d#espKuULo7QLd`jaOk$)_Cz+`g -R#h1$8#_Je_$}UhoWK4&Z~%}1H<*o(FmQh_Az)C+u?x&n!2xI5{Nvs%W -6!MpoLYS1(cfAYWFXB}Rcl>cRVP;xv;z72h*X0v4U&H4LLh@yi*_V?yFW(8JM_qoqtMnK?d@6YT?07`g!UCoF6-R?Tx4eOKE4eHj$Wn -EYu1spsup0)FmFDEn#Z?mck%{}3{$%Ta8rs1|dp;t~G5iSgUHXpw>4<89G@_|kseZ|-;cM`$P-6(wkV -g|;FG5!$f%x-a1^!oJT9`B|Jzl8?;Dx9}b#W%L}3rjLy4Q;vn5QznU^c>(37|on|SuA4AontV@EJEkF -mgYY{qVl@`714CyPONF-+-zE?D$^a8R`3as -WMZ3}P;=HEdAaP?99Q#OlGbB|az@KgF{A{6hxk&iuzC81$o$A0(KrJL{A~(|O!(~=I#6&3!fL=NSiQK -ps;&$kFg6t1B+&MMjl^esfj!rE0XU*!D;V>v#m{Tvf|(T==WEP2tv*GB!U^Mhhhy4|_~T&Ce7x@pQa;c!_+)ldBV^aI7X_2FvV --nHMm-gcj41_ii3r`~pdD8B&r|9ib{12866!a$7w9YN+$e*;9O4!HxCLp>r8myUf5yJJQKQt9j047cq -Eg3%9Ns;QrDFV0@j{VYjRd9^=q?;N`kD_$_Saff@RD+_$h<1ZvPUdNSDDgF)BBdpJ-9Zh -5cLbZ@yeQMARv(KH~dD_0%zR^n*KqH0wjcwUu-W>(9kJrP8#tC@fA#9xXJNuFJo1&ssDFcQc)r5}wza -4us@KLRki4ZNV~OlahBA=tY|f1mapfX9J)vk@vp*fCgl_4CRY -`Vf5XAdaEU&z8s<%qFwt!))TeI9TlDoPw!$#^ -)s({8(0bLWn((}7h*;fE$dCMe_i8>;a8KVKFK^FxFDrgHq3|M&Iy{UqN|{xs!}!>2&EqhHb;3JSHp-Q -ySZ!*QN7kN5H6-7AZW$R1EozO~@@F)L^$L}}RR&ZQ~m^3#}hyYYL;Nwz=}fc{`KR8$?JKMlJmgUJp}N -G;tja^lC2#0rj^e-y!+PsDt0+<&$oMuJX!I(1{F7xJ*d$Jx`SSOC-vL8DN -Wi}(k(H${9-d2VyEYz~4W1ye>#b~HxK?RK#!EFwaJ#R94UFi9>NLW!_3i;J|@^*~}s*!xCOh-X(?xYfwNaTLQ%40+!KUaNxcY`FU1T;Ko)}2wEIg47EBI|k4CD5G;?z~!*Bik5rR -0>!%}W#?*Ml*^c42)5Q@(*llPCa8eijrmdDQn>U-(0EFpBqcXi^P^XgpF03O~UlRg6Y9KbGf~m+~*9q -7h0eZiIvXh{x*xNS&s7Zi5*o5){Amexy=1>QxZ1Lmk>>ikaCayDidK%{w{& -lwsPnUqj%lufFnq`!PI?q@wM*uGhfiFtFaMn}nSkBgC0tR&pZ(tuPG@2;QR>2{!X8gHYAxL-jqT__MS -}LOr60cI}0<3$PEFdp$V?GE^v9hSZ!}2HxT~Ludp~pAr -eQc-j@npPP%fWjg%u1B<;tI*&V>muD!LrA*gD9duMF#8!QR=Ql#U;+MbtZW}X@EN~?@T(WWCKErQ1_2RF;hPB=yhCn4OtEJ7a^k)Qet2yN0BQA)IO`{J^fzhg`%@DIt^>I#& -kFsM??b!z{gFQRD!Mq9Gg1l!PIp?~4k!Is8?Cu^zh$#aFPa_85!_w`{|ofuST73vLn3hxv_p3&cVnM- -tZ%Nc^rIR~q+mY-9I7Kvx>L58`5Rb0qoZT(}h5fTUe425rSk#0V8zagiEEnI~PYELg0hgqWc2%yF$=b -|>hu8)!&kR#9rxS+B86^f!oA0w>7kg;g21B1WL`2!Xidw2F!*N?MTiiLF=n^q86H9mT6)>CK=w<8Go7+}$>S%aoCHZhWjQ*y6sfS -gQEyTK=?`AE1(6zd1ANsYP4DS<{xS!vL&%ziRyx~1h+D>AL{?->7TFRsQ!C0yEdcYxxI%;kl95mKan3 -c*TosJjeLLtC5sfWH!|xe8yT*_IVhX2X`Ds)iaMVY^sQsm~du%E)Xb8nZ2Xz5`s`*f@VPi!YW>leqyS -Y))pDbhoI^B^p@F)g2dMEIP7j)?=aF09u62{2?(W_PiN8m~yqf%j70_s|TckIlt!GxDx=S*KXmaYWRr -(wlKt)dyE!hUek50tZfpYn&focP{ -dt7vdq;fK%rJ#i$0oJ7N_X4vQQ6H(x(!2_{dy#=E?7||I9^sOHpEZFaS|HF6Kp~&8`V&lPB4Wpo*2{B -QctBb~*=c$>5?A~Lwi4-boT)f2v6=H?o|VJp%UXA)dsONDrjF+InRbKpr+y>aJ1??3+Xh<+ -vEOeo^kG4{FR>6gb*ReA?b@2eOze+=21dAbjS2LKmEO5_oPcqRlAZZVr^K*bZFpFy`-92o;4YGauw%n -7N=>4Sz2#;xV?2DK9o66@MfV1?X(7S=03hDCYQusv0V!l3YFD$E9zO4v513ielQX1c(x>`+)WR2m-+ -g|oZHNYTGERan$p#!uj?cgi?<(jGcx#5N_0r$sFc$eB6g;j^P{?5}Pa7q2=ki9i -*p--5g^{}$lioS^wIa`Zo+(r2*WM0_U)ZcM!g8D;?x^yG)M~;56B8EpWn{Wl5?vtTe;j-g1jN-+-+anO()k^o%{c$c2by#X6b(pPgl1EK$gJavb_E_uEM2v^ -s{PPpjRrR#4_O^bJrW!%6yG=B-Nr={)rX%HMKLGfJ;?-s=L(f(^lQzdF%F)iO@~i;_Iv{t*@oC7eb$S -hY1;f3VpheNSUY+SNshrlzf-I#SUlDj41ORs*F422;3EMVZt>7eP4nva1s_-<9k+b!cKfnh;24s@gM5-|D+gbVp|T0By~_l5=sTClkd4uXn2X>c3a?nqIMH4)PDZ!iZU^?`& -++DB%obMV<+wutx{0T)ocwwIY4qdhXdm$MySu=wHVQ5AZxsCg&=35Nn&JzjuE8N9{yoY?-6Ia~LWApa>n{rMlE$5n(Z(H$a(`;*uJ~Iwh9QSoik#!KRINwl%SAW-XE;6_e_@4>kPr-BQl#sBNksE%CqU< -CjcsnM#YU;m>HZj`P@_H%D4g$$+{5hc -!Jc4cm4Z*nhkWpQ<7b98eraA9L>VP|D?FLiQkY-wUMFJ@_FY-DpTaCxm*ZExE)5dQ98L3juxZ;rYq{Z -P0Nu%J!10BcwD<-?E!GA&UK8(CCEDvdX6zkPQkC6SVxbi?$;7Rh^fFAwjI%4@MBNs>3JsacW`zNRqWeP)N*j`AXE6fa~uwBtLb_7#(}S&mpyMblflWwM2m{C+l@Wh^J#hDn*EqExI@2?~WdFIY); -Y)N1NZ3-0!w5kf8QpH92M5KzTW2tIJcfn#cBk;`UbN%}>q7ik&$o!>&JpKrfb0Ts=2?9qmy>M00n(j! -ul|jMhBgnR+L4Px`GoE@gMg -L2_aoz6cAFqk1+bw2}Tsvd}lZ$#sRdT~<#_B{{6Pl>p(V}4k$N$2Liq#}<$`pfyni~K@%Zz+!gk -lf?^jE=%!6X`!DOTHB@!5x$7Z*lHxg-U@H -Sr{dTmouQh_8~ofBll2oSZ&g5-K%-Y_`Bs#WJ$lo7vOn&&da7jCvM5^XW6Dj;0Mz0}0b9yhPJg -jbvf>6@URgI0zzcloe&M_gJH~_ks1$1aei2JDvd`m9R@w@>FEZ?lz)KDKH-U5S+(L3yB^!@4@`)>Z-m -f+e2ljA(4nN365kuKa%r+91)KP-BMNWd%0dVVkN2+22`e;2mN|>pR!7k@RQN`TrWGXYXMf-u~)1cTlm --&m9j@FBpYt68ErIht%t-Dz5D%CvyuZHrJ`lZLT$=Y&nk9r^3Y;M$am!3Ufn?GPkMagw%Gi3)-@_Wer -~O6S2&r`u1o4XMZ&ckPKtr6zmJdPw5P3QdIU~tT7VN=NZYUqU~Y9lL}$4j -TqU8Z0{VeZ|681r4}Q{z5Ub&8~TDc^2At)TY9U<+3c(&qQY}Wi#{XU18{g(lPu&kOvY1ntW$z<62e&l -JdnKPiqpbmAMGKft3kI%>rKp$NrKChB$TYkm&6tBti=a2oy~Cv=&#T -bjrE@XL~Bw^{`{+(;rZA%6B6j6(7rAV5q{Dn18&@itTP|$dZL=DU@}Y#xioGX7YNsFhKMT-w_5+*)J4 -HJr;(PFkxSw=$!V%Yz1RB?QDji?_mIW)j$^Lk^P#D*w~$D3$bSvwY^=`Twj1oy0d?p|k6X64lr=e3lC -!t3^e6^Js}q4y-3w$D(uc$CWi&P3T)a6aI=fg?zTU8!X`Xdc2+>kD>Y!c&9oaqIfzWC-^FkQpLIf)kY --k-U2Q&1Rp$;$|;xgR=se2Vb?y*gmL^JJFuo%cglT~!`fbYnQij`r%U=hLJEL;o`(4x$N_(MZ%c-cYN -u?_)L<2&dUpM0*^cBB#1c<`qM^la#73>m=}z4vgy^Z+{dw{ekV*I))@ZRw0ASqq0}TrG3}2XzS+0R^3e`>p6sC5b9h&wt5WQ~EL;U_kKo|U`t)A2(l)-zOYsjSx8LqqUGt1?bd!6qBYvb0#%Hql;`2W=nG -XJ-(QG&P@6G1WBi6}}T_&deF0JExF(nUp{y*G59B+T>FB{$xy!asmWaw1D%@rHU^-c?%JQTCl+bZ1R -OD=0WwX!WR$dQlhkvK_u&44 -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 -=YUEd0)!h8~e -nvEjF(2c*cg+sMrZ9Fc3)-KcSNP)X{=59}p}?&Ar%>8_D#!v-LN97|RT^4weAq#MWwrJ^=sS$Wl~CKE -(Id~TAuP~>sXcY&Z6K7;7DIt=)8r4H7^9Ky>ICOw`$@Eg<-mA^ekbX!T-HWam^5AxQfx0biqipveyaA -gZMxA;m4h>>z&%$G37g-KG1D!E6Pof%Hjl;w?lF?;{Vq -J<=Vo^~#aa%sH-#7JE}PO7wm;1(W#ln9$Ej)eOes&q3yWR9j=OYouIv%aK#(SDM@6kGsCSSW)(->%dj -PBzk1#gCcxRbXtww3IB~W&zF#*j?`v&hbbhwq*y}k(Qiiuv$tNl+}+KPf`Epm?ckoZP`Zf#qd_%6l0oSWBSW`Ton6M_~QUXK3t<>`xvU6{tkH}Ti;*Zy(b -(IK^LT7_CX{pvJ4k7=JQ81+Mg$b{F}*wxxmn06Q21Bppxlh>J<6X~~5jt8PMBgxjV7pX?$IK{I~V=#6C60aSI3umO -kC5hQTOw(jWf1>a9lX>GsCo-eD2u -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 -5{a*|($}YUne!JjRE#3CV@61+he@ -dXajFt|K6C~@EHNY_{ZTaAB`^l`BAGhy6!RRNX)ylud=IkBAQH-Wm9Ve*0kmX>Iv*X@PG!SDzAc-A0v -4-zG@1Zxd4SMJsLj=4;rg}25q)xK?G_w|B}q?euf9cNB9irt*(g|~)A+IS*yGu7$MGb;(}vAM>Po1yW -=A-*E(uyy34y7g!y+(<|8JDPly2xLuWW;{iqi4p%)YHJ8AUOG;ex -9M_{cFp7Z|eaMVH3bG)+{JZwVWeyor9kOW^j;mH#h_wt^HXpo<+`fI_uU|l4dp^1B;)ba1w8{ -eQ%*W^GfnU!C)|9m`HOVIz=foIOyVlSM;Ry0&GPKWFyxbGl%bF(oy{Z@sVm~{VAKdvpx*^A}GidfS@N -7rE~>zi#Y;nBc31r)`>4lk{OXnda$(S374I89_EbcT+A59P<0bdSECZw5q6m3R^uXy(` -QU=2;p%0l!Ak4D9~;Y*$stRU9}ewLRzr(7d?=0I4J~Y=;rC@rNwki(kCgNnTY8XMX(}6U*I`{oyHJT* -2aOrSa*Y2#e%fz-iZ{uw7FWE#E-CX=qQP?$G95Tx9JZwnPY43)lLAnOIdF6u%qO7A545tZBc -O~1PX~0iL+O!}V*I2Y8JrNxlWG6NoU$8uWYcavep$DGiWg0m$(1bv5X1;LFkKaxPjZ@oS2|m=;m@emH -YK_uS;!>K&$jgB!&7BBz?Nef0-qm_97P#nC6@5>sv4DB8q}o_Ek3aI&glxE84u;f7J7K69q+!sv9i_( -O{RSYm`s3^ewn&y8J?P0hi{cBFa(J>Q+4pt2;?*zi(lnd=Db28O$;6@G3iiT`{cUNxi1+{Q;A&SUGlj -rHeO*#)k6&;dF0As;UTwJI1ZDknE`P=XTE|%yKTVV>jY65nMTAClm$}&#QY~NK*48it9QPmD^^_V43? -InMuoQpzm8#SO^yvAh_qnP*Dl7jo1Qg!?tyFfwMWNLe9_i2sg!66nod+>bGKdb(seoU>IY}09Mng|!vt3T4XmNm#GPeFFkz(ST1=R!;!l1I9D-&an6m>%x3GOjCeBo9f~*`2hN`l4%O=5-hw}fIN2n1ooEQUo&WYPR$99)=v^<&|%0OK{@*qe0h^(ualHtl6PfM0Pm@B$a%fwJ; -xbOTA;iPpBi7fDhd3pkX7Ca~U~!#IqgfPp5ba74M*uX{Z8#w2`(pNZ*moNF^WKLU*B$f -5&maYFhVeThv5WIJ7i@yaTz&T0vRT)OhLx1n`ZEY*8u8}yi~s)36 -c#@MPWQf`<^Vrw72_!8{y-sO#8abc(!uIcaG+SKElz5ghkyYBb-LgJ@%?NC$~rl*K~c%}G)k{yELNa? -eGQ>o5q2ly6-hKsUXo2c2~Yljq3N(PwM4(?GMY%Mu@!3TxI7oHUcLD|>hm0NZ{FG-8VKcWV+|H&wT(k -P!qDp}!H0ND`(;{ta)=tiP$}8jdTR%C9faKDCC2o`Ta%{nLd7EEMn?GD{ -vsjE>?&AjQpyYgjw5bit|1;C~BYrL|X^J&6=B`Xg_+g92C-zB=ZPp`>1c&_8W9)C~4%hj8Cjqh=6rff -HiK{FF>##o<{YNk9~K_|3Lke`Utki9uL#p*qn(CL2mMT#z2Bzy=t4@pY}&i{U7DCz}gMFBJlB;X2EP* -4jk=jv6xx0=gwiR^kP&XvA|3cx$Vvmpc*%_W6ZtSa!DB+rxz1b%BIX@;!Cdyux*aSLJrSM$C)KZY_aI -~o>dr2#n{oce^tr0UiTW^e{>fb%=`G)OYPBUD}LGA?N9ZbC7^e<^m+AA=(!LOVF#KkT8ifY0;>pGMloWiG+YXw{;7pN}@rnnoqV@u7AK+ -i=;R=DZt#Iy2)C9*3UEvDO@K($tbD#rn&p6PZqt$-gGwi3;KAE8#&dfzRR648UBlwbF -)sNpq?ldgg>2U1y5@Fk7(BWbD@JV1cF*lwbS3x1@E}1uAj$Mj6D+eaJD1SV6sQ6%t{F9NV)PN?8MJSt -Lt7v8&lA+P`Q#=^y(W6f=)ZjiyvybPa$+DbLtZ!as=r_N^Z|$b1k=lQEjd)c;nB@@+2W3^s9azkflQY -$&=wT+~d1+f%B62}6J|$yb&D&;c@y(5X9~yboS~2N(`yY+0u*n~E6uur}UJYTMCQCvs;!6{*CJR;CPW -hj5LG+ -Hjf=1({r9^#|W^)#EX&;<|&m?e}#i>sk03or$;F%CvqNw%;GO(=9!qc6&Hthu`U>AN&1XiTnFaGl+I;Y>!Q -NV{h!}6lU^4^S8zjEF-{(BjwiK_RQ@g;>C>y*3*+?m(whA>!#iiV<}hDq#Xg?bJz)P|ME^saei4x-m_ -b5+9|9bP^rHpwKS_J*f4fNgwx~^Vyr5qB;?m?`NfN^Sp^9XzAo(*-Ee#fu+7_gHv9GYyrW_-WHjHYT5 -a2d>4>LI;?$B@3j>lB+nZ%ibK0`> -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 -4>7wUbi2;`?-$W0v!^ynE@{jV4pCSreKLK|L -9SD4APtED7_DNfii*h46me^fITjij#CGt| -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 -K -M3IG7-A^-qB0001RX>c!Jc4cm4Z*nhkWpQ<7b98eraA9L>VP|D?FLiQkY-wUMFK}UFYhh<)b1!dlWMy -(?WM5=yV{|TXd9_+?Z`(K${+?e!G$?E@6esE3w%FjjxZQ1v3wF0D+Fo%7BQR)*wt1FBEh*XcE%v|P%# -f6*x3pQ{@*$DP;c(vg%nX%t_9Kt?h0-Nc8+NY~p+)jq#^rRz;*=Z1${jD6u5!av&fcBM9sGGQ|7!%lz -QtcJ@z*QH^MnaJis2ne;%vsQj1s -?!d!m)>gCJt{&IO%>eI~`gP)C788Fj=gRB{uXDiB;OhjHXZrG}RI}@K{QIzbCsBX1ZI$)7hS$0}|9iz -_fE542uSjMgTS)9x#DUK2Q#M4T+=ets5^f)R;0lqjpJF~tF{hPqAnWdTFfK)lxC+BXFiEJ&j0Y@33ag -HfmJ0bdW_CpRcJE6g!2}4dSGC;m}xFYYmXiMW&*?72~zVlG^Yfn#_k&?h*r#kNYhCTYns67^{* -R0^H*lo^q3=BpLx-w>bL=166}M^iG+5>>6!6ODi^QfXRh#Zt$1+a4K%sMVz*V~8B2KFV?j3=M>i%tgx -JAY||yvg^*VTpZw#fGrJ6U<}KU|T`GtoG!?h90d#=pwjd -COy0~F%`R@Jgr-;41{ny8c{e1iH2WPxQY{0wVx^lIeqUj>`4cA)(f4s -}W@*35IpKFDp(%L-g5P1lPxt08YjY+aS;q9gEy7}!>5A{!04!ZQE}0YiyMYCdZb^U6@PNZmafC;-=MS -!$H*EYzcZmSm_YYCL1#v+G7%5|c|{{_#`@I>6J3_*{q>y#!}6Q()-pM$m|DLCWXJggtL~&T4)&nD`$T -r&_799(SPeLs@DG)(`=13@l>{=Kd@n*wD{;6LC4fZCf{3xx9J6#rPO8`}?iR#lz5sc%ByQ_dm`$<2E} -?+d&h?mhpJv!V5ecSwM=&|DIrhFY|yt3_X>EGgBF{(~SLXvG|^;WGNpOr^cn{?1N25a2RrNWVnRI0Qi -*JXo$|uaVOyjZ557|6sZtfcycK9(LoP*;<2*GSN71;K@5bOHAZ5w010t7Q23Jc1?-o49>yL_QEUSgp> -b|{9s-jO#R>jE0`U>Byn5(OEw3M%*@g|caS6MU-;vDw9mi@Op<8-hYdIHCtM6P|?qva8y4QBF -oJG9J%mnujrd4j&Ec4UH}IK!TVZVzL@5CLMmk3Yo|Y!y26H(kEp-5Itxwi*l#$#bN)Px_0K$n_7=uX) -xSA?q*IAF&Yuf}kVjW%6w*VfJqjOTv0dCG2AK#` -bnKib5Bo5azlFL1&#hhI` -LXQCHqnJT#Jg(64U)6*@0>k=t5j+(oRGoE6USk_B9dj#A|aW+#E?R9$y^R -jLtV1s2?dEq^ctT3^6Xq^}t4mdtQ+1e#DMpW^28brX{F_W#Sr~Wjq_5JX+7$48O2Ji6B0Z0$gM@vE&< -=iwnv%8|W|9G3=reMea{TLB&b#st@1lKs?1%YhPS6!H-?e5U9{NMY``1s2_r0Rmr3)Ba(Dal>?0d)*e -nm=5}m^{SukjLIhC?&Fw%cfJXwlq3!HMYq#D39o^Yd*89&M7eJ3$vz{X{peVrs4viR72Y2!Dh6O9Nh@R -d&(MCI_Ch?LAevtuqB4zijH&*-rhki4Xp||F6IVwqq_%b91u}yeA9^LIKA=bFXZ?&-Svwvbl1*xGgk7 -w?aHXfegWy+NJ?%go3vPTedZyYyf>>N!sa=Obv&CLviQ#nP8MpzOa)&3Qym#TS_?24w}AF6`Q8VSs(`0=b=~Vw -z<%>zcGPP_kgzx0x#p&bSVtMg;1&`6z+}!uM;p1)*2!N%L9L7=UHZ4@5#Sv{U3qf3RvsB3}cWLd19>nUHsEaZITUAwO0c!nja*g3^(;^AP{Yp|)?@s47R~!}q3O-q@29S(hB -c(v}GEG$!LEa*)0|$5Xdk0I>#2M`oOIc73>&Gay~N`ce=L`Dk@MR0TRlji-z#-Pn-BFpG6kaj> -BA7>sWP3`7aEGSFBkcWMKW;;kw{NE~!o4Av0*>m!1zRqg -QtzQ%7zSAi64Z*yFoaU=>e6|vic{d=dNGl-KAm=;x#nll&R$crBBiDnjEs)KBQ~{#7ldBDuy@|a)&$o -dh@`fAdpxE}0GCik!B^^y-uptHF1RvZ -UD2-%x(YJ{lj{!nwm4B{FV@mmFz9e$={Q+rqIV1qu^kpv^qpWv-pYPvySPq*BW>rz -kD;a-}0_K1D1R_zCPMl@(k|gYCKkMQ!nQ{~B|K{UmBcjuq{p+236-wpZ5Q$ueFPbl>e6;HNIfVmvGME -4$!O%myPHYe)*1#R4C#+VC(4UdLa}aZEBC3~eqTabyp@4dXumE$>+0bDO`vy|0%OC?zLz1qQ^Aj|U)bG -}_x5l8IbleG!7kqm5Ztmn!3wmhCr15$5l)K#0Z>Z=1QY-O00;m!mS#zrSWQ|;9RL85bpQZ00001RX>c -!Jc4cm4Z*nhkWpQ<7b98eraA9L>VP|D?FLiQkY-wUMFK}UFYhh<)b1!pgcrI{xtv&s7+qROw>#x8m(= -qj)%1fNIbCan%RcxivJ%63#H0|YiI1~w4tSOQuNZWdE?tj1C1wewIlI3_Z5drKj7K_DV@xkSAIQ*OiV -UPt}uvMJ0#}uBUJLbhcXW81#Sei$I#Sy#SW^4F4W^UxOx5MFZFnGmI<7Ar#ck7H<-iRH)e)IZ!`0oey -fk%J3n*gwQ##0eTgI553&C^XFL;z$0!PY$G%PqT0-6-S!n5|OIS-fK2+D-5Hm}N0kwPgw6vv`@gL4>T -iz+AEgasZpHfslw-*`u3s;>;By_5v3uGC%h64UaN6!x~pX2yL{oHD|+x!WfRI8lSr%&;xd{R2Q}-0*hLZ)Phhz3-cJt}#^9=)t`Q-BE4|esDO)mdn|Cn8#joI|~>-luCU{`Y ->HoLe!pG_fmc6oaK`D}LiEBgSLmsdCJe0DLr0kSt&RHY&|n=X*t#dLo936hf!v-8=_A7dc(advZwbU$ -9r*@RtB<~Os`&*zglyZ$`CzFJIyg)<<0IlKHghkB+L)5{wh>V-Tu{S6Xq@o92?j+Ftm$!BQ89JyqtSJ -!{cXTN^BVV|zf&!&+1VG7($KAcZwWze+K^U3UD%+4kklV7KVbp>>=g$O8lWM4i_F%#>Yz`xU*+0`XB= -Je|FW)8_Qv~_+{Ab*)Hreijl&lV__kMpYwY$gg8aIT09U|voo9Ta-CZvX_-pBK}DBs-f<&Vkwjk!3?Q -xIGxGQczjPS>;)ta>rr81~maRPQ)P$4@ag41C_tZBQJ~NQ0R;REKMaN24!@!IMr#fEsC;j!o^_VIBpJ -uIEC6y*sx)=*iTE9^-Dt5&yLf(pND|<0Og>g67P-u=C%DA>>;%0v*4>dBvT47TTpQ~6`Uz}811VSm_1 -Z<)Ny-o{l_to0M2YpGKg03*Vnh~`I -_qx|BPMIvDTaiY`LTSwrdla0zMNjmIzD<(q^92X_{=kpZ|yO4u6TQJ?Mj27v?l*5>enBui4&eCla7Km -8CTcc5t$)7x)Wb6vGa|N@?G)?2Qit-91^gT$ZlDShxO*u(gKfc?G){k#%w0s`2-(digEL`7rz<03F!i ->?2P!a*3XX4l03iMK>EyD4PZV`fFhV38~G7<2riAw|IfIEuA&w1@RRNZ-F1F7S6f*uk9HZURu)+sTbgLWlAx|%wQM)Fw@37Xd?cYcz3)+ -1G+F869W@msyxhapdkqdl5zOJt&u?*EzxxW-vs`-I2c)e7lJ1 -SJ{Qax%zcOhU!a?-M2%o~;A?{Us!>V#CVnV@e3V&`zyxF0##5+S2NjT($uSzy7#)*Ld4Mg$BLQqfYSf -of21N&6fJf$ENPQ|hb4M>ir-a~hNBr^RGL9;pn!~hd8AK)PBfFqdZG<_u7oMhJu&1j3w%*&Nby$h -pXysIl;*U&2amVT -t{!Cd8&pxp)q_Xe)&)moBvasM=1XE142FPZTj(=DPt$;wxq%#G4U)*~ZFQg(gY}tX4b_0gn|#0=tcOO -Q%rBDdgR!Xi;PHqx_l`+NjlKSHiBN6SW$$#62O!<%ZXnGELA5Y~e@$!9f~l)&HbawEuzMSswpQ&DPQf;dN&~`xq0p0YI3Rvb9>Ep*Iri#hM77Y# -c;_b_Brh#g)DCJ8VgbreawyAcY)VDV&(Er`K;^AG1{u`9KoU!`OvKSR`k9$S!f~VFQ(;D@@eT6EC)=> ->uP7P#D708VK6RQtKkxO^|SJiw1QKT4;q5tJCB0)S#*`_fh;9sbVxE|NcLtHgqtJZlleiG5Z@V97Cie -j0(~0>3lSO1x$;sR_gp(vif&6w1@D&#)ZWr)@U$<&RT^b4ceSTpI1{^2li`w9b?j_y5)o6WwyInZB+m -UcXf`DaNRTA)!2p$+1>iGtr}Ljb^qYo7Kbi%1HqXbWmIepX+%h62Y(*aC5khKmFU54iqvpc5aszTp?y -vd*4H>9Txb}QX>F^qWO!yHD_*NKp~_`2gkQGE=<`4X5$*(f+@e8Y_@T9RsU!>kw>e==YfgZUlyc$2lw --E7t!kLm#8MeKfp8MnyLaz;dO({_{F_S}S(<~|2XcQC!F}D;v_?@R?Q)&|1;990d#qrA*D>wjf;7P(r -YUaUiiCSi8f`&lu|QVl@vZ%i0hb&t?Yke0#jnYrYUJ7#g?HM~Yvj7&$OYHUP)Y>FO_g4G%; -Nbw{fFa?VuDJBZ;o6PobhkDK*03(OlU@J$RFo#{MmB2Jo6LFq;%894eAUT1i$Q4E2VBi!p;7R)&s(o8 -yswIVxEFstY*rB(eownH(y5p5Z5aa -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 -%H0g~9E#X)? -_Z;v6+*a&Lf5@H!aq*E+ORsdeHnT!>M++%PiTnCVkjuEou6W1P*jENUycAY89;AjQI2Z@bPY7J%xq0Y -V{-;J?KY|WE4+cgWS|L8nN7)pff3}tSiISqzZ8m~8gWI=l+qFPc#Kkd$t@vzje!r2rgqKRL7$_$k=!jsf`+`T%tEroj#6@$S2wD`G%nUG7m5a;G=Fa{={2Vu_Nct6E*XeKK;&_*qlbeX7^5`t1uVq`mBq208a+81eFXmmnepWBsHAcS3O1&%r -gO6=H8+5B**e}Tn<5;H|Zo$Me856JB_bP;k_G`9?N6uCc?u16O2;`>#X1|;{HjwZ2vN!TwhP;&SbHe{ -d$QXd0Esi5#))FpC@WT`h0yhxtT5ux$81XsOJ{9hc!Z~DwYg? -lB#bqq?WU^Lc_qpbYy1X6LdHEL*)gA;@S@8tHU*NWn5OE7QUSd>7UA&kvgz{jLW(tbR+sU!+Ua>mU!i -!1wMCCeZabI+BWbrm5uUs1KLhoL78&Z$ -gNt4gANVup#tHB;CfYLm~sSZ+(B2&ILa0iPK^5vkUIB~ZzR+{;#h%lCicp9E8)RE&*f -#V!ieJz6C*V{tiE*C-9`;{JUtAh*oG^u)Eh%P;1q9s0f!84l40%Oz^0s$Op864GpsRrC5%*rWWwSXE5 -Bl}beS6+e|D^ZgUVX`1x(I#yGq>9LoBRR)<)_2Mv-PV0oS?G6SXbX)cAOdqJe#%2raLD9CAL6GNRK!~ -WP65V9E|z>m?6aBo7Qg7BV<@jd0d>%Eyh)VMhH3RXc3Lr^&+kIDuY+wLE1saJ%7h^W`Vt84Oj6MCBnh -|r!yrZDlaPh9LnEtQLa47UwV3hd2WP6!FNSI1MaitvZ(Sm1lGS3fZ -(~g;99EDk?t!k6>DS<*?0Z4bUSn`+r>a%gEh6m}KN_3UvJRw+B_&X1v#zV1VX4(OK#WG!Y>KY=DE)6Pt0K -8y8H~ye1DvuBX=wL*t{G;q$v6-Vg>M6H;-75yKSA2+!>8k3X_s=A7d6_!Dvmux04(sBJ_L6!~%>*M#G -3xlz+D>N2~CC&H+N(JF$cmhT9lr41swoXfXNDqf -PtfWHy8>IpXjT5B{u5m|E}L~ek*WiIbMma)9mcL{l=RGbyGSm~#P=EW71SNH5gWp>;2*OxiL7U_(O -DAb4Bd7%!1oQPsgC52!4c~G~8=yy0k*O`d -fM;4oWdZ3@x254ng~_0RQEdUXhpl^2#qD4Dp@wpJ)FyE{V>UbNYfzoV%cU)X8l8^cdki9sEIvm6h$Lf -v4TCI7O^yuTxUmP73T;wk-zqLFj|Tq_P)h>@6aWAK2mm&gW=RmRXyx4i007JZ002z@003}la4%nWWo~ -3|axZdaadl;LbaO9oVPk7yXJvCQb#iQMX<{=kaA9L>VP|D?FLQHjUu|J@V`yJ!Z*z2RVQpnEUtei%X> -?y-E^v8`j=@UAFc60CeTpCUP{q=N-UKho9=xb;5VFbC29r!kC%g9T?WQVJ5H`oj%=dkg=lcfB+u?1Nk -t6Q<+nYKWG6zhPhYN|b;EA%h!5J;I&zWeu1>aO#&TwUu8Sd8Yjry7s-6j3Y(MnJf&ad0Ww|Mdc|_6kW3~H8(rFupkmyvKuG+uwwnMwcx7W=VP)h>@6aWAK2mm&gW=XBooEroN006=c002 -|~003}la4%nWWo~3|axZdaadl;LbaO9oVPk7yXJvCQb#iQMX<{=kaA9L>VP|D?FLQHjUu|J@V`yJ!Z* -z2RVQpnEUukV{Y-Md_ZggREX>V>WaCxm){cjUT5dGbM#mG_QJL6mkX(_doN>P9oi6#*SiVDB@q=oSLd^$JIYq5|?O65}LUKvfLH4D04`#C73MFiHcTpscGqyzM;wFW!CTad%Xj?G+vJB^;|hBRV4|(m%5OaJUm@bo>QfAshuR@!cuMu{%;{&^u}v --@Cakh7nPc2L^Sul9v>eUCU;rf&Wyb|K0R*CWplr%dOfwMjrC+@uQ#3EO6!otbV_G5IL*Gx9%hdQyJ3KU- ->Y@Bl6tXf@mAxi3D`TN`u=11O -O>RJr$Wbg_{U1Ww3?oa%E{>OfUbd;EF$(1*wZ7o)?R!bHzz7t`USEb(a_3;P@$S+kq -*bu=zTdfi7hEwk!#wfcM@9divo!)LBc~SzEZSP|bD_y-x$#Fef-bGNS)d<4(Q|T3dn?y$PdYDVm2z`gbWGF+WL= -Y3nAkD|wpNm_3$CamH#aNPLV4!N3@y^RY^88U!z#LEZV+s?Evr!Ir#(V%_5(*iDZr!G9lVsLe0zzWUQ -UP^J*GZAfWO*;=xN###nlqAEo*L8WI(xq)77!r8tl^Uo+>o#134sEIG+nEa*tC;xwZh= -!AvD)vLb_%Hj;wxFh7q1zr%LcLb0ViBxpG3Qt~&JPpq**iVcyNg33Etl_Tash&{N~XnD?PO@;9lRJdb -m!@|uPOF<^;TIwPhy#FKn_@HSRS#_eyKvT5bO8I#*_^gkP1}Pc4t;zm&H-T@K=rrq`{!eA<*ukq~<(K -LNDCJ@%ivqVfY*ZHoIzMV^*0uAdT`c*CfJcoXCXOwT(g^uR;$(UpL)#Drj^Jgl=j1L00&%ah~uV@L{S8=qRz6ewPbN1*o}tB(T*yFd -!>oe#_h3D=LZl}q|0I2OBR%xb^5rB -=H$`MJj{F(|t+$v3kwS)EP+}I_ -)f+WIU4rgyK&~$9d&1aS$9xnik@$KgsooZrK~N5LdU6AUx~_O~s?tQPpPi&bStg?D3-e6T#S7ZliB`9 -*m@2blMZ+J1W;?#YHi?T0@>BC{)CG*$4Sjj5`&V6V98^jCS2I!s+fHv)N-@u+_fYJ19o@c5}N2$K`B4 -{R4XU?%n>B$~=zD2~QXXfSfB#7jXdCiEL|XvBX&nFH6ud+uQGyF3u65^7|qE+e&_=qV3PuD_cpOv?o% -GlqYu^U~kUqx8cyCrT*^JRT$~?pn1nhsxUR+$vJep2M;OPexYC;j}o~Mb;5(#XcKgrraKRLH&}rBe@1 -&~zY=5X6?6Q(&)%23gZ6;k8jMpsb8b1nGIA%J-6p`-Nm*fPUCAJ!_)-a-`5RD60|XQR000O8HkM{d8@ -Oljb^!nYd;?X>2cFUukY>b -YEXCaCvP~%Wm6147~d*7U;nZVB`;a2#N+VP^3YW9C9Mo5*05jiCdC#lE3e6w3OwzI*BuU42Rn?^$wsN -bz}r^p^wDs{7$GF6=8~3-`p*++xhzN=D879Qy;yCUFd>-Y+PhIh6YQuINf`7qhRBd+z#Cy8LwAuo^@T -*Fkr2L1{)RxP9QW)F=A7)8UKzbYN@?HAnegM$TDY0q(N}et&LE3By$syZr<$s%B8QWe*dIF@m)8c@!d -@Y)%|t~wiP_Q{CW6wpRy*ziy$ksVR%K39EMVsW>a@Ws56_S$~m0p9+T3v)}N-Dx)I%L|9jepKengZavF1?E%rOUcFw -Vu+}ORo$&nQO?WFbm2O7N$w|dug*VODhcf@3UEu^D8jS9I$xyz<}lJGVJ2SUx~$$jas-lL+6)YXLJ7n -P)h>@6aWAK2mm&gW=WV>WaCwziZExc?68`RAG01+f6u3%udrc1p@*%hNUW2Ad(0C6AEEX~?Q8s -UBQ6MRMeZRgle9=qn6n6m<$Kr6_pJzsuRy)Y^sL$qO5AHcHAFJU=}=+&@nE_kuST?%mNsYo+G^?_fnjD<~B=_0$6YE{p|L!_&*Zfz>4_yX6`h$!w+c& -Nx$a1#aOJlZLwoofB_3;=ehGx7_d|XB@d}nnk@4HP1Q=L3#9GGAVfl!sLajYdjFD&P%PDhL;IFN}Yx0 -5W)|p;f1I~;nZDRT)59aI3~R|u+%LFQ2|B`y*gA5L8D8G*{W8SutpiF3@@{ZQ!;OuW;=JUPshBF%$WI -VYi%RNI{S6GeE!&JUV&Qw2mcKk9+l;D_@o9I2PwYsJ_|E+4ZS%CECG`Tb~K=!@330AbgWijl~X3Ub#X -*hutneHC@#&5V(V7ID~hw5RPR^W|?!ittzgmqH9* -BGeA>s;xT(W8dMg8F4llP&LA51$35SU9>d^q@!f|Wjf#~XZ$t_Y0=>M*QpN_S -s9P0ts?_}?%HL~BrX(=ZkUwnz{`BYL|(C-kjEsA%!A=t{@sN~^A$Z4b){&6o1n5aaqT&5xnoO=_Mr4P -Aa4oje{*br6J6;Nf$Xr~eZ!2cah1!u5rH++0%sVu%?TUyj5*pc422L?dQCnKO6Hm1CS4m~o+;A6DT4? -HO*0G1B41=LPal8FUzUF??tUK>f>mC?9vh^VMk|XWs9-fZj{w9ohTfpPep&Quiz`ojb~2QMP_XPjk~5 -~#$*akQFu{YpC<%@Pj?nFr@3{1#7%B6vd&p*tB%rYA|xLJktc(sPrWWcn!2Y(K;weC&b8A3t^4Z;q50w>_SB+bxetdiHPxYg9>=& -T7<5Ao1X_7xiC -KhckKnC|BG$!1k@+JpR7^+K_RTV`_6>~9>y^=Ui%q8U -~kxrQQTF;3tmCq1q<< -X8rNR2~6W24)^YqplOU@X-@QAwNA4qvFcHP|m0lniXA*ZCMmgYS7}es#4$Kif63%kIi-*?-mHs?`!V_ -aCpCR?4fJ_wUbKTDKd6>pw-EDZRN8#@6aWAK2mm&gW=YJ!ygu3j002-3001=r003} -la4%nWWo~3|axZdaadl;LbaO9oVPk7yXJvCQb#iQMX<{=kb#!TLFLGsZb!BsOE^v9JR$WiqFcf{yuej -<@2pn%E?G+ose>Zm36MXSM?r#DB+jQs;vfrmZh+>~qgO_cJX7uOLZ^Ml}MH1ZY)rp@ -5{4myN=tefA0iONqpz!wn=oIz*Q79KH57ifWSGkZY8Yr1uWxd7l=Gv+q~Q*~Q}9=ktp%a18$S1FeG`i -;^hxJ)HWEdmT{6`kcrg8F%`{6$qgI_sE%^O9 -d2yUmNzxLNjAX0U=RCG-v)RmkU#@gGS)(KrT!40of+(#71paAID(Iv~o`uIX5u}1Xj@W5CFJQU65)Ce -wI<7pI;AfmM%oOD;wkDx9@jK2jDIqB2C6`X^#0gjJ|a7lt5rDQ0g1=pjMVigcb{H-oPDUIx -N{_D^2f=XZ2dGI13w5mNfmae-ItbMjrc`4|2v!Z6eVil$L8eF;by6k@Aj&_iU9n+AIx1(;6LrwFkK)<$k1PVA8zgq@n{;JM%$oc)w}Gmy`aVJ!PIwDQYIB)8BT= -+ro8ibw7E>>-2s+w*qbSz5KJ&;d+Il;2tWFB=Xm!naPGH^`QM9}^1 -mWw$2REmINSlP0=EZR5`p@k1KU`5&rnMP1QY-O00;m!mS#z9=K&m@0{{SZ2mk;!0001RX>c!Jc4cm4Z -*nhkWpQ<7b98eraA9L>VP|D?FLiQkY-wUMFLiWjY%g+Ub8v5Nb7d}Yd6iX7Z{s!;y!%%?BnMl7BP@`c -fS?GrF0zMhgCZ?@Q)ubQ;)W)*BxT1a`rkVwC0n-B1?r1Tk@G(0%}|XsTPn+@_r2w^B)RR3^(5BLsNQp -#*0UxY%kxfDZ(_qPck(^onjO0l(0bpMm6EIhc5$iXdNu<2z2eSGqmO_m7B$;vVV%^Qm9@ssX0w_blCE -q*DC4+ZnDw`;m=S(AH#hP5x#jB3(Y|HhvL!(qxnoU@RD7r88xtU0d4!=9BcDZF(FrTIVK>DKzn7M;f! -tlFvg*9M^W%$B9>jRJfuNGEn|j3kiTg}-5U!rgW>0cZ}G -T4SL=W%2DiAt$BwOR22mCM(DCWi>tMS)OzJC2hgV<6h>>GQy;V4IKXGJ!ZN<}!zMRS*8Wa|$LD%(#L2 -h9ujAbvuWh0~_2f=BNCLz&1$7z$)k(<3W2>2#-J@6y8VaoX!$k0|ms5P(q%_im+PKG(vHS`Q!q0378s -Zo&xLWeM-cATmjBj_9xlCOYB<%#t=p@b{;G@_7zpZG~SPgG75G#8GcqmRNx@ -IVj~J_)EYDr?Te5-h3Gylg0Bm1??V`5%q_d$^H=+fxS)&EoEmFB8>sXqntd_8`0Po?lhCz-Z36szFQZ!Y?4@D_&D;{zM-rQnOs%AN2$N|j3Zs5SLZF -K_w5(EaS{b>0JJ7g^Yz2ZHCbe*sWS0|XQR000O8HkM{d6p$E-84Umcs3`ydGXMYpaA|NaUv_0~WN&gW -a%FLKWpi|MFK}UFYhh<)b1!vrY;0*_GcR>?X>2cYWpr|RE^v9ZT5XTpxDo!ozk*0`u(b6m-lT`N#<}S -xaW0D{x537TD{#2Vv`l-|$f8S0@w$ujw|8dvB2tpm=5RHFjVzMGnP*-&GxSEu9ZS}-Q1l0@8RVqfR7tSph}jKSxnEK8Bq3s@?fdajgIV;XqJ?{7t|j^ -3;HO4c%yh4<=K@O6Lft*G{}lQ6Gh%fy~%ANf`|7OMRI?CcC!Wi!igvK94PcoZs1(~|E%>KNu^1+OYb3 -`KJF58ybS(pHZiJ<_jPCd*B}Z4^f-lQSBf^X!f(8s>E^cKezg@}gjw61*0Svr-()a!nP6>pRx$*D$!&iUdm!R)vNHM%*vS -&G1FR^eLIFBzMehB|JS*qcd=V`SJ!)3^B$ZH<(TsMkz{iBWE5)-Zxq`LbzxSp=x~<~NaXbulUh!1{Sg -($350(Ok#Fop~yr{%-`P*?p1Pupd+m$va;NYP6eh&=fC7Y75PM7~~R8i!sXP)mRfmbbAQx>AC&U_Q#s -ugF9LrWE&ka2!yMSZ@U(SrIe*lgv?L;HEi5105 -#{Dfff&O|)SB{C@CRBqw8GdQelZ%QZ6WwU+?5hms -T`v?kjBM&6_VO3nSsswJAFOcXt&xPj(gFE3uER0R(L)JxX?rcL=Pi_4?<-y;+tBi0HOmAF*4wQjpA1? ->gee^egu5LH7YRd3$fXN=6;2({a5L=ISn9ShX@6T>7esn!rtb)y!Ef1SLh{lAFi7DZlpP~(okOaq63!br -2$c<2QTjAMnS&ujFU>P|MrddN#(9PNQR#)-0|RKpmprd1iwL;J)a3l>GrCc%{*9e4?uR*e=K?SNVihn -ls>*iXLvo}i3qUMD!{jCd`C%Vm2Sm20!oIEC*Gc70c{q0%m~vXq?|o^#7fi -$AxfJxS6=9=1Xvr$qmGVFw3C2`A1?*eC!Y|q-3}ZI&_kL>j00{pu?=Md`_ -&I8i${UkonK-oJCLB-&yp~<~Ef2*bL`0yI_|#fh3D2W-#T@nhkM6j3>z@0uD$_H%*yMmkF`6^jLG$Fx -U8bl1!jpm?Tf>@9*Jnk|e)4JPjw9uK$}%h;oKR1y|sjyu=)tLVr(4s0h65g~auvv6i816KoQo$9f8p@BF&6IZ+1Bu+XQun;mK69_R$=*^fhp8`g -8;8>=Xv$-l1@cWa!{C;I4o0FH|GOUDMKU`vggYF{#8W@M6q`hcpqWM_95T?rpm_?1DLI`HW -M{sy`RNv&quRl68~bJ&u<91f*d!e2N)Iz={aKe2H{44HX+l>4FtPUvm_#Fu!?M-3AqIn#-Q5gtq+yrVBF{Y{No{Rl}IrUNw4# -)jsg{GM{6xDG*at)zPTAEbSCC`Vxa7hQqLO)wHL1Gx#gg(gljr3I-v6LmrZy!toReFjC&7hK3viB^g- ->nYvPXb65UgbK(Bt+56={=SxE13bbhX9n_&DG>Lh89ot0oO6@qOYWkuy$Q=Sra05eGeMMBS#uwD8B;5 -=}(t}ZgU+w(eKDg2@R%z^_IpeRFz)ZBg4?An)4)*F2h}b2%HVCX7OQ3(J$fli$l|a>uwakyLDVn-SJ5MUpus_@hDV_WR#1}m -k2km>KoQ{VsxH@v;A^5*ZNTSFLd}^QcIm;bC`06%h#G>Wa1*pxdNfR90dO24|Y1XnuM9RbocHo4D}0 -F7|}Z&FQaTv4d2Yx9-7@>Dg)QoLj|Gc -jq)KGuq7VkqaiwdMQpg|FjI*mf)lA%bfG(|WKhPN_?1S{9lZbqX{;rhO8|ydgB(jza72Q#_izje0kVZ -VC1{?QQ$A%jw)*5fYBTuz6ylH1dJG>qgmR!G&M1j=~S6Yp(riyEhQ;ObiEyX)+94o2DrItFWmS5}`ui -m%5j=TpGNFBb5Dd;vLBOK_ly9L$N_g0^+wM+eU*sdeCD#ZX!tM30s*Z|HV>)RZ4fc_>FgR<5mwA|$ -allqF~cyGk<0u=cL!!64AJ;tcmMex&1P`498k>zC>L_V(tskL-}v -OpCqmE`u9OVXthU5%z^1SlIsRbiRh$M7^d@_eC5;N5^C -mWQ5(01$k|7MG{daLwS&KTTCPZNFxH;zrFGr5Z7M%qLUkJ1VortjlQWy@l^L9h`eJm?xk>U$ZzW_u~( -+8?+Id7M5706;Mia4eU7vi9@>NPb9)2u;2%}+e$=yv5vk_E9b2D04Lt@6aWAK2mm&gW=TT;VJ?af0 -03q!001%o003}la4%nWWo~3|axZdaadl;LbaO9oVPk7yXJvCQb#iQMX<{=kb#!TLFLQHjUoLQY&01@7 -A~~}C&acqe5esaW%iU%kd%5el;ic(qN3!OM+6{eZT{`NhYlB!ftv}a@QhubkRrV1& -QN@bornPQP=D={7~HpM1a}pQ%`(wbKWsJsE)r%b-|_!1zWd&Zi(~a=rq+edQsc*tMxTaxp5>9aPK}yD`};%|i! -5LLX!VN3==SPsOm#ch_V*2k;S7$focK_*7EX1S8s_*^aICMm|V`snM?`2MH6` -{6AFl~Y=$;zq8GD3(ejDt#)JB3lS4=K4vQLKGQ3uQO;eO%(50EH>$kwj)vC1zkfq%V=K3j+%zJ1%bmg1-HzwJAVMXlekODHc$b3^*C))Gf+C6A|a_DuHc$Vg1PeV%=Ca>9Q -HcBm+}nN!5jKGZ)pGV%M;sbIM>#lG}P#Vwxth@JZ>s}1%%RW!BOt(7oEem>n5%EUbMLBZ8W#n2by(cSDcZGooTnrBj5-ki9}8c|E$*?Qb6Xp++iqoUO -r*GH9{cv*GrLz{}s7giqtJvycBO?-$vU)ohMbuqR2ZG3Xy2nzi&t7LdX7n{mi;pxyW~YAx_03El8UrK -U~0L5deneyZA6Bv4)@k!h?Um&E?5!JI%k59Sd -R$5+CFiE!~B6CCrascDM$4?_M(`$ID>9p=;Mop)Ioqn~nc?-#8P+*-%Ad3H6v|I3RXKuQ1N#u@n)ZbS?sK(Jx!bES8;zhw{K^8cP -G785zJQ)&C?tnDnKD+}L^k -#o#Z4Bl8(ej5E6xwgIyA-Va9tPP~vwLIEbWOFaX=8Seno4T31iwsy)~8%gMW`}xx+Avb`f6t-m-h{Vn -N@5Ig3!0=Mt55zdP`zJ$@^9Z={K> -twuRdP?^<%$n<@rbcf;QUse;-CyUcCFre|a>0;6dL=+NBrvjpC<&=khpzbZC -9N2f_v7@&6wKn!qSK4IBFkTeXp9pVjY7Juax&*%ywt^b+%YOyM3m@@Y?dWsHzi0rtTP71ehie|A6^@L -Dn6SMp~QE24s% -CQT{xfjj0QrsH3x=)$Xg`SBK2s*UllyQY(QPHWZ1fJj*ZgkWh_up#;f-keKtsggT)P6k&%Hehs-n|o_OKrR^q_72RKcQJi9G=BR^6vW^I)VFBu9Zafhyj@hF -a86rW}+J~XgGvTmbto}#%8$3W{jxWqi0nOJA%Dm^EsF~zxO56tcw1f6PE^{!o7bjKApR2fGK -+7llPN3D+R6^)+Wi{*9j@B;km*O3klQfSfm=D$Js*)e&ecE4u|b|{7>>NdTdQ)|=cDkgYz`BWeK+ -di@#N3~a&OZ>x|L)^0!XDyyxBs-~>At*%RkAJl1RX;<8kbZUf@Bf|Et95LL0c4F1V*y`MIRZ2-I&?ab -2;S_s7>IlrGTD;`8iXTl@vm$bg>0EqT)zC+2ELZ$R1z3Y>7?FBzH#j_s!&$+4)#ML>5}0f -Xh8_g`Qhh-QuHlCa7*oXsQ4Txi2D(jwLRrGp-tW;8<3QeJ_!M)v&Qzz}Z%3lt?#8GuRNk=%=c;|zXu0 -HeMrcVMMBO7wAoxCP62(tArbYwH^~Eo5e{07U>uL%*dT=U!R5 -snIbcU$xbYV!~BNavKUGL(*#Wu^~1l0Z7T`-`pd%bwybYpvnmsQU&TrBpo-J%Q&Wgo`xm;JFD+xHze) -Y+u5*U|~(M2FgRj~Xzv8MX1|yau~;EQVhYdBmtrV7ik?JmIU8U*7$8(vbb#zXtn8zKt3x+3osh%oS&) -aS4ze_$(BWB^C2Q_+UrcNJBtxR#fEMG>Ff+o|Qem$d$#;{i&%#G$vy?G(EtHlGvQD6yRlUvpGjIibUY -^CUI@N_qKB3oZN?kvOlTS7ZW?|+M|T@F{zndKnbWxYLHH}09P`Z?Io7&NpJu>+vvyYyvD@oLG%o9E#! -0xTEaQouGtx7OxI|`7B6>V@-Y0{=j(^z`w3*40x6r;ny|X%SEb6jXoCPLO`S_IA+9xnFXYuGw#x0mZz -mxZu(KPn_O~wWH&PveIIlB5+zF -X!h;7(rS!yYO`gtzVZ8($84si(8Y#}_Q@n@*iRee}9;Hy>G@ -YR(vK-PKLbt@YRP!46Lt6;YpuIRgNE(g-Ty});P&7)I=Tu+rNYq!)-OCl)cGTb|#X2r6U#b&XGO)f(1 -dQLhrN!)$ILfoxYO4Y3^IBEp948CfEKQ0yLBJ2fUY;yeX% -=uZLNRyU&q{bt3cJ7l*f}GX16(TNlCyeUCP0r12N|oWDST>yk_IbjG;y6gdnOWyaKKAqMJUKAT9-0kE -j9^%Gnd4ZvyC|r{_ACUPq?>Ek4goc@(W*gAufSKE92Kn;Sax4a4!(-AisuZ@Fmv(6N88Ao1s90mQ)H8 -jQQAj7r%WI$mwX%L?uppZ~v=%eD(06H1wW080me_pNJ<2ZYW4XQ}Y5fDqYgQdi@e~5&YU=YuGn0vC+L -7ux?%9`i(=Ki8U%+zshJkqEzdEe_i!n96AKbRwO1u+-#fHFfjrK&yvlYf@%>KdgLfFDO8?f+=~i?d98 -qSqpZ9>)HVZ+)v4I5!WG>?G-40$~9;I!*M* -{h8oe8>2MSIm+)3dgmqgs_@M!vFs-KUXww<9muE&(|k`t6YDbLWIpO-L{Is6}0cTJ}xpmlAxl?5|cLU -R(LLKzZ)IgsoEZK7Db!s^ni0uAHr?k=^I})BdDN8WZ0GBeIwhL~|oPdjWz%33@>^r4)v;(z3mIeecZ_ -@Rc-s6?D=(25gn%tF+5RyS{@bGM0JR@GZqu_fZwg2IRQI3iH>&osZt*MwJtUTKWsH9mkl|>-EwufRERI#Z<+!!vOcU>c5qjnXpCUsgyr5*i-h1J<9unP+FBU{qGO%xK~G>^E*1@k?@y!^$ -NS*_Y3N1$lLXLc7PEd;2XDD@gdu!bGxi93sBc^m}1D?h`$H~SWZm8!6P>&vi>3ya*j<3Pvh|6Okv@Je -vC;xBG=PRq4sy{r2n4X_TnC+z$K>xcZ~P%>kn`0 -y$ttrv}2p|tcrQKEivbW#QTj8zwlu`-Oqn}&(5EZT$Hx2Qt|Qe@qWZr7nOZPHKz*cfY3VP9~jX&QgY~ -wHnwQEr8H1=h1=KZ+;NaD4z^IKXOr}!v;CV^LP+j#_)Eb!6vg0LU7gko9U`jaXeiD>b+Viwk=F&JGe*sWS0|XQR00 -0O8HkM{dZ??X ->2caX>Db1b#yLpdDU8NliRit{;pqvxf{<(GYan-*GT~*0f=Eb0O%VzJo~(Z8Z}0Bn -g@8z%&uKf;-WN+EuvqLq`|Jz7)@sKVi*;u^EfxzVcYCER<13?@&WeTmKDlIfTfu6v=3Qf%QPoFbnUy= -CIy+~b5j9&K+1A>9BUj8SCfiz8+zMv5+_F}M#q7WhNHcp;$+dLbEQkgXda_1kyl}6`;`N)ie}4XE@$% -L8&p*7mTipHdW(W5TR -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 -J?mC{(3LW?hil9kf@aTS3Wy -~gE;A_lp0(q8`XYF}FX8vba`^XC0G2VA!>y3~Rj6{efIt=7WyfwviOfZv7SipF2X%|;wjjW)HC^-31s -08LO^zeJ?*BFZZujzLH?eG;?HN?8|aF)Ac{^%J`sXL7D_9B;*Fyy>ifJwuJyZas5&F%~h{4F3<_bfy< -x!*S`|(#X87G=}JV5#9RTGO*o4df#;-p0k%rSm;%UiW(Xs{GF(z76U@r@+G`~!~_4GUfXPG%Z2+tD-uN%27nRd`^5iRlsYqwwt>Mh0{;6a*aSa3VRJr=hm}tW)V?`O -uBj58tn&zcmkFFAqniuBFpSDH(W@!xK{yuC4{tFx0O(tLFF-k -oc3({I3vKV&5=%=muK-Rw_KgKtkub5YW>tgNe;39>!AZ3MJQx?GHe6oD_k)YV&OnV&OQiWGNvVu()+= -VEh+_hh7?Xd0p!rA*SbeTNDx}W3JS0?$x6VfxU?PPXvVql(LXqyJ+NqJkyPn6<0wJbcJ`fJGa$!))y( -JCs;dFG=>R+#aoL -c`?=f$h+2cJ5GGwACow01=7s5R01yJSI44*yM)`&qv;#1ZeyCjkH@sx{@H7>`0BqF#&txUlLRMYsBx- -5f@2%06=N9$ys#@&QswKxlLrA+f9Xw0>|NVrxQhZ$_d0?e_7$yc&+af&B1fJ;lLjgYCs@#EQ3c;)L_A*uZ3#jp&0 -;B+aBPCX!&?E0jz4yj^E*O8=uMtBUtcb8dF@*L -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 -cbL9B2DbZr55Q53#IK##cqy -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 -?-rGhz&|}V(1 -CQ8G|F_$6-jWrS}_Ae;4aV;9T=&Qngd1yX}RN1KrF&Sr7|^`Vv$<14iH)z2}y&jw-^!`3jqA@St|J4v;Dxq46>;dbnCwK?X?*837Y>NVG4#w-L;eYAD_{tv+Gn{F@FsZ@1GM)3VGGLXDTc%8 -FkoAps!+PP$FJG7P4jg-8rc4_yVC8cHq08MT3&fouR^FGwFIsGgbx|+?2`32`yG5Yz+xe3gEU~{OX+e -gAC0n9G;S2J|iCYrc!Tyuv2%B+wi@nhy7_Kp+;~m%n3;J5Zn@D)WWqlA_p4W6nzP*}mslSiyPrv=LMY -fmw?j}C1r)E3?Ig-Y!6S;69JTC|fNpLC@BfTXl9XL&2&x?q>2vsq$Ny(OGWWzdzL))2t-Af}Qk4#wDL -jF?|2hS5Xu4e+|6Jo>pePWihLLHgFBo$bsqEi>ll_x(QB#h$tLeTj2pKEcBb383z`N=DvT{3E{kioX??*?4R2*TYm -ZgYXM~IT<%#q^(iC&VI<3EX>Bd>E$rthbt&2eqPUJe7sd?rKB@T;9cTxbv%dgTs#KVL)2gxm+gHfd`$ -F*Tbow?&PU(r10Wmn6+uO7Zt_*CSqVLLWr#fcV43v1iJh03u{gM$FP;EQSM -$m(n`AcF%Q4w}*e|O;&B&|qBwCt=*+CUH_|-IsmR7#KmquQa-(aK$T6n%14WenAQNQ%#_!)`3)K{-jK -s!~hj^nJP(6aWAKaA|NaV{dJ3VQyq|FKA(NXfAMheN@|S)G!cz&sSKLR!OR?#q)|FRj5! -TM5S%T3n0szOcK+?Hoj2$_l%v}W-G|UZahA7GIQqA7&Q>a8t=RT#)ufSGLG<*RlRq>#&eQP_Kw@G7pM -8ytF{%gosag#CP@<*wb1m$EmUe4xU6T|_v3NJSjU~WtWq`D8FYI*-XB+pccNeJ4Dgy&otIDc0zpG)E6 -InOulL7KkGJgZ=Had&50A(DFCXLK_901<5I7i8&Kb}a+~;V^7?XTJDRP8WJ-3$JA@dY@HvQ*^gy3^^b -rt{7s!=V%qd-J8_|~h6_eAsRiMM!Ts!sd{nne5~Mhc|jlAM5e3pIHbt|R+>bQcoc4gB)LzyQ)&(uf|2 -Q>0dC*T5Y=^$?kaLEP?X*!X`KGiJO4=XfZ6JR~D5WFNdd$$g1n8XBBrT? -Ok&Z>5=u|_4T_mJ%jAa)3rXbhcv=;xapPnbRMs|%FpD9|90MF^-eeSoqA%<2%%`j|Bc^zLc{%k>nC*A -Y3z~4RZTV+tuAuTol>@ruT|GKR@B`UDxrdhTSUWKogsddW0EAoc>-j&{4hECQwf=ELd-98(%e`u6k7v~n}lMmQC??nimjCST0Z0DRJo}&3KA-DRy)xUsa&)kH -o={LRU084i`|ytKEMgD!I*r5H-OtlPJ_POtZI~V2z0S6s74v=LN`vyt4PMV#?%{?r8|50F2|WF@f}4i -UTZo%fwEXbC1QY-O00;m!mS#yF7SN -rl0RRBj0{{RN0001RX>c!NZ*6U1Ze(*WXk~10E^v8mQcH{5Fc7}$R}3ye4y0z!rRgOsY|o*mun5H-+v --{mB$=%L{mQcCL}7I?@_aANOl!3S#@f-378wH}jkX^6)#+jM$d)@H?Tj)>3lSB=Bju9^m}%b -b39X?_m6_(RiVid&0h2t1Tg<9=LPxhJ#rP<@(+KA`nhd6z5*wpbrRWwT0E%g+c@deL(p=cY1Oh}Yr|%R%gg($?|V!c;fA -0v2&P_a^ktIpS2g$%QxHwMEhQpu+)!lXx#$d%tTBlRhV<-%dM-X(>fK&$^+s4}ST9|$SrG4IA@3;Qs*6 -|v0JR>lhD**u@}LGY>nUrc!NZ*6U1Ze(*WX>N0L -VQg$JaCzk%YmcKi@_T-TFRKyBY{Kk)ZEaSXm+o3xty&$N?wuHo+{0bmzXr6A3Ev -KYC7PmqF$~lm(A`9aU@Z+tIDciQAGGL7ez_vR*JMLS)}i0GxIzZ`#sP0_EzMqprt74due}_?3nL(%Iv -*7R3%UC-4iV`AR}jGalV-mxa`1zv2@0sW0sfXRz3Sz6r#{TYLslqFCt^J*$!FHc^($*H;ey?{Z{dU9a -&c1v$6r%QpsX*Jkl)jfWFrw4R|VIT5^#|3w+{5S<#ebrzjKAJ{4P=%(uebvzG?$^@z5jWS%P!aVjNif80EA)MB*u9MT4P@ZNR? -b&3g*aEB#yX2jH_Ax+E*WD~xZ3AnecT*&>QEdIYat0$7|eQgQo`_-k=oP3mM+m2V5Yzf2b#}Hf?naVg(Bn?ynIg{jCX${KYI1}6L~O3Su3@# -Yxpn>2PmzJ7BMaKO9(xz8Sr(ArE9^TE+V8Y)1uRl;rwVUinQOi$QSL&u_B1E3~K@|>a0eEI1~ZP68J#)(BAhULYk-_Al;&gUSSOXlm+ -ErkHvC%Ef!07Nw+DRfZ|$y0-6eo7)B9i6saD>D_EDo3jSS}pf(1-TcZh+cq^r$%uYWBS3o_Kj68G9loX`yf1!D;45v^f$;GpV4RyR}ku_lZt^Uej5yKh$`O -`3FPRXFe5I8H|aY8_OZ{99LxC*Bu7dXsS#8YR)7p-FB6<)p -i$7qb?Hh~0tu&6AmE`av^FUH-_|81ghR0)a%WuZ60s|eVLrx-%KerMb*B%cA}0O3&S8ng(d4}&z3#gL -KB4QMx0lzoJZKx>R~CEK4N;epCu>cs0VxiKY1gFxB~0|sj8x@de5JZ5t95Qr>2ula7BF_thjUo`wTpX -xubk`+gufl?0QsnHV1tC&IU$%Ck%!rU5#f*QOUo2%E%q0(vTnikB^0-Lry+Z#9zOx0v)m$)hli2AAH^ -fsOl3017z;R}W=*s2)dZ3tI0Vw`IsmjlAIwTM!+CBboA*eDNzP%KpJ^^ww?p4I!W<>|$Kwi8fOt_x<1 -HJ_U)m}m&*$~pTLMX!BiMQU=SmBrWz!1zup2^HwmkPU5BzAnW&0pAaUX>#A{2*vjqFukt5#VfuBiiUu -$l>b&yQ3hQaNGTaA_PyM)|os0L1n653F}#9?FZc-hHQL*^Epnw)D!{MVuBLWiO -tYh$vZvgOTLr%aY677FH&U+$lX`G%u{->c!fbz|_Z$|GZI6hxE+~S9 -Y)7-raq8`}yswf1B69e?CfIVZ|bzWJnhGjJa$jBCaqv=p{OGgMx=&?mvEt-o3s5=%t2Wy9(ui3I>&_uo0bAm!N*yBn>1Waw5@rCU|K -#wGG=^`g*AYVq~$r(bS=`Ns`;$6^X@psQy?RzP|wU;!cjkD)og7!h}{LarEZB}@9V_$EaF&=Lfw!-q$bFK-)MGLg;Ryi3%29WUUB -u%pChoIbovdL+9ABBe7hoBSm`v)qEh7R6jYNA%tgJ*!c?agPRS(U=j(MWjybr`+&k&!&7_-q)HC-ZTl -qf&nos`s8jIv-nvDT7G>Y8u$|}&J%F3)|`$7j -y#R8IAwH7g<(QobfEIU+DTt^< -D~G$~6f~=jWz(fAs?0R#4Bsn)-8QF1*V301>B+cEWcb5#q#I!{8@g38@)7(i`{5m5D*woG-fPwi2rj%UwtT1m -_&s!x<+KMe|nLNAIS^{&+GJoF%dXcD?r&oTL*Xv%TXV3Ri8@|2gV>3yUbwyBXx4>8`3`vTU_GVH`0yu -5oPZLk3gq^Wp{*t5!&=~PQ7?6t+7Vib?8uAM$qDv`&qoHva;y*AASRGU}^gDy%Di*$tw&V-L%Dl*)@L -8fR17TxV2+5ZX3Lzn-33WR^BE79vM+Ad#9F7Pg;6XzrgO7mj~)qThq?NmZoh^yjW@OU8i}`G)6WAYfrC&>wTIVFR6MMXb323pzsgrR^s1 -955_T})9${2Z6F#+I&Ba{^*2ax$^Y=pCseC%(H6{sauzc;J>?ga!{XFEWzhFAWzY9Cvjs5}6Rhs1D6e -W(Q@H+AT{wQs{mX2k7Hu$vu<1%#$+13I(MMZ$rSqM+SS*JG?47K*AZ5-9?7@J;*K!(8)#jCMn5^rj!+ -@B$JVRlC3c+^20*(M<0ca7yZO}hi@#H`MM4p}vts=w9R$1E%))WEpTvnvY>8|K-~ti|pQmr;d -1KVZ?4dKw2aU?g-C -ne*~7HH*gN{ve~HKO^l7Ki)C@yT2kbY!=-`zMPMWt?yp(6B#mbd6Iglt2Q-0omjvAEJF3ZRbBepn@9h5dKcI(?$qASr}|m -EQWFYHjJOUGVB#|H2IPBGm^MT`0wG`>CZlEZ_%V{*jWG#Wa_TfptZ`A}h7q~Ok -(56!z`GMWyxW;fF`q9jeXN_U*M}g~2@h(<9;78X@kQzzf`a!$dax;`hN73EQ?=A&*Y?Mf6+pkNfGwdh -T+2-9ifzN$Dpmn!^ZB*_)^&>XPY12to1OBEH!^Zse1LbGa?X5X6_XA3lBE@x8qc-y(I*K7Tb5h90`Rx -a8cRuUav>*F|P4AIzJBqwQ{-Vy@_D|&wknT7-4M?4O>y)d{1BQ5t^P=R}a16OopE7H45rWJv`?4RnH1 -Du<&H6;^^W>hlEqs9m6C<*rPaEr-(P(>3lD5}(xNo~oAiQNkiAOuo+fw#S)Ml8}o0ck$;#uioDmuaHU -Z$o6a;n3&>d3aqzv>W)IW;XusG+!>Bf7q;YZzEyVD%8GO_GInj(*m|3z%VJN@;PuWjj3oVAo!QXir;P -k(s04ey1MbemsL3PalQR>CRYx^YCpPx?L=fg8Oxd*LTD@90F0gO3NEqGVCbFC78Cf>Gq7!Xclei)Hl+ -S_~F7EJid%)0&#nGOz*l5SqXIpl43wW#;wezL$G-oy{;kZsX26XNpC}VR0+E3C4C~d>qHDzdb -FPG1CtYa(aR -0)0*b}+}b2zI|VGOpWuKCWbYS;kfa6XPP0VO7=~@A^z%mQ!J(^1k1YV2!Pn{&!YmxaL#0kM?`9%Wur7 -92ZylhHd)b&4?R04ZVN_;je;c3Pq0KIC>iA*7PcPwiAos-kBcGdtb?5)!e?Mp0Ej~EyTm6xqI2q+Y@M -bt~U$}lKVEQ&W6DC`n>2SZG}5ZQX0R4XT17s8-MkFrs(Is*N5};j_sw|s=W~?&v2{WPyRddUQw;`YpM -~;#PyYk0pK569_>I2&hSw}C`!7&S0|XQR000O8HkM{d4@<{5z -Y72WX)FK$6aWAKaA|NaV{dJ3VQyq|FKlUZbS`jt+qe<`-=BhTu#lA6+T^YmpbNM_oA%lOLGRE8 -EsDiLM@y8KSy@y`Y1h8C-@P+@NTeitAD1f%)CjURH8Y$i=SNbd6nm0oW!H9+Wf|f7M#z@XtrAt&vdsK -mEbRDaC2IG*61yF*ckbr{l{NfSi&h@576d*e%H}PTtq_%RqJQK~R*8DYRJ&k@oHZ@^pr8C+N+Hj2a*v -fz6-ZiWmWDTJcF*cUNXMl3!F#x+isfRzr*+{7-kYBTjZun=T8&7wf&(3|3wCfM-_!h#?%20D=+Sg7AM -}s4Z9CRxyjCr(Dpq6#SFPmRPS3X@_%q`wV+C*NwqnUhR9dh`vYaBh6Z>bj7x%3AP=C*xw{QMt!Z7gV` -$B}~?CBlL%viRQqH9(}+hTq!78qD2$;L%E1(iSQu{g_Wx`#YT7K=q*QKiU7(AfGXwto{7#N~3S{~`tH -Ehdfel)_2#sw-du;>=a)LbF(JDncbA74QQeuL&hN#BU9AxA;TMI*(ITwDL#xCg2OJLD0$Pbi;8M$v+mP(8fnZI;D~RppAjrg8_yy?%Z7U>#vZHsC(bSu29%N!o -M!e2bnBqKBbUpbOHc?)Q`;rA1+*8ut(J6RkzGg8$c|YYPhAidMmMnj_C9Qmud`pp_jP5rC1jtJ=-Cv{ -Ed5bjzw{W1Qrq_dbe}=jhlO9lNF#DCXzU(Mf-yj?C!jvi0ZD(Mczeo1a+@3O!HB$|zZhoK|02!#Mg-n -nJwivh8Ta>U+}O(w5x9dc3Q|mR2xJ&J?a?g4Ckb*6gZV)TobkcBQ%p{5Q|%_2 -dGOQY_FY{aG5?#c?Je*Y4R9DvyM`r;VKAQ)%{46dUp$J-4|?Ur6k}`2Dh8`6!IoICdsc~N&+3-kGpTS -@Ov!JLPUMO#X9Br|HbVsZpoBi6h%))x3s?rRe3td4kbBymbHHqrG3T;b-uzZ@NKeS*itT8A#A3+->g; -QUUrWi@kGjke>G(<5dvEy{a9G|#+A|k(GZUeE03%n#2qv-hS+XK_f?4k^&6Lo=G`LEaFZLA_8wB$o9h -Waz;?Zp&Av+<#n64M7KErk4V~55v2VerYi`6-YC!(A+b*9ee%{6eu_Pq&Qi9NJp+GyHP2^Ho^@J3U_3 -$hJGyjgjZB+p@Up-4Ogua4IdJbW-<5<=cfhCPZpFA*b<&<0vUBRM{7 -1-PFpv$|SDo6bs;44{1-0@N^fP<&SL`c7@Ew&^ewromvu#S7m{K`@Mk4H>`(*k7_f;f^ESPZ5M-YzQ{??<5T|uClAgQACjDg^ic)QEKdF2iUdLw7Lo=b9TuSgz -Nad+oS&JKZu?6NmSqW^jRi;8g_=AgCJiV{4ff+7g#0v!hGN?>e0<`7NzYSJDfYWQ~A!Bmm@syIKJ&6l -7=%l{_a;Z?dFTiq=QM$`TepzjWPab}JH+`Bgr49wyCCb0GZxd?(IWY~A!SC(g(Nzy7zJ*wxT@dC6JvG -8Yc~|91}bU;}}*^-rQ^&-39YFv_-l2MV;W)B|txTkQb@1<1%hGZz0{bgs7=`Ljb@Fk@L&te0Y2<@;Im&oAsIfu@n8Yei^n6U_L_5kk(Q``sc=U1UKK0odG>3uiJ!Zq4hr~R|hj1Y9j= -=>}@ya{dU!}7mv( -`NG=qk?RB+%V{H*&REYglgkKA>S@1Ak0O_3WcD(XlKPubPD5If;WbOv>kR##Yr;uFRIYo?KCU?_2x$J -z>t=Vs}-+%1-w)}1JJIQp=wg~XF!O$i< -*7kWRwiqg-5*YPkzGRl=e*PDeO&;b3L$4`%{OG1Df*`Bo&LQCUlEH!NpZIpzZbF-tPU|`yoG%?PDIqT -*@9>|LmvrT)fx3&S$xHa`>H>Gxe6T2|u#fcpY)wY|=O~5_c(w^PS&Pdb86=N&n@qnlP(_(|4_SoS0d{ -^Jq;-Q|NFXCPT8hXL8CNcU}BfYZ?AI3TWP(jH=3SM))_z=hk=v1@UM<=%W0 -4)1E0KF$Xf%BjC_sRXghIW*R*$wqrcYGJo6za?c14zCX*Lmi+QfG8I9!ov9g)}MU^Pn;PZ!Lods -^v~8bqGXWuV0uVlZ;Oc`)WyyI15}{W4Cu7ea!wYw`!){;}J-r?+j}sH@A%9borvo91GF*&G{s+3@C)E -7dV|`SrVR-oDb`@vaAUk?XJCzWdeJUw!lLms$u_I^^gZJu&*m*yH?u{pJSDML32;heR8BKod2?!r3h$ -FYKWA_KFjN{18kO0bYr7aGU0Wu^idFSF&Qwv_gT2MVkO$@MN^#iJhDe>Y=G9zJSvQ@7m0lR-ZeRonR{ -Dh?5Yr;z_NpJ`&BnX)t`AqN~3fM}1S;;C>~xN+r$~-IWcAO(L5EbDiOCH)(?IlJ3306L(Xu?#2%j9CU -<2RRVT}x41R#^nt5p*&ZKRBEnapWLM*mle -IxJSAvsQ};HAtR9>+oTCh&%B*vWzkQSfF*cCrLLMOM~SZRG;4hr^R;yS6t0x%6Sxli#*W&GtfOkzeh6 -&G(@bC^(0U#en?w(Xft$H96+jp=ihT^bv|^c)^!vHEV@BFJ)P)WSOYmOm|D=>E?_n?C?fGAqu*sIx_z -T;qyG<3O9KQH0000805+CpNv=YK+$IJ90G1H|02TlM0B~t=FJo_QZDDR?b1!pcVRB<=E^v9RS8Z?GHW -2>qUqQ4mB&D*@VcVBrF3_bJRv=A-Il%^ahQLU)%|;Scl8WsW{qMV@Nb1ci`e6gsy6>V!eCrrODUlsS_uf5$W3iR9u?6@q%OJ6``)7P8LnC9Rb4)6143XNB^Tr@QyvUZZ)pwPQNfOqRT -&MXLBeY$TW1kexiQa#raSRy#p<%vi0tsMILVYbk~74&%XSHEAc(%(Kl+`j9i(`Q -!YLMAoMo+!GIJTs}lic_trRE$v7KBRVc0^r4;cBy1aG%{mqYDV!Ru=d<}b~N0kS-~OT*=&YHFiDoK2o -j*~#;k>DTG0~9Cjzmoph}SyqcYoD8bbRWUCs!6Uc7kGZj&u|hq)nbj9~k)7Z4Mo5!h1==*bhwM5QSQd -Vl%cFnM~D0EB@uf=d!8gBO^!MgbBmIvGOdwG=zD7Hy6;4#f#LD}ZDDGCrYm&aWhx8PS|=;k59I>og4& -E4DGYpmL|+>*DEP<7+W%;AOxnl}f#rA%;=v|VmtF? -vc1ot{GnLEW;g6e%(v~)bUSjA;eX4od$YLn6XGOgXeuYy_K%a;$@TB)pk9RFggB+7NjZ4kKb2wdfh&avTe8m$hh~FnO$ -oJ5!nT}(`skWGy+gH|P_PI2EEl@d#u&{2BHA@j;B}XE0tW-}FbzlNRVRZi#G@ -KBBXibu2q9R|wDUCT7h`95}>oQjssy2dy+&F$ul -;PKx8H58zD=A#AlEk}Iq)0rtJ%(oquF4(3+A!jh0dbS?)72VEN39TlLdJ>Q|t_x+xcf-6nhX@S9T1xU -0gPK35w&<5<}Q3?5zkpqPj+JW{oiP8d(Ag>Buu>=f*9q9V757C2$!5Om!j>0o?+`MekYT~vnF5RJmgh~ctGh{Ib{*}VfSb@(!2S$+=L=gD8o)jUru~39sZdyhJ86rkR@r -17W*83@%4u3}sdqG-IB0yhf@F%4C4Uw;kzA2jcER;eUHKqWWAYKE2r2+vhe0dz7#oy@lkN77c?GM)q` -_Yoz9ul)=rqtZXmEhCXSqxM=;e6KzACQroM&-!t%6tKG$^um$XkT)8;DKUcSr$>EBwDgOE=!v!Q?M&HsLi@x~bh=g -;yt80a7E(YS>~VD^T|z>kIt1Po%Ai;>#mOu`oA=W*Q+K;DoaUQbKj=gaq5`7ZDY#Le6L>(% -`wt{VvJX*cc6dp&umIKHx9SLQ#yJd8)6a#yM`-;QdVCp$Q>^}3yyz~o;J-r%Fzzfem91QY-O00;m!mS -#x|Qy(P!1^@s97XSbh0001RX>c!NZ*6U1Ze(*Wb7*gOE^v9xSl@5kHV}UIUqQGiBp0^OXJhUbPp1T -^Jug}IkDq1i%PDvP*(Cni1db5MrI`|)@zxs?PH-0x|C(~$hAm{-Hzv}RdCuob~3u+RjuQsNQJgScYmI -qp5NU~+4=45^=&5`KZ!goT4T!XI#xm#wMvBUNrC0bmZNP^UCFFfp76ZLWx_N0kBD==6Qj`xod72n)|+ -T8sw-LxW0HyE35X>b*P7jJif7|SXuc=&5rfZoJjRzy=Bq;OcqNM*Vq4S@mRv9}d{-y|Z^7p*6Deyf6g -mPRDZs73ia>*wfL3Y^0vo6vWnwSi -)=Mz@3>lP_=n6s|SE?30=!(}_wYcD!7XGV^$jU_%uWBRMs?IW&Ne!pBa>7NsG6*LVJlWXjMZsj`d)Op -S1VEuG<6^v4MO}vPr+yG7UEo!no0yveo-&M~6Lq;_c~Q~o+%vx+arDep4ipXpN}f5p$poY!1J*prR4{ -HWZpa31;I~HmU1dr@iO5X?+Qo0RAWq@lowtyJ5Ks;4T5y$YVoRtPSr-y$vTuH=WM0Jv>Yu!$b4u}#Dd -Y`AD{LW_3UJWuAY`(YMMnSsQ{$R9Dj&2IYs$blUSPOIWrR;ccD^hm*AB_Hd?D0YK>dW#hAh -InAIh86I#NGLbqu(4G7T#MM{9{H5`R!ayG?P9$SlCC|-d`(88P4iK@S=0CWGhjyA<6 -1*Hij&P(Ju+}X2W|9+<>q<@J@y&4=n7itUKi?yg6!dm!4uk?mx1ibtTo6_TC2|JVxvncYkip&~-5`YX -LB7-diS&mu*(OF!7=qvzpmyPk;bqg`O05i>ME5Gc#uvr5k@aq(UgE?*HIpf!sz?`*}v`6m?SsqxamKV -O5J%12;NQEE6#&bc3LprQ*I9YaTzPG=SBQaIE1^W!wRQqBF{7!kr_tzmzQd5NTM1;7-bdLpRuyzTgI& -;XjmzHnX?fL2T?U`n9)zw+b9-%^UMWr@Eoy5x42JL~t0`hFbb!;WVpivm?ZG@jp=0qX_!Oh-+VtUg-d -&m+}o#>ZEy3Ax12Gd~j@V=o?h9M>m%frAzNBBGXTF5-~&y1>a#g^;yza_XA=3 -bbfzwc5;6*6gYe!jT=`6KL*qtWp_L|#FmEFlEdVBp>N$70{tddh>W@>IAiZ5kl0h@(s)NvP#S2D046Le|y%nL;HzUhly -KXy{cx?nv!JSqKO^b3RVGUD%>4n0w&_<%UUm6DP+1^nOE=Y}ghQVp8d(MVv>g*lyvV?&+L>&* -A$a~mJ(6_=ETpDgZrjS0P?OHl^bLzN;$-w -Olm?r>DRcqN7-I>-WKS4mgIsHI2PNqpZ`Tke+r>m_q%TOuQ-F>B^5Ge*>^?OzOt;KOwWtD_T#R3z$;G`Dbd^%NsAuKY8{_?dU&HO9KQH000 -0805+CpNvnw&KhOgJ07MG_02u%P0B~t=FJo_QZDDR?b1!vnX>N0LVQg$JaCwzhZHwbJ5dQ98F$5OJhu -8G;a=tIy7D}O%UP~#*p(yq^7As3WN#0!keMjI8QlP5Rp&Z`jDcucZ5;5U)v|NQ` -gIfy^j5S{M0B!bh ->O?-{E4u%Dmvl#rY^jX2eM{e+`SM~^h68caI>pCZ-oun3u&cfAjIJ6g6YXufv*JkZyWH=mBIM<@6gFX -O>{1xGdwIIBdh6Wukx#Ql~5*?aGC?pB)pc0Y{osk@vtYw2+p9>>e2WP|E7R}O~1kCBCB6?ctEEKv -cXz$RVCUiUYZ`6e7__Hh_oL=o5U=JwRXK5ojxgenIxN3EQM!T;>n7pWaPcgco{w@jQzynNBn5wl>Q$VVa4f+ -r9|uUcp3H;124SZJoe|N%8hizJL&Q-U)OY>B(L1$v4`+VrbgN33;g`g)i`IWq~xW%5Gs&Q;uRIF&Lv* -y>m&7sGJwBpx=KA1P;fh5R6Ukk`Us(Qnku6+-Azb#KWi0Jy|g -b-X#<5;l`u^xIH0RVT_{mvNZD+cL~HLu-7^_+qH%-!>|}J;?te{nobRgI^2a6e9kRWHI$4X&W -@dsC9`O)hh`8+$ZZ&CPpi-<6pDdSG|p&AH^-M(DkbUFd8v@DC-C;DIg -)LSJlU|uy>sjOw`R_>Ax^3(?Y1PL{it|6T!gRB5P4UKVNmW{E{+0qky^&M0=VK@%fi=3kWw3`hALcE? -0;_!Sy=F|VPpGe}bm9E5KW&s=0T-^ug0{uYk8PXIe0yb*+Qn@NKfEL955w|K^f&pF4Rs5PFDfH6qbti -ww1vt`g|~{j@dmjc_GsvSXoL9?k^7AArpP$%fR${6^5eZ6pzk$)qN3M=+sM`2vbP~LTv*(`w{C+M|ED -`D?(|UdeFEqaLhlt?(QR9r_K%f^y+=5)K&1w6^$@Ra=U-#K98c`KB!&liP!%o^@=yiC);kGw9r;wi_q -=nO4fTCWacUb$^gmEb0|XQR000O8HkM{dmp60f{09I4F&+Q_6#xJLaA|NaV{dJ3VQyq|FL!8VWo#~Rd -F5GMui`cnzUNn1R28s=ob6q8wCqK@U1_DNs@_)W#cCCqWB~V=IJF%({QGytb`mET&S5L{rd&Xc8{#F+tm*=GTCZ%V0pf6Y@;F1nK;x+TgEp=$;LwN|4$}iT∓CA5E)X`fD9S2$r -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 -W?$voBS$E}dOixKOv_dIBM|@qnkpWFWMz`Qh7> -0r<;n~t9L^ULAcLl>rYA7I)8W!WR0aQiSdFt51D%e8|UUApA5w?qL$C3cq?HAL(ozY>k7bP3XC^pQL3!9eJv8D7jW(GsvxY~PJFUT0 -zj=)=He1WpbMJrRoMa9=(*a}8s1(uA-p<_*fBY64ZKc@Rf7UJC(_#)YM;&~ -lyMks%}c!NZ*6d4bT4FSV{~J0Zf0p -`E^vA6JZp2?$dTXmD<)E01Z^6zeINFsiY~>KD4Qvn(vh^iTQb7}fgy<%2yg*V67MSi{knS|7ytv3vb} -q|Nl-3}1ZH}A`rSPZp0M#U%ozOhn4he-ESa->$=S^|UnVh&lEos77p|Yg^Kjt?p`VM7Y?TC?hRRd);wK>Sr#U-%lbKjhUfQT0MC~^ZU){P=I#4#Bg@{FhVJP?y_G=d0o -lkpC1y@PuS=kV8y0~Ul?o`$nc&Ve4Vhb)=rfH9|sVUCCgiN9I#I0xhb6e8}$TejY$>m(E7kRHhKrcA!{aw5DpOYS-0BlZ_3dFaFK^_qJr3uETNw%~EdGg<;C0-#v}lqVqdsWb}NQ0% -)36(D4r^*Tv&;C6Xq9lZ?U7kev?LSm2_CIdV+<4DVZa14NVd6*$EAj^6)i$Wi{3n=7X7~_2)y{0iN13 -;wcX-X^VWozz-^U&|GhcwJ{9!r5R1Px|?><_v>vQhVM{Tp`CADv%y`|n4rdv(P=b%(?5VBGJG*r)#Z9 -UJ!Ec83>ie9gx1`Xe^Fz8u4lUWfGu=T{#t`h&Ls4kz~C-(2;37bbw~OZL7uJbwpYyWjV(`r{v2cW}Wj -`{O}xGy;Jiu)#I!ee4a!Z1fI*R51I#$FBO_@2`67@_GnU;r>nUyx+aT)i3(P-ualpgY)absQ2F=017- -}7v1;Wx48Ha5raAE#;14P@#q>>8^WeWAFjrLJG&fSzh_t1BSQAW2=;Z+9d{Ax&F~r!9d%${Z~U%@&;Z -{q{5v1_uLn3D79J1bYljVbZ?F1qdxP^HPQAwQK(ZkW{4kOeI;=bFk8sWF4`ToZ^I<4}1So@^fJqdG$% -qNz&>OjJCP68(Bmz~Oitk59^1d=pOAyfrtcALta`h?O>YMp?& -9fu1#2O65^q$87h>;o@J|4jy=8<>D|ML_i`e*OxsDFVhxa`B;&j6~6wknLc)B5|Z_ws+H6a4?x%Rf&i -&;Qu!;DCPn=;$cmb9V1VVK4>Vj&mn#pB^!|Rsf`c=&ronU&2Fr7S2hDR$?SxsTYD7`RGL(-b>RYby@= -$;0egeM$!VH96UW`&(aoq#w5Iy0|{d`PB;9BtRC6<`6l+sTES<)GK_`3N;SPv -lO=~m!Kgj6#n5vTr=`*&CTo<~Rg(dX-&_2~)iK+Hqx7~`A>|8E!j21=mi$Z{|Cxp>+Eq;g{jZSWqbNl -*1{9>H8NDH0?*lLN{VVGP|RdKa5_r*wA!_AM(1DVv0OnCUo33Fv%bbHeViD`XS}jQT5}9yE -0?^|XnQeIgfDoC_SIvp8p7t)5+Z}fHeNKKD&-};KO$M-;9_Gk;_>2#AAVqdqXSH(n&RT8tF|3I!JhPA=FOVu-<{3!sC8#E -@!oe0O+2+v`8QL -4J4{_C>!&i+KILnedI(GY320ukuZX3CUZ%mm;-ivfRa`sNup)qe8`j^dJSc7!3Ka&AXD?qjF|su7Ur^ -unsS^QpaszZ#q3GFHX%s>D_A2!|&;)*DZqRDFU-FuFWRSn`V-#FHgmk`K5zfA)fTWmT -@NoB0e#M%JD(q3wBc_{@b}`ndD+iyeSCj#(fgr!#;q~q^Tb%D|F*wlq2PtapCoOnj5p+5XY7A9$68>l -TkMqnsxhrXkXrtHL66~YHKzny8Ye|^2O+d8<5D(Hy#*Q?1YEZbwC -am92B@$XG`2RRwt5u{Fr-KZhrV|RNV_&cmVLU4UPk4odhOfQlh>CfjGh;Tm4-T$e%@jE3~9X0To?<2J -5QYU?d#J?X&9Dq%=*u{7fb6;!t@Laa2Xa>oD3AET}JF4+>r0V4yV%&eaTbL=XeS-odR4!!BYFVFGSl= -aVg%yEtN$4LKsvX?4=|a82-U@Fp_xQkSBf;xu&p6su4Go21%c%mp4qvmn;v{cPyWwvm$u<=1K{@X~1R -06epD2@d{lrra`v)nZdK;4>8r6j2hIl^cYxH@$i;XoWK$P+^$?62Tr>p9zi*TfKiJy*{m~=q*s&jP(1 -bt!L$Y)0$6$m&JqyB+jW)EG%>uCl_Vxkbz5JpXINX6Hj+UM)u-`L1rL)GBXr`Fj9>x2s6|(6+Zf- -N^=&;RNbK>A)IZ~#Mv}W6$+g94d2N(Yr&gCr+A5)7#WL%W);Lg&pmU&o_+ir3gr8C8X~vH#Lcbh-BFR -GpKi9>-J~6lCgms)n+WqB7*VoO$M^^;WQ#xR6pQ4h%9rFF_?SI^r*3q7$lH^IdZNbcLdV<1LpfEXgqb -V{(GHEUGxmCAIMWiCps^(i%78lby6k=GttRCMG=TcrOP!XRks8rEW!LClA#1p%BP@LAo9I;OAd{0DKr -gbBR!L?PIYx#xrUY)dhoFL1*I4pW|%({8n^#$@Sbv|+!) -S{N-y(RA7p8mbrk}8LG_oYz;#9R -bfzR|P>}^_PvIy@ucZ#C7cat_vy~9LJroUmiS>Ud1DNgy$^XCF+iEM;(HDgRE1MH|GRV+riSOSBnsxG -0K6g06|$DCb19O2tTAbp4{{2-pzk{fg@Ugk-*Ik#E2vf#_A7W$S_RjXR&s? -@g%;a3e0qEg@)=c+F;d{df%-Az36AqB?%G2z(@>q=+13VvM~iJFzvDp6H@1B9MkKrd$@CM8?a>9sOZ8)Iu@yytJT3{P6m`Ac1l98O{?tr1py3IHn28BBW@j~k#&WTra%xqJDynNd0VTfl -AOJ0<_1@o%f1F$(^xsOVdIVaoz<;jMMM&vsv@_iZzkAOMaHe -IT{YX7bcyj^fYq8qH<8Mb>#ndXjU$(G~*)9XEK!D~2EFFFEsQ@G~mQaNlb*P`v&X6x)#9<5&7(9jkhtWMvlDtB6ywxb^AlUf)>*j%B%Qi(+K*}OjJa~dC7n8m~+KS0SX{%@3e5yw{Pq%417W$P1`6)82QDq -02h7&g6kD#6bNJkhER}T;hfCbS8PwT9eFe;KE?mk5<#EdVI2{E%#An37E8ueS|CgEvk3dM -md+GW;TTNJEf}#Un_DYA2{V;v^k(t(V#p&x8^ie3TT;@H-25Q{etN5u;|1PTNNNyrB=&;DYF(p4_ulp -)#DN2`)T4-So&wVM7;^=gk_L~aw*^WGUZ;7v6UxJ6V?g7hLEau`;}_}pclcn=y)#ahwc6JF54kE&;dn -;8(H8wX|h=?#oK87p{yt{#xft0Xnd;9UME0mSTfo=JRrI)udNNeVlrJ5U}7uH}?ps* -5u>wH}E0bhQU?>DSdejg^Atb+V(lQ&LBlx3Q1-Fcn#GQd^Q5Pq$VF(Nc9tWj9%uDsZTt+--GbdX~~3w -yq(>ow*)APJapX-(jdcw-Pa24>R6(fcF}WSof0`^zv2w4^84@35wK2BWQIHmZ#t?Xpjz3@z6toI-l>l -zUldu?S>-=b?BprMz^Vii$!mg0}>m*hAFccXF1HNO_DCOS_|&MqRg#7tNR!$>VK3 -$;bCHA4ohmYb`X8+hjI)ze*aa>OF=Q?I;dmXN;mgaEm`WyQ?wcoJMz7u@~&vJ#HR7k9bV)kj0Lg*$g} -0tju%ohjA|>%4=v-==u+J1tw-l2(yFlRrxg+l3}MZiVU9GmnLu#YxY4?2NA -DcQ8`=-Pp(Y{@4q<@JhM{ksZ4Fb7fIDoPY*>~jYq3s{&}j+atGtl~(!1n=-}AI1qZL^tXf}-MjMrX-WkScBiZg^%{)YdBXcl=Q4w>cjw76>1e72iN0K -Z@h1okuF&LL}f6Z7kUfqSUD5#58K94J3zINvln|gAyANQDHa8@F@%O&ihhwx6v+q>zrixz@3w#^$y`Q -A7td0#9bTr+z-UalWuPb{9n>{YWZB}?ar5l7dhCl00!?R>vcEv{{1yjKP;^jjv45S^7O9UhwJj~Qvf2 -J7i0+K2Hl^cL?Xe?+WMMGu=vdaETE{Ai#~0Oe+iM(z42ps+DU?6IvG!8+1 -Me+z=KZ3(6Un#x;3^JKMJGbcs~g!lGi`-p&;nIrRDf7~G4W0M(?fE{czUeQQ#w6-%l$Pa@`@D -XI8cuGZ_>NK#u#*J@yb`se@*DQ?U*TqCEH?oz81Oz9A~y*(JUGTwpOD2ixbrHWroTv_Nb>4mp|SgqDR -Qi;u$qsFE-l^~GB$s~2eHw-r9{W77tfv%`fsZNhq^ioM4E?;h1p;s{)tF>0kqky}B=Vie|SL=nW6i;s -F6RQC_#L4V(E}q`5SyY`H0ccs!R9){dNz*6tJ4LPV4mJY-_iGvi!l@q~LSYb?gu+M<))d#> -mGvQCi1IeON)~&N24?`0pB;p=8rzJr9?_(ZgsXn`tvY9G(yikMxw569_K;|vB6*11xwkqXlCMYcqHGT -9(huy3_@@-X1FRKEJFQWfyEl6Oc9Hw;s9lim7AdhJ=8GG`MoRKD#Ba^?Z}#W%oprDPMu4n7l>i85DBs -Mtyb`DZ?e8{2bZjAc3Mw -n+a|I1%48dVnFu-wa9IJ#OTu`Ha)hQ$gw#m$b{M|&n(f$gtw-S8B}s(PeIK0M6iiijfBU@%09llY}ko -yzR5OI1R&9bJ|CMOd=uP!Sd;s-Z_2Es8!F)u$W!*A&g6T9PUi#oNz@zLKJ4Sy=XWFx2zqqTkt4 -DAjtYb*rXTmjR^?jS{7nAnMzX@J{w$Yf%v}U6EB-$QM*UD*oLDfSjD!M_f^gIgmyDH~0JE^|CB7btU7^o -^Q`X!b_-d`zxW2d~J0#?*_U`zi8P)h>@6aWAK2mm&gW=X0VXS_iG002h-000&M003}la4&6dWMyn~FJ -E72ZfSI1UoLQYODoFHRVc_T(96wFNzEzN%gjqjtx(9!Eyyn_QSbzDbQA(A13bC7xZ>jzb8_P26>Jrvm -B2DeItof4Ii*-G08mQ<1QY-O00;m!mS#z4PBLxb0002z0RR9K0001RX>c!XZ)9a`b1!LbWMz0RaCv=D -L5{*O47~Rhxiv_u=`pIDnT;t>f?af5ZugyS5M}WLx8h -_C1GZjx=dbmq-xv!{hOxgLr0{Jaqu^d=h^qX+c&Dz;78>gL}2GM`7r*7bOoiPCnoA3z_uMd2ka~IauY -J80IX%u%Gv6uY#Y3*Q=bNou?*lzw-s)8TT!|v_$m?bLjcLmgz;aIEi5anqJ9PP&Z?Qn^DUI@`I6(u*) -u}aPoGs(!av?y-E^v7R08mQ<1QY-O00;m!mS#!MWn!qV0RR9t1^@sT0001RX>c!Z -aAk5~bZKvHb1!3PWn*hDaCxm%TW-QI5d6<6R!9h2igExXF4139B_Y{>OX5)5P@$@KuOA_?^JuA5f9~w -gj(5k7q7o}8PFS2%f$vu)utBaQVO*-buCYu@CY7Yy2=r-~l#Cxus?p&RKukh%5$zimD&={Dv1LhaC?sn+jrv+&oF=Jt7CE9y{kWxz$NeeoNm -v!|49aG&zt?(SbuS+n1WiWbtD1l$X!V572}3A$ejyLV6V%BTsIGzoncOs9;M4QB7J72fPU32{dU1_32 -5klEgy7rH#4=NnX((5a3*;LG7lBg4n$^-|Blawb9`v0hAF%O_nZ86t%D_!Y-F~1T)Y)^!n{;gaL8RlO -gS|b}Fj=2=F-hpwU!IpbuZOpzmtya*=*M1Fl9wg%0yL<&GptL$xwpQlBmaAczb-I_!&Sj4zhPiE=pMU -VT(B)q4|hAI;Zrh836p;OeHQrkVLaHEdrLn2cRO@bar(w|y^2Kdh%DL0`v$eS0>Ye^VW4xCN41^th~F -v>2x#;TP)h>@6aWAK2mm&gW=Z)XGc$k%002r9000;O003}la4&CgWpZJ3X>V?GFJ^LOWqM^UaCya8OK -;ma5Wf3Y5D5xNK&-Ypr%H% -ht86HDnnRyGm)x_{ylVwvhSv*{s#`AJ#R7%M%6lpb5vUK{F&3a`jT= -kl@vKI#T#Uj?_hv3WZcpPXZ_B#fqSi$p3P=tJkV^}S~10=d~thm=J;n>g0KSCY^?#_AfB;i>5k>{o04 -#M{IV9Z$VwrfjsJkmQR7U>^0nEh4e0RQJc|mI-oW966$<8cX|tEyoO}@&4ctPp{KQKW?C-Y#WtQ`N3n -vsLWEm&PV%Ap@PanLXhaR71Ek4_En{N?8tY&UotOIoyJ?=-ehBQ~Z3S%hlut{ow>wN3k6i}hRK<2MUE -l{pk4RxR(VnX)AB;70hj9$tN*iJGkMCf$OO|}Ee3vPKFo$^oZ!A40(HKaod2a6kV59ENvpQ60wPk1n6 -QhM~s@l1rEGj-PP9U{7g&1M-9f<9hQl~=S8)5~=dUIml|i{@+g!9?tX!+MAM%;hd$(GCCnd*+3S1doH -@?jG;XOgOcg$b27BmqW*=z`a(#_6xwmO<4TfmjwPUUyhCM -O8w;Ezs34>TU+hu3~#&5|AtE^9)d7++gEjYK?Ui6~~f-qES*KJk(D4vmpb2Jc2O%!#7+w)r5@5Aq$y2F3xfsv!j#VDHp<;i%t=dWg7%QsP7MYr -~JRHf&xeq2Q*JQWhbVP5OM -%(M@#uo*$7?bTfYQ&X?v2uqR6iq?Dow^_!Ls_k4^JHkxZ$&X+{uGO?HZvMcQRNcU28;c}!mzVGE)(+ojAhXI1XMa -9?p-29rL~+3qh{y4*nSqmW@K_c!74PWlwgL2p*^2=%I)nFgeHe5(6?q)>47%%%;RVT$h!>9Sf9e1lUA -@B1J?niA|Md+0m7?Ms9)Fp)J##w3 -q>W-4g!>K|c0yqE{{T=+0|XQR000O8HkM{dTxrr7fB*mh6afGL6951JaA|Naa%FKZUtei%X>?y-E^v8 -ejzJ2Z);5XvABzZ8z0{)25AOpXu}4a?zK2zdq#Vhd|MU+^{1#@_#0ciYINpAD_+-e*9&Y~ -~M8O9KQH0000805+CpNgUve3TX`h0G2KQ022TJ0B~t=FLGsZFLGsZUuJ1+WiD`ex8z&#qxmMGe#PUR)v8CGTxHGmxLnKbeibpU2sna#dfA8+%L4Xg%_H_ECH;GIFyNlh$zOdlQ$;slC -__-^U*o(T=Y+F`>HC*YkzFnNa>|(3ro@Lp#Yda;fjFtOFs+RE^Evv2-nR#Cdr=osrMi4b_wruov{O}8-Z(Z0pK;C1aAxSuqdPp1vlVK~D}Z*(1455k$U| -L8UO0qX(PpTeESGf)s_G$?_!#Qdc1cRhRKUUV{bKR@hab;hoM*4j0Y-^5m --`0zTB+qvt6keRzv3VLE9xZKEY}Efkt}|=eDUJ^<@E&C>Zf1d>Ex>?>6d?4CP4ikS67#>uFs!kmsi&p -moHxIKX0|YuRb_oQ!NUV^m(8Psisc~ -#D4}XTH;wx+3j+Lp6p^mhd^^^KN1vJRVBZfrAto1|pXAknA2ksDciBu~-jp?0$I*-w2}AF*&-$s -0aDjhtD&+MQs_Lg;qM!1BR~**&j1F~dvt?ELjLG9*_?idbwb6_c#2*(5wHu_(lrjU9f4eq8gtSTnSDq -0U~)8eYJEh0ZXL*a6G4c_Tq4ej0WSpgaxd#b?hk;I0{2RhIL7CkQ6l5GBYrS0Gt>>gi7E;H%%fyYO -V5g7*lgR2WCP^yuAf>|Y?_m->n>}fK_M42)J*N;!YmAAE2Xxn?^N{<5TyRre#yA=-sTwtok_(*yEyx* -Kpv&5OSG&ZUzPYn{%F#SxR4|7(Kp$x}h2N+ta!NwxXe`eP^h+a8I3)NkP>51h^K*e6){*lZRt8?pl=jK@q5glOl-FzZ;2XLKpu|=lXZeIcp!EpK%L9Rl -t-pg=Dq-EP08Vk@*pMf&WK2r -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 -34Mwk9j`Zg@=?=>Jb+rZ+=B -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 -HP^g|{k!I8rQ{k-lAz)MV$rv9f-4|F -RK|S7!fjzsBPA0NJEfFUSJofD#gLWt2WbcGXZpN`2E}uNP21$LtLT}-d?$DJ_V7;Go`?`Me -`_G=|@$pzQiXFm%Pn|dB247J82M2m$t+F}LNiKE{IpMP=JI4`t@U`mOCK_C*9t_bwx^(y`?5`!MI9b8 -2L|aB>9ms4yXN>y@vfy*pro!i8@*dek1kWC(2q{3F#wnqyC7NTb%QRY$Zhq-OYLOA=D7gY -5OA9wx>12oZJcan(x>z1~eDrq9{y^+}>Ta{>c8VwyVXhsPTKwJ~9s)5^PZpReeA;9_y^hLb{dCTMW1( ->maNn#^V~lJRY#}p_MWL$r_J-j%B|hOCtsh0ydLNWZ!q~V8@loWyU}qJ%6+0Psy_*3>u`2KB9!-^HCg -@b-7z@%H-2!@(Fm#9#fu}(=W5+akQd|%&$j0B!d=4zdCHDenPQPdEb_SWg(THEL)W2SToUfv_}*eKCBffbx#~Y#T1AI(2qw0pI?$wgXBXsHfbQ9 -FdK)7#3sOj_C$W7uB&CeS@vv85K&(Xoer@}%a&JSUZoU@kLu8^S9F>F^+)Y^I -&(RzGtF1{=qtSl2#^a3b<#X%h-dF8D)+93}7CgQZ(Hy@k!uDO`<3QV|5U5b1p5<_RRiG4icw22-n^8^ -0gp+dE$IGaJriLm2U7LPN!m_APR)>7w1=E=pX+~5hh%j8jiF?saFUO;Z~Xn4x)njB}8t-wE`B99hBZ= -5s5=mrH@4oahHi?mF>$s{m`bI5OQC!k_sz^Lj@<6*!x;cF-)Sg>*~6Kte2EE6^q@d| -z3=gi1Bi%B$_}hHyXir!P^>o~&4S_v0_7G3R8mmLNYL{M1FFyFlYImK8Y%L}AMO7B_@g?$VF7+3v>y(<_j11D$kTFSgYufVR+3=&XgFD<(atjG$pa>HoHhPjWJbmT3sGNwOY9D$Em*yBn -3n$5<2+O9ID5WIw&kNQ9YU7AEmbbe-%C4TNX?v8c8(!Kd%xWZfu|xbz6E)>z>3s=0j_TWl^gB9ak$%G -*GC!!lwW#(+eQ54Tf5J#Z>2k=f1onc=7Sfi)6J?R212HXaR1l1@xVv!(#C^wGe~YOb-$Mv6y6gdG)UeT7k$`EM~@zu}Y+ -OU7Cqs& -La>-Myn?|ACGw3-53?vX;P>3&Uwh6H1MZ-|9kOpO$*mWmNVGcCNud|eSCCjO%@%TnS>Sqn@&CJG%?{u)MG7x#3TB~!$$DwIL=`5dldKm$#jr=8Wb -!R5wcDhbIe$-&e{?N(M_1SGuD3uqfeDi9w#YBnEr}d>t9#R32)Mv?J_@i=G6TdWC4pvSKr%`RT<~EGU -y}&31UVzC(1_}F`KBo_DBI>T~)9ikA>{6Wx}_H=+nFU98C<|UZ`{}#2-la*-v#?b(30+K%;{?UD=NnQ -WTF3%gXtM5{!&BG!zu0x%!U@jZ^%}UAWlNYQ*;VyH9Ye)0ukRK<^Rda8RaRuRMona?Z7JeFMs-;pY^8 -qM|aTmwl))8y-yDZ5bTsta6cCvEhrS`Dg2A&lcU`dHxv!Ol}A7bMJgVkGY3R7)_NmM47c&dtb}tAt7g87XhYX?cpiSqkiajYdwvdhG&{%pBO|VOu-$#&Q^Cy(3#v8kjLHCjx@q-i_UEJb;HCE#E)eX -68%ph%Kh$+BROUeY-!+1~f^Ko2$PkfXi@d2-_2xL!~svgDQA=%!_b2L24zOzWaM6=oDqz7i4?#e?-W@0fpj`kmx>W6P_@uXE*iWNaFpo1?t -hodPHZhCoQL5Y02rV4tSs%!PfzS(DrI^csB56Lst%Sf8b3Y)kVxHrdSlZN)~4&g`1vit2oGdb+yBQyy4;!QSF%mp(0gNR7vcBdD=F!t7lBtVn2UR-i-YJ(9 -Mey29T^u>YsK67bgR#F1;C=gb0)=#-R7}W6E?WuAjZ%ETM%@|kaKHdM85n^=J%sqj#Ma5vTAnSP(HrwZdP -FgMYfvJb&K$;oUQP*HcUZG-ZT+EP6wf0T4C_>9saYze@dTcR$Hs*FxyomU^rMW_aYK}2w5FKcM(8d=v -Mjy-S6xGOy@@i64KCCM=d)APxNUO>C*I@1s*a?;0JPgn!ew2DEXUsjSB!lFSob^#()qXg2>R5J -?sO!1FLj%1#$heGSpLr|RwJ4hc7Os#+w_cesCXNk2QC=1cL0+qnWa0oQ^N`WZ{BaCauAEN=x{(3!(@) -P{zDWM~$K=^(sHi<{|HmKxFjYUl>nn7C^%(=3J8{7F-0IVQ_IZU#{lJ_JTpqc`cUrhsDTty4tb>Q~<( -od8fX}h@Gxq}=TR@&Qt8jenW0IBF&oU;LXbxE%D^J`3R60 -WbIi>jX?kmZo! -u4-w*>yy;Qpk!ubi8?qtfs`J^;DYc$naxZ>~(**BsUDMTL+KlWBu`azzVa^~JM+WC%c1}S|#qOF)90|!6%2%tZuEs;A?+ -o`(Qn*Or-F5A^DA$0G$sHNDGqv`Wi6^7b9wsm8U>@xyI$hgtRYWM|Ig)-+W$o*b!fnt&IJOoL3b<2w4 -lr*BlP!D=C^DGD<4zVxV$K$nZ)GFu_{K)w@9Wk`^c`lf#|J0SO4n;;bQY%xLEny0XN+l}B@UERqFe*f -Z|tG8W+c_1h9L9J517Q=O4I7%CMM9KrI3H4DKbmlGQf7;TUw@v?QsZRAqgUa=CKSvUKf{qWZ8X-tRc+ -&qrp%{J}dWPB)=?2;zSb6@`qwdpm0FXb$pbB=LNuo`Q7Bil>N2N$88;GqW2+%@d=98#d%`yH+Q3P2DU -J@hfZupiRsc~5z5*>SqzkcywC8OX7ozRzeADjL^3J$oXpn~owmmT#hn%z&&%JVo-^|J=%PIIrTlNaph -rRD$u7LbjNPH+9Cs*`4BAKLX<2Pd=bQA-=OX*N!J~PZ -4gaHvK5Q%U`UD%a$@d%LrHTD($p_v3=G;pLitS5)8fWhGI|N8dMr~mM+qDutpWVUOIziQ+X~dsbGj@0h$ -G7+zMsf@Z$A#|>n_io9db_OGvXu*=TT394Q@UW-aWCL9%M35POho6hom2xlpEI5Mh?6WcDfbVVi?sJc ->eFrDUGT8C@buDV=sg&%GsH`I9VaN(zRwI)lj^~yBR$nkarbSnYgLWLHO`fuTz+(bKiuOSe-M5Z2heA -(Hr_IGQ7}vU%bh}YUdKKC*N5ezD&>+LkXzqOo#a*L*0edZ#U({zY36XDDZUX*SdyMi8(aScGSa&V^~z1k@?KF2)R-1Vd-7)B%2D#PM>i%i`rW`hpC^w{q;3OBM4L#S7ij@&q`Xc}z6NQpyc -aC4ldAQ;3KiV$AX8wR00x?@ENG!YD8nmfR6y4(G*W@Qqsjy)E0Y_yd5 -N-y3uMJHh%kd{i>BTpqg!Yd~KJ>V$Tg>@R){!o+KTx2Vezv5GyG(b(Y*9 -dg&LPh%_Wr93&Ec**@X+r>dTVYMQg^D-)nqWGu*c**WpSN`;Q>=2&mlXd+Jsbo%Y(|7WidF -;69hxFojeRi`(CTj)oGem`hmUt&dzm`vv`$U*9;OXhbzAHQWFHzjxB1?Va%H2p)^<7*lk3Dlp?ql$t@ -Bwz4B%9=9Hq=@=O>dP}&7;D&jy)IDt-t@!Jno4xD)ZylD#N5+B<&tlr5xaNKEqVNK~b?f439;%DrOC@ -h&Q{!2N3E*LfPLMCiEvAXf0>wD+yFY%=ZK1oVgLG1n -%-tEEIOV3EbCPl0XI+E1i|Ad)=3?iGOOqpaY^iEi=uIqiV9pmgo5%r*-k1=80|+7EwL-68hgr~_qKE{ -`aBsPVZrYvTLL;b!w5vTZCe$G!>@H&oinKjo>6!=JQc5~sIkg}F}jRS`Z##pFU?s{>;Sq_K;;3A75&XHTc7@wRI90s*)^n7 -w~`<)iiVoViFhIV>L~%#L5`Zn|aE_?PO(WTsR!Oyf1~O3Xfe3poapk&Sq9-L{*A?|>)sgNZ;X2Ng5p7 -^?-4$Z|bawz&w+)x3Q%G+@oV3|{R(v}x~V)W*vh$IwXM8H-iayUMnDny`4>Cd -kzY$F -0_XC@5SGgBCYToIE-?O^|`E6ki=DK6rZeydPpGo$RYyuJouKSsn`;3h!`$33;dhuIjgYvkuVMEkKUk+}DB>Xb_ASCRYjjN`k|_pFa2Kvi=q_wcyRzKZW2Q?>LFfI|O!+GGr@$k_`zEtM!n8b~ux4T~MF)r -ud^JPujJsh^);m%XQ8Sk1k}O$l#O*wJnm-2=7}rvUQkAs*2Sq_Cl=4A8y*1h7!>J7@tu^0UkoD=`D5- -V!=SytjKNlZ1`R```LQavtb1RjMI5zY3P>8=+pc?W*kGugagU{=0pb>r#3r3Vx|!D8wnv^6m>mT9WI -DD*4b0Q8*```Xh=uX%`$E%;&bdW#8yFf5Dnjo1v4XfoHDOG^e~09jb*Eie9#5sX%z@$2y{`|$q#-#%P -jJ^pY-$feW!B667tgV#mV7P@CU7jv9mt8dTwo2y6ofG|I@YR`?Ua7u;&^PW}SaYZ;)of}Vo?XA`qFU% -G7`hszl*+Cfr+M+{fiP#ku_3K>bJ?Mrh}At>b -0-E$<-_1yv~tx_LSU3pWL9V+Lw07m7;1=GDhU~pp!VSE?Kjek-tZ+DB%j&?Suwhcg2Ixwgv8jj&|J84 -H_4iD99P?ERVrB<8*=3Kd(R5Mn(sUA|xu+G~Yz!U^u4uj!plg;S!^1JqR9FGg*PMk7ewwSKQj=>fuN? -g$9`9T&A7Fq~>AY;^xV3AoKxclB -Gf$T_@6aWAK2mm&gW=Rs=l6JEp005qb000sI003}la4&LYaW8UZabI&~bS`jt%{^U<0P&f05--p${L?C01ViuE&gnGGY#AJ_8WA#VD)LKEeg`Z0i|iCUc~^I`D9^f)EXPI^;X-PQ$Oy{jO~^ava3M{^P%^iV?PzO -wCFPnbo0$3WTb4n8^D|M)gGw&^a>jB^jiADiE&xM4E!0`aGn2Vih@P6CP1JUd>ZS{(>OLsy_%(;WUBo}YG7T0DJ+U*5dInaEB&nDe>Z% -Kne^Y`R)C#U41r?9H1u>$*@%I7n5~_UZ4i-?RHSj7PZvW>Pg(zgkU|tT*t3*-ZSpTs_OPf^j}R2G5a! -!1I6pYXF2zLm-_5KGis|hUPCt4V)m;;o~sMN9gt_Ho!vQ4?wyD?9pAtx@~&kTuQHGj+|{DL&m2*6c>n -+JvOi~;P*Mt)PYpdT7j^7AJDybIELrT;&1>aIEBAw2{iHoA9xsdGTV4EIn-J>ZvRdmx_Dn1@3^OvJ9R -Ja)I{8gDYl(H&*p;uz%C!3A7?YhyIm%2@$502!^9)8f8MEo%@F8hE+)&rw^cLcF$a=F{`c+)cwj-&X` -o63dUJDQep8}7_M+cO!KdIw0oI!Ze>uQZ3pnK{2^5}$YQ5y;e}E31GbLI@(ZGSDGpQN*Q!NGb7X|)a* -X_w{;6j|F*dJ9dp5Rw(*0+FC5S06>ku)6#y1?^hFfxUKp!2$DCUEN84w-9x7CR7WHTT5%9}nBED6yH6 -v*pO3TiM92=;48=0cE1yi0;@d`f4v>LP%7ySy#ZR^zf$&c*?OiOT^W}vPDsr72>%7q!DWZeCe5<+GAa -s?z`fJhLr#Y*vk{{Esgbb7G;ajfE7eTTX{PXRac_VOTYwWnnovMN0H{!HgVdPZ;@Jq9tf4OviK|x#K2)eswTkv`XV+0YwXoBB*%xKe7 -fW;OGC~2F!VjoQ>1BmN!v7UGi~nGNiULqW+@SRA97r(yH_S~6-WFC$KO?fIl`L_Fmh%*qk^*$6_xnRl -*q0?~KLme?Bh7|^kyWe!+bcT*f8@_eUjPh&9?HiTj$W@3DtMbJ;)%Tn2v-=gBD&UD32fknbv@;tW{+Ky&zikf=TumS&tt-o01fewM%*HIsD=2YacdjHv9O?$1Bgtt@z^o_g{W~zw7&hx -_|q23%h@OLi6qI;e06G0)KxC>N5!Xx1W6S$**j`1FYY{1LNr@;(_S?A-O0xusrQqG-IK5DCSV`0N32s -?Gtn$u_#MVt;7Ck5v&YroK7qcKCh5u)UyAvpUiw!kEgi=c&o6vzZqr;G+8qSHUvdDGm_VT77_#kyK?( -dI0H$ulG`nO-?Y=&Xj9lc+4U<;I{Tsrn+A++Ht?nnp&JYMXOeo7ZXG^#<*Gg6bJWytWq-*Qnu7uahB$ -Lc)vfstOswrU^J8Ayh6*_JXD~I!ItqTF{r~CeKw$WKYZwpI1Q}}n(o9?S1zVgCdd_br+^xCGQb-S+VPfVwDX0u8XUXDJV;=ds)_y7dn9Z?b(naKNUy$udM -hcIiSd-NLjBcNgo85-l99Wd-&{IVWk1k4jlfvLN<*5cjY`A^|;Eo)5m8&((pxEDppMz)CLassQ5vIAXnW-4+qR6}2Qc(Letc;Gw~ -u|S*~7B`(1r%~?*RG6r}JP%y2}R>0@4?JF^ -_l%-0#!4O`vurfy563KdK`NY;*dSq;RcVu&2U#;2#>rIM>vHlqVLy_Ixs{cC&JR4t={m={u3PY3;iwR ->(nOPc70O5*&_|Ee>l)EXBcwuPhVO@u=wfZzweZGzx8T8Vi~`Huv -@BcV+3(exXF+`Mp7Q8^bKprGwe9dWL_Y6bc>a>frc-jAu93V4ZvL$WrGO9DtH~R7q4-vajD2$;iZ)4 -qnKK>#vkU$mH1NMSs=y+9^r8bhSU!$V=!6IV3CG6N;6)fG`LP4LvN(F?Ldb4%=*GhZ-jUj1=mSD(~aTMHKD9(5vA?J$t1VTcJv^f<~wz{R;eb_sLB`P}IJ!u8+Gqxp{p{r$zz6lMW#IimYGFo|2(SU -@vH#Rhrz~j;3sz4NR6b$`2LJ=2Yrnh^cS$HbD>Lz^iDO5)tF`*AqwOXehPrO704KY7 -dT*c!Cp)-`tgqQ7n{#@Qq;!R8AeW3u?=GEpkffG}qFYQT668<-I&?Y4>1|7a7QoV`E4Gxq;`Yp%O(rq -GnQr>*xctjD@Z%8p>AQ1GX!1u;Hi1cy(9sw}^t$>)Ovs!7CH^4KM3xu9A{N7wki#~eLa#qQ0IVme)@= -w{Y=g!&3R>uMxxE%x4?a`YPp=*o|5XRMt~M2B-T1(~AAjyapM2IHb#%>=*S30*4eFF)YE%T!Oz+g3i1 -gvEo5i{&en8*!G(>kv+;^5_UT(X1Ikzaa-T6f=BF+6Hj`ipZ#spj)t2v>}FP<=rPMVmtAPINsH$r^A+ -%D&01scs#EPj(TdK}eX{M$p~H0LI393LND5IFZF%LHu_G*7f%k|z{D@hR0RXN -na!FxsYx{xcBg81@`RGD3mwvEZ4_W@-Ft{l1h>N6_xSm3`03y|KIc7RA8LcoJ^3=6MPOxeb0t$Mb|bx -XX`-v!u6VU?}b|F>|>UpB7EqV4MKYk2b(HUt5q>J)&8@fte=KMs8!uT=pV%Y#Q~r_Ds)BXsCmL?F*(SdF$z-CvDpbM@XSD`^SeTgaM;jitrBdn*0 -NV-C8FHC#2wsK9=7hYw_cMkGe8Lw_Fg4tn}qK+-{W{W*u}T*h*(vwyDhVQNvEIZ!TZn^A&R&VtBI8jT -+9Ef42Q0nH#TmdIQVJn+M{jA`_9q(!!hr0|lCo=S8`XvvA)!B1L!(u{K5RTOueP6p|U`6M>TCrWd@VG -~GDlZ(cCaYP-mZ8lZ6k8)40VgwP=FDce|&7o?Jk^gcz -%*~sX`z4et6cyT6{c7kNB+c6V`jNC<`}fz}0g;C%V<~j%4JM7-(*g2tNTNcP{}y#u%JJZ=nzU>6mUCe -J_<@Rk!=~0-gu3; -&mgOQ}nQ!vGDP}|aBSJs)93cdfwH37jc417*g@z5Ys$o~K)C`5+x5ZkX>eL>C*mzf#QJjEgy22DW6nV -8C_xq>TC77O&a8Mi22;6Rrs9_GbDkGRkyGTv3ytby$^c -T_2OS}U#^u|%CVtImG&OMa^ex)yLEr0R2qH$i00{J%=Nf*sgo#kxTd%iU$%;fa_9QThii<3X-L$F -*<3r&yeS@6p-9jHHK#W@Tie4C69FhC74#M~3dmoNfH-O5Ndg5(lQ&Ptw1o43=A;`@e<~D(ohW1``t!k -wKY>tOV>%Jjc92dt!xBm6L2b9BhtAwjynI<0 -5Y45-IR;`qqQEk#PP%-oyIioy_;bY|BNpS#Zeu#@sF#A`Kp_0r74!1m6f%&(&c_KT2MO75O52TMZkTwdt>?-{;*p8kSviZ*T9Z?fE^_f8AV3Rv -fEI+#UQ*87-cjIht-VR+vW>eknmFaTQo^8jWd-x2ob*l(mfO|2P%6W_^lHktb`8LsWWQdDcg^5sWd}4 -#Q=S0E=J^r=UbpE=eXmNak6p*949*Qh$sSw_&CFSaVQU8wL&zU_8r}&$c3R+Ir@DHU!v#ak$p;IBwwl -NF^C!9%gjXZ^(wM^ZfwQRa(sH#q+sjVI%>#U%_lnnmO3}b}dd#vwInW^ouP9269VFXYIF4?anyrsZfTnDX{;Qm&M@gi+n^39m9OgL8vA|Ln>zR1>lLK -H_LKAIxp?@QA0@y2z@7|OEE+)4zb{}%!+P7V`~#Is$S^}wZNu|Gl5Gu0Xdd2O=i}zx)5Fm%LEOQDuVg -wt3PxL%eBi#U9=&G4^W@>&1#W7Qgb3d%ZLObKT9x5sz5~^{4E?r;od=mGfNdMR7;%aha*}^DT){%kO} -~t3QxJ_w4@-En(a`Y*J%s_sQa*0x;fpIAab%fYWbeu?an%524+i{K3X>c6)=u3nh#$s3ZH7a^D&-A-K -`$fTHk2gZ)&WpfaehM(IO~_$;>jzy(M0+G -L~7=Zk>nVT9o3ZNCjDAC`oL$?DmRMZf4jiUx_;TKy%QV?4WtjT5X5UJpd%IpAJH@<*Zo{p+>Hz -j`j}dz|AvAMNd-JHez>xRyGkAxsQxGGY!|+TWNGN5<`zL -$$ArURh;Omotr%9b;IiYn*G98XoX$?S9rPVD8;@hO9CO8drZBe@*eTWbdKCQz+C@wbo#SWNyc#Q=g-t -SsG|c61#!JH%W}C5il5Q0iI$8M5weRKcdgE8Xy!|j=)+{Z4wyoN#dM3sSZen=7u3<*W8&L#Q11qL^-BDkkc5m>%70d@t04(6@UKbkI<3BsW=Gs)djPcN&Wd6?UN53Wf*W;0>D>Dc^#-$zY;@ -DOHGp*AVU>*PA@|gqBhu9Chuy1#4;X3+8JP`E-pf#D)?Z8FW`V~jI>mKj;!X`1^0$JS%G$&SnJaBCytBFuP2S_~7$SW{F=qwPSj -=-z9q#6}u=oDQI?+#t1jGF)}jd2YC$_yC`p7IMNMuMbceSt3S-@bi|41y3uY8>E=3oxiw$2kq*kAUKP -pD@+Ej-ujHcnk7#W72Zpd61wbx8#pY2mCy(n~*UJEwP%l>>o50IV|l8u4nbTaVGeOrad)_ZQGV+rbuX -}Qd}w!lgy4_U}{(GIgn2Ec{jxx6$X8|iiH+c^#hL5K1)Ao)Q5yycI;Wx)j3E;coZ)GA2Lm|Q)*8pS!# -$j;Wy5pHhF95UACL&y`Nz^iv@EwStGd55_xCx!l|fF#aS5z+uC9Zjen&}R-kqdI!JoCNR_Ww;3vOIEbx03I -(Q}DF-o`tg){*h6dKb`kpUrFIi56e8`N6QeO^f^_{sbGgOzx+ytZ{Djxr^4`kfR+@2f2C)WXT8?- -;v91$M2?Ie_?!Z`Ov32^#w0igY$jblHl5r>Ox=FyIc|&hQ$@YurYL0#7~s+c -(Dh5eqvr^qU$SjBQFeo?Ey>WNT#}tD#dMsb6NH6*vC@$3Kf50nYw^PKZKFK=s}mj$ -MW_7N`COgm5H!<*!sq(L>`iu(+d63tfI6;Qiiy4%J_%w8=;fgoSy6QzbTh{Unc9<3&kbrMI@3<%I -$xE8r>hYCoQ#y4_k%@C;Jn4(V{$cF+yfg}w}SXQ$~}Mw_Zf6bt&1_<62GQ~U%~ -RpTTCWjdP9Rjf9Tq&qBcB3awg@dsVk3(@^o`2DYw5#fr9nVU&vFd7>)<~4t>LaK{5@$Vyez7na-X%VL -c*+{TyVs;rKz9bwTQlLWCWL`Va?+^H@4)52oLU!47PW%j2;ZsSH)?xiBQ$fEsWU*-4h2fwuC9D;&<4d -xAVh@_GH)T;3c(6UH)abg -r|#Oba-Xby_lYAz<0F|Exp*asDVFvvaRTx^jQl^3+>^4wN6FEtS}Jsa1x7Wu|BWy?M+x_6y$UFRQ2>m -Q>x!SFf)FW%`;};>3iTd&mdc)=7Vz;yfW{Cq&1nUFZlM(0>gVnvz0srJ+cF)GWVlxw8U1J;l(H&(9@W -r3bAuH2gCv9SsipKgGz17qN^)bRY0GsBwgJdu&wvVfZ=hxvK;hiDA<7<*Et(V9q7_2k2PHpOcy!|UOZ -`N)CHZZ1(gCfRyQfp%N+()Aev`%ZUBG7Yo5I_e$f0eq2ZfVL)%$Ap2JoA`X#Pa@QRXAb~vYhR78wM9* -(VhWQTI^x+=q5zaY_kf0)kZ;umO)!T)~oe8Rsn1)#J-hP=76FI(1mRG@`U*~_*oUQB@j{eB)wYYO8JN -ZuyuK1&Ygy>piL$KgkQ6_VkH{1vKbD<_VIsjsa$sQ?+zg7a39P8ZO3`R_21$3V-x{?dg8H@vc-$*xZ? --)SAVlP=#C$*YH)v1KzYT^@eH?UJ9*Yk~(C(3Bf6Qz;F@Z1FhRfU*nGz{`6fgEN+G=%2lOJ3f&4pY=h -#5}7PHa*=@HMGBw{>l((WGGW?(2gd@-v<}&^7P~oj@-)BsSGi;ph+paXjArw={mitz%6G|5kyD89mGw -YfUf=)u+7dPWMo}@Y=HX}jm1)kKzW)bMO9KQH0000805+CpNd-p4a8L*U0Pz|C02lxO0B~t=FLGsZFL -GsZUv+M2ZgX^DY-}!Yd97L7ZsfQTeebUzJTN3-WjU9Zg##l9_5v&r%r0g&nFr56W=m8z*Al6al-r#k| -DGyRlqiWko>@dMZi!^ESas@D72PP=k+N(CGbmP;gm=AEhS0s1?O<5x-gmq4dn*qIE)M=xYX8fyu5WnD -cDn{8_Pj4D+4a0d?^AAc -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 -}(f=S -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 -#9gX{11|)qw;n$#Ge#J9R9Jep>y= -|j|L4$=n -f6<3ODyn7Xv{1fnAE`VNvoio>1}n+wk@=ojoU3Z0rv4Jhm>kA&U}YY{?F?V};CxHa8H0RpzXWxqrqyF -+JKxz6Urx!4t128$nZMW4&q8rG#y|559J(+L -#@zX!Y4WT9_g9rbKdOvuAK@yX-5Y<^IjrZ!Z5$NW`V@pZTi3CY_bQKp(1=f4_AX|+FBo(2z`Zm+P-r& -w+L6>YgnOHfAFq=M7{OwzF0kP;Iy~w<#Z9AOQ(ojDZz13w=hP$I_jn3;Y68|Z1Y;530g=42Q0=pDJBT -ULJeMW?Qp|kFB?kHsy;m{QP;OyiU6X}Jqw!!Ww8h#{&OV^D%@i1jU~kf*snEG93ovH1r&5BCr*1%q&= -}=W4sP0vYZ)jHiA8<|z`|+4aw=%@c9W?yfOLXJWiJj5&UhM&#^d*#G>H}qEC;l3rQKs|EmVKHcO>Yo5 -*X|#2j0!})_6O8#+8%28C8=MO{t(Ugg{(i9WGw0uw3En>B^QhTS=AZqBPY+y^OMT0roz}b3$|*ngW+n -)j8@6;ZuHcMYSZzrgL>|8icR8-13IFzR4jHbW6vwC^R6@OciK|uaNYxm}e)ae?2-mJ32d42vF&sh8Kw -iK%|rUl|})P{>QUR1#VknF+@qD24a@5-rGuzAOzE*OcN^CtOagfmvp{*F5?JqZAkUv#()?Wrr^qxgrW -PE$=kHv(Zv?(`h+sV{*2&4lA?0C;0Gk1!I%h!n|b!CQek8u-mfB7%e=xcdCmPtbg@POViBud!&Qpc)l -qj`<_O`+iN4H^@AU{w@9%c)vf`b1nrw;%@mvYwgC|*8_{7l>=+6v!O5fXY2>)5EhJ-L#M}g84B9R -8GM}-&!NJ7|nS1|L6$VVP0VE1qaV~q8c}D@j&?$^?Zf}8OR6EFTQ*C{a6)3DbNNnYcilCiabdX8ZLbx -{O=l7=7DNKA;wlwS7hvi73rH~&?{H9XN3;4zC59X(jfaw!ugomxR(qEO< -+7#&$xweIel)`qI?*6BOf#+vu-!Ub<;Z!R=YTTA!P%7KjlR|6cAwm1tvT)a+&wAiFmhp`ZzP$wes+QU -+KzvS-k1Lx;~cc6dvqYi2WzTv^6>Hy6f{tnbl9X;Q7mg&c>2KTbD)QkG6?3=P6>#87b3^n>v?V9l -TY?byR1twg(djlJao!8x96^>il52EsoeR;DgbNTzy2E6Rg`yC4q -({KJ>1JRv6j+Px@{RO!$L@ugPRG)@Y>PLcv!X8rAAM?A3gL$-{aREe@QLm3Hega((>{-}ll{#CT2b;6 -6hTCuwm9G&%rF0EtRDZo@iEWppJR{jC0_=7u(M>{>h)X0POTA_V|VI8IIUsF)bE_P4F`gg4LH~ppV#g -Y1h}mpPd~wR|DZ}|w*oR2Plj9mk{>mZ2zZY;)is>tIf}!#Ve5i(SN5Q8I{de+BPH*X?sJ -?tH|kgT1NeRmr -WZoW$IVEFM^w|uOt?)kg`Uop~_F_=EYadhzrU;c+ja$!AXq6-rA{bvNtm%%cCwc4DXeQ`!r3%Hq~ZVw -de2qKPLR%0$`M)uE7C+t;Y{-FeCgI(3auZE#fHG2*5Ksb^InOE81e&Y<5mjdKiLT$D3v=nJp#^+%lZ_GzgaxcgKC+{>gA`ZZ|Su%;4 -DJuFCeotxbI>4==DVBX(RcW{X$A)y8fLS@!29X2D%vNltVv1&hVUAnJ(1>Ye;w%SZ^>gYkzeSgT`9U5A{wRDDOahB|aVl! -DUkERGJoE-rG%8DuLcH?qCUFPW8?pZWO~E#IbNRBLK1f-u~+cf%*zI7t~#;^1JFjayB+T0|*B#OQioL -1)(5t_G-QpomP?CdDN_n(J=t2eKDu=m4+7PWDTL?T>X(Drty*6MVaXI^oFVp#P)ogIH;aCe -8-lwKc=R8vvTjL2{w?a%&OQktL31cNE-as)CHVH;7n!|4=E)NDads*0=<-iy%JA9^d9Wknlg5^J)VxcIGsxL(NsOr6{-x9 -Do}H7EGUuGSBgrC0VyQRU$WI6`0k!q;q8FVpZ3h>iqb43Bxof^y}k!QP-K=?9`Xzc~;DiPlD6a;0yH# -h{5%<|G+)L@1tuQHK`o|?SNAva4o_b;B9H>3MMK=ll*yG?)GCd3|!vuA!dvX(=4qwfMJC=A -M3zeOUD8|H<-mfEvnAV! -{Nw?*k}quviJ)aAaFy{%;(18T31&|9yCIvq(B2GLEC@*QsW$#G`-_Qt1Yv}J*t67shuE$Q+n=Ju`hvW -!m%^Vtg8IYD)S*G1MvkyYB6`wg$ja?Yo}ZJ`Albc@=l8H@Q|nq)fRYK|^((j8@!Zy1+kL+M)SBIhG^c -)D8Z{JS~~PkSUX!kfg?wKQ39i;#T=vd+=>=J1~1T}tiXxB=t?yIRAWnfF)Fxdw)B+iFUCVk|2u-8W#3 -%r_Ro3K-bWRx-Zk<6r8wBC*7OUm@Q&8muh{g}P@7Ug=G?ZM!`B&|2+P?M-nOW7FYKv;WUbNYvs@24$6 -C?V7dp>E4jqT+@$MiQhPviU0#X6V(RR-SVV=YufI3^Y|@9WYd%J=zjrFO9KQH0000805+CpNi_=IJE; -l)0Ba%u02BZK0B~t=FLiWjY;!MRaByU4a&s8XIF6?r}k+gHS<*<*o? -e5#VZxI|yN -jE2`&}oFuRzS{a{1>-&a>69+$Hd08EgD{_JM(mcp94Ka?_mzx6U-}>mCn2gIap<4z)uYP6x34j2k|

    i-_*;o-;w)}gy-#feTF0Q+s -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 -shS1{lL^7P-5wj+cHrSI;ribN=kXpvczFCO!t% -aidB1OF2($r|@6a -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 -9WrWIiW?8_M^Q9C-;+0K&ikg>AY&!SO-=pV>k -D5y)KlZoa#Md3T#f1=I+*s1sS|<*e>zrrYW8VgyopM?qYn~RBhn=H1qXkWQJHZGmh+7g? -0{OOUSVGi83=N?gC<@b(Q`Byh9A&YE3!~4nibg0g-4n01#Bs;)q^fP`NP -7dke87O#=_1B8So;xg62^zMi8wg1)svoVZjN;2LgNig8WLPRFP|P%Ir$W}n~Fh%y^0p)C}?51{*VU}3 -LT_;h&n1|B8*aa0_Lu)#jQ5{Q}Elug+~Hrs1jVWUUvX+ppI8$8p0g;K$Z-L)db{343|0E-n`*FC!xDV -=qne2iXZDsf2jj6J{8vS5FRTDNnB&?TnnA*%2@^juf$ar$_OBZ0Rm_DoMP{DfV$gh(UPOEW#jIr4!;y -MY#9pX -wffB&v2ab*b7}6sZ*cxU==}UE{gs;6B^_E(-{tkarSX -j~X{SUjs9@S7=i5gQpsgaErnQl0 -~L_0T+g7uDbDsRi}ZGEZ#T8mAAxX5AXU8_X)+{8GEr7Xi>e~99F6urHF4}MRdDRgRNt&+RlSEx@gcr_ -iYyR7ux8WS4=mxAG$dGNPAQfk?e>9-2SW1W1pi+d#AzQS5If{f@HAIM^5W1&icN^h%F(fIuHNmz08Zs -UK$Q;n(b4g8nQ3^fQN+n7;lF~L08;+l?$#tdb}tG${5HRn4k$8-z*CLtoMqPTA{i*!slm7y)2tS4*y> -W?RYpTbL8?^@$enrkA#sz@5FTXNYxN$ArZoZJ5qmbY@r+Lo_6KJ^uY`R%aV4LBNo^6#O&1%QDbgN__Rl*l!}O)pZl5Mu -LG&W$wM1cy$an$u4vkaqG-6raWc9sa51{ezw4g;wm(YPdas!g(-f&^U-&aQV?PQwp3IR;+eY2BH`G7U -H2@1YDrQ2f-^T>*N*!D8!ZdjQ{v{0_&CqY6vJg3^>8`YB+|lzi)K`LjdbG=%)|7qmuZ&yrSbDPr -;o-2o`nxdW%Q`R1P(F3CR)-+@~^S2R5k4jK;`o(&g{I$EiOT)h#u3+!lUA_3>WvClwE<-+xGxh&OQ8^ -F9oSN?>9~P8D6SVgtA>ns%$QY)@A=Dz*QdSbsWu;7lw|RhdDphvA -t0uJSf&Wj^@S1KN=}Qaynx-0>WEcnP-=mE4*(=$D7M)SMkeAR+rM4MwrX5{`BOVFi;OzH7FwJP=8xSc -VsW!L=)ZgE9iwLW#6_pXxFcQcr&Jy;ha7sLj>5Yck$SP$>2U=NXTzj&X4JMngp4w$rIDfT_?aNEsq_hFlE1+RQVLBD!HT!_-r6(_B -@IHbLwG5qpxuRbnKpCj}X`y7o)(dTb)qvD4#G4FrW93eG08(;ZxEP-D}abvEg7au;9h|Y3n@R -$5{c!D@kOR%77YSagZ-Esu7l(UKXyWQ|`sC@K4?UqxrE!1~-^*otUwb&<9Irq+vf(}b*?UtHbEWrbtm -u3ADGxrN@1~K(NK5A4dred6F;&od(Q&HXdVL>YENq=0sVbde#)!f(Eqd+m~G5VUmP!QT+&K4zCx6IJpj7u`;Y^c-q3O#;iQ1}r -ul|mg^G1{aZdUNU_rdPd^qa7QvwZxvrp>&Gl+PXuAO15*0xNif|9rdjM^ZZVlix<~^CTBUGl -?Z|hy}Ssu7dJ#qf$IXP!QFbfwH&L>t-CfwUHpeoX~vfW!1-&QYJuV5wrc_Hkn?5klXjVQS>Zd*W{|zKM)sf$a;+(D>{tE~Z&u)Fh^#qBeD -zAoJwoNbr#kO{0I!LN_`K)@ggRUf{(3maV8oD`buEDc!fCy5fgH>Hgvr0lE;BB5OQuzZ7QIHI1!ZYK> -pT^zrY%cp@#qM8E>+MlMK4Xj2%qCb8F(sYrc`>~0gob)hKQ_RHUw$8FU9EQD>pzCcNI2!I30PVq>?dC -S}ve71aNB0mZXRPL=6w?NZNxoT>MP;KYgsjBPFxT|H4wr792I?|s-uCKj&(HtM^E4Bh@hoG%zq( -@KPADyloFzqGsUn*(U6*B{s`K;nvz02gERI)oRVxw4Om6WF<4av+btPi+`|Qj<7fR)Y`;isvwanM@B$|YA?Fs_+-9Mf-azPL?9S;2O+oAHvTuZry!c -HNG`^_u}`^G -o(5`e*cyIeQvCWoaRF9#m|@cY+bImEvney_qRj46x=^r9yvc0HZS=(0NO6)qX1njd8AYu&!jLUi^u6bWTkBYXvDEN|SB8VLb -}MF`ITO)3Vi3im0Y||C`XMfIT}UvYhMKF&2&>F|MSq1t7nb -xd13&pBI_}0xGOg)Tsd92g0#pbh{nkqcGh>$wC?gX7e^EH4h%Jp8z2=8k- -J-Uvm)#^|#u{hCX}cWi)LV>ILvNi<)E3V13;;T&*D(eDlrC9>4kV3~_*gKnecurwyH*4N`|bRgV#A>? -Q*pC<`sCLLDqq_+Y}9zy}B4Hkm&|bJt8)95QH1`3fE3vq+1wV@7+KKYhYrubt7U0vE%=Ox_5VJp1F1R -gtAajk^mPJ7*P_h()tbnaPS?g~WJYJMdvdD{5RZ^!S^htEH)DR@PSn>__Wbum_L7{nt~H@P2bJQr-&4 -DpR)S7&HLxv`$3&%+B0YRjHpX7LZYI>LvK5?V>!Cd;w*~f+*?*Qf%`7MHPjZ$bLjS0C&~U -EI1#seTV?>k>pywEE-;N?OP~Xqrkz^{j<@U__Pfl);xS~ux98CyXEF36fF|P!I&IANV?Wf0TQZ@O0?Z -p4ORKlKgy939pyE~qeNBa~WKNVClC3j{LYQ{1;t0kZz#jKVv-K!Hic1KmZ; -R?jL<~(f(=FNygTKcRSA#=%=ixQd;ah{$fm0zDYECFuiwF}=kxwF -3h+<>K18*KQQHG@zknx;pAY{j%Lkyem-MZj*jgUATu9bg@GxkC5v(%rZSSIaXOCw -e9=BG244_^y

    WgM@p9D~|&=DeKoq<(tAWdh>0{k$?%Dqycx#KovMT)7bTMf1k6H4?Rvk -2=ba<3#j8%1G>KRO5oFTt$gCD;*|0i{}?1_NKvPXK`LHhq}4&)rtM+@gUfN2Sl?--2d0(RKo&w{A2T6 -*$a%Mpqo`G4k`@;*U5zra)4O -8{>V2~Db}?@(HZDvLa$;XsG_whu7&5P~k;3&g#>}#SGy}g}UxVPTufLc>LP>NuyqmfAGzo#_nG!rbJf -dbMf=$fYpiVIkIP?g91*as8*p{aEWZ2fZ?-XQjvRmUq=rbA*`7ScP$D+^lX3>`04AZsz*L$y3cW}&h-}f>F@PEhfDj3pyhCXG8+E1ijPZs-m-L){ -&okIR#1EnNfW$aRZW6>qT)KGKP2hjCu{lK|ECXD2ioq+q(6b{g3}O;ZnCkKf!ayd%+4Ok-Sj2 -37dMxg8^yLsP{MdG=fvscu$Be%JvDi^UbhL33ym#RO5WLWLHhS)}bNqCXJwDd6^XY-(s5MJjzdpojbl -R{t>3>cK@#;pFC4%T0mo`3tt9(=ykC3G(7_u7u8XQ7;7ss>&++|Oi*f0r{lqhxpWD}fFjI7<9)Pe*-znL(_MO6L^G1g~8_k79AU;QJ?tEokN3 -SY0&1Eot%Sn>(a;m*j>R`}iJ172Z!k29C=RIoj+WEF54t4(dbk7J{}-W+@b3Xum@+s?JA%7-(4kEJ&B -&7_g_%JDU!J|6wu&%%sJ?nXSmo-adT$@h-*cK?*hc?5s0IuDrD`8R+4pmQA~!z$D6z<3?_exbIU;`BX -EWwA`cqd#G~e=+{&V6E#B59{b425#%0#(9pIJnxU3M&3*^X{j@Zi1FP2}6EI-wfI@pmV`8NfM{qEp&OsO5DxH?vx<{`v0sacGNoq(j^S1v(zP;0|#ZItZ7i(%8pUvrqjPn_&oRU4iyk-gde -!bo>$HRSHIai4FuF?^AQIIO_61>c%%DMJg@>T6 -iLu+SL&AQfIKa5Q;$%!5u`UBS?s_G4~ZNo-% -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 -U7%4+BQ&(i~?2OLY{%w0?SbG -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 -~y1bD|dIgG4EZ9xaN2qHw!rc-vt -PTAaKuYvzW0$fdEeBKyM -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 -bkhlC={QTv0rQ#wJ?kq?yb@0{1m0M?}(} -hHX+0_JhhXL=q(!aomuG})}7x)ciDurUWK)%%bTm~jpZBY)F@@?j6Irm)PcWH+OghBcpq%#UbU4suYw -Ri3<@!+BGUVp_-y!!&H|2d&B_HeMGlR#rc)Z1$)s4-T3Gr@`u*DHgJ>Gj4=eD+DO2Afhpmqoh;ordzZ -4%|z{Nvcqlwu_P;{;zNNGLdu4!mMoyg>HZW5=tf2h!F#GH12=EEoU?{SN(o0|BluXVxlARachSM9{IS -fgVQ>{?R)hQ#>z%>&g!Y6?C>yzn3}xz<%DfJuSz2b+0{?X6nOTQL=M{L(xm{xjta^-n+)&C6L>?R-Q^ -1Mc*f~Nc~?M_+O^(XqottK6o{GGK(tZ$cSr$SfG@w>}$`oCG*rEHq@fek^ufZpM8@)yLi6rV5&g?M`V -lfnmI-u*JjIew^}=-rwEHiKGZLG-})_48q~9~W>W_1=~@?&0*uEk1)+A?Z8;^@OI*tf=t(Puak`(>HsmL&o;34K9pa;S -yHwi7af;m*TpmEEo#u$A&iuAF0G=1R}YAcY)EG8Vz*Uda>$l*2=u)H=_l~e=5_sH#5rw`mL3M8#qs8? -20dBRWz9{31}SMWxKM%5uR>x;Sh2}r@D2Fsf5|X@y(;2l->oMn8p?o;v{|A=UE@NR@aKTgl+ePBVd(M -M&V?<#L)bUSKMRuA{QxmegOvoe`xzQAzwtCy4ky`BO9fhw>7-5=G<4C)%C|9-`1{fLKhW)~9MRG$uTL -#QWU?&D>HrvyEcGDYsu7~Ey^l>vO>|I1(!vhK-+R3N0iDL|HJcygQ7j|VTa6>WN*8)Q>IeBm277JgQs -oMDrWKCfqKL|l0N=M_exXKN?b>gFKdF8KqwB-rjQ*?v-f+nsEU8k$()|S?@zO*(hn`{RbRrB;VYgBV! -QYGIf1o$uSL;&2zB!K*d4)qfK@3k*ri -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 -owwL4SlOiM+jEA)61!=9 -)wYIH=1D|$DLYIt4}243+t=bzfKY0ANWU(7&QUWcesMaR!Ql!=B#OqheOg`>&dt`cd;paD88<3O8a{< -)#?7wYud8sCOYai)@~@~~U%MJExuQ{hVFhcwZk$F=R$S{5ZR9g61*5x<1q9DRMIBe-&9ZkfDN4QJtO6 -B^%w3d&v>_3Yfm9w#1BpjVn4yE_nqf4**eJpoTc-$K=)>7;%k4=AfLF -nA{6zH`>7j0RID(<{vunBp=tUnciLLHgF4VbPDk96Lbo)Z^^$V+{kEZ9t7q4y -ON33V^g{O`CD6#_tp9TJKDgE=JH_)vpV#ddM+t$zw*+TG7Y4SuHrttFxo+C9~pmTu>-YnkP2dhevUB> -=$JoGwzZ7)oDxdpAqy0Ne$;lCeH-jn|U{saE!*)_V)>ud9W8TL$XImHxC>VNuS{I&HM5Y7#}99lE9b; -v`&$}_~6lG)^u=V#wb7N-VzD2d#y(1iYu#h<_x)}$E9q<*4S^WcwiBT*qsUtAy4`P_E&AxO{i9<**vs -hjONG70hg>=*xA?0rHtSo&lzyWQ7+b$FJQf5i)^*z3XGP*g#ztXPO}$-->M@Y!B9LPsrEMrcdCtl(#7 -!Z#*L>aoB3ZIeHHCdc)cjgC&VcS6#!BoAaK+fg6;BT&MJL})`*lvm&+h8_k|lnw0u-iQ8#{p)qL+tAd -%E-!R*!J5n+sd($qgnNjqQO7ASCnNV2=ybm75UzB#AsqL3BKc;C)kfLtx;@( -;`?UEALMtBUtcb8c~DCM0u%!j0000805+CpNlQtjWitT)07wD=01p5F000000 -00000HlFQ4*&pgX>c!JUu|J&ZeL$6aCuNm0Rj{Q6aWAK2mm&gW=Vn=i}gbd004$A000sI0000000000 -005+csSp4FaA|NaVqtS-V{dJ3VQyqDaCuNm0Rj{Q6aWAK2mm&gW=X57{yU}&007}A000pH000000000 -0005+c93B7waA|NaVqtS-aA9(DWpXZXc~DCM0u%!j0000805+CpNlTeBA$}4709rr*01*HH00000000 -000HlHODgXd*X>c!NZDen7bZKvHb1rasP)h*<6ay3h000O8HkM{dn{PY_m?HoHt9<|f4*&oF0000000 -000q=BA2003}la4%$UcW!KNVPr0Fc~DCM0u%!j0000805+CpNxpiPn7ax90J$Fk01*HH00000000000 -HlFqVE_PdX>c!Pcw=R7bZKvHb1rasP)h*<6ay3h000O8HkM{dHuxp~U@8Cr4x9i03;+NC0000000000 -q=8Lr003}la4%_YWMz0RaCuNm0Rj{Q6aWAK2mm&gW=XdXcbSn0008bZKvHb1rasP)h*<6ay3h000O8HkM{d`Y438OAY`4?y-E^v8JO928D0~7!N00;m!mS#zXiI$3p5dZ*SR{#JO00000000000001_fsWe -%0B~t=FJE?LZe(wAFJW+SWNC79E^v8JO928D0~7!N00;m!mS#zj!N9H{BLD!+l>h)00000000000000 -1_flBQF0B~t=FJE?LZe(wAFJx(RbaHPlaCuNm0Rj{Q6aWAK2mm&gW=Y+|rUhv`001yK0RR{P0000000 -000005+coe%*4aA|NaUv_0~WN&gWX>eg=WO8M5b1rasP)h*<6ay3h000O8HkM{d)>0WG69xbP{to~E8 -UO$Q0000000000q=7t40RV7ma4%nWWo~3|axZUkWMy(?WMpY$bS`jtP)h*<6ay3h000O8HkM{d!60;w ->d*iHt7`)Q7ytkO0000000000q=AQ00RV7ma4%nWWo~3|axZXsaA9(DX>MmOaCuNm0Rj{Q6aWAK2mm& -gW=UWk2aRR{000F8000;O0000000000005+cry~LYaA|NaUv_0~WN&gWa%C-cWo~3|axQRrP)h*<6ay -3h000O8HkM{dA$zv0swGna4%nWWo~3|axZdabaHuVZf7oVc~ -DCM0u%!j0000805+CpNtswpT1XuL0Fre801^NI00000000000HlFOF9HB?X>c!Jc4cm4Z*nhlX?QMhc -~DCM0u%!j0000805+CpNdQ)?I<5c!04@Ol03-ka00000000000HlGxOacIKX>c!Jc4cm4Z*nhVVPj}z -V{dMBa&K%eUtei%X>?y-E^v8JO928D0~7!N00;m!mS#!XR7Rx(0ssIg1pojb00000000000001_fv-& -h0B~t=FJE?LZe(wAFJob2Xk}w>Zgg^QY%gD9ZDcNRc~DCM0u%!j0000805+CpNl@mgEK~&m000sI03! -eZ00000000000HlHNPXYjNX>c!Jc4cm4Z*nhVVPj}zV{dMBa&K%eVPs)&bY*fbaCuNm0Rj{Q6aWAK2m -m&gW=RsN#_%iw000&P001EX0000000000005+cg;fFoaA|NaUv_0~WN&gWV_{=xWn*t{baHQOFJob2X -k{*Nc~DCM0u%!j0000805+CpNqG`W@Xi1L0H6T?03rYY00000000000HlHNRssNUX>c!Jc4cm4Z*nhV -VPj}zV{dMBa&K%eV{dJ6VRSBVc~DCM0u%!j0000805+CpNylKh-Utr>0N^qJ044wc00000000000HlH -bR{{WVX>c!Jc4cm4Z*nhVVPj}zV{dMBa&K%eV{dMBa&K&GWpXZXc~DCM0u%!j0000805+CpNo*!GeE9 -c!Jc4cm4Z*nhVVPj}zV{dMBa&K%eW@&6?cXDBHaAk5XaC -uNm0Rj{Q6aWAK2mm&gW=RfI9{j-t001oz001Tc0000000000005+ch-(4>aA|NaUv_0~WN&gWV_{=xW -n*t{baHQOFKA_Ta%ppPX=8IPaCuNm0Rj{Q6aWAK2mm&gW=RrZfVe0K004*?001Qb0000000000005+c -jd211aA|NaUv_0~WN&gWV_{=xWn*t{baHQOFLPybX<=+>dSxzfc~DCM0u%!j0000805+CpNsD{MLc9O -~0P+C<03!eZ00000000000HlHVc>(}%X>c!Jc4cm4Z*nhVVPj}zV{dMBa&K%ecXDBHaAk5XaCuNm0Rj -{Q6aWAK2mm&gW=WnMR{YBV0040T001ih0000000000005+c^?CvTaA|NaUv_0~WN&gWV_{=xWn*t{ba -HQOFJob2Xk~LRUtei%X>?y-E^v8JO928D0~7!N00;m!mS#!8rw0F91pold4FCWw00000000000001_f -eCy90B~t=FJE?LZe(wAFJob2Xk}w>Zgg^QY%gPBV`yb_FJ@_MWnW`qV`ybAaCuNm0Rj{Q6aWAK2mm&g -W=YeC##E*O007Mc001rk0000000000005+cuYm#paA|NaUv_0~WN&gWV_{=xWn*t{baHQOFJob2Xk~L -Ra%E&`b6;a&V`ybAaCuNm0Rj{Q6aWAK2mm&gW=UAoX*sh1008g+001BW0000000000005+cp@RYdaA| -NaUv_0~WN&gWV{dG4a$#*@FJE72ZfSI1UoLQYP)h*<6ay3h000O8HkM{dJ{6~5ivs`v+z9{x8~^|S00 -00000000q=Axz0swGna4%nWWo~3|axY_VY;SU5ZDB8AZgXiaaCuNm0Rj{Q6aWAK2mm&gW=Y3mz}avL0 -06`#001KZ0000000000005+cSBL@taA|NaUv_0~WN&gWV{dG4a$#*@FJW$TX>@OQX>KzzE^v8JO928D -0~7!N00;m!mS#zP*4QtF0ssJg2LJ#f00000000000001_fe4cV0B~t=FJE?LZe(wAFJo_PZ*pO6VJ~T -JX>@5}Y-w|4E^v8JO928D0~7!N00;m!mS#x}ZK6F)1pol`6aWAn00000000000001_fz6cy0B~t=FJE -?LZe(wAFJo_PZ*pO6VJ~-SZZk42aCuNm0Rj{Q6aWAK2mm&gW=VH@XCdMR005F00018V000000000000 -5+cRGR_-aA|NaUv_0~WN&gWV{dG4a$#*@FL!BfbY*gFE^v8JO928D0~7!N00;m!mS#yNoKcru0RR9+0 -ssIX00000000000001_fpeh(0B~t=FJE?LZe(wAFJx(RbZlv2FJE72ZfSI1UoLQYP)h*<6ay3h000O8 -HkM{dUkP(yXes~zVV?j19RL6T0000000000q=5~i0swGna4%nWWo~3|axY|Qb98KJVlQKFZE#_9E^v8 -JO928D0~7!N00;m!mS#yh3d6j=E&u=s!TbZ>HVE^v8JO928D0~7!N00;m!mS#zYm$jR05C8z$ -IRF4300000000000001_feJ+f0B~t=FJE?LZe(wAFJx(RbZlv2FKuCNX=Y_}bS`jtP)h*<6ay3h000O -8HkM{dJrS+~jRyb#iWmR@9smFU0000000000q=BOV0000000000q=9^00|0Poa4%nWWo~3|axY|Qb9 -8KJVlQoFbYWy+bYU)Vc~DCM0u%!j0000805+CpNyxWFn5YW?01heu03ZMW00000000000HlF%fdc?=X ->c!Jc4cm4Z*nhWX>)XJX<{#OWpi(Ja${w4E^v8JO928D0~7!N00;m!mS#!1|LfZd5&!^rI{*M400000 -000000001_fmV$J0B~t=FJE?LZe(wAFJx(RbZlv2FLPsZX>fFNE^v8JO928D0~7!N00;m!mS#!yn2-# --ssI20Tmb+Z00000000000001_ft;TM0B~t=FJE?LZe(wAFJx(RbZlv2FLX09E@gOSP)h*<6ay3h000 -O8HkM{dp5nz>TetuK0Db`g8vp0|fwZX>c!Jc4cm4Z*nhWX>)XJX -<{#RbZKlZaCuNm0Rj{Q6aWAK2mm&gW=Wv^1y-*a005s{0015U0000000000005+c6+Q(3aA|NaUv_0~ -WN&gWWNCABY-wUIc4cyNX>V>WaCuNm0Rj{Q6aWAK2mm&gW=Yt60Et?r0000^0RS5S0000000000005+ -c09XY8aA|NaUv_0~WN&gWWNCABY-wUIcQZ0BWq4&!O928D0~7!N00;m!mS#y_%uDYLwEzGBZ~*`t000 -00000000001_fs_6P0B~t=FJE?LZe(wAFJx(RbZlv2FLyRHE@gOSP)h*<6ay3h000O8HkM{dU(}$f4J -7~o%a{NF8~^|S0000000000q=DJ91^{qra4%nWWo~3|axY|Qb98KJVlQ`SWo2wGaCuNm0Rj{Q6aWAK2 -mm&gW=SLOXZ*te000sJ001cf0000000000005+cAlU{0aA|NaUv_0~WN&gWWNCABY-wUIUt(cnYjAIJ -bT40DX>MtBUtcb8c~DCM0u%!j0000805+CpNw118WzGQr0Luda03`qb00000000000HlE`+6Dk{X>c! -Jc4cm4Z*nhWX>)XJX<{#5Vqs%zaBp&SFKuaaV=i!cP)h*<6ay3h000O8HkM{d;$l6}M;rhEFJu4!Cjb -Bd0000000000q=7r!1^{qra4%nWWo~3|axY|Qb98KJVlQ7}VPk7>Z*p`mb7*yRX>2ZVc~DCM0u%!j00 -00805+CpNpBVat@Z%`067W(04o3h00000000000HlG(_yz!QX>c!Jc4cm4Z*nhWX>)XJX<{#5Vqs%za -Bp&SFLQZwV{dL|X=g5DW@k`K0Rj{Q6aWAK2mm&gW=S>=Qr74m002vA001fg0000000000005+c2Kxp8 -aA|NaUv_0~WN&gWWNCABY-wUIUt(cnYjAIJbT4yxb7OCAW@%?GaCuNm0Rj{Q6aWAK2mm&gW=TXsA46h -U007i!0RSif0000000000005+cHW~*2aA|NaUv_0~WN&gWWNCABY-wUIUt(cnYjAIJbT4#aa%O34WiD -`eP)h*<6ay3h000O8HkM{dqMMnVuK@r63bYEXCaCuNm0Rj{Q6aWAK2mm&gW=Yj}4&o&g002Qj001EX0000000000005+c%XJ3;a -A|NaUv_0~WN&gWXmo9CHEd~OFJEbBVRU79ZEP-Zc~DCM0u%!j0000805+CpNgfPsHCrD502F@!03-ka -00000000000HlF0iU$C2X>c!Jc4cm4Z*nhabZu-kY-wUIUukY|b#!xda%Ev{E^v8JO928D0~7!N00;m -!mS#!BMrszn8~^|$D**r^00000000000001_fy}7~0B~t=FJE?LZe(wAFKBdaY&C3YVlQ8GZ);_4X?k -UHE^v8JO928D0~7!N00;m!mS#yN4R0B~t=FJE?LZe(wAFK -BdaY&C3YVlQ8HbZKmJE^v8JO928D0~7!N00;m!mS#!Fq<#JgNB{u4MF9XI00000000000001_fkVv)0 -B~t=FJE?LZe(wAFKBdaY&C3YVlQKFZgX^DZgg`laCuNm0Rj{Q6aWAK2mm&gW=Uh%cihZE006Sd0RSTa -0000000000005+cixmg}aA|NaUv_0~WN&gWXmo9CHEd~OFKBdaY&CFUa&u*JE^v8JO928D0~7!N00;m -!mS#!Z$GbFh4*&pRHvj-400000000000001_ftXkb0B~t=FJE?LZe(wAFKBdaY&C3YVlQ)La%o{~X?k -UHE^v8JO928D0~7!N00;m!mS#!s)2|Pv0000X0RR9d00000000000001_flFuz0B~t=FJE?LZe(wAFK -BdaY&C3YVlQ8Ga%p8RUtei%X>?y-E^v8JO928D0~7!N00;m!mS#!Jl|Gi70RRBg0{{Rc00000000000 -001_fi-Ce0B~t=FJE?LZe(wAFKBdaY&C3YVlQ8Ga%p8RUt(c%WiD`eP)h*<6ay3h000O8HkM{dBvqZM -rU3u|ngjp001BW0000000000005+c`fLaQaA|NaUv_0~WN&gWXmo9CHEd -~OFJE+WX=N{Pc`k5yP)h*<6ay3h000O8HkM{d000000ssI200000C;$Ke0000000000q=8j$2mo+ta4 -%nWWo~3|axZ9fZEQ7cX<{#CX>4?5a&s?VUukY>bYEXCaCuNm0Rj{Q6aWAK2mm&gW=U?)e1IPT0034?5a&s?fZfa#?bYE>{bYWj(Xkl`5WpplZc~ -DCM0u%!j0000805+CpNqy_mwf6!503{6o03-ka00000000000HlHMbO-=&X>c!Jc4cm4Z*nhabZu-kY --wUIW@&76WpZ;bY-w(EE^v8JO928D0~7!N00;m!mS#yI?VTja1^@siDF6U000000000000001_fhc$g -0B~t=FJE?LZe(wAFKBdaY&C3YVlQTCY;c!Jc4cm4Z*nhabZu-kY-wUIW@&76WpZ;bb75|2bZL -5JaxQRrP)h*<6ay3h000O8HkM{dpN?v+&;bAda|8eYDgXcg0000000000q=9jj2mo+ta4%nWWo~3|ax -Z9fZEQ7cX<{#CX>4?5a&s?tXlZn1b8ul}WiD`eP)h*<6ay3h000O8HkM{df-++yj{pDw&;S4cEdT%j0 -000000000q=AW-2mo+ta4%nWWo~3|axZ9fZEQ7cX<{#Qa%E*?y-E^v8JO928D -0~7!N00;m!mS#yYC&#`K0ssIL1^@sn00000000000001_fn%5m0B~t=FJE?LZe(wAFKBdaY&C3YVlQ- -ZWo2PxVQ_S1a&s?dWo~n5X)bViP)h*<6ay3h000O8HkM{dMtBUtcb8c~DCM0u%!j0000805+CpNkqz4s&Wnh0CqM204V?f00000000000HlFSq6h$RX>c!Jc4cm4 -Z*nhabZu-kY-wUIbaG{7Vs&Y3WMy)5FJfVHWiD`eP)h*<6ay3h000O8HkM{d2MtBUtcb8c~DCM0u%!j0000805+CpNlhb|z@h{I080}904M+e00000000000HlHN*9ZV`X>c!Jc4c -m4Z*nhabZu-kY-wUIbaG{7cVTR6WpZ;bVqtS-E^v8JO928D0~7!N00;m!mS#z1if^g+0RRAn1poji00 -000000000001_f!N##0B~t=FJE?LZe(wAFKBdaY&C3YVlQ-ZWo36^Y-?q5b1!6XZ7y(mP)h*<6ay3h0 -00O8HkM{dBEb+b5(NMNOcDS9DF6Tf0000000000q=6LQ2mo+ta4%nWWo~3|axZ9fZEQ7cX<{#Qa%E+A -VQgz<{p00000000000001_fg$S%0B~t=FJE?LZe(wAFKBdaY&C3YVlQ-ZWo36^Y-?q5b1!FQZg -Xg9E^v8JO928D0~7!N00;m!mS#!wnInLL3IG6`Bme*)00000000000001_fidm~0B~t=FJE?LZe(wAF -KlmPYi4O|WiMY}X>MtBUtcb8c~DCM0u%!j0000805+CpNh{v+Cn5s?09*c!Jc4cm4Z*nheZ)0m_X>4ULY-w(5Y;R+0W@&6?E^v8JO928D0~7!N00;m!mS#yICcJ)g0{{R -R3;+Nn00000000000001_fmQqn0B~t=FJE?LZe(wAFKlmPYi4O|WiM@OWNC72Z)0m_X>4UKaCuNm0Rj -{Q6aWAK2mm&gW=SACaxEGN007Dt001KZ0000000000005+c3jhfKaA|NaUv_0~WN&gWY;R+0W@&6?FK -}sOY;R+0W@&6?E^v8JO928D0~7!N00;m!mS#!2h48%z1poko6#xJx00000000000001_fo2E^0B~t=F -JE?LZe(wAFKlmPYi4O|WiNAaY-x05Y;R+0W@&6?E^v8JO928D0~7!N00;m!mS#zjBMI3(0{{Rx3IG5n -00000000000001_fwK(>0B~t=FJE?LZe(wAFKlmPYi4O|WiNAiZER_7Yiw_0Yi4O|WiD`eP)h*<6ay3 -h000O8HkM{dJSkYli2(or&;kGeA^-pY0000000000q=7XN2>@_ua4%nWWo~3|axZXUV{2h&X>MmPUte -KjZ*_EEUoLQYP)h*<6ay3h000O8HkM{dfp(V47y$qP0RjL3ApigX0000000000q=Eht2>@_ua4%nWWo -~3|axZXUV{2h&X>MmPUtei%X>?y-E^v8JO928D0~7!N00;m!mS#!jX-ebE0RRA80{{RZ00000000000 -001_fmIX<0B~t=FJE?LZe(wAFK}UFYhh<;Zf7rFV{dJ6VRSBVc~DCM0u%!j0000805+CpN&5Yy5_16n -0Eh(u03-ka00000000000HlFl76|}wX>c!Jc4cm4Z*nhiVPk7yXK8L{FJE(Xa&=>Lb#i5ME^v8JO928 -D0~7!N00;m!mS#zPEGt(93IG5mAOHX$00000000000001_ffE=B0B~t=FJE?LZe(wAFK}UFYhh<;Zf7 -rTVRCC_a&sc!Jc4 -cm4Z*nhiVPk7yXK8L{FLGsZb!l>CZDnqBb1rasP)h*<6ay3h000O8HkM{dd_{wdj~D;|d2IjyBLDyZ0 -000000000q=67A2>@_ua4%nWWo~3|axZXUV{2h&X>MmPb8uy2X=Z6c!Jc4cm4Z*nhiVPk7yXK8L{FLiWjY;!Jfc~DC -M0u%!j0000805+CpNe=JEpc!Jc4cm4Z*nhiVPk7yXK8 -L{FLq^eb7^mGE^v8JO928D0~7!N00;m!mS#!GEkGtsZ2$m1lK}uF00000000000001_fy__|0B~t=FJ -E?LZe(wAFK}yTUvg!0Z*_8GWpgiIUukY>bYEXCaCuNm0Rj{Q6aWAK2mm&gW=Z;5ag34#007Sm001BW0 -000000000005+cT)qhaaA|NaUv_0~WN&gWaB^>Fa%FRKFJE72ZfSI1UoLQYP)h*<6ay3h000O8HkM{d -55q@_ua4%nWWo~3|axZXlZ)b94b8|0ZVR9~Tc~DCM0u%! -j0000805+CpNh*KwFb@L&0Nw=v03QGV00000000000HlGL#|Z#%X>c!Jc4cm4Z*nhia&KpHWpi^cV{d -hCbY*fbaCuNm0Rj{Q6aWAK2mm&gW=YQM4^I07001Tn0018V0000000000005+c<;n>FaA|NaUv_0~WN -&gWaB^>Fa%FRKFKA_KaAk6HE^v8JO928D0~7!N00;m!mS#zJ2vU3K0ssIa1poja00000000000001_f -gR5Y0B~t=FJE?LZe(wAFK}{iXL4n8b1!pnX>M+1axQRrP)h*<6ay3h000O8HkM{dX({S?U<3dF76||V -AOHXW0000000000q=7=x2>@_ua4%nWWo~3|axZdaadl;LbaO9XUukY>bYEXCaCuNm0Rj{Q6aWAK2mm& -gW=VDXxhYT+0010K001BW0000000000005+c;MNHMaA|NaUv_0~WN&gWa%FLKWpi|MFJWY1aCBvIb1r -asP)h*<6ay3h000O8HkM{d$g9t&!UX^Tq80!E8vp@_ua4%nWWo~3|axZdaad -l;LbaO9ZaA_`Zc~DCM0u%!j0000805+CpNnB7pCt3*r0Pi0F02}}S00000000000HlFw@Cg8LX>c!Jc -4cm4Z*nhkWpQ<7b98erVRdw9E^v8JO928D0~7!N00;m!mS#zrDnMzG%K`w1LInUH00000000000001_ -f&KXj0B~t=FJE?LZe(wAFLGsZb!BsOb1!3IV`Xx5E^uXSP)h*<6ay3h000O8HkM{dE+307XaN8KaRLA -U9RL6T0000000000q=C!D3;=Lxa4%nWWo~3|axZdaadl;LbaO9bWpZ?LE^v8JO928D0~7!N00;m!mS# -z}SqnXx0ssJ)1^@sa00000000000001_fo{hP0B~t=FJE?LZe(wAFLGsZb!BsOb1!3WZE#_9E^v8JO9 -28D0~7!N00;m!mS#y*v#Y{=6951pM*sjH00000000000001_fkVm+0B~t=FJE?LZe(wAFLGsZb!BsOb -1!3WZ)<5~b1rasP)h*<6ay3h000O8HkM{dX>g)+)dK(kEDHbtA^-pY0000000000q=Eh23;=Lxa4%nW -Wo~3|axZdaadl;LbaO9dcw=R7bZKvHb1rasP)h*<6ay3h000O8HkM{ddD^4OdI10c{{jF29RL6T0000 -000000q=6FR3;=Lxa4%nWWo~3|axZdaadl;LbaO9gZ*OaJE^v8JO928D0~7!N00;m!mS#zucispl00000000000001_frJJP0B~t=FJE?LZe(wAFLGsZb!BsOb1!pcb8~5LZ -gVbhc~DCM0u%!j0000805+CpN!(>A^ZNt<0Q3w103-ka00000000000HlF|A`Jj=X>c!Jc4cm4Z*nhk -WpQ<7b98erb97;Jb#q^1Z)9b2E^v8JO928D0~7!N00;m!mS#!jAj%JX1ONcU3jhEj00000000000001 -_fxagV0B~t=FJE?LZe(wAFLGsZb!BsOb1!pra&=>Lb#i5ME^v8JO928D0~7!N00;m!mS#x{=(3^?9{> -PjUH||c00000000000001_fqE4;YaCuNm0Rj{Q6aWAK2m -m&gW=WnnC&jq}003wO001cf0000000000005+c!%GbSaA|NaUv_0~WN&gWa%FLKWpi|MFK}UFYhh<)b -1z?CX>MtBUtcb8c~DCM0u%!j0000805+CpNpWmS{EY$t01pKK05Jdn00000000000HlG#P7MHXX>c!J -c4cm4Z*nhkWpQ<7b98eraA9L>VP|D?FJow7a%5$6FJE72ZfSI1UoLQYP)h*<6ay3h000O8HkM{dah$& -~caZ=9qCx=xF#rGn0000000000q=BDN4FGUya4%nWWo~3|axZdaadl;LbaO9oVPk7yXJvCQV`yP=WMy -WppoMX=gQXa&KZ~axQRrP)h*<6ay3h000O8HkM{dd -9qhoGXwwt$O!-dGXMYp0000000000q=C`q4FGUya4%nWWo~3|axZdaadl;LbaO9oVPk7yXJvCQV`yP= -WMykR; -KX>c!Jc4cm4Z*nhkWpQ<7b98eraA9L>VP|D?FJow7a%5$6FJow7a%5?9baH88b#!TOZZ2?nP)h*<6ay -3h000O8HkM{dIfAWpXZXc~DCM0u%!j0000805+CpN%$G)gIfat0B#2W0 -5$*s00000000000HlG3`3(SYX>c!Jc4cm4Z*nhkWpQ<7b98eraA9L>VP|D?FJow7a%5$6FJow7a&u*L -aB^>AWpXZXc~DCM0u%!j0000805+CpNx<0c!Jc4cm -4Z*nhkWpQ<7b98eraA9L>VP|D?FJow7a%5$6FJo_HX>Mn8bYXO5ZDC_*X>MgMaCuNm0Rj{Q6aWAK2mm -&gW=SCX-8oSL004yq001ul0000000000005+cZvhSfaA|NaUv_0~WN&gWa%FLKWpi|MFK}UFYhh<)b1 -!3PVRB?;bT4CXZE#_9E^v8JO928D0~7!N00;m!mS#!(Rlv`-0ssIv1pojt00000000000001_fei!>0 -B~t=FJE?LZe(wAFLGsZb!BsOb1!gVV{2h&WpgiMXkl_>WppoNZ*FsRVQzGDE^v8JO928D0~7!N00;m! -mS#z-1}4T#0{{T_1^@sw00000000000001_ffEM~0B~t=FJE?LZe(wAFLGsZb!BsOb1!gVV{2h&Wpgi -MXkl_>WppoNa5*$NaB^>AWpXZXc~DCM0u%!j0000805+CpNv18*IdKF40CNlg05Sjo00000000000Hl -Gj3Jw5pX>c!Jc4cm4Z*nhkWpQ<7b98eraA9L>VP|D?FJow7a%5$6FJ*IMaB^>AWpXZXc~DCM0u%!j00 -00805+CpN!CdH%*h1+0G}QJ04@Lk00000000000HlF(4-NouX>c!Jc4cm4Z*nhkWpQ<7b98eraA9L>V -P|D?FJow7a%5$6FJ*IMb8Rkgc~DCM0u%!j0000805+CpNvwRlMGFN00A3CN05kvq00000000000HlG3 -6%GJ!X>c!Jc4cm4Z*nhkWpQ<7b98eraA9L>VP|D?FJow7a%5$6FJ*OOYH)CJZ(?O~E^v8JO928D0~7! -N00;m!mS#yRWppoPbz^ICW^!e5E^v8JO928D0~7!N00;m!mS#x>v&Q5Z0{{Sv1^@sw000000000000 -01_f#Yrt0B~t=FJE?LZe(wAFLGsZb!BsOb1!gVV{2h&WpgiMXkl_>WppoPbz^ICaB^>AWpXZXc~DCM0 -u%!j0000805+CpNhMFC6yHDq062&M05Sjo00000000000HlFVat;7+X>c!Jc4cm4Z*nhkWpQ<7b98er -aA9L>VP|D?FJow7a%5$6FJ*OOba!TQWpOTWc~DCM0u%!j0000805+CpNiCu{R2c&R0E`9z05kvq0000 -0000000HlF^vkm}oX>c!Jc4cm4Z*nhkWpQ<7b98eraA9L>VP|D?FJow7a%5$6FJ*OOba!xaZ(?O~E^v -8JO928D0~7!N00;m!mS#ygjr0xcLI41(i~s;L00000000000001_f#|jl0B~t=FJE?LZe(wAFLGsZb! -BsOb1!gVV{2h&WpgiMXkl_>WppoRVlp!^GG=mRaV~IqP)h*<6ay3h000O8HkM{dAGO=|8Up|Tkp=(&H -2?qr0000000000q=6**4ghdza4%nWWo~3|axZdaadl;LbaO9oVPk7yXJvCQV`yP=WMyWppoSWnyw=cW`oVVr6nJaCuNm0Rj{Q6aWAK2mm&gW=WT?nhw -5J007gt001xm0000000000005+cPY@3PaA|NaUv_0~WN&gWa%FLKWpi|MFK}UFYhh<)b1!3PVRB?;bT -4XYb7pd7aV~IqP)h*<6ay3h000O8HkM{d8-?V^OA`P9luG~rF8}}l0000000000q=8#!4*+m!a4%nWW -o~3|axZdaadl;LbaO9oVPk7yXJvCQV`yP=WMyc!Jc4cm4Z*nhkWpQ<7b98eraA9L>VP|D?FJow7a%5$6FKl6 -MXJU11XJK+_VQy`2WMynFaCuNm0Rj{Q6aWAK2mm&gW=Wi$w`2Va002Ej0024w0000000000005+cScV -S(aA|NaUv_0~WN&gWa%FLKWpi|MFK}UFYhh<)b1!3PVRB?;bT4dSZf9e8a%pUAX=80~WMynFaCuNm0R -j{Q6aWAK2mm&gW=RntLmg!a002}m001`t0000000000005+ct&$G_aA|NaUv_0~WN&gWa%FLKWpi|MF -K}UFYhh<)b1!3PVRB?;bT4dSZf9q5Wo2t^Z)9a`E^v8JO928D0~7!N00;m!mS#yGqI(LS2><{#EC2vF -00000000000001_foGf#0B~t=FJE?LZe(wAFLGsZb!BsOb1!gVV{2h&WpgiMXkl_>WppoWVQyz=Wnyw -=cWrNEWo#~Rc~DCM0u%!j0000805+CpNl>?%e#Z&`0QfKf06PEx00000000000HlFirVjvcX>c!Jc4c -m4Z*nhkWpQ<7b98eraA9L>VP|D?FJow7a%5$6FKl6MXJ~b9XJK+_VQy`2WMynFaCuNm0Rj{Q6aWAK2m -m&gW=Tsue_iDY000Xt001@s0000000000005+cd$A7yaA|NaUv_0~WN&gWa%FLKWpi|MFK}UFYhh<)b -1!3PVRB?;bT4dSZfA68VQFn|WMynFaCuNm0Rj{Q6aWAK2mm&gW=Z9ms+oHR003|l001=r0000000000 -005+cw7d@haA|NaUv_0~WN&gWa%FLKWpi|MFK}UFYhh<)b1!3PVRB?;bT4dSbZKreaB^>AWpXZXc~DC -M0u%!j0000805+CpNu``|bDabL0K^Oc05|{u00000000000HlF}!w&#(X>c!Jc4cm4Z*nhkWpQ<7b98 -eraA9L>VP|D?FJow7a%5$6FKuFDXkl`5Wpr?IZ(?O~E^v8JO928D0~7!N00;m!mS#!LjE_560{{T82L -J##00000000000001_fpy3a0B~t=FJE?LZe(wAFLGsZb!BsOb1!gVV{2h&WpgiMXkl_>WppoXVqa -&L8TaB^>AWpXZXc~DCM0u%!j0000805+CpN%7@pnoJA;0ESEe051Rl00000000000HlE=%ntx?X>c!J -c4cm4Z*nhkWpQ<7b98eraA9L>VP|D?FJow7a%5$6FKuFDb8~GjaCuNm0Rj{Q6aWAK2mm&gW=Z-Q6}Wl -^006lX001}u0000000000005+cz1R-`aA|NaUv_0~WN&gWa%FLKWpi|MFK}UFYhh<)b1!3PVRB?;bT4 -yaV`yP=b7gdJa&KZ~axQRrP)h*<6ay3h000O8HkM{dq}=7dBm@8e+YA5zH~;_u0000000000q=Aj!4* -+m!a4%nWWo~3|axZdaadl;LbaO9oVPk7yXJvCQV`yP=WMy)LLZ(?O~E^v8JO928D0~7!N00;m!mS#zWppofZfSO9a&uv9WMy<^V{~ -tFE^v8JO928D0~7!N00;m!mS#y``ygu`1ONbB3IG5z00000000000001_fdugn0B~t=FJE?LZe(wAFL -GsZb!BsOb1!gVV{2h&WpgiMXkl_>WppofbY?hka&KZ~axQRrP)h*<6ay3h000O8HkM{d&d{T~b_4(bB -ntolF#rGn0000000000q=9qw4*+m!a4%nWWo~3|axZdaadl;LbaO9oVPk7yXJvCQb#iQMX<{=kUtei% -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 -hDaCuNm0Rj{Q6aWAK2mm&gW=Sx?%(G_$005N<000^Q0000000000005+c#5NHCaA|NaV{dJ3VQyq|FJ -o_QaBO9CX>V>WaCuNm0Rj{Q6aWAK2mm&gW=Yu|nWhv7004p>000;O0000000000005+cV>%H4aA|NaV -{dJ3VQyq|FJy0bZftL1WG--dP)h*<6ay3h000O8HkM{d!}jxF*#iIo6AJ(U761SM0000000000q=BtM -5dd&$a4%zTZEaz0WOFZOa%E+DWiD`eP)h*<6ay3h000O8HkM{d_=)VKy#fFLJq7>(6aWAK000000000 -0q=C9d5dd&$a4%zTZEaz0WOFZQVRL9MaCuNm0Rj{Q6aWAK2mm&gW=S3v(4DFQ007nl000yK00000000 -00005+csYww4aA|NaV{dJ3VQyq|FKA_Ka4v9pP)h*<6ay3h000O8HkM{dOC^RDv=0CP1VjJ;7XSbN00 -00000000q=AJ?5dd&$a4%zTZEaz0WOFZRZgX^DY-}!Yc~DCM0u%!j0000805+CpNe@fMIKK-30BI}$0 -2BZK00000000000HlF#TM+c!NZ*6U1Ze(*WY-w|JE^v8JO928D0~7!N00;m!mS#z=LWJBV1^@t- -5dZ)d00000000000001_fnR440B~t=FJo_QZDDR?b1!pcVRB<=E^v8JO928D0~7!N00;m!mS#x|Qy(P -!1^@s97XSbh00000000000001_fw^rF0B~t=FJo_QZDDR?b1!pfZ+9+mc~DCM0u%!j0000805+CpNvn -w&KhOgJ07MG_02u%P00000000000HlHEbP)h>X>c!NZ*6U1Ze(*Wb#7^Hb97;BY%XwlP)h*<6ay3h00 -0O8HkM{dmp60f{09I4F&+Q_6#xJL0000000000q=D{u5dd&$a4%zTZEaz0WOFZfXk}$=E^v8JO928D0 -~7!N00;m!mS#zrC#iAl1^@s+5&!@e00000000000001_fgOPn0B~t=FJo_QaA9;WUtei%X>?y-E^v8J -O928D0~7!N00;m!mS#zUqNSHj6#xJ@S^xkT00000000000001_fjx*30B~t=FJo_QaA9;WWNBk`V{dL -|X=g5Qc~DCM0u%!j0000805+CpNvaxWyg>i}07n1-02TlM00000000000HlGyoe=c!XZ)9a`b1z -?CX>MtBUtcb8c~DCM0u%!j0000805+CpNoYc!XZ) -9a`b1!LbWMz0RaCuNm0Rj{Q6aWAK2mm&gW=Q}50006200000000^Q0000000000005+cN1qV@aA|NaZ -*XODVRUJ4ZgVeRUukY>bYEXCaCuNm0Rj{Q6aWAK2mm&gW=YRwVyLbG001@y000*N0000000000005+c -fu9ioaA|NaZ*XODVRUJ4ZgVeVXk}w-E^v8JO928D0~7!N00;m!mS#!$A~Q391poj_6aWAi000000000 -00001_fn=c(0B~t=FK=*Va$$67Z*FrhW^!d^dSxzfc~DCM0u%!j0000805+CpNnB~t8Grx)02BcL022 -TJ00000000000HlE$rx5^fX>c!cWpOWGUukY>bYEXCaCuNm0Rj{Q6aWAK2mm&gW=S02j0$ND005RQ00 -0vJ0000000000005+c%cl_laA|Naa%FKZa%FK}W@&6?E^v8JO928D0~7!N00;m!mS#zTZB@hfEdT(Qw -EzGX00000000000001_fn~K30B~t=FLGsZFLGsZUukZ0bYX04E^v8JO928D0~7!N00;m!mS#y3-I8{* -ApiiLh5!H(00000000000001_fso@70B~t=FLGsZFLGsZUvp)2E^v8JO928D0~7!N00;m!mS#x>M#OM -X2mk=_8UO$o00000000000001_fpY~C0B~t=FLGsZFLGsZUv+M2ZgX^DY-}!Yc~DCM0u%!j0000805+ -CpN#I(vz7rt;05fU;02KfL00000000000HlHW4H5uwX>c!fbZKmJFJE72ZfSI1UoLQYP)h*<6ay3h00 -0O8HkM{dH45H4sR{r9Ya##u6aWAK0000000000q=7##5&&>%a4&UqX>4;ZVQ_F{X>xNeaCuNm0Rj{Q6 -aWAK2mm&gW=YKqO)dZe001Bb000sI0000000000005+c8afgHaA|Nab#!TLb1!0bX>4RJaCuNm0Rj{Q -6aWAK2mm&gW=U}#Y9s~&006iM000;O0000000000005+cN<0z(aA|Nab#!TLb1!6NaB^j1VRUJ4ZZ2? -nP)h*<6ay3h000O8HkM{dy;?u8x&Z(H%L4!a6#xJL0000000000q=AM%5&&>%a4&UqX>4;ZWo~0{WNB -_^E^v8JO928D0~7!N00;m!mS#!vL+!w%0RRAl0{{RQ00000000000001_fpb9;0B~t=FLiWjY;!MWX> -4V4d2@7SZ7y(mP)h*<6ay3h000O8HkM{dAU6ec-~<2wdkX*n5&!@I0000000000q=8IB5&&>%a4&UqX ->4;ZXKZO=V=i!cP)h*<6ay3h000O8HkM{dsWj;XeFOjiG7A6z6951J0000000000q=8&W5&&>%a4&Uq -X>4;ZXkl|`WpgfYc~DCM0u%!j0000805+CpNoOY4c(Vim0RIdC02BZK00000000000HlEmO%ecbX>c! -fbZKmJFKlmTXK8L{E^v8JO928D0~7!N00;m!mS#yvRM_f?1^@t06#xJg00000000000001_f$vcg0B~ -t=FLiWjY;!Mfb#!E5bY)~NaCuNm0Rj{Q6aWAK2mm&gW=Rd^lDOvr001Be000&M0000000000005+ct5 -^~MaA|Nab#!TLb1!gVV{2h&X>MmOaCuNm0Rj{Q6aWAK2mm&gW=R&J@=Ch^000&N0012T00000000000 -05+c##<5qaA|Nab#!TLb1!pcbailaZ*OdKUt)D>Y-BEQc~DCM0u%!j0000805+CpN#){@m0}J608K3b -01p5F00000000000HlGuToM3qX>c!fbZKmJFLh}yaCuNm0Rj{Q6aWAK2mm&gW=Y6a#Y^K20034n000v -J0000000000005+cOKTDUaA|Nac4KodUtei%X>?y-E^v8JO928D0~7!N00;m!mS#!&z|6%n1pols4gd -fV00000000000001_fnRwN0B~t=FLq;dFJfVOVPSGEaCuNm0Rj{Q6aWAK2mm&gW=SZ%-Y@_S006x!00 -0gE0000000000005+c!G00|aA|Nac4KodXK8dUaCuNm0Rj{Q6aWAK2mm&gW=VNsY8_z&0058;000yK0 -000000000005+c?TZosaA|Nac4KodZDn#}b#iH8Y%XwlP)h*<6ay3h000O8HkM{dZZwraAPWEhh9m$0 -6#xJL0000000000q=A5t5&&>%a4&Xab1!psVs>S6b7^mGE^v8JO928D0~7!N00;m&mS#z-aWq#E0ssI -91poje00000000000001_fzz830B~t=EjcbQE-@}-X>)WfX>Mk3FGNLCLsCglR7p=xE^>2pP)h*<6ay -3h000O8I+kWhZ!-C~DgXcgL;wH)Bme*a0000000000q=6-#5&&>%a4k75FfK7JWNCABEop9MZ!cwTba -HuLaBpdDbaO6rcyv%p0Rj{Q6aWAK2mm^kW=YQ5y3cct$E-)@JE@WwQbS-IaW^XTaZ*X61Wp-t3E_8TwP)h*<6ay3h000O8I+kWhtJ{J -TUjP6AZU6uP82|tP0000000000q=A&75&&>%a4k75FfK7JWNCABEop9MZ!cF!MMX?dO928D0~7!N00; -m&mS#y_txRE}0{{Tw2><{b00000000000001_fhwXB0B~t=EjcbQE-@}-X>)WfX>Mk3FHJ>MK}11RK~ -PHp0u%!j0000806LatN$y5^m0m3X0LEPa02%-Q00000000000HlEirV;>fX>ct$E-)@JE@WwQbS-IaW -^XT2MMF Date: Fri, 28 Apr 2017 11:29:30 +0200 Subject: [PATCH 070/169] Allow multiple recipients for SMTP notify (#7319) The existing (singular) configuration keyword is kept for compatibility. --- homeassistant/components/notify/smtp.py | 10 +++++----- tests/components/notify/test_smtp.py | 5 +++-- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/homeassistant/components/notify/smtp.py b/homeassistant/components/notify/smtp.py index fbfa9e7a970..3b76f87e91c 100644 --- a/homeassistant/components/notify/smtp.py +++ b/homeassistant/components/notify/smtp.py @@ -39,7 +39,7 @@ DEFAULT_STARTTLS = False # pylint: disable=no-value-for-parameter PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ - vol.Required(CONF_RECIPIENT): vol.Email(), + vol.Required(CONF_RECIPIENT): vol.All(cv.ensure_list, [vol.Email()]), vol.Optional(CONF_SERVER, default=DEFAULT_HOST): cv.string, vol.Optional(CONF_PORT, default=DEFAULT_PORT): cv.port, vol.Optional(CONF_TIMEOUT, default=DEFAULT_TIMEOUT): cv.positive_int, @@ -74,7 +74,7 @@ class MailNotificationService(BaseNotificationService): """Implement the notification service for E-Mail messages.""" def __init__(self, server, port, timeout, sender, starttls, username, - password, recipient, debug): + password, recipients, debug): """Initialize the service.""" self._server = server self._port = port @@ -83,7 +83,7 @@ class MailNotificationService(BaseNotificationService): self.starttls = starttls self.username = username self.password = password - self.recipient = recipient + self.recipients = recipients self.debug = debug self.tries = 2 @@ -139,7 +139,7 @@ class MailNotificationService(BaseNotificationService): msg = _build_text_msg(message) msg['Subject'] = subject - msg['To'] = self.recipient + msg['To'] = ','.join(self.recipients) msg['From'] = self._sender msg['X-Mailer'] = 'HomeAssistant' msg['Date'] = email.utils.format_datetime(dt_util.now()) @@ -152,7 +152,7 @@ class MailNotificationService(BaseNotificationService): mail = self.connect() for _ in range(self.tries): try: - mail.sendmail(self._sender, self.recipient, + mail.sendmail(self._sender, self.recipients, msg.as_string()) break except smtplib.SMTPException: diff --git a/tests/components/notify/test_smtp.py b/tests/components/notify/test_smtp.py index 6e8f85bcf86..016c6a5d1f4 100644 --- a/tests/components/notify/test_smtp.py +++ b/tests/components/notify/test_smtp.py @@ -22,7 +22,8 @@ class TestNotifySmtp(unittest.TestCase): """Setup things to be run when tests are started.""" self.hass = get_test_home_assistant() self.mailer = MockSMTP('localhost', 25, 5, 'test@test.com', 1, - 'testuser', 'testpass', 'testrecip@test.com', 0) + 'testuser', 'testpass', + ['recip1@example.com', 'testrecip@test.com'], 0) def tearDown(self): # pylint: disable=invalid-name """"Stop down everything that was started.""" @@ -36,7 +37,7 @@ class TestNotifySmtp(unittest.TestCase): 'MIME-Version: 1.0\n' 'Content-Transfer-Encoding: 7bit\n' 'Subject: Home Assistant\n' - 'To: testrecip@test.com\n' + 'To: recip1@example.com,testrecip@test.com\n' 'From: test@test.com\n' 'X-Mailer: HomeAssistant\n' 'Date: [^\n]+\n' From 8114c45b3dcf8c8208f00cf09575f1d1d88e3765 Mon Sep 17 00:00:00 2001 From: Thibault Cohen Date: Fri, 28 Apr 2017 05:52:48 -0400 Subject: [PATCH 071/169] Add auxheat to ecobee climate (#6562) * Add auxheat to ecobee * Add is_aux_heat_on property in ecobee climate --- homeassistant/components/climate/ecobee.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/homeassistant/components/climate/ecobee.py b/homeassistant/components/climate/ecobee.py index c9403fbf2ed..17155ffa791 100644 --- a/homeassistant/components/climate/ecobee.py +++ b/homeassistant/components/climate/ecobee.py @@ -278,6 +278,11 @@ class Thermostat(ClimateDevice): """Return true if away mode is on.""" return self.current_hold_mode == 'away' + @property + def is_aux_heat_on(self): + """Return true if aux heater.""" + return 'auxHeat' in self.thermostat['equipmentStatus'] + def turn_away_mode_on(self): """Turn away on.""" self.set_hold_mode('away') From 9dd28ac18fba50e07034372b4d975f04aeaafac4 Mon Sep 17 00:00:00 2001 From: Robbie Trencheny Date: Fri, 28 Apr 2017 03:26:17 -0700 Subject: [PATCH 072/169] Properly return self._unit_of_measurement in the unit_of_measurement function (#7341) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add an optional extended description… --- homeassistant/components/sensor/ios.py | 1 + 1 file changed, 1 insertion(+) diff --git a/homeassistant/components/sensor/ios.py b/homeassistant/components/sensor/ios.py index 3173eec4285..1455431e5f7 100644 --- a/homeassistant/components/sensor/ios.py +++ b/homeassistant/components/sensor/ios.py @@ -63,6 +63,7 @@ class IOSSensor(Entity): @property def unit_of_measurement(self): """Return the unit of measurement this sensor expresses itself in.""" + return self._unit_of_measurement @property def device_state_attributes(self): From f9c9b3c1b8f5e38d2e6d0a0649715fb6684209a9 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Fri, 28 Apr 2017 13:25:39 +0200 Subject: [PATCH 073/169] Multiple changes (typo, ordering, docstrings, timeouts) (#7343) * Multiple changes (typo, ordering, docstrings, timeouts) * Remove debug output * Catch exception * Separate URL --- homeassistant/components/cover/garadget.py | 142 ++++++++++----------- 1 file changed, 66 insertions(+), 76 deletions(-) diff --git a/homeassistant/components/cover/garadget.py b/homeassistant/components/cover/garadget.py index 04df954aac6..457312c8a4a 100644 --- a/homeassistant/components/cover/garadget.py +++ b/homeassistant/components/cover/garadget.py @@ -1,73 +1,68 @@ """ -Platform for the garadget cover component. +Platform for the Garadget cover component. For more details about this platform, please refer to the documentation https://home-assistant.io/components/garadget/ """ import logging +import requests import voluptuous as vol -import requests - +import homeassistant.helpers.config_validation as cv from homeassistant.components.cover import CoverDevice, PLATFORM_SCHEMA from homeassistant.helpers.event import track_utc_time_change -from homeassistant.const import CONF_DEVICE, CONF_USERNAME, CONF_PASSWORD,\ - CONF_ACCESS_TOKEN, CONF_NAME, STATE_UNKNOWN, STATE_CLOSED, STATE_OPEN,\ - CONF_COVERS -import homeassistant.helpers.config_validation as cv +from homeassistant.const import ( + CONF_DEVICE, CONF_USERNAME, CONF_PASSWORD, CONF_ACCESS_TOKEN, CONF_NAME, + STATE_UNKNOWN, STATE_CLOSED, STATE_OPEN, CONF_COVERS) + +_LOGGER = logging.getLogger(__name__) + +ATTR_AVAILABLE = "available" +ATTR_SENSOR_STRENGTH = "sensor reflection rate" +ATTR_SIGNAL_STRENGTH = "wifi signal strength (dB)" +ATTR_TIME_IN_STATE = "time in state" DEFAULT_NAME = 'Garadget' -ATTR_SIGNAL_STRENGTH = "wifi signal strength (dB)" -ATTR_TIME_IN_STATE = "time in state" -ATTR_SENSOR_STRENGTH = "sensor reflection rate" -ATTR_AVAILABLE = "available" - -STATE_OPENING = "opening" -STATE_CLOSING = "closing" -STATE_STOPPED = "stopped" -STATE_OFFLINE = "offline" +STATE_CLOSING = 'closing' +STATE_OFFLINE = 'offline' +STATE_OPENING = 'opening' +STATE_STOPPED = 'stopped' STATES_MAP = { - "open": STATE_OPEN, - "opening": STATE_OPENING, - "closed": STATE_CLOSED, - "closing": STATE_CLOSING, - "stopped": STATE_STOPPED + 'open': STATE_OPEN, + 'opening': STATE_OPENING, + 'closed': STATE_CLOSED, + 'closing': STATE_CLOSING, + 'stopped': STATE_STOPPED } - -# Validation of the user's configuration COVER_SCHEMA = vol.Schema({ - vol.Optional(CONF_DEVICE): cv.string, - vol.Optional(CONF_USERNAME): cv.string, - vol.Optional(CONF_PASSWORD): cv.string, vol.Optional(CONF_ACCESS_TOKEN): cv.string, - vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string + vol.Optional(CONF_DEVICE): cv.string, + vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string, + vol.Optional(CONF_PASSWORD): cv.string, + vol.Optional(CONF_USERNAME): cv.string, }) PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ vol.Required(CONF_COVERS): vol.Schema({cv.slug: COVER_SCHEMA}), }) -_LOGGER = logging.getLogger(__name__) - def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the Demo covers.""" + """Set up the Garadget covers.""" covers = [] - devices = config.get(CONF_COVERS, {}) - - _LOGGER.debug(devices) + devices = config.get(CONF_COVERS) for device_id, device_config in devices.items(): args = { - "name": device_config.get(CONF_NAME), - "device_id": device_config.get(CONF_DEVICE, device_id), - "username": device_config.get(CONF_USERNAME), - "password": device_config.get(CONF_PASSWORD), - "access_token": device_config.get(CONF_ACCESS_TOKEN) + 'name': device_config.get(CONF_NAME), + 'device_id': device_config.get(CONF_DEVICE, device_id), + 'username': device_config.get(CONF_USERNAME), + 'password': device_config.get(CONF_PASSWORD), + 'access_token': device_config.get(CONF_ACCESS_TOKEN) } covers.append(GaradgetCover(hass, args)) @@ -76,9 +71,9 @@ def setup_platform(hass, config, add_devices, discovery_info=None): class GaradgetCover(CoverDevice): - """Representation of a demo cover.""" + """Representation of a Garadget cover.""" - # pylint: disable=no-self-use, too-many-instance-attributes + # pylint: disable=no-self-use def __init__(self, hass, args): """Initialize the cover.""" self.particle_url = 'https://api.particle.io' @@ -100,21 +95,20 @@ class GaradgetCover(CoverDevice): self.access_token = self.get_token() self._obtained_token = True - # Lets try to get the configured name if not provided. try: if self._name is None: - doorconfig = self._get_variable("doorConfig") - if doorconfig["nme"] is not None: - self._name = doorconfig["nme"] + doorconfig = self._get_variable('doorConfig') + if doorconfig['nme'] is not None: + self._name = doorconfig['nme'] self.update() except requests.exceptions.ConnectionError as ex: - _LOGGER.error('Unable to connect to server: %(reason)s', - dict(reason=ex)) + _LOGGER.error( + "Unable to connect to server: %(reason)s", dict(reason=ex)) self._state = STATE_OFFLINE self._available = False self._name = DEFAULT_NAME except KeyError as ex: - _LOGGER.warning('Garadget device %(device)s seems to be offline', + _LOGGER.warning("Garadget device %(device)s seems to be offline", dict(device=self.device_id)) self._name = DEFAULT_NAME self._state = STATE_OFFLINE @@ -181,18 +175,20 @@ class GaradgetCover(CoverDevice): 'password': self._password } url = '{}/oauth/token'.format(self.particle_url) - ret = requests.post(url, - auth=('particle', 'particle'), - data=args) + ret = requests.post( + url, auth=('particle', 'particle'), data=args, timeout=10) - return ret.json()['access_token'] + try: + return ret.json()['access_token'] + except KeyError: + _LOGGER.error("Unable to retrieve access token") def remove_token(self): """Remove authorization token from API.""" - ret = requests.delete('{}/v1/access_tokens/{}'.format( - self.particle_url, - self.access_token), - auth=(self._username, self._password)) + url = '{}/v1/access_tokens/{}'.format( + self.particle_url, self.access_token) + ret = requests.delete( + url, auth=(self._username, self._password), timeout=10) return ret.text def _start_watcher(self, command): @@ -208,41 +204,41 @@ class GaradgetCover(CoverDevice): def close_cover(self): """Close the cover.""" - if self._state not in ["close", "closing"]: - ret = self._put_command("setState", "close") + if self._state not in ['close', 'closing']: + ret = self._put_command('setState', 'close') self._start_watcher('close') return ret.get('return_value') == 1 def open_cover(self): """Open the cover.""" - if self._state not in ["open", "opening"]: - ret = self._put_command("setState", "open") + if self._state not in ['open', 'opening']: + ret = self._put_command('setState', 'open') self._start_watcher('open') return ret.get('return_value') == 1 def stop_cover(self): """Stop the door where it is.""" - if self._state not in ["stopped"]: - ret = self._put_command("setState", "stop") + if self._state not in ['stopped']: + ret = self._put_command('setState', 'stop') self._start_watcher('stop') return ret['return_value'] == 1 def update(self): """Get updated status from API.""" try: - status = self._get_variable("doorStatus") + status = self._get_variable('doorStatus') _LOGGER.debug("Current Status: %s", status['status']) self._state = STATES_MAP.get(status['status'], STATE_UNKNOWN) self.time_in_state = status['time'] self.signal = status['signal'] self.sensor = status['sensor'] - self._availble = True + self._available = True except requests.exceptions.ConnectionError as ex: - _LOGGER.error('Unable to connect to server: %(reason)s', - dict(reason=ex)) + _LOGGER.error( + "Unable to connect to server: %(reason)s", dict(reason=ex)) self._state = STATE_OFFLINE except KeyError as ex: - _LOGGER.warning('Garadget device %(device)s seems to be offline', + _LOGGER.warning("Garadget device %(device)s seems to be offline", dict(device=self.device_id)) self._state = STATE_OFFLINE @@ -254,12 +250,8 @@ class GaradgetCover(CoverDevice): def _get_variable(self, var): """Get latest status.""" url = '{}/v1/devices/{}/{}?access_token={}'.format( - self.particle_url, - self.device_id, - var, - self.access_token, - ) - ret = requests.get(url) + self.particle_url, self.device_id, var, self.access_token) + ret = requests.get(url, timeout=10) result = {} for pairs in ret.json()['result'].split('|'): key = pairs.split('=') @@ -272,8 +264,6 @@ class GaradgetCover(CoverDevice): if arg: params['command'] = arg url = '{}/v1/devices/{}/{}'.format( - self.particle_url, - self.device_id, - func) - ret = requests.post(url, data=params) + self.particle_url, self.device_id, func) + ret = requests.post(url, data=params, timeout=10) return ret.json() From bbe8b2019bf04a16f1222a54e90c1bf1bb49ff79 Mon Sep 17 00:00:00 2001 From: Brian Cribbs Date: Fri, 28 Apr 2017 10:45:32 -0400 Subject: [PATCH 074/169] style/lint updates --- homeassistant/components/cover/mqtt.py | 66 +++++++++++++------------- 1 file changed, 33 insertions(+), 33 deletions(-) diff --git a/homeassistant/components/cover/mqtt.py b/homeassistant/components/cover/mqtt.py index e8cc784893d..1eb8c64880f 100644 --- a/homeassistant/components/cover/mqtt.py +++ b/homeassistant/components/cover/mqtt.py @@ -61,15 +61,15 @@ PLATFORM_SCHEMA = mqtt.MQTT_RW_PLATFORM_SCHEMA.extend({ vol.Optional(CONF_STATE_CLOSED, default=STATE_CLOSED): cv.string, vol.Optional(CONF_OPTIMISTIC, default=DEFAULT_OPTIMISTIC): cv.boolean, vol.Optional(CONF_TILT_CLOSED_POSITION, - default=DEFAULT_TILT_CLOSED_POSITION): cv.string, - vol.Optional(CONF_TILT_OPEN_POSITION, - default=DEFAULT_TILT_OPEN_POSITION): cv.string, - vol.Optional(CONF_DEVICE_CLASS, - default=DEFAULT_DEVICE_CLASS): cv.string, - vol.Optional(CONF_TILT_MIN, - default=DEFAULT_TILT_MIN): cv.string, - vol.Optional(CONF_TILT_MAX, - default=DEFAULT_TILT_MAX): cv.string, + default=DEFAULT_TILT_CLOSED_POSITION): cv.string, + vol.Optional(CONF_TILT_OPEN_POSITION, + default=DEFAULT_TILT_OPEN_POSITION): cv.string, + vol.Optional(CONF_DEVICE_CLASS, + default=DEFAULT_DEVICE_CLASS): cv.string, + vol.Optional(CONF_TILT_MIN, + default=DEFAULT_TILT_MIN): cv.string, + vol.Optional(CONF_TILT_MAX, + default=DEFAULT_TILT_MAX): cv.string, }) @@ -107,14 +107,15 @@ def async_setup_platform(hass, config, async_add_devices, discovery_info=None): class MqttCover(CoverDevice): """Representation of a cover that can be controlled using MQTT.""" - def __init__(self, name, state_topic, command_topic, tilt_command_topic, - tilt_status_topic, qos, retain, state_open, state_closed, - payload_open, payload_close, payload_stop, payload_tilt, - optimistic, value_template, tilt_open_position, - tilt_closed_position, device_class, tilt_min, tilt_max): + def __init__(self, name, state_topic, command_topic, tilt_command_topic, + tilt_status_topic, qos, retain, state_open, state_closed, + payload_open, payload_close, payload_stop, payload_tilt, + optimistic, value_template, tilt_open_position, + tilt_closed_position, device_class, tilt_min, tilt_max): """Initialize the cover.""" if tilt_command_topic is not None: - _LOGGER.info("MQTT cover configured with tilt topic: " + tilt_command_topic) + _LOGGER.info("MQTT cover configured with tilt topic: " + + tilt_command_topic) self._position = None self._state = None self._name = name @@ -147,13 +148,12 @@ class MqttCover(CoverDevice): """ @callback def tilt_updated(topic, payload, qos): - """The tilt was updated""" - if (payload.isnumeric() and - self._tilt_min <= int(payload) - and int(payload) <= self._tilt_max): - """The payload was a valid tilt value""" - tiltRange = self._tilt_max - self._tilt_min - level = round(float(payload) / tiltRange * 100.0) + """The tilt was updated.""" + if (payload.isnumeric() and + self._tilt_min <= int(payload) + and int(payload) <= self._tilt_max): + tilt_range = self._tilt_max - self._tilt_min + level = round(float(payload) / tilt_range * 100.0) self._tilt_value = level _LOGGER.info("Tilt value set to " + str(self._tilt_value)) self.schedule_update_ha_state() @@ -263,18 +263,18 @@ class MqttCover(CoverDevice): @asyncio.coroutine def async_open_cover_tilt(self, **kwargs): """Tilt the cover open.""" - mqtt.async_publish(self.hass, self._tilt_command_topic, - self._tilt_open_position, self._qos, self._retain) - + mqtt.async_publish(self.hass, self._tilt_command_topic, + self._tilt_open_position, self._qos, self._retain) + @asyncio.coroutine def async_close_cover_tilt(self, **kwargs): """Tilt the cover closed.""" - mqtt.async_publish(self.hass, self._tilt_command_topic, - self._tilt_closed_position, self._qos, self._retain) - + mqtt.async_publish(self.hass, self._tilt_command_topic, + self._tilt_closed_position, self._qos, self._retain) + @property def current_cover_tilt_position(self): - """Return current position of cover tilt""" + """Return current position of cover tilt.""" return self._tilt_value def async_set_cover_tilt_position(self, **kwargs): @@ -282,11 +282,11 @@ class MqttCover(CoverDevice): if ATTR_TILT_POSITION in kwargs: position = float(kwargs[ATTR_TILT_POSITION]) - """The position needs to be between min and max""" - tiltRange = self._tilt_max - self._tilt_min + #The position needs to be between min and max + tilt_range = self._tilt_max - self._tilt_min percentage = position / 100.0 - level = round(tiltRange * percentage) + level = round(tilt_range * percentage) _LOGGER.info("setting tilt value to " + str(level)) mqtt.async_publish(self.hass, self._tilt_command_topic, - level, self._qos, self._retain) \ No newline at end of file + level, self._qos, self._retain) From 44dbf2678b95bd0c419efdac1391cceb04ab73b8 Mon Sep 17 00:00:00 2001 From: Brian Cribbs Date: Fri, 28 Apr 2017 11:32:42 -0400 Subject: [PATCH 075/169] adding tests to cover new functionality --- tests/components/cover/test_mqtt.py | 208 ++++++++++++++++++++++++++++ 1 file changed, 208 insertions(+) diff --git a/tests/components/cover/test_mqtt.py b/tests/components/cover/test_mqtt.py index 5cd79fdb74c..02f476475f4 100644 --- a/tests/components/cover/test_mqtt.py +++ b/tests/components/cover/test_mqtt.py @@ -237,3 +237,211 @@ class TestCoverMQTT(unittest.TestCase): current_cover_position = self.hass.states.get( 'cover.test').attributes['current_position'] self.assertEqual(50, current_cover_position) + + def test_tilt_defaults(self): + self.assertTrue(setup_component(self.hass, cover.DOMAIN, { + cover.DOMAIN: { + 'platform': 'mqtt', + 'name': 'test', + 'state_topic': 'state-topic', + 'command_topic': 'command-topic', + 'qos': 0, + 'payload_open': 'OPEN', + 'payload_close': 'CLOSE', + 'payload_stop': 'STOP', + 'tilt_command_topic': 'tilt-command', + 'tilt_status_topic': 'tilt-status' + } + })) + + state_attributes_dict = self.hass.states.get( + 'cover.test').attributes + self.assertTrue('current_tilt_position' in state_attributes_dict) + + current_cover_position = self.hass.states.get( + 'cover.test').attributes['current_tilt_position'] + self.assertEqual(STATE_UNKNOWN, current_cover_position) + + + def test_tilt_defaults(self): + self.assertTrue(setup_component(self.hass, cover.DOMAIN, { + cover.DOMAIN: { + 'platform': 'mqtt', + 'name': 'test', + 'state_topic': 'state-topic', + 'command_topic': 'command-topic', + 'qos': 0, + 'payload_open': 'OPEN', + 'payload_close': 'CLOSE', + 'payload_stop': 'STOP', + 'tilt_command_topic': 'tilt-command-topic', + 'tilt_status_topic': 'tilt-status-topic' + } + })) + + cover.open_cover_tilt(self.hass, 'cover.test') + self.hass.block_till_done() + + self.assertEqual(('tilt-command-topic', '100', 0, False), + self.mock_publish.mock_calls[-2][1]) + + cover.close_cover_tilt(self.hass, 'cover.test') + self.hass.block_till_done() + + self.assertEqual(('tilt-command-topic', '0', 0, False), + self.mock_publish.mock_calls[-2][1]) + + def test_tilt_given_value(self): + self.assertTrue(setup_component(self.hass, cover.DOMAIN, { + cover.DOMAIN: { + 'platform': 'mqtt', + 'name': 'test', + 'state_topic': 'state-topic', + 'command_topic': 'command-topic', + 'qos': 0, + 'payload_open': 'OPEN', + 'payload_close': 'CLOSE', + 'payload_stop': 'STOP', + 'tilt_command_topic': 'tilt-command-topic', + 'tilt_status_topic': 'tilt-status-topic', + 'tilt_opened_value': '400', + 'tilt_closed_value': '125' + } + })) + + cover.open_cover_tilt(self.hass, 'cover.test') + self.hass.block_till_done() + + self.assertEqual(('tilt-command-topic', '400', 0, False), + self.mock_publish.mock_calls[-2][1]) + + cover.close_cover_tilt(self.hass, 'cover.test') + self.hass.block_till_done() + + self.assertEqual(('tilt-command-topic', '125', 0, False), + self.mock_publish.mock_calls[-2][1]) + + def test_tilt_via_topic(self): + self.assertTrue(setup_component(self.hass, cover.DOMAIN, { + cover.DOMAIN: { + 'platform': 'mqtt', + 'name': 'test', + 'state_topic': 'state-topic', + 'command_topic': 'command-topic', + 'qos': 0, + 'payload_open': 'OPEN', + 'payload_close': 'CLOSE', + 'payload_stop': 'STOP', + 'tilt_command_topic': 'tilt-command-topic', + 'tilt_status_topic': 'tilt-status-topic', + 'tilt_opened_value': '400', + 'tilt_closed_value': '125' + } + })) + + fire_mqtt_message(self.hass, 'tilt-status-topic', '0') + self.hass.block_till_done() + + current_cover_tilt_position = self.hass.states.get( + 'cover.test').attributes['current_tilt_position'] + self.assertEqual(0, current_cover_tilt_position) + + + fire_mqtt_message(self.hass, 'tilt-status-topic', '50') + self.hass.block_till_done() + + current_cover_tilt_position = self.hass.states.get( + 'cover.test').attributes['current_tilt_position'] + self.assertEqual(50, current_cover_tilt_position) + + def test_tilt_via_topic_altered_range(self): + self.assertTrue(setup_component(self.hass, cover.DOMAIN, { + cover.DOMAIN: { + 'platform': 'mqtt', + 'name': 'test', + 'state_topic': 'state-topic', + 'command_topic': 'command-topic', + 'qos': 0, + 'payload_open': 'OPEN', + 'payload_close': 'CLOSE', + 'payload_stop': 'STOP', + 'tilt_command_topic': 'tilt-command-topic', + 'tilt_status_topic': 'tilt-status-topic', + 'tilt_opened_value': '400', + 'tilt_closed_value': '125', + 'tilt_min': '0', + 'tilt_max': '50' + } + })) + + fire_mqtt_message(self.hass, 'tilt-status-topic', '0') + self.hass.block_till_done() + + current_cover_tilt_position = self.hass.states.get( + 'cover.test').attributes['current_tilt_position'] + self.assertEqual(0, current_cover_tilt_position) + + + fire_mqtt_message(self.hass, 'tilt-status-topic', '50') + self.hass.block_till_done() + + current_cover_tilt_position = self.hass.states.get( + 'cover.test').attributes['current_tilt_position'] + self.assertEqual(100, current_cover_tilt_position) + + fire_mqtt_message(self.hass, 'tilt-status-topic', '25') + self.hass.block_till_done() + + current_cover_tilt_position = self.hass.states.get( + 'cover.test').attributes['current_tilt_position'] + self.assertEqual(50, current_cover_tilt_position) + + def test_tilt_position(self): + self.assertTrue(setup_component(self.hass, cover.DOMAIN, { + cover.DOMAIN: { + 'platform': 'mqtt', + 'name': 'test', + 'state_topic': 'state-topic', + 'command_topic': 'command-topic', + 'qos': 0, + 'payload_open': 'OPEN', + 'payload_close': 'CLOSE', + 'payload_stop': 'STOP', + 'tilt_command_topic': 'tilt-command-topic', + 'tilt_status_topic': 'tilt-status-topic', + 'tilt_opened_value': '400', + 'tilt_closed_value': '125' + } + })) + + cover.set_cover_tilt_position(self.hass, 50, 'cover.test') + self.hass.block_till_done() + + self.assertEqual(('tilt-command-topic', 50, 0, False), + self.mock_publish.mock_calls[-2][1]) + + def test_tilt_position_altered_range(self): + self.assertTrue(setup_component(self.hass, cover.DOMAIN, { + cover.DOMAIN: { + 'platform': 'mqtt', + 'name': 'test', + 'state_topic': 'state-topic', + 'command_topic': 'command-topic', + 'qos': 0, + 'payload_open': 'OPEN', + 'payload_close': 'CLOSE', + 'payload_stop': 'STOP', + 'tilt_command_topic': 'tilt-command-topic', + 'tilt_status_topic': 'tilt-status-topic', + 'tilt_opened_value': '400', + 'tilt_closed_value': '125', + 'tilt_min': '0', + 'tilt_max': '50' + } + })) + + cover.set_cover_tilt_position(self.hass, 50, 'cover.test') + self.hass.block_till_done() + + self.assertEqual(('tilt-command-topic', 25, 0, False), + self.mock_publish.mock_calls[-2][1]) From c120c47bc19373aac26bda609952fe53c40b9c56 Mon Sep 17 00:00:00 2001 From: Brian Cribbs Date: Fri, 28 Apr 2017 12:14:17 -0400 Subject: [PATCH 076/169] style changes --- tests/components/cover/test_mqtt.py | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/tests/components/cover/test_mqtt.py b/tests/components/cover/test_mqtt.py index 02f476475f4..e4e30db12f7 100644 --- a/tests/components/cover/test_mqtt.py +++ b/tests/components/cover/test_mqtt.py @@ -239,6 +239,7 @@ class TestCoverMQTT(unittest.TestCase): self.assertEqual(50, current_cover_position) def test_tilt_defaults(self): + """Test the defaults.""" self.assertTrue(setup_component(self.hass, cover.DOMAIN, { cover.DOMAIN: { 'platform': 'mqtt', @@ -257,13 +258,13 @@ class TestCoverMQTT(unittest.TestCase): state_attributes_dict = self.hass.states.get( 'cover.test').attributes self.assertTrue('current_tilt_position' in state_attributes_dict) - + current_cover_position = self.hass.states.get( 'cover.test').attributes['current_tilt_position'] self.assertEqual(STATE_UNKNOWN, current_cover_position) - - def test_tilt_defaults(self): + def test_tilt_via_invocation_defaults(self): + """Test tilt defaults on close/open.""" self.assertTrue(setup_component(self.hass, cover.DOMAIN, { cover.DOMAIN: { 'platform': 'mqtt', @@ -292,6 +293,7 @@ class TestCoverMQTT(unittest.TestCase): self.mock_publish.mock_calls[-2][1]) def test_tilt_given_value(self): + """Test tilting to a given value.""" self.assertTrue(setup_component(self.hass, cover.DOMAIN, { cover.DOMAIN: { 'platform': 'mqtt', @@ -314,7 +316,7 @@ class TestCoverMQTT(unittest.TestCase): self.assertEqual(('tilt-command-topic', '400', 0, False), self.mock_publish.mock_calls[-2][1]) - + cover.close_cover_tilt(self.hass, 'cover.test') self.hass.block_till_done() @@ -322,6 +324,7 @@ class TestCoverMQTT(unittest.TestCase): self.mock_publish.mock_calls[-2][1]) def test_tilt_via_topic(self): + """Test tilt by updating status via MQTT.""" self.assertTrue(setup_component(self.hass, cover.DOMAIN, { cover.DOMAIN: { 'platform': 'mqtt', @@ -346,7 +349,6 @@ class TestCoverMQTT(unittest.TestCase): 'cover.test').attributes['current_tilt_position'] self.assertEqual(0, current_cover_tilt_position) - fire_mqtt_message(self.hass, 'tilt-status-topic', '50') self.hass.block_till_done() @@ -355,6 +357,7 @@ class TestCoverMQTT(unittest.TestCase): self.assertEqual(50, current_cover_tilt_position) def test_tilt_via_topic_altered_range(self): + """Test tilt status via MQTT with altered tilt range.""" self.assertTrue(setup_component(self.hass, cover.DOMAIN, { cover.DOMAIN: { 'platform': 'mqtt', @@ -381,7 +384,6 @@ class TestCoverMQTT(unittest.TestCase): 'cover.test').attributes['current_tilt_position'] self.assertEqual(0, current_cover_tilt_position) - fire_mqtt_message(self.hass, 'tilt-status-topic', '50') self.hass.block_till_done() @@ -397,6 +399,7 @@ class TestCoverMQTT(unittest.TestCase): self.assertEqual(50, current_cover_tilt_position) def test_tilt_position(self): + """Test tilt via method invocation.""" self.assertTrue(setup_component(self.hass, cover.DOMAIN, { cover.DOMAIN: { 'platform': 'mqtt', @@ -421,6 +424,7 @@ class TestCoverMQTT(unittest.TestCase): self.mock_publish.mock_calls[-2][1]) def test_tilt_position_altered_range(self): + """Test tilt via method invocation with altered range.""" self.assertTrue(setup_component(self.hass, cover.DOMAIN, { cover.DOMAIN: { 'platform': 'mqtt', From 6cfc1b6af8c9b17ce3613d5e2ac829f382658eff Mon Sep 17 00:00:00 2001 From: Brian Cribbs Date: Fri, 28 Apr 2017 13:15:05 -0400 Subject: [PATCH 077/169] removing unnecessary payload value for tilt --- homeassistant/components/cover/mqtt.py | 5 ----- 1 file changed, 5 deletions(-) diff --git a/homeassistant/components/cover/mqtt.py b/homeassistant/components/cover/mqtt.py index 1eb8c64880f..caff1de4861 100644 --- a/homeassistant/components/cover/mqtt.py +++ b/homeassistant/components/cover/mqtt.py @@ -29,7 +29,6 @@ CONF_TILT_STATUS_TOPIC = 'tilt_status_topic' CONF_PAYLOAD_OPEN = 'payload_open' CONF_PAYLOAD_CLOSE = 'payload_close' CONF_PAYLOAD_STOP = 'payload_stop' -CONF_PAYLOAD_TILT = 'payload_tilt' CONF_STATE_OPEN = 'state_open' CONF_STATE_CLOSED = 'state_closed' CONF_TILT_CLOSED_POSITION = 'tilt_closed_value' @@ -42,7 +41,6 @@ DEFAULT_NAME = 'MQTT Cover' DEFAULT_PAYLOAD_OPEN = 'OPEN' DEFAULT_PAYLOAD_CLOSE = 'CLOSE' DEFAULT_PAYLOAD_STOP = 'STOP' -DEFAULT_PAYLOAD_TILT = 'TILT' DEFAULT_OPTIMISTIC = False DEFAULT_RETAIN = False DEFAULT_TILT_CLOSED_POSITION = '0' @@ -56,7 +54,6 @@ PLATFORM_SCHEMA = mqtt.MQTT_RW_PLATFORM_SCHEMA.extend({ vol.Optional(CONF_PAYLOAD_OPEN, default=DEFAULT_PAYLOAD_OPEN): cv.string, vol.Optional(CONF_PAYLOAD_CLOSE, default=DEFAULT_PAYLOAD_CLOSE): cv.string, vol.Optional(CONF_PAYLOAD_STOP, default=DEFAULT_PAYLOAD_STOP): cv.string, - vol.Optional(CONF_PAYLOAD_TILT, default=DEFAULT_PAYLOAD_TILT): cv.string, vol.Optional(CONF_STATE_OPEN, default=STATE_OPEN): cv.string, vol.Optional(CONF_STATE_CLOSED, default=STATE_CLOSED): cv.string, vol.Optional(CONF_OPTIMISTIC, default=DEFAULT_OPTIMISTIC): cv.boolean, @@ -93,7 +90,6 @@ def async_setup_platform(hass, config, async_add_devices, discovery_info=None): config.get(CONF_PAYLOAD_OPEN), config.get(CONF_PAYLOAD_CLOSE), config.get(CONF_PAYLOAD_STOP), - config.get(CONF_PAYLOAD_TILT), config.get(CONF_OPTIMISTIC), value_template, config.get(CONF_TILT_OPEN_POSITION), @@ -127,7 +123,6 @@ class MqttCover(CoverDevice): self._payload_open = payload_open self._payload_close = payload_close self._payload_stop = payload_stop - self._payload_tilt = payload_tilt self._state_open = state_open self._state_closed = state_closed self._retain = retain From e61c1ffbc2731b9168edb5c343cb644ba83d95ca Mon Sep 17 00:00:00 2001 From: Brian Cribbs Date: Fri, 28 Apr 2017 13:25:15 -0400 Subject: [PATCH 078/169] fixing hound violations --- homeassistant/components/cover/mqtt.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/homeassistant/components/cover/mqtt.py b/homeassistant/components/cover/mqtt.py index caff1de4861..2be41ca3c82 100644 --- a/homeassistant/components/cover/mqtt.py +++ b/homeassistant/components/cover/mqtt.py @@ -277,7 +277,7 @@ class MqttCover(CoverDevice): if ATTR_TILT_POSITION in kwargs: position = float(kwargs[ATTR_TILT_POSITION]) - #The position needs to be between min and max + # The position needs to be between min and max tilt_range = self._tilt_max - self._tilt_min percentage = position / 100.0 level = round(tilt_range * percentage) From d3042a8199fca05e43bd943adc8bbf39e3b6ee54 Mon Sep 17 00:00:00 2001 From: Brian Cribbs Date: Fri, 28 Apr 2017 13:57:13 -0400 Subject: [PATCH 079/169] forgot to remove constructor arg --- homeassistant/components/cover/mqtt.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/homeassistant/components/cover/mqtt.py b/homeassistant/components/cover/mqtt.py index 2be41ca3c82..c8648643131 100644 --- a/homeassistant/components/cover/mqtt.py +++ b/homeassistant/components/cover/mqtt.py @@ -105,7 +105,7 @@ class MqttCover(CoverDevice): def __init__(self, name, state_topic, command_topic, tilt_command_topic, tilt_status_topic, qos, retain, state_open, state_closed, - payload_open, payload_close, payload_stop, payload_tilt, + payload_open, payload_close, payload_stop, optimistic, value_template, tilt_open_position, tilt_closed_position, device_class, tilt_min, tilt_max): """Initialize the cover.""" From 4c06cca3e1508a605ff51f4db14cc3f6065d6796 Mon Sep 17 00:00:00 2001 From: Brian Cribbs Date: Fri, 28 Apr 2017 13:58:01 -0400 Subject: [PATCH 080/169] left trailing whitespace --- homeassistant/components/cover/mqtt.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/homeassistant/components/cover/mqtt.py b/homeassistant/components/cover/mqtt.py index c8648643131..17cd769a806 100644 --- a/homeassistant/components/cover/mqtt.py +++ b/homeassistant/components/cover/mqtt.py @@ -105,7 +105,7 @@ class MqttCover(CoverDevice): def __init__(self, name, state_topic, command_topic, tilt_command_topic, tilt_status_topic, qos, retain, state_open, state_closed, - payload_open, payload_close, payload_stop, + payload_open, payload_close, payload_stop, optimistic, value_template, tilt_open_position, tilt_closed_position, device_class, tilt_min, tilt_max): """Initialize the cover.""" From 88782fa90a97fde372f3852dddcfb71be8b70025 Mon Sep 17 00:00:00 2001 From: Brian Cribbs Date: Fri, 28 Apr 2017 16:32:06 -0400 Subject: [PATCH 081/169] added coroutine annotation to async method --- homeassistant/components/cover/mqtt.py | 1 + 1 file changed, 1 insertion(+) diff --git a/homeassistant/components/cover/mqtt.py b/homeassistant/components/cover/mqtt.py index 17cd769a806..41fd2d4eb45 100644 --- a/homeassistant/components/cover/mqtt.py +++ b/homeassistant/components/cover/mqtt.py @@ -272,6 +272,7 @@ class MqttCover(CoverDevice): """Return current position of cover tilt.""" return self._tilt_value + @asyncio.coroutine def async_set_cover_tilt_position(self, **kwargs): """Move the cover tilt to a specific position.""" if ATTR_TILT_POSITION in kwargs: From 5b22e57643a35546a686d8f854f7253a25b01e4f Mon Sep 17 00:00:00 2001 From: Brian Cribbs Date: Fri, 28 Apr 2017 21:41:50 -0400 Subject: [PATCH 082/169] some changes requested on PR --- homeassistant/components/cover/mqtt.py | 67 ++++++++++---------------- tests/components/cover/test_mqtt.py | 36 +++++++------- 2 files changed, 44 insertions(+), 59 deletions(-) diff --git a/homeassistant/components/cover/mqtt.py b/homeassistant/components/cover/mqtt.py index 41fd2d4eb45..5b39f3d9704 100644 --- a/homeassistant/components/cover/mqtt.py +++ b/homeassistant/components/cover/mqtt.py @@ -33,7 +33,6 @@ CONF_STATE_OPEN = 'state_open' CONF_STATE_CLOSED = 'state_closed' CONF_TILT_CLOSED_POSITION = 'tilt_closed_value' CONF_TILT_OPEN_POSITION = 'tilt_opened_value' -CONF_DEVICE_CLASS = 'device_class' CONF_TILT_MIN = 'tilt_min' CONF_TILT_MAX = 'tilt_max' @@ -43,11 +42,10 @@ DEFAULT_PAYLOAD_CLOSE = 'CLOSE' DEFAULT_PAYLOAD_STOP = 'STOP' DEFAULT_OPTIMISTIC = False DEFAULT_RETAIN = False -DEFAULT_TILT_CLOSED_POSITION = '0' -DEFAULT_TILT_OPEN_POSITION = '100' -DEFAULT_DEVICE_CLASS = 'window' -DEFAULT_TILT_MIN = '0' -DEFAULT_TILT_MAX = '100' +DEFAULT_TILT_CLOSED_POSITION = 0 +DEFAULT_TILT_OPEN_POSITION = 100 +DEFAULT_TILT_MIN = 0 +DEFAULT_TILT_MAX = 100 PLATFORM_SCHEMA = mqtt.MQTT_RW_PLATFORM_SCHEMA.extend({ vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string, @@ -58,15 +56,13 @@ PLATFORM_SCHEMA = mqtt.MQTT_RW_PLATFORM_SCHEMA.extend({ vol.Optional(CONF_STATE_CLOSED, default=STATE_CLOSED): cv.string, vol.Optional(CONF_OPTIMISTIC, default=DEFAULT_OPTIMISTIC): cv.boolean, vol.Optional(CONF_TILT_CLOSED_POSITION, - default=DEFAULT_TILT_CLOSED_POSITION): cv.string, + default=DEFAULT_TILT_CLOSED_POSITION): int, vol.Optional(CONF_TILT_OPEN_POSITION, - default=DEFAULT_TILT_OPEN_POSITION): cv.string, - vol.Optional(CONF_DEVICE_CLASS, - default=DEFAULT_DEVICE_CLASS): cv.string, + default=DEFAULT_TILT_OPEN_POSITION): int, vol.Optional(CONF_TILT_MIN, - default=DEFAULT_TILT_MIN): cv.string, + default=DEFAULT_TILT_MIN): int, vol.Optional(CONF_TILT_MAX, - default=DEFAULT_TILT_MAX): cv.string, + default=DEFAULT_TILT_MAX): int, }) @@ -94,7 +90,6 @@ def async_setup_platform(hass, config, async_add_devices, discovery_info=None): value_template, config.get(CONF_TILT_OPEN_POSITION), config.get(CONF_TILT_CLOSED_POSITION), - config.get(CONF_DEVICE_CLASS), config.get(CONF_TILT_MIN), config.get(CONF_TILT_MAX), )]) @@ -107,11 +102,8 @@ class MqttCover(CoverDevice): tilt_status_topic, qos, retain, state_open, state_closed, payload_open, payload_close, payload_stop, optimistic, value_template, tilt_open_position, - tilt_closed_position, device_class, tilt_min, tilt_max): + tilt_closed_position, tilt_min, tilt_max): """Initialize the cover.""" - if tilt_command_topic is not None: - _LOGGER.info("MQTT cover configured with tilt topic: " - + tilt_command_topic) self._position = None self._state = None self._name = name @@ -130,10 +122,9 @@ class MqttCover(CoverDevice): self._tilt_closed_position = tilt_closed_position self._optimistic = optimistic or state_topic is None self._template = value_template - self._device_class = device_class self._tilt_value = STATE_UNKNOWN - self._tilt_min = int(tilt_min) - self._tilt_max = int(tilt_max) + self._tilt_min = tilt_min + self._tilt_max = tilt_max @asyncio.coroutine def async_added_to_hass(self): @@ -145,13 +136,11 @@ class MqttCover(CoverDevice): def tilt_updated(topic, payload, qos): """The tilt was updated.""" if (payload.isnumeric() and - self._tilt_min <= int(payload) - and int(payload) <= self._tilt_max): + self._tilt_min <= int(payload) <= self._tilt_max): tilt_range = self._tilt_max - self._tilt_min level = round(float(payload) / tilt_range * 100.0) self._tilt_value = level - _LOGGER.info("Tilt value set to " + str(self._tilt_value)) - self.schedule_update_ha_state() + self.hass.async_add_job(self.async_update_ha_state()) @callback def message_received(topic, payload, qos): @@ -213,9 +202,9 @@ class MqttCover(CoverDevice): return self._position @property - def device_class(self): - """Return the class of this device, from component DEVICE_CLASSES.""" - return self._device_class + def current_cover_tilt_position(self): + """Return current position of cover tilt.""" + return self._tilt_value @asyncio.coroutine def async_open_cover(self, **kwargs): @@ -267,22 +256,18 @@ class MqttCover(CoverDevice): mqtt.async_publish(self.hass, self._tilt_command_topic, self._tilt_closed_position, self._qos, self._retain) - @property - def current_cover_tilt_position(self): - """Return current position of cover tilt.""" - return self._tilt_value - @asyncio.coroutine def async_set_cover_tilt_position(self, **kwargs): """Move the cover tilt to a specific position.""" - if ATTR_TILT_POSITION in kwargs: - position = float(kwargs[ATTR_TILT_POSITION]) + if ATTR_TILT_POSITION not in kwargs: + return - # The position needs to be between min and max - tilt_range = self._tilt_max - self._tilt_min - percentage = position / 100.0 - level = round(tilt_range * percentage) + position = float(kwargs[ATTR_TILT_POSITION]) - _LOGGER.info("setting tilt value to " + str(level)) - mqtt.async_publish(self.hass, self._tilt_command_topic, - level, self._qos, self._retain) + # The position needs to be between min and max + tilt_range = self._tilt_max - self._tilt_min + percentage = position / 100.0 + level = round(tilt_range * percentage) + + mqtt.async_publish(self.hass, self._tilt_command_topic, + level, self._qos, self._retain) diff --git a/tests/components/cover/test_mqtt.py b/tests/components/cover/test_mqtt.py index e4e30db12f7..494c1f0bf33 100644 --- a/tests/components/cover/test_mqtt.py +++ b/tests/components/cover/test_mqtt.py @@ -283,13 +283,13 @@ class TestCoverMQTT(unittest.TestCase): cover.open_cover_tilt(self.hass, 'cover.test') self.hass.block_till_done() - self.assertEqual(('tilt-command-topic', '100', 0, False), + self.assertEqual(('tilt-command-topic', 100, 0, False), self.mock_publish.mock_calls[-2][1]) cover.close_cover_tilt(self.hass, 'cover.test') self.hass.block_till_done() - self.assertEqual(('tilt-command-topic', '0', 0, False), + self.assertEqual(('tilt-command-topic', 0, 0, False), self.mock_publish.mock_calls[-2][1]) def test_tilt_given_value(self): @@ -306,21 +306,21 @@ class TestCoverMQTT(unittest.TestCase): 'payload_stop': 'STOP', 'tilt_command_topic': 'tilt-command-topic', 'tilt_status_topic': 'tilt-status-topic', - 'tilt_opened_value': '400', - 'tilt_closed_value': '125' + 'tilt_opened_value': 400, + 'tilt_closed_value': 125 } })) cover.open_cover_tilt(self.hass, 'cover.test') self.hass.block_till_done() - self.assertEqual(('tilt-command-topic', '400', 0, False), + self.assertEqual(('tilt-command-topic', 400, 0, False), self.mock_publish.mock_calls[-2][1]) cover.close_cover_tilt(self.hass, 'cover.test') self.hass.block_till_done() - self.assertEqual(('tilt-command-topic', '125', 0, False), + self.assertEqual(('tilt-command-topic', 125, 0, False), self.mock_publish.mock_calls[-2][1]) def test_tilt_via_topic(self): @@ -337,8 +337,8 @@ class TestCoverMQTT(unittest.TestCase): 'payload_stop': 'STOP', 'tilt_command_topic': 'tilt-command-topic', 'tilt_status_topic': 'tilt-status-topic', - 'tilt_opened_value': '400', - 'tilt_closed_value': '125' + 'tilt_opened_value': 400, + 'tilt_closed_value': 125 } })) @@ -370,10 +370,10 @@ class TestCoverMQTT(unittest.TestCase): 'payload_stop': 'STOP', 'tilt_command_topic': 'tilt-command-topic', 'tilt_status_topic': 'tilt-status-topic', - 'tilt_opened_value': '400', - 'tilt_closed_value': '125', - 'tilt_min': '0', - 'tilt_max': '50' + 'tilt_opened_value': 400, + 'tilt_closed_value': 125, + 'tilt_min': 0, + 'tilt_max': 50 } })) @@ -412,8 +412,8 @@ class TestCoverMQTT(unittest.TestCase): 'payload_stop': 'STOP', 'tilt_command_topic': 'tilt-command-topic', 'tilt_status_topic': 'tilt-status-topic', - 'tilt_opened_value': '400', - 'tilt_closed_value': '125' + 'tilt_opened_value': 400, + 'tilt_closed_value': 125 } })) @@ -437,10 +437,10 @@ class TestCoverMQTT(unittest.TestCase): 'payload_stop': 'STOP', 'tilt_command_topic': 'tilt-command-topic', 'tilt_status_topic': 'tilt-status-topic', - 'tilt_opened_value': '400', - 'tilt_closed_value': '125', - 'tilt_min': '0', - 'tilt_max': '50' + 'tilt_opened_value': 400, + 'tilt_closed_value': 125, + 'tilt_min': 0, + 'tilt_max': 50 } })) From b853fb2178b77e66e982d065f909d8d555096470 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20H=C3=B8yer=20Iversen?= Date: Sat, 29 Apr 2017 07:46:34 +0200 Subject: [PATCH 083/169] Upgrade Flux led lb to 0.19 (#7352) --- homeassistant/components/light/flux_led.py | 2 +- requirements_all.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/light/flux_led.py b/homeassistant/components/light/flux_led.py index f39ef3881a6..798ad804fa1 100644 --- a/homeassistant/components/light/flux_led.py +++ b/homeassistant/components/light/flux_led.py @@ -18,7 +18,7 @@ from homeassistant.components.light import ( PLATFORM_SCHEMA) import homeassistant.helpers.config_validation as cv -REQUIREMENTS = ['flux_led==0.18'] +REQUIREMENTS = ['flux_led==0.19'] _LOGGER = logging.getLogger(__name__) diff --git a/requirements_all.txt b/requirements_all.txt index 189349b0ad4..a3984928c17 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -184,7 +184,7 @@ fitbit==0.2.3 fixerio==0.1.1 # homeassistant.components.light.flux_led -flux_led==0.18 +flux_led==0.19 # homeassistant.components.notify.free_mobile freesms==0.1.1 From d8afea64afb7a5542cc1f32988b3d156e9383c6b Mon Sep 17 00:00:00 2001 From: Greg Dowling Date: Sat, 29 Apr 2017 17:19:22 +0100 Subject: [PATCH 084/169] Add debug logging to pyvera events. (#7364) --- homeassistant/components/vera.py | 2 +- requirements_all.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/vera.py b/homeassistant/components/vera.py index d01a2965cf9..655c8100f8c 100644 --- a/homeassistant/components/vera.py +++ b/homeassistant/components/vera.py @@ -20,7 +20,7 @@ from homeassistant.const import ( EVENT_HOMEASSISTANT_STOP) from homeassistant.helpers.entity import Entity -REQUIREMENTS = ['pyvera==0.2.27'] +REQUIREMENTS = ['pyvera==0.2.29'] _LOGGER = logging.getLogger(__name__) diff --git a/requirements_all.txt b/requirements_all.txt index a3984928c17..8b06c35c91c 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -679,7 +679,7 @@ pyunifi==2.0 # pyuserinput==0.1.11 # homeassistant.components.vera -pyvera==0.2.27 +pyvera==0.2.29 # homeassistant.components.notify.html5 pywebpush==0.6.1 From 74362df19c1890555ecd003b4544eb9b04d89b57 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sat, 29 Apr 2017 23:59:38 +0200 Subject: [PATCH 085/169] Upgrade xmltodict to 0.11.0 (#7355) --- homeassistant/components/sensor/swiss_hydrological_data.py | 2 +- homeassistant/components/sensor/ted5000.py | 2 +- homeassistant/components/sensor/yr.py | 2 +- requirements_all.txt | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/homeassistant/components/sensor/swiss_hydrological_data.py b/homeassistant/components/sensor/swiss_hydrological_data.py index c25d400efcd..ebd932c267c 100644 --- a/homeassistant/components/sensor/swiss_hydrological_data.py +++ b/homeassistant/components/sensor/swiss_hydrological_data.py @@ -17,7 +17,7 @@ import homeassistant.helpers.config_validation as cv from homeassistant.helpers.entity import Entity from homeassistant.util import Throttle -REQUIREMENTS = ['xmltodict==0.10.2'] +REQUIREMENTS = ['xmltodict==0.11.0'] _LOGGER = logging.getLogger(__name__) _RESOURCE = 'http://www.hydrodata.ch/xml/SMS.xml' diff --git a/homeassistant/components/sensor/ted5000.py b/homeassistant/components/sensor/ted5000.py index e8a3dcf302b..f01e7909e52 100644 --- a/homeassistant/components/sensor/ted5000.py +++ b/homeassistant/components/sensor/ted5000.py @@ -16,7 +16,7 @@ from homeassistant.helpers import config_validation as cv from homeassistant.helpers.entity import Entity from homeassistant.util import Throttle -REQUIREMENTS = ['xmltodict==0.10.2'] +REQUIREMENTS = ['xmltodict==0.11.0'] _LOGGER = logging.getLogger(__name__) diff --git a/homeassistant/components/sensor/yr.py b/homeassistant/components/sensor/yr.py index 4306ad68553..0e2c07e24bb 100644 --- a/homeassistant/components/sensor/yr.py +++ b/homeassistant/components/sensor/yr.py @@ -26,7 +26,7 @@ from homeassistant.helpers.event import ( from homeassistant.util import dt as dt_util -REQUIREMENTS = ['xmltodict==0.10.2'] +REQUIREMENTS = ['xmltodict==0.11.0'] _LOGGER = logging.getLogger(__name__) diff --git a/requirements_all.txt b/requirements_all.txt index 8b06c35c91c..358cf54c660 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -822,7 +822,7 @@ xboxapi==0.1.1 # homeassistant.components.sensor.swiss_hydrological_data # homeassistant.components.sensor.ted5000 # homeassistant.components.sensor.yr -xmltodict==0.10.2 +xmltodict==0.11.0 # homeassistant.components.sensor.yahoo_finance yahoo-finance==1.4.0 From ae9f44c708608cc36f5782b994383da84ad9c24b Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sun, 30 Apr 2017 00:00:04 +0200 Subject: [PATCH 086/169] Upgrade speedtest-cli to 1.0.6 (#7354) --- homeassistant/components/sensor/speedtest.py | 12 +++++++----- requirements_all.txt | 2 +- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/homeassistant/components/sensor/speedtest.py b/homeassistant/components/sensor/speedtest.py index 3a8cfd24ba5..600ef10cd80 100644 --- a/homeassistant/components/sensor/speedtest.py +++ b/homeassistant/components/sensor/speedtest.py @@ -20,7 +20,7 @@ from homeassistant.helpers.entity import Entity from homeassistant.helpers.event import track_time_change from homeassistant.helpers.restore_state import async_get_last_state -REQUIREMENTS = ['speedtest-cli==1.0.5'] +REQUIREMENTS = ['speedtest-cli==1.0.6'] _LOGGER = logging.getLogger(__name__) _SPEEDTEST_REGEX = re.compile(r'Ping:\s(\d+\.\d+)\sms[\r\n]+' @@ -150,7 +150,7 @@ class SpeedtestData(object): """Get the latest data from speedtest.net.""" import speedtest - _LOGGER.info('Executing speedtest...') + _LOGGER.info("Executing speedtest...") try: args = [sys.executable, speedtest.__file__, '--simple'] if self._server_id: @@ -161,6 +161,8 @@ class SpeedtestData(object): except CalledProcessError as process_error: _LOGGER.error("Error executing speedtest: %s", process_error) return - self.data = {'ping': round(float(re_output[1]), 2), - 'download': round(float(re_output[2]), 2), - 'upload': round(float(re_output[3]), 2)} + self.data = { + 'ping': round(float(re_output[1]), 2), + 'download': round(float(re_output[2]), 2), + 'upload': round(float(re_output[3]), 2), + } diff --git a/requirements_all.txt b/requirements_all.txt index 358cf54c660..4cde496c7cd 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -745,7 +745,7 @@ snapcast==1.2.2 somecomfort==0.4.1 # homeassistant.components.sensor.speedtest -speedtest-cli==1.0.5 +speedtest-cli==1.0.6 # homeassistant.components.recorder # homeassistant.scripts.db_migrator From 64a7be66b1859ed2c96ba3ecd8f3fb5ebf9d1566 Mon Sep 17 00:00:00 2001 From: Anders Melchiorsen Date: Sun, 30 Apr 2017 00:04:20 +0200 Subject: [PATCH 087/169] Remove global limit on white light temperature (#7206) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Remove global limit on white light temperature Here are the supported temperatures of some popular bulbs: Philips Hue: 2000K-6500K (the current 500-154 mired range) LIFX Color 1000: 2500K-9000K IKEA TRÅDFRI: 2200K, 2700K, 4000K Obviously, Home Assistant cannot enforce a global limit and work properly with all of these bulbs. So just remove the limit and leave it up to each platform to work it out. This commit updates the existing users and adds a clamp to Hue (where the limit appears to have originated). It does not attempt to update other platforms that might need extra handling of the larger range that is now possible. * Add min_mireds/max_mireds state attributes to lights * Support min_mireds/max_mireds with LIFX lights --- homeassistant/components/light/__init__.py | 20 ++++++++++-- homeassistant/components/light/hue.py | 3 +- .../components/light/lifx/__init__.py | 31 ++++++++++++++++++- homeassistant/components/light/services.yaml | 2 +- homeassistant/components/light/zwave.py | 13 ++++---- homeassistant/components/switch/flux.py | 3 +- homeassistant/util/color.py | 3 -- tests/components/light/test_demo.py | 2 ++ 8 files changed, 60 insertions(+), 17 deletions(-) diff --git a/homeassistant/components/light/__init__.py b/homeassistant/components/light/__init__.py index 25dcf9e78da..853fe4d9fb1 100644 --- a/homeassistant/components/light/__init__.py +++ b/homeassistant/components/light/__init__.py @@ -50,6 +50,8 @@ ATTR_TRANSITION = "transition" ATTR_RGB_COLOR = "rgb_color" ATTR_XY_COLOR = "xy_color" ATTR_COLOR_TEMP = "color_temp" +ATTR_MIN_MIREDS = "min_mireds" +ATTR_MAX_MIREDS = "max_mireds" ATTR_COLOR_NAME = "color_name" ATTR_WHITE_VALUE = "white_value" @@ -78,6 +80,8 @@ LIGHT_PROFILES_FILE = "light_profiles.csv" PROP_TO_ATTR = { 'brightness': ATTR_BRIGHTNESS, 'color_temp': ATTR_COLOR_TEMP, + 'min_mireds': ATTR_MIN_MIREDS, + 'max_mireds': ATTR_MAX_MIREDS, 'rgb_color': ATTR_RGB_COLOR, 'xy_color': ATTR_XY_COLOR, 'white_value': ATTR_WHITE_VALUE, @@ -99,9 +103,7 @@ LIGHT_TURN_ON_SCHEMA = vol.Schema({ vol.Coerce(tuple)), ATTR_XY_COLOR: vol.All(vol.ExactSequence((cv.small_float, cv.small_float)), vol.Coerce(tuple)), - ATTR_COLOR_TEMP: vol.All(vol.Coerce(int), - vol.Range(min=color_util.HASS_COLOR_MIN, - max=color_util.HASS_COLOR_MAX)), + ATTR_COLOR_TEMP: vol.All(vol.Coerce(int), vol.Range(min=1)), ATTR_WHITE_VALUE: vol.All(vol.Coerce(int), vol.Range(min=0, max=255)), ATTR_FLASH: vol.In([FLASH_SHORT, FLASH_LONG]), ATTR_EFFECT: cv.string, @@ -337,6 +339,18 @@ class Light(ToggleEntity): """Return the CT color value in mireds.""" return None + @property + def min_mireds(self): + """Return the coldest color_temp that this light supports.""" + # Default to the Philips Hue value that HA has always assumed + return 154 + + @property + def max_mireds(self): + """Return the warmest color_temp that this light supports.""" + # Default to the Philips Hue value that HA has always assumed + return 500 + @property def white_value(self): """Return the white value of this light between 0..255.""" diff --git a/homeassistant/components/light/hue.py b/homeassistant/components/light/hue.py index c15acdd2b44..77981ea6e68 100644 --- a/homeassistant/components/light/hue.py +++ b/homeassistant/components/light/hue.py @@ -403,7 +403,8 @@ class HueLight(Light): command['bri'] = kwargs[ATTR_BRIGHTNESS] if ATTR_COLOR_TEMP in kwargs: - command['ct'] = kwargs[ATTR_COLOR_TEMP] + temp = kwargs[ATTR_COLOR_TEMP] + command['ct'] = max(self.min_mireds, min(temp, self.max_mireds)) flash = kwargs.get(ATTR_FLASH) diff --git a/homeassistant/components/light/lifx/__init__.py b/homeassistant/components/light/lifx/__init__.py index 33ed80bed06..9a44938308e 100644 --- a/homeassistant/components/light/lifx/__init__.py +++ b/homeassistant/components/light/lifx/__init__.py @@ -8,6 +8,7 @@ import colorsys import logging import asyncio import sys +import math from functools import partial from datetime import timedelta import async_timeout @@ -96,7 +97,12 @@ class LIFXManager(object): self.hass.async_add_job(entity.async_update_ha_state()) else: _LOGGER.debug("%s register NEW", device.ip_addr) - device.get_color(self.ready) + device.get_version(self.got_version) + + @callback + def got_version(self, device, msg): + """Request current color setting once we have the product version.""" + device.get_color(self.ready) @callback def ready(self, device, msg): @@ -166,6 +172,7 @@ class LIFXLight(Light): def __init__(self, device): """Initialize the light.""" self.device = device + self.product = device.product self.blocker = None self.effect_data = None self.postponed_update = None @@ -213,6 +220,28 @@ class LIFXLight(Light): _LOGGER.debug("color_temp: %d", temperature) return temperature + @property + def min_mireds(self): + """Return the coldest color_temp that this light supports.""" + # The 3 LIFX "White" products supported a limited temperature range + # https://lan.developer.lifx.com/docs/lifx-products + if self.product in [10, 11, 18]: + kelvin = 6500 + else: + kelvin = 9000 + return math.floor(color_temperature_kelvin_to_mired(kelvin)) + + @property + def max_mireds(self): + """Return the warmest color_temp that this light supports.""" + # The 3 LIFX "White" products supported a limited temperature range + # https://lan.developer.lifx.com/docs/lifx-products + if self.product in [10, 11, 18]: + kelvin = 2700 + else: + kelvin = 2500 + return math.ceil(color_temperature_kelvin_to_mired(kelvin)) + @property def is_on(self): """Return true if device is on.""" diff --git a/homeassistant/components/light/services.yaml b/homeassistant/components/light/services.yaml index 8931a46bb73..495ef9c8b39 100644 --- a/homeassistant/components/light/services.yaml +++ b/homeassistant/components/light/services.yaml @@ -25,7 +25,7 @@ turn_on: example: '[0.52, 0.43]' color_temp: - description: Color temperature for the light in mireds (154-500) + description: Color temperature for the light in mireds example: '250' white_value: diff --git a/homeassistant/components/light/zwave.py b/homeassistant/components/light/zwave.py index ce85276cae9..0b43878d025 100644 --- a/homeassistant/components/light/zwave.py +++ b/homeassistant/components/light/zwave.py @@ -15,9 +15,8 @@ from homeassistant.components.light import ATTR_BRIGHTNESS, ATTR_COLOR_TEMP, \ from homeassistant.components import zwave from homeassistant.components.zwave import async_setup_platform # noqa # pylint: disable=unused-import from homeassistant.const import STATE_OFF, STATE_ON -from homeassistant.util.color import HASS_COLOR_MAX, HASS_COLOR_MIN, \ - color_temperature_mired_to_kelvin, color_temperature_to_rgb, \ - color_rgb_to_rgbw, color_rgbw_to_rgb +from homeassistant.util.color import color_temperature_mired_to_kelvin, \ + color_temperature_to_rgb, color_rgb_to_rgbw, color_rgbw_to_rgb _LOGGER = logging.getLogger(__name__) @@ -39,9 +38,11 @@ DEVICE_MAPPINGS = { # Generate midpoint color temperatures for bulbs that have limited # support for white light colors -TEMP_MID_HASS = (HASS_COLOR_MAX - HASS_COLOR_MIN) / 2 + HASS_COLOR_MIN -TEMP_WARM_HASS = (HASS_COLOR_MAX - HASS_COLOR_MIN) / 3 * 2 + HASS_COLOR_MIN -TEMP_COLD_HASS = (HASS_COLOR_MAX - HASS_COLOR_MIN) / 3 + HASS_COLOR_MIN +TEMP_COLOR_MAX = 500 # mireds (inverted) +TEMP_COLOR_MIN = 154 +TEMP_MID_HASS = (TEMP_COLOR_MAX - TEMP_COLOR_MIN) / 2 + TEMP_COLOR_MIN +TEMP_WARM_HASS = (TEMP_COLOR_MAX - TEMP_COLOR_MIN) / 3 * 2 + TEMP_COLOR_MIN +TEMP_COLD_HASS = (TEMP_COLOR_MAX - TEMP_COLOR_MIN) / 3 + TEMP_COLOR_MIN def get_device(node, values, node_config, **kwargs): diff --git a/homeassistant/components/switch/flux.py b/homeassistant/components/switch/flux.py index 354e3b409db..0c58fb2a182 100644 --- a/homeassistant/components/switch/flux.py +++ b/homeassistant/components/switch/flux.py @@ -17,7 +17,7 @@ from homeassistant.const import CONF_NAME, CONF_PLATFORM from homeassistant.helpers.event import track_time_change from homeassistant.util.color import ( color_temperature_to_rgb, color_RGB_to_xy, - color_temperature_kelvin_to_mired, HASS_COLOR_MIN, HASS_COLOR_MAX) + color_temperature_kelvin_to_mired) from homeassistant.util.dt import now as dt_now import homeassistant.helpers.config_validation as cv @@ -208,7 +208,6 @@ class FluxSwitch(SwitchDevice): else: # Convert to mired and clamp to allowed values mired = color_temperature_kelvin_to_mired(temp) - mired = max(HASS_COLOR_MIN, min(mired, HASS_COLOR_MAX)) set_lights_temp(self.hass, self._lights, mired, brightness) _LOGGER.info("Lights updated to mired:%s brightness:%s, %s%%" " of %s cycle complete at %s", mired, brightness, diff --git a/homeassistant/util/color.py b/homeassistant/util/color.py index a925ea337fb..396b8a63601 100644 --- a/homeassistant/util/color.py +++ b/homeassistant/util/color.py @@ -7,9 +7,6 @@ from typing import Tuple _LOGGER = logging.getLogger(__name__) -HASS_COLOR_MAX = 500 # mireds (inverted) -HASS_COLOR_MIN = 154 - # Official CSS3 colors from w3.org: # https://www.w3.org/TR/2010/PR-css3-color-20101028/#html4 # names do not have spaces in them so that we can compare against diff --git a/tests/components/light/test_demo.py b/tests/components/light/test_demo.py index f51b5a45b20..9e318ea9192 100644 --- a/tests/components/light/test_demo.py +++ b/tests/components/light/test_demo.py @@ -53,6 +53,8 @@ class TestDemoLight(unittest.TestCase): self.hass.block_till_done() state = self.hass.states.get(ENTITY_LIGHT) self.assertEqual(400, state.attributes.get(light.ATTR_COLOR_TEMP)) + self.assertEqual(154, state.attributes.get(light.ATTR_MIN_MIREDS)) + self.assertEqual(500, state.attributes.get(light.ATTR_MAX_MIREDS)) self.assertEqual('none', state.attributes.get(light.ATTR_EFFECT)) def test_turn_off(self): From 064b2cdb9fae78ab7574636aa0f7c5cd95af7765 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sat, 29 Apr 2017 15:12:18 -0700 Subject: [PATCH 088/169] Remove state property from alarmdecoder binary sensor (#7370) --- homeassistant/components/binary_sensor/alarmdecoder.py | 9 --------- 1 file changed, 9 deletions(-) diff --git a/homeassistant/components/binary_sensor/alarmdecoder.py b/homeassistant/components/binary_sensor/alarmdecoder.py index e6292128710..21d33a4d303 100644 --- a/homeassistant/components/binary_sensor/alarmdecoder.py +++ b/homeassistant/components/binary_sensor/alarmdecoder.py @@ -11,7 +11,6 @@ from homeassistant.core import callback from homeassistant.helpers.dispatcher import async_dispatcher_connect from homeassistant.components.binary_sensor import BinarySensorDevice -from homeassistant.const import (STATE_ON, STATE_OFF, STATE_OPEN, STATE_CLOSED) from homeassistant.components.alarmdecoder import (ZONE_SCHEMA, CONF_ZONES, CONF_ZONE_NAME, @@ -69,14 +68,6 @@ class AlarmDecoderBinarySensor(BinarySensorDevice): async_dispatcher_connect( self.hass, SIGNAL_ZONE_RESTORE, self._restore_callback) - @property - def state(self): - """Return the state of the binary sensor.""" - if self._type == 'opening': - return STATE_OPEN if self.is_on else STATE_CLOSED - - return STATE_ON if self.is_on else STATE_OFF - @property def name(self): """Return the name of the entity.""" From 55731b759f54f7dc632de78ac065c06e477f9566 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sat, 29 Apr 2017 15:47:21 -0700 Subject: [PATCH 089/169] Fix lint --- homeassistant/components/light/zha.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/homeassistant/components/light/zha.py b/homeassistant/components/light/zha.py index 928850ad512..f404657dbfc 100644 --- a/homeassistant/components/light/zha.py +++ b/homeassistant/components/light/zha.py @@ -8,7 +8,7 @@ import asyncio import logging from homeassistant.components import light, zha -from homeassistant.util.color import HASS_COLOR_MIN, color_RGB_to_xy +from homeassistant.util.color import color_RGB_to_xy _LOGGER = logging.getLogger(__name__) @@ -53,7 +53,6 @@ class Light(zha.Entity, light.Light): # Not sure all color lights necessarily support this directly # Should we emulate it? self._supported_features |= light.SUPPORT_COLOR_TEMP - self._color_temp = HASS_COLOR_MIN # Silly heuristic, not sure if it works widely if kwargs.get('num_primaries', 1) >= 3: self._supported_features |= light.SUPPORT_XY_COLOR From dc3706523a364faf4891970eba79f4b69b6fd4bf Mon Sep 17 00:00:00 2001 From: Brian Cribbs Date: Sat, 29 Apr 2017 19:19:24 -0400 Subject: [PATCH 090/169] I was thinking *far* too hard about this --- homeassistant/components/cover/mqtt.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/homeassistant/components/cover/mqtt.py b/homeassistant/components/cover/mqtt.py index 5b39f3d9704..bb711743f6e 100644 --- a/homeassistant/components/cover/mqtt.py +++ b/homeassistant/components/cover/mqtt.py @@ -16,7 +16,8 @@ from homeassistant.const import ( CONF_NAME, CONF_VALUE_TEMPLATE, CONF_OPTIMISTIC, STATE_OPEN, STATE_CLOSED, STATE_UNKNOWN) from homeassistant.components.mqtt import ( - CONF_STATE_TOPIC, CONF_COMMAND_TOPIC, CONF_QOS, CONF_RETAIN) + CONF_STATE_TOPIC, CONF_COMMAND_TOPIC, CONF_QOS, CONF_RETAIN, + valid_publish_topic, valid_subscribe_topic) import homeassistant.helpers.config_validation as cv _LOGGER = logging.getLogger(__name__) @@ -55,6 +56,8 @@ PLATFORM_SCHEMA = mqtt.MQTT_RW_PLATFORM_SCHEMA.extend({ vol.Optional(CONF_STATE_OPEN, default=STATE_OPEN): cv.string, vol.Optional(CONF_STATE_CLOSED, default=STATE_CLOSED): cv.string, vol.Optional(CONF_OPTIMISTIC, default=DEFAULT_OPTIMISTIC): cv.boolean, + vol.Optional(CONF_TILT_COMMAND_TOPIC, default=None): valid_publish_topic, + vol.Optional(CONF_TILT_STATUS_TOPIC, default=None): valid_subscribe_topic, vol.Optional(CONF_TILT_CLOSED_POSITION, default=DEFAULT_TILT_CLOSED_POSITION): int, vol.Optional(CONF_TILT_OPEN_POSITION, From a1be80d5d4d36e7b22b5e7f6e9862b05e31df92a Mon Sep 17 00:00:00 2001 From: Brian Cribbs Date: Sat, 29 Apr 2017 19:27:19 -0400 Subject: [PATCH 091/169] added optimistic configuration for tilt state --- homeassistant/components/cover/mqtt.py | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/cover/mqtt.py b/homeassistant/components/cover/mqtt.py index bb711743f6e..8c455a911b4 100644 --- a/homeassistant/components/cover/mqtt.py +++ b/homeassistant/components/cover/mqtt.py @@ -36,6 +36,7 @@ CONF_TILT_CLOSED_POSITION = 'tilt_closed_value' CONF_TILT_OPEN_POSITION = 'tilt_opened_value' CONF_TILT_MIN = 'tilt_min' CONF_TILT_MAX = 'tilt_max' +CONF_TILT_STATE_OPTIMISTIC = 'tilt_optimistic' DEFAULT_NAME = 'MQTT Cover' DEFAULT_PAYLOAD_OPEN = 'OPEN' @@ -47,6 +48,7 @@ DEFAULT_TILT_CLOSED_POSITION = 0 DEFAULT_TILT_OPEN_POSITION = 100 DEFAULT_TILT_MIN = 0 DEFAULT_TILT_MAX = 100 +DEFAULT_TILT_OPTIMISTIC = False PLATFORM_SCHEMA = mqtt.MQTT_RW_PLATFORM_SCHEMA.extend({ vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string, @@ -66,6 +68,8 @@ PLATFORM_SCHEMA = mqtt.MQTT_RW_PLATFORM_SCHEMA.extend({ default=DEFAULT_TILT_MIN): int, vol.Optional(CONF_TILT_MAX, default=DEFAULT_TILT_MAX): int, + vol.Optional(CONF_TILT_STATE_OPTIMISTIC, + default=DEFAULT_TILT_OPTIMISTIC): cv.boolean, }) @@ -95,6 +99,7 @@ def async_setup_platform(hass, config, async_add_devices, discovery_info=None): config.get(CONF_TILT_CLOSED_POSITION), config.get(CONF_TILT_MIN), config.get(CONF_TILT_MAX), + config.get(CONF_TILT_STATE_OPTIMISTIC), )]) @@ -105,7 +110,7 @@ class MqttCover(CoverDevice): tilt_status_topic, qos, retain, state_open, state_closed, payload_open, payload_close, payload_stop, optimistic, value_template, tilt_open_position, - tilt_closed_position, tilt_min, tilt_max): + tilt_closed_position, tilt_min, tilt_max, tilt_optimistic): """Initialize the cover.""" self._position = None self._state = None @@ -128,6 +133,7 @@ class MqttCover(CoverDevice): self._tilt_value = STATE_UNKNOWN self._tilt_min = tilt_min self._tilt_max = tilt_max + self._tilt_optimistic = tilt_optimistic @asyncio.coroutine def async_added_to_hass(self): @@ -177,7 +183,9 @@ class MqttCover(CoverDevice): yield from mqtt.async_subscribe( self.hass, self._state_topic, message_received, self._qos) - if self._tilt_status_topic is not None: + if self._tilt_status_topic is None: + self._tilt_optimistic = True + else: yield from mqtt.async_subscribe( self.hass, self._tilt_status_topic, tilt_updated, self._qos) @@ -252,12 +260,18 @@ class MqttCover(CoverDevice): """Tilt the cover open.""" mqtt.async_publish(self.hass, self._tilt_command_topic, self._tilt_open_position, self._qos, self._retain) + if self._tilt_optimistic: + self._tilt_value = self._tilt_open_position + self.hass.async_add_job(self.async_update_ha_state()) @asyncio.coroutine def async_close_cover_tilt(self, **kwargs): """Tilt the cover closed.""" mqtt.async_publish(self.hass, self._tilt_command_topic, self._tilt_closed_position, self._qos, self._retain) + if self._tilt_optimistic: + self._tilt_value = self._tilt_closed_position + self.hass.async_add_job(self.async_update_ha_state()) @asyncio.coroutine def async_set_cover_tilt_position(self, **kwargs): From ce3d8be72b38d98fb63e12b610408adc4547c9d8 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sat, 29 Apr 2017 20:36:50 -0700 Subject: [PATCH 092/169] Remove binary sensor platforms implementing state property (#7371) * Remove binary sensor platforms implementing state property * Fix workday inheritance --- .../components/binary_sensor/octoprint.py | 13 ++----------- .../components/binary_sensor/workday.py | 17 ++++++++--------- 2 files changed, 10 insertions(+), 20 deletions(-) diff --git a/homeassistant/components/binary_sensor/octoprint.py b/homeassistant/components/binary_sensor/octoprint.py index 3fd92d1ceb1..d1cc1d8e8a4 100644 --- a/homeassistant/components/binary_sensor/octoprint.py +++ b/homeassistant/components/binary_sensor/octoprint.py @@ -9,8 +9,7 @@ import logging import requests import voluptuous as vol -from homeassistant.const import ( - CONF_NAME, STATE_ON, STATE_OFF, CONF_MONITORED_CONDITIONS) +from homeassistant.const import CONF_NAME, CONF_MONITORED_CONDITIONS from homeassistant.components.binary_sensor import ( BinarySensorDevice, PLATFORM_SCHEMA) from homeassistant.loader import get_component @@ -85,18 +84,10 @@ class OctoPrintBinarySensor(BinarySensorDevice): """Return the name of the sensor.""" return self._name - @property - def state(self): - """Return the state of the sensor.""" - return self.is_on - @property def is_on(self): """Return true if binary sensor is on.""" - if self._state: - return STATE_ON - else: - return STATE_OFF + return bool(self._state) @property def device_class(self): diff --git a/homeassistant/components/binary_sensor/workday.py b/homeassistant/components/binary_sensor/workday.py index c25ea81922b..57c4533fb5d 100644 --- a/homeassistant/components/binary_sensor/workday.py +++ b/homeassistant/components/binary_sensor/workday.py @@ -11,10 +11,9 @@ import datetime import voluptuous as vol from homeassistant.components.sensor import PLATFORM_SCHEMA -from homeassistant.const import ( - STATE_ON, STATE_OFF, STATE_UNKNOWN, CONF_NAME, WEEKDAYS) +from homeassistant.const import CONF_NAME, WEEKDAYS import homeassistant.util.dt as dt_util -from homeassistant.helpers.entity import Entity +from homeassistant.components.binary_sensor import BinarySensorDevice import homeassistant.helpers.config_validation as cv _LOGGER = logging.getLogger(__name__) @@ -92,7 +91,7 @@ def day_to_string(day): return None -class IsWorkdaySensor(Entity): +class IsWorkdaySensor(BinarySensorDevice): """Implementation of a Workday sensor.""" def __init__(self, obj_holidays, workdays, excludes, name): @@ -101,7 +100,7 @@ class IsWorkdaySensor(Entity): self._obj_holidays = obj_holidays self._workdays = workdays self._excludes = excludes - self._state = STATE_UNKNOWN + self._state = None @property def name(self): @@ -109,7 +108,7 @@ class IsWorkdaySensor(Entity): return self._name @property - def state(self): + def is_on(self): """Return the state of the device.""" return self._state @@ -135,14 +134,14 @@ class IsWorkdaySensor(Entity): def async_update(self): """Get date and look whether it is a holiday.""" # Default is no workday - self._state = STATE_OFF + self._state = False # Get iso day of the week (1 = Monday, 7 = Sunday) day = datetime.datetime.today().isoweekday() - 1 day_of_week = day_to_string(day) if self.is_include(day_of_week, dt_util.now()): - self._state = STATE_ON + self._state = True if self.is_exclude(day_of_week, dt_util.now()): - self._state = STATE_OFF + self._state = False From e4ebae55d50daee6e901abdb602eac0bb28a7d80 Mon Sep 17 00:00:00 2001 From: LvivEchoes Date: Sun, 30 Apr 2017 06:39:11 +0300 Subject: [PATCH 093/169] Feature/add mikrotik device tracker (#7366) * Add Mikroik device tracker platform * Update coveragerc with mikrotik.py * Update coveragerc with mikrotik.py * Fix lint errors --- .coveragerc | 1 + .../components/device_tracker/mikrotik.py | 131 ++++++++++++++++++ requirements_all.txt | 3 + 3 files changed, 135 insertions(+) create mode 100644 homeassistant/components/device_tracker/mikrotik.py diff --git a/.coveragerc b/.coveragerc index 365a3a23fc1..90caadc23b5 100644 --- a/.coveragerc +++ b/.coveragerc @@ -205,6 +205,7 @@ omit = homeassistant/components/device_tracker/icloud.py homeassistant/components/device_tracker/linksys_ap.py homeassistant/components/device_tracker/luci.py + homeassistant/components/device_tracker/mikrotik.py homeassistant/components/device_tracker/netgear.py homeassistant/components/device_tracker/nmap_tracker.py homeassistant/components/device_tracker/ping.py diff --git a/homeassistant/components/device_tracker/mikrotik.py b/homeassistant/components/device_tracker/mikrotik.py new file mode 100644 index 00000000000..5b28a9eb664 --- /dev/null +++ b/homeassistant/components/device_tracker/mikrotik.py @@ -0,0 +1,131 @@ +""" +Support for Mikrotik routers as device tracker. + +For more details about this platform, please refer to the documentation at +https://home-assistant.io/components/device_tracker.mikrotik/ +""" +import logging +import threading +from datetime import timedelta + +import voluptuous as vol + +import homeassistant.helpers.config_validation as cv +from homeassistant.components.device_tracker import ( + DOMAIN, PLATFORM_SCHEMA, DeviceScanner) +from homeassistant.const import (CONF_HOST, + CONF_PASSWORD, + CONF_USERNAME, + CONF_PORT) +from homeassistant.util import Throttle + +REQUIREMENTS = ['librouteros==1.0.2'] + +# Return cached results if last scan was less then this time ago. +MIN_TIME_BETWEEN_SCANS = timedelta(seconds=10) + +MTK_DEFAULT_API_PORT = '8728' + +_LOGGER = logging.getLogger(__name__) + +PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ + vol.Required(CONF_HOST): cv.string, + vol.Required(CONF_USERNAME): cv.string, + vol.Required(CONF_PASSWORD): cv.string, + vol.Optional(CONF_PORT, default=MTK_DEFAULT_API_PORT): cv.port +}) + + +def get_scanner(hass, config): + """Validate the configuration and return MTikScanner.""" + scanner = MikrotikScanner(config[DOMAIN]) + return scanner if scanner.success_init else None + + +class MikrotikScanner(DeviceScanner): + """This class queries a Mikrotik router.""" + + def __init__(self, config): + """Initialize the scanner.""" + self.last_results = {} + + self.host = config[CONF_HOST] + self.port = config[CONF_PORT] + self.username = config[CONF_USERNAME] + self.password = config[CONF_PASSWORD] + + self.lock = threading.Lock() + + self.connected = False + self.success_init = False + self.client = None + + self.success_init = self.connect_to_device() + + if self.success_init: + _LOGGER.info('Start polling Mikrotik router...') + self._update_info() + else: + _LOGGER.error('Connection to Mikrotik failed.') + + def connect_to_device(self): + """Connect to Mikrotik method.""" + # pylint: disable=import-error + import librouteros + try: + self.client = librouteros.connect( + self.host, + self.username, + self.password, + port=int(self.port) + ) + + routerboard_info = self.client(cmd='/system/routerboard/getall') + + if routerboard_info: + _LOGGER.info('Connected to Mikrotik %s with ip %s.', + routerboard_info[0].get('model', 'Router'), + self.host) + self.connected = True + + except (librouteros.exceptions.TrapError, + librouteros.exceptions.ConnectionError) as api_error: + _LOGGER.error('Connection error: %s', api_error) + + return self.connected + + def scan_devices(self): + """Scan for new devices and return a list with found device MACs.""" + self._update_info() + return [device for device in self.last_results] + + def get_device_name(self, mac): + """Return the name of the given device or None if we don't know.""" + with self.lock: + return self.last_results.get(mac) + + @Throttle(MIN_TIME_BETWEEN_SCANS) + def _update_info(self): + """Retrieve latest information from the Mikrotik box.""" + with self.lock: + _LOGGER.info('Loading wireless device from Mikrotik...') + + wireless_clients = self.client( + cmd='/interface/wireless/registration-table/getall' + ) + device_names = self.client(cmd='/ip/dhcp-server/lease/getall') + + if device_names is None or wireless_clients is None: + return False + + mac_names = {device.get('mac-address'): device.get('host-name') + for device in device_names + if device.get('mac-address')} + + self.last_results = { + device.get('mac-address'): + mac_names.get(device.get('mac-address')) + for device in wireless_clients + } + + return True diff --git a/requirements_all.txt b/requirements_all.txt index 4cde496c7cd..8b5ad9bc775 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -363,6 +363,9 @@ knxip==0.3.3 # homeassistant.components.device_tracker.owntracks libnacl==1.5.0 +# homeassistant.components.device_tracker.mikrotik +librouteros==1.0.2 + # homeassistant.components.media_player.soundtouch libsoundtouch==0.3.0 From 607394a0a0cd672d7dc9c953851e153fd01a902b Mon Sep 17 00:00:00 2001 From: Jason Carter Date: Sat, 29 Apr 2017 23:54:45 -0400 Subject: [PATCH 094/169] Netdisco now returns a dictionary while it used to be a tuple, fixed (#7350) --- homeassistant/components/media_player/roku.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/media_player/roku.py b/homeassistant/components/media_player/roku.py index 59e6a19bff8..8d45945eee1 100644 --- a/homeassistant/components/media_player/roku.py +++ b/homeassistant/components/media_player/roku.py @@ -43,13 +43,13 @@ def setup_platform(hass, config, add_devices, discovery_info=None): hosts = [] if discovery_info: - host = discovery_info[0] + host = discovery_info.get("host") if host in KNOWN_HOSTS: return _LOGGER.debug('Discovered Roku: %s', host) - hosts.append(discovery_info[0]) + hosts.append(discovery_info.get("host")) elif CONF_HOST in config: hosts.append(config.get(CONF_HOST)) From 7b1e948e8d6fd0698f6bf51d9aeaacc06020c2c1 Mon Sep 17 00:00:00 2001 From: onsmam Date: Sun, 30 Apr 2017 06:20:46 +0200 Subject: [PATCH 095/169] Create knx.py (#7356) * Create knx.py light device for the knx component * Fix doc strings --- homeassistant/components/light/knx.py | 53 +++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 homeassistant/components/light/knx.py diff --git a/homeassistant/components/light/knx.py b/homeassistant/components/light/knx.py new file mode 100644 index 00000000000..7a972e35d40 --- /dev/null +++ b/homeassistant/components/light/knx.py @@ -0,0 +1,53 @@ +""" +Support KNX Lighting actuators. + +For more details about this platform, please refer to the documentation at +https://home-assistant.io/components/Light.knx/ +""" +import voluptuous as vol + +from homeassistant.components.knx import (KNXConfig, KNXGroupAddress) +from homeassistant.components.light import (Light, PLATFORM_SCHEMA) +from homeassistant.const import CONF_NAME +import homeassistant.helpers.config_validation as cv + +CONF_ADDRESS = 'address' +CONF_STATE_ADDRESS = 'state_address' + +DEFAULT_NAME = 'KNX Light' +DEPENDENCIES = ['knx'] + +PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ + vol.Required(CONF_ADDRESS): cv.string, + vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string, + vol.Optional(CONF_STATE_ADDRESS): cv.string, +}) + + +def setup_platform(hass, config, add_devices, discovery_info=None): + """Setup the KNX light platform.""" + add_devices([KNXLight(hass, KNXConfig(config))]) + + +class KNXLight(KNXGroupAddress, Light): + """Representation of a KNX Light device.""" + + def turn_on(self, **kwargs): + """Turn the switch on. + + This sends a value 1 to the group address of the device + """ + self.group_write(1) + self._state = [1] + if not self.should_poll: + self.schedule_update_ha_state() + + def turn_off(self, **kwargs): + """Turn the switch off. + + This sends a value 1 to the group address of the device + """ + self.group_write(0) + self._state = [0] + if not self.should_poll: + self.schedule_update_ha_state() From b815ccc3b8dad09f5b18e545952d717caffdf61f Mon Sep 17 00:00:00 2001 From: Gergely Imreh Date: Sun, 30 Apr 2017 05:34:31 +0100 Subject: [PATCH 096/169] light.sensehat: plugin to control the 8x8 LED matrix on a Sense hat (#7365) * light.sensehat: adding plugin to control the 8x8 LED matrix on a Sense Hat * add new .coveragerc entry * light.sensehat: formatting and removing unused import * light.sensehat: add to requirements list * light.sensehat: update docstrings to the linter's specs * light.sensehat: add a bit more docstring --- .coveragerc | 1 + homeassistant/components/light/sensehat.py | 102 +++++++++++++++++++++ requirements_all.txt | 1 + 3 files changed, 104 insertions(+) create mode 100644 homeassistant/components/light/sensehat.py diff --git a/.coveragerc b/.coveragerc index 90caadc23b5..ed81479a645 100644 --- a/.coveragerc +++ b/.coveragerc @@ -243,6 +243,7 @@ omit = homeassistant/components/light/osramlightify.py homeassistant/components/light/rpi_gpio_pwm.py homeassistant/components/light/piglow.py + homeassistant/components/light/sensehat.py homeassistant/components/light/tikteck.py homeassistant/components/light/tradfri.py homeassistant/components/light/x10.py diff --git a/homeassistant/components/light/sensehat.py b/homeassistant/components/light/sensehat.py new file mode 100644 index 00000000000..acda0dc206c --- /dev/null +++ b/homeassistant/components/light/sensehat.py @@ -0,0 +1,102 @@ +""" +Support for Sense Hat LEDs. + +For more details about this platform, please refer to the documentation at +https://home-assistant.io/components/light.sensehat/ +""" +import logging + +import voluptuous as vol + +import homeassistant.helpers.config_validation as cv +from homeassistant.components.light import ( + ATTR_BRIGHTNESS, SUPPORT_BRIGHTNESS, ATTR_RGB_COLOR, SUPPORT_RGB_COLOR, + Light, PLATFORM_SCHEMA) +from homeassistant.const import CONF_NAME + +REQUIREMENTS = ['sense-hat==2.2.0'] + +_LOGGER = logging.getLogger(__name__) + +SUPPORT_SENSEHAT = (SUPPORT_BRIGHTNESS | SUPPORT_RGB_COLOR) + +DEFAULT_NAME = 'sensehat' + +PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ + vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string, +}) + + +def setup_platform(hass, config, add_devices, discovery_info=None): + """Set up the Sense Hat Light platform.""" + from sense_hat import SenseHat + sensehat = SenseHat() + + name = config.get(CONF_NAME) + + add_devices([SenseHatLight(sensehat, name)]) + + +class SenseHatLight(Light): + """Representation of an Sense Hat Light.""" + + def __init__(self, sensehat, name): + """Initialize an Sense Hat Light. + + Full brightness and white color. + """ + self._sensehat = sensehat + self._name = name + self._is_on = False + self._brightness = 255 + self._rgb_color = [255, 255, 255] + + @property + def name(self): + """Return the display name of this light.""" + return self._name + + @property + def brightness(self): + """Read back the brightness of the light. + + Returns integer in the range of 1-255. + """ + return self._brightness + + @property + def rgb_color(self): + """Read back the color of the light. + + Returns [r, g, b] list with values in range of 0-255. + """ + return self._rgb_color + + @property + def supported_features(self): + """Flag supported features.""" + return SUPPORT_SENSEHAT + + @property + def is_on(self): + """Return true if light is on.""" + return self._is_on + + def turn_on(self, **kwargs): + """Instruct the light to turn on and set correct brightness & color.""" + self._brightness = kwargs.get(ATTR_BRIGHTNESS, 255) + percent_bright = (self._brightness / 255) + + if ATTR_RGB_COLOR in kwargs: + self._rgb_color = kwargs[ATTR_RGB_COLOR] + + self._sensehat.clear(int(self._rgb_color[0] * percent_bright), + int(self._rgb_color[1] * percent_bright), + int(self._rgb_color[2] * percent_bright)) + + self._is_on = True + + def turn_off(self, **kwargs): + """Instruct the light to turn off.""" + self._sensehat.clear() + self._is_on = False diff --git a/requirements_all.txt b/requirements_all.txt index 8b5ad9bc775..2cb86b3435c 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -723,6 +723,7 @@ scsgate==0.1.0 # homeassistant.components.notify.sendgrid sendgrid==4.0.0 +# homeassistant.components.light.sensehat # homeassistant.components.sensor.sensehat sense-hat==2.2.0 From cf664e42cca80546f1f85963f58c96942ac62138 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sat, 29 Apr 2017 21:39:27 -0700 Subject: [PATCH 097/169] Add assumed state to sensehat light. --- homeassistant/components/light/sensehat.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/homeassistant/components/light/sensehat.py b/homeassistant/components/light/sensehat.py index acda0dc206c..5e623fc772e 100644 --- a/homeassistant/components/light/sensehat.py +++ b/homeassistant/components/light/sensehat.py @@ -82,6 +82,16 @@ class SenseHatLight(Light): """Return true if light is on.""" return self._is_on + @property + def should_poll(self): + """Return if we should poll this device.""" + return False + + @property + def assumed_state(self) -> bool: + """Return True if unable to access real state of the entity.""" + return True + def turn_on(self, **kwargs): """Instruct the light to turn on and set correct brightness & color.""" self._brightness = kwargs.get(ATTR_BRIGHTNESS, 255) @@ -95,8 +105,10 @@ class SenseHatLight(Light): int(self._rgb_color[2] * percent_bright)) self._is_on = True + this.schedule_update_ha_state() def turn_off(self, **kwargs): """Instruct the light to turn off.""" self._sensehat.clear() self._is_on = False + this.schedule_update_ha_state() From e22e70a01a1a9d950238218def7e7351a659fc3f Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sat, 29 Apr 2017 21:40:10 -0700 Subject: [PATCH 098/169] Update sensehat.py --- homeassistant/components/light/sensehat.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/light/sensehat.py b/homeassistant/components/light/sensehat.py index 5e623fc772e..c4aad134b0b 100644 --- a/homeassistant/components/light/sensehat.py +++ b/homeassistant/components/light/sensehat.py @@ -105,10 +105,10 @@ class SenseHatLight(Light): int(self._rgb_color[2] * percent_bright)) self._is_on = True - this.schedule_update_ha_state() + self.schedule_update_ha_state() def turn_off(self, **kwargs): """Instruct the light to turn off.""" self._sensehat.clear() self._is_on = False - this.schedule_update_ha_state() + self.schedule_update_ha_state() From 3ee4d1060fdbe067c19f7d4ce4777a7eb9dbb412 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sun, 30 Apr 2017 07:04:49 +0200 Subject: [PATCH 099/169] Update docstrings (#7361) * Update docstrings * Update docstrings * Update docstrings * Update docstrings * update docstrings * Update docstrings * Update docstrings * Update docstrings * Update docstrings * Update docstrings * Update tomato.py * Update isy994.py * Lint + fix tests * Lint --- homeassistant/__main__.py | 4 +- homeassistant/bootstrap.py | 14 +-- homeassistant/components/__init__.py | 2 +- .../alarm_control_panel/alarmdecoder.py | 17 ++- .../alarm_control_panel/alarmdotcom.py | 3 +- .../alarm_control_panel/concord232.py | 4 +- .../components/alarm_control_panel/demo.py | 2 +- .../alarm_control_panel/envisalink.py | 2 +- .../components/alarm_control_panel/manual.py | 10 +- .../components/alarm_control_panel/mqtt.py | 8 +- .../components/alarm_control_panel/nx584.py | 17 ++- .../alarm_control_panel/simplisafe.py | 8 +- .../alarm_control_panel/totalconnect.py | 17 ++- .../alarm_control_panel/verisure.py | 17 ++- .../components/alarm_control_panel/wink.py | 3 +- homeassistant/components/alarmdecoder.py | 38 +++--- .../components/automation/__init__.py | 6 +- homeassistant/components/automation/event.py | 4 +- .../components/automation/homeassistant.py | 2 +- homeassistant/components/automation/state.py | 10 +- homeassistant/components/automation/time.py | 8 +- homeassistant/components/automation/zone.py | 4 +- homeassistant/components/bbb_gpio.py | 4 +- .../components/binary_sensor/__init__.py | 2 +- .../components/binary_sensor/alarmdecoder.py | 10 +- .../binary_sensor/android_ip_webcam.py | 6 +- .../components/binary_sensor/apcupsd.py | 2 +- .../components/binary_sensor/bbb_gpio.py | 4 +- .../components/binary_sensor/blink.py | 2 +- .../components/binary_sensor/bloomsky.py | 7 +- .../components/binary_sensor/command_line.py | 4 +- .../components/binary_sensor/concord232.py | 9 +- .../components/binary_sensor/demo.py | 4 +- .../components/binary_sensor/ecobee.py | 2 +- .../components/binary_sensor/enocean.py | 8 +- .../components/binary_sensor/envisalink.py | 5 +- .../components/binary_sensor/ffmpeg_motion.py | 16 ++- .../components/binary_sensor/ffmpeg_noise.py | 12 +- .../components/binary_sensor/flic.py | 2 +- .../components/binary_sensor/hikvision.py | 16 +-- .../components/binary_sensor/homematic.py | 28 ++--- .../components/binary_sensor/insteon_plm.py | 4 +- .../components/binary_sensor/isy994.py | 3 +- homeassistant/components/binary_sensor/knx.py | 2 +- .../components/binary_sensor/maxcube.py | 2 +- .../components/binary_sensor/modbus.py | 8 +- .../components/binary_sensor/mqtt.py | 4 +- .../components/binary_sensor/mysensors.py | 2 +- .../components/binary_sensor/nest.py | 20 +-- .../components/binary_sensor/netatmo.py | 89 ++++++-------- .../components/binary_sensor/nx584.py | 4 +- .../components/binary_sensor/octoprint.py | 26 ++-- .../components/binary_sensor/rest.py | 6 +- .../components/binary_sensor/rpi_gpio.py | 8 +- .../components/binary_sensor/sleepiq.py | 2 +- homeassistant/components/binary_sensor/tcp.py | 2 +- .../components/binary_sensor/template.py | 22 ++-- .../components/binary_sensor/threshold.py | 2 +- .../components/binary_sensor/trend.py | 29 ++--- .../components/binary_sensor/volvooncall.py | 3 +- .../components/binary_sensor/wemo.py | 16 ++- .../components/binary_sensor/wink.py | 28 ++--- homeassistant/components/binary_sensor/zha.py | 6 +- .../components/binary_sensor/zigbee.py | 2 +- .../components/binary_sensor/zwave.py | 10 +- homeassistant/components/bloomsky.py | 7 +- homeassistant/components/calendar/__init__.py | 20 +-- homeassistant/components/calendar/demo.py | 14 +-- homeassistant/components/calendar/google.py | 13 +- homeassistant/components/camera/__init__.py | 22 ++-- homeassistant/components/camera/blink.py | 8 +- homeassistant/components/camera/bloomsky.py | 6 +- homeassistant/components/camera/demo.py | 6 +- homeassistant/components/camera/ffmpeg.py | 4 +- homeassistant/components/camera/foscam.py | 4 +- homeassistant/components/camera/generic.py | 12 +- homeassistant/components/camera/local_file.py | 4 +- homeassistant/components/camera/mjpeg.py | 6 +- homeassistant/components/camera/mqtt.py | 10 +- homeassistant/components/camera/neato.py | 10 +- homeassistant/components/camera/netatmo.py | 18 +-- homeassistant/components/camera/rpi_camera.py | 2 +- homeassistant/components/camera/synology.py | 14 +-- homeassistant/components/camera/uvc.py | 23 ++-- homeassistant/components/camera/verisure.py | 37 +++--- homeassistant/components/camera/zoneminder.py | 16 +-- homeassistant/components/climate/__init__.py | 84 ++++++------- homeassistant/components/climate/demo.py | 26 ++-- homeassistant/components/climate/ecobee.py | 31 +++-- .../components/climate/eq3btsmart.py | 22 ++-- .../components/climate/generic_thermostat.py | 16 +-- homeassistant/components/climate/heatmiser.py | 2 +- homeassistant/components/climate/homematic.py | 25 ++-- homeassistant/components/climate/honeywell.py | 37 +++--- homeassistant/components/climate/knx.py | 2 +- homeassistant/components/climate/maxcube.py | 14 +-- homeassistant/components/climate/mysensors.py | 38 +++--- homeassistant/components/climate/nest.py | 4 +- homeassistant/components/climate/netatmo.py | 3 +- homeassistant/components/climate/oem.py | 22 ++-- homeassistant/components/climate/proliphix.py | 3 +- .../components/climate/radiotherm.py | 2 +- homeassistant/components/climate/tado.py | 8 +- homeassistant/components/climate/vera.py | 24 ++-- homeassistant/components/climate/wink.py | 4 +- homeassistant/components/climate/zwave.py | 14 +-- homeassistant/components/config/__init__.py | 8 +- homeassistant/components/config/core.py | 4 +- homeassistant/components/config/group.py | 5 +- homeassistant/components/config/hassbian.py | 6 +- homeassistant/components/config/zwave.py | 2 +- homeassistant/components/configurator.py | 4 +- homeassistant/components/cover/__init__.py | 3 +- .../components/cover/command_line.py | 12 +- homeassistant/components/cover/demo.py | 2 +- homeassistant/components/cover/homematic.py | 8 +- homeassistant/components/cover/isy994.py | 18 ++- homeassistant/components/cover/mqtt.py | 6 +- homeassistant/components/cover/myq.py | 10 +- homeassistant/components/cover/mysensors.py | 3 +- homeassistant/components/cover/rfxtrx.py | 15 +-- homeassistant/components/cover/rpi_gpio.py | 4 +- homeassistant/components/cover/scsgate.py | 2 +- homeassistant/components/cover/tellduslive.py | 4 +- homeassistant/components/cover/vera.py | 4 +- homeassistant/components/cover/wink.py | 3 +- homeassistant/components/cover/zwave.py | 10 +- homeassistant/components/demo.py | 18 +-- .../components/device_sun_light_trigger.py | 12 +- .../components/device_tracker/__init__.py | 71 ++++++----- .../components/device_tracker/actiontec.py | 10 +- .../components/device_tracker/aruba.py | 16 +-- .../components/device_tracker/asuswrt.py | 50 ++++---- .../components/device_tracker/automatic.py | 2 +- .../components/device_tracker/bbox.py | 6 +- .../device_tracker/bluetooth_le_tracker.py | 19 +-- .../device_tracker/bluetooth_tracker.py | 28 +++-- .../device_tracker/bt_home_hub_5.py | 12 +- .../components/device_tracker/cisco_ios.py | 7 +- .../components/device_tracker/ddwrt.py | 14 +-- .../components/device_tracker/demo.py | 9 +- .../components/device_tracker/fritz.py | 14 +-- .../components/device_tracker/gpslogger.py | 13 +- .../components/device_tracker/icloud.py | 53 ++++---- .../components/device_tracker/linksys_ap.py | 9 +- .../components/device_tracker/luci.py | 21 ++-- .../components/device_tracker/mqtt.py | 4 +- .../components/device_tracker/mqtt_json.py | 10 +- .../components/device_tracker/mysensors.py | 8 +- .../components/device_tracker/netgear.py | 14 +-- .../components/device_tracker/nmap_tracker.py | 2 +- .../components/device_tracker/owntracks.py | 47 ++++--- .../components/device_tracker/ping.py | 6 +- .../components/device_tracker/swisscom.py | 1 - .../components/device_tracker/tado.py | 10 +- .../components/device_tracker/thomson.py | 9 +- .../components/device_tracker/tomato.py | 24 ++-- .../components/device_tracker/tplink.py | 30 ++--- .../components/device_tracker/trackr.py | 10 +- .../components/device_tracker/ubus.py | 20 +-- .../components/device_tracker/unifi.py | 16 +-- .../components/device_tracker/upc_connect.py | 4 +- .../components/device_tracker/volvooncall.py | 4 +- .../components/device_tracker/xiaomi.py | 35 +++--- homeassistant/components/dweet.py | 2 +- homeassistant/components/ecobee.py | 10 +- .../components/emulated_hue/__init__.py | 24 ++-- homeassistant/components/enocean.py | 13 +- homeassistant/components/envisalink.py | 44 +++---- homeassistant/components/fan/__init__.py | 4 +- homeassistant/components/fan/demo.py | 4 +- homeassistant/components/fan/isy994.py | 10 +- homeassistant/components/fan/mqtt.py | 10 +- homeassistant/components/fan/wink.py | 4 +- homeassistant/components/ffmpeg.py | 29 ++--- homeassistant/components/foursquare.py | 6 +- homeassistant/components/frontend/__init__.py | 51 ++++---- homeassistant/components/google.py | 22 ++-- homeassistant/components/graphite.py | 30 ++--- homeassistant/components/group.py | 4 +- homeassistant/components/hassio.py | 8 +- homeassistant/components/hdmi_cec.py | 6 +- homeassistant/components/history.py | 4 +- homeassistant/components/homematic.py | 10 +- homeassistant/components/http/__init__.py | 15 ++- homeassistant/components/http/auth.py | 10 +- homeassistant/components/http/ban.py | 10 +- homeassistant/components/ifttt.py | 2 +- .../components/image_processing/__init__.py | 3 +- .../components/image_processing/demo.py | 2 +- .../image_processing/microsoft_face_detect.py | 6 +- .../microsoft_face_identify.py | 6 +- .../image_processing/openalpr_cloud.py | 10 +- .../image_processing/openalpr_local.py | 10 +- homeassistant/components/influxdb.py | 2 +- homeassistant/components/input_boolean.py | 4 +- homeassistant/components/input_select.py | 6 +- homeassistant/components/input_slider.py | 24 ++-- homeassistant/components/insteon_hub.py | 6 +- homeassistant/components/insteon_local.py | 4 +- homeassistant/components/insteon_plm.py | 8 +- homeassistant/components/introduction.py | 2 +- homeassistant/components/ios.py | 116 +++++++++--------- homeassistant/components/isy994.py | 43 ++++--- homeassistant/components/joaoapps_join.py | 6 +- homeassistant/components/keyboard_remote.py | 45 +++---- homeassistant/components/knx.py | 22 ++-- homeassistant/components/lirc.py | 4 +- homeassistant/components/litejet.py | 4 +- homeassistant/components/logbook.py | 23 ++-- homeassistant/components/logentries.py | 12 +- homeassistant/components/logger.py | 4 +- homeassistant/components/lutron.py | 4 +- homeassistant/components/lutron_caseta.py | 11 +- homeassistant/components/microsoft_face.py | 4 +- homeassistant/components/mochad.py | 9 +- homeassistant/components/modbus.py | 28 ++--- homeassistant/components/mqtt_eventstream.py | 4 +- homeassistant/components/mysensors.py | 82 +++++++------ homeassistant/components/neato.py | 14 +-- homeassistant/components/nest.py | 22 ++-- homeassistant/components/nuimo_controller.py | 32 ++--- homeassistant/components/octoprint.py | 11 +- homeassistant/components/panel_iframe.py | 9 +- .../components/persistent_notification.py | 10 +- homeassistant/components/pilight.py | 12 +- homeassistant/components/proximity.py | 6 +- homeassistant/components/qwikswitch.py | 2 +- homeassistant/components/rest_command.py | 2 +- homeassistant/components/rfxtrx.py | 6 +- homeassistant/components/ring.py | 2 +- homeassistant/components/rpi_gpio.py | 6 +- homeassistant/components/rss_feed_template.py | 8 +- homeassistant/components/script.py | 18 +-- homeassistant/components/scsgate.py | 8 +- homeassistant/components/shell_command.py | 10 +- homeassistant/components/sleepiq.py | 10 +- homeassistant/components/splunk.py | 12 +- homeassistant/components/statsd.py | 2 +- homeassistant/components/sun.py | 2 +- homeassistant/components/tado.py | 10 +- homeassistant/components/tellduslive.py | 21 ++-- homeassistant/components/tellstick.py | 14 +-- homeassistant/components/tradfri.py | 4 +- homeassistant/components/vera.py | 5 +- homeassistant/components/verisure.py | 15 ++- homeassistant/components/volvooncall.py | 17 ++- homeassistant/components/weblink.py | 2 +- homeassistant/components/websocket_api.py | 61 ++++----- homeassistant/components/wemo.py | 2 +- homeassistant/components/wink.py | 4 +- homeassistant/components/zha/__init__.py | 14 +-- homeassistant/components/zha/const.py | 3 +- homeassistant/components/zigbee.py | 32 ++--- homeassistant/components/zone.py | 6 +- homeassistant/config.py | 2 +- homeassistant/core.py | 30 ++--- homeassistant/exceptions.py | 4 +- homeassistant/remote.py | 12 +- homeassistant/setup.py | 60 +++++---- homeassistant/util/temperature.py | 18 ++- homeassistant/util/yaml.py | 12 +- tests/components/device_tracker/test_ddwrt.py | 2 +- tests/components/test_splunk.py | 3 +- 264 files changed, 1686 insertions(+), 1768 deletions(-) diff --git a/homeassistant/__main__.py b/homeassistant/__main__.py index 7035b26f670..0b07e5aa6f6 100644 --- a/homeassistant/__main__.py +++ b/homeassistant/__main__.py @@ -1,4 +1,4 @@ -"""Starts home assistant.""" +"""Start Home Assistant.""" from __future__ import print_function import argparse @@ -277,7 +277,7 @@ def cmdline() -> List[str]: def setup_and_run_hass(config_dir: str, args: argparse.Namespace) -> Optional[int]: - """Setup HASS and run.""" + """Set up HASS and run.""" from homeassistant import bootstrap # Run a simple daemon runner process on Windows to handle restarts diff --git a/homeassistant/bootstrap.py b/homeassistant/bootstrap.py index 8bf03597b9b..eeda1db51fc 100644 --- a/homeassistant/bootstrap.py +++ b/homeassistant/bootstrap.py @@ -1,4 +1,4 @@ -"""Provides methods to bootstrap a home assistant instance.""" +"""Provide methods to bootstrap a Home Assistant instance.""" import asyncio import logging import logging.handlers @@ -206,7 +206,7 @@ def async_from_config_file(config_path: str, @core.callback def async_enable_logging(hass: core.HomeAssistant, verbose: bool=False, log_rotate_days=None) -> None: - """Setup the logging. + """Set up the logging. This method must be run in the event loop. """ @@ -216,10 +216,10 @@ def async_enable_logging(hass: core.HomeAssistant, verbose: bool=False, colorfmt = "%(log_color)s{}%(reset)s".format(fmt) datefmt = '%Y-%m-%d %H:%M:%S' - # suppress overly verbose logs from libraries that aren't helpful - logging.getLogger("requests").setLevel(logging.WARNING) - logging.getLogger("urllib3").setLevel(logging.WARNING) - logging.getLogger("aiohttp.access").setLevel(logging.WARNING) + # Suppress overly verbose logs from libraries that aren't helpful + logging.getLogger('requests').setLevel(logging.WARNING) + logging.getLogger('urllib3').setLevel(logging.WARNING) + logging.getLogger('aiohttp.access').setLevel(logging.WARNING) try: from colorlog import ColoredFormatter @@ -274,7 +274,7 @@ def async_enable_logging(hass: core.HomeAssistant, verbose: bool=False, else: _LOGGER.error( - 'Unable to setup error log %s (access denied)', err_log_path) + "Unable to setup error log %s (access denied)", err_log_path) def mount_local_lib_path(config_dir: str) -> str: diff --git a/homeassistant/components/__init__.py b/homeassistant/components/__init__.py index 2bb7af23662..2abbf6c86ed 100644 --- a/homeassistant/components/__init__.py +++ b/homeassistant/components/__init__.py @@ -102,7 +102,7 @@ def reload_core_config(hass): @asyncio.coroutine def async_setup(hass, config): - """Setup general services related to Home Assistant.""" + """Set up general services related to Home Assistant.""" @asyncio.coroutine def async_handle_turn_service(service): """Method to handle calls to homeassistant.turn_on/off.""" diff --git a/homeassistant/components/alarm_control_panel/alarmdecoder.py b/homeassistant/components/alarm_control_panel/alarmdecoder.py index f176a87827b..40084eb1351 100644 --- a/homeassistant/components/alarm_control_panel/alarmdecoder.py +++ b/homeassistant/components/alarm_control_panel/alarmdecoder.py @@ -44,7 +44,7 @@ class AlarmDecoderAlarmPanel(alarm.AlarmControlPanel): self._name = name self._state = STATE_UNKNOWN - _LOGGER.debug("AlarmDecoderAlarm: Setting up panel") + _LOGGER.debug("Setting up panel") @asyncio.coroutine def async_added_to_hass(self): @@ -94,26 +94,23 @@ class AlarmDecoderAlarmPanel(alarm.AlarmControlPanel): @asyncio.coroutine def async_alarm_disarm(self, code=None): """Send disarm command.""" - _LOGGER.debug("AlarmDecoderAlarm::alarm_disarm: %s", code) + _LOGGER.debug("alarm_disarm: %s", code) if code: - _LOGGER.debug("AlarmDecoderAlarm::alarm_disarm: sending %s1", - str(code)) + _LOGGER.debug("alarm_disarm: sending %s1", str(code)) self.hass.data[DATA_AD].send("{!s}1".format(code)) @asyncio.coroutine def async_alarm_arm_away(self, code=None): """Send arm away command.""" - _LOGGER.debug("AlarmDecoderAlarm::alarm_arm_away: %s", code) + _LOGGER.debug("alarm_arm_away: %s", code) if code: - _LOGGER.debug("AlarmDecoderAlarm::alarm_arm_away: sending %s2", - str(code)) + _LOGGER.debug("alarm_arm_away: sending %s2", str(code)) self.hass.data[DATA_AD].send("{!s}2".format(code)) @asyncio.coroutine def async_alarm_arm_home(self, code=None): """Send arm home command.""" - _LOGGER.debug("AlarmDecoderAlarm::alarm_arm_home: %s", code) + _LOGGER.debug("alarm_arm_home: %s", code) if code: - _LOGGER.debug("AlarmDecoderAlarm::alarm_arm_home: sending %s3", - str(code)) + _LOGGER.debug("alarm_arm_home: sending %s3", str(code)) self.hass.data[DATA_AD].send("{!s}3".format(code)) diff --git a/homeassistant/components/alarm_control_panel/alarmdotcom.py b/homeassistant/components/alarm_control_panel/alarmdotcom.py index 6e99ba67257..75d3bc9922d 100644 --- a/homeassistant/components/alarm_control_panel/alarmdotcom.py +++ b/homeassistant/components/alarm_control_panel/alarmdotcom.py @@ -1,5 +1,4 @@ """ - Interfaces with Alarm.com alarm control panels. For more details about this platform, please refer to the documentation at @@ -33,7 +32,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ @asyncio.coroutine def async_setup_platform(hass, config, async_add_devices, discovery_info=None): - """Setup a Alarm.com control panel.""" + """Set up a Alarm.com control panel.""" name = config.get(CONF_NAME) code = config.get(CONF_CODE) username = config.get(CONF_USERNAME) diff --git a/homeassistant/components/alarm_control_panel/concord232.py b/homeassistant/components/alarm_control_panel/concord232.py index 18a492d6c12..167b7909fe6 100755 --- a/homeassistant/components/alarm_control_panel/concord232.py +++ b/homeassistant/components/alarm_control_panel/concord232.py @@ -51,7 +51,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None): class Concord232Alarm(alarm.AlarmControlPanel): - """Represents the Concord232-based alarm panel.""" + """Representation of the Concord232-based alarm panel.""" def __init__(self, hass, url, name): """Initialize the Concord232 alarm panel.""" @@ -79,7 +79,7 @@ class Concord232Alarm(alarm.AlarmControlPanel): @property def code_format(self): - """The characters if code is defined.""" + """Return the characters if code is defined.""" return '[0-9]{4}([0-9]{2})?' @property diff --git a/homeassistant/components/alarm_control_panel/demo.py b/homeassistant/components/alarm_control_panel/demo.py index ccbe3e72e3c..8ebf0a93c38 100644 --- a/homeassistant/components/alarm_control_panel/demo.py +++ b/homeassistant/components/alarm_control_panel/demo.py @@ -8,7 +8,7 @@ import homeassistant.components.alarm_control_panel.manual as manual def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the Demo alarm control panel platform.""" + """Set up the Demo alarm control panel platform.""" add_devices([ manual.ManualAlarm(hass, 'Alarm', '1234', 5, 10, False), ]) diff --git a/homeassistant/components/alarm_control_panel/envisalink.py b/homeassistant/components/alarm_control_panel/envisalink.py index 25f9257f393..34919a9db79 100644 --- a/homeassistant/components/alarm_control_panel/envisalink.py +++ b/homeassistant/components/alarm_control_panel/envisalink.py @@ -104,7 +104,7 @@ class EnvisalinkAlarm(EnvisalinkDevice, alarm.AlarmControlPanel): @callback def _update_callback(self, partition): - """Update HA state, if needed.""" + """Update Home Assistant state, if needed.""" if partition is None or int(partition) == self._partition_number: self.hass.async_add_job(self.async_update_ha_state()) diff --git a/homeassistant/components/alarm_control_panel/manual.py b/homeassistant/components/alarm_control_panel/manual.py index cc67795d713..ba932a1c372 100644 --- a/homeassistant/components/alarm_control_panel/manual.py +++ b/homeassistant/components/alarm_control_panel/manual.py @@ -39,7 +39,7 @@ _LOGGER = logging.getLogger(__name__) def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the manual alarm platform.""" + """Set up the manual alarm platform.""" add_devices([ManualAlarm( hass, config[CONF_NAME], @@ -52,7 +52,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None): class ManualAlarm(alarm.AlarmControlPanel): """ - Represents an alarm status. + Representation of an alarm status. When armed, will be pending for 'pending_time', after that armed. When triggered, will be pending for 'trigger_time'. After that will be @@ -62,7 +62,7 @@ class ManualAlarm(alarm.AlarmControlPanel): def __init__(self, hass, name, code, pending_time, trigger_time, disarm_after_trigger): - """Initalize the manual alarm panel.""" + """Init the manual alarm panel.""" self._state = STATE_ALARM_DISARMED self._hass = hass self._name = name @@ -75,7 +75,7 @@ class ManualAlarm(alarm.AlarmControlPanel): @property def should_poll(self): - """No polling needed.""" + """Return the plling state.""" return False @property @@ -166,5 +166,5 @@ class ManualAlarm(alarm.AlarmControlPanel): """Validate given code.""" check = self._code is None or code == self._code if not check: - _LOGGER.warning('Invalid code given for %s', state) + _LOGGER.warning("Invalid code given for %s", state) return check diff --git a/homeassistant/components/alarm_control_panel/mqtt.py b/homeassistant/components/alarm_control_panel/mqtt.py index b22f50b6575..33bfe464eea 100644 --- a/homeassistant/components/alarm_control_panel/mqtt.py +++ b/homeassistant/components/alarm_control_panel/mqtt.py @@ -45,7 +45,7 @@ PLATFORM_SCHEMA = mqtt.MQTT_BASE_PLATFORM_SCHEMA.extend({ @asyncio.coroutine def async_setup_platform(hass, config, async_add_devices, discovery_info=None): - """Setup the MQTT platform.""" + """Set up the MQTT Alarm Control Panel platform.""" async_add_devices([MqttAlarm( config.get(CONF_NAME), config.get(CONF_STATE_TOPIC), @@ -62,7 +62,7 @@ class MqttAlarm(alarm.AlarmControlPanel): def __init__(self, name, state_topic, command_topic, qos, payload_disarm, payload_arm_home, payload_arm_away, code): - """Initalize the MQTT alarm panel.""" + """Init the MQTT Alarm Control Panel.""" self._state = STATE_UNKNOWN self._name = name self._state_topic = state_topic @@ -80,11 +80,11 @@ class MqttAlarm(alarm.AlarmControlPanel): """ @callback def message_received(topic, payload, qos): - """A new MQTT message has been received.""" + """Run when new MQTT message has been received.""" if payload not in (STATE_ALARM_DISARMED, STATE_ALARM_ARMED_HOME, STATE_ALARM_ARMED_AWAY, STATE_ALARM_PENDING, STATE_ALARM_TRIGGERED): - _LOGGER.warning('Received unexpected payload: %s', payload) + _LOGGER.warning("Received unexpected payload: %s", payload) return self._state = payload self.hass.async_add_job(self.async_update_ha_state()) diff --git a/homeassistant/components/alarm_control_panel/nx584.py b/homeassistant/components/alarm_control_panel/nx584.py index b7b3beec72d..81a8b02cc64 100644 --- a/homeassistant/components/alarm_control_panel/nx584.py +++ b/homeassistant/components/alarm_control_panel/nx584.py @@ -32,7 +32,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup nx584 platform.""" + """Set up the nx584 platform.""" name = config.get(CONF_NAME) host = config.get(CONF_HOST) port = config.get(CONF_PORT) @@ -42,15 +42,15 @@ def setup_platform(hass, config, add_devices, discovery_info=None): try: add_devices([NX584Alarm(hass, url, name)]) except requests.exceptions.ConnectionError as ex: - _LOGGER.error('Unable to connect to NX584: %s', str(ex)) + _LOGGER.error("Unable to connect to NX584: %s", str(ex)) return False class NX584Alarm(alarm.AlarmControlPanel): - """Represents the NX584-based alarm panel.""" + """Representation of a NX584-based alarm panel.""" def __init__(self, hass, url, name): - """Initalize the nx584 alarm panel.""" + """Init the nx584 alarm panel.""" from nx584 import client self._hass = hass self._name = name @@ -69,7 +69,7 @@ class NX584Alarm(alarm.AlarmControlPanel): @property def code_format(self): - """The characters if code is defined.""" + """Return che characters if code is defined.""" return '[0-9]{4}([0-9]{2})?' @property @@ -83,20 +83,19 @@ class NX584Alarm(alarm.AlarmControlPanel): part = self._alarm.list_partitions()[0] zones = self._alarm.list_zones() except requests.exceptions.ConnectionError as ex: - _LOGGER.error('Unable to connect to %(host)s: %(reason)s', + _LOGGER.error("Unable to connect to %(host)s: %(reason)s", dict(host=self._url, reason=ex)) self._state = STATE_UNKNOWN zones = [] except IndexError: - _LOGGER.error('nx584 reports no partitions') + _LOGGER.error("nx584 reports no partitions") self._state = STATE_UNKNOWN zones = [] bypassed = False for zone in zones: if zone['bypassed']: - _LOGGER.debug('Zone %(zone)s is bypassed, ' - 'assuming HOME', + _LOGGER.debug("Zone %(zone)s is bypassed, assuming HOME", dict(zone=zone['number'])) bypassed = True break diff --git a/homeassistant/components/alarm_control_panel/simplisafe.py b/homeassistant/components/alarm_control_panel/simplisafe.py index 6d8e6be1f5c..985d219865d 100644 --- a/homeassistant/components/alarm_control_panel/simplisafe.py +++ b/homeassistant/components/alarm_control_panel/simplisafe.py @@ -123,25 +123,25 @@ class SimpliSafeAlarm(alarm.AlarmControlPanel): if not self._validate_code(code, 'disarming'): return self.simplisafe.set_state('off') - _LOGGER.info('SimpliSafe alarm disarming') + _LOGGER.info("SimpliSafe alarm disarming") def alarm_arm_home(self, code=None): """Send arm home command.""" if not self._validate_code(code, 'arming home'): return self.simplisafe.set_state('home') - _LOGGER.info('SimpliSafe alarm arming home') + _LOGGER.info("SimpliSafe alarm arming home") def alarm_arm_away(self, code=None): """Send arm away command.""" if not self._validate_code(code, 'arming away'): return self.simplisafe.set_state('away') - _LOGGER.info('SimpliSafe alarm arming away') + _LOGGER.info("SimpliSafe alarm arming away") def _validate_code(self, code, state): """Validate given code.""" check = self._code is None or code == self._code if not check: - _LOGGER.warning('Wrong code entered for %s', state) + _LOGGER.warning("Wrong code entered for %s", state) return check diff --git a/homeassistant/components/alarm_control_panel/totalconnect.py b/homeassistant/components/alarm_control_panel/totalconnect.py index a69e260c053..13925d7bd02 100644 --- a/homeassistant/components/alarm_control_panel/totalconnect.py +++ b/homeassistant/components/alarm_control_panel/totalconnect.py @@ -1,15 +1,20 @@ -"""Interfaces with TotalConnect alarm control panels.""" +""" +Interfaces with TotalConnect alarm control panels. + +For more details about this platform, please refer to the documentation at +https://home-assistant.io/components/alarm_control_panel.totalconnect/ +""" import logging import voluptuous as vol +import homeassistant.helpers.config_validation as cv import homeassistant.components.alarm_control_panel as alarm from homeassistant.components.alarm_control_panel import PLATFORM_SCHEMA from homeassistant.const import ( CONF_PASSWORD, CONF_USERNAME, STATE_ALARM_ARMED_AWAY, STATE_ALARM_ARMED_HOME, STATE_ALARM_DISARMED, STATE_UNKNOWN, CONF_NAME) -import homeassistant.helpers.config_validation as cv REQUIREMENTS = ['total_connect_client==0.7'] @@ -25,7 +30,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup a TotalConnect control panel.""" + """Set up a TotalConnect control panel.""" name = config.get(CONF_NAME) username = config.get(CONF_USERNAME) password = config.get(CONF_PASSWORD) @@ -41,13 +46,13 @@ class TotalConnect(alarm.AlarmControlPanel): """Initialize the TotalConnect status.""" from total_connect_client import TotalConnectClient - _LOGGER.debug('Setting up TotalConnect...') + _LOGGER.debug("Setting up TotalConnect...") self._name = name self._username = username self._password = password self._state = STATE_UNKNOWN - self._client = TotalConnectClient.TotalConnectClient(username, - password) + self._client = TotalConnectClient.TotalConnectClient( + username, password) @property def name(self): diff --git a/homeassistant/components/alarm_control_panel/verisure.py b/homeassistant/components/alarm_control_panel/verisure.py index c1a394fe462..83a6ef44b76 100644 --- a/homeassistant/components/alarm_control_panel/verisure.py +++ b/homeassistant/components/alarm_control_panel/verisure.py @@ -17,7 +17,7 @@ _LOGGER = logging.getLogger(__name__) def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the Verisure platform.""" + """Set up the Verisure platform.""" alarms = [] if int(hub.config.get(CONF_ALARM, 1)): hub.update_alarms() @@ -29,7 +29,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None): class VerisureAlarm(alarm.AlarmControlPanel): - """Represent a Verisure alarm status.""" + """Representation of a Verisure alarm status.""" def __init__(self, device_id): """Initalize the Verisure alarm panel.""" @@ -55,12 +55,12 @@ class VerisureAlarm(alarm.AlarmControlPanel): @property def code_format(self): - """The code format as regex.""" + """Return the code format as regex.""" return '^\\d{%s}$' % self._digits @property def changed_by(self): - """Last change triggered by.""" + """Return the last change triggered by.""" return self._changed_by def update(self): @@ -75,24 +75,23 @@ class VerisureAlarm(alarm.AlarmControlPanel): self._state = STATE_ALARM_ARMED_AWAY elif hub.alarm_status[self._id].status != 'pending': _LOGGER.error( - 'Unknown alarm state %s', - hub.alarm_status[self._id].status) + 'Unknown alarm state %s', hub.alarm_status[self._id].status) self._changed_by = hub.alarm_status[self._id].name def alarm_disarm(self, code=None): """Send disarm command.""" hub.my_pages.alarm.set(code, 'DISARMED') - _LOGGER.info('verisure alarm disarming') + _LOGGER.info("verisure alarm disarming") hub.my_pages.alarm.wait_while_pending() def alarm_arm_home(self, code=None): """Send arm home command.""" hub.my_pages.alarm.set(code, 'ARMED_HOME') - _LOGGER.info('verisure alarm arming home') + _LOGGER.info("verisure alarm arming home") hub.my_pages.alarm.wait_while_pending() def alarm_arm_away(self, code=None): """Send arm away command.""" hub.my_pages.alarm.set(code, 'ARMED_AWAY') - _LOGGER.info('verisure alarm arming away') + _LOGGER.info("verisure alarm arming away") hub.my_pages.alarm.wait_while_pending() diff --git a/homeassistant/components/alarm_control_panel/wink.py b/homeassistant/components/alarm_control_panel/wink.py index c489b53c9c0..12dca97dd81 100644 --- a/homeassistant/components/alarm_control_panel/wink.py +++ b/homeassistant/components/alarm_control_panel/wink.py @@ -16,11 +16,12 @@ from homeassistant.components.wink import WinkDevice, DOMAIN _LOGGER = logging.getLogger(__name__) DEPENDENCIES = ['wink'] + STATE_ALARM_PRIVACY = 'Private' def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the Wink platform.""" + """Set up the Wink platform.""" import pywink for camera in pywink.get_cameras(): diff --git a/homeassistant/components/alarmdecoder.py b/homeassistant/components/alarmdecoder.py index ec99f2381e5..186526c7758 100644 --- a/homeassistant/components/alarmdecoder.py +++ b/homeassistant/components/alarmdecoder.py @@ -24,19 +24,16 @@ DOMAIN = 'alarmdecoder' DATA_AD = 'alarmdecoder' - CONF_DEVICE = 'device' -CONF_DEVICE_TYPE = 'type' -CONF_DEVICE_HOST = 'host' -CONF_DEVICE_PORT = 'port' -CONF_DEVICE_PATH = 'path' CONF_DEVICE_BAUD = 'baudrate' - -CONF_ZONES = 'zones' +CONF_DEVICE_HOST = 'host' +CONF_DEVICE_PATH = 'path' +CONF_DEVICE_PORT = 'port' +CONF_DEVICE_TYPE = 'type' +CONF_PANEL_DISPLAY = 'panel_display' CONF_ZONE_NAME = 'name' CONF_ZONE_TYPE = 'type' - -CONF_PANEL_DISPLAY = 'panel_display' +CONF_ZONES = 'zones' DEFAULT_DEVICE_TYPE = 'socket' DEFAULT_DEVICE_HOST = 'localhost' @@ -87,7 +84,7 @@ CONFIG_SCHEMA = vol.Schema({ @asyncio.coroutine def async_setup(hass, config): - """Common setup for AlarmDecoder devices.""" + """Set up for the AlarmDecoder devices.""" from alarmdecoder import AlarmDecoder from alarmdecoder.devices import (SocketDevice, SerialDevice, USBDevice) @@ -106,28 +103,28 @@ def async_setup(hass, config): sync_connect = asyncio.Future(loop=hass.loop) def handle_open(device): - """Callback for a successful connection.""" - _LOGGER.info("Established a connection with the alarmdecoder.") + """Handle the successful connection.""" + _LOGGER.info("Established a connection with the alarmdecoder") hass.bus.async_listen_once(EVENT_HOMEASSISTANT_STOP, stop_alarmdecoder) sync_connect.set_result(True) @callback def stop_alarmdecoder(event): - """Callback to handle shutdown alarmdecoder.""" + """The callback to handle shutdown AlarmDecoder.""" _LOGGER.debug("Shutting down alarmdecoder.") controller.close() @callback def handle_message(sender, message): - """Callback to handle message from alarmdecoder.""" + """The callback to handle message from AlarmDecoder.""" async_dispatcher_send(hass, SIGNAL_PANEL_MESSAGE, message) def zone_fault_callback(sender, zone): - """Callback to handle zone fault from alarmdecoder.""" + """The callback to handle zone fault from AlarmDecoder.""" async_dispatcher_send(hass, SIGNAL_ZONE_FAULT, zone) def zone_restore_callback(sender, zone): - """Callback to handle zone restore from alarmdecoder.""" + """The callback to handle zone restore from AlarmDecoder.""" async_dispatcher_send(hass, SIGNAL_ZONE_RESTORE, zone) controller = False @@ -157,15 +154,16 @@ def async_setup(hass, config): if not result: return False - hass.async_add_job(async_load_platform(hass, 'alarm_control_panel', DOMAIN, - conf, config)) + hass.async_add_job( + async_load_platform(hass, 'alarm_control_panel', DOMAIN, conf, + config)) if zones: hass.async_add_job(async_load_platform( hass, 'binary_sensor', DOMAIN, {CONF_ZONES: zones}, config)) if display: - hass.async_add_job(async_load_platform(hass, 'sensor', DOMAIN, - conf, config)) + hass.async_add_job(async_load_platform( + hass, 'sensor', DOMAIN, conf, config)) return True diff --git a/homeassistant/components/automation/__init__.py b/homeassistant/components/automation/__init__.py index 5c3d944aad4..5f59f760d0b 100644 --- a/homeassistant/components/automation/__init__.py +++ b/homeassistant/components/automation/__init__.py @@ -141,7 +141,7 @@ def reload(hass): @asyncio.coroutine def async_setup(hass, config): - """Setup the automation.""" + """Set up the automation.""" component = EntityComponent(_LOGGER, DOMAIN, hass, group_name=GROUP_NAME_ALL_AUTOMATIONS) @@ -400,7 +400,7 @@ def _async_get_action(hass, config, name): @asyncio.coroutine def action(entity_id, variables): - """Action to be executed.""" + """Execute an action.""" _LOGGER.info('Executing %s', name) logbook.async_log_entry( hass, name, 'has been triggered', DOMAIN, entity_id) @@ -430,7 +430,7 @@ def _async_process_if(hass, config, p_config): @asyncio.coroutine def _async_process_trigger(hass, config, trigger_configs, name, action): - """Setup the triggers. + """Set up the triggers. This method is a coroutine. """ diff --git a/homeassistant/components/automation/event.py b/homeassistant/components/automation/event.py index 0ff10665eb3..ba8e67e9213 100644 --- a/homeassistant/components/automation/event.py +++ b/homeassistant/components/automation/event.py @@ -13,8 +13,8 @@ from homeassistant.core import callback, CoreState from homeassistant.const import CONF_PLATFORM, EVENT_HOMEASSISTANT_START from homeassistant.helpers import config_validation as cv -CONF_EVENT_TYPE = "event_type" -CONF_EVENT_DATA = "event_data" +CONF_EVENT_TYPE = 'event_type' +CONF_EVENT_DATA = 'event_data' _LOGGER = logging.getLogger(__name__) diff --git a/homeassistant/components/automation/homeassistant.py b/homeassistant/components/automation/homeassistant.py index 0222ef02c26..6b8ee577a09 100644 --- a/homeassistant/components/automation/homeassistant.py +++ b/homeassistant/components/automation/homeassistant.py @@ -31,7 +31,7 @@ def async_trigger(hass, config, action): if event == EVENT_SHUTDOWN: @callback def hass_shutdown(event): - """Called when Home Assistant is shutting down.""" + """Execute when Home Assistant is shutting down.""" hass.async_run_job(action, { 'trigger': { 'platform': 'homeassistant', diff --git a/homeassistant/components/automation/state.py b/homeassistant/components/automation/state.py index 1f55ef67f25..576e9e60186 100644 --- a/homeassistant/components/automation/state.py +++ b/homeassistant/components/automation/state.py @@ -14,11 +14,11 @@ from homeassistant.helpers.event import ( async_track_state_change, async_track_point_in_utc_time) import homeassistant.helpers.config_validation as cv -CONF_ENTITY_ID = "entity_id" -CONF_FROM = "from" -CONF_TO = "to" -CONF_STATE = "state" -CONF_FOR = "for" +CONF_ENTITY_ID = 'entity_id' +CONF_FROM = 'from' +CONF_TO = 'to' +CONF_STATE = 'state' +CONF_FOR = 'for' TRIGGER_SCHEMA = vol.All( vol.Schema({ diff --git a/homeassistant/components/automation/time.py b/homeassistant/components/automation/time.py index 0adcd5f8272..9045cb7b1b6 100644 --- a/homeassistant/components/automation/time.py +++ b/homeassistant/components/automation/time.py @@ -14,9 +14,9 @@ from homeassistant.const import CONF_AFTER, CONF_PLATFORM from homeassistant.helpers import config_validation as cv from homeassistant.helpers.event import async_track_time_change -CONF_HOURS = "hours" -CONF_MINUTES = "minutes" -CONF_SECONDS = "seconds" +CONF_HOURS = 'hours' +CONF_MINUTES = 'minutes' +CONF_SECONDS = 'seconds' _LOGGER = logging.getLogger(__name__) @@ -32,7 +32,7 @@ TRIGGER_SCHEMA = vol.All(vol.Schema({ @asyncio.coroutine def async_trigger(hass, config, action): - """Listen for state changes based on configuration.""" + """"Listen for state changes based on configuration.""" if CONF_AFTER in config: after = config.get(CONF_AFTER) hours, minutes, seconds = after.hour, after.minute, after.second diff --git a/homeassistant/components/automation/zone.py b/homeassistant/components/automation/zone.py index c2a0e4d094d..61d846582cb 100644 --- a/homeassistant/components/automation/zone.py +++ b/homeassistant/components/automation/zone.py @@ -14,8 +14,8 @@ from homeassistant.helpers.event import async_track_state_change from homeassistant.helpers import ( condition, config_validation as cv, location) -EVENT_ENTER = "enter" -EVENT_LEAVE = "leave" +EVENT_ENTER = 'enter' +EVENT_LEAVE = 'leave' DEFAULT_EVENT = EVENT_ENTER TRIGGER_SCHEMA = vol.Schema({ diff --git a/homeassistant/components/bbb_gpio.py b/homeassistant/components/bbb_gpio.py index 89692a1e1e1..5d3954b4c87 100644 --- a/homeassistant/components/bbb_gpio.py +++ b/homeassistant/components/bbb_gpio.py @@ -37,14 +37,14 @@ def setup(hass, config): # noqa: F821 def setup_output(pin): - """Setup a GPIO as output.""" + """Set up a GPIO as output.""" # pylint: disable=import-error,undefined-variable import Adafruit_BBIO.GPIO as GPIO GPIO.setup(pin, GPIO.OUT) def setup_input(pin, pull_mode): - """Setup a GPIO as input.""" + """Set up a GPIO as input.""" # pylint: disable=import-error,undefined-variable import Adafruit_BBIO.GPIO as GPIO GPIO.setup(pin, GPIO.IN, # noqa: F821 diff --git a/homeassistant/components/binary_sensor/__init__.py b/homeassistant/components/binary_sensor/__init__.py index ab49c13770a..8f2b6bc59b3 100644 --- a/homeassistant/components/binary_sensor/__init__.py +++ b/homeassistant/components/binary_sensor/__init__.py @@ -57,7 +57,7 @@ class BinarySensorDevice(Entity): @property def is_on(self): - """Return True if the binary sensor is on.""" + """Return true if the binary sensor is on.""" return None @property diff --git a/homeassistant/components/binary_sensor/alarmdecoder.py b/homeassistant/components/binary_sensor/alarmdecoder.py index 21d33a4d303..495feaf64ab 100644 --- a/homeassistant/components/binary_sensor/alarmdecoder.py +++ b/homeassistant/components/binary_sensor/alarmdecoder.py @@ -26,7 +26,7 @@ _LOGGER = logging.getLogger(__name__) @asyncio.coroutine def async_setup_platform(hass, config, async_add_devices, discovery_info=None): - """Setup AlarmDecoder binary sensor devices.""" + """Set up the AlarmDecoder binary sensor devices.""" configured_zones = discovery_info[CONF_ZONES] devices = [] @@ -35,10 +35,8 @@ def async_setup_platform(hass, config, async_add_devices, discovery_info=None): device_config_data = ZONE_SCHEMA(configured_zones[zone_num]) zone_type = device_config_data[CONF_ZONE_TYPE] zone_name = device_config_data[CONF_ZONE_NAME] - device = AlarmDecoderBinarySensor(hass, - zone_num, - zone_name, - zone_type) + device = AlarmDecoderBinarySensor( + hass, zone_num, zone_name, zone_type) devices.append(device) async_add_devices(devices) @@ -57,7 +55,7 @@ class AlarmDecoderBinarySensor(BinarySensorDevice): self._name = zone_name self._type = zone_type - _LOGGER.debug('AlarmDecoderBinarySensor: Setup up zone: ' + zone_name) + _LOGGER.debug("Setup up zone: %s", self._name) @asyncio.coroutine def async_added_to_hass(self): diff --git a/homeassistant/components/binary_sensor/android_ip_webcam.py b/homeassistant/components/binary_sensor/android_ip_webcam.py index 4b9b4af24af..b1940f432ae 100644 --- a/homeassistant/components/binary_sensor/android_ip_webcam.py +++ b/homeassistant/components/binary_sensor/android_ip_webcam.py @@ -15,7 +15,7 @@ DEPENDENCIES = ['android_ip_webcam'] @asyncio.coroutine def async_setup_platform(hass, config, async_add_devices, discovery_info=None): - """Setup IP Webcam binary sensors.""" + """Set up the IP Webcam binary sensors.""" if discovery_info is None: return @@ -28,7 +28,7 @@ def async_setup_platform(hass, config, async_add_devices, discovery_info=None): class IPWebcamBinarySensor(AndroidIPCamEntity, BinarySensorDevice): - """Represents an IP Webcam binary sensor.""" + """Representation of an IP Webcam binary sensor.""" def __init__(self, name, host, ipcam, sensor): """Initialize the binary sensor.""" @@ -47,7 +47,7 @@ class IPWebcamBinarySensor(AndroidIPCamEntity, BinarySensorDevice): @property def is_on(self): - """True if the binary sensor is on.""" + """Return true if the binary sensor is on.""" return self._state @asyncio.coroutine diff --git a/homeassistant/components/binary_sensor/apcupsd.py b/homeassistant/components/binary_sensor/apcupsd.py index 05d0749b9ef..620b7fcc5de 100644 --- a/homeassistant/components/binary_sensor/apcupsd.py +++ b/homeassistant/components/binary_sensor/apcupsd.py @@ -21,7 +21,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ def setup_platform(hass, config, add_entities, discovery_info=None): - """Setup an Online Status binary sensor.""" + """Set up an Online Status binary sensor.""" add_entities((OnlineStatus(config, apcupsd.DATA),)) diff --git a/homeassistant/components/binary_sensor/bbb_gpio.py b/homeassistant/components/binary_sensor/bbb_gpio.py index dd960defaa8..785b178969f 100644 --- a/homeassistant/components/binary_sensor/bbb_gpio.py +++ b/homeassistant/components/binary_sensor/bbb_gpio.py @@ -42,7 +42,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the Beaglebone Black GPIO devices.""" + """Set up the Beaglebone Black GPIO devices.""" pins = config.get(CONF_PINS) binary_sensors = [] @@ -53,7 +53,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None): class BBBGPIOBinarySensor(BinarySensorDevice): - """Represent a binary sensor that uses Beaglebone Black GPIO.""" + """Representation of a binary sensor that uses Beaglebone Black GPIO.""" def __init__(self, pin, params): """Initialize the Beaglebone Black binary sensor.""" diff --git a/homeassistant/components/binary_sensor/blink.py b/homeassistant/components/binary_sensor/blink.py index 1e95d4d466b..4d8617b3811 100644 --- a/homeassistant/components/binary_sensor/blink.py +++ b/homeassistant/components/binary_sensor/blink.py @@ -24,7 +24,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None): class BlinkCameraMotionSensor(BinarySensorDevice): - """A representation of a Blink binary sensor.""" + """Representation of a Blink binary sensor.""" def __init__(self, name, data): """Initialize the sensor.""" diff --git a/homeassistant/components/binary_sensor/bloomsky.py b/homeassistant/components/binary_sensor/bloomsky.py index 845a58ee918..38f362fb1bb 100644 --- a/homeassistant/components/binary_sensor/bloomsky.py +++ b/homeassistant/components/binary_sensor/bloomsky.py @@ -18,7 +18,6 @@ _LOGGER = logging.getLogger(__name__) DEPENDENCIES = ['bloomsky'] -# These are the available sensors mapped to binary_sensor class SENSOR_TYPES = { 'Rain': 'moisture', 'Night': None, @@ -31,7 +30,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the available BloomSky weather binary sensors.""" + """Set up the available BloomSky weather binary sensors.""" bloomsky = get_component('bloomsky') # Default needed in case of discovery sensors = config.get(CONF_MONITORED_CONDITIONS, SENSOR_TYPES) @@ -42,7 +41,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None): class BloomSkySensor(BinarySensorDevice): - """Represent a single binary sensor in a BloomSky device.""" + """Representation of a single binary sensor in a BloomSky device.""" def __init__(self, bs, device, sensor_name): """Initialize a BloomSky binary sensor.""" @@ -55,7 +54,7 @@ class BloomSkySensor(BinarySensorDevice): @property def name(self): - """The name of the BloomSky device and this sensor.""" + """Return the name of the BloomSky device and this sensor.""" return self._name @property diff --git a/homeassistant/components/binary_sensor/command_line.py b/homeassistant/components/binary_sensor/command_line.py index e08ebbe18f8..6ed0e40409a 100644 --- a/homeassistant/components/binary_sensor/command_line.py +++ b/homeassistant/components/binary_sensor/command_line.py @@ -39,7 +39,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ # pylint: disable=unused-argument def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the Command line Binary Sensor.""" + """Set up the Command line Binary Sensor.""" name = config.get(CONF_NAME) command = config.get(CONF_COMMAND) payload_off = config.get(CONF_PAYLOAD_OFF) @@ -56,7 +56,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None): class CommandBinarySensor(BinarySensorDevice): - """Represent a command line binary sensor.""" + """Representation of a command line binary sensor.""" def __init__(self, hass, data, name, device_class, payload_on, payload_off, value_template): diff --git a/homeassistant/components/binary_sensor/concord232.py b/homeassistant/components/binary_sensor/concord232.py index 38ec0a74f97..fc8c0b81edf 100755 --- a/homeassistant/components/binary_sensor/concord232.py +++ b/homeassistant/components/binary_sensor/concord232.py @@ -67,8 +67,9 @@ def setup_platform(hass, config, add_devices, discovery_info=None): if zone['number'] not in exclude: sensors.append( Concord232ZoneSensor( - hass, client, zone, zone_types.get(zone['number'], - get_opening_type(zone))) + hass, client, zone, zone_types.get( + zone['number'], get_opening_type(zone)) + ) ) add_devices(sensors) @@ -77,7 +78,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None): def get_opening_type(zone): - """Helper function to try to guess sensor type from name.""" + """Return the result of the type guessing from name.""" if 'MOTION' in zone['name']: return 'motion' if 'KEY' in zone['name']: @@ -123,7 +124,7 @@ class Concord232ZoneSensor(BinarySensorDevice): return bool(self._zone['state'] == 'Normal') def update(self): - """"Get updated stats from API.""" + """Get updated stats from API.""" last_update = datetime.datetime.now() - self._client.last_zone_update _LOGGER.debug("Zone: %s ", self._zone) if last_update > datetime.timedelta(seconds=1): diff --git a/homeassistant/components/binary_sensor/demo.py b/homeassistant/components/binary_sensor/demo.py index 9dbae2fdb49..10077c60ed1 100644 --- a/homeassistant/components/binary_sensor/demo.py +++ b/homeassistant/components/binary_sensor/demo.py @@ -8,7 +8,7 @@ from homeassistant.components.binary_sensor import BinarySensorDevice def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the Demo binary sensor platform.""" + """Set up the Demo binary sensor platform.""" add_devices([ DemoBinarySensor('Basement Floor Wet', False, 'moisture'), DemoBinarySensor('Movement Backyard', True, 'motion'), @@ -16,7 +16,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None): class DemoBinarySensor(BinarySensorDevice): - """A Demo binary sensor.""" + """representation of a Demo binary sensor.""" def __init__(self, name, state, device_class): """Initialize the demo sensor.""" diff --git a/homeassistant/components/binary_sensor/ecobee.py b/homeassistant/components/binary_sensor/ecobee.py index b2a5d21386b..d14a1124390 100644 --- a/homeassistant/components/binary_sensor/ecobee.py +++ b/homeassistant/components/binary_sensor/ecobee.py @@ -13,7 +13,7 @@ ECOBEE_CONFIG_FILE = 'ecobee.conf' def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the Ecobee sensors.""" + """Set up the Ecobee sensors.""" if discovery_info is None: return data = ecobee.NETWORK diff --git a/homeassistant/components/binary_sensor/enocean.py b/homeassistant/components/binary_sensor/enocean.py index be01f63e657..358abb434fd 100644 --- a/homeassistant/components/binary_sensor/enocean.py +++ b/homeassistant/components/binary_sensor/enocean.py @@ -30,7 +30,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the Binary Sensor platform fo EnOcean.""" + """Set up the Binary Sensor platform for EnOcean.""" dev_id = config.get(CONF_ID) devname = config.get(CONF_NAME) device_class = get_deprecated(config, CONF_DEVICE_CLASS, CONF_SENSOR_CLASS) @@ -44,7 +44,7 @@ class EnOceanBinarySensor(enocean.EnOceanDevice, BinarySensorDevice): def __init__(self, dev_id, devname, device_class): """Initialize the EnOcean binary sensor.""" enocean.EnOceanDevice.__init__(self) - self.stype = "listener" + self.stype = 'listener' self.dev_id = dev_id self.which = -1 self.onoff = -1 @@ -53,7 +53,7 @@ class EnOceanBinarySensor(enocean.EnOceanDevice, BinarySensorDevice): @property def name(self): - """The default name for the binary sensor.""" + """Return the default name for the binary sensor.""" return self.devname @property @@ -80,7 +80,7 @@ class EnOceanBinarySensor(enocean.EnOceanDevice, BinarySensorDevice): elif value2 == 0x10: self.which = 1 self.onoff = 1 - self.hass.bus.fire('button_pressed', {"id": self.dev_id, + self.hass.bus.fire('button_pressed', {'id': self.dev_id, 'pushed': value, 'which': self.which, 'onoff': self.onoff}) diff --git a/homeassistant/components/binary_sensor/envisalink.py b/homeassistant/components/binary_sensor/envisalink.py index 22a3256f9fe..5fbc1eb90a1 100644 --- a/homeassistant/components/binary_sensor/envisalink.py +++ b/homeassistant/components/binary_sensor/envisalink.py @@ -15,13 +15,14 @@ from homeassistant.components.envisalink import ( SIGNAL_ZONE_UPDATE) from homeassistant.const import ATTR_LAST_TRIP_TIME -DEPENDENCIES = ['envisalink'] _LOGGER = logging.getLogger(__name__) +DEPENDENCIES = ['envisalink'] + @asyncio.coroutine def async_setup_platform(hass, config, async_add_devices, discovery_info=None): - """Setup Envisalink binary sensor devices.""" + """Set up the Envisalink binary sensor devices.""" configured_zones = discovery_info['zones'] devices = [] diff --git a/homeassistant/components/binary_sensor/ffmpeg_motion.py b/homeassistant/components/binary_sensor/ffmpeg_motion.py index 418a6342172..1bbf39dd6e0 100644 --- a/homeassistant/components/binary_sensor/ffmpeg_motion.py +++ b/homeassistant/components/binary_sensor/ffmpeg_motion.py @@ -48,23 +48,21 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ @asyncio.coroutine def async_setup_platform(hass, config, async_add_devices, discovery_info=None): - """Create the binary sensor.""" + """Set up the FFmpeg binary moition sensor.""" manager = hass.data[DATA_FFMPEG] - # check source if not manager.async_run_test(config.get(CONF_INPUT)): return - # generate sensor object entity = FFmpegMotion(hass, manager, config) async_add_devices([entity]) class FFmpegBinarySensor(FFmpegBase, BinarySensorDevice): - """A binary sensor which use ffmpeg for noise detection.""" + """A binary sensor which use FFmpeg for noise detection.""" def __init__(self, config): - """Constructor for binary sensor noise detection.""" + """Init for the binary sensor noise detection.""" super().__init__(config.get(CONF_INITIAL_STATE)) self._state = False @@ -79,7 +77,7 @@ class FFmpegBinarySensor(FFmpegBase, BinarySensorDevice): @property def is_on(self): - """True if the binary sensor is on.""" + """Return true if the binary sensor is on.""" return self._state @property @@ -89,10 +87,10 @@ class FFmpegBinarySensor(FFmpegBase, BinarySensorDevice): class FFmpegMotion(FFmpegBinarySensor): - """A binary sensor which use ffmpeg for noise detection.""" + """A binary sensor which use FFmpeg for noise detection.""" def __init__(self, hass, manager, config): - """Initialize ffmpeg motion binary sensor.""" + """Initialize FFmpeg motion binary sensor.""" from haffmpeg import SensorMotion super().__init__(config) @@ -125,4 +123,4 @@ class FFmpegMotion(FFmpegBinarySensor): @property def device_class(self): """Return the class of this sensor, from DEVICE_CLASSES.""" - return "motion" + return 'motion' diff --git a/homeassistant/components/binary_sensor/ffmpeg_noise.py b/homeassistant/components/binary_sensor/ffmpeg_noise.py index c3400150f74..db7647d9b2c 100644 --- a/homeassistant/components/binary_sensor/ffmpeg_noise.py +++ b/homeassistant/components/binary_sensor/ffmpeg_noise.py @@ -45,23 +45,21 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ @asyncio.coroutine def async_setup_platform(hass, config, async_add_devices, discovery_info=None): - """Create the binary sensor.""" + """Set up the FFmpeg noise binary sensor.""" manager = hass.data[DATA_FFMPEG] - # check source if not manager.async_run_test(config.get(CONF_INPUT)): return - # generate sensor object entity = FFmpegNoise(hass, manager, config) async_add_devices([entity]) class FFmpegNoise(FFmpegBinarySensor): - """A binary sensor which use ffmpeg for noise detection.""" + """A binary sensor which use FFmpeg for noise detection.""" def __init__(self, hass, manager, config): - """Initialize ffmpeg noise binary sensor.""" + """Initialize FFmpeg noise binary sensor.""" from haffmpeg import SensorNoise super().__init__(config) @@ -77,14 +75,12 @@ class FFmpegNoise(FFmpegBinarySensor): if entity_ids is not None and self.entity_id not in entity_ids: return - # init config self.ffmpeg.set_options( time_duration=self._config.get(CONF_DURATION), time_reset=self._config.get(CONF_RESET), peak=self._config.get(CONF_PEAK), ) - # run yield from self.ffmpeg.open_sensor( input_source=self._config.get(CONF_INPUT), output_dest=self._config.get(CONF_OUTPUT), @@ -94,4 +90,4 @@ class FFmpegNoise(FFmpegBinarySensor): @property def device_class(self): """Return the class of this sensor, from DEVICE_CLASSES.""" - return "sound" + return 'sound' diff --git a/homeassistant/components/binary_sensor/flic.py b/homeassistant/components/binary_sensor/flic.py index 2079d6a1ce8..f78ee75ae25 100644 --- a/homeassistant/components/binary_sensor/flic.py +++ b/homeassistant/components/binary_sensor/flic.py @@ -110,7 +110,7 @@ def start_scanning(config, add_entities, client): def setup_button(hass, config, add_entities, client, address): - """Setup single button device.""" + """Set up a single button device.""" timeout = config.get(CONF_TIMEOUT) ignored_click_types = config.get(CONF_IGNORED_CLICK_TYPES) button = FlicButton(hass, client, address, timeout, ignored_click_types) diff --git a/homeassistant/components/binary_sensor/hikvision.py b/homeassistant/components/binary_sensor/hikvision.py index 9a7a1dcf546..61e69e991b3 100644 --- a/homeassistant/components/binary_sensor/hikvision.py +++ b/homeassistant/components/binary_sensor/hikvision.py @@ -67,7 +67,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ def setup_platform(hass, config, add_entities, discovery_info=None): - """Setup Hikvision binary sensor devices.""" + """Set up the Hikvision binary sensor devices.""" name = config.get(CONF_NAME) host = config.get(CONF_HOST) port = config.get(CONF_PORT) @@ -77,16 +77,16 @@ def setup_platform(hass, config, add_entities, discovery_info=None): customize = config.get(CONF_CUSTOMIZE) if config.get(CONF_SSL): - protocol = "https" + protocol = 'https' else: - protocol = "http" + protocol = 'http' url = '{}://{}'.format(protocol, host) data = HikvisionData(hass, url, port, name, username, password) if data.sensors is None: - _LOGGER.error('Hikvision event stream has no data, unable to setup.') + _LOGGER.error("Hikvision event stream has no data, unable to setup") return False entities = [] @@ -104,7 +104,7 @@ def setup_platform(hass, config, add_entities, discovery_info=None): ignore = custom.get(CONF_IGNORED) delay = custom.get(CONF_DELAY) - _LOGGER.debug('Entity: %s - %s, Options - Ignore: %s, Delay: %s', + _LOGGER.debug("Entity: %s - %s, Options - Ignore: %s, Delay: %s", data.name, sensor_name, ignore, delay) if not ignore: entities.append(HikvisionBinarySensor( @@ -126,8 +126,8 @@ class HikvisionData(object): self._password = password # Establish camera - self.camdata = HikCamera(self._url, self._port, - self._username, self._password) + self.camdata = HikCamera( + self._url, self._port, self._username, self._password) if self._name is None: self._name = self.camdata.get_name @@ -251,7 +251,7 @@ class HikvisionBinarySensor(BinarySensorDevice): # Set timer to wait until updating the state def _delay_update(now): """Timer callback for sensor update.""" - _LOGGER.debug('%s Called delayed (%ssec) update.', + _LOGGER.debug("%s Called delayed (%ssec) update", self._name, self._delay) self.schedule_update_ha_state() self._timer = None diff --git a/homeassistant/components/binary_sensor/homematic.py b/homeassistant/components/binary_sensor/homematic.py index 1ae7fde706a..17d08265a5b 100644 --- a/homeassistant/components/binary_sensor/homematic.py +++ b/homeassistant/components/binary_sensor/homematic.py @@ -14,22 +14,22 @@ _LOGGER = logging.getLogger(__name__) DEPENDENCIES = ['homematic'] SENSOR_TYPES_CLASS = { - "Remote": None, - "ShutterContact": "opening", - "MaxShutterContact": "opening", - "IPShutterContact": "opening", - "Smoke": "smoke", - "SmokeV2": "smoke", - "Motion": "motion", - "MotionV2": "motion", - "RemoteMotion": None, - "WeatherSensor": None, - "TiltSensor": None, + 'Remote': None, + 'ShutterContact': 'opening', + 'MaxShutterContact': 'opening', + 'IPShutterContact': 'opening', + 'Smoke': 'smoke', + 'SmokeV2': 'smoke', + 'Motion': 'motion', + 'MotionV2': 'motion', + 'RemoteMotion': None, + 'WeatherSensor': None, + 'TiltSensor': None, } def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the Homematic binary sensor platform.""" + """Set up the Homematic binary sensor platform.""" if discovery_info is None: return @@ -56,8 +56,8 @@ class HMBinarySensor(HMDevice, BinarySensorDevice): def device_class(self): """Return the class of this sensor, from DEVICE_CLASSES.""" # If state is MOTION (RemoteMotion works only) - if self._state == "MOTION": - return "motion" + if self._state == 'MOTION': + return 'motion' return SENSOR_TYPES_CLASS.get(self._hmdevice.__class__.__name__, None) def _init_data_struct(self): diff --git a/homeassistant/components/binary_sensor/insteon_plm.py b/homeassistant/components/binary_sensor/insteon_plm.py index 03cc7e6bd9b..448ceae8636 100644 --- a/homeassistant/components/binary_sensor/insteon_plm.py +++ b/homeassistant/components/binary_sensor/insteon_plm.py @@ -67,7 +67,7 @@ class InsteonPLMBinarySensorDevice(BinarySensorDevice): def is_on(self): """Return the boolean response if the node is on.""" sensorstate = self._plm.get_device_attr(self._address, 'sensorstate') - _LOGGER.info('sensor state for %s is %s', self._address, sensorstate) + _LOGGER.info("Sensor state for %s is %s", self._address, sensorstate) return bool(sensorstate) @property @@ -83,5 +83,5 @@ class InsteonPLMBinarySensorDevice(BinarySensorDevice): @callback def async_binarysensor_update(self, message): """Receive notification from transport that new data exists.""" - _LOGGER.info('Received update calback from PLM for %s', self._address) + _LOGGER.info("Received update calback from PLM for %s", self._address) self._hass.async_add_job(self.async_update_ha_state()) diff --git a/homeassistant/components/binary_sensor/isy994.py b/homeassistant/components/binary_sensor/isy994.py index 8f4cb1637b4..2c4b9e0b97f 100644 --- a/homeassistant/components/binary_sensor/isy994.py +++ b/homeassistant/components/binary_sensor/isy994.py @@ -12,7 +12,6 @@ import homeassistant.components.isy994 as isy from homeassistant.const import STATE_ON, STATE_OFF from homeassistant.helpers.typing import ConfigType - _LOGGER = logging.getLogger(__name__) VALUE_TO_STATE = { @@ -29,7 +28,7 @@ def setup_platform(hass, config: ConfigType, add_devices: Callable[[list], None], discovery_info=None): """Setup the ISY994 binary sensor platform.""" if isy.ISY is None or not isy.ISY.connected: - _LOGGER.error('A connection has not been made to the ISY controller.') + _LOGGER.error("A connection has not been made to the ISY controller") return False devices = [] diff --git a/homeassistant/components/binary_sensor/knx.py b/homeassistant/components/binary_sensor/knx.py index 304dad9d71b..87f8a30d78c 100644 --- a/homeassistant/components/binary_sensor/knx.py +++ b/homeassistant/components/binary_sensor/knx.py @@ -11,7 +11,7 @@ DEPENDENCIES = ['knx'] def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the KNX binary sensor platform.""" + """Set up the KNX binary sensor platform.""" add_devices([KNXSwitch(hass, KNXConfig(config))]) diff --git a/homeassistant/components/binary_sensor/maxcube.py b/homeassistant/components/binary_sensor/maxcube.py index 13610939a5d..cf2be6baed5 100644 --- a/homeassistant/components/binary_sensor/maxcube.py +++ b/homeassistant/components/binary_sensor/maxcube.py @@ -43,7 +43,7 @@ class MaxCubeShutter(BinarySensorDevice): @property def should_poll(self): - """Polling is required.""" + """Return the polling state.""" return True @property diff --git a/homeassistant/components/binary_sensor/modbus.py b/homeassistant/components/binary_sensor/modbus.py index d43c348f116..54e4cefb230 100644 --- a/homeassistant/components/binary_sensor/modbus.py +++ b/homeassistant/components/binary_sensor/modbus.py @@ -16,9 +16,9 @@ from homeassistant.components.sensor import PLATFORM_SCHEMA _LOGGER = logging.getLogger(__name__) DEPENDENCIES = ['modbus'] -CONF_COIL = "coil" -CONF_COILS = "coils" -CONF_SLAVE = "slave" +CONF_COIL = 'coil' +CONF_COILS = 'coils' +CONF_SLAVE = 'slave' PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ vol.Required(CONF_COILS): [{ @@ -30,7 +30,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup Modbus binary sensors.""" + """Set up the Modbus binary sensors.""" sensors = [] for coil in config.get(CONF_COILS): sensors.append(ModbusCoilSensor( diff --git a/homeassistant/components/binary_sensor/mqtt.py b/homeassistant/components/binary_sensor/mqtt.py index d8467a6cbfe..fe19523c5b2 100644 --- a/homeassistant/components/binary_sensor/mqtt.py +++ b/homeassistant/components/binary_sensor/mqtt.py @@ -79,7 +79,7 @@ class MqttBinarySensor(BinarySensorDevice): """ @callback def message_received(topic, payload, qos): - """A new MQTT message has been received.""" + """Handle a new received MQTT message.""" if self._template is not None: payload = self._template.async_render_with_possible_json_value( payload) @@ -95,7 +95,7 @@ class MqttBinarySensor(BinarySensorDevice): @property def should_poll(self): - """No polling needed.""" + """Return the polling state.""" return False @property diff --git a/homeassistant/components/binary_sensor/mysensors.py b/homeassistant/components/binary_sensor/mysensors.py index 3a0b09c0074..767ed858ec7 100644 --- a/homeassistant/components/binary_sensor/mysensors.py +++ b/homeassistant/components/binary_sensor/mysensors.py @@ -16,7 +16,7 @@ DEPENDENCIES = [] def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the mysensors platform for sensors.""" + """Set up the MySensors platform for sensors.""" # Only act if loaded via mysensors by discovery event. # Otherwise gateway is not setup. if discovery_info is None: diff --git a/homeassistant/components/binary_sensor/nest.py b/homeassistant/components/binary_sensor/nest.py index 4689bc59082..4089f3a2eaf 100644 --- a/homeassistant/components/binary_sensor/nest.py +++ b/homeassistant/components/binary_sensor/nest.py @@ -16,15 +16,18 @@ DEPENDENCIES = ['nest'] BINARY_TYPES = ['online'] -CLIMATE_BINARY_TYPES = ['fan', - 'is_using_emergency_heat', - 'is_locked', - 'has_leaf'] +CLIMATE_BINARY_TYPES = [ + 'fan', + 'is_using_emergency_heat', + 'is_locked', + 'has_leaf', +] CAMERA_BINARY_TYPES = [ 'motion_detected', 'sound_detected', - 'person_detected'] + 'person_detected', +] _BINARY_TYPES_DEPRECATED = [ 'hvac_ac_state', @@ -34,7 +37,8 @@ _BINARY_TYPES_DEPRECATED = [ 'hvac_heat_x3_state', 'hvac_alt_heat_state', 'hvac_alt_heat_x2_state', - 'hvac_emer_heat_state'] + 'hvac_emer_heat_state', +] _VALID_BINARY_SENSOR_TYPES = BINARY_TYPES + CLIMATE_BINARY_TYPES \ + CAMERA_BINARY_TYPES @@ -43,7 +47,7 @@ _LOGGER = logging.getLogger(__name__) def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup Nest binary sensors.""" + """Set up the Nest binary sensors.""" if discovery_info is None: return @@ -93,7 +97,7 @@ class NestBinarySensor(NestSensor, BinarySensorDevice): @property def is_on(self): - """True if the binary sensor is on.""" + """Return true if the binary sensor is on.""" return self._state def update(self): diff --git a/homeassistant/components/binary_sensor/netatmo.py b/homeassistant/components/binary_sensor/netatmo.py index ee7bc53c4cb..e0841e2e286 100644 --- a/homeassistant/components/binary_sensor/netatmo.py +++ b/homeassistant/components/binary_sensor/netatmo.py @@ -7,6 +7,7 @@ For more details about this platform, please refer to the documentation at https://home-assistant.io/components/binary_sensor.netatmo/. """ import logging + import voluptuous as vol from homeassistant.components.binary_sensor import ( @@ -16,10 +17,9 @@ from homeassistant.loader import get_component from homeassistant.const import CONF_TIMEOUT, CONF_OFFSET from homeassistant.helpers import config_validation as cv -DEPENDENCIES = ["netatmo"] - _LOGGER = logging.getLogger(__name__) +DEPENDENCIES = ['netatmo'] # These are the available sensors mapped to binary_sensor class WELCOME_SENSOR_TYPES = { @@ -61,7 +61,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ # pylint: disable=unused-argument def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup access to Netatmo binary sensor.""" + """Set up the access to Netatmo binary sensor.""" netatmo = get_component('netatmo') home = config.get(CONF_HOME, None) timeout = config.get(CONF_TIMEOUT, 15) @@ -85,35 +85,31 @@ def setup_platform(hass, config, add_devices, discovery_info=None): for camera_name in data.get_camera_names(): camera_type = data.get_camera_type(camera=camera_name, home=home) - if camera_type == "NACamera": + if camera_type == 'NACamera': if CONF_CAMERAS in config: if config[CONF_CAMERAS] != [] and \ camera_name not in config[CONF_CAMERAS]: continue for variable in welcome_sensors: - add_devices([NetatmoBinarySensor(data, camera_name, - module_name, home, timeout, - offset, camera_type, - variable)]) - if camera_type == "NOC": + add_devices([NetatmoBinarySensor( + data, camera_name, module_name, home, timeout, + offset, camera_type, variable)]) + if camera_type == 'NOC': if CONF_CAMERAS in config: if config[CONF_CAMERAS] != [] and \ camera_name not in config[CONF_CAMERAS]: continue for variable in presence_sensors: - add_devices([NetatmoBinarySensor(data, camera_name, - module_name, home, timeout, - offset, camera_type, - variable)]) + add_devices([NetatmoBinarySensor( + data, camera_name, module_name, home, timeout, offset, + camera_type, variable)]) for module_name in data.get_module_names(camera_name): for variable in tag_sensors: camera_type = None - add_devices([NetatmoBinarySensor(data, camera_name, - module_name, home, - timeout, offset, - camera_type, - variable)]) + add_devices([NetatmoBinarySensor( + data, camera_name, module_name, home, timeout, offset, + camera_type, variable)]) class NetatmoBinarySensor(BinarySensorDevice): @@ -129,23 +125,23 @@ class NetatmoBinarySensor(BinarySensorDevice): self._timeout = timeout self._offset = offset if home: - self._name = home + ' / ' + camera_name + self._name = '{} / {}'.format(home, camera_name) else: self._name = camera_name if module_name: self._name += ' / ' + module_name self._sensor_name = sensor self._name += ' ' + sensor - camera_id = data.camera_data.cameraByName(camera=camera_name, - home=home)['id'] - self._unique_id = "Netatmo_binary_sensor {0} - {1}".format(self._name, - camera_id) + camera_id = data.camera_data.cameraByName( + camera=camera_name, home=home)['id'] + self._unique_id = "Netatmo_binary_sensor {0} - {1}".format( + self._name, camera_id) self._cameratype = camera_type self.update() @property def name(self): - """The name of the Netatmo device and this sensor.""" + """Return the name of the Netatmo device and this sensor.""" return self._name @property @@ -156,9 +152,9 @@ class NetatmoBinarySensor(BinarySensorDevice): @property def device_class(self): """Return the class of this sensor, from DEVICE_CLASSES.""" - if self._cameratype == "NACamera": + if self._cameratype == 'NACamera': return WELCOME_SENSOR_TYPES.get(self._sensor_name) - elif self._cameratype == "NOC": + elif self._cameratype == 'NOC': return PRESENCE_SENSOR_TYPES.get(self._sensor_name) else: return TAG_SENSOR_TYPES.get(self._sensor_name) @@ -173,51 +169,44 @@ class NetatmoBinarySensor(BinarySensorDevice): self._data.update() self._data.update_event() - if self._cameratype == "NACamera": + if self._cameratype == 'NACamera': if self._sensor_name == "Someone known": self._state =\ - self._data.camera_data.someoneKnownSeen(self._home, - self._camera_name, - self._timeout*60) + self._data.camera_data.someoneKnownSeen( + self._home, self._camera_name, self._timeout*60) elif self._sensor_name == "Someone unknown": self._state =\ self._data.camera_data.someoneUnknownSeen( self._home, self._camera_name, self._timeout*60) elif self._sensor_name == "Motion": self._state =\ - self._data.camera_data.motionDetected(self._home, - self._camera_name, - self._timeout*60) - elif self._cameratype == "NOC": + self._data.camera_data.motionDetected( + self._home, self._camera_name, self._timeout*60) + elif self._cameratype == 'NOC': if self._sensor_name == "Outdoor motion": self._state =\ self._data.camera_data.outdoormotionDetected( self._home, self._camera_name, self._offset) elif self._sensor_name == "Outdoor human": self._state =\ - self._data.camera_data.humanDetected(self._home, - self._camera_name, - self._offset) + self._data.camera_data.humanDetected( + self._home, self._camera_name, self._offset) elif self._sensor_name == "Outdoor animal": self._state =\ - self._data.camera_data.animalDetected(self._home, - self._camera_name, - self._offset) + self._data.camera_data.animalDetected( + self._home, self._camera_name, self._offset) elif self._sensor_name == "Outdoor vehicle": self._state =\ - self._data.camera_data.carDetected(self._home, - self._camera_name, - self._offset) + self._data.camera_data.carDetected( + self._home, self._camera_name, self._offset) if self._sensor_name == "Tag Vibration": self._state =\ - self._data.camera_data.moduleMotionDetected(self._home, - self._module_name, - self._camera_name, - self._timeout*60) + self._data.camera_data.moduleMotionDetected( + self._home, self._module_name, self._camera_name, + self._timeout*60) elif self._sensor_name == "Tag Open": self._state =\ - self._data.camera_data.moduleOpened(self._home, - self._module_name, - self._camera_name) + self._data.camera_data.moduleOpened( + self._home, self._module_name, self._camera_name) else: return None diff --git a/homeassistant/components/binary_sensor/nx584.py b/homeassistant/components/binary_sensor/nx584.py index 6ffcb7b0cf3..4dff263f79a 100644 --- a/homeassistant/components/binary_sensor/nx584.py +++ b/homeassistant/components/binary_sensor/nx584.py @@ -41,7 +41,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the NX584 binary sensor platform.""" + """Set up the NX584 binary sensor platform.""" from nx584 import client as nx584_client host = config.get(CONF_HOST) @@ -53,7 +53,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None): client = nx584_client.Client('http://{}:{}'.format(host, port)) zones = client.list_zones() except requests.exceptions.ConnectionError as ex: - _LOGGER.error('Unable to connect to NX584: %s', str(ex)) + _LOGGER.error("Unable to connect to NX584: %s", str(ex)) return False version = [int(v) for v in client.get_version().split('.')] diff --git a/homeassistant/components/binary_sensor/octoprint.py b/homeassistant/components/binary_sensor/octoprint.py index d1cc1d8e8a4..6e278ccfccf 100644 --- a/homeassistant/components/binary_sensor/octoprint.py +++ b/homeassistant/components/binary_sensor/octoprint.py @@ -15,7 +15,6 @@ from homeassistant.components.binary_sensor import ( from homeassistant.loader import get_component import homeassistant.helpers.config_validation as cv - _LOGGER = logging.getLogger(__name__) DEPENDENCIES = ['octoprint'] @@ -37,22 +36,18 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ # pylint: disable=unused-argument def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the available OctoPrint binary sensors.""" + """Set up the available OctoPrint binary sensors.""" octoprint = get_component('octoprint') name = config.get(CONF_NAME) - monitored_conditions = config.get(CONF_MONITORED_CONDITIONS, - SENSOR_TYPES.keys()) + monitored_conditions = config.get( + CONF_MONITORED_CONDITIONS, SENSOR_TYPES.keys()) devices = [] for octo_type in monitored_conditions: - new_sensor = OctoPrintBinarySensor(octoprint.OCTOPRINT, - octo_type, - SENSOR_TYPES[octo_type][2], - name, - SENSOR_TYPES[octo_type][3], - SENSOR_TYPES[octo_type][0], - SENSOR_TYPES[octo_type][1], - 'flags') + new_sensor = OctoPrintBinarySensor( + octoprint.OCTOPRINT, octo_type, SENSOR_TYPES[octo_type][2], + name, SENSOR_TYPES[octo_type][3], SENSOR_TYPES[octo_type][0], + SENSOR_TYPES[octo_type][1], 'flags') devices.append(new_sensor) add_devices(devices) @@ -97,10 +92,9 @@ class OctoPrintBinarySensor(BinarySensorDevice): def update(self): """Update state of sensor.""" try: - self._state = self.api.update(self.sensor_type, - self.api_endpoint, - self.api_group, - self.api_tool) + self._state = self.api.update( + self.sensor_type, self.api_endpoint, self.api_group, + self.api_tool) except requests.exceptions.ConnectionError: # Error calling the api, already logged in api.update() return diff --git a/homeassistant/components/binary_sensor/rest.py b/homeassistant/components/binary_sensor/rest.py index 2e5de7e2f27..abdbc8251c7 100644 --- a/homeassistant/components/binary_sensor/rest.py +++ b/homeassistant/components/binary_sensor/rest.py @@ -44,7 +44,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the REST binary sensor.""" + """Set up the REST binary sensor.""" name = config.get(CONF_NAME) resource = config.get(CONF_RESOURCE) method = config.get(CONF_METHOD) @@ -114,8 +114,8 @@ class RestBinarySensor(BinarySensorDevice): try: return bool(int(response)) except ValueError: - return {"true": True, "on": True, "open": True, - "yes": True}.get(response.lower(), False) + return {'true': True, 'on': True, 'open': True, + 'yes': True}.get(response.lower(), False) def update(self): """Get the latest data from REST API and updates the state.""" diff --git a/homeassistant/components/binary_sensor/rpi_gpio.py b/homeassistant/components/binary_sensor/rpi_gpio.py index eaf9ee737e5..2322b1bf498 100644 --- a/homeassistant/components/binary_sensor/rpi_gpio.py +++ b/homeassistant/components/binary_sensor/rpi_gpio.py @@ -41,10 +41,10 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ # pylint: disable=unused-argument def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the Raspberry PI GPIO devices.""" - pull_mode = config.get('pull_mode', DEFAULT_PULL_MODE) - bouncetime = config.get('bouncetime', DEFAULT_BOUNCETIME) - invert_logic = config.get('invert_logic', DEFAULT_INVERT_LOGIC) + """Set up the Raspberry PI GPIO devices.""" + pull_mode = config.get(CONF_PULL_MODE) + bouncetime = config.get(CONF_BOUNCETIME) + invert_logic = config.get(CONF_INVERT_LOGIC) binary_sensors = [] ports = config.get('ports') diff --git a/homeassistant/components/binary_sensor/sleepiq.py b/homeassistant/components/binary_sensor/sleepiq.py index f55eba82dbe..3a6c27db386 100644 --- a/homeassistant/components/binary_sensor/sleepiq.py +++ b/homeassistant/components/binary_sensor/sleepiq.py @@ -11,7 +11,7 @@ DEPENDENCIES = ['sleepiq'] def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the SleepIQ sensors.""" + """Set up the SleepIQ sensors.""" if discovery_info is None: return diff --git a/homeassistant/components/binary_sensor/tcp.py b/homeassistant/components/binary_sensor/tcp.py index 12a96a5492f..cfaa8057798 100644 --- a/homeassistant/components/binary_sensor/tcp.py +++ b/homeassistant/components/binary_sensor/tcp.py @@ -27,5 +27,5 @@ class TcpBinarySensor(BinarySensorDevice, TcpSensor): @property def is_on(self): - """True if the binary sensor is on.""" + """Return true if the binary sensor is on.""" return self._state == self._config[CONF_VALUE_ON] diff --git a/homeassistant/components/binary_sensor/template.py b/homeassistant/components/binary_sensor/template.py index 396f591923b..989f8b358af 100644 --- a/homeassistant/components/binary_sensor/template.py +++ b/homeassistant/components/binary_sensor/template.py @@ -41,7 +41,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ @asyncio.coroutine def async_setup_platform(hass, config, async_add_devices, discovery_info=None): - """Setup template binary sensors.""" + """Set up template binary sensors.""" sensors = [] for device, device_config in config[CONF_SENSORS].items(): @@ -57,15 +57,11 @@ def async_setup_platform(hass, config, async_add_devices, discovery_info=None): sensors.append( BinarySensorTemplate( - hass, - device, - friendly_name, - device_class, - value_template, + hass, device, friendly_name, device_class, value_template, entity_ids) ) if not sensors: - _LOGGER.error('No sensors added') + _LOGGER.error("No sensors added") return False async_add_devices(sensors, True) @@ -79,8 +75,8 @@ class BinarySensorTemplate(BinarySensorDevice): value_template, entity_ids): """Initialize the Template binary sensor.""" self.hass = hass - self.entity_id = async_generate_entity_id(ENTITY_ID_FORMAT, device, - hass=hass) + self.entity_id = async_generate_entity_id( + ENTITY_ID_FORMAT, device, hass=hass) self._name = friendly_name self._device_class = device_class self._template = value_template @@ -96,7 +92,7 @@ class BinarySensorTemplate(BinarySensorDevice): @callback def template_bsensor_state_listener(entity, old_state, new_state): - """Called when the target device changes state.""" + """Handle the target device state changes.""" self.hass.async_add_job(self.async_update_ha_state(True)) @callback @@ -139,8 +135,8 @@ class BinarySensorTemplate(BinarySensorDevice): if ex.args and ex.args[0].startswith( "UndefinedError: 'None' has no attribute"): # Common during HA startup - so just a warning - _LOGGER.warning('Could not render template %s,' - ' the state is unknown.', self._name) + _LOGGER.warning("Could not render template %s, " + "the state is unknown", self._name) return - _LOGGER.error('Could not render template %s: %s', self._name, ex) + _LOGGER.error("Could not render template %s: %s", self._name, ex) self._state = False diff --git a/homeassistant/components/binary_sensor/threshold.py b/homeassistant/components/binary_sensor/threshold.py index c97ba17b874..b4891906a01 100644 --- a/homeassistant/components/binary_sensor/threshold.py +++ b/homeassistant/components/binary_sensor/threshold.py @@ -77,7 +77,7 @@ class ThresholdSensor(BinarySensorDevice): # pylint: disable=invalid-name def async_threshold_sensor_state_listener( entity, old_state, new_state): - """Called when the sensor changes state.""" + """Handle sensor state changes.""" if new_state.state == STATE_UNKNOWN: return diff --git a/homeassistant/components/binary_sensor/trend.py b/homeassistant/components/binary_sensor/trend.py index 2c2a0563452..82585acfc38 100644 --- a/homeassistant/components/binary_sensor/trend.py +++ b/homeassistant/components/binary_sensor/trend.py @@ -6,22 +6,18 @@ https://home-assistant.io/components/sensor.trend/ """ import asyncio import logging + import voluptuous as vol from homeassistant.core import callback import homeassistant.helpers.config_validation as cv from homeassistant.components.binary_sensor import ( - BinarySensorDevice, - ENTITY_ID_FORMAT, - PLATFORM_SCHEMA, + BinarySensorDevice, ENTITY_ID_FORMAT, PLATFORM_SCHEMA, DEVICE_CLASSES_SCHEMA) from homeassistant.const import ( - ATTR_FRIENDLY_NAME, - ATTR_ENTITY_ID, - CONF_SENSOR_CLASS, - CONF_DEVICE_CLASS, - STATE_UNKNOWN,) + ATTR_FRIENDLY_NAME, ATTR_ENTITY_ID, CONF_SENSOR_CLASS, + CONF_DEVICE_CLASS, STATE_UNKNOWN,) from homeassistant.helpers.deprecation import get_deprecated from homeassistant.helpers.entity import generate_entity_id from homeassistant.helpers.event import track_state_change @@ -47,7 +43,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ # pylint: disable=unused-argument def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the trend sensors.""" + """Set up the trend sensors.""" sensors = [] for device, device_config in config[CONF_SENSORS].items(): @@ -60,13 +56,8 @@ def setup_platform(hass, config, add_devices, discovery_info=None): sensors.append( SensorTrend( - hass, - device, - friendly_name, - entity_id, - attribute, - device_class, - invert) + hass, device, friendly_name, entity_id, attribute, + device_class, invert) ) if not sensors: _LOGGER.error("No sensors added") @@ -82,8 +73,8 @@ class SensorTrend(BinarySensorDevice): target_entity, attribute, device_class, invert): """Initialize the sensor.""" self._hass = hass - self.entity_id = generate_entity_id(ENTITY_ID_FORMAT, device_id, - hass=hass) + self.entity_id = generate_entity_id( + ENTITY_ID_FORMAT, device_id, hass=hass) self._name = friendly_name self._target_entity = target_entity self._attribute = attribute @@ -95,7 +86,7 @@ class SensorTrend(BinarySensorDevice): @callback def trend_sensor_state_listener(entity, old_state, new_state): - """Called when the target device changes state.""" + """Handle the target device state changes.""" self.from_state = old_state self.to_state = new_state hass.async_add_job(self.async_update_ha_state(True)) diff --git a/homeassistant/components/binary_sensor/volvooncall.py b/homeassistant/components/binary_sensor/volvooncall.py index f97c670270d..2c7c398d91a 100644 --- a/homeassistant/components/binary_sensor/volvooncall.py +++ b/homeassistant/components/binary_sensor/volvooncall.py @@ -3,7 +3,6 @@ Support for VOC. For more details about this platform, please refer to the documentation at https://home-assistant.io/components/binary_sensor.volvooncall/ - """ import logging @@ -14,7 +13,7 @@ _LOGGER = logging.getLogger(__name__) def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup Volvo sensors.""" + """Set up the Volvo sensors.""" if discovery_info is None: return add_devices([VolvoSensor(hass, *discovery_info)]) diff --git a/homeassistant/components/binary_sensor/wemo.py b/homeassistant/components/binary_sensor/wemo.py index 58bd411d758..1ec9e703eab 100644 --- a/homeassistant/components/binary_sensor/wemo.py +++ b/homeassistant/components/binary_sensor/wemo.py @@ -29,7 +29,7 @@ def setup_platform(hass, config, add_devices_callback, discovery_info=None): class WemoBinarySensor(BinarySensorDevice): - """Represents a WeMo binary sensor.""" + """Representation a WeMo binary sensor.""" def __init__(self, device): """Initialize the WeMo sensor.""" @@ -41,10 +41,8 @@ class WemoBinarySensor(BinarySensorDevice): wemo.SUBSCRIPTION_REGISTRY.on(self.wemo, None, self._update_callback) def _update_callback(self, _device, _type, _params): - """Called by the Wemo device callback to update state.""" - _LOGGER.info( - 'Subscription update for %s', - _device) + """Handle state changes.""" + _LOGGER.info("Subscription update for %s", _device) updated = self.wemo.subscription_update(_type, _params) self._update(force_update=(not updated)) @@ -60,7 +58,7 @@ class WemoBinarySensor(BinarySensorDevice): @property def unique_id(self): """Return the id of this WeMo device.""" - return "{}.{}".format(self.__class__, self.wemo.serialnumber) + return '{}.{}'.format(self.__class__, self.wemo.serialnumber) @property def name(self): @@ -69,7 +67,7 @@ class WemoBinarySensor(BinarySensorDevice): @property def is_on(self): - """True if sensor is on.""" + """Return true if sensor is on.""" return self._state def update(self): @@ -80,5 +78,5 @@ class WemoBinarySensor(BinarySensorDevice): try: self._state = self.wemo.get_state(force_update) except AttributeError as err: - _LOGGER.warning('Could not update status for %s (%s)', - self.name, err) + _LOGGER.warning( + "Could not update status for %s (%s)", self.name, err) diff --git a/homeassistant/components/binary_sensor/wink.py b/homeassistant/components/binary_sensor/wink.py index 797ef9649b6..3f77d1d6081 100644 --- a/homeassistant/components/binary_sensor/wink.py +++ b/homeassistant/components/binary_sensor/wink.py @@ -16,23 +16,23 @@ DEPENDENCIES = ['wink'] # These are the available sensors mapped to binary_sensor class SENSOR_TYPES = { - "opened": "opening", - "brightness": "light", - "vibration": "vibration", - "loudness": "sound", - "noise": "sound", - "capturing_audio": "sound", - "liquid_detected": "moisture", - "motion": "motion", - "presence": "occupancy", - "co_detected": "gas", - "smoke_detected": "smoke", - "capturing_video": None + 'opened': 'opening', + 'brightness': 'light', + 'vibration': 'vibration', + 'loudness': 'sound', + 'noise': 'sound', + 'capturing_audio': 'sound', + 'liquid_detected': 'moisture', + 'motion': 'motion', + 'presence': 'occupancy', + 'co_detected': 'gas', + 'smoke_detected': 'smoke', + 'capturing_video': None } def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the Wink binary sensor platform.""" + """Set up the Wink binary sensor platform.""" import pywink for sensor in pywink.get_sensors(): @@ -83,7 +83,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None): if camera_sensor.capability() in SENSOR_TYPES: add_devices([WinkBinarySensorDevice(camera_sensor, hass)]) except AttributeError: - _LOGGER.info("Device isn't a sensor, skipping.") + _LOGGER.info("Device isn't a sensor, skipping") class WinkBinarySensorDevice(WinkDevice, BinarySensorDevice, Entity): diff --git a/homeassistant/components/binary_sensor/zha.py b/homeassistant/components/binary_sensor/zha.py index c12aa38bc24..1d895fbf3a7 100644 --- a/homeassistant/components/binary_sensor/zha.py +++ b/homeassistant/components/binary_sensor/zha.py @@ -27,7 +27,7 @@ CLASS_MAPPING = { @asyncio.coroutine def async_setup_platform(hass, config, async_add_devices, discovery_info=None): - """Setup Zigbee Home Automation binary sensors.""" + """Set up the Zigbee Home Automation binary sensors.""" discovery_info = zha.get_discovery_info(hass, discovery_info) if discovery_info is None: return @@ -55,12 +55,12 @@ def async_setup_platform(hass, config, async_add_devices, discovery_info=None): class BinarySensor(zha.Entity, BinarySensorDevice): - """ZHA Binary Sensor.""" + """THe ZHA Binary Sensor.""" _domain = DOMAIN def __init__(self, device_class, **kwargs): - """Initialize ZHA binary sensor.""" + """Initialize the ZHA binary sensor.""" super().__init__(**kwargs) self._device_class = device_class from bellows.zigbee.zcl.clusters.security import IasZone diff --git a/homeassistant/components/binary_sensor/zigbee.py b/homeassistant/components/binary_sensor/zigbee.py index 935d4b4bb3f..659d82f809b 100644 --- a/homeassistant/components/binary_sensor/zigbee.py +++ b/homeassistant/components/binary_sensor/zigbee.py @@ -23,7 +23,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the ZigBee binary sensor platform.""" + """Set up the ZigBee binary sensor platform.""" add_devices( [ZigBeeBinarySensor(hass, ZigBeeDigitalInConfig(config))], True) diff --git a/homeassistant/components/binary_sensor/zwave.py b/homeassistant/components/binary_sensor/zwave.py index 5fd9c39ef2a..cc5fb3ed572 100644 --- a/homeassistant/components/binary_sensor/zwave.py +++ b/homeassistant/components/binary_sensor/zwave.py @@ -20,7 +20,7 @@ DEPENDENCIES = [] def get_device(values, **kwargs): - """Create zwave entity device.""" + """Create Z-Wave entity device.""" device_mapping = workaround.get_device_mapping(values.primary) if device_mapping == workaround.WORKAROUND_NO_OFF_EVENT: # Default the multiplier to 4 @@ -45,12 +45,12 @@ class ZWaveBinarySensor(BinarySensorDevice, zwave.ZWaveDeviceEntity): self._state = self.values.primary.data def update_properties(self): - """Callback on data changes for node values.""" + """Handle data changes for node values.""" self._state = self.values.primary.data @property def is_on(self): - """Return True if the binary sensor is on.""" + """Return true if the binary sensor is on.""" return self._state @property @@ -69,7 +69,7 @@ class ZWaveTriggerSensor(ZWaveBinarySensor): self.invalidate_after = None def update_properties(self): - """Called when a value for this entity's node has changed.""" + """Handle value changes for this entity's node.""" self._state = self.values.primary.data # only allow this value to be true for re_arm secs if not self.hass: @@ -83,7 +83,7 @@ class ZWaveTriggerSensor(ZWaveBinarySensor): @property def is_on(self): - """Return True if movement has happened within the rearm time.""" + """Return true if movement has happened within the rearm time.""" return self._state and \ (self.invalidate_after is None or self.invalidate_after > dt_util.utcnow()) diff --git a/homeassistant/components/bloomsky.py b/homeassistant/components/bloomsky.py index 13225773b3a..aff1c14b252 100644 --- a/homeassistant/components/bloomsky.py +++ b/homeassistant/components/bloomsky.py @@ -35,7 +35,7 @@ CONFIG_SCHEMA = vol.Schema({ # pylint: disable=unused-argument def setup(hass, config): - """Setup BloomSky component.""" + """Set up the BloomSky component.""" api_key = config[DOMAIN][CONF_API_KEY] global BLOOMSKY @@ -67,9 +67,8 @@ class BloomSky(object): def refresh_devices(self): """Use the API to retrieve a list of devices.""" _LOGGER.debug("Fetching BloomSky update") - response = requests.get(self.API_URL, - headers={"Authorization": self._api_key}, - timeout=10) + response = requests.get( + self.API_URL, headers={"Authorization": self._api_key}, timeout=10) if response.status_code == 401: raise RuntimeError("Invalid API_KEY") elif response.status_code != 200: diff --git a/homeassistant/components/calendar/__init__.py b/homeassistant/components/calendar/__init__.py index 70477198ea0..6bc8cc3029b 100644 --- a/homeassistant/components/calendar/__init__.py +++ b/homeassistant/components/calendar/__init__.py @@ -7,12 +7,10 @@ https://home-assistant.io/components/calendar/ import asyncio import logging from datetime import timedelta - import re -from homeassistant.components.google import (CONF_OFFSET, - CONF_DEVICE_ID, - CONF_NAME) +from homeassistant.components.google import ( + CONF_OFFSET, CONF_DEVICE_ID, CONF_NAME) from homeassistant.const import STATE_OFF, STATE_ON from homeassistant.helpers.config_validation import time_period_str from homeassistant.helpers.entity import Entity, generate_entity_id @@ -20,18 +18,21 @@ from homeassistant.helpers.entity_component import EntityComponent from homeassistant.helpers.template import DATE_STR_FORMAT from homeassistant.util import dt + _LOGGER = logging.getLogger(__name__) -SCAN_INTERVAL = timedelta(seconds=60) DOMAIN = 'calendar' + ENTITY_ID_FORMAT = DOMAIN + '.{}' +SCAN_INTERVAL = timedelta(seconds=60) + @asyncio.coroutine def async_setup(hass, config): """Track states and offer events for calendars.""" component = EntityComponent( - logging.getLogger(__name__), DOMAIN, hass, SCAN_INTERVAL, DOMAIN) + _LOGGER, DOMAIN, hass, SCAN_INTERVAL, DOMAIN) yield from component.async_setup(config) return True @@ -55,9 +56,8 @@ class CalendarEventDevice(Entity): self._name = data.get(CONF_NAME) self.dev_id = data.get(CONF_DEVICE_ID) self._offset = data.get(CONF_OFFSET, DEFAULT_CONF_OFFSET) - self.entity_id = generate_entity_id(ENTITY_ID_FORMAT, - self.dev_id, - hass=hass) + self.entity_id = generate_entity_id( + ENTITY_ID_FORMAT, self.dev_id, hass=hass) self._cal_data = { 'all_day': False, @@ -87,7 +87,7 @@ class CalendarEventDevice(Entity): @property def device_state_attributes(self): - """State Attributes for HA.""" + """Return the device state attributes.""" start = self._cal_data.get('start', None) end = self._cal_data.get('end', None) start = start.strftime(DATE_STR_FORMAT) if start is not None else None diff --git a/homeassistant/components/calendar/demo.py b/homeassistant/components/calendar/demo.py index 279119a1ff5..3dc11b6773f 100755 --- a/homeassistant/components/calendar/demo.py +++ b/homeassistant/components/calendar/demo.py @@ -10,7 +10,7 @@ from homeassistant.components.google import CONF_DEVICE_ID, CONF_NAME def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the Demo binary sensor platform.""" + """Set up the Demo Calendar platform.""" calendar_data_future = DemoGoogleCalendarDataFuture() calendar_data_current = DemoGoogleCalendarDataCurrent() add_devices([ @@ -27,8 +27,8 @@ def setup_platform(hass, config, add_devices, discovery_info=None): class DemoGoogleCalendarData(object): - """Setup base class for data.""" - + """Representation of a Demo Calendar element.""" + # pylint: disable=no-self-use def update(self): """Return true so entity knows we have new data.""" @@ -36,7 +36,7 @@ class DemoGoogleCalendarData(object): class DemoGoogleCalendarDataFuture(DemoGoogleCalendarData): - """Setup future data event.""" + """Representation of a Demo Calendar for a future event.""" def __init__(self): """Set the event to a future event.""" @@ -55,7 +55,7 @@ class DemoGoogleCalendarDataFuture(DemoGoogleCalendarData): class DemoGoogleCalendarDataCurrent(DemoGoogleCalendarData): - """Create a current event we're in the middle of.""" + """Representation of a Demo Calendar for a current event.""" def __init__(self): """Set the event data.""" @@ -74,9 +74,9 @@ class DemoGoogleCalendarDataCurrent(DemoGoogleCalendarData): class DemoGoogleCalendar(CalendarEventDevice): - """A Demo binary sensor.""" + """Representation of a Demo Calendar element.""" def __init__(self, hass, calendar_data, data): - """The same as a google calendar but without the api calls.""" + """The same as a google calendar but without the API calls.""" self.data = calendar_data super().__init__(hass, data) diff --git a/homeassistant/components/calendar/google.py b/homeassistant/components/calendar/google.py index 8f9de90a1b1..8a2e77d1915 100644 --- a/homeassistant/components/calendar/google.py +++ b/homeassistant/components/calendar/google.py @@ -9,25 +9,24 @@ import logging from datetime import timedelta from homeassistant.components.calendar import CalendarEventDevice -from homeassistant.components.google import (CONF_CAL_ID, CONF_ENTITIES, - CONF_TRACK, TOKEN_FILE, - GoogleCalendarService) +from homeassistant.components.google import ( + CONF_CAL_ID, CONF_ENTITIES, CONF_TRACK, TOKEN_FILE, + GoogleCalendarService) from homeassistant.util import Throttle, dt +_LOGGER = logging.getLogger(__name__) + DEFAULT_GOOGLE_SEARCH_PARAMS = { 'orderBy': 'startTime', 'maxResults': 1, 'singleEvents': True, } -# Return cached results if last scan was less then this time ago MIN_TIME_BETWEEN_UPDATES = timedelta(minutes=15) -_LOGGER = logging.getLogger(__name__) - def setup_platform(hass, config, add_devices, disc_info=None): - """Setup the calendar platform for event devices.""" + """Set up the calendar platform for event devices.""" if disc_info is None: return diff --git a/homeassistant/components/camera/__init__.py b/homeassistant/components/camera/__init__.py index 388a9fce39b..f6238d6ae23 100644 --- a/homeassistant/components/camera/__init__.py +++ b/homeassistant/components/camera/__init__.py @@ -76,7 +76,7 @@ def async_get_image(hass, entity_id, timeout=10): @asyncio.coroutine def async_setup(hass, config): - """Setup the camera component.""" + """Set up the camera component.""" component = EntityComponent(_LOGGER, DOMAIN, hass, SCAN_INTERVAL) hass.http.register_view(CameraImageView(component.entities)) @@ -121,12 +121,12 @@ class Camera(Entity): @property def brand(self): - """Camera brand.""" + """Return the camera brand.""" return None @property def model(self): - """Camera model.""" + """Return the camera model.""" return None def camera_image(self): @@ -191,7 +191,7 @@ class Camera(Entity): @property def state(self): - """Camera state.""" + """Return the camera state.""" if self.is_recording: return STATE_RECORDING elif self.is_streaming: @@ -201,7 +201,7 @@ class Camera(Entity): @property def state_attributes(self): - """Camera state attributes.""" + """Return the camera state attributes.""" attr = { 'access_token': self.access_tokens[-1], } @@ -233,7 +233,7 @@ class CameraView(HomeAssistantView): @asyncio.coroutine def get(self, request, entity_id): - """Start a get request.""" + """Start a GET request.""" camera = self.entities.get(entity_id) if camera is None: @@ -251,15 +251,15 @@ class CameraView(HomeAssistantView): @asyncio.coroutine def handle(self, request, camera): - """Hanlde the camera request.""" + """Handle the camera request.""" raise NotImplementedError() class CameraImageView(CameraView): """Camera view to serve an image.""" - url = "/api/camera_proxy/{entity_id}" - name = "api:camera:image" + url = '/api/camera_proxy/{entity_id}' + name = 'api:camera:image' @asyncio.coroutine def handle(self, request, camera): @@ -277,8 +277,8 @@ class CameraImageView(CameraView): class CameraMjpegStream(CameraView): """Camera View to serve an MJPEG stream.""" - url = "/api/camera_proxy_stream/{entity_id}" - name = "api:camera:stream" + url = '/api/camera_proxy_stream/{entity_id}' + name = 'api:camera:stream' @asyncio.coroutine def handle(self, request, camera): diff --git a/homeassistant/components/camera/blink.py b/homeassistant/components/camera/blink.py index 59616b0ded2..bca4fafec4f 100644 --- a/homeassistant/components/camera/blink.py +++ b/homeassistant/components/camera/blink.py @@ -21,7 +21,7 @@ _LOGGER = logging.getLogger(__name__) def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup a Blink Camera.""" + """Set up a Blink Camera.""" if discovery_info is None: return @@ -49,19 +49,19 @@ class BlinkCamera(Camera): @property def name(self): - """A camera name.""" + """Return the camera name.""" return self._name @Throttle(MIN_TIME_BETWEEN_UPDATES) def request_image(self): - """An image request from Blink servers.""" + """Request a new image from Blink servers.""" _LOGGER.info("Requesting new image from blink servers") image_url = self.check_for_motion() header = self.data.cameras[self._name].header self.response = requests.get(image_url, headers=header, stream=True) def check_for_motion(self): - """A method to check if motion has been detected since last update.""" + """Check if motion has been detected since last update.""" self.data.refresh() notifs = self.data.cameras[self._name].notifications if notifs > self.notifications: diff --git a/homeassistant/components/camera/bloomsky.py b/homeassistant/components/camera/bloomsky.py index 7137c73c299..c3b4775b593 100644 --- a/homeassistant/components/camera/bloomsky.py +++ b/homeassistant/components/camera/bloomsky.py @@ -16,7 +16,7 @@ DEPENDENCIES = ['bloomsky'] # pylint: disable=unused-argument def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup access to BloomSky cameras.""" + """Set up access to BloomSky cameras.""" bloomsky = get_component('bloomsky') for device in bloomsky.BLOOMSKY.devices.values(): add_devices([BloomSkyCamera(bloomsky.BLOOMSKY, device)]) @@ -26,14 +26,14 @@ class BloomSkyCamera(Camera): """Representation of the images published from the BloomSky's camera.""" def __init__(self, bs, device): - """Setup for access to the BloomSky camera images.""" + """Initialize access to the BloomSky camera images.""" super(BloomSkyCamera, self).__init__() self._name = device['DeviceName'] self._id = device['DeviceID'] self._bloomsky = bs self._url = "" self._last_url = "" - # _last_image will store images as they are downloaded so that the + # last_image will store images as they are downloaded so that the # frequent updates in home-assistant don't keep poking the server # to download the same image over and over. self._last_image = "" diff --git a/homeassistant/components/camera/demo.py b/homeassistant/components/camera/demo.py index 5e451c48b40..158f6c11751 100644 --- a/homeassistant/components/camera/demo.py +++ b/homeassistant/components/camera/demo.py @@ -11,7 +11,7 @@ from homeassistant.components.camera import Camera def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the Demo camera platform.""" + """Set up the Demo camera platform.""" add_devices([ DemoCamera('Demo camera') ]) @@ -29,8 +29,8 @@ class DemoCamera(Camera): """Return a faked still image response.""" now = dt_util.utcnow() - image_path = os.path.join(os.path.dirname(__file__), - 'demo_{}.jpg'.format(now.second % 4)) + image_path = os.path.join( + os.path.dirname(__file__), 'demo_{}.jpg'.format(now.second % 4)) with open(image_path, 'rb') as file: return file.read() diff --git a/homeassistant/components/camera/ffmpeg.py b/homeassistant/components/camera/ffmpeg.py index d4c7b54fc7f..8ca72a09261 100644 --- a/homeassistant/components/camera/ffmpeg.py +++ b/homeassistant/components/camera/ffmpeg.py @@ -16,10 +16,10 @@ from homeassistant.components.ffmpeg import ( import homeassistant.helpers.config_validation as cv from homeassistant.helpers.aiohttp_client import ( async_aiohttp_proxy_stream) -DEPENDENCIES = ['ffmpeg'] _LOGGER = logging.getLogger(__name__) +DEPENDENCIES = ['ffmpeg'] DEFAULT_NAME = 'FFmpeg' PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ @@ -31,7 +31,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ @asyncio.coroutine def async_setup_platform(hass, config, async_add_devices, discovery_info=None): - """Setup a FFmpeg Camera.""" + """Set up a FFmpeg camera.""" if not hass.data[DATA_FFMPEG].async_run_test(config.get(CONF_INPUT)): return async_add_devices([FFmpegCamera(hass, config)]) diff --git a/homeassistant/components/camera/foscam.py b/homeassistant/components/camera/foscam.py index c1f9513d2c6..86061aa3d1d 100644 --- a/homeassistant/components/camera/foscam.py +++ b/homeassistant/components/camera/foscam.py @@ -32,7 +32,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ # pylint: disable=unused-argument def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup a Foscam IP Camera.""" + """Set up a Foscam IP Camera.""" add_devices([FoscamCamera(config)]) @@ -60,7 +60,7 @@ class FoscamCamera(Camera): ) self._name = device_info.get(CONF_NAME) - _LOGGER.info('Using the following URL for %s: %s', + _LOGGER.info("Using the following URL for %s: %s", self._name, uri_template.format('***', '***')) def camera_image(self): diff --git a/homeassistant/components/camera/generic.py b/homeassistant/components/camera/generic.py index a330836f32b..83164c55230 100644 --- a/homeassistant/components/camera/generic.py +++ b/homeassistant/components/camera/generic.py @@ -43,7 +43,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ @asyncio.coroutine # pylint: disable=unused-argument def async_setup_platform(hass, config, async_add_devices, discovery_info=None): - """Setup a generic IP Camera.""" + """Set up a generic IP Camera.""" async_add_devices([GenericCamera(hass, config)]) @@ -85,8 +85,8 @@ class GenericCamera(Camera): try: url = self._still_image_url.async_render() except TemplateError as err: - _LOGGER.error('Error parsing template %s: %s', - self._still_image_url, err) + _LOGGER.error( + "Error parsing template %s: %s", self._still_image_url, err) return self._last_image if url == self._last_url and self._limit_refetch: @@ -100,7 +100,7 @@ class GenericCamera(Camera): response = requests.get(url, timeout=10, auth=self._auth) return response.content except requests.exceptions.RequestException as error: - _LOGGER.error('Error getting camera image: %s', error) + _LOGGER.error("Error getting camera image: %s", error) return self._last_image self._last_image = yield from self.hass.loop.run_in_executor( @@ -114,10 +114,10 @@ class GenericCamera(Camera): url, auth=self._auth) self._last_image = yield from response.read() except asyncio.TimeoutError: - _LOGGER.error('Timeout getting camera image') + _LOGGER.error("Timeout getting camera image") return self._last_image except aiohttp.ClientError as err: - _LOGGER.error('Error getting new camera image: %s', err) + _LOGGER.error("Error getting new camera image: %s", err) return self._last_image self._last_url = url diff --git a/homeassistant/components/camera/local_file.py b/homeassistant/components/camera/local_file.py index 85438820393..1f3a71c9d05 100644 --- a/homeassistant/components/camera/local_file.py +++ b/homeassistant/components/camera/local_file.py @@ -26,7 +26,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the Camera.""" + """Set up the Camera that works with local files.""" file_path = config[CONF_FILE_PATH] # check filepath given is readable @@ -38,7 +38,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None): class LocalFile(Camera): - """Local camera.""" + """Representation of a local file camera.""" def __init__(self, name, file_path): """Initialize Local File Camera component.""" diff --git a/homeassistant/components/camera/mjpeg.py b/homeassistant/components/camera/mjpeg.py index a158c36152e..1e9859fe7c2 100644 --- a/homeassistant/components/camera/mjpeg.py +++ b/homeassistant/components/camera/mjpeg.py @@ -44,7 +44,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ @asyncio.coroutine # pylint: disable=unused-argument def async_setup_platform(hass, config, async_add_devices, discovery_info=None): - """Setup a MJPEG IP Camera.""" + """Set up a MJPEG IP Camera.""" if discovery_info: config = PLATFORM_SCHEMA(discovery_info) async_add_devices([MjpegCamera(hass, config)]) @@ -102,10 +102,10 @@ class MjpegCamera(Camera): return image except asyncio.TimeoutError: - _LOGGER.error('Timeout getting camera image') + _LOGGER.error("Timeout getting camera image") except aiohttp.ClientError as err: - _LOGGER.error('Error getting new camera image: %s', err) + _LOGGER.error("Error getting new camera image: %s", err) def camera_image(self): """Return a still image response from the camera.""" diff --git a/homeassistant/components/camera/mqtt.py b/homeassistant/components/camera/mqtt.py index 39fbdc7fd9f..8d72ec35a28 100755 --- a/homeassistant/components/camera/mqtt.py +++ b/homeassistant/components/camera/mqtt.py @@ -32,17 +32,17 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ @asyncio.coroutine def async_setup_platform(hass, config, async_add_devices, discovery_info=None): - """Setup the Camera.""" + """Set up the MQTT Camera.""" topic = config[CONF_TOPIC] async_add_devices([MqttCamera(config[CONF_NAME], topic)]) class MqttCamera(Camera): - """MQTT camera.""" + """representation of a MQTT camera.""" def __init__(self, name, topic): - """Initialize Local File Camera component.""" + """Initialize the MQTT Camera.""" super().__init__() self._name = name @@ -61,13 +61,13 @@ class MqttCamera(Camera): return self._name def async_added_to_hass(self): - """Subscribe mqtt events. + """Subscribe MQTT events. This method must be run in the event loop and returns a coroutine. """ @callback def message_received(topic, payload, qos): - """A new MQTT message has been received.""" + """Handle new MQTT messages.""" self._last_image = payload return mqtt.async_subscribe( diff --git a/homeassistant/components/camera/neato.py b/homeassistant/components/camera/neato.py index d6eafc36859..33bd00caa6b 100644 --- a/homeassistant/components/camera/neato.py +++ b/homeassistant/components/camera/neato.py @@ -1,5 +1,5 @@ """ -Camera that loads a picture from a local file. +Camera that loads a picture from Neato. For more details about this platform, please refer to the documentation at https://home-assistant.io/components/camera.neato/ @@ -18,12 +18,12 @@ DEPENDENCIES = ['neato'] def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the Camera.""" + """Set up the Neato Camera.""" dev = [] for robot in hass.data[NEATO_ROBOTS]: if 'maps' in robot.traits: dev.append(NeatoCleaningMap(hass, robot)) - _LOGGER.debug('Adding robots for cleaning maps %s', dev) + _LOGGER.debug("Adding robots for cleaning maps %s", dev) add_devices(dev, True) @@ -34,7 +34,7 @@ class NeatoCleaningMap(Camera): """Initialize Neato cleaning map.""" super().__init__() self.robot = robot - self._robot_name = self.robot.name + ' Cleaning Map' + self._robot_name = '{} {}'.format(self.robot.name, 'Cleaning Map') self._robot_serial = self.robot.serial self.neato = hass.data[NEATO_LOGIN] self._image_url = None @@ -53,7 +53,7 @@ class NeatoCleaningMap(Camera): map_data = self.hass.data[NEATO_MAP_DATA] image_url = map_data[self._robot_serial]['maps'][0]['url'] if image_url == self._image_url: - _LOGGER.debug('The map image_url is the same as old') + _LOGGER.debug("The map image_url is the same as old") return image = self.neato.download_map(image_url) self._image = image.read() diff --git a/homeassistant/components/camera/netatmo.py b/homeassistant/components/camera/netatmo.py index 6ede7c5a162..7185d14e54d 100644 --- a/homeassistant/components/camera/netatmo.py +++ b/homeassistant/components/camera/netatmo.py @@ -32,7 +32,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ # pylint: disable=unused-argument def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup access to Netatmo cameras.""" + """Set up access to Netatmo cameras.""" netatmo = get_component('netatmo') home = config.get(CONF_HOME) verify_ssl = config.get(CONF_VERIFY_SSL, True) @@ -64,10 +64,10 @@ class NetatmoCamera(Camera): self._name = home + ' / ' + camera_name else: self._name = camera_name - camera_id = data.camera_data.cameraByName(camera=camera_name, - home=home)['id'] - self._unique_id = "Welcome_camera {0} - {1}".format(self._name, - camera_id) + camera_id = data.camera_data.cameraByName( + camera=camera_name, home=home)['id'] + self._unique_id = "Welcome_camera {0} - {1}".format( + self._name, camera_id) self._vpnurl, self._localurl = self._data.camera_data.cameraUrls( camera=camera_name ) @@ -83,13 +83,13 @@ class NetatmoCamera(Camera): response = requests.get('{0}/live/snapshot_720.jpg'.format( self._vpnurl), timeout=10, verify=self._verify_ssl) else: - _LOGGER.error('Welcome VPN url is None') + _LOGGER.error("Welcome VPN URL is None") self._data.update() (self._vpnurl, self._localurl) = \ self._data.camera_data.cameraUrls(camera=self._camera_name) return None except requests.exceptions.RequestException as error: - _LOGGER.error('Welcome url changed: %s', error) + _LOGGER.error("Welcome URL changed: %s", error) self._data.update() (self._vpnurl, self._localurl) = \ self._data.camera_data.cameraUrls(camera=self._camera_name) @@ -103,12 +103,12 @@ class NetatmoCamera(Camera): @property def brand(self): - """Camera brand.""" + """Return the camera brand.""" return "Netatmo" @property def model(self): - """Camera model.""" + """Return the camera model.""" if self._cameratype == "NOC": return "Presence" elif self._cameratype == "NACamera": diff --git a/homeassistant/components/camera/rpi_camera.py b/homeassistant/components/camera/rpi_camera.py index b42c62e56d0..6e3d3622a3f 100644 --- a/homeassistant/components/camera/rpi_camera.py +++ b/homeassistant/components/camera/rpi_camera.py @@ -62,7 +62,7 @@ def kill_raspistill(*args): def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the Raspberry Camera.""" + """Set up the Raspberry Camera.""" if shutil.which("raspistill") is None: _LOGGER.error("'raspistill' was not found") return False diff --git a/homeassistant/components/camera/synology.py b/homeassistant/components/camera/synology.py index 378d75ac26d..de61535b336 100644 --- a/homeassistant/components/camera/synology.py +++ b/homeassistant/components/camera/synology.py @@ -59,7 +59,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ @asyncio.coroutine def async_setup_platform(hass, config, async_add_devices, discovery_info=None): - """Setup a Synology IP Camera.""" + """Set up a Synology IP Camera.""" verify_ssl = config.get(CONF_VERIFY_SSL) timeout = config.get(CONF_TIMEOUT) websession_init = async_get_clientsession(hass, verify_ssl) @@ -140,16 +140,8 @@ def async_setup_platform(hass, config, async_add_devices, discovery_info=None): snapshot_path = camera['snapshot_path'] device = SynologyCamera( - hass, - websession, - config, - camera_id, - camera['name'], - snapshot_path, - streaming_path, - camera_path, - auth_path, - timeout + hass, websession, config, camera_id, camera['name'], + snapshot_path, streaming_path, camera_path, auth_path, timeout ) devices.append(device) diff --git a/homeassistant/components/camera/uvc.py b/homeassistant/components/camera/uvc.py index c5252209996..3840a8a90b1 100644 --- a/homeassistant/components/camera/uvc.py +++ b/homeassistant/components/camera/uvc.py @@ -41,13 +41,13 @@ def setup_platform(hass, config, add_devices, discovery_info=None): try: cameras = nvrconn.index() except nvr.NotAuthorized: - _LOGGER.error('Authorization failure while connecting to NVR') + _LOGGER.error("Authorization failure while connecting to NVR") return False except nvr.NvrError: - _LOGGER.error('NVR refuses to talk to me') + _LOGGER.error("NVR refuses to talk to me") return False except requests.exceptions.ConnectionError as ex: - _LOGGER.error('Unable to connect to NVR: %s', str(ex)) + _LOGGER.error("Unable to connect to NVR: %s", str(ex)) return False identifier = nvrconn.server_version >= (3, 2, 0) and 'id' or 'uuid' @@ -113,7 +113,7 @@ class UnifiVideoCamera(Camera): store = uvc_store.get_info_store() password = store.get_camera_password(self._uuid) if password is None: - _LOGGER.debug('Logging into camera %(name)s with default password', + _LOGGER.debug("Logging into camera %(name)s with default password", dict(name=self._name)) password = 'ubnt' @@ -125,11 +125,10 @@ class UnifiVideoCamera(Camera): camera = None for addr in addrs: try: - camera = client_cls(addr, - caminfo['username'], - password) + camera = client_cls( + addr, caminfo['username'], password) camera.login() - _LOGGER.debug('Logged into UVC camera %(name)s via %(addr)s', + _LOGGER.debug("Logged into UVC camera %(name)s via %(addr)s", dict(name=self._name, addr=addr)) self._connect_addr = addr break @@ -140,7 +139,7 @@ class UnifiVideoCamera(Camera): except uvc_camera.CameraAuthError: pass if not self._connect_addr: - _LOGGER.error('Unable to login to camera') + _LOGGER.error("Unable to login to camera") return None self._camera = camera @@ -157,14 +156,14 @@ class UnifiVideoCamera(Camera): try: return self._camera.get_snapshot() except uvc_camera.CameraConnectError: - _LOGGER.error('Unable to contact camera') + _LOGGER.error("Unable to contact camera") except uvc_camera.CameraAuthError: if retry: self._login() return _get_image(retry=False) else: - _LOGGER.error('Unable to log into camera, unable ' - 'to get snapshot') + _LOGGER.error( + "Unable to log into camera, unable to get snapshot") raise return _get_image() diff --git a/homeassistant/components/camera/verisure.py b/homeassistant/components/camera/verisure.py index 6e613b72298..1c2e7e382fe 100644 --- a/homeassistant/components/camera/verisure.py +++ b/homeassistant/components/camera/verisure.py @@ -17,7 +17,7 @@ _LOGGER = logging.getLogger(__name__) def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the Camera.""" + """Set up the Verisure Camera.""" if not int(hub.config.get(CONF_SMARTCAM, 1)): return False directory_path = hass.config.config_dir @@ -33,7 +33,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None): class VerisureSmartcam(Camera): - """Local camera.""" + """Representation of a Verisure camera.""" def __init__(self, hass, device_id, directory_path): """Initialize Verisure File Camera component.""" @@ -50,9 +50,9 @@ class VerisureSmartcam(Camera): """Return image response.""" self.check_imagelist() if not self._image: - _LOGGER.debug('No image to display') + _LOGGER.debug("No image to display") return - _LOGGER.debug('Trying to open %s', self._image) + _LOGGER.debug("Trying to open %s", self._image) with open(self._image, 'rb') as file: return file.read() @@ -64,35 +64,30 @@ class VerisureSmartcam(Camera): return images = hub.smartcam_dict[self._device_id] new_image_id = images[0] - _LOGGER.debug('self._device_id=%s, self._images=%s, ' - 'self._new_image_id=%s', self._device_id, + _LOGGER.debug("self._device_id=%s, self._images=%s, " + "self._new_image_id=%s", self._device_id, images, new_image_id) if (new_image_id == '-1' or self._image_id == new_image_id): - _LOGGER.debug('The image is the same, or loading image_id') + _LOGGER.debug("The image is the same, or loading image_id") return - _LOGGER.debug('Download new image %s', new_image_id) - hub.my_pages.smartcam.download_image(self._device_id, - new_image_id, - self._directory_path) - _LOGGER.debug('Old image_id=%s', self._image_id) + _LOGGER.debug("Download new image %s", new_image_id) + hub.my_pages.smartcam.download_image( + self._device_id, new_image_id, self._directory_path) + _LOGGER.debug("Old image_id=%s", self._image_id) self.delete_image(self) self._image_id = new_image_id - self._image = os.path.join(self._directory_path, - '{}{}'.format( - self._image_id, - '.jpg')) + self._image = os.path.join( + self._directory_path, '{}{}'.format(self._image_id, '.jpg')) def delete_image(self, event): """Delete an old image.""" - remove_image = os.path.join(self._directory_path, - '{}{}'.format( - self._image_id, - '.jpg')) + remove_image = os.path.join( + self._directory_path, '{}{}'.format(self._image_id, '.jpg')) try: os.remove(remove_image) - _LOGGER.debug('Deleting old image %s', remove_image) + _LOGGER.debug("Deleting old image %s", remove_image) except OSError as error: if error.errno != errno.ENOENT: raise diff --git a/homeassistant/components/camera/zoneminder.py b/homeassistant/components/camera/zoneminder.py index e419564a887..62d895d3922 100644 --- a/homeassistant/components/camera/zoneminder.py +++ b/homeassistant/components/camera/zoneminder.py @@ -51,21 +51,21 @@ def _get_image_url(hass, monitor, mode): @asyncio.coroutine # pylint: disable=unused-argument def async_setup_platform(hass, config, async_add_devices, discovery_info=None): - """Setup ZoneMinder cameras.""" + """Set up the ZoneMinder cameras.""" cameras = [] monitors = zoneminder.get_state('api/monitors.json') if not monitors: - _LOGGER.warning('Could not fetch monitors from ZoneMinder') + _LOGGER.warning("Could not fetch monitors from ZoneMinder") return for i in monitors['monitors']: monitor = i['Monitor'] if monitor['Function'] == 'None': - _LOGGER.info('Skipping camera %s', monitor['Id']) + _LOGGER.info("Skipping camera %s", monitor['Id']) continue - _LOGGER.info('Initializing camera %s', monitor['Id']) + _LOGGER.info("Initializing camera %s", monitor['Id']) device_info = { CONF_NAME: monitor['Name'], @@ -75,7 +75,7 @@ def async_setup_platform(hass, config, async_add_devices, discovery_info=None): cameras.append(ZoneMinderCamera(hass, device_info, monitor)) if not cameras: - _LOGGER.warning('No active cameras found') + _LOGGER.warning("No active cameras found") return async_add_devices(cameras) @@ -97,18 +97,18 @@ class ZoneMinderCamera(MjpegCamera): def update(self): """Update our recording state from the ZM API.""" - _LOGGER.debug('Updating camera state for monitor %i', self._monitor_id) + _LOGGER.debug("Updating camera state for monitor %i", self._monitor_id) status_response = zoneminder.get_state( 'api/monitors/alarm/id:%i/command:status.json' % self._monitor_id ) if not status_response: - _LOGGER.warning('Could not get status for monitor %i', + _LOGGER.warning("Could not get status for monitor %i", self._monitor_id) return if status_response['success'] is False: - _LOGGER.warning('Alarm status API call failed for monitor %i', + _LOGGER.warning("Alarm status API call failed for monitor %i", self._monitor_id) return diff --git a/homeassistant/components/climate/__init__.py b/homeassistant/components/climate/__init__.py index 2a0bd2eb5c1..44cbdc99c04 100644 --- a/homeassistant/components/climate/__init__.py +++ b/homeassistant/components/climate/__init__.py @@ -23,45 +23,45 @@ from homeassistant.const import ( ATTR_ENTITY_ID, ATTR_TEMPERATURE, STATE_ON, STATE_OFF, STATE_UNKNOWN, TEMP_CELSIUS) -DOMAIN = "climate" +DOMAIN = 'climate' -ENTITY_ID_FORMAT = DOMAIN + ".{}" +ENTITY_ID_FORMAT = DOMAIN + '.{}' SCAN_INTERVAL = timedelta(seconds=60) -SERVICE_SET_AWAY_MODE = "set_away_mode" -SERVICE_SET_AUX_HEAT = "set_aux_heat" -SERVICE_SET_TEMPERATURE = "set_temperature" -SERVICE_SET_FAN_MODE = "set_fan_mode" -SERVICE_SET_HOLD_MODE = "set_hold_mode" -SERVICE_SET_OPERATION_MODE = "set_operation_mode" -SERVICE_SET_SWING_MODE = "set_swing_mode" -SERVICE_SET_HUMIDITY = "set_humidity" +SERVICE_SET_AWAY_MODE = 'set_away_mode' +SERVICE_SET_AUX_HEAT = 'set_aux_heat' +SERVICE_SET_TEMPERATURE = 'set_temperature' +SERVICE_SET_FAN_MODE = 'set_fan_mode' +SERVICE_SET_HOLD_MODE = 'set_hold_mode' +SERVICE_SET_OPERATION_MODE = 'set_operation_mode' +SERVICE_SET_SWING_MODE = 'set_swing_mode' +SERVICE_SET_HUMIDITY = 'set_humidity' -STATE_HEAT = "heat" -STATE_COOL = "cool" -STATE_IDLE = "idle" -STATE_AUTO = "auto" -STATE_DRY = "dry" -STATE_FAN_ONLY = "fan_only" +STATE_HEAT = 'heat' +STATE_COOL = 'cool' +STATE_IDLE = 'idle' +STATE_AUTO = 'auto' +STATE_DRY = 'dry' +STATE_FAN_ONLY = 'fan_only' -ATTR_CURRENT_TEMPERATURE = "current_temperature" -ATTR_MAX_TEMP = "max_temp" -ATTR_MIN_TEMP = "min_temp" -ATTR_TARGET_TEMP_HIGH = "target_temp_high" -ATTR_TARGET_TEMP_LOW = "target_temp_low" -ATTR_AWAY_MODE = "away_mode" -ATTR_AUX_HEAT = "aux_heat" -ATTR_FAN_MODE = "fan_mode" -ATTR_FAN_LIST = "fan_list" -ATTR_CURRENT_HUMIDITY = "current_humidity" -ATTR_HUMIDITY = "humidity" -ATTR_MAX_HUMIDITY = "max_humidity" -ATTR_MIN_HUMIDITY = "min_humidity" -ATTR_HOLD_MODE = "hold_mode" -ATTR_OPERATION_MODE = "operation_mode" -ATTR_OPERATION_LIST = "operation_list" -ATTR_SWING_MODE = "swing_mode" -ATTR_SWING_LIST = "swing_list" +ATTR_CURRENT_TEMPERATURE = 'current_temperature' +ATTR_MAX_TEMP = 'max_temp' +ATTR_MIN_TEMP = 'min_temp' +ATTR_TARGET_TEMP_HIGH = 'target_temp_high' +ATTR_TARGET_TEMP_LOW = 'target_temp_low' +ATTR_AWAY_MODE = 'away_mode' +ATTR_AUX_HEAT = 'aux_heat' +ATTR_FAN_MODE = 'fan_mode' +ATTR_FAN_LIST = 'fan_list' +ATTR_CURRENT_HUMIDITY = 'current_humidity' +ATTR_HUMIDITY = 'humidity' +ATTR_MAX_HUMIDITY = 'max_humidity' +ATTR_MIN_HUMIDITY = 'min_humidity' +ATTR_HOLD_MODE = 'hold_mode' +ATTR_OPERATION_MODE = 'operation_mode' +ATTR_OPERATION_LIST = 'operation_list' +ATTR_SWING_MODE = 'swing_mode' +ATTR_SWING_LIST = 'swing_list' # The degree of precision for each platform PRECISION_WHOLE = 1 @@ -273,7 +273,7 @@ def async_setup(hass, config): @asyncio.coroutine def async_aux_heat_set_service(service): - """Set auxillary heater on target climate devices.""" + """Set auxiliary heater on target climate devices.""" target_climate = component.async_extract_from_service(service) aux_heat = service.data.get(ATTR_AUX_HEAT) @@ -467,12 +467,12 @@ class ClimateDevice(Entity): @property def unit_of_measurement(self): - """The unit of measurement to display.""" + """Return the unit of measurement to display.""" return self.hass.config.units.temperature_unit @property def temperature_unit(self): - """The unit of measurement used by the platform.""" + """Return the unit of measurement used by the platform.""" raise NotImplementedError @property @@ -492,7 +492,7 @@ class ClimateDevice(Entity): @property def operation_list(self): - """List of available operation modes.""" + """Return the list of available operation modes.""" return None @property @@ -537,7 +537,7 @@ class ClimateDevice(Entity): @property def fan_list(self): - """List of available fan modes.""" + """Return the list of available fan modes.""" return None @property @@ -547,7 +547,7 @@ class ClimateDevice(Entity): @property def swing_list(self): - """List of available swing modes.""" + """Return the list of available swing modes.""" return None def set_temperature(self, **kwargs): @@ -695,8 +695,8 @@ class ClimateDevice(Entity): if temp is None or not isinstance(temp, Number): return temp if self.temperature_unit != self.unit_of_measurement: - temp = convert_temperature(temp, self.temperature_unit, - self.unit_of_measurement) + temp = convert_temperature( + temp, self.temperature_unit, self.unit_of_measurement) # Round in the units appropriate if self.precision == PRECISION_HALVES: return round(temp * 2) / 2.0 diff --git a/homeassistant/components/climate/demo.py b/homeassistant/components/climate/demo.py index 9830daff69c..24b40af7eb1 100644 --- a/homeassistant/components/climate/demo.py +++ b/homeassistant/components/climate/demo.py @@ -10,14 +10,14 @@ from homeassistant.const import TEMP_CELSIUS, TEMP_FAHRENHEIT, ATTR_TEMPERATURE def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the Demo climate devices.""" + """Set up the Demo climate devices.""" add_devices([ - DemoClimate("HeatPump", 68, TEMP_FAHRENHEIT, None, None, 77, - "Auto Low", None, None, "Auto", "heat", None, None, None), - DemoClimate("Hvac", 21, TEMP_CELSIUS, True, None, 22, "On High", - 67, 54, "Off", "cool", False, None, None), - DemoClimate("Ecobee", None, TEMP_CELSIUS, None, None, 23, "Auto Low", - None, None, "Auto", "auto", None, 24, 21) + DemoClimate('HeatPump', 68, TEMP_FAHRENHEIT, None, None, 77, + 'Auto Low', None, None, 'Auto', 'heat', None, None, None), + DemoClimate('Hvac', 21, TEMP_CELSIUS, True, None, 22, 'On High', + 67, 54, 'Off', 'cool', False, None, None), + DemoClimate('Ecobee', None, TEMP_CELSIUS, None, None, 23, 'Auto Low', + None, None, 'Auto', 'auto', None, 24, 21) ]) @@ -41,15 +41,15 @@ class DemoClimate(ClimateDevice): self._current_operation = current_operation self._aux = aux self._current_swing_mode = current_swing_mode - self._fan_list = ["On Low", "On High", "Auto Low", "Auto High", "Off"] - self._operation_list = ["heat", "cool", "auto", "off"] - self._swing_list = ["Auto", "1", "2", "3", "Off"] + self._fan_list = ['On Low', 'On High', 'Auto Low', 'Auto High', 'Off'] + self._operation_list = ['heat', 'cool', 'auto', 'off'] + self._swing_list = ['Auto', '1', '2', '3', 'Off'] self._target_temperature_high = target_temp_high self._target_temperature_low = target_temp_low @property def should_poll(self): - """Polling not needed for a demo climate device.""" + """Return the polling state.""" return False @property @@ -99,7 +99,7 @@ class DemoClimate(ClimateDevice): @property def operation_list(self): - """List of available operation modes.""" + """Return the list of available operation modes.""" return self._operation_list @property @@ -124,7 +124,7 @@ class DemoClimate(ClimateDevice): @property def fan_list(self): - """List of available fan modes.""" + """Return the list of available fan modes.""" return self._fan_list def set_temperature(self, **kwargs): diff --git a/homeassistant/components/climate/ecobee.py b/homeassistant/components/climate/ecobee.py index 17155ffa791..9e04013d53f 100644 --- a/homeassistant/components/climate/ecobee.py +++ b/homeassistant/components/climate/ecobee.py @@ -45,7 +45,7 @@ RESUME_PROGRAM_SCHEMA = vol.Schema({ def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the Ecobee Thermostat Platform.""" + """Set up the Ecobee Thermostat Platform.""" if discovery_info is None: return data = ecobee.NETWORK @@ -197,19 +197,19 @@ class Thermostat(ClimateDevice): if event['holdClimateRef'] == 'away': if int(event['endDate'][0:4]) - \ int(event['startDate'][0:4]) <= 1: - # a temporary hold from away climate is a hold + # A temporary hold from away climate is a hold return 'away' else: - # a premanent hold from away climate is away_mode + # A permanent hold from away climate is away_mode return None elif event['holdClimateRef'] != "": - # any other hold based on climate + # Any other hold based on climate return event['holdClimateRef'] else: - # any hold not based on a climate is a temp hold + # Any hold not based on a climate is a temp hold return TEMPERATURE_HOLD elif event['type'].startswith('auto'): - # all auto modes are treated as holds + # All auto modes are treated as holds return event['type'][4:].lower() elif event['type'] == 'vacation': self.vacation = event['name'] @@ -300,17 +300,16 @@ class Thermostat(ClimateDevice): return elif hold_mode == 'None' or hold_mode is None: if hold == VACATION_HOLD: - self.data.ecobee.delete_vacation(self.thermostat_index, - self.vacation) + self.data.ecobee.delete_vacation( + self.thermostat_index, self.vacation) else: self.data.ecobee.resume_program(self.thermostat_index) else: if hold_mode == TEMPERATURE_HOLD: self.set_temp_hold(int(self.current_temperature)) else: - self.data.ecobee.set_climate_hold(self.thermostat_index, - hold_mode, - self.hold_preference()) + self.data.ecobee.set_climate_hold( + self.thermostat_index, hold_mode, self.hold_preference()) self.update_without_throttle = True def set_auto_temp_hold(self, heat_temp, cool_temp): @@ -356,7 +355,7 @@ class Thermostat(ClimateDevice): self.set_temp_hold(int(temp)) else: _LOGGER.error( - 'Missing valid arguments for set_temperature in %s', kwargs) + "Missing valid arguments for set_temperature in %s", kwargs) def set_operation_mode(self, operation_mode): """Set HVAC mode (auto, auxHeatOnly, cool, heat, off).""" @@ -365,14 +364,14 @@ class Thermostat(ClimateDevice): def set_fan_min_on_time(self, fan_min_on_time): """Set the minimum fan on time.""" - self.data.ecobee.set_fan_min_on_time(self.thermostat_index, - fan_min_on_time) + self.data.ecobee.set_fan_min_on_time( + self.thermostat_index, fan_min_on_time) self.update_without_throttle = True def resume_program(self, resume_all): """Resume the thermostat schedule program.""" - self.data.ecobee.resume_program(self.thermostat_index, - str(resume_all).lower()) + self.data.ecobee.resume_program( + self.thermostat_index, str(resume_all).lower()) self.update_without_throttle = True def hold_preference(self): diff --git a/homeassistant/components/climate/eq3btsmart.py b/homeassistant/components/climate/eq3btsmart.py index 7e0712647ea..ff13dd48cac 100644 --- a/homeassistant/components/climate/eq3btsmart.py +++ b/homeassistant/components/climate/eq3btsmart.py @@ -21,15 +21,15 @@ REQUIREMENTS = ['python-eq3bt==0.1.5'] _LOGGER = logging.getLogger(__name__) -STATE_BOOST = "boost" -STATE_AWAY = "away" -STATE_MANUAL = "manual" +STATE_BOOST = 'boost' +STATE_AWAY = 'away' +STATE_MANUAL = 'manual' -ATTR_STATE_WINDOW_OPEN = "window_open" -ATTR_STATE_VALVE = "valve" -ATTR_STATE_LOCKED = "is_locked" -ATTR_STATE_LOW_BAT = "low_battery" -ATTR_STATE_AWAY_END = "away_end" +ATTR_STATE_WINDOW_OPEN = 'window_open' +ATTR_STATE_VALVE = 'valve' +ATTR_STATE_LOCKED = 'is_locked' +ATTR_STATE_LOW_BAT = 'low_battery' +ATTR_STATE_AWAY_END = 'away_end' DEVICE_SCHEMA = vol.Schema({ vol.Required(CONF_MAC): cv.string, @@ -42,7 +42,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the eQ-3 BLE thermostats.""" + """Set up the eQ-3 BLE thermostats.""" devices = [] for name, device_cfg in config[CONF_DEVICES].items(): @@ -112,14 +112,14 @@ class EQ3BTSmartThermostat(ClimateDevice): @property def current_operation(self): - """Current mode.""" + """Return the current operation mode.""" if self._thermostat.mode < 0: return None return self.modes[self._thermostat.mode] @property def operation_list(self): - """List of available operation modes.""" + """Return the list of available operation modes.""" return [x for x in self.modes.values()] def set_operation_mode(self, operation_mode): diff --git a/homeassistant/components/climate/generic_thermostat.py b/homeassistant/components/climate/generic_thermostat.py index 4fc667a5326..11400466c4f 100644 --- a/homeassistant/components/climate/generic_thermostat.py +++ b/homeassistant/components/climate/generic_thermostat.py @@ -14,7 +14,8 @@ from homeassistant.components import switch from homeassistant.components.climate import ( STATE_HEAT, STATE_COOL, STATE_IDLE, ClimateDevice, PLATFORM_SCHEMA) from homeassistant.const import ( - ATTR_UNIT_OF_MEASUREMENT, STATE_ON, STATE_OFF, ATTR_TEMPERATURE) + ATTR_UNIT_OF_MEASUREMENT, STATE_ON, STATE_OFF, ATTR_TEMPERATURE, + CONF_NAME) from homeassistant.helpers import condition from homeassistant.helpers.event import ( async_track_state_change, async_track_time_interval) @@ -27,7 +28,6 @@ DEPENDENCIES = ['switch', 'sensor'] DEFAULT_TOLERANCE = 0.3 DEFAULT_NAME = 'Generic Thermostat' -CONF_NAME = 'name' CONF_HEATER = 'heater' CONF_SENSOR = 'target_sensor' CONF_MIN_TEMP = 'min_temp' @@ -56,7 +56,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ @asyncio.coroutine def async_setup_platform(hass, config, async_add_devices, discovery_info=None): - """Setup the generic thermostat.""" + """Set up the generic thermostat platform.""" name = config.get(CONF_NAME) heater_entity_id = config.get(CONF_HEATER) sensor_entity_id = config.get(CONF_SENSOR) @@ -74,7 +74,7 @@ def async_setup_platform(hass, config, async_add_devices, discovery_info=None): class GenericThermostat(ClimateDevice): - """Representation of a GenericThermostat device.""" + """Representation of a Generic Thermostat device.""" def __init__(self, hass, name, heater_entity_id, sensor_entity_id, min_temp, max_temp, target_temp, ac_mode, min_cycle_duration, @@ -110,7 +110,7 @@ class GenericThermostat(ClimateDevice): @property def should_poll(self): - """No polling needed.""" + """Return the polling state.""" return False @property @@ -175,7 +175,7 @@ class GenericThermostat(ClimateDevice): @asyncio.coroutine def _async_sensor_changed(self, entity_id, old_state, new_state): - """Called when temperature changes.""" + """Handle temperature changes.""" if new_state is None: return @@ -185,14 +185,14 @@ class GenericThermostat(ClimateDevice): @callback def _async_switch_changed(self, entity_id, old_state, new_state): - """Called when heater switch changes state.""" + """Handle heater switch state changes.""" if new_state is None: return self.hass.async_add_job(self.async_update_ha_state()) @callback def _async_keep_alive(self, time): - """Called at constant intervals for keep-alive purposes.""" + """Call at constant intervals for keep-alive purposes.""" if self.current_operation in [STATE_COOL, STATE_HEAT]: switch.async_turn_on(self.hass, self.heater_entity_id) else: diff --git a/homeassistant/components/climate/heatmiser.py b/homeassistant/components/climate/heatmiser.py index 28d419597d3..56015ebeb5a 100644 --- a/homeassistant/components/climate/heatmiser.py +++ b/homeassistant/components/climate/heatmiser.py @@ -35,7 +35,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ # pylint: disable=unused-variable def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the heatmiser thermostat.""" + """Set up the heatmiser thermostat.""" from heatmiserV3 import heatmiser, connection ipaddress = config.get(CONF_IPADDRESS) diff --git a/homeassistant/components/climate/homematic.py b/homeassistant/components/climate/homematic.py index 7385eeac98a..1f9ca7c1abf 100644 --- a/homeassistant/components/climate/homematic.py +++ b/homeassistant/components/climate/homematic.py @@ -14,17 +14,17 @@ DEPENDENCIES = ['homematic'] _LOGGER = logging.getLogger(__name__) -STATE_MANUAL = "manual" -STATE_BOOST = "boost" -STATE_COMFORT = "comfort" -STATE_LOWERING = "lowering" +STATE_MANUAL = 'manual' +STATE_BOOST = 'boost' +STATE_COMFORT = 'comfort' +STATE_LOWERING = 'lowering' HM_STATE_MAP = { - "AUTO_MODE": STATE_AUTO, - "MANU_MODE": STATE_MANUAL, - "BOOST_MODE": STATE_BOOST, - "COMFORT_MODE": STATE_COMFORT, - "LOWERING_MODE": STATE_LOWERING + 'AUTO_MODE': STATE_AUTO, + 'MANU_MODE': STATE_MANUAL, + 'BOOST_MODE': STATE_BOOST, + 'COMFORT_MODE': STATE_COMFORT, + 'LOWERING_MODE': STATE_LOWERING } HM_TEMP_MAP = [ @@ -41,7 +41,7 @@ HM_CONTROL_MODE = 'CONTROL_MODE' def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the Homematic thermostat platform.""" + """Set up the Homematic thermostat platform.""" if discovery_info is None: return @@ -76,10 +76,9 @@ class HMThermostat(HMDevice, ClimateDevice): @property def operation_list(self): - """List of available operation modes.""" + """Return the list of available operation modes.""" op_list = [] - # generate list for mode in self._hmdevice.ACTIONNODE: if mode in HM_STATE_MAP: op_list.append(HM_STATE_MAP.get(mode)) @@ -132,11 +131,9 @@ class HMThermostat(HMDevice, ClimateDevice): def _init_data_struct(self): """Generate a data dict (self._data) from the Homematic metadata.""" - # Add state to data dict self._state = next(iter(self._hmdevice.WRITENODE.keys())) self._data[self._state] = STATE_UNKNOWN - # support state if HM_CONTROL_MODE in self._hmdevice.ATTRIBUTENODE: self._data[HM_CONTROL_MODE] = STATE_UNKNOWN diff --git a/homeassistant/components/climate/honeywell.py b/homeassistant/components/climate/honeywell.py index 5152519459b..94c48258bf5 100644 --- a/homeassistant/components/climate/honeywell.py +++ b/homeassistant/components/climate/honeywell.py @@ -8,13 +8,12 @@ import logging import socket import datetime -import voluptuous as vol import requests +import voluptuous as vol -from homeassistant.components.climate import (ClimateDevice, PLATFORM_SCHEMA, - ATTR_FAN_MODE, ATTR_FAN_LIST, - ATTR_OPERATION_MODE, - ATTR_OPERATION_LIST) +from homeassistant.components.climate import ( + ClimateDevice, PLATFORM_SCHEMA, ATTR_FAN_MODE, ATTR_FAN_LIST, + ATTR_OPERATION_MODE, ATTR_OPERATION_LIST) from homeassistant.const import ( CONF_PASSWORD, CONF_USERNAME, TEMP_CELSIUS, TEMP_FAHRENHEIT, ATTR_TEMPERATURE) @@ -54,7 +53,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the Honeywell thermostat.""" + """Set up the Honeywell thermostat.""" username = config.get(CONF_USERNAME) password = config.get(CONF_PASSWORD) region = config.get(CONF_REGION) @@ -66,7 +65,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None): def _setup_round(username, password, config, add_devices): - """Setup rounding function.""" + """Set up the rounding function.""" from evohomeclient import EvohomeClient away_temp = config.get(CONF_AWAY_TEMPERATURE) @@ -87,16 +86,16 @@ def _setup_round(username, password, config, add_devices): # config will be used later def _setup_us(username, password, config, add_devices): - """Setup user.""" + """Set up the user.""" import somecomfort try: client = somecomfort.SomeComfort(username, password) except somecomfort.AuthError: - _LOGGER.error('Failed to login to honeywell account %s', username) + _LOGGER.error("Failed to login to honeywell account %s", username) return False except somecomfort.SomeComfortError as ex: - _LOGGER.error('Failed to initialize honeywell client: %s', str(ex)) + _LOGGER.error("Failed to initialize honeywell client: %s", str(ex)) return False dev_id = config.get('thermostat') @@ -199,7 +198,7 @@ class RoundThermostat(ClimateDevice): except StopIteration: _LOGGER.error("Did not receive any temperature data from the " - "evohomeclient API.") + "evohomeclient API") return self._current_temperature = data['temp'] @@ -289,7 +288,7 @@ class HoneywellUSThermostat(ClimateDevice): "setpoint_{}".format(mode), temperature) except somecomfort.SomeComfortError: - _LOGGER.error('Temperature %.1f out of range', temperature) + _LOGGER.error("Temperature %.1f out of range", temperature) @property def device_state_attributes(self): @@ -369,8 +368,8 @@ class HoneywellUSThermostat(ClimateDevice): raise exp if not self._retry(): raise exp - _LOGGER.error("SomeComfort update failed, Retrying " - "- Error: %s", exp) + _LOGGER.error( + "SomeComfort update failed, Retrying - Error: %s", exp) def _retry(self): """Recreate a new somecomfort client. @@ -380,14 +379,14 @@ class HoneywellUSThermostat(ClimateDevice): """ import somecomfort try: - self._client = somecomfort.SomeComfort(self._username, - self._password) + self._client = somecomfort.SomeComfort( + self._username, self._password) except somecomfort.AuthError: - _LOGGER.error('Failed to login to honeywell account %s', + _LOGGER.error("Failed to login to honeywell account %s", self._username) return False except somecomfort.SomeComfortError as ex: - _LOGGER.error('Failed to initialize honeywell client: %s', + _LOGGER.error("Failed to initialize honeywell client: %s", str(ex)) return False @@ -397,7 +396,7 @@ class HoneywellUSThermostat(ClimateDevice): if device.name == self._device.name] if len(devices) != 1: - _LOGGER.error('Failed to find device %s', self._device.name) + _LOGGER.error("Failed to find device %s", self._device.name) return False self._device = devices[0] diff --git a/homeassistant/components/climate/knx.py b/homeassistant/components/climate/knx.py index 888a217d90c..e399e2f3dca 100644 --- a/homeassistant/components/climate/knx.py +++ b/homeassistant/components/climate/knx.py @@ -61,7 +61,7 @@ class KNXThermostat(KNXMultiAddressDevice, ClimateDevice): @property def should_poll(self): - """Polling is needed for the KNX thermostat.""" + """Return the polling state, is needed for the KNX thermostat.""" return True @property diff --git a/homeassistant/components/climate/maxcube.py b/homeassistant/components/climate/maxcube.py index 210d159a250..9d6c1bbab5b 100644 --- a/homeassistant/components/climate/maxcube.py +++ b/homeassistant/components/climate/maxcube.py @@ -20,7 +20,7 @@ STATE_VACATION = 'vacation' def setup_platform(hass, config, add_devices, discovery_info=None): - """Iterate through all MAX! Devices and add thermostats to HASS.""" + """Iterate through all MAX! Devices and add thermostats.""" cube = hass.data[MAXCUBE_HANDLE].cube devices = [] @@ -29,9 +29,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None): name = '{} {}'.format( cube.room_by_id(device.room_id).name, device.name) - # Only add thermostats and wallthermostats if cube.is_thermostat(device) or cube.is_wallthermostat(device): - # Add device to HASS devices.append(MaxCubeClimate(hass, name, device.rf_address)) if devices: @@ -52,12 +50,12 @@ class MaxCubeClimate(ClimateDevice): @property def should_poll(self): - """Polling is required.""" + """Return the polling state.""" return True @property def name(self): - """Return the name of the ClimateDevice.""" + """Return the name of the climate device.""" return self._name @property @@ -93,7 +91,7 @@ class MaxCubeClimate(ClimateDevice): @property def operation_list(self): - """List of available operation modes.""" + """Return the list of available operation modes.""" return self._operation_list @property @@ -148,7 +146,7 @@ class MaxCubeClimate(ClimateDevice): @staticmethod def map_mode_hass_max(operation_mode): - """Map HASS Operation Modes to MAX! Operation Modes.""" + """Map Home Assistant Operation Modes to MAX! Operation Modes.""" from maxcube.device import \ MAX_DEVICE_MODE_AUTOMATIC, \ MAX_DEVICE_MODE_MANUAL, \ @@ -170,7 +168,7 @@ class MaxCubeClimate(ClimateDevice): @staticmethod def map_mode_max_hass(mode): - """Map MAX! Operation Modes to HASS Operation Modes.""" + """Map MAX! Operation Modes to Home Assistant Operation Modes.""" from maxcube.device import \ MAX_DEVICE_MODE_AUTOMATIC, \ MAX_DEVICE_MODE_MANUAL, \ diff --git a/homeassistant/components/climate/mysensors.py b/homeassistant/components/climate/mysensors.py index 02979e75f5f..adf44a81829 100755 --- a/homeassistant/components/climate/mysensors.py +++ b/homeassistant/components/climate/mysensors.py @@ -1,8 +1,8 @@ """ -mysensors platform that offers a Climate(MySensors-HVAC) component. +MySensors platform that offers a Climate (MySensors-HVAC) component. For more details about this platform, please refer to the documentation -https://home-assistant.io/components/climate.mysensors +https://home-assistant.io/components/climate.mysensors/ """ import logging @@ -14,14 +14,22 @@ from homeassistant.const import TEMP_CELSIUS, TEMP_FAHRENHEIT, ATTR_TEMPERATURE _LOGGER = logging.getLogger(__name__) -DICT_HA_TO_MYS = {STATE_COOL: "CoolOn", STATE_HEAT: "HeatOn", - STATE_AUTO: "AutoChangeOver", STATE_OFF: "Off"} -DICT_MYS_TO_HA = {"CoolOn": STATE_COOL, "HeatOn": STATE_HEAT, - "AutoChangeOver": STATE_AUTO, "Off": STATE_OFF} +DICT_HA_TO_MYS = { + STATE_AUTO: 'AutoChangeOver', + STATE_COOL: 'CoolOn', + STATE_HEAT: 'HeatOn', + STATE_OFF: 'Off', +} +DICT_MYS_TO_HA = { + 'AutoChangeOver': STATE_AUTO, + 'CoolOn': STATE_COOL, + 'HeatOn': STATE_HEAT, + 'Off': STATE_OFF, +} def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the mysensors climate.""" + """Set up the mysensors climate.""" if discovery_info is None: return @@ -43,7 +51,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None): class MySensorsHVAC(mysensors.MySensorsDeviceEntity, ClimateDevice): - """Representation of a MySensorsHVAC hvac.""" + """Representation of a MySensors HVAC.""" @property def assumed_state(self): @@ -105,7 +113,7 @@ class MySensorsHVAC(mysensors.MySensorsDeviceEntity, ClimateDevice): @property def fan_list(self): """List of available fan modes.""" - return ["Auto", "Min", "Normal", "Max"] + return ['Auto', 'Min', 'Normal', 'Max'] def set_temperature(self, **kwargs): """Set new target temperature.""" @@ -140,8 +148,8 @@ class MySensorsHVAC(mysensors.MySensorsDeviceEntity, ClimateDevice): def set_fan_mode(self, fan): """Set new target temperature.""" set_req = self.gateway.const.SetReq - self.gateway.set_child_value(self.node_id, self.child_id, - set_req.V_HVAC_SPEED, fan) + self.gateway.set_child_value( + self.node_id, self.child_id, set_req.V_HVAC_SPEED, fan) if self.gateway.optimistic: # optimistically assume that switch has changed state self._values[set_req.V_HVAC_SPEED] = fan @@ -150,9 +158,9 @@ class MySensorsHVAC(mysensors.MySensorsDeviceEntity, ClimateDevice): def set_operation_mode(self, operation_mode): """Set new target temperature.""" set_req = self.gateway.const.SetReq - self.gateway.set_child_value(self.node_id, self.child_id, - set_req.V_HVAC_FLOW_STATE, - DICT_HA_TO_MYS[operation_mode]) + self.gateway.set_child_value( + self.node_id, self.child_id, set_req.V_HVAC_FLOW_STATE, + DICT_HA_TO_MYS[operation_mode]) if self.gateway.optimistic: # optimistically assume that switch has changed state self._values[set_req.V_HVAC_FLOW_STATE] = operation_mode @@ -165,7 +173,7 @@ class MySensorsHVAC(mysensors.MySensorsDeviceEntity, ClimateDevice): child = node.children[self.child_id] for value_type, value in child.values.items(): _LOGGER.debug( - '%s: value_type %s, value = %s', self._name, value_type, value) + "%s: value_type %s, value = %s", self._name, value_type, value) if value_type == set_req.V_HVAC_FLOW_STATE: self._values[value_type] = DICT_MYS_TO_HA[value] else: diff --git a/homeassistant/components/climate/nest.py b/homeassistant/components/climate/nest.py index 32cae5c4cec..522a1bebb16 100644 --- a/homeassistant/components/climate/nest.py +++ b/homeassistant/components/climate/nest.py @@ -30,12 +30,10 @@ STATE_HEAT_COOL = 'heat-cool' def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the Nest thermostat.""" + """Set up the Nest thermostat.""" if discovery_info is None: return - _LOGGER.debug("Setting up nest thermostat") - temp_unit = hass.config.units.temperature_unit add_devices( diff --git a/homeassistant/components/climate/netatmo.py b/homeassistant/components/climate/netatmo.py index 0afc8c29bd9..cea1a41ec9f 100755 --- a/homeassistant/components/climate/netatmo.py +++ b/homeassistant/components/climate/netatmo.py @@ -37,7 +37,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ def setup_platform(hass, config, add_callback_devices, discovery_info=None): - """Setup the NetAtmo Thermostat.""" + """Set up the NetAtmo Thermostat.""" netatmo = get_component('netatmo') device = config.get(CONF_RELAY) @@ -150,7 +150,6 @@ class ThermostatData(object): self.current_temperature = None self.target_temperature = None self.setpoint_mode = None - # self.operation = def get_module_names(self): """Return all module available on the API as a list.""" diff --git a/homeassistant/components/climate/oem.py b/homeassistant/components/climate/oem.py index 0280f116f1e..fd43ff799db 100644 --- a/homeassistant/components/climate/oem.py +++ b/homeassistant/components/climate/oem.py @@ -19,15 +19,12 @@ from homeassistant.const import (CONF_HOST, CONF_USERNAME, CONF_PASSWORD, CONF_PORT, TEMP_CELSIUS, CONF_NAME) import homeassistant.helpers.config_validation as cv -# Home Assistant depends on 3rd party packages for API specific code. REQUIREMENTS = ['oemthermostat==1.1'] _LOGGER = logging.getLogger(__name__) -# Local configs CONF_AWAY_TEMP = 'away_temp' -# Validation of the user's configuration PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ vol.Required(CONF_HOST): cv.string, vol.Optional(CONF_NAME, default="Thermostat"): cv.string, @@ -39,11 +36,9 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup oemthermostat.""" + """Set up the oemthermostat platform.""" from oemthermostat import Thermostat - # Assign configuration variables. The configuration check takes care they - # are present. name = config.get(CONF_NAME) host = config.get(CONF_HOST) port = config.get(CONF_PORT) @@ -51,20 +46,17 @@ def setup_platform(hass, config, add_devices, discovery_info=None): password = config.get(CONF_PASSWORD) away_temp = config.get(CONF_AWAY_TEMP) - # If creating the class raises an exception, it failed to connect or - # something else went wrong. try: - therm = Thermostat(host, port=port, - username=username, password=password) + therm = Thermostat( + host, port=port, username=username, password=password) except (ValueError, AssertionError, requests.RequestException): return False - # Add devices add_devices((ThermostatDevice(hass, therm, name, away_temp), ), True) class ThermostatDevice(ClimateDevice): - """Interface class for the oemthermostat module and HA.""" + """Interface class for the oemthermostat modul.""" def __init__(self, hass, thermostat, name, away_temp): """Initialize the device.""" @@ -87,12 +79,12 @@ class ThermostatDevice(ClimateDevice): @property def name(self): - """Name of this Thermostat.""" + """Return the name of this Thermostat.""" return self._name @property def temperature_unit(self): - """The unit of measurement used by the platform.""" + """Return the unit of measurement used by the platform.""" return TEMP_CELSIUS @property @@ -114,7 +106,7 @@ class ThermostatDevice(ClimateDevice): return self._setpoint def set_temperature(self, **kwargs): - """Change the setpoint of the thermostat.""" + """Set the temperature.""" # If we are setting the temp, then we don't want away mode anymore. self.turn_away_mode_off() diff --git a/homeassistant/components/climate/proliphix.py b/homeassistant/components/climate/proliphix.py index ef6553cc062..7f7e8af6d0a 100644 --- a/homeassistant/components/climate/proliphix.py +++ b/homeassistant/components/climate/proliphix.py @@ -25,7 +25,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the Proliphix thermostats.""" + """Set up the Proliphix thermostats.""" username = config.get(CONF_USERNAME) password = config.get(CONF_PASSWORD) host = config.get(CONF_HOST) @@ -43,7 +43,6 @@ class ProliphixThermostat(ClimateDevice): def __init__(self, pdp): """Initialize the thermostat.""" self._pdp = pdp - # initial data self._pdp.update() self._name = self._pdp.name diff --git a/homeassistant/components/climate/radiotherm.py b/homeassistant/components/climate/radiotherm.py index 9a0e5666036..5bbed953047 100644 --- a/homeassistant/components/climate/radiotherm.py +++ b/homeassistant/components/climate/radiotherm.py @@ -40,7 +40,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the Radio Thermostat.""" + """Set up the Radio Thermostat.""" import radiotherm hosts = [] diff --git a/homeassistant/components/climate/tado.py b/homeassistant/components/climate/tado.py index 600ea41e603..7bc99de26f9 100644 --- a/homeassistant/components/climate/tado.py +++ b/homeassistant/components/climate/tado.py @@ -87,7 +87,7 @@ class TadoClimate(ClimateDevice): def __init__(self, store, zone_name, zone_id, data_id, min_temp, max_temp, ac_mode, tolerance=0.3): - """Initialization of Tado climate device.""" + """Initialize of Tado climate device.""" self._store = store self._data_id = data_id @@ -113,7 +113,7 @@ class TadoClimate(ClimateDevice): @property def name(self): - """Return the name of the sensor.""" + """Return the name of the device.""" return self.zone_name @property @@ -133,12 +133,12 @@ class TadoClimate(ClimateDevice): @property def operation_list(self): - """List of available operation modes (readable).""" + """Return the list of available operation modes (readable).""" return list(OPERATION_LIST.values()) @property def temperature_unit(self): - """The unit of measurement used by the platform.""" + """Return the unit of measurement used by the platform.""" return self._unit @property diff --git a/homeassistant/components/climate/vera.py b/homeassistant/components/climate/vera.py index 79f10bc0421..06325ae0561 100644 --- a/homeassistant/components/climate/vera.py +++ b/homeassistant/components/climate/vera.py @@ -20,12 +20,12 @@ DEPENDENCIES = ['vera'] _LOGGER = logging.getLogger(__name__) -OPERATION_LIST = ["Heat", "Cool", "Auto Changeover", "Off"] -FAN_OPERATION_LIST = ["On", "Auto", "Cycle"] +OPERATION_LIST = ['Heat', 'Cool', 'Auto Changeover', 'Off'] +FAN_OPERATION_LIST = ['On', 'Auto', 'Cycle'] def setup_platform(hass, config, add_devices_callback, discovery_info=None): - """Find and return Vera thermostats.""" + """Set up of Vera thermostats.""" add_devices_callback( VeraThermostat(device, VERA_CONTROLLER) for device in VERA_DEVICES['climate']) @@ -43,19 +43,19 @@ class VeraThermostat(VeraDevice, ClimateDevice): def current_operation(self): """Return current operation ie. heat, cool, idle.""" mode = self.vera_device.get_hvac_mode() - if mode == "HeatOn": + if mode == 'HeatOn': return OPERATION_LIST[0] # heat - elif mode == "CoolOn": + elif mode == 'CoolOn': return OPERATION_LIST[1] # cool - elif mode == "AutoChangeOver": + elif mode == 'AutoChangeOver': return OPERATION_LIST[2] # auto - elif mode == "Off": + elif mode == 'Off': return OPERATION_LIST[3] # off - return "Off" + return 'Off' @property def operation_list(self): - """List of available operation modes.""" + """Return the list of available operation modes.""" return OPERATION_LIST @property @@ -72,7 +72,7 @@ class VeraThermostat(VeraDevice, ClimateDevice): @property def fan_list(self): - """List of available fan modes.""" + """Return a list of available fan modes.""" return FAN_OPERATION_LIST def set_fan_mode(self, mode): @@ -86,13 +86,13 @@ class VeraThermostat(VeraDevice, ClimateDevice): @property def current_power_w(self): - """Current power usage in W.""" + """Return the current power usage in W.""" power = self.vera_device.power if power: return convert(power, float, 0.0) def update(self): - """Called by the vera device callback to update state.""" + """Handle state updates.""" self._state = self.vera_device.get_hvac_mode() @property diff --git a/homeassistant/components/climate/wink.py b/homeassistant/components/climate/wink.py index df29768b3ff..256af2d013c 100644 --- a/homeassistant/components/climate/wink.py +++ b/homeassistant/components/climate/wink.py @@ -30,7 +30,7 @@ ATTR_OCCUPIED = "occupied" def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the Wink thermostat.""" + """Set up the Wink thermostat.""" import pywink temp_unit = hass.config.units.temperature_unit for climate in pywink.get_thermostats(): @@ -449,7 +449,7 @@ class WinkAC(WinkDevice, ClimateDevice): @property def fan_list(self): - """List of available fan modes.""" + """Return a list of available fan modes.""" return [SPEED_LOW, SPEED_MEDIUM, SPEED_HIGH] def set_fan_mode(self, mode): diff --git a/homeassistant/components/climate/zwave.py b/homeassistant/components/climate/zwave.py index a0fe3ce4c11..949bd10e0c2 100755 --- a/homeassistant/components/climate/zwave.py +++ b/homeassistant/components/climate/zwave.py @@ -33,7 +33,7 @@ DEVICE_MAPPINGS = { def get_device(hass, values, **kwargs): - """Create zwave entity device.""" + """Create Z-Wave entity device.""" temp_unit = hass.config.units.temperature_unit return ZWaveClimate(values, temp_unit) @@ -65,13 +65,13 @@ class ZWaveClimate(ZWaveDeviceEntity, ClimateDevice): int(self.node.product_id, 16)) if specific_sensor_key in DEVICE_MAPPINGS: if DEVICE_MAPPINGS[specific_sensor_key] == WORKAROUND_ZXT_120: - _LOGGER.debug("Remotec ZXT-120 Zwave Thermostat" - " workaround") + _LOGGER.debug( + "Remotec ZXT-120 Zwave Thermostat workaround") self._zxt_120 = 1 self.update_properties() def update_properties(self): - """Callback on data changes for node values.""" + """Handle the data changes for node values.""" # Operation Mode if self.values.mode: self._current_operation = self.values.mode.data @@ -134,7 +134,7 @@ class ZWaveClimate(ZWaveDeviceEntity, ClimateDevice): @property def fan_list(self): - """List of available fan modes.""" + """Return a list of available fan modes.""" return self._fan_list @property @@ -144,7 +144,7 @@ class ZWaveClimate(ZWaveDeviceEntity, ClimateDevice): @property def swing_list(self): - """List of available swing modes.""" + """Return a list of available swing modes.""" return self._swing_list @property @@ -169,7 +169,7 @@ class ZWaveClimate(ZWaveDeviceEntity, ClimateDevice): @property def operation_list(self): - """List of available operation modes.""" + """Return a list of available operation modes.""" return self._operation_list @property diff --git a/homeassistant/components/config/__init__.py b/homeassistant/components/config/__init__.py index ab175d1d56f..1255043b6b5 100644 --- a/homeassistant/components/config/__init__.py +++ b/homeassistant/components/config/__init__.py @@ -20,14 +20,14 @@ ON_DEMAND = ('zwave', ) @asyncio.coroutine def async_setup(hass, config): - """Setup the config component.""" + """Set up the config component.""" register_built_in_panel(hass, 'config', 'Configuration', 'mdi:settings') @asyncio.coroutine def setup_panel(panel_name): - """Setup a panel.""" - panel = yield from async_prepare_setup_platform(hass, config, DOMAIN, - panel_name) + """Set up a panel.""" + panel = yield from async_prepare_setup_platform( + hass, config, DOMAIN, panel_name) if not panel: return diff --git a/homeassistant/components/config/core.py b/homeassistant/components/config/core.py index 15456ee74ad..4ff530ad2bc 100644 --- a/homeassistant/components/config/core.py +++ b/homeassistant/components/config/core.py @@ -7,7 +7,7 @@ from homeassistant.config import async_check_ha_config_file @asyncio.coroutine def async_setup(hass): - """Setup the hassbian config.""" + """Set up the Hassbian config.""" hass.http.register_view(CheckConfigView) return True @@ -20,7 +20,7 @@ class CheckConfigView(HomeAssistantView): @asyncio.coroutine def post(self, request): - """Validate config and return results.""" + """Validate configuration and return results.""" errors = yield from async_check_ha_config_file(request.app['hass']) state = 'invalid' if errors else 'valid' diff --git a/homeassistant/components/config/group.py b/homeassistant/components/config/group.py index 5c0fd23300e..16e1900c645 100644 --- a/homeassistant/components/config/group.py +++ b/homeassistant/components/config/group.py @@ -11,9 +11,8 @@ CONFIG_PATH = 'groups.yaml' @asyncio.coroutine def async_setup(hass): - """Setup the Group config API.""" + """Set up the Group config API.""" hass.http.register_view(EditKeyBasedConfigView( - 'group', 'config', CONFIG_PATH, cv.slug, - GROUP_SCHEMA + 'group', 'config', CONFIG_PATH, cv.slug, GROUP_SCHEMA )) return True diff --git a/homeassistant/components/config/hassbian.py b/homeassistant/components/config/hassbian.py index e94d6d25b90..8de5f62d915 100644 --- a/homeassistant/components/config/hassbian.py +++ b/homeassistant/components/config/hassbian.py @@ -32,8 +32,8 @@ _TEST_OUTPUT = """ @asyncio.coroutine def async_setup(hass): - """Setup the hassbian config.""" - # Test if is hassbian + """Set up the Hassbian config.""" + # Test if is Hassbian test_mode = 'FORCE_HASSBIAN' in os.environ is_hassbian = test_mode @@ -49,7 +49,7 @@ def async_setup(hass): @asyncio.coroutine def hassbian_status(hass, test_mode=False): """Query for the Hassbian status.""" - # fetch real output when not in test mode + # Fetch real output when not in test mode if test_mode: return json.loads(_TEST_OUTPUT) diff --git a/homeassistant/components/config/zwave.py b/homeassistant/components/config/zwave.py index 5eca596c8f4..576ff09bf2b 100644 --- a/homeassistant/components/config/zwave.py +++ b/homeassistant/components/config/zwave.py @@ -11,7 +11,7 @@ CONFIG_PATH = 'zwave_device_config.yaml' @asyncio.coroutine def async_setup(hass): - """Setup the Z-Wave config API.""" + """Set up the Z-Wave config API.""" hass.http.register_view(EditKeyBasedConfigView( 'zwave', 'device_config', CONFIG_PATH, cv.entity_id, DEVICE_CONFIG_SCHEMA_ENTRY diff --git a/homeassistant/components/configurator.py b/homeassistant/components/configurator.py index 3376815b9d5..c37f07956e4 100644 --- a/homeassistant/components/configurator.py +++ b/homeassistant/components/configurator.py @@ -75,7 +75,7 @@ def request_done(request_id): @asyncio.coroutine def async_setup(hass, config): - """Setup the configurator component.""" + """Set up the configurator component.""" return True @@ -104,7 +104,7 @@ class Configurator(object): self, name, callback, description, description_image, submit_caption, fields, link_name, link_url, entity_picture): - """Setup a request for configuration.""" + """Set up a request for configuration.""" entity_id = generate_entity_id(ENTITY_ID_FORMAT, name, hass=self.hass) if fields is None: diff --git a/homeassistant/components/cover/__init__.py b/homeassistant/components/cover/__init__.py index c857793f579..bbee0e836a3 100644 --- a/homeassistant/components/cover/__init__.py +++ b/homeassistant/components/cover/__init__.py @@ -24,6 +24,7 @@ from homeassistant.const import ( SERVICE_STOP_COVER_TILT, SERVICE_SET_COVER_TILT_POSITION, STATE_OPEN, STATE_CLOSED, STATE_UNKNOWN, ATTR_ENTITY_ID) +_LOGGER = logging.getLogger(__name__) DOMAIN = 'cover' SCAN_INTERVAL = timedelta(seconds=15) @@ -47,8 +48,6 @@ SUPPORT_CLOSE_TILT = 32 SUPPORT_STOP_TILT = 64 SUPPORT_SET_TILT_POSITION = 128 -_LOGGER = logging.getLogger(__name__) - ATTR_CURRENT_POSITION = 'current_position' ATTR_CURRENT_TILT_POSITION = 'current_tilt_position' ATTR_POSITION = 'position' diff --git a/homeassistant/components/cover/command_line.py b/homeassistant/components/cover/command_line.py index 778496ec6fc..cd48238cae9 100644 --- a/homeassistant/components/cover/command_line.py +++ b/homeassistant/components/cover/command_line.py @@ -32,7 +32,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup cover controlled by shell commands.""" + """Set up cover controlled by shell commands.""" devices = config.get(CONF_COVERS, {}) covers = [] @@ -78,25 +78,25 @@ class CommandCover(CoverDevice): @staticmethod def _move_cover(command): """Execute the actual commands.""" - _LOGGER.info('Running command: %s', command) + _LOGGER.info("Running command: %s", command) success = (subprocess.call(command, shell=True) == 0) if not success: - _LOGGER.error('Command failed: %s', command) + _LOGGER.error("Command failed: %s", command) return success @staticmethod def _query_state_value(command): """Execute state command for return value.""" - _LOGGER.info('Running state command: %s', command) + _LOGGER.info("Running state command: %s", command) try: return_value = subprocess.check_output(command, shell=True) return return_value.strip().decode('utf-8') except subprocess.CalledProcessError: - _LOGGER.error('Command failed: %s', command) + _LOGGER.error("Command failed: %s", command) @property def should_poll(self): @@ -128,7 +128,7 @@ class CommandCover(CoverDevice): def _query_state(self): """Query for the state.""" if not self._command_state: - _LOGGER.error('No state command specified') + _LOGGER.error("No state command specified") return return self._query_state_value(self._command_state) diff --git a/homeassistant/components/cover/demo.py b/homeassistant/components/cover/demo.py index 8a8a675703a..35574150596 100644 --- a/homeassistant/components/cover/demo.py +++ b/homeassistant/components/cover/demo.py @@ -10,7 +10,7 @@ from homeassistant.helpers.event import track_utc_time_change def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the Demo covers.""" + """Set up the Demo covers.""" add_devices([ DemoCover(hass, 'Kitchen Window'), DemoCover(hass, 'Hall Window', 10), diff --git a/homeassistant/components/cover/homematic.py b/homeassistant/components/cover/homematic.py index 8420b8b47e3..ace08f53e3c 100644 --- a/homeassistant/components/cover/homematic.py +++ b/homeassistant/components/cover/homematic.py @@ -3,11 +3,7 @@ The homematic cover platform. For more details about this platform, please refer to the documentation at https://home-assistant.io/components/cover.homematic/ - -Important: For this platform to work the homematic component has to be -properly configured. """ - import logging from homeassistant.const import STATE_UNKNOWN from homeassistant.components.cover import CoverDevice, ATTR_POSITION @@ -19,7 +15,7 @@ DEPENDENCIES = ['homematic'] def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the platform.""" + """Set up the platform.""" if discovery_info is None: return @@ -33,7 +29,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None): class HMCover(HMDevice, CoverDevice): - """Represents a Homematic Cover in Home Assistant.""" + """Representation a Homematic Cover.""" @property def current_cover_position(self): diff --git a/homeassistant/components/cover/isy994.py b/homeassistant/components/cover/isy994.py index 27619de738d..1e83038278c 100644 --- a/homeassistant/components/cover/isy994.py +++ b/homeassistant/components/cover/isy994.py @@ -12,7 +12,6 @@ import homeassistant.components.isy994 as isy from homeassistant.const import STATE_OPEN, STATE_CLOSED, STATE_UNKNOWN from homeassistant.helpers.typing import ConfigType - _LOGGER = logging.getLogger(__name__) VALUE_TO_STATE = { @@ -27,15 +26,14 @@ STATES = [STATE_OPEN, STATE_CLOSED, 'closing', 'opening', 'stopped'] # pylint: disable=unused-argument def setup_platform(hass, config: ConfigType, add_devices: Callable[[list], None], discovery_info=None): - """Setup the ISY994 cover platform.""" + """Set up the ISY994 cover platform.""" if isy.ISY is None or not isy.ISY.connected: - _LOGGER.error('A connection has not been made to the ISY controller.') + _LOGGER.error("A connection has not been made to the ISY controller") return False devices = [] - for node in isy.filter_nodes(isy.NODES, units=UOM, - states=STATES): + for node in isy.filter_nodes(isy.NODES, units=UOM, states=STATES): devices.append(ISYCoverDevice(node)) for program in isy.PROGRAMS.get(DOMAIN, []): @@ -60,7 +58,7 @@ class ISYCoverDevice(isy.ISYDevice, CoverDevice): @property def current_cover_position(self) -> int: - """Get the current cover position.""" + """Return the current cover position.""" return sorted((0, self.value, 100))[1] @property @@ -76,12 +74,12 @@ class ISYCoverDevice(isy.ISYDevice, CoverDevice): def open_cover(self, **kwargs) -> None: """Send the open cover command to the ISY994 cover device.""" if not self._node.on(val=100): - _LOGGER.error('Unable to open the cover') + _LOGGER.error("Unable to open the cover") def close_cover(self, **kwargs) -> None: """Send the close cover command to the ISY994 cover device.""" if not self._node.off(): - _LOGGER.error('Unable to close the cover') + _LOGGER.error("Unable to close the cover") class ISYCoverProgram(ISYCoverDevice): @@ -101,9 +99,9 @@ class ISYCoverProgram(ISYCoverDevice): def open_cover(self, **kwargs) -> None: """Send the open cover command to the ISY994 cover program.""" if not self._actions.runThen(): - _LOGGER.error('Unable to open the cover') + _LOGGER.error("Unable to open the cover") def close_cover(self, **kwargs) -> None: """Send the close cover command to the ISY994 cover program.""" if not self._actions.runElse(): - _LOGGER.error('Unable to close the cover') + _LOGGER.error("Unable to close the cover") diff --git a/homeassistant/components/cover/mqtt.py b/homeassistant/components/cover/mqtt.py index 6403e0bbc85..575dc4cb345 100644 --- a/homeassistant/components/cover/mqtt.py +++ b/homeassistant/components/cover/mqtt.py @@ -49,7 +49,7 @@ PLATFORM_SCHEMA = mqtt.MQTT_RW_PLATFORM_SCHEMA.extend({ @asyncio.coroutine def async_setup_platform(hass, config, async_add_devices, discovery_info=None): - """Setup the MQTT Cover.""" + """Set up the MQTT Cover.""" value_template = config.get(CONF_VALUE_TEMPLATE) if value_template is not None: value_template.hass = hass @@ -94,13 +94,13 @@ class MqttCover(CoverDevice): @asyncio.coroutine def async_added_to_hass(self): - """Subscribe mqtt events. + """Subscribe MQTT events. This method is a coroutine. """ @callback def message_received(topic, payload, qos): - """A new MQTT message has been received.""" + """Handle new MQTT message.""" if self._template is not None: payload = self._template.async_render_with_possible_json_value( payload) diff --git a/homeassistant/components/cover/myq.py b/homeassistant/components/cover/myq.py index b749fde465f..06ec7ca6211 100644 --- a/homeassistant/components/cover/myq.py +++ b/homeassistant/components/cover/myq.py @@ -27,7 +27,7 @@ DEFAULT_NAME = 'myq' def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the MyQ component.""" + """Set up the MyQ component.""" from pymyq import MyQAPI as pymyq username = config.get(CONF_USERNAME) @@ -39,17 +39,17 @@ def setup_platform(hass, config, add_devices, discovery_info=None): myq = pymyq(username, password, brand) if not myq.is_supported_brand(): - logger.error('MyQ Cover - Unsupported Type. See documentation') + logger.error("Unsupported type. See documentation") return if not myq.is_login_valid(): - logger.error('MyQ Cover - Username or Password is incorrect') + logger.error("Username or Password is incorrect") return try: add_devices(MyQDevice(myq, door) for door in myq.get_garage_doors()) except (TypeError, KeyError, NameError) as ex: - logger.error("MyQ Cover - %s", ex) + logger.error("%s", ex) class MyQDevice(CoverDevice): @@ -74,7 +74,7 @@ class MyQDevice(CoverDevice): @property def is_closed(self): - """Return True if cover is closed, else False.""" + """Return true if cover is closed, else False.""" return self._status == STATE_CLOSED def close_cover(self): diff --git a/homeassistant/components/cover/mysensors.py b/homeassistant/components/cover/mysensors.py index 7daadebadad..43942dacd05 100644 --- a/homeassistant/components/cover/mysensors.py +++ b/homeassistant/components/cover/mysensors.py @@ -11,11 +11,12 @@ from homeassistant.components.cover import CoverDevice, ATTR_POSITION from homeassistant.const import STATE_ON, STATE_OFF _LOGGER = logging.getLogger(__name__) + DEPENDENCIES = [] def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the mysensors platform for covers.""" + """Set up the MySensors platform for covers.""" if discovery_info is None: return diff --git a/homeassistant/components/cover/rfxtrx.py b/homeassistant/components/cover/rfxtrx.py index a016103a8fd..0e28d3ef701 100644 --- a/homeassistant/components/cover/rfxtrx.py +++ b/homeassistant/components/cover/rfxtrx.py @@ -4,7 +4,6 @@ Support for RFXtrx cover components. For more details about this platform, please refer to the documentation https://home-assistant.io/components/cover.rfxtrx/ """ - import homeassistant.components.rfxtrx as rfxtrx from homeassistant.components.cover import CoverDevice @@ -14,16 +13,14 @@ PLATFORM_SCHEMA = rfxtrx.DEFAULT_SCHEMA def setup_platform(hass, config, add_devices_callback, discovery_info=None): - """Setup the RFXtrx cover.""" + """Set up the RFXtrx cover.""" import RFXtrx as rfxtrxmod - # Add cover from config file - covers = rfxtrx.get_devices_from_config(config, - RfxtrxCover) + covers = rfxtrx.get_devices_from_config(config, RfxtrxCover) add_devices_callback(covers) def cover_update(event): - """Callback for cover updates from the RFXtrx gateway.""" + """Handle cover updates from the RFXtrx gateway.""" if not isinstance(event.device, rfxtrxmod.LightingDevice) or \ event.device.known_to_be_dimmable or \ not event.device.known_to_be_rollershutter: @@ -35,17 +32,17 @@ def setup_platform(hass, config, add_devices_callback, discovery_info=None): rfxtrx.apply_received_command(event) - # Subscribe to main rfxtrx events + # Subscribe to main RFXtrx events if cover_update not in rfxtrx.RECEIVED_EVT_SUBSCRIBERS: rfxtrx.RECEIVED_EVT_SUBSCRIBERS.append(cover_update) class RfxtrxCover(rfxtrx.RfxtrxDevice, CoverDevice): - """Representation of an rfxtrx cover.""" + """Representation of a RFXtrx cover.""" @property def should_poll(self): - """No polling available in rfxtrx cover.""" + """No polling available in RFXtrx cover.""" return False @property diff --git a/homeassistant/components/cover/rpi_gpio.py b/homeassistant/components/cover/rpi_gpio.py index 4cd4e74be06..07be998035c 100644 --- a/homeassistant/components/cover/rpi_gpio.py +++ b/homeassistant/components/cover/rpi_gpio.py @@ -1,5 +1,5 @@ """ -Support for building a Raspberry Pi cover in HA. +Support for controlling a Raspberry Pi cover. Instructions for building the controller can be found here https://github.com/andrewshilliday/garage-door-controller @@ -50,7 +50,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ # pylint: disable=unused-argument def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the RPi cover platform.""" + """Set up the RPi cover platform.""" relay_time = config.get(CONF_RELAY_TIME) state_pull_mode = config.get(CONF_STATE_PULL_MODE) covers = [] diff --git a/homeassistant/components/cover/scsgate.py b/homeassistant/components/cover/scsgate.py index f2047b03230..ac4fddf98bb 100644 --- a/homeassistant/components/cover/scsgate.py +++ b/homeassistant/components/cover/scsgate.py @@ -23,7 +23,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the SCSGate cover.""" + """Set up the SCSGate cover.""" devices = config.get(CONF_DEVICES) covers = [] logger = logging.getLogger(__name__) diff --git a/homeassistant/components/cover/tellduslive.py b/homeassistant/components/cover/tellduslive.py index c48a14e9133..4a78cb96d06 100644 --- a/homeassistant/components/cover/tellduslive.py +++ b/homeassistant/components/cover/tellduslive.py @@ -5,7 +5,6 @@ This platform uses the Telldus Live online service. For more details about this platform, please refer to the documentation at https://home-assistant.io/components/cover.tellduslive/ - """ import logging @@ -16,9 +15,10 @@ _LOGGER = logging.getLogger(__name__) def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup covers.""" + """Set up the Telldus Live covers.""" if discovery_info is None: return + add_devices(TelldusLiveCover(hass, cover) for cover in discovery_info) diff --git a/homeassistant/components/cover/vera.py b/homeassistant/components/cover/vera.py index 033cea4a828..bcccf17da8a 100644 --- a/homeassistant/components/cover/vera.py +++ b/homeassistant/components/cover/vera.py @@ -16,14 +16,14 @@ _LOGGER = logging.getLogger(__name__) def setup_platform(hass, config, add_devices, discovery_info=None): - """Find and return Vera covers.""" + """Set up the Vera covers.""" add_devices( VeraCover(device, VERA_CONTROLLER) for device in VERA_DEVICES['cover']) class VeraCover(VeraDevice, CoverDevice): - """Represents a Vera Cover in Home Assistant.""" + """Representation a Vera Cover.""" def __init__(self, vera_device, controller): """Initialize the Vera device.""" diff --git a/homeassistant/components/cover/wink.py b/homeassistant/components/cover/wink.py index 79e2ee334dc..5472180db62 100644 --- a/homeassistant/components/cover/wink.py +++ b/homeassistant/components/cover/wink.py @@ -4,7 +4,6 @@ Support for Wink Covers. For more details about this platform, please refer to the documentation at https://home-assistant.io/components/cover.wink/ """ - from homeassistant.components.cover import CoverDevice from homeassistant.components.wink import WinkDevice, DOMAIN @@ -12,7 +11,7 @@ DEPENDENCIES = ['wink'] def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the Wink cover platform.""" + """Set up the Wink cover platform.""" import pywink for shade in pywink.get_shades(): diff --git a/homeassistant/components/cover/zwave.py b/homeassistant/components/cover/zwave.py index f860e52de95..71194d12bba 100644 --- a/homeassistant/components/cover/zwave.py +++ b/homeassistant/components/cover/zwave.py @@ -1,5 +1,5 @@ """ -Support for Zwave cover components. +Support for Z-Wave cover components. For more details about this platform, please refer to the documentation https://home-assistant.io/components/cover.zwave/ @@ -21,7 +21,7 @@ SUPPORT_GARAGE = SUPPORT_OPEN | SUPPORT_CLOSE def get_device(hass, values, node_config, **kwargs): - """Create zwave entity device.""" + """Create Z-Wave entity device.""" invert_buttons = node_config.get(zwave.CONF_INVERT_OPENCLOSE_BUTTONS) if (values.primary.command_class == zwave.const.COMMAND_CLASS_SWITCH_MULTILEVEL @@ -35,10 +35,10 @@ def get_device(hass, values, node_config, **kwargs): class ZwaveRollershutter(zwave.ZWaveDeviceEntity, CoverDevice): - """Representation of an Zwave roller shutter.""" + """Representation of an Z-Wave cover.""" def __init__(self, hass, values, invert_buttons): - """Initialize the zwave rollershutter.""" + """Initialize the Z-Wave rollershutter.""" ZWaveDeviceEntity.__init__(self, values, DOMAIN) # pylint: disable=no-member self._network = hass.data[zwave.ZWAVE_NETWORK] @@ -53,7 +53,7 @@ class ZwaveRollershutter(zwave.ZWaveDeviceEntity, CoverDevice): self.update_properties() def update_properties(self): - """Callback on data changes for node values.""" + """Handle data changes for node values.""" # Position value self._current_position = self.values.primary.data diff --git a/homeassistant/components/demo.py b/homeassistant/components/demo.py index 6212567f3d7..f926d059db2 100644 --- a/homeassistant/components/demo.py +++ b/homeassistant/components/demo.py @@ -1,5 +1,5 @@ """ -Sets up a demo environment that mimics interaction with devices. +Set up the demo environment that mimics interaction with devices. For more details about this component, please refer to the documentation https://home-assistant.io/components/demo/ @@ -37,7 +37,7 @@ COMPONENTS_WITH_DEMO_PLATFORM = [ @asyncio.coroutine def async_setup(hass, config): - """Setup a demo environment.""" + """Set up the demo environment.""" group = loader.get_component('group') configurator = loader.get_component('configurator') persistent_notification = loader.get_component('persistent_notification') @@ -59,7 +59,7 @@ def async_setup(hass, config): bootstrap.async_setup_component(hass, 'sun') ] - # Setup demo platforms + # Set up demo platforms demo_config = config.copy() for component in COMPONENTS_WITH_DEMO_PLATFORM: demo_config[component] = {CONF_PLATFORM: 'demo'} @@ -106,19 +106,19 @@ def async_setup(hass, config): if any(not result for result in results): return False - # Setup example persistent notification + # Set up example persistent notification persistent_notification.async_create( hass, 'This is an example of a persistent notification.', title='Example Notification') - # Setup room groups + # Set up room groups lights = sorted(hass.states.async_entity_ids('light')) switches = sorted(hass.states.async_entity_ids('switch')) media_players = sorted(hass.states.async_entity_ids('media_player')) tasks2 = [] - # Setup scripts + # Set up scripts tasks2.append(bootstrap.async_setup_component( hass, 'script', {'script': { @@ -140,7 +140,7 @@ def async_setup(hass, config): }] }}})) - # Setup scenes + # Set up scenes tasks2.append(bootstrap.async_setup_component( hass, 'scene', {'scene': [ @@ -186,7 +186,7 @@ def async_setup(hass, config): if any(not result for result in results): return False - # Setup configurator + # Set up configurator configurator_ids = [] def hue_configuration_callback(data): @@ -204,7 +204,7 @@ def async_setup(hass, config): configurator.request_done(configurator_ids[0]) def setup_configurator(): - """Setup configurator.""" + """Set up a configurator.""" request_id = configurator.request_config( hass, "Philips Hue", hue_configuration_callback, description=("Press the button on the bridge to register Philips " diff --git a/homeassistant/components/device_sun_light_trigger.py b/homeassistant/components/device_sun_light_trigger.py index 0a4d7173c20..8831008e0ab 100644 --- a/homeassistant/components/device_sun_light_trigger.py +++ b/homeassistant/components/device_sun_light_trigger.py @@ -45,7 +45,7 @@ CONFIG_SCHEMA = vol.Schema({ @asyncio.coroutine def async_setup(hass, config): - """The triggers to turn lights on or off based on device presence.""" + """Set up the triggers to control lights based on device presence.""" logger = logging.getLogger(__name__) device_tracker = get_component('device_tracker') group = get_component('group') @@ -55,10 +55,10 @@ def async_setup(hass, config): disable_turn_off = conf.get(CONF_DISABLE_TURN_OFF) light_group = conf.get(CONF_LIGHT_GROUP, light.ENTITY_ID_ALL_LIGHTS) light_profile = conf.get(CONF_LIGHT_PROFILE) - device_group = conf.get(CONF_DEVICE_GROUP, - device_tracker.ENTITY_ID_ALL_DEVICES) - device_entity_ids = group.get_entity_ids(hass, device_group, - device_tracker.DOMAIN) + device_group = conf.get( + CONF_DEVICE_GROUP, device_tracker.ENTITY_ID_ALL_DEVICES) + device_entity_ids = group.get_entity_ids( + hass, device_group, device_tracker.DOMAIN) if not device_entity_ids: logger.error("No devices found to track") @@ -84,7 +84,7 @@ def async_setup(hass, config): return next_setting - LIGHT_TRANSITION_TIME * len(light_ids) def async_turn_on_before_sunset(light_id): - """Helper function to turn on lights.""" + """Function to turn on lights.""" if not device_tracker.is_on(hass) or light.is_on(hass, light_id): return light.async_turn_on(hass, light_id, diff --git a/homeassistant/components/device_tracker/__init__.py b/homeassistant/components/device_tracker/__init__.py index c654ab05266..6582ba3f57e 100644 --- a/homeassistant/components/device_tracker/__init__.py +++ b/homeassistant/components/device_tracker/__init__.py @@ -34,7 +34,7 @@ from homeassistant.util.yaml import dump from homeassistant.helpers.event import async_track_utc_time_change from homeassistant.const import ( - ATTR_GPS_ACCURACY, ATTR_LATITUDE, ATTR_LONGITUDE, + ATTR_GPS_ACCURACY, ATTR_LATITUDE, ATTR_LONGITUDE, CONF_NAME, CONF_MAC, DEVICE_DEFAULT_NAME, STATE_HOME, STATE_NOT_HOME, ATTR_ENTITY_ID) _LOGGER = logging.getLogger(__name__) @@ -65,13 +65,14 @@ EVENT_NEW_DEVICE = 'device_tracker_new_device' SERVICE_SEE = 'see' -ATTR_MAC = 'mac' +ATTR_ATTRIBUTES = 'attributes' +ATTR_BATTERY = 'battery' ATTR_DEV_ID = 'dev_id' +ATTR_GPS = 'gps' ATTR_HOST_NAME = 'host_name' ATTR_LOCATION_NAME = 'location_name' -ATTR_GPS = 'gps' -ATTR_BATTERY = 'battery' -ATTR_ATTRIBUTES = 'attributes' +ATTR_MAC = 'mac' +ATTR_NAME = 'name' ATTR_SOURCE_TYPE = 'source_type' SOURCE_TYPE_GPS = 'gps' @@ -117,7 +118,7 @@ def see(hass: HomeAssistantType, mac: str=None, dev_id: str=None, @asyncio.coroutine def async_setup(hass: HomeAssistantType, config: ConfigType): - """Setup device tracker.""" + """Set up the device tracker.""" yaml_path = hass.config.path(YAML_DEVICES) try: @@ -135,7 +136,7 @@ def async_setup(hass: HomeAssistantType, config: ConfigType): @asyncio.coroutine def async_setup_platform(p_type, p_config, disc_info=None): - """Setup a device tracker platform.""" + """Set up a device tracker platform.""" platform = yield from async_prepare_setup_platform( hass, config, DOMAIN, p_type) if platform is None: @@ -167,11 +168,11 @@ def async_setup(hass: HomeAssistantType, config: ConfigType): return if not setup: - _LOGGER.error('Error setting up platform %s', p_type) + _LOGGER.error("Error setting up platform %s", p_type) return except Exception: # pylint: disable=broad-except - _LOGGER.exception('Error setting up platform %s', p_type) + _LOGGER.exception("Error setting up platform %s", p_type) setup_tasks = [async_setup_platform(p_type, p_config) for p_type, p_config in config_per_platform(config, DOMAIN)] @@ -182,7 +183,7 @@ def async_setup(hass: HomeAssistantType, config: ConfigType): @callback def async_device_tracker_discovered(service, info): - """Called when a device tracker platform is discovered.""" + """Handle the discovery of device tracker platforms.""" hass.async_add_job( async_setup_platform(DISCOVERY_PLATFORMS[service], {}, info)) @@ -191,7 +192,7 @@ def async_setup(hass: HomeAssistantType, config: ConfigType): @asyncio.coroutine def async_platform_discovered(platform, info): - """Callback to load a platform.""" + """Load a platform.""" yield from async_setup_platform(platform, {}, disc_info=info) discovery.async_listen_platform(hass, DOMAIN, async_platform_discovered) @@ -272,9 +273,9 @@ class DeviceTracker(object): device = self.devices.get(dev_id) if device: - yield from device.async_seen(host_name, location_name, gps, - gps_accuracy, battery, attributes, - source_type) + yield from device.async_seen( + host_name, location_name, gps, gps_accuracy, battery, + attributes, source_type) if device.track: yield from device.async_update_ha_state() return @@ -288,9 +289,9 @@ class DeviceTracker(object): if mac is not None: self.mac_to_dev[mac] = device - yield from device.async_seen(host_name, location_name, gps, - gps_accuracy, battery, attributes, - source_type) + yield from device.async_seen( + host_name, location_name, gps, gps_accuracy, battery, attributes, + source_type) if device.track: yield from device.async_update_ha_state() @@ -310,8 +311,8 @@ class DeviceTracker(object): # update known_devices.yaml self.hass.async_add_job( - self.async_update_config(self.hass.config.path(YAML_DEVICES), - dev_id, device) + self.async_update_config( + self.hass.config.path(YAML_DEVICES), dev_id, device) ) @asyncio.coroutine @@ -349,7 +350,7 @@ class DeviceTracker(object): @asyncio.coroutine def async_setup_tracked_device(self): - """Setup all not exists tracked devices. + """Set up all not exists tracked devices. This method is a coroutine. """ @@ -486,8 +487,8 @@ class Device(Entity): except (ValueError, TypeError, IndexError): self.gps = None self.gps_accuracy = 0 - _LOGGER.warning('Could not parse gps value for %s: %s', - self.dev_id, gps) + _LOGGER.warning( + "Could not parse gps value for %s: %s", self.dev_id, gps) # pylint: disable=not-an-iterable yield from self.async_update() @@ -535,7 +536,6 @@ class Device(Entity): @asyncio.coroutine def get_vendor_for_mac(self): """Try to find the vendor string for a given MAC address.""" - # can't continue without a mac if not self.mac: return None @@ -544,11 +544,10 @@ class Device(Entity): else: mac = self.mac - # prevent lookup of invalid macs if not len(mac.split(':')) == 6: return 'unknown' - # we only need the first 3 bytes of the mac for a lookup + # We only need the first 3 bytes of the MAC for a lookup # this improves somewhat on privacy oui_bytes = mac.split(':')[0:3] # bytes like 00 get truncates to 0, API needs full bytes @@ -563,7 +562,7 @@ class Device(Entity): if resp.status == 200: vendor_string = yield from resp.text() return vendor_string - # if vendor is not known to the API (404) or there + # If vendor is not known to the API (404) or there # was a failure during the lookup (500); set vendor # to something other then None to prevent retry # as the value is only relevant when it is to be stored @@ -571,12 +570,12 @@ class Device(Entity): # the first time the device is seen. return 'unknown' except (asyncio.TimeoutError, aiohttp.ClientError): - # same as above + # Same as above return 'unknown' @asyncio.coroutine def async_added_to_hass(self): - """Called when entity about to be added to hass.""" + """Add an entity.""" state = yield from async_get_last_state(self.hass, self.entity_id) if not state: return @@ -637,10 +636,10 @@ def async_load_config(path: str, hass: HomeAssistantType, This method is a coroutine. """ dev_schema = vol.Schema({ - vol.Required('name'): cv.string, + vol.Required(CONF_NAME): cv.string, vol.Optional('track', default=False): cv.boolean, - vol.Optional('mac', default=None): vol.Any(None, vol.All(cv.string, - vol.Upper)), + vol.Optional(CONF_MAC, default=None): + vol.Any(None, vol.All(cv.string, vol.Upper)), vol.Optional(CONF_AWAY_HIDE, default=DEFAULT_AWAY_HIDE): cv.boolean, vol.Optional('gravatar', default=None): vol.Any(None, cv.string), vol.Optional('picture', default=None): vol.Any(None, cv.string), @@ -654,7 +653,7 @@ def async_load_config(path: str, hass: HomeAssistantType, devices = yield from hass.loop.run_in_executor( None, load_yaml_config_file, path) except HomeAssistantError as err: - _LOGGER.error('Unable to load %s: %s', path, str(err)) + _LOGGER.error("Unable to load %s: %s", path, str(err)) return [] for dev_id, device in devices.items(): @@ -675,7 +674,7 @@ def async_load_config(path: str, hass: HomeAssistantType, def async_setup_scanner_platform(hass: HomeAssistantType, config: ConfigType, scanner: Any, async_see_device: Callable, platform: str): - """Helper method to connect scanner-based platform to device tracker. + """Set up the connect scanner-based platform to device tracker. This method must be run in the event loop. """ @@ -688,7 +687,7 @@ def async_setup_scanner_platform(hass: HomeAssistantType, config: ConfigType, @asyncio.coroutine def async_device_tracker_scan(now: dt_util.dt.datetime): - """Called when interval matches.""" + """Handle interval matches.""" if update_lock.locked(): _LOGGER.warning( "Updating device list from %s took longer than the scheduled " @@ -727,8 +726,8 @@ def update_config(path: str, dev_id: str, device: Device): """Add device to YAML configuration file.""" with open(path, 'a') as out: device = {device.dev_id: { - 'name': device.name, - 'mac': device.mac, + ATTR_NAME: device.name, + ATTR_MAC: device.mac, 'picture': device.config_picture, 'track': device.track, CONF_AWAY_HIDE: device.away_hide, diff --git a/homeassistant/components/device_tracker/actiontec.py b/homeassistant/components/device_tracker/actiontec.py index 95286800b3c..882df575385 100644 --- a/homeassistant/components/device_tracker/actiontec.py +++ b/homeassistant/components/device_tracker/actiontec.py @@ -19,7 +19,6 @@ from homeassistant.components.device_tracker import ( from homeassistant.const import CONF_HOST, CONF_PASSWORD, CONF_USERNAME from homeassistant.util import Throttle -# Return cached results if last scan was less then this time ago. MIN_TIME_BETWEEN_SCANS = timedelta(seconds=5) _LOGGER = logging.getLogger(__name__) @@ -44,7 +43,7 @@ def get_scanner(hass, config): return scanner if scanner.success_init else None -Device = namedtuple("Device", ["mac", "ip", "last_update"]) +Device = namedtuple('Device', ['mac', 'ip', 'last_update']) class ActiontecDeviceScanner(DeviceScanner): @@ -59,7 +58,7 @@ class ActiontecDeviceScanner(DeviceScanner): self.last_results = [] data = self.get_actiontec_data() self.success_init = data is not None - _LOGGER.info("actiontec scanner initialized") + _LOGGER.info("canner initialized") def scan_devices(self): """Scan for new devices and return a list with found device IDs.""" @@ -93,7 +92,7 @@ class ActiontecDeviceScanner(DeviceScanner): self.last_results = [Device(data['mac'], name, now) for name, data in actiontec_data.items() if data['timevalid'] > -60] - _LOGGER.info("actiontec scan successful") + _LOGGER.info("Scan successful") return True def get_actiontec_data(self): @@ -115,8 +114,7 @@ class ActiontecDeviceScanner(DeviceScanner): _LOGGER.exception("Unexpected response from router") return except ConnectionRefusedError: - _LOGGER.exception("Connection refused by router," + - " is telnet enabled?") + _LOGGER.exception("Connection refused by router. Telnet enabled?") return None devices = {} diff --git a/homeassistant/components/device_tracker/aruba.py b/homeassistant/components/device_tracker/aruba.py index 42e8a5b2d5c..bfb1588b323 100644 --- a/homeassistant/components/device_tracker/aruba.py +++ b/homeassistant/components/device_tracker/aruba.py @@ -17,11 +17,11 @@ from homeassistant.components.device_tracker import ( from homeassistant.const import CONF_HOST, CONF_PASSWORD, CONF_USERNAME from homeassistant.util import Throttle -# Return cached results if last scan was less then this time ago -MIN_TIME_BETWEEN_SCANS = timedelta(seconds=10) +_LOGGER = logging.getLogger(__name__) REQUIREMENTS = ['pexpect==4.0.1'] -_LOGGER = logging.getLogger(__name__) + +MIN_TIME_BETWEEN_SCANS = timedelta(seconds=10) _DEVICES_REGEX = re.compile( r'(?P([^\s]+))\s+' + @@ -102,22 +102,22 @@ class ArubaDeviceScanner(DeviceScanner): 'Connection refused', 'Connection timed out'], timeout=120) if query == 1: - _LOGGER.error('Timeout') + _LOGGER.error("Timeout") return elif query == 2: - _LOGGER.error('Unexpected response from router') + _LOGGER.error("Unexpected response from router") return elif query == 3: ssh.sendline('yes') ssh.expect('password:') elif query == 4: - _LOGGER.error('Host key Changed') + _LOGGER.error("Host key changed") return elif query == 5: - _LOGGER.error('Connection refused by server') + _LOGGER.error("Connection refused by server") return elif query == 6: - _LOGGER.error('Connection timed out') + _LOGGER.error("Connection timed out") return ssh.sendline(self.password) ssh.expect('#') diff --git a/homeassistant/components/device_tracker/asuswrt.py b/homeassistant/components/device_tracker/asuswrt.py index 8ebc790ad3a..a0405b0b690 100644 --- a/homeassistant/components/device_tracker/asuswrt.py +++ b/homeassistant/components/device_tracker/asuswrt.py @@ -21,14 +21,19 @@ from homeassistant.const import ( from homeassistant.util import Throttle import homeassistant.helpers.config_validation as cv -# Return cached results if last scan was less then this time ago. +REQUIREMENTS = ['pexpect==4.0.1'] + +_LOGGER = logging.getLogger(__name__) + +CONF_MODE = 'mode' +CONF_PROTOCOL = 'protocol' +CONF_PUB_KEY = 'pub_key' +CONF_SSH_KEY = 'ssh_key' + +DEFAULT_SSH_PORT = 22 + MIN_TIME_BETWEEN_SCANS = timedelta(seconds=5) -CONF_PROTOCOL = 'protocol' -CONF_MODE = 'mode' -DEFAULT_SSH_PORT = 22 -CONF_SSH_KEY = 'ssh_key' -CONF_PUB_KEY = 'pub_key' SECRET_GROUP = 'Password or SSH Key' PLATFORM_SCHEMA = vol.All( @@ -47,9 +52,6 @@ PLATFORM_SCHEMA = vol.All( })) -_LOGGER = logging.getLogger(__name__) -REQUIREMENTS = ['pexpect==4.0.1'] - _LEASES_CMD = 'cat /var/lib/misc/dnsmasq.leases' _LEASES_REGEX = re.compile( r'\w+\s' + @@ -57,7 +59,7 @@ _LEASES_REGEX = re.compile( r'(?P([0-9]{1,3}[\.]){3}[0-9]{1,3})\s' + r'(?P([^\s]+))') -# command to get both 5GHz and 2.4GHz clients +# Command to get both 5GHz and 2.4GHz clients _WL_CMD = '{ wl -i eth2 assoclist & wl -i eth1 assoclist ; }' _WL_REGEX = re.compile( r'\w+\s' + @@ -126,12 +128,12 @@ class AsusWrtDeviceScanner(DeviceScanner): elif self.password: self.ssh_args['password'] = self.password else: - _LOGGER.error('No password or private key specified') + _LOGGER.error("No password or private key specified") self.success_init = False return else: if not self.password: - _LOGGER.error('No password specified') + _LOGGER.error("No password specified") self.success_init = False return @@ -188,10 +190,10 @@ class AsusWrtDeviceScanner(DeviceScanner): try: ssh.login(self.host, self.username, **self.ssh_args) except exceptions.EOF as err: - _LOGGER.error('Connection refused. Is SSH enabled?') + _LOGGER.error("Connection refused. SSH enabled?") return None except pxssh.ExceptionPxssh as err: - _LOGGER.error('Unable to connect via SSH: %s', str(err)) + _LOGGER.error("Unable to connect via SSH: %s", str(err)) return None try: @@ -218,7 +220,7 @@ class AsusWrtDeviceScanner(DeviceScanner): return AsusWrtResult(neighbors, leases_result, arp_result, nvram_result) except pxssh.ExceptionPxssh as exc: - _LOGGER.error('Unexpected response from router: %s', exc) + _LOGGER.error("Unexpected response from router: %s", exc) return None def telnet_connection(self): @@ -252,16 +254,16 @@ class AsusWrtDeviceScanner(DeviceScanner): return AsusWrtResult(neighbors, leases_result, arp_result, nvram_result) except EOFError: - _LOGGER.error('Unexpected response from router') + _LOGGER.error("Unexpected response from router") return None except ConnectionRefusedError: - _LOGGER.error('Connection refused by router, is telnet enabled?') + _LOGGER.error("Connection refused by router. Telnet enabled?") return None except socket.gaierror as exc: - _LOGGER.error('Socket exception: %s', exc) + _LOGGER.error("Socket exception: %s", exc) return None except OSError as exc: - _LOGGER.error('OSError: %s', exc) + _LOGGER.error("OSError: %s", exc) return None def get_asuswrt_data(self): @@ -289,7 +291,7 @@ class AsusWrtDeviceScanner(DeviceScanner): match = _WL_REGEX.search(lease.decode('utf-8')) if not match: - _LOGGER.warning('Could not parse wl row: %s', lease) + _LOGGER.warning("Could not parse wl row: %s", lease) continue host = '' @@ -301,7 +303,7 @@ class AsusWrtDeviceScanner(DeviceScanner): arp_match = _ARP_REGEX.search( arp.decode('utf-8').lower()) if not arp_match: - _LOGGER.warning('Could not parse arp row: %s', arp) + _LOGGER.warning("Could not parse arp row: %s", arp) continue devices[arp_match.group('ip')] = { @@ -316,7 +318,7 @@ class AsusWrtDeviceScanner(DeviceScanner): if match.group('mac').upper() in nvr.decode('utf-8'): nvram_match = _NVRAM_REGEX.search(nvr.decode('utf-8')) if not nvram_match: - _LOGGER.warning('Could not parse nvr row: %s', nvr) + _LOGGER.warning("Could not parse nvr row: %s", nvr) continue # skip current check if already in ARP table @@ -337,7 +339,7 @@ class AsusWrtDeviceScanner(DeviceScanner): match = _LEASES_REGEX.search(lease.decode('utf-8')) if not match: - _LOGGER.warning('Could not parse lease row: %s', lease) + _LOGGER.warning("Could not parse lease row: %s", lease) continue # For leases where the client doesn't set a hostname, ensure it @@ -356,7 +358,7 @@ class AsusWrtDeviceScanner(DeviceScanner): for neighbor in result.neighbors: match = _IP_NEIGH_REGEX.search(neighbor.decode('utf-8')) if not match: - _LOGGER.warning('Could not parse neighbor row: %s', neighbor) + _LOGGER.warning("Could not parse neighbor row: %s", neighbor) continue if match.group('ip') in devices: devices[match.group('ip')]['status'] = match.group('status') diff --git a/homeassistant/components/device_tracker/automatic.py b/homeassistant/components/device_tracker/automatic.py index 55ec3151227..7fb665a7cc3 100644 --- a/homeassistant/components/device_tracker/automatic.py +++ b/homeassistant/components/device_tracker/automatic.py @@ -99,7 +99,7 @@ class AutomaticData(object): @asyncio.coroutine def update_vehicle(self, vehicle, name): - """Updated the specified vehicle's data.""" + """Update the specified vehicle's data.""" import aioautomatic kwargs = { diff --git a/homeassistant/components/device_tracker/bbox.py b/homeassistant/components/device_tracker/bbox.py index 60b9738cc71..0d0cdd7b1d5 100644 --- a/homeassistant/components/device_tracker/bbox.py +++ b/homeassistant/components/device_tracker/bbox.py @@ -37,7 +37,7 @@ class BboxDeviceScanner(DeviceScanner): self.last_results = [] # type: List[Device] self.success_init = self._update_info() - _LOGGER.info("Bbox scanner initialized") + _LOGGER.info("Scanner initialized") def scan_devices(self): """Scan for new devices and return a list with found device IDs.""" @@ -57,7 +57,7 @@ class BboxDeviceScanner(DeviceScanner): @Throttle(MIN_TIME_BETWEEN_SCANS) def _update_info(self): - """Check the bbox for devices. + """Check the Bbox for devices. Returns boolean if scanning successful. """ @@ -79,5 +79,5 @@ class BboxDeviceScanner(DeviceScanner): self.last_results = last_results - _LOGGER.info("Bbox scan successful") + _LOGGER.info("Scan successful") return True diff --git a/homeassistant/components/device_tracker/bluetooth_le_tracker.py b/homeassistant/components/device_tracker/bluetooth_le_tracker.py index 7b7454d0a28..22713cdc18e 100644 --- a/homeassistant/components/device_tracker/bluetooth_le_tracker.py +++ b/homeassistant/components/device_tracker/bluetooth_le_tracker.py @@ -1,4 +1,9 @@ -"""Tracking for bluetooth low energy devices.""" +""" +Tracking for bluetooth low energy devices. + +For more details about this platform, please refer to the documentation at +https://home-assistant.io/components/device_tracker.bluetooth_le_tracker/ +""" import logging import voluptuous as vol @@ -16,17 +21,17 @@ REQUIREMENTS = ['gattlib==0.20150805'] BLE_PREFIX = 'BLE_' MIN_SEEN_NEW = 5 -CONF_SCAN_DURATION = "scan_duration" -CONF_BLUETOOTH_DEVICE = "device_id" +CONF_SCAN_DURATION = 'scan_duration' +CONF_BLUETOOTH_DEVICE = 'device_id' PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ vol.Optional(CONF_SCAN_DURATION, default=10): cv.positive_int, - vol.Optional(CONF_BLUETOOTH_DEVICE, default="hci0"): cv.string + vol.Optional(CONF_BLUETOOTH_DEVICE, default='hci0'): cv.string }) def setup_scanner(hass, config, see, discovery_info=None): - """Setup the Bluetooth LE Scanner.""" + """Set up the Bluetooth LE Scanner.""" # pylint: disable=import-error from gattlib import DiscoveryService @@ -36,8 +41,8 @@ def setup_scanner(hass, config, see, discovery_info=None): """Mark a device as seen.""" if new_device: if address in new_devices: - _LOGGER.debug("Seen %s %s times", address, - new_devices[address]) + _LOGGER.debug( + "Seen %s %s times", address, new_devices[address]) new_devices[address] += 1 if new_devices[address] >= MIN_SEEN_NEW: _LOGGER.debug("Adding %s to tracked devices", address) diff --git a/homeassistant/components/device_tracker/bluetooth_tracker.py b/homeassistant/components/device_tracker/bluetooth_tracker.py index f71f8c4271a..9e0957e363f 100644 --- a/homeassistant/components/device_tracker/bluetooth_tracker.py +++ b/homeassistant/components/device_tracker/bluetooth_tracker.py @@ -1,4 +1,9 @@ -"""Tracking for bluetooth devices.""" +""" +Tracking for bluetooth devices. + +For more details about this platform, please refer to the documentation at +https://home-assistant.io/components/device_tracker.bluetooth_tracker/ +""" import logging import voluptuous as vol @@ -22,7 +27,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ def setup_scanner(hass, config, see, discovery_info=None): - """Setup the Bluetooth Scanner.""" + """Set up the Bluetooth Scanner.""" # pylint: disable=import-error import bluetooth @@ -31,11 +36,10 @@ def setup_scanner(hass, config, see, discovery_info=None): see(mac=BT_PREFIX + device[0], host_name=device[1]) def discover_devices(): - """Discover bluetooth devices.""" - result = bluetooth.discover_devices(duration=8, - lookup_names=True, - flush_cache=True, - lookup_class=False) + """Discover Bluetooth devices.""" + result = bluetooth.discover_devices( + duration=8, lookup_names=True, flush_cache=True, + lookup_class=False) _LOGGER.debug("Bluetooth devices discovered = " + str(len(result))) return result @@ -47,14 +51,14 @@ def setup_scanner(hass, config, see, discovery_info=None): # We just need the devices so set consider_home and home range # to 0 for device in load_config(yaml_path, hass, 0): - # check if device is a valid bluetooth device + # Check if device is a valid bluetooth device if device.mac and device.mac[:3].upper() == BT_PREFIX: if device.track: devs_to_track.append(device.mac[3:]) else: devs_donot_track.append(device.mac[3:]) - # if track new devices is true discover new devices on startup. + # If track new devices is true discover new devices on startup. track_new = config.get(CONF_TRACK_NEW, DEFAULT_TRACK_NEW) if track_new: for dev in discover_devices(): @@ -66,7 +70,7 @@ def setup_scanner(hass, config, see, discovery_info=None): interval = config.get(CONF_SCAN_INTERVAL, DEFAULT_SCAN_INTERVAL) def update_bluetooth(now): - """Lookup bluetooth device and update status.""" + """Lookup Bluetooth device and update status.""" try: if track_new: for dev in discover_devices(): @@ -74,14 +78,14 @@ def setup_scanner(hass, config, see, discovery_info=None): dev[0] not in devs_donot_track: devs_to_track.append(dev[0]) for mac in devs_to_track: - _LOGGER.debug("Scanning " + mac) + _LOGGER.debug("Scanning %s", mac) result = bluetooth.lookup_name(mac, timeout=5) if not result: # Could not lookup device name continue see_device((mac, result)) except bluetooth.BluetoothError: - _LOGGER.exception('Error looking up bluetooth device!') + _LOGGER.exception("Error looking up Bluetooth device") track_point_in_utc_time( hass, update_bluetooth, dt_util.utcnow() + interval) diff --git a/homeassistant/components/device_tracker/bt_home_hub_5.py b/homeassistant/components/device_tracker/bt_home_hub_5.py index 301ec61abc2..5c1a14b446b 100644 --- a/homeassistant/components/device_tracker/bt_home_hub_5.py +++ b/homeassistant/components/device_tracker/bt_home_hub_5.py @@ -21,13 +21,11 @@ from homeassistant.components.device_tracker import ( from homeassistant.const import CONF_HOST from homeassistant.util import Throttle -# Return cached results if last scan was less then this time ago. -MIN_TIME_BETWEEN_SCANS = timedelta(seconds=10) - _LOGGER = logging.getLogger(__name__) - _MAC_REGEX = re.compile(r'(([0-9A-Fa-f]{1,2}\:){5}[0-9A-Fa-f]{1,2})') +MIN_TIME_BETWEEN_SCANS = timedelta(seconds=10) + PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ vol.Required(CONF_HOST): cv.string }) @@ -46,7 +44,7 @@ class BTHomeHub5DeviceScanner(DeviceScanner): def __init__(self, config): """Initialise the scanner.""" - _LOGGER.info('Initialising BT Home Hub 5') + _LOGGER.info("Initialising BT Home Hub 5") self.host = config.get(CONF_HOST, '192.168.1.254') self.lock = threading.Lock() @@ -87,12 +85,12 @@ class BTHomeHub5DeviceScanner(DeviceScanner): return False with self.lock: - _LOGGER.info('Scanning') + _LOGGER.info("Scanning") data = _get_homehub_data(self.url) if not data: - _LOGGER.warning('Error scanning devices') + _LOGGER.warning("Error scanning devices") return False self.last_results = data diff --git a/homeassistant/components/device_tracker/cisco_ios.py b/homeassistant/components/device_tracker/cisco_ios.py index 95319a872ae..35ffa754348 100644 --- a/homeassistant/components/device_tracker/cisco_ios.py +++ b/homeassistant/components/device_tracker/cisco_ios.py @@ -16,7 +16,6 @@ from homeassistant.const import CONF_HOST, CONF_PASSWORD, CONF_USERNAME, \ CONF_PORT from homeassistant.util import Throttle -# Return cached results if last scan was less then this time ago. MIN_TIME_BETWEEN_SCANS = timedelta(seconds=5) _LOGGER = logging.getLogger(__name__) @@ -57,7 +56,7 @@ class CiscoDeviceScanner(DeviceScanner): # pylint: disable=no-self-use def get_device_name(self, device): - """The firmware doesn't save the name of the wireless device.""" + """Get the firmware doesn't save the name of the wireless device.""" return None def scan_devices(self): @@ -135,9 +134,9 @@ class CiscoDeviceScanner(DeviceScanner): devices_result = cisco_ssh.before - return devices_result.decode("utf-8") + return devices_result.decode('utf-8') except pxssh.ExceptionPxssh as px_e: - _LOGGER.error("pxssh failed on login.") + _LOGGER.error("pxssh failed on login") _LOGGER.error(px_e) return None diff --git a/homeassistant/components/device_tracker/ddwrt.py b/homeassistant/components/device_tracker/ddwrt.py index 2c8a2ec4907..4f1efcdb27c 100644 --- a/homeassistant/components/device_tracker/ddwrt.py +++ b/homeassistant/components/device_tracker/ddwrt.py @@ -18,7 +18,6 @@ from homeassistant.components.device_tracker import ( from homeassistant.const import CONF_HOST, CONF_PASSWORD, CONF_USERNAME from homeassistant.util import Throttle -# Return cached results if last scan was less then this time ago. MIN_TIME_BETWEEN_SCANS = timedelta(seconds=5) _LOGGER = logging.getLogger(__name__) @@ -108,7 +107,7 @@ class DdWrtDeviceScanner(DeviceScanner): Return boolean if scanning successful. """ with self.lock: - _LOGGER.info('Checking ARP') + _LOGGER.info("Checking ARP") url = 'http://{}/Status_Wireless.live.asp'.format(self.host) data = self.get_ddwrt_data(url) @@ -137,22 +136,19 @@ class DdWrtDeviceScanner(DeviceScanner): """Retrieve data from DD-WRT and return parsed result.""" try: response = requests.get( - url, - auth=(self.username, self.password), - timeout=4) + url, auth=(self.username, self.password), timeout=4) except requests.exceptions.Timeout: - _LOGGER.exception('Connection to the router timed out') + _LOGGER.exception("Connection to the router timed out") return if response.status_code == 200: return _parse_ddwrt_response(response.text) elif response.status_code == 401: # Authentication error _LOGGER.exception( - 'Failed to authenticate, ' - 'please check your username and password') + "Failed to authenticate, check your username and password") return else: - _LOGGER.error('Invalid response from ddwrt: %s', response) + _LOGGER.error("Invalid response from DD-WRT: %s", response) def _parse_ddwrt_response(data_str): diff --git a/homeassistant/components/device_tracker/demo.py b/homeassistant/components/device_tracker/demo.py index dfd50a2b991..608fc560cf9 100644 --- a/homeassistant/components/device_tracker/demo.py +++ b/homeassistant/components/device_tracker/demo.py @@ -1,11 +1,16 @@ -"""Demo platform for the device tracker.""" +""" +Demo platform for the Device tracker component. + +For more details about this platform, please refer to the documentation +https://home-assistant.io/components/demo/ +""" import random from homeassistant.components.device_tracker import DOMAIN def setup_scanner(hass, config, see, discovery_info=None): - """Setup the demo tracker.""" + """Set up the demo tracker.""" def offset(): """Return random offset.""" return (random.randrange(500, 2000)) / 2e5 * random.choice((-1, 1)) diff --git a/homeassistant/components/device_tracker/fritz.py b/homeassistant/components/device_tracker/fritz.py index a11139afa0f..25de0a35c82 100644 --- a/homeassistant/components/device_tracker/fritz.py +++ b/homeassistant/components/device_tracker/fritz.py @@ -17,7 +17,6 @@ from homeassistant.util import Throttle REQUIREMENTS = ['fritzconnection==0.6.3'] -# Return cached results if last scan was less then this time ago. MIN_TIME_BETWEEN_SCANS = timedelta(seconds=5) _LOGGER = logging.getLogger(__name__) @@ -53,9 +52,8 @@ class FritzBoxScanner(DeviceScanner): # Establish a connection to the FRITZ!Box. try: - self.fritz_box = fc.FritzHosts(address=self.host, - user=self.username, - password=self.password) + self.fritz_box = fc.FritzHosts( + address=self.host, user=self.username, password=self.password) except (ValueError, TypeError): self.fritz_box = None @@ -65,12 +63,12 @@ class FritzBoxScanner(DeviceScanner): self.success_init = False if self.success_init: - _LOGGER.info('Successfully connected to %s', + _LOGGER.info("Successfully connected to %s", self.fritz_box.modelname) self._update_info() else: - _LOGGER.error('Failed to establish connection to FRITZ!Box ' - 'with IP: %s', self.host) + _LOGGER.error("Failed to establish connection to FRITZ!Box " + "with IP: %s", self.host) def scan_devices(self): """Scan for new devices and return a list of found device ids.""" @@ -96,6 +94,6 @@ class FritzBoxScanner(DeviceScanner): if not self.success_init: return False - _LOGGER.info('Scanning') + _LOGGER.info("Scanning") self.last_results = self.fritz_box.get_hosts_info() return True diff --git a/homeassistant/components/device_tracker/gpslogger.py b/homeassistant/components/device_tracker/gpslogger.py index c76c8fdd51b..733127cb0f2 100644 --- a/homeassistant/components/device_tracker/gpslogger.py +++ b/homeassistant/components/device_tracker/gpslogger.py @@ -20,14 +20,14 @@ DEPENDENCIES = ['http'] def setup_scanner(hass, config, see, discovery_info=None): - """Setup an endpoint for the GPSLogger application.""" + """Set up an endpoint for the GPSLogger application.""" hass.http.register_view(GPSLoggerView(see)) return True class GPSLoggerView(HomeAssistantView): - """View to handle gpslogger requests.""" + """View to handle GPSLogger requests.""" url = '/api/gpslogger' name = 'api:gpslogger' @@ -38,21 +38,20 @@ class GPSLoggerView(HomeAssistantView): @asyncio.coroutine def get(self, request): - """A GPSLogger message received as GET.""" + """Handle for GPSLogger message received as GET.""" res = yield from self._handle(request.app['hass'], request.GET) return res @asyncio.coroutine def _handle(self, hass, data): - """Handle gpslogger request.""" + """Handle GPSLogger requests.""" if 'latitude' not in data or 'longitude' not in data: return ('Latitude and longitude not specified.', HTTP_UNPROCESSABLE_ENTITY) if 'device' not in data: - _LOGGER.error('Device id not specified.') - return ('Device id not specified.', - HTTP_UNPROCESSABLE_ENTITY) + _LOGGER.error("Device id not specified") + return ('Device id not specified.', HTTP_UNPROCESSABLE_ENTITY) device = data['device'].replace('-', '') gps_location = (data['latitude'], data['longitude']) diff --git a/homeassistant/components/device_tracker/icloud.py b/homeassistant/components/device_tracker/icloud.py index b6fd9121295..194a2f4bfac 100644 --- a/homeassistant/components/device_tracker/icloud.py +++ b/homeassistant/components/device_tracker/icloud.py @@ -55,8 +55,12 @@ DEVICESTATUSSET = ['features', 'maxMsgChar', 'darkWake', 'fmlyShare', 'wipedTimestamp', 'modelDisplayName', 'locationEnabled', 'isMac', 'locFoundEnabled'] -DEVICESTATUSCODES = {'200': 'online', '201': 'offline', '203': 'pending', - '204': 'unregistered'} +DEVICESTATUSCODES = { + '200': 'online', + '201': 'offline', + '203': 'pending', + '204': 'unregistered', +} SERVICE_SCHEMA = vol.Schema({ vol.Optional(ATTR_ACCOUNTNAME): vol.All(cv.ensure_list, [cv.slugify]), @@ -87,7 +91,7 @@ def setup_scanner(hass, config: dict, see, discovery_info=None): return False def lost_iphone(call): - """Call the lost iphone function if the device is found.""" + """Call the lost iPhone function if the device is found.""" accounts = call.data.get(ATTR_ACCOUNTNAME, ICLOUDTRACKERS) devicename = call.data.get(ATTR_DEVICENAME) for account in accounts: @@ -97,7 +101,7 @@ def setup_scanner(hass, config: dict, see, discovery_info=None): schema=SERVICE_SCHEMA) def update_icloud(call): - """Call the update function of an icloud account.""" + """Call the update function of an iCloud account.""" accounts = call.data.get(ATTR_ACCOUNTNAME, ICLOUDTRACKERS) devicename = call.data.get(ATTR_DEVICENAME) for account in accounts: @@ -107,7 +111,7 @@ def setup_scanner(hass, config: dict, see, discovery_info=None): schema=SERVICE_SCHEMA) def reset_account_icloud(call): - """Reset an icloud account.""" + """Reset an iCloud account.""" accounts = call.data.get(ATTR_ACCOUNTNAME, ICLOUDTRACKERS) for account in accounts: if account in ICLOUDTRACKERS: @@ -116,7 +120,7 @@ def setup_scanner(hass, config: dict, see, discovery_info=None): reset_account_icloud, schema=SERVICE_SCHEMA) def setinterval(call): - """Call the update function of an icloud account.""" + """Call the update function of an iCloud account.""" accounts = call.data.get(ATTR_ACCOUNTNAME, ICLOUDTRACKERS) interval = call.data.get(ATTR_INTERVAL) devicename = call.data.get(ATTR_DEVICENAME) @@ -132,7 +136,7 @@ def setup_scanner(hass, config: dict, see, discovery_info=None): class Icloud(DeviceScanner): - """Represent an icloud account in Home Assistant.""" + """Representation of an iCloud account.""" def __init__(self, hass, username, password, name, see): """Initialize an iCloud account.""" @@ -157,12 +161,10 @@ class Icloud(DeviceScanner): randomseconds = random.randint(10, 59) track_utc_time_change( - self.hass, self.keep_alive, - second=randomseconds - ) + self.hass, self.keep_alive, second=randomseconds) def reset_account_icloud(self): - """Reset an icloud account.""" + """Reset an iCloud account.""" from pyicloud import PyiCloudService from pyicloud.exceptions import ( PyiCloudFailedLoginException, PyiCloudNoDevicesException) @@ -178,7 +180,7 @@ class Icloud(DeviceScanner): verify=True) except PyiCloudFailedLoginException as error: self.api = None - _LOGGER.error('Error logging into iCloud Service: %s', error) + _LOGGER.error("Error logging into iCloud Service: %s", error) return try: @@ -196,12 +198,12 @@ class Icloud(DeviceScanner): _LOGGER.error('No iCloud Devices found!') def icloud_trusted_device_callback(self, callback_data): - """The trusted device is chosen.""" + """Handle chosen trusted devices.""" self._trusted_device = int(callback_data.get('trusted_device')) self._trusted_device = self.api.trusted_devices[self._trusted_device] if not self.api.send_verification_code(self._trusted_device): - _LOGGER.error('Failed to send verification code') + _LOGGER.error("Failed to send verification code") self._trusted_device = None return @@ -223,8 +225,7 @@ class Icloud(DeviceScanner): devices = self.api.trusted_devices for i, device in enumerate(devices): devicename = device.get( - 'deviceName', - 'SMS to %s' % device.get('phoneNumber')) + 'deviceName', 'SMS to %s' % device.get('phoneNumber')) devicesstring += "{}: {};".format(i, devicename) _CONFIGURING[self.accountname] = configurator.request_config( @@ -239,7 +240,7 @@ class Icloud(DeviceScanner): ) def icloud_verification_callback(self, callback_data): - """The trusted device is chosen.""" + """Handle the chosen trusted device.""" from pyicloud.exceptions import PyiCloudException self._verification_code = callback_data.get('code') @@ -249,7 +250,7 @@ class Icloud(DeviceScanner): raise PyiCloudException('Unknown failure') except PyiCloudException as error: # Reset to the inital 2FA state to allow the user to retry - _LOGGER.error('Failed to verify verification code: %s', error) + _LOGGER.error("Failed to verify verification code: %s", error) self._trusted_device = None self._verification_code = None @@ -262,7 +263,7 @@ class Icloud(DeviceScanner): configurator.request_done(request_id) def icloud_need_verification_code(self): - """We need a verification code.""" + """Return the verification code.""" configurator = get_component('configurator') if self.accountname in _CONFIGURING: return @@ -277,7 +278,7 @@ class Icloud(DeviceScanner): ) def keep_alive(self, now): - """Keep the api alive.""" + """Keep the API alive.""" if self.api is None: self.reset_account_icloud() @@ -302,7 +303,7 @@ class Icloud(DeviceScanner): self._trusted_device = None self._verification_code = None except PyiCloudException as error: - _LOGGER.error("Error setting up 2fa: %s", error) + _LOGGER.error("Error setting up 2FA: %s", error) else: self.api.authenticate() @@ -320,8 +321,8 @@ class Icloud(DeviceScanner): zone_state = self.hass.states.get('zone.home') zone_state_lat = zone_state.attributes['latitude'] zone_state_long = zone_state.attributes['longitude'] - distancefromhome = distance(latitude, longitude, zone_state_lat, - zone_state_long) + distancefromhome = distance( + latitude, longitude, zone_state_lat, zone_state_long) distancefromhome = round(distancefromhome / 1000, 1) currentzone = active_zone(self.hass, latitude, longitude) @@ -400,7 +401,7 @@ class Icloud(DeviceScanner): _LOGGER.error('No iCloud Devices found!') def lost_iphone(self, devicename): - """Call the lost iphone function if the device is found.""" + """Call the lost iPhone function if the device is found.""" if self.api is None: return @@ -428,13 +429,13 @@ class Icloud(DeviceScanner): for device in self.devices: self.devices[device].location() except PyiCloudNoDevicesException: - _LOGGER.error('No iCloud Devices found!') + _LOGGER.error("No iCloud Devices found") def setinterval(self, interval=None, devicename=None): """Set the interval of the given devices.""" devs = [devicename] if devicename else self.devices for device in devs: - devid = DOMAIN + '.' + device + devid = '{}.{}'.format(DOMAIN, device) devicestate = self.hass.states.get(devid) if interval is not None: if devicestate is not None: diff --git a/homeassistant/components/device_tracker/linksys_ap.py b/homeassistant/components/device_tracker/linksys_ap.py index fc8f9f96a37..a337f71cec4 100644 --- a/homeassistant/components/device_tracker/linksys_ap.py +++ b/homeassistant/components/device_tracker/linksys_ap.py @@ -99,9 +99,8 @@ class LinksysAPDeviceScanner(object): # No, the '&&' is not a typo - this is expected by the web interface. login = base64.b64encode(bytes(self.username, 'utf8')).decode('ascii') pwd = base64.b64encode(bytes(self.password, 'utf8')).decode('ascii') + url = 'https://{}/StatusClients.htm&&unit={}&vap=0'.format( + self.host, unit) return requests.get( - 'https://%s/StatusClients.htm&&unit=%s&vap=0' % (self.host, unit), - timeout=DEFAULT_TIMEOUT, - verify=self.verify_ssl, - cookies={'LoginName': login, - 'LoginPWD': pwd}) + url, timeout=DEFAULT_TIMEOUT, verify=self.verify_ssl, + cookies={'LoginName': login, 'LoginPWD': pwd}) diff --git a/homeassistant/components/device_tracker/luci.py b/homeassistant/components/device_tracker/luci.py index 8cc6af48767..24af81b281e 100644 --- a/homeassistant/components/device_tracker/luci.py +++ b/homeassistant/components/device_tracker/luci.py @@ -20,7 +20,6 @@ from homeassistant.components.device_tracker import ( from homeassistant.const import CONF_HOST, CONF_PASSWORD, CONF_USERNAME from homeassistant.util import Throttle -# Return cached results if last scan was less then this time ago. MIN_TIME_BETWEEN_SCANS = timedelta(seconds=5) _LOGGER = logging.getLogger(__name__) @@ -46,10 +45,7 @@ def get_scanner(hass, config): class LuciDeviceScanner(DeviceScanner): - """This class queries a wireless router running OpenWrt firmware. - - Adapted from Tomato scanner. - """ + """This class queries a wireless router running OpenWrt firmware.""" def __init__(self, config): """Initialize the scanner.""" @@ -106,7 +102,7 @@ class LuciDeviceScanner(DeviceScanner): return False with self.lock: - _LOGGER.info('Checking ARP') + _LOGGER.info("Checking ARP") url = 'http://{}/cgi-bin/luci/rpc/sys'.format(self.host) @@ -114,7 +110,7 @@ class LuciDeviceScanner(DeviceScanner): result = _req_json_rpc(url, 'net.arptable', params={'auth': self.token}) except InvalidLuciTokenError: - _LOGGER.info('Refreshing token') + _LOGGER.info("Refreshing token") self.refresh_token() return False @@ -138,28 +134,27 @@ def _req_json_rpc(url, method, *args, **kwargs): try: res = requests.post(url, data=data, timeout=5, **kwargs) except requests.exceptions.Timeout: - _LOGGER.exception('Connection to the router timed out') + _LOGGER.exception("Connection to the router timed out") return if res.status_code == 200: try: result = res.json() except ValueError: # If json decoder could not parse the response - _LOGGER.exception('Failed to parse response from luci') + _LOGGER.exception("Failed to parse response from luci") return try: return result['result'] except KeyError: - _LOGGER.exception('No result in response from luci') + _LOGGER.exception("No result in response from luci") return elif res.status_code == 401: # Authentication error _LOGGER.exception( - "Failed to authenticate, " - "please check your username and password") + "Failed to authenticate, check your username and password") return elif res.status_code == 403: - _LOGGER.error('Luci responded with a 403 Invalid token') + _LOGGER.error("Luci responded with a 403 Invalid token") raise InvalidLuciTokenError else: diff --git a/homeassistant/components/device_tracker/mqtt.py b/homeassistant/components/device_tracker/mqtt.py index 1f7fa9c1b84..aab5b43acea 100644 --- a/homeassistant/components/device_tracker/mqtt.py +++ b/homeassistant/components/device_tracker/mqtt.py @@ -27,7 +27,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend(mqtt.SCHEMA_BASE).extend({ @asyncio.coroutine def async_setup_scanner(hass, config, async_see, discovery_info=None): - """Setup the MQTT tracker.""" + """Set up the MQTT tracker.""" devices = config[CONF_DEVICES] qos = config[CONF_QOS] @@ -35,7 +35,7 @@ def async_setup_scanner(hass, config, async_see, discovery_info=None): @callback def async_tracker_message_received(topic, payload, qos): - """MQTT message received.""" + """Handle received MQTT message.""" hass.async_add_job( async_see(dev_id=dev_id_lookup[topic], location_name=payload)) diff --git a/homeassistant/components/device_tracker/mqtt_json.py b/homeassistant/components/device_tracker/mqtt_json.py index da85055ba96..0ef4f1835b6 100644 --- a/homeassistant/components/device_tracker/mqtt_json.py +++ b/homeassistant/components/device_tracker/mqtt_json.py @@ -37,7 +37,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend(mqtt.SCHEMA_BASE).extend({ @asyncio.coroutine def async_setup_scanner(hass, config, async_see, discovery_info=None): - """Setup the MQTT tracker.""" + """Set up the MQTT JSON tracker.""" devices = config[CONF_DEVICES] qos = config[CONF_QOS] @@ -45,18 +45,18 @@ def async_setup_scanner(hass, config, async_see, discovery_info=None): @callback def async_tracker_message_received(topic, payload, qos): - """MQTT message received.""" + """Handle received MQTT message.""" dev_id = dev_id_lookup[topic] try: data = GPS_JSON_PAYLOAD_SCHEMA(json.loads(payload)) except vol.MultipleInvalid: - _LOGGER.error('Skipping update for following data ' - 'because of missing or malformatted data: %s', + _LOGGER.error("Skipping update for following data " + "because of missing or malformatted data: %s", payload) return except ValueError: - _LOGGER.error('Error parsing JSON payload: %s', payload) + _LOGGER.error("Error parsing JSON payload: %s", payload) return kwargs = _parse_see_args(dev_id, data) diff --git a/homeassistant/components/device_tracker/mysensors.py b/homeassistant/components/device_tracker/mysensors.py index 04801f834df..00bd2eef6e0 100644 --- a/homeassistant/components/device_tracker/mysensors.py +++ b/homeassistant/components/device_tracker/mysensors.py @@ -15,12 +15,12 @@ _LOGGER = logging.getLogger(__name__) def setup_scanner(hass, config, see, discovery_info=None): - """Setup the MySensors tracker.""" + """Set up the MySensors tracker.""" def mysensors_callback(gateway, msg): """Callback for mysensors platform.""" node = gateway.sensors[msg.node_id] if node.sketch_name is None: - _LOGGER.debug('No sketch_name: node %s', msg.node_id) + _LOGGER.debug("No sketch_name: node %s", msg.node_id) return pres = gateway.const.Presentation @@ -35,8 +35,8 @@ def setup_scanner(hass, config, see, discovery_info=None): try: latitude, longitude, _ = position.split(',') except ValueError: - _LOGGER.error('Payload for V_POSITION %s is not of format ' - 'latitude,longitude,altitude', position) + _LOGGER.error("Payload for V_POSITION %s is not of format " + "latitude, longitude, altitude", position) return name = '{} {} {}'.format( node.sketch_name, msg.node_id, child.id) diff --git a/homeassistant/components/device_tracker/netgear.py b/homeassistant/components/device_tracker/netgear.py index d6716dfb9b1..b3ec442198e 100644 --- a/homeassistant/components/device_tracker/netgear.py +++ b/homeassistant/components/device_tracker/netgear.py @@ -17,11 +17,11 @@ from homeassistant.const import ( CONF_HOST, CONF_PASSWORD, CONF_USERNAME, CONF_PORT) from homeassistant.util import Throttle -# Return cached results if last scan was less then this time ago. -MIN_TIME_BETWEEN_SCANS = timedelta(seconds=5) +REQUIREMENTS = ['pynetgear==0.3.3'] _LOGGER = logging.getLogger(__name__) -REQUIREMENTS = ['pynetgear==0.3.3'] + +MIN_TIME_BETWEEN_SCANS = timedelta(seconds=5) DEFAULT_HOST = 'routerlogin.net' DEFAULT_USER = 'admin' @@ -60,7 +60,7 @@ class NetgearDeviceScanner(DeviceScanner): self._api = pynetgear.Netgear(password, host, username, port) - _LOGGER.info('Logging in') + _LOGGER.info("Logging in") results = self._api.get_attached_devices() @@ -69,7 +69,7 @@ class NetgearDeviceScanner(DeviceScanner): if self.success_init: self.last_results = results else: - _LOGGER.error('Failed to Login') + _LOGGER.error("Failed to Login") def scan_devices(self): """Scan for new devices and return a list with found device IDs.""" @@ -95,11 +95,11 @@ class NetgearDeviceScanner(DeviceScanner): return with self.lock: - _LOGGER.info('Scanning') + _LOGGER.info("Scanning") results = self._api.get_attached_devices() if results is None: - _LOGGER.warning('Error scanning devices') + _LOGGER.warning("Error scanning devices") self.last_results = results or [] diff --git a/homeassistant/components/device_tracker/nmap_tracker.py b/homeassistant/components/device_tracker/nmap_tracker.py index 182826a1f62..99dfc3829d7 100644 --- a/homeassistant/components/device_tracker/nmap_tracker.py +++ b/homeassistant/components/device_tracker/nmap_tracker.py @@ -80,7 +80,7 @@ class NmapDeviceScanner(DeviceScanner): self.home_interval = timedelta(minutes=minutes) self.success_init = self._update_info() - _LOGGER.info("nmap scanner initialized") + _LOGGER.info("Scanner initialized") def scan_devices(self): """Scan for new devices and return a list with found device IDs.""" diff --git a/homeassistant/components/device_tracker/owntracks.py b/homeassistant/components/device_tracker/owntracks.py index 156e9d6a08a..40ab48b384a 100644 --- a/homeassistant/components/device_tracker/owntracks.py +++ b/homeassistant/components/device_tracker/owntracks.py @@ -85,8 +85,8 @@ def async_setup_scanner(hass, config, async_see, discovery_info=None): try: keylen, decrypt = get_cipher() except OSError: - _LOGGER.warning('Ignoring encrypted payload ' - 'because libsodium not installed.') + _LOGGER.warning( + "Ignoring encrypted payload because libsodium not installed") return None if isinstance(secret, dict): @@ -95,9 +95,9 @@ def async_setup_scanner(hass, config, async_see, discovery_info=None): key = secret if key is None: - _LOGGER.warning('Ignoring encrypted payload ' - 'because no decryption key known ' - 'for topic %s.', topic) + _LOGGER.warning( + "Ignoring encrypted payload because no decryption key known " + "for topic %s", topic) return None key = key.encode("utf-8") @@ -111,9 +111,9 @@ def async_setup_scanner(hass, config, async_see, discovery_info=None): _LOGGER.debug("Decrypted payload: %s", message) return message except ValueError: - _LOGGER.warning('Ignoring encrypted payload ' - 'because unable to decrypt using key ' - 'for topic %s.', topic) + _LOGGER.warning( + "Ignoring encrypted payload because unable to decrypt using " + "key for topic %s", topic) return None # pylint: disable=too-many-return-statements @@ -123,7 +123,7 @@ def async_setup_scanner(hass, config, async_see, discovery_info=None): data = json.loads(payload) except ValueError: # If invalid JSON - _LOGGER.error('Unable to parse payload as JSON: %s', payload) + _LOGGER.error("Unable to parse payload as JSON: %s", payload) return None if isinstance(data, dict) and \ @@ -136,22 +136,22 @@ def async_setup_scanner(hass, config, async_see, discovery_info=None): return validate_payload(topic, plaintext_payload, data_type) if not isinstance(data, dict) or data.get('_type') != data_type: - _LOGGER.debug('Skipping %s update for following data ' - 'because of missing or malformatted data: %s', + _LOGGER.debug("Skipping %s update for following data " + "because of missing or malformatted data: %s", data_type, data) return None if data_type == VALIDATE_TRANSITION or data_type == VALIDATE_WAYPOINTS: return data if max_gps_accuracy is not None and \ convert(data.get('acc'), float, 0.0) > max_gps_accuracy: - _LOGGER.info('Ignoring %s update because expected GPS ' - 'accuracy %s is not met: %s', + _LOGGER.info("Ignoring %s update because expected GPS " + "accuracy %s is not met: %s", data_type, max_gps_accuracy, payload) return None if convert(data.get('acc'), float, 1.0) == 0.0: - _LOGGER.warning('Ignoring %s update because GPS accuracy ' - 'is zero: %s', - data_type, payload) + _LOGGER.warning( + "Ignoring %s update because GPS accuracy is zero: %s", + data_type, payload) return None return data @@ -169,7 +169,7 @@ def async_setup_scanner(hass, config, async_see, discovery_info=None): if regions_entered[dev_id]: _LOGGER.debug( - "location update ignored - inside region %s", + "Location update ignored, inside region %s", regions_entered[-1]) return @@ -178,7 +178,7 @@ def async_setup_scanner(hass, config, async_see, discovery_info=None): @callback def async_owntracks_event_update(topic, payload, qos): - """MQTT event (geofences) received.""" + """Handle MQTT event (geofences).""" # Docs on available data: # http://owntracks.org/booklet/tech/json/#_typetransition data = validate_payload(topic, payload, VALIDATE_TRANSITION) @@ -242,15 +242,14 @@ def async_setup_scanner(hass, config, async_see, discovery_info=None): if data['acc'] == 0.0: valid_gps = False _LOGGER.warning( - 'Ignoring GPS in region exit because accuracy' - 'is zero: %s', - payload) + "Ignoring GPS in region exit because accuracy" + "is zero: %s", payload) if (max_gps_accuracy is not None and data['acc'] > max_gps_accuracy): valid_gps = False _LOGGER.info( - 'Ignoring GPS in region exit because expected ' - 'GPS accuracy %s is not met: %s', + "Ignoring GPS in region exit because expected " + "GPS accuracy %s is not met: %s", max_gps_accuracy, payload) if valid_gps: hass.async_add_job(async_see(**kwargs)) @@ -267,7 +266,7 @@ def async_setup_scanner(hass, config, async_see, discovery_info=None): leave_event() else: _LOGGER.error( - 'Misformatted mqtt msgs, _type=transition, event=%s', + "Misformatted mqtt msgs, _type=transition, event=%s", data['event']) return diff --git a/homeassistant/components/device_tracker/ping.py b/homeassistant/components/device_tracker/ping.py index ee9a4d19d37..1f21a25359c 100644 --- a/homeassistant/components/device_tracker/ping.py +++ b/homeassistant/components/device_tracker/ping.py @@ -37,8 +37,8 @@ class Host(object): self.ip_address = ip_address self.dev_id = dev_id self._count = config[CONF_PING_COUNT] - if sys.platform == "win32": - self._ping_cmd = ['ping', '-n 1', '-w 1000', self.ip_address] + if sys.platform == 'win32': + self._ping_cmd = ['ping', '-n 1', '-w', '1000', self.ip_address] else: self._ping_cmd = ['ping', '-n', '-q', '-c1', '-W1', self.ip_address] @@ -67,7 +67,7 @@ class Host(object): def setup_scanner(hass, config, see, discovery_info=None): - """Setup the Host objects and return the update function.""" + """Set up the Host objects and return the update function.""" hosts = [Host(ip, dev_id, hass, config) for (dev_id, ip) in config[const.CONF_HOSTS].items()] interval = timedelta(seconds=len(hosts) * config[CONF_PING_COUNT]) + \ diff --git a/homeassistant/components/device_tracker/swisscom.py b/homeassistant/components/device_tracker/swisscom.py index 530e39d3e57..d2a5a57e491 100644 --- a/homeassistant/components/device_tracker/swisscom.py +++ b/homeassistant/components/device_tracker/swisscom.py @@ -17,7 +17,6 @@ from homeassistant.components.device_tracker import ( from homeassistant.const import CONF_HOST from homeassistant.util import Throttle -# Return cached results if last scan was less then this time ago. MIN_TIME_BETWEEN_SCANS = timedelta(seconds=5) _LOGGER = logging.getLogger(__name__) diff --git a/homeassistant/components/device_tracker/tado.py b/homeassistant/components/device_tracker/tado.py index 63ed3e8819e..46096e62fbb 100644 --- a/homeassistant/components/device_tracker/tado.py +++ b/homeassistant/components/device_tracker/tado.py @@ -69,7 +69,7 @@ class TadoDeviceScanner(DeviceScanner): hass, cookie_jar=aiohttp.CookieJar(unsafe=True, loop=hass.loop)) self.success_init = self._update_info() - _LOGGER.info("Tado scanner initialized") + _LOGGER.info("Scanner initialized") @asyncio.coroutine def async_scan_devices(self): @@ -108,14 +108,12 @@ class TadoDeviceScanner(DeviceScanner): with async_timeout.timeout(10, loop=self.hass.loop): # Format the URL here, so we can log the template URL if # anything goes wrong without exposing username and password. - url = self.tadoapiurl.format(home_id=self.home_id, - username=self.username, - password=self.password) + url = self.tadoapiurl.format( + home_id=self.home_id, username=self.username, + password=self.password) - # Go get 'em! response = yield from self.websession.get(url) - # error on Tado webservice if response.status != 200: _LOGGER.warning( "Error %d on %s.", response.status, self.tadoapiurl) diff --git a/homeassistant/components/device_tracker/thomson.py b/homeassistant/components/device_tracker/thomson.py index e9ab4e347eb..6efe8d59beb 100644 --- a/homeassistant/components/device_tracker/thomson.py +++ b/homeassistant/components/device_tracker/thomson.py @@ -18,7 +18,6 @@ from homeassistant.components.device_tracker import ( from homeassistant.const import CONF_HOST, CONF_PASSWORD, CONF_USERNAME from homeassistant.util import Throttle -# Return cached results if last scan was less then this time ago. MIN_TIME_BETWEEN_SCANS = timedelta(seconds=10) _LOGGER = logging.getLogger(__name__) @@ -88,7 +87,7 @@ class ThomsonDeviceScanner(DeviceScanner): return False with self.lock: - _LOGGER.info('Checking ARP') + _LOGGER.info("Checking ARP") data = self.get_thomson_data() if not data: return False @@ -112,11 +111,11 @@ class ThomsonDeviceScanner(DeviceScanner): devices_result = telnet.read_until(b'=>').split(b'\r\n') telnet.write('exit\r\n'.encode('ascii')) except EOFError: - _LOGGER.exception('Unexpected response from router') + _LOGGER.exception("Unexpected response from router") return except ConnectionRefusedError: - _LOGGER.exception('Connection refused by router,' - ' is telnet enabled?') + _LOGGER.exception( + "Connection refused by router. Telnet enabled?") return devices = {} diff --git a/homeassistant/components/device_tracker/tomato.py b/homeassistant/components/device_tracker/tomato.py index 3f01600259b..51394ae64fe 100644 --- a/homeassistant/components/device_tracker/tomato.py +++ b/homeassistant/components/device_tracker/tomato.py @@ -19,10 +19,9 @@ from homeassistant.components.device_tracker import ( from homeassistant.const import CONF_HOST, CONF_PASSWORD, CONF_USERNAME from homeassistant.util import Throttle -# Return cached results if last scan was less then this time ago. MIN_TIME_BETWEEN_SCANS = timedelta(seconds=5) -CONF_HTTP_ID = "http_id" +CONF_HTTP_ID = 'http_id' _LOGGER = logging.getLogger(__name__) @@ -47,12 +46,10 @@ class TomatoDeviceScanner(DeviceScanner): host, http_id = config[CONF_HOST], config[CONF_HTTP_ID] username, password = config[CONF_USERNAME], config[CONF_PASSWORD] - self.req = requests.Request('POST', - 'http://{}/update.cgi'.format(host), - data={'_http_id': http_id, - 'exec': 'devlist'}, - auth=requests.auth.HTTPBasicAuth( - username, password)).prepare() + self.req = requests.Request( + 'POST', 'http://{}/update.cgi'.format(host), + data={'_http_id': http_id, 'exec': 'devlist'}, + auth=requests.auth.HTTPBasicAuth(username, password)).prepare() self.parse_api_pattern = re.compile(r"(?P\w*) = (?P.*);") @@ -112,20 +109,17 @@ class TomatoDeviceScanner(DeviceScanner): except requests.exceptions.ConnectionError: # We get this if we could not connect to the router or # an invalid http_id was supplied. - self.logger.exception(( - "Failed to connect to the router" - " or invalid http_id supplied")) + self.logger.exception("Failed to connect to the router or " + "invalid http_id supplied") return False except requests.exceptions.Timeout: # We get this if we could not connect to the router or # an invalid http_id was supplied. - self.logger.exception( - "Connection to the router timed out") + self.logger.exception("Connection to the router timed out") return False except ValueError: # If JSON decoder could not parse the response. - self.logger.exception( - "Failed to parse response from router") + self.logger.exception("Failed to parse response from router") return False diff --git a/homeassistant/components/device_tracker/tplink.py b/homeassistant/components/device_tracker/tplink.py index 8d476136d23..033ae84c712 100755 --- a/homeassistant/components/device_tracker/tplink.py +++ b/homeassistant/components/device_tracker/tplink.py @@ -20,7 +20,6 @@ from homeassistant.components.device_tracker import ( from homeassistant.const import CONF_HOST, CONF_PASSWORD, CONF_USERNAME from homeassistant.util import Throttle -# Return cached results if last scan was less then this time ago MIN_TIME_BETWEEN_SCANS = timedelta(seconds=5) _LOGGER = logging.getLogger(__name__) @@ -69,7 +68,7 @@ class TplinkDeviceScanner(DeviceScanner): # pylint: disable=no-self-use def get_device_name(self, device): - """The firmware doesn't save the name of the wireless device.""" + """Get firmware doesn't save the name of the wireless device.""" return None @Throttle(MIN_TIME_BETWEEN_SCANS) @@ -83,8 +82,9 @@ class TplinkDeviceScanner(DeviceScanner): url = 'http://{}/userRpm/WlanStationRpm.htm'.format(self.host) referer = 'http://{}'.format(self.host) - page = requests.get(url, auth=(self.username, self.password), - headers={'referer': referer}) + page = requests.get( + url, auth=(self.username, self.password), + headers={'referer': referer}, timeout=4) result = self.parse_macs.findall(page.text) @@ -105,7 +105,7 @@ class Tplink2DeviceScanner(TplinkDeviceScanner): # pylint: disable=no-self-use def get_device_name(self, device): - """The firmware doesn't save the name of the wireless device.""" + """Get firmware doesn't save the name of the wireless device.""" return self.last_results.get(device) @Throttle(MIN_TIME_BETWEEN_SCANS) @@ -130,8 +130,9 @@ class Tplink2DeviceScanner(TplinkDeviceScanner): cookie = 'Authorization=Basic {}' \ .format(b64_encoded_username_password) - response = requests.post(url, headers={'referer': referer, - 'cookie': cookie}) + response = requests.post( + url, headers={'referer': referer, 'cookie': cookie}, + timeout=4) try: result = response.json().get('data') @@ -166,7 +167,7 @@ class Tplink3DeviceScanner(TplinkDeviceScanner): # pylint: disable=no-self-use def get_device_name(self, device): - """The firmware doesn't save the name of the wireless device. + """Get the firmware doesn't save the name of the wireless device. We are forced to use the MAC address as name here. """ @@ -181,17 +182,16 @@ class Tplink3DeviceScanner(TplinkDeviceScanner): referer = 'http://{}/webpages/login.html'.format(self.host) # If possible implement rsa encryption of password here. - response = requests.post(url, - params={'operation': 'login', - 'username': self.username, - 'password': self.password}, - headers={'referer': referer}) + response = requests.post( + url, params={'operation': 'login', 'username': self.username, + 'password': self.password}, + headers={'referer': referer}, timeout=4) try: self.stok = response.json().get('data').get('stok') _LOGGER.info(self.stok) - regex_result = re.search('sysauth=(.*);', - response.headers['set-cookie']) + regex_result = re.search( + 'sysauth=(.*);', response.headers['set-cookie']) self.sysauth = regex_result.group(1) _LOGGER.info(self.sysauth) return True diff --git a/homeassistant/components/device_tracker/trackr.py b/homeassistant/components/device_tracker/trackr.py index 557d1f68b2a..84fb449c070 100644 --- a/homeassistant/components/device_tracker/trackr.py +++ b/homeassistant/components/device_tracker/trackr.py @@ -37,18 +37,18 @@ class TrackRDeviceScanner(object): """Initialize the TrackR device scanner.""" from pytrackr.api import trackrApiInterface self.hass = hass - self.api = trackrApiInterface(config.get(CONF_USERNAME), - config.get(CONF_PASSWORD)) + self.api = trackrApiInterface( + config.get(CONF_USERNAME), config.get(CONF_PASSWORD)) self.see = see self.devices = self.api.get_trackrs() self._update_info() - track_utc_time_change(self.hass, self._update_info, - second=range(0, 60, 30)) + track_utc_time_change( + self.hass, self._update_info, second=range(0, 60, 30)) def _update_info(self, now=None) -> None: """Update the device info.""" - _LOGGER.debug('Updating devices %s', now) + _LOGGER.debug("Updating devices %s", now) # Update self.devices to collect new devices added # to the users account. diff --git a/homeassistant/components/device_tracker/ubus.py b/homeassistant/components/device_tracker/ubus.py index 083e1599d11..31c7d32c4c1 100644 --- a/homeassistant/components/device_tracker/ubus.py +++ b/homeassistant/components/device_tracker/ubus.py @@ -70,9 +70,9 @@ class UbusDeviceScanner(DeviceScanner): """Return the name of the given device or None if we don't know.""" with self.lock: if self.leasefile is None: - result = _req_json_rpc(self.url, self.session_id, - 'call', 'uci', 'get', - config="dhcp", type="dnsmasq") + result = _req_json_rpc( + self.url, self.session_id, 'call', 'uci', 'get', + config="dhcp", type="dnsmasq") if result: values = result["values"].values() self.leasefile = next(iter(values))["leasefile"] @@ -80,9 +80,9 @@ class UbusDeviceScanner(DeviceScanner): return if self.mac2name is None: - result = _req_json_rpc(self.url, self.session_id, - 'call', 'file', 'read', - path=self.leasefile) + result = _req_json_rpc( + self.url, self.session_id, 'call', 'file', 'read', + path=self.leasefile) if result: self.mac2name = dict() for line in result["data"].splitlines(): @@ -107,15 +107,15 @@ class UbusDeviceScanner(DeviceScanner): _LOGGER.info("Checking ARP") if not self.hostapd: - hostapd = _req_json_rpc(self.url, self.session_id, - 'list', 'hostapd.*', '') + hostapd = _req_json_rpc( + self.url, self.session_id, 'list', 'hostapd.*', '') self.hostapd.extend(hostapd.keys()) self.last_results = [] results = 0 for hostapd in self.hostapd: - result = _req_json_rpc(self.url, self.session_id, - 'call', hostapd, 'get_clients') + result = _req_json_rpc( + self.url, self.session_id, 'call', hostapd, 'get_clients') if result: results = results + 1 diff --git a/homeassistant/components/device_tracker/unifi.py b/homeassistant/components/device_tracker/unifi.py index e46abda08d0..42b5070b046 100644 --- a/homeassistant/components/device_tracker/unifi.py +++ b/homeassistant/components/device_tracker/unifi.py @@ -15,29 +15,31 @@ from homeassistant.components.device_tracker import ( from homeassistant.const import CONF_HOST, CONF_USERNAME, CONF_PASSWORD from homeassistant.const import CONF_VERIFY_SSL -# Unifi package doesn't list urllib3 as a requirement REQUIREMENTS = ['pyunifi==2.0'] _LOGGER = logging.getLogger(__name__) CONF_PORT = 'port' CONF_SITE_ID = 'site_id' + +DEFAULT_HOST = 'localhost' +DEFAULT_PORT = 8443 DEFAULT_VERIFY_SSL = True NOTIFICATION_ID = 'unifi_notification' NOTIFICATION_TITLE = 'Unifi Device Tracker Setup' PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ - vol.Optional(CONF_HOST, default='localhost'): cv.string, + vol.Optional(CONF_HOST, default=DEFAULT_HOST): cv.string, vol.Optional(CONF_SITE_ID, default='default'): cv.string, vol.Required(CONF_PASSWORD): cv.string, vol.Required(CONF_USERNAME): cv.string, - vol.Required(CONF_PORT, default=8443): cv.port, + vol.Required(CONF_PORT, default=DEFAULT_PORT): cv.port, vol.Optional(CONF_VERIFY_SSL, default=DEFAULT_VERIFY_SSL): cv.boolean, }) def get_scanner(hass, config): - """Setup Unifi device_tracker.""" + """Set up the Unifi device_tracker.""" from pyunifi.controller import Controller host = config[DOMAIN].get(CONF_HOST) @@ -52,7 +54,7 @@ def get_scanner(hass, config): ctrl = Controller(host, username, password, port, version='v4', site_id=site_id, ssl_verify=verify_ssl) except urllib.error.HTTPError as ex: - _LOGGER.error('Failed to connect to Unifi: %s', ex) + _LOGGER.error("Failed to connect to Unifi: %s", ex) persistent_notification.create( hass, 'Failed to connect to Unifi. ' 'Error: {}
    ' @@ -78,7 +80,7 @@ class UnifiScanner(DeviceScanner): try: clients = self._controller.get_clients() except urllib.error.HTTPError as ex: - _LOGGER.error('Failed to scan clients: %s', ex) + _LOGGER.error("Failed to scan clients: %s", ex) clients = [] self._clients = {client['mac']: client for client in clients} @@ -96,5 +98,5 @@ class UnifiScanner(DeviceScanner): """ client = self._clients.get(mac, {}) name = client.get('name') or client.get('hostname') - _LOGGER.debug('Device %s name %s', mac, name) + _LOGGER.debug("Device %s name %s", mac, name) return name diff --git a/homeassistant/components/device_tracker/upc_connect.py b/homeassistant/components/device_tracker/upc_connect.py index cec00221aaf..ace7c4455a9 100644 --- a/homeassistant/components/device_tracker/upc_connect.py +++ b/homeassistant/components/device_tracker/upc_connect.py @@ -95,7 +95,7 @@ class UPCDeviceScanner(DeviceScanner): @asyncio.coroutine def async_get_device_name(self, device): - """The firmware doesn't save the name of the wireless device.""" + """Ge the firmware doesn't save the name of the wireless device.""" return None @asyncio.coroutine @@ -118,7 +118,7 @@ class UPCDeviceScanner(DeviceScanner): 'Password': self.password, }) - # successfull? + # Successful? return data is not None except (asyncio.TimeoutError, aiohttp.ClientError): diff --git a/homeassistant/components/device_tracker/volvooncall.py b/homeassistant/components/device_tracker/volvooncall.py index 9d5220b877c..df1c778dcb6 100644 --- a/homeassistant/components/device_tracker/volvooncall.py +++ b/homeassistant/components/device_tracker/volvooncall.py @@ -13,7 +13,7 @@ _LOGGER = logging.getLogger(__name__) def setup_scanner(hass, config, see, discovery_info=None): - """Setup Volvo tracker.""" + """Set up the Volvo tracker.""" if discovery_info is None: return @@ -24,7 +24,7 @@ def setup_scanner(hass, config, see, discovery_info=None): dev_id = 'volvo_' + slugify(host_name) def see_vehicle(vehicle): - """Callback for reporting vehicle position.""" + """Handle the reporting of the vehicle position.""" see(dev_id=dev_id, host_name=host_name, gps=(vehicle.position['latitude'], diff --git a/homeassistant/components/device_tracker/xiaomi.py b/homeassistant/components/device_tracker/xiaomi.py index 7c5c415f054..e87cae3d50b 100644 --- a/homeassistant/components/device_tracker/xiaomi.py +++ b/homeassistant/components/device_tracker/xiaomi.py @@ -17,11 +17,10 @@ from homeassistant.components.device_tracker import ( from homeassistant.const import CONF_HOST, CONF_PASSWORD, CONF_USERNAME from homeassistant.util import Throttle -# Return cached results if last scan was less then this time ago. -MIN_TIME_BETWEEN_SCANS = timedelta(seconds=5) - _LOGGER = logging.getLogger(__name__) +MIN_TIME_BETWEEN_SCANS = timedelta(seconds=5) + PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ vol.Required(CONF_HOST): cv.string, vol.Required(CONF_USERNAME, default='admin'): cv.string, @@ -98,12 +97,12 @@ class XiaomiDeviceScanner(DeviceScanner): Return the list if successful. """ - _LOGGER.info('Refreshing device list') + _LOGGER.info("Refreshing device list") result = _retrieve_list(self.host, self.token) if result: return result else: - _LOGGER.info('Refreshing token and retrying device list refresh') + _LOGGER.info("Refreshing token and retrying device list refresh") self.token = _get_token(self.host, self.username, self.password) return _retrieve_list(self.host, self.token) @@ -117,40 +116,40 @@ class XiaomiDeviceScanner(DeviceScanner): def _retrieve_list(host, token, **kwargs): - """"Get device list for the given host.""" + """Get device list for the given host.""" url = "http://{}/cgi-bin/luci/;stok={}/api/misystem/devicelist" url = url.format(host, token) try: res = requests.get(url, timeout=5, **kwargs) except requests.exceptions.Timeout: - _LOGGER.exception('Connection to the router timed out at URL [%s]', - url) + _LOGGER.exception( + "Connection to the router timed out at URL %s", url) return if res.status_code != 200: - _LOGGER.exception('Connection failed with http code [%s]', - res.status_code) + _LOGGER.exception( + "Connection failed with http code %s", res.status_code) return try: result = res.json() except ValueError: # If json decoder could not parse the response - _LOGGER.exception('Failed to parse response from mi router') + _LOGGER.exception("Failed to parse response from mi router") return try: xiaomi_code = result['code'] except KeyError: - _LOGGER.exception('No field code in response from mi router. %s', - result) + _LOGGER.exception( + "No field code in response from mi router. %s", result) return if xiaomi_code == 0: try: return result['list'] except KeyError: - _LOGGER.exception('No list in response from mi router. %s', result) + _LOGGER.exception("No list in response from mi router. %s", result) return else: _LOGGER.info( - 'Receive wrong Xiaomi code [%s], expected [0] in response [%s]', + "Receive wrong Xiaomi code %s, expected 0 in response %s", xiaomi_code, result) return @@ -162,14 +161,14 @@ def _get_token(host, username, password): try: res = requests.post(url, data=data, timeout=5) except requests.exceptions.Timeout: - _LOGGER.exception('Connection to the router timed out') + _LOGGER.exception("Connection to the router timed out") return if res.status_code == 200: try: result = res.json() except ValueError: - # If json decoder could not parse the response - _LOGGER.exception('Failed to parse response from mi router') + # If JSON decoder could not parse the response + _LOGGER.exception("Failed to parse response from mi router") return try: return result['token'] diff --git a/homeassistant/components/dweet.py b/homeassistant/components/dweet.py index d812daf50a6..b4e8d68e960 100644 --- a/homeassistant/components/dweet.py +++ b/homeassistant/components/dweet.py @@ -33,7 +33,7 @@ CONFIG_SCHEMA = vol.Schema({ def setup(hass, config): - """Setup the Dweet.io component.""" + """Set up the Dweet.io component.""" conf = config[DOMAIN] name = conf.get(CONF_NAME) whitelist = conf.get(CONF_WHITELIST) diff --git a/homeassistant/components/ecobee.py b/homeassistant/components/ecobee.py index f6aa0c33e0f..f217d177de0 100644 --- a/homeassistant/components/ecobee.py +++ b/homeassistant/components/ecobee.py @@ -68,7 +68,7 @@ def request_configuration(network, hass, config): def setup_ecobee(hass, network, config): - """Setup Ecobee thermostat.""" + """Set up the Ecobee thermostat.""" # If ecobee has a PIN then it needs to be configured. if network.pin is not None: request_configuration(network, hass, config) @@ -80,8 +80,8 @@ def setup_ecobee(hass, network, config): hold_temp = config[DOMAIN].get(CONF_HOLD_TEMP) - discovery.load_platform(hass, 'climate', DOMAIN, - {'hold_temp': hold_temp}, config) + discovery.load_platform( + hass, 'climate', DOMAIN, {'hold_temp': hold_temp}, config) discovery.load_platform(hass, 'sensor', DOMAIN, {}, config) discovery.load_platform(hass, 'binary_sensor', DOMAIN, {}, config) @@ -90,7 +90,7 @@ class EcobeeData(object): """Get the latest data and update the states.""" def __init__(self, config_file): - """Initialize the Ecobee data object.""" + """Init the Ecobee data object.""" from pyecobee import Ecobee self.ecobee = Ecobee(config_file) @@ -102,7 +102,7 @@ class EcobeeData(object): def setup(hass, config): - """Setup Ecobee. + """Set up the Ecobee. Will automatically load thermostat and sensor components to support devices discovered on the network. diff --git a/homeassistant/components/emulated_hue/__init__.py b/homeassistant/components/emulated_hue/__init__.py index 2412b283abe..567528b72ff 100644 --- a/homeassistant/components/emulated_hue/__init__.py +++ b/homeassistant/components/emulated_hue/__init__.py @@ -53,11 +53,9 @@ DEFAULT_TYPE = TYPE_GOOGLE CONFIG_SCHEMA = vol.Schema({ DOMAIN: vol.Schema({ vol.Optional(CONF_HOST_IP): cv.string, - vol.Optional(CONF_LISTEN_PORT, default=DEFAULT_LISTEN_PORT): - vol.All(vol.Coerce(int), vol.Range(min=1, max=65535)), + vol.Optional(CONF_LISTEN_PORT, default=DEFAULT_LISTEN_PORT): cv.port, vol.Optional(CONF_ADVERTISE_IP): cv.string, - vol.Optional(CONF_ADVERTISE_PORT): - vol.All(vol.Coerce(int), vol.Range(min=1, max=65535)), + vol.Optional(CONF_ADVERTISE_PORT): cv.port, vol.Optional(CONF_UPNP_BIND_MULTICAST): cv.boolean, vol.Optional(CONF_OFF_MAPS_TO_ON_DOMAINS): cv.ensure_list, vol.Optional(CONF_EXPOSE_BY_DEFAULT): cv.boolean, @@ -111,8 +109,8 @@ def setup(hass, yaml_config): """Start the emulated hue bridge.""" upnp_listener.start() yield from server.start() - hass.bus.async_listen_once(EVENT_HOMEASSISTANT_STOP, - stop_emulated_hue_bridge) + hass.bus.async_listen_once( + EVENT_HOMEASSISTANT_STOP, stop_emulated_hue_bridge) hass.bus.listen_once(EVENT_HOMEASSISTANT_START, start_emulated_hue_bridge) @@ -120,7 +118,7 @@ def setup(hass, yaml_config): class Config(object): - """Holds configuration variables for the emulated hue bridge.""" + """Hold configuration variables for the emulated hue bridge.""" def __init__(self, hass, conf): """Initialize the instance.""" @@ -130,8 +128,8 @@ class Config(object): self.cached_states = {} if self.type == TYPE_ALEXA: - _LOGGER.warning('Alexa type is deprecated and will be removed in a' - ' future version') + _LOGGER.warning("Alexa type is deprecated and will be removed in a" + "future version") # Get the IP address that will be passed to the Echo during discovery self.host_ip_addr = conf.get(CONF_HOST_IP) @@ -150,8 +148,8 @@ class Config(object): self.listen_port) if self.type == TYPE_GOOGLE and self.listen_port != 80: - _LOGGER.warning('When targetting Google Home, listening port has ' - 'to be port 80') + _LOGGER.warning("When targetting Google Home, listening port has " + "to be port 80") # Get whether or not UPNP binds to multicast address (239.255.255.250) # or to the unicast address (host_ip_addr) @@ -245,7 +243,7 @@ class Config(object): # OSError if file not found or unaccessible/no permissions # ValueError if could not parse JSON if not isinstance(err, FileNotFoundError): - _LOGGER.warning('Failed to open %s: %s', NUMBERS_FILE, err) + _LOGGER.warning("Failed to open %s: %s", NUMBERS_FILE, err) return {} def _save_numbers_json(self): @@ -256,4 +254,4 @@ class Config(object): fil.write(json.dumps(self.numbers)) except OSError as err: # OSError if file write permissions - _LOGGER.warning('Failed to write %s: %s', NUMBERS_FILE, err) + _LOGGER.warning("Failed to write %s: %s", NUMBERS_FILE, err) diff --git a/homeassistant/components/enocean.py b/homeassistant/components/enocean.py index 33c6359d43f..17b82a5eeeb 100644 --- a/homeassistant/components/enocean.py +++ b/homeassistant/components/enocean.py @@ -27,7 +27,7 @@ CONFIG_SCHEMA = vol.Schema({ def setup(hass, config): - """Setup the EnOcean component.""" + """Set up the EnOcean component.""" global ENOCEAN_DONGLE serial_dev = config[DOMAIN].get(CONF_DEVICE) @@ -43,8 +43,8 @@ class EnOceanDongle: def __init__(self, hass, ser): """Initialize the EnOcean dongle.""" from enocean.communicators.serialcommunicator import SerialCommunicator - self.__communicator = SerialCommunicator(port=ser, - callback=self.callback) + self.__communicator = SerialCommunicator( + port=ser, callback=self.callback) self.__communicator.start() self.__devices = [] @@ -65,11 +65,10 @@ class EnOceanDongle: return output def callback(self, temp): - """Callback function for EnOcean Device. + """Function for an EnOcean device's callback. - This is the callback function called by - python-enocan whenever there is an incoming - packet. + This is the callback function called by python-enocan whenever there + is an incoming packet. """ from enocean.protocol.packet import RadioPacket if isinstance(temp, RadioPacket): diff --git a/homeassistant/components/envisalink.py b/homeassistant/components/envisalink.py index 05439213284..4a26295be96 100644 --- a/homeassistant/components/envisalink.py +++ b/homeassistant/components/envisalink.py @@ -19,26 +19,26 @@ from homeassistant.helpers.dispatcher import async_dispatcher_send REQUIREMENTS = ['pyenvisalink==2.0'] _LOGGER = logging.getLogger(__name__) + DOMAIN = 'envisalink' DATA_EVL = 'envisalink' -CONF_EVL_HOST = 'host' -CONF_EVL_PORT = 'port' -CONF_PANEL_TYPE = 'panel_type' -CONF_EVL_VERSION = 'evl_version' CONF_CODE = 'code' -CONF_USERNAME = 'user_name' -CONF_PASS = 'password' +CONF_EVL_HOST = 'host' CONF_EVL_KEEPALIVE = 'keepalive_interval' -CONF_ZONEDUMP_INTERVAL = 'zonedump_interval' -CONF_ZONES = 'zones' -CONF_PARTITIONS = 'partitions' - -CONF_ZONENAME = 'name' -CONF_ZONETYPE = 'type' -CONF_PARTITIONNAME = 'name' +CONF_EVL_PORT = 'port' +CONF_EVL_VERSION = 'evl_version' +CONF_PANEL_TYPE = 'panel_type' CONF_PANIC = 'panic_type' +CONF_PARTITIONNAME = 'name' +CONF_PARTITIONS = 'partitions' +CONF_PASS = 'password' +CONF_USERNAME = 'user_name' +CONF_ZONEDUMP_INTERVAL = 'zonedump_interval' +CONF_ZONENAME = 'name' +CONF_ZONES = 'zones' +CONF_ZONETYPE = 'type' DEFAULT_PORT = 4025 DEFAULT_EVL_VERSION = 3 @@ -83,7 +83,7 @@ CONFIG_SCHEMA = vol.Schema({ @asyncio.coroutine def async_setup(hass, config): - """Common setup for Envisalink devices.""" + """Set up for Envisalink devices.""" from pyenvisalink import EnvisalinkAlarmPanel conf = config.get(DOMAIN) @@ -109,27 +109,27 @@ def async_setup(hass, config): @callback def login_fail_callback(data): - """Callback for when the evl rejects our login.""" - _LOGGER.error("The envisalink rejected your credentials.") + """The callback for when the evl rejects our login.""" + _LOGGER.error("The Envisalink rejected your credentials") sync_connect.set_result(False) @callback def connection_fail_callback(data): """Network failure callback.""" - _LOGGER.error("Could not establish a connection with the envisalink.") + _LOGGER.error("Could not establish a connection with the Envisalink") sync_connect.set_result(False) @callback def connection_success_callback(data): - """Callback for a successful connection.""" - _LOGGER.info("Established a connection with the envisalink.") + """The callback for a successful connection.""" + _LOGGER.info("Established a connection with the Envisalink") hass.bus.async_listen_once(EVENT_HOMEASSISTANT_STOP, stop_envisalink) sync_connect.set_result(True) @callback def zones_updated_callback(data): """Handle zone timer updates.""" - _LOGGER.info("Envisalink sent a zone update event. Updating zones...") + _LOGGER.info("Envisalink sent a zone update event. Updating zones...") async_dispatcher_send(hass, SIGNAL_ZONE_UPDATE, data) @callback @@ -141,13 +141,13 @@ def async_setup(hass, config): @callback def partition_updated_callback(data): """Handle partition changes thrown by evl (including alarms).""" - _LOGGER.info("The envisalink sent a partition update event.") + _LOGGER.info("The envisalink sent a partition update event") async_dispatcher_send(hass, SIGNAL_PARTITION_UPDATE, data) @callback def stop_envisalink(event): """Shutdown envisalink connection and thread on exit.""" - _LOGGER.info("Shutting down envisalink.") + _LOGGER.info("Shutting down Envisalink") controller.stop() controller.callback_zone_timer_dump = zones_updated_callback diff --git a/homeassistant/components/fan/__init__.py b/homeassistant/components/fan/__init__.py index fc2ddb32500..500cebfe73b 100644 --- a/homeassistant/components/fan/__init__.py +++ b/homeassistant/components/fan/__init__.py @@ -22,11 +22,11 @@ from homeassistant.helpers.entity_component import EntityComponent from homeassistant.helpers.config_validation import PLATFORM_SCHEMA # noqa import homeassistant.helpers.config_validation as cv +_LOGGER = logging.getLogger(__name__) DOMAIN = 'fan' -SCAN_INTERVAL = timedelta(seconds=30) -_LOGGER = logging.getLogger(__name__) +SCAN_INTERVAL = timedelta(seconds=30) GROUP_NAME_ALL_FANS = 'all fans' ENTITY_ID_ALL_FANS = group.ENTITY_ID_FORMAT.format(GROUP_NAME_ALL_FANS) diff --git a/homeassistant/components/fan/demo.py b/homeassistant/components/fan/demo.py index 931f4914552..3a3f255b806 100644 --- a/homeassistant/components/fan/demo.py +++ b/homeassistant/components/fan/demo.py @@ -4,13 +4,11 @@ Demo fan platform that has a fake fan. For more details about this platform, please refer to the documentation https://home-assistant.io/components/demo/ """ - from homeassistant.components.fan import (SPEED_LOW, SPEED_MEDIUM, SPEED_HIGH, FanEntity, SUPPORT_SET_SPEED, SUPPORT_OSCILLATE, SUPPORT_DIRECTION) from homeassistant.const import STATE_OFF - FAN_NAME = 'Living Room Fan' FAN_ENTITY_ID = 'fan.living_room_fan' @@ -19,7 +17,7 @@ DEMO_SUPPORT = SUPPORT_SET_SPEED | SUPPORT_OSCILLATE | SUPPORT_DIRECTION # pylint: disable=unused-argument def setup_platform(hass, config, add_devices_callback, discovery_info=None): - """Setup demo fan platform.""" + """Set up the demo fan platform.""" add_devices_callback([ DemoFan(hass, FAN_NAME, STATE_OFF), ]) diff --git a/homeassistant/components/fan/isy994.py b/homeassistant/components/fan/isy994.py index f8c7b2e867d..4e61a0c209b 100644 --- a/homeassistant/components/fan/isy994.py +++ b/homeassistant/components/fan/isy994.py @@ -37,7 +37,7 @@ def setup_platform(hass, config: ConfigType, add_devices: Callable[[list], None], discovery_info=None): """Setup the ISY994 fan platform.""" if isy.ISY is None or not isy.ISY.connected: - _LOGGER.error('A connection has not been made to the ISY controller.') + _LOGGER.error("A connection has not been made to the ISY controller") return False devices = [] @@ -78,7 +78,7 @@ class ISYFanDevice(isy.ISYDevice, FanEntity): def set_speed(self, speed: str) -> None: """Send the set speed command to the ISY994 fan device.""" if not self._node.on(val=STATE_TO_VALUE.get(speed, 0)): - _LOGGER.debug('Unable to set fan speed') + _LOGGER.debug("Unable to set fan speed") else: self.speed = self.state @@ -89,7 +89,7 @@ class ISYFanDevice(isy.ISYDevice, FanEntity): def turn_off(self, **kwargs) -> None: """Send the turn off command to the ISY994 fan device.""" if not self._node.off(): - _LOGGER.debug('Unable to set fan speed') + _LOGGER.debug("Unable to set fan speed") else: self.speed = self.state @@ -112,13 +112,13 @@ class ISYFanProgram(ISYFanDevice): def turn_off(self, **kwargs) -> None: """Send the turn on command to ISY994 fan program.""" if not self._actions.runThen(): - _LOGGER.error('Unable to open the cover') + _LOGGER.error("Unable to turn off the fan") else: self.speed = STATE_ON if self.is_on else STATE_OFF def turn_on(self, **kwargs) -> None: """Send the turn off command to ISY994 fan program.""" if not self._actions.runElse(): - _LOGGER.error('Unable to close the cover') + _LOGGER.error("Unable to turn on the fan") else: self.speed = STATE_ON if self.is_on else STATE_OFF diff --git a/homeassistant/components/fan/mqtt.py b/homeassistant/components/fan/mqtt.py index 968f666fa72..bc732aa0aff 100644 --- a/homeassistant/components/fan/mqtt.py +++ b/homeassistant/components/fan/mqtt.py @@ -77,7 +77,7 @@ PLATFORM_SCHEMA = mqtt.MQTT_RW_PLATFORM_SCHEMA.extend({ @asyncio.coroutine def async_setup_platform(hass, config, async_add_devices, discovery_info=None): - """Setup MQTT fan platform.""" + """Set up the MQTT fan platform.""" async_add_devices([MqttFan( config.get(CONF_NAME), { @@ -140,7 +140,7 @@ class MqttFan(FanEntity): @asyncio.coroutine def async_added_to_hass(self): - """Subscribe mqtt events. + """Subscribe to MQTT events. This method is a coroutine. """ @@ -154,7 +154,7 @@ class MqttFan(FanEntity): @callback def state_received(topic, payload, qos): - """A new MQTT message has been received.""" + """Handle new received MQTT message.""" payload = templates[CONF_STATE](payload) if payload == self._payload[STATE_ON]: self._state = True @@ -169,7 +169,7 @@ class MqttFan(FanEntity): @callback def speed_received(topic, payload, qos): - """A new MQTT message for the speed has been received.""" + """Handle new received MQTT message for the speed.""" payload = templates[ATTR_SPEED](payload) if payload == self._payload[SPEED_LOW]: self._speed = SPEED_LOW @@ -187,7 +187,7 @@ class MqttFan(FanEntity): @callback def oscillation_received(topic, payload, qos): - """A new MQTT message has been received.""" + """Handle new received MQTT message for the oscillation.""" payload = templates[OSCILLATION](payload) if payload == self._payload[OSCILLATE_ON_PAYLOAD]: self._oscillation = True diff --git a/homeassistant/components/fan/wink.py b/homeassistant/components/fan/wink.py index 00eb082212d..98e301f5a48 100644 --- a/homeassistant/components/fan/wink.py +++ b/homeassistant/components/fan/wink.py @@ -14,8 +14,8 @@ from homeassistant.components.wink import WinkDevice, DOMAIN _LOGGER = logging.getLogger(__name__) -SPEED_LOWEST = "lowest" -SPEED_AUTO = "auto" +SPEED_LOWEST = 'lowest' +SPEED_AUTO = 'auto' def setup_platform(hass, config, add_devices, discovery_info=None): diff --git a/homeassistant/components/ffmpeg.py b/homeassistant/components/ffmpeg.py index 5b012ffad4a..959962f02ac 100644 --- a/homeassistant/components/ffmpeg.py +++ b/homeassistant/components/ffmpeg.py @@ -1,5 +1,5 @@ """ -Component that will help set the ffmpeg component. +Component that will help set the FFmpeg component. For more details about this component, please refer to the documentation at https://home-assistant.io/components/ffmpeg/ @@ -19,8 +19,9 @@ from homeassistant.helpers.dispatcher import ( import homeassistant.helpers.config_validation as cv from homeassistant.helpers.entity import Entity +REQUIREMENTS = ['ha-ffmpeg==1.5'] + DOMAIN = 'ffmpeg' -REQUIREMENTS = ["ha-ffmpeg==1.5"] _LOGGER = logging.getLogger(__name__) @@ -58,28 +59,28 @@ SERVICE_FFMPEG_SCHEMA = vol.Schema({ @callback def async_start(hass, entity_id=None): - """Start a ffmpeg process on entity.""" + """Start a FFmpeg process on entity.""" data = {ATTR_ENTITY_ID: entity_id} if entity_id else {} hass.async_add_job(hass.services.async_call(DOMAIN, SERVICE_START, data)) @callback def async_stop(hass, entity_id=None): - """Stop a ffmpeg process on entity.""" + """Stop a FFmpeg process on entity.""" data = {ATTR_ENTITY_ID: entity_id} if entity_id else {} hass.async_add_job(hass.services.async_call(DOMAIN, SERVICE_STOP, data)) @callback def async_restart(hass, entity_id=None): - """Restart a ffmpeg process on entity.""" + """Restart a FFmpeg process on entity.""" data = {ATTR_ENTITY_ID: entity_id} if entity_id else {} hass.async_add_job(hass.services.async_call(DOMAIN, SERVICE_RESTART, data)) @asyncio.coroutine def async_setup(hass, config): - """Setup the FFmpeg component.""" + """Set up the FFmpeg component.""" conf = config.get(DOMAIN, {}) manager = FFmpegManager( @@ -92,7 +93,7 @@ def async_setup(hass, config): None, load_yaml_config_file, os.path.join(os.path.dirname(__file__), 'services.yaml')) - # register service + # Register service @asyncio.coroutine def async_service_handle(service): """Handle service ffmpeg process.""" @@ -162,7 +163,7 @@ class FFmpegManager(object): class FFmpegBase(Entity): - """Interface object for ffmpeg.""" + """Interface object for FFmpeg.""" def __init__(self, initial_state=True): """Initialize ffmpeg base object.""" @@ -197,7 +198,7 @@ class FFmpegBase(Entity): @asyncio.coroutine def _async_start_ffmpeg(self, entity_ids): - """Start a ffmpeg process. + """Start a FFmpeg process. This method is a coroutine. """ @@ -205,7 +206,7 @@ class FFmpegBase(Entity): @asyncio.coroutine def _async_stop_ffmpeg(self, entity_ids): - """Stop a ffmpeg process. + """Stop a FFmpeg process. This method is a coroutine. """ @@ -214,7 +215,7 @@ class FFmpegBase(Entity): @asyncio.coroutine def _async_restart_ffmpeg(self, entity_ids): - """Stop a ffmpeg process. + """Stop a FFmpeg process. This method is a coroutine. """ @@ -224,10 +225,10 @@ class FFmpegBase(Entity): @callback def _async_register_events(self): - """Register a ffmpeg process/device.""" + """Register a FFmpeg process/device.""" @asyncio.coroutine def async_shutdown_handle(event): - """Stop ffmpeg process.""" + """Stop FFmpeg process.""" yield from self._async_stop_ffmpeg(None) self.hass.bus.async_listen_once( @@ -239,7 +240,7 @@ class FFmpegBase(Entity): @asyncio.coroutine def async_start_handle(event): - """Start ffmpeg process.""" + """Start FFmpeg process.""" yield from self._async_start_ffmpeg(None) self.hass.async_add_job(self.async_update_ha_state()) diff --git a/homeassistant/components/foursquare.py b/homeassistant/components/foursquare.py index 2afa808b502..61c5e9b1da6 100644 --- a/homeassistant/components/foursquare.py +++ b/homeassistant/components/foursquare.py @@ -1,5 +1,5 @@ """ -Allows utilizing the Foursquare (Swarm) API. +Support for the Foursquare (Swarm) API. For more details about this component, please refer to the documentation at https://home-assistant.io/components/foursquare/ @@ -11,9 +11,9 @@ import os import requests import voluptuous as vol +import homeassistant.helpers.config_validation as cv from homeassistant.const import CONF_ACCESS_TOKEN, HTTP_BAD_REQUEST from homeassistant.config import load_yaml_config_file -import homeassistant.helpers.config_validation as cv from homeassistant.components.http import HomeAssistantView _LOGGER = logging.getLogger(__name__) @@ -49,7 +49,7 @@ CONFIG_SCHEMA = vol.Schema({ def setup(hass, config): - """Setup the Foursquare component.""" + """Set up the Foursquare component.""" descriptions = load_yaml_config_file( os.path.join(os.path.dirname(__file__), 'services.yaml')) diff --git a/homeassistant/components/frontend/__init__.py b/homeassistant/components/frontend/__init__.py index b6f65d9953a..617db06be2c 100644 --- a/homeassistant/components/frontend/__init__.py +++ b/homeassistant/components/frontend/__init__.py @@ -17,27 +17,30 @@ from .version import FINGERPRINTS DOMAIN = 'frontend' DEPENDENCIES = ['api', 'websocket_api'] + URL_PANEL_COMPONENT = '/frontend/panels/{}.html' URL_PANEL_COMPONENT_FP = '/frontend/panels/{}-{}.html' + STATIC_PATH = os.path.join(os.path.dirname(__file__), 'www_static/') + MANIFEST_JSON = { - "background_color": "#FFFFFF", - "description": "Open-source home automation platform running on Python 3.", - "dir": "ltr", - "display": "standalone", - "icons": [], - "lang": "en-US", - "name": "Home Assistant", - "short_name": "Assistant", - "start_url": "/", - "theme_color": "#03A9F4" + 'background_color': '#FFFFFF', + 'description': 'Open-source home automation platform running on Python 3.', + 'dir': 'ltr', + 'display': 'standalone', + 'icons': [], + 'lang': 'en-US', + 'name': 'Home Assistant', + 'short_name': 'Assistant', + 'start_url': '/', + 'theme_color': '#03A9F4' } for size in (192, 384, 512, 1024): MANIFEST_JSON['icons'].append({ - "src": "/static/icons/favicon-{}x{}.png".format(size, size), - "sizes": "{}x{}".format(size, size), - "type": "image/png" + 'src': '/static/icons/favicon-{}x{}.png'.format(size, size), + 'sizes': '{}x{}'.format(size, size), + 'type': 'image/png' }) DATA_PANELS = 'frontend_panels' @@ -92,10 +95,10 @@ def register_panel(hass, component_name, path, md5=None, sidebar_title=None, url_path = component_name if url_path in panels: - _LOGGER.warning('Overwriting component %s', url_path) + _LOGGER.warning("Overwriting component %s", url_path) if not os.path.isfile(path): - _LOGGER.error('Panel %s component does not exist: %s', - component_name, path) + _LOGGER.error( + "Panel %s component does not exist: %s", component_name, path) return if md5 is None: @@ -133,8 +136,8 @@ def register_panel(hass, component_name, path, md5=None, sidebar_title=None, index_view = hass.data.get(DATA_INDEX_VIEW) if index_view: - hass.http.app.router.add_route('get', '/{}'.format(url_path), - index_view.get) + hass.http.app.router.add_route( + 'get', '/{}'.format(url_path), index_view.get) def add_manifest_json_key(key, val): @@ -143,7 +146,7 @@ def add_manifest_json_key(key, val): def setup(hass, config): - """Setup serving the frontend.""" + """Set up the serving of the frontend.""" hass.http.register_view(BootstrapView) hass.http.register_view(ManifestJSONView) @@ -186,8 +189,8 @@ def setup(hass, config): class BootstrapView(HomeAssistantView): """View to bootstrap frontend with all needed data.""" - url = "/api/bootstrap" - name = "api:bootstrap" + url = '/api/bootstrap' + name = 'api:bootstrap' @callback def get(self, request): @@ -207,7 +210,7 @@ class IndexView(HomeAssistantView): """Serve the frontend.""" url = '/' - name = "frontend:index" + name = 'frontend:index' requires_auth = False extra_urls = ['/states', '/states/{entity_id}'] @@ -284,8 +287,8 @@ class ManifestJSONView(HomeAssistantView): """View to return a manifest.json.""" requires_auth = False - url = "/manifest.json" - name = "manifestjson" + url = '/manifest.json' + name = 'manifestjson' @asyncio.coroutine def get(self, request): # pylint: disable=no-self-use diff --git a/homeassistant/components/google.py b/homeassistant/components/google.py index 0e1caf3e137..f7f8e63167f 100644 --- a/homeassistant/components/google.py +++ b/homeassistant/components/google.py @@ -158,7 +158,7 @@ def do_authentication(hass, config): def setup(hass, config): - """Setup the platform.""" + """Set up the Google platform.""" if DATA_INDEX not in hass.data: hass.data[DATA_INDEX] = {} @@ -174,7 +174,7 @@ def setup(hass, config): def setup_services(hass, track_new_found_calendars, calendar_service): - """Setup service listeners.""" + """Set up the service listeners.""" def _found_calendar(call): """Check if we know about a calendar and generate PLATFORM_DISCOVER.""" calendar = get_calendar_info(hass, call.data) @@ -214,7 +214,7 @@ def setup_services(hass, track_new_found_calendars, calendar_service): def do_setup(hass, config): """Run the setup after we have everything configured.""" - # load calendars the user has configured + # Load calendars the user has configured hass.data[DATA_INDEX] = load_config(hass.config.path(YAML_DEVICES)) calendar_service = GoogleCalendarService(hass.config.path(TOKEN_FILE)) @@ -228,16 +228,16 @@ def do_setup(hass, config): for calendar in hass.data[DATA_INDEX].values(): discovery.load_platform(hass, 'calendar', DOMAIN, calendar) - # look for any new calendars + # Look for any new calendars hass.services.call(DOMAIN, SERVICE_SCAN_CALENDARS, None) return True class GoogleCalendarService(object): - """Calendar service interface to google.""" + """Calendar service interface to Google.""" def __init__(self, token_file): - """We just need the token_file.""" + """Init the Google Calendar service.""" self.token_file = token_file def get(self): @@ -247,8 +247,8 @@ class GoogleCalendarService(object): from googleapiclient import discovery as google_discovery credentials = Storage(self.token_file).get() http = credentials.authorize(httplib2.Http()) - service = google_discovery.build('calendar', 'v3', http=http, - cache_discovery=False) + service = google_discovery.build( + 'calendar', 'v3', http=http, cache_discovery=False) return service @@ -259,8 +259,8 @@ def get_calendar_info(hass, calendar): CONF_ENTITIES: [{ CONF_TRACK: calendar['track'], CONF_NAME: calendar['summary'], - CONF_DEVICE_ID: generate_entity_id('{}', calendar['summary'], - hass=hass), + CONF_DEVICE_ID: generate_entity_id( + '{}', calendar['summary'], hass=hass), }] }) return calendar_info @@ -278,7 +278,7 @@ def load_config(path): DEVICE_SCHEMA(calendar)}) except VoluptuousError as exception: # keep going - _LOGGER.warning('Calendar Invalid Data: %s', exception) + _LOGGER.warning("Calendar Invalid Data: %s", exception) except FileNotFoundError: # When YAML file could not be loaded/did not contain a dict return {} diff --git a/homeassistant/components/graphite.py b/homeassistant/components/graphite.py index 4fef17f0927..fc2a196c4c6 100644 --- a/homeassistant/components/graphite.py +++ b/homeassistant/components/graphite.py @@ -12,11 +12,11 @@ import time import voluptuous as vol +import homeassistant.helpers.config_validation as cv from homeassistant.const import ( CONF_HOST, CONF_PORT, CONF_PREFIX, EVENT_HOMEASSISTANT_START, EVENT_HOMEASSISTANT_STOP, EVENT_STATE_CHANGED) from homeassistant.helpers import state -import homeassistant.helpers.config_validation as cv _LOGGER = logging.getLogger(__name__) @@ -35,7 +35,7 @@ CONFIG_SCHEMA = vol.Schema({ def setup(hass, config): - """Setup the Graphite feeder.""" + """Set up the Graphite feeder.""" conf = config[DOMAIN] host = conf.get(CONF_HOST) prefix = conf.get(CONF_PREFIX) @@ -75,28 +75,28 @@ class GraphiteFeeder(threading.Thread): hass.bus.listen_once(EVENT_HOMEASSISTANT_STOP, self.shutdown) hass.bus.listen(EVENT_STATE_CHANGED, self.event_listener) - _LOGGER.debug('Graphite feeding to %s:%i initialized', + _LOGGER.debug("Graphite feeding to %s:%i initialized", self._host, self._port) def start_listen(self, event): """Start event-processing thread.""" - _LOGGER.debug('Event processing thread started') + _LOGGER.debug("Event processing thread started") self._we_started = True self.start() def shutdown(self, event): """Signal shutdown of processing event.""" - _LOGGER.debug('Event processing signaled exit') + _LOGGER.debug("Event processing signaled exit") self._queue.put(self._quit_object) def event_listener(self, event): """Queue an event for processing.""" if self.is_alive() or not self._we_started: - _LOGGER.debug('Received event') + _LOGGER.debug("Received event") self._queue.put(event) else: - _LOGGER.error('Graphite feeder thread has died, not ' - 'queuing event!') + _LOGGER.error( + "Graphite feeder thread has died, not queuing event!") def _send_to_graphite(self, data): """Send data to Graphite.""" @@ -122,25 +122,25 @@ class GraphiteFeeder(threading.Thread): if isinstance(value, (float, int))] if not lines: return - _LOGGER.debug('Sending to graphite: %s', lines) + _LOGGER.debug("Sending to graphite: %s", lines) try: self._send_to_graphite('\n'.join(lines)) except socket.gaierror: - _LOGGER.error('Unable to connect to host %s', self._host) + _LOGGER.error("Unable to connect to host %s", self._host) except socket.error: - _LOGGER.exception('Failed to send data to graphite') + _LOGGER.exception("Failed to send data to graphite") def run(self): """Run the process to export the data.""" while True: event = self._queue.get() if event == self._quit_object: - _LOGGER.debug('Event processing thread stopped') + _LOGGER.debug("Event processing thread stopped") self._queue.task_done() return elif (event.event_type == EVENT_STATE_CHANGED and event.data.get('new_state')): - _LOGGER.debug('Processing STATE_CHANGED event for %s', + _LOGGER.debug("Processing STATE_CHANGED event for %s", event.data['entity_id']) try: self._report_attributes(event.data['entity_id'], @@ -149,9 +149,9 @@ class GraphiteFeeder(threading.Thread): except Exception: # Catch this so we can avoid the thread dying and # make it visible. - _LOGGER.exception('Failed to process STATE_CHANGED event') + _LOGGER.exception("Failed to process STATE_CHANGED event") else: - _LOGGER.warning('Processing unexpected event type %s', + _LOGGER.warning("Processing unexpected event type %s", event.event_type) self._queue.task_done() diff --git a/homeassistant/components/group.py b/homeassistant/components/group.py index f582ff33a07..5dde5d6fea8 100644 --- a/homeassistant/components/group.py +++ b/homeassistant/components/group.py @@ -1,5 +1,5 @@ """ -Provides functionality to group entities. +Provide the functionality to group entities. For more details about this component, please refer to the documentation at https://home-assistant.io/components/group/ @@ -168,7 +168,7 @@ def get_entity_ids(hass, entity_id, domain_filter=None): @asyncio.coroutine def async_setup(hass, config): - """Setup all groups found definded in the configuration.""" + """Set up all groups found definded in the configuration.""" component = EntityComponent(_LOGGER, DOMAIN, hass) yield from _async_process_config(hass, config, component) diff --git a/homeassistant/components/hassio.py b/homeassistant/components/hassio.py index 7431d646769..be0424e592c 100644 --- a/homeassistant/components/hassio.py +++ b/homeassistant/components/hassio.py @@ -1,5 +1,5 @@ """ -Exposes regular rest commands as services. +Exposes regular REST commands as services. For more details about this platform, please refer to the documentation at https://home-assistant.io/components/hassio/ @@ -21,11 +21,11 @@ from homeassistant.components.http import HomeAssistantView from homeassistant.helpers.aiohttp_client import async_get_clientsession from homeassistant.components.frontend import register_built_in_panel +_LOGGER = logging.getLogger(__name__) + DOMAIN = 'hassio' DEPENDENCIES = ['http'] -_LOGGER = logging.getLogger(__name__) - TIMEOUT = 10 HASSIO_REST_COMMANDS = { @@ -59,7 +59,7 @@ ADDON_REST_COMMANDS = { @asyncio.coroutine def async_setup(hass, config): - """Setup the hassio component.""" + """Set up the HASSio component.""" try: host = os.environ['HASSIO'] except KeyError: diff --git a/homeassistant/components/hdmi_cec.py b/homeassistant/components/hdmi_cec.py index 7b966e25022..1b6f644e23c 100644 --- a/homeassistant/components/hdmi_cec.py +++ b/homeassistant/components/hdmi_cec.py @@ -155,7 +155,7 @@ def parse_mapping(mapping, parents=None): def setup(hass: HomeAssistant, base_config): - """Setup CEC capability.""" + """Set up the CEC capability.""" from pycec.network import HDMINetwork from pycec.commands import CecCommand, KeyReleaseCommand, KeyPressCommand from pycec.const import KEY_VOLUME_UP, KEY_VOLUME_DOWN, KEY_MUTE_ON, \ @@ -283,9 +283,9 @@ def setup(hass: HomeAssistant, base_config): def _update(call): """ - Callback called when device update is needed. + The function called when device update is needed. - - called by service, requests CEC network to update data. + Called by service, requests CEC network to update data. """ hdmi_network.scan() diff --git a/homeassistant/components/history.py b/homeassistant/components/history.py index 5c68f767cd2..70c61589bb3 100644 --- a/homeassistant/components/history.py +++ b/homeassistant/components/history.py @@ -36,7 +36,7 @@ IGNORE_DOMAINS = ('zone', 'scene',) def last_recorder_run(hass): - """Retireve the last closed recorder run from the DB.""" + """Retrieve the last closed recorder run from the database.""" from homeassistant.components.recorder.models import RecorderRuns with session_scope(hass=hass) as session: @@ -174,7 +174,7 @@ def get_state(hass, utc_point_in_time, entity_id, run=None): # pylint: disable=unused-argument def setup(hass, config): - """Setup the history hooks.""" + """Set up the history hooks.""" filters = Filters() exclude = config[DOMAIN].get(CONF_EXCLUDE) if exclude: diff --git a/homeassistant/components/homematic.py b/homeassistant/components/homematic.py index 0b0d073fe1d..8c107fae26a 100644 --- a/homeassistant/components/homematic.py +++ b/homeassistant/components/homematic.py @@ -21,7 +21,7 @@ from homeassistant.helpers.entity import Entity from homeassistant.helpers.event import track_time_interval from homeassistant.config import load_yaml_config_file -REQUIREMENTS = ["pyhomematic==0.1.25"] +REQUIREMENTS = ['pyhomematic==0.1.25'] DOMAIN = 'homematic' @@ -215,7 +215,7 @@ def virtualkey(hass, address, channel, param, proxy=None): def set_var_value(hass, entity_id, value): - """Change value of homematic system variable.""" + """Change value of a Homematic system variable.""" data = { ATTR_ENTITY_ID: entity_id, ATTR_VALUE: value, @@ -225,7 +225,7 @@ def set_var_value(hass, entity_id, value): def set_dev_value(hass, address, channel, param, value, proxy=None): - """Send virtual keypress to homematic controlller.""" + """Send virtual keypress to the Homematic controlller.""" data = { ATTR_ADDRESS: address, ATTR_CHANNEL: channel, @@ -296,7 +296,7 @@ def setup(hass, config): entity_hubs.append(HMHub( hass, hub_data[CONF_NAME], hub_data[CONF_VARIABLES])) - # Regeister homematic services + # Register Homematic services descriptions = load_yaml_config_file( os.path.join(os.path.dirname(__file__), 'services.yaml')) @@ -389,7 +389,7 @@ def setup(hass, config): def _system_callback_handler(hass, config, src, *args): - """Callback handler.""" + """Handle the callback.""" if src == 'newDevices': _LOGGER.debug("newDevices with: %s", args) # pylint: disable=unused-variable diff --git a/homeassistant/components/http/__init__.py b/homeassistant/components/http/__init__.py index 536517604fc..dc5e59f4155 100644 --- a/homeassistant/components/http/__init__.py +++ b/homeassistant/components/http/__init__.py @@ -81,14 +81,13 @@ DEFAULT_LOGIN_ATTEMPT_THRESHOLD = -1 HTTP_SCHEMA = vol.Schema({ vol.Optional(CONF_API_PASSWORD, default=None): cv.string, vol.Optional(CONF_SERVER_HOST, default=DEFAULT_SERVER_HOST): cv.string, - vol.Optional(CONF_SERVER_PORT, default=SERVER_PORT): - vol.All(vol.Coerce(int), vol.Range(min=1, max=65535)), + vol.Optional(CONF_SERVER_PORT, default=SERVER_PORT): cv.port, vol.Optional(CONF_BASE_URL): cv.string, vol.Optional(CONF_DEVELOPMENT, default=DEFAULT_DEVELOPMENT): cv.string, vol.Optional(CONF_SSL_CERTIFICATE, default=None): cv.isfile, vol.Optional(CONF_SSL_KEY, default=None): cv.isfile, - vol.Optional(CONF_CORS_ORIGINS, default=[]): vol.All(cv.ensure_list, - [cv.string]), + vol.Optional(CONF_CORS_ORIGINS, default=[]): + vol.All(cv.ensure_list, [cv.string]), vol.Optional(CONF_USE_X_FORWARDED_FOR, default=False): cv.boolean, vol.Optional(CONF_TRUSTED_NETWORKS, default=[]): vol.All(cv.ensure_list, [ip_network]), @@ -143,12 +142,12 @@ def async_setup(hass, config): @asyncio.coroutine def stop_server(event): - """Callback to stop the server.""" + """Stop the server.""" yield from server.stop() @asyncio.coroutine def start_server(event): - """Callback to start the server.""" + """Start the server.""" hass.bus.async_listen_once(EVENT_HOMEASSISTANT_STOP, stop_server) yield from server.start() @@ -294,7 +293,7 @@ class HomeAssistantWSGI(object): @asyncio.coroutine def start(self): - """Start the wsgi server.""" + """Start the WSGI server.""" cors_added = set() if self.cors is not None: for route in list(self.app.router.routes()): @@ -400,7 +399,7 @@ class HomeAssistantView(object): def request_handler_factory(view, handler): - """Factory to wrap our handler classes.""" + """Wrap the handler classes.""" assert asyncio.iscoroutinefunction(handler) or is_callback(handler), \ "Handler should be a coroutine or a callback." diff --git a/homeassistant/components/http/auth.py b/homeassistant/components/http/auth.py index 6ff653eef35..2a0413e9dbc 100644 --- a/homeassistant/components/http/auth.py +++ b/homeassistant/components/http/auth.py @@ -14,7 +14,7 @@ _LOGGER = logging.getLogger(__name__) @asyncio.coroutine def auth_middleware(app, handler): - """Authentication middleware.""" + """Authenticate as middleware.""" # If no password set, just always set authenticated=True if app['hass'].http.api_password is None: @asyncio.coroutine @@ -32,8 +32,8 @@ def auth_middleware(app, handler): authenticated = False if (HTTP_HEADER_HA_AUTH in request.headers and - validate_password(request, - request.headers[HTTP_HEADER_HA_AUTH])): + validate_password( + request, request.headers[HTTP_HEADER_HA_AUTH])): # A valid auth header has been set authenticated = True @@ -62,5 +62,5 @@ def is_trusted_ip(request): def validate_password(request, api_password): """Test if password is valid.""" - return hmac.compare_digest(api_password, - request.app['hass'].http.api_password) + return hmac.compare_digest( + api_password, request.app['hass'].http.api_password) diff --git a/homeassistant/components/http/ban.py b/homeassistant/components/http/ban.py index 8ae18ef6e80..53635af9fc8 100644 --- a/homeassistant/components/http/ban.py +++ b/homeassistant/components/http/ban.py @@ -94,8 +94,8 @@ def process_wrong_login(request): None, update_ip_bans_config, hass.config.path(IP_BANS_FILE), new_ban) - _LOGGER.warning('Banned IP %s for too many login attempts', - remote_addr) + _LOGGER.warning( + "Banned IP %s for too many login attempts", remote_addr) persistent_notification.async_create( hass, @@ -107,13 +107,13 @@ class IpBan(object): """Represents banned IP address.""" def __init__(self, ip_ban: str, banned_at: datetime=None) -> None: - """Initializing Ip Ban object.""" + """Initialize IP Ban object.""" self.ip_address = ip_address(ip_ban) self.banned_at = banned_at or datetime.utcnow() def load_ip_bans_config(path: str): - """Loading list of banned IPs from config file.""" + """Load list of banned IPs from config file.""" ip_list = [] if not os.path.isfile(path): @@ -130,7 +130,7 @@ def load_ip_bans_config(path: str): ip_info = SCHEMA_IP_BAN_ENTRY(ip_info) ip_list.append(IpBan(ip_ban, ip_info['banned_at'])) except vol.Invalid as err: - _LOGGER.error('Failed to load IP ban %s: %s', ip_info, err) + _LOGGER.error("Failed to load IP ban %s: %s", ip_info, err) continue return ip_list diff --git a/homeassistant/components/ifttt.py b/homeassistant/components/ifttt.py index 123d1a9d382..0a4ad66ce56 100644 --- a/homeassistant/components/ifttt.py +++ b/homeassistant/components/ifttt.py @@ -52,7 +52,7 @@ def trigger(hass, event, value1=None, value2=None, value3=None): def setup(hass, config): - """Setup the IFTTT service component.""" + """Set up the IFTTT service component.""" key = config[DOMAIN][CONF_KEY] def trigger_service(call): diff --git a/homeassistant/components/image_processing/__init__.py b/homeassistant/components/image_processing/__init__.py index c63d3d01ce9..a37f1163b3d 100644 --- a/homeassistant/components/image_processing/__init__.py +++ b/homeassistant/components/image_processing/__init__.py @@ -20,7 +20,6 @@ from homeassistant.helpers.entity import Entity from homeassistant.helpers.entity_component import EntityComponent from homeassistant.loader import get_component - DOMAIN = 'image_processing' DEPENDENCIES = ['camera'] @@ -67,7 +66,7 @@ def scan(hass, entity_id=None): @asyncio.coroutine def async_setup(hass, config): - """Setup image processing.""" + """Set up image processing.""" component = EntityComponent(_LOGGER, DOMAIN, hass, SCAN_INTERVAL) yield from component.async_setup(config) diff --git a/homeassistant/components/image_processing/demo.py b/homeassistant/components/image_processing/demo.py index 3cc2c17654c..a7f4ad5e3d6 100644 --- a/homeassistant/components/image_processing/demo.py +++ b/homeassistant/components/image_processing/demo.py @@ -12,7 +12,7 @@ from homeassistant.components.image_processing.microsoft_face_identify import ( def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the demo image_processing platform.""" + """Set up the demo image_processing platform.""" add_devices([ DemoImageProcessingAlpr('camera.demo_camera', "Demo Alpr"), DemoImageProcessingFace( diff --git a/homeassistant/components/image_processing/microsoft_face_detect.py b/homeassistant/components/image_processing/microsoft_face_detect.py index bb1a7accd15..e12c2d1d646 100644 --- a/homeassistant/components/image_processing/microsoft_face_detect.py +++ b/homeassistant/components/image_processing/microsoft_face_detect.py @@ -50,7 +50,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ @asyncio.coroutine def async_setup_platform(hass, config, async_add_devices, discovery_info=None): - """Set up the microsoft face detection platform.""" + """Set up the Microsoft Face detection platform.""" api = hass.data[DATA_MICROSOFT_FACE] attributes = config[CONF_ATTRIBUTES] @@ -64,10 +64,10 @@ def async_setup_platform(hass, config, async_add_devices, discovery_info=None): class MicrosoftFaceDetectEntity(ImageProcessingFaceEntity): - """Microsoft face api entity for identify.""" + """Microsoft Face API entity for identify.""" def __init__(self, camera_entity, api, attributes, name=None): - """Initialize openalpr local api.""" + """Initialize Microsoft Face.""" super().__init__() self._api = api diff --git a/homeassistant/components/image_processing/microsoft_face_identify.py b/homeassistant/components/image_processing/microsoft_face_identify.py index 273a00c294d..a645aef2fcb 100644 --- a/homeassistant/components/image_processing/microsoft_face_identify.py +++ b/homeassistant/components/image_processing/microsoft_face_identify.py @@ -42,7 +42,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ @asyncio.coroutine def async_setup_platform(hass, config, async_add_devices, discovery_info=None): - """Set up the Microsoft face identify platform.""" + """Set up the Microsoft Face identify platform.""" api = hass.data[DATA_MICROSOFT_FACE] face_group = config[CONF_GROUP] confidence = config[CONF_CONFIDENCE] @@ -145,10 +145,10 @@ class ImageProcessingFaceEntity(ImageProcessingEntity): class MicrosoftFaceIdentifyEntity(ImageProcessingFaceEntity): - """Microsoft face api entity for identify.""" + """Representation of the Microsoft Face API entity for identify.""" def __init__(self, camera_entity, api, face_group, confidence, name=None): - """Initialize openalpr local api.""" + """Initialize the Microsoft Face API.""" super().__init__() self._api = api diff --git a/homeassistant/components/image_processing/openalpr_cloud.py b/homeassistant/components/image_processing/openalpr_cloud.py index 1ba8dfcfbc4..1143c1e04ae 100644 --- a/homeassistant/components/image_processing/openalpr_cloud.py +++ b/homeassistant/components/image_processing/openalpr_cloud.py @@ -1,5 +1,5 @@ """ -Component that will help set the openalpr cloud for alpr processing. +Component that will help set the OpenALPR cloud for ALPR processing. For more details about this component, please refer to the documentation at https://home-assistant.io/components/image_processing.openalpr_cloud/ @@ -51,7 +51,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ @asyncio.coroutine def async_setup_platform(hass, config, async_add_devices, discovery_info=None): - """Set up the openalpr cloud api platform.""" + """Set up the OpenALPR cloud API platform.""" confidence = config[CONF_CONFIDENCE] params = { 'secret_key': config[CONF_API_KEY], @@ -70,10 +70,10 @@ def async_setup_platform(hass, config, async_add_devices, discovery_info=None): class OpenAlprCloudEntity(ImageProcessingAlprEntity): - """OpenAlpr cloud entity.""" + """OpenALPR cloud entity.""" def __init__(self, camera_entity, params, confidence, name=None): - """Initialize openalpr local api.""" + """Initialize OpenALPR cloud API.""" super().__init__() self._params = params @@ -126,7 +126,7 @@ class OpenAlprCloudEntity(ImageProcessingAlprEntity): return except (asyncio.TimeoutError, aiohttp.ClientError): - _LOGGER.error("Timeout for openalpr api.") + _LOGGER.error("Timeout for OpenALPR API") return # processing api data diff --git a/homeassistant/components/image_processing/openalpr_local.py b/homeassistant/components/image_processing/openalpr_local.py index 4040efe3bf4..05ca2cffcd0 100644 --- a/homeassistant/components/image_processing/openalpr_local.py +++ b/homeassistant/components/image_processing/openalpr_local.py @@ -1,5 +1,5 @@ """ -Component that will help set the openalpr local for alpr processing. +Component that will help set the OpenALPR local for ALPR processing. For more details about this component, please refer to the documentation at https://home-assistant.io/components/image_processing.openalpr_local/ @@ -60,7 +60,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ @asyncio.coroutine def async_setup_platform(hass, config, async_add_devices, discovery_info=None): - """Set up the openalpr local platform.""" + """Set up the OpenALPR local platform.""" command = [config[CONF_ALPR_BIN], '-c', config[CONF_REGION], '-'] confidence = config[CONF_CONFIDENCE] @@ -74,7 +74,7 @@ def async_setup_platform(hass, config, async_add_devices, discovery_info=None): class ImageProcessingAlprEntity(ImageProcessingEntity): - """Base entity class for alpr image processing.""" + """Base entity class for ALPR image processing.""" def __init__(self): """Initialize base alpr entity.""" @@ -144,10 +144,10 @@ class ImageProcessingAlprEntity(ImageProcessingEntity): class OpenAlprLocalEntity(ImageProcessingAlprEntity): - """OpenAlpr local api entity.""" + """OpenALPR local api entity.""" def __init__(self, camera_entity, command, confidence, name=None): - """Initialize openalpr local api.""" + """Initialize OpenALPR local API.""" super().__init__() self._cmd = command diff --git a/homeassistant/components/influxdb.py b/homeassistant/components/influxdb.py index 58479b6c14e..abd02554ac0 100644 --- a/homeassistant/components/influxdb.py +++ b/homeassistant/components/influxdb.py @@ -58,7 +58,7 @@ CONFIG_SCHEMA = vol.Schema({ def setup(hass, config): - """Setup the InfluxDB component.""" + """Set up the InfluxDB component.""" from influxdb import InfluxDBClient, exceptions conf = config[DOMAIN] diff --git a/homeassistant/components/input_boolean.py b/homeassistant/components/input_boolean.py index dd27ab3ebda..e975e42bcdc 100644 --- a/homeassistant/components/input_boolean.py +++ b/homeassistant/components/input_boolean.py @@ -63,7 +63,7 @@ def toggle(hass, entity_id): @asyncio.coroutine def async_setup(hass, config): - """Set up input boolean.""" + """Set up an input boolean.""" component = EntityComponent(_LOGGER, DOMAIN, hass) entities = [] @@ -140,7 +140,7 @@ class InputBoolean(ToggleEntity): @asyncio.coroutine def async_added_to_hass(self): - """Called when entity about to be added to hass.""" + """Call when entity about to be added to hass.""" # If not None, we got an initial value. if self._state is not None: return diff --git a/homeassistant/components/input_select.py b/homeassistant/components/input_select.py index 7247a8b1093..94ef3318930 100644 --- a/homeassistant/components/input_select.py +++ b/homeassistant/components/input_select.py @@ -56,7 +56,7 @@ SERVICE_SET_OPTIONS_SCHEMA = vol.Schema({ def _cv_input_select(cfg): - """Config validation helper for input select (Voluptuous).""" + """Configuration validation helper for input select (voluptuous).""" options = cfg[CONF_OPTIONS] initial = cfg.get(CONF_INITIAL) if initial is not None and initial not in options: @@ -109,7 +109,7 @@ def set_options(hass, entity_id, options): @asyncio.coroutine def async_setup(hass, config): - """Setup input select.""" + """Set up an input select.""" component = EntityComponent(_LOGGER, DOMAIN, hass) entities = [] @@ -197,7 +197,7 @@ class InputSelect(Entity): @asyncio.coroutine def async_added_to_hass(self): - """Called when entity about to be added to hass.""" + """Run when entity about to be added.""" if self._current_option is not None: return diff --git a/homeassistant/components/input_slider.py b/homeassistant/components/input_slider.py index c4976bb43e8..b0975f9dbae 100644 --- a/homeassistant/components/input_slider.py +++ b/homeassistant/components/input_slider.py @@ -9,9 +9,9 @@ import logging import voluptuous as vol +import homeassistant.helpers.config_validation as cv from homeassistant.const import ( ATTR_ENTITY_ID, ATTR_UNIT_OF_MEASUREMENT, CONF_ICON, CONF_NAME) -import homeassistant.helpers.config_validation as cv from homeassistant.helpers.entity import Entity from homeassistant.helpers.entity_component import EntityComponent from homeassistant.helpers.restore_state import async_get_last_state @@ -39,7 +39,7 @@ SERVICE_SELECT_VALUE_SCHEMA = vol.Schema({ def _cv_input_slider(cfg): - """Config validation helper for input slider (Voluptuous).""" + """Configuration validation helper for input slider (voluptuous).""" minimum = cfg.get(CONF_MIN) maximum = cfg.get(CONF_MAX) if minimum >= maximum: @@ -78,7 +78,7 @@ def select_value(hass, entity_id, value): @asyncio.coroutine def async_setup(hass, config): - """Set up input slider.""" + """Set up an input slider.""" component = EntityComponent(_LOGGER, DOMAIN, hass) entities = [] @@ -92,8 +92,8 @@ def async_setup(hass, config): icon = cfg.get(CONF_ICON) unit = cfg.get(ATTR_UNIT_OF_MEASUREMENT) - entities.append(InputSlider(object_id, name, initial, minimum, maximum, - step, icon, unit)) + entities.append(InputSlider( + object_id, name, initial, minimum, maximum, step, icon, unit)) if not entities: return False @@ -138,27 +138,27 @@ class InputSlider(Entity): @property def name(self): - """Name of the select input.""" + """Return the name of the select input slider.""" return self._name @property def icon(self): - """Icon to be used for this entity.""" + """Return the icon to be used for this entity.""" return self._icon @property def state(self): - """State of the component.""" + """Return the state of the component.""" return self._current_value @property def unit_of_measurement(self): - """Unit of measurement of slider.""" + """Return the unit the value is expressed in.""" return self._unit @property def state_attributes(self): - """State attributes.""" + """Return the state attributes.""" return { ATTR_MIN: self._minimum, ATTR_MAX: self._maximum, @@ -167,7 +167,7 @@ class InputSlider(Entity): @asyncio.coroutine def async_added_to_hass(self): - """Called when entity about to be added to hass.""" + """Run when entity about to be added to hass.""" if self._current_value is not None: return @@ -185,7 +185,7 @@ class InputSlider(Entity): """Select new value.""" num_value = float(value) if num_value < self._minimum or num_value > self._maximum: - _LOGGER.warning('Invalid value: %s (range %s - %s)', + _LOGGER.warning("Invalid value: %s (range %s - %s)", num_value, self._minimum, self._maximum) return self._current_value = num_value diff --git a/homeassistant/components/insteon_hub.py b/homeassistant/components/insteon_hub.py index 9d77a0fc5c3..49e6c566c46 100644 --- a/homeassistant/components/insteon_hub.py +++ b/homeassistant/components/insteon_hub.py @@ -29,12 +29,12 @@ CONFIG_SCHEMA = vol.Schema({ def setup(hass, config): - """Setup Insteon Hub component. + """Set up the Insteon Hub component. This will automatically import associated lights. """ - _LOGGER.warning('Component disabled at request from Insteon. ' - 'For more information: https://goo.gl/zLJaic') + _LOGGER.warning("Component disabled at request from Insteon. " + "For more information: https://goo.gl/zLJaic") return False # pylint: disable=unreachable import insteon diff --git a/homeassistant/components/insteon_local.py b/homeassistant/components/insteon_local.py index cf93bc97e57..1f700b5ff3e 100644 --- a/homeassistant/components/insteon_local.py +++ b/homeassistant/components/insteon_local.py @@ -33,7 +33,7 @@ CONFIG_SCHEMA = vol.Schema({ def setup(hass, config): - """Set up Insteon Hub component. + """Set up the Insteon Hub component. This will automatically import associated lights. """ @@ -48,7 +48,7 @@ def setup(hass, config): try: insteonhub = Hub(host, username, password, port, timeout, _LOGGER) - # check for successful connection + # Check for successful connection insteonhub.get_buffer_status() except requests.exceptions.ConnectTimeout: _LOGGER.error("Error on insteon_local." diff --git a/homeassistant/components/insteon_plm.py b/homeassistant/components/insteon_plm.py index d786de7ac8a..b62a2e229ae 100644 --- a/homeassistant/components/insteon_plm.py +++ b/homeassistant/components/insteon_plm.py @@ -40,7 +40,7 @@ PLM_PLATFORMS = { @asyncio.coroutine def async_setup(hass, config): - """Set up our connection to the PLM.""" + """Set up the connection to the PLM.""" import insteonplm conf = config[DOMAIN] @@ -49,12 +49,12 @@ def async_setup(hass, config): @callback def async_plm_new_device(device): - """New device detected from transport to be delegated to platform.""" + """Detect device from transport to be delegated to platform.""" name = device.get('address') address = device.get('address_hex') capabilities = device.get('capabilities', []) - _LOGGER.info('New INSTEON PLM device: %s (%s) %r', + _LOGGER.info("New INSTEON PLM device: %s (%s) %r", name, address, capabilities) loadlist = [] @@ -72,7 +72,7 @@ def async_setup(hass, config): hass, loadplatform, DOMAIN, discovered=[device], hass_config=config)) - _LOGGER.info('Looking for PLM on %s', port) + _LOGGER.info("Looking for PLM on %s", port) plm = yield from insteonplm.Connection.create(device=port, loop=hass.loop) for device in overrides: diff --git a/homeassistant/components/introduction.py b/homeassistant/components/introduction.py index afbcca14253..367eeb1a6c3 100644 --- a/homeassistant/components/introduction.py +++ b/homeassistant/components/introduction.py @@ -16,7 +16,7 @@ CONFIG_SCHEMA = vol.Schema({ def setup(hass, config=None): - """Setup the introduction component.""" + """Set up the introduction component.""" log = logging.getLogger(__name__) log.info(""" diff --git a/homeassistant/components/ios.py b/homeassistant/components/ios.py index bac5bb59d96..e6edcc21b05 100644 --- a/homeassistant/components/ios.py +++ b/homeassistant/components/ios.py @@ -1,7 +1,7 @@ """ Native Home Assistant iOS app component. -For more details about this platform, please refer to the documentation at +For more details about this component, please refer to the documentation at https://home-assistant.io/ecosystem/ios/ """ import asyncio @@ -28,76 +28,76 @@ from homeassistant.const import (HTTP_INTERNAL_SERVER_ERROR, _LOGGER = logging.getLogger(__name__) -DOMAIN = "ios" +DOMAIN = 'ios' -DEPENDENCIES = ["device_tracker", "http", "zeroconf"] +DEPENDENCIES = ['device_tracker', 'http', 'zeroconf'] -CONF_PUSH = "push" -CONF_PUSH_CATEGORIES = "categories" -CONF_PUSH_CATEGORIES_NAME = "name" -CONF_PUSH_CATEGORIES_IDENTIFIER = "identifier" -CONF_PUSH_CATEGORIES_ACTIONS = "actions" +CONF_PUSH = 'push' +CONF_PUSH_CATEGORIES = 'categories' +CONF_PUSH_CATEGORIES_NAME = 'name' +CONF_PUSH_CATEGORIES_IDENTIFIER = 'identifier' +CONF_PUSH_CATEGORIES_ACTIONS = 'actions' -CONF_PUSH_ACTIONS_IDENTIFIER = "identifier" -CONF_PUSH_ACTIONS_TITLE = "title" -CONF_PUSH_ACTIONS_ACTIVATION_MODE = "activationMode" -CONF_PUSH_ACTIONS_AUTHENTICATION_REQUIRED = "authenticationRequired" -CONF_PUSH_ACTIONS_DESTRUCTIVE = "destructive" -CONF_PUSH_ACTIONS_BEHAVIOR = "behavior" -CONF_PUSH_ACTIONS_CONTEXT = "context" -CONF_PUSH_ACTIONS_TEXT_INPUT_BUTTON_TITLE = "textInputButtonTitle" -CONF_PUSH_ACTIONS_TEXT_INPUT_PLACEHOLDER = "textInputPlaceholder" +CONF_PUSH_ACTIONS_IDENTIFIER = 'identifier' +CONF_PUSH_ACTIONS_TITLE = 'title' +CONF_PUSH_ACTIONS_ACTIVATION_MODE = 'activationMode' +CONF_PUSH_ACTIONS_AUTHENTICATION_REQUIRED = 'authenticationRequired' +CONF_PUSH_ACTIONS_DESTRUCTIVE = 'destructive' +CONF_PUSH_ACTIONS_BEHAVIOR = 'behavior' +CONF_PUSH_ACTIONS_CONTEXT = 'context' +CONF_PUSH_ACTIONS_TEXT_INPUT_BUTTON_TITLE = 'textInputButtonTitle' +CONF_PUSH_ACTIONS_TEXT_INPUT_PLACEHOLDER = 'textInputPlaceholder' -ATTR_FOREGROUND = "foreground" -ATTR_BACKGROUND = "background" +ATTR_FOREGROUND = 'foreground' +ATTR_BACKGROUND = 'background' ACTIVATION_MODES = [ATTR_FOREGROUND, ATTR_BACKGROUND] -ATTR_DEFAULT_BEHAVIOR = "default" -ATTR_TEXT_INPUT_BEHAVIOR = "textInput" +ATTR_DEFAULT_BEHAVIOR = 'default' +ATTR_TEXT_INPUT_BEHAVIOR = 'textInput' BEHAVIORS = [ATTR_DEFAULT_BEHAVIOR, ATTR_TEXT_INPUT_BEHAVIOR] -ATTR_LAST_SEEN_AT = "lastSeenAt" +ATTR_LAST_SEEN_AT = 'lastSeenAt' -ATTR_DEVICE = "device" -ATTR_PUSH_TOKEN = "pushToken" -ATTR_APP = "app" -ATTR_PERMISSIONS = "permissions" -ATTR_PUSH_ID = "pushId" -ATTR_DEVICE_ID = "deviceId" -ATTR_PUSH_SOUNDS = "pushSounds" -ATTR_BATTERY = "battery" +ATTR_DEVICE = 'device' +ATTR_PUSH_TOKEN = 'pushToken' +ATTR_APP = 'app' +ATTR_PERMISSIONS = 'permissions' +ATTR_PUSH_ID = 'pushId' +ATTR_DEVICE_ID = 'deviceId' +ATTR_PUSH_SOUNDS = 'pushSounds' +ATTR_BATTERY = 'battery' -ATTR_DEVICE_NAME = "name" -ATTR_DEVICE_LOCALIZED_MODEL = "localizedModel" -ATTR_DEVICE_MODEL = "model" -ATTR_DEVICE_PERMANENT_ID = "permanentID" -ATTR_DEVICE_SYSTEM_VERSION = "systemVersion" -ATTR_DEVICE_TYPE = "type" -ATTR_DEVICE_SYSTEM_NAME = "systemName" +ATTR_DEVICE_NAME = 'name' +ATTR_DEVICE_LOCALIZED_MODEL = 'localizedModel' +ATTR_DEVICE_MODEL = 'model' +ATTR_DEVICE_PERMANENT_ID = 'permanentID' +ATTR_DEVICE_SYSTEM_VERSION = 'systemVersion' +ATTR_DEVICE_TYPE = 'type' +ATTR_DEVICE_SYSTEM_NAME = 'systemName' -ATTR_APP_BUNDLE_IDENTIFER = "bundleIdentifer" -ATTR_APP_BUILD_NUMBER = "buildNumber" -ATTR_APP_VERSION_NUMBER = "versionNumber" +ATTR_APP_BUNDLE_IDENTIFER = 'bundleIdentifer' +ATTR_APP_BUILD_NUMBER = 'buildNumber' +ATTR_APP_VERSION_NUMBER = 'versionNumber' -ATTR_LOCATION_PERMISSION = "location" -ATTR_NOTIFICATIONS_PERMISSION = "notifications" +ATTR_LOCATION_PERMISSION = 'location' +ATTR_NOTIFICATIONS_PERMISSION = 'notifications' PERMISSIONS = [ATTR_LOCATION_PERMISSION, ATTR_NOTIFICATIONS_PERMISSION] -ATTR_BATTERY_STATE = "state" -ATTR_BATTERY_LEVEL = "level" +ATTR_BATTERY_STATE = 'state' +ATTR_BATTERY_LEVEL = 'level' -ATTR_BATTERY_STATE_UNPLUGGED = "Unplugged" -ATTR_BATTERY_STATE_CHARGING = "Charging" -ATTR_BATTERY_STATE_FULL = "Full" -ATTR_BATTERY_STATE_UNKNOWN = "Unknown" +ATTR_BATTERY_STATE_UNPLUGGED = 'Unplugged' +ATTR_BATTERY_STATE_CHARGING = 'Charging' +ATTR_BATTERY_STATE_FULL = 'Full' +ATTR_BATTERY_STATE_UNKNOWN = 'Unknown' BATTERY_STATES = [ATTR_BATTERY_STATE_UNPLUGGED, ATTR_BATTERY_STATE_CHARGING, ATTR_BATTERY_STATE_FULL, ATTR_BATTERY_STATE_UNKNOWN] -ATTR_DEVICES = "devices" +ATTR_DEVICES = 'devices' ACTION_SCHEMA = vol.Schema({ vol.Required(CONF_PUSH_ACTIONS_IDENTIFIER): vol.Upper, @@ -167,7 +167,7 @@ IDENTIFY_SCHEMA = vol.Schema({ vol.Optional(ATTR_PUSH_SOUNDS): list }, extra=vol.ALLOW_EXTRA) -CONFIGURATION_FILE = "ios.conf" +CONFIGURATION_FILE = 'ios.conf' CONFIG_FILE = {ATTR_DEVICES: {}} @@ -196,7 +196,7 @@ def _load_config(filename): def _save_config(filename, config): """Save configuration.""" try: - with open(filename, "w") as fdesc: + with open(filename, 'w') as fdesc: fdesc.write(json.dumps(config, cls=JSONEncoder)) except (IOError, TypeError) as error: _LOGGER.error("Saving config file failed: %s", error) @@ -237,7 +237,7 @@ def device_name_for_push_id(push_id): def setup(hass, config): - """Setup the iOS component.""" + """Set up the iOS component.""" # pylint: disable=global-statement, import-error global CONFIG_FILE global CONFIG_FILE_PATH @@ -249,9 +249,9 @@ def setup(hass, config): if CONFIG_FILE == {}: CONFIG_FILE[ATTR_DEVICES] = {} - discovery.load_platform(hass, "notify", DOMAIN, {}, config) + discovery.load_platform(hass, 'notify', DOMAIN, {}, config) - discovery.load_platform(hass, "sensor", DOMAIN, {}, config) + discovery.load_platform(hass, 'sensor', DOMAIN, {}, config) hass.http.register_view(iOSIdentifyDeviceView) @@ -265,8 +265,8 @@ def setup(hass, config): class iOSPushConfigView(HomeAssistantView): """A view that provides the push categories configuration.""" - url = "/api/ios/push" - name = "api:ios:push" + url = '/api/ios/push' + name = 'api:ios:push' def __init__(self, push_config): """Init the view.""" @@ -281,8 +281,8 @@ class iOSPushConfigView(HomeAssistantView): class iOSIdentifyDeviceView(HomeAssistantView): """A view that accepts device identification requests.""" - url = "/api/ios/identify" - name = "api:ios:identify" + url = '/api/ios/identify' + name = 'api:ios:identify' @asyncio.coroutine def post(self, request): diff --git a/homeassistant/components/isy994.py b/homeassistant/components/isy994.py index 171c78a2fc8..a834cc0a3e4 100644 --- a/homeassistant/components/isy994.py +++ b/homeassistant/components/isy994.py @@ -7,32 +7,35 @@ https://home-assistant.io/components/isy994/ from collections import namedtuple import logging from urllib.parse import urlparse + import voluptuous as vol from homeassistant.core import HomeAssistant # noqa from homeassistant.const import ( - CONF_HOST, CONF_PASSWORD, CONF_USERNAME, - EVENT_HOMEASSISTANT_STOP) + CONF_HOST, CONF_PASSWORD, CONF_USERNAME, EVENT_HOMEASSISTANT_STOP) from homeassistant.helpers import discovery, config_validation as cv from homeassistant.helpers.entity import Entity from homeassistant.helpers.typing import ConfigType, Dict # noqa - -DOMAIN = "isy994" REQUIREMENTS = ['PyISY==1.0.7'] -ISY = None -DEFAULT_SENSOR_STRING = 'sensor' -DEFAULT_HIDDEN_STRING = '{HIDE ME}' -CONF_TLS_VER = 'tls' +_LOGGER = logging.getLogger(__name__) + +DOMAIN = 'isy994' + CONF_HIDDEN_STRING = 'hidden_string' CONF_SENSOR_STRING = 'sensor_string' -KEY_MY_PROGRAMS = 'My Programs' -KEY_FOLDER = 'folder' -KEY_ACTIONS = 'actions' -KEY_STATUS = 'status' +CONF_TLS_VER = 'tls' -_LOGGER = logging.getLogger(__name__) +DEFAULT_HIDDEN_STRING = '{HIDE ME}' +DEFAULT_SENSOR_STRING = 'sensor' + +ISY = None + +KEY_ACTIONS = 'actions' +KEY_FOLDER = 'folder' +KEY_MY_PROGRAMS = 'My Programs' +KEY_STATUS = 'status' CONFIG_SCHEMA = vol.Schema({ DOMAIN: vol.Schema({ @@ -158,10 +161,10 @@ def setup(hass: HomeAssistant, config: ConfigType) -> bool: host = urlparse(isy_config.get(CONF_HOST)) port = host.port addr = host.geturl() - hidden_identifier = isy_config.get(CONF_HIDDEN_STRING, - DEFAULT_HIDDEN_STRING) - sensor_identifier = isy_config.get(CONF_SENSOR_STRING, - DEFAULT_SENSOR_STRING) + hidden_identifier = isy_config.get( + CONF_HIDDEN_STRING, DEFAULT_HIDDEN_STRING) + sensor_identifier = isy_config.get( + CONF_SENSOR_STRING, DEFAULT_SENSOR_STRING) global HIDDEN_STRING HIDDEN_STRING = hidden_identifier @@ -173,7 +176,7 @@ def setup(hass: HomeAssistant, config: ConfigType) -> bool: addr = addr.replace('https://', '') https = True else: - _LOGGER.error('isy994 host value in configuration is invalid.') + _LOGGER.error("isy994 host value in configuration is invalid") return False addr = addr.replace(':{}'.format(port), '') @@ -225,8 +228,8 @@ class ISYDevice(Entity): """Initialize the insteon device.""" self._node = node - self._change_handler = self._node.status.subscribe('changed', - self.on_update) + self._change_handler = self._node.status.subscribe( + 'changed', self.on_update) # pylint: disable=unused-argument def on_update(self, event: object) -> None: diff --git a/homeassistant/components/joaoapps_join.py b/homeassistant/components/joaoapps_join.py index 4f01a3cf411..97572512411 100644 --- a/homeassistant/components/joaoapps_join.py +++ b/homeassistant/components/joaoapps_join.py @@ -5,9 +5,11 @@ For more details about this platform, please refer to the documentation at https://home-assistant.io/components/join/ """ import logging + import voluptuous as vol -from homeassistant.const import CONF_NAME, CONF_API_KEY + import homeassistant.helpers.config_validation as cv +from homeassistant.const import CONF_NAME, CONF_API_KEY REQUIREMENTS = [ 'https://github.com/nkgilley/python-join-api/archive/' @@ -71,7 +73,7 @@ def register_device(hass, device_id, api_key, name): def setup(hass, config): - """Setup Join services.""" + """Set up the Join services.""" from pyjoin import get_devices for device in config[DOMAIN]: device_id = device.get(CONF_DEVICE_ID) diff --git a/homeassistant/components/keyboard_remote.py b/homeassistant/components/keyboard_remote.py index 69151043276..88d406ace0b 100644 --- a/homeassistant/components/keyboard_remote.py +++ b/homeassistant/components/keyboard_remote.py @@ -4,7 +4,6 @@ Receive signals from a keyboard and use it as a remote control. For more details about this platform, please refer to the documentation at https://home-assistant.io/components/keyboard_remote/ """ - # pylint: disable=import-error import threading import logging @@ -15,24 +14,26 @@ import voluptuous as vol import homeassistant.helpers.config_validation as cv from homeassistant.const import ( - EVENT_HOMEASSISTANT_START, - EVENT_HOMEASSISTANT_STOP -) + EVENT_HOMEASSISTANT_START, EVENT_HOMEASSISTANT_STOP) -DOMAIN = "keyboard_remote" REQUIREMENTS = ['evdev==0.6.1'] + _LOGGER = logging.getLogger(__name__) + +DEVICE_DESCRIPTOR = 'device_descriptor' +DEVICE_ID_GROUP = 'Device descriptor or name' +DEVICE_NAME = 'device_name' +DOMAIN = 'keyboard_remote' + ICON = 'mdi:remote' + +KEY_CODE = 'key_code' +KEY_VALUE = {'key_up': 0, 'key_down': 1, 'key_hold': 2} KEYBOARD_REMOTE_COMMAND_RECEIVED = 'keyboard_remote_command_received' KEYBOARD_REMOTE_CONNECTED = 'keyboard_remote_connected' KEYBOARD_REMOTE_DISCONNECTED = 'keyboard_remote_disconnected' -KEY_CODE = 'key_code' -KEY_VALUE = {'key_up': 0, 'key_down': 1, 'key_hold': 2} -TYPE = 'type' -DEVICE_DESCRIPTOR = 'device_descriptor' -DEVICE_NAME = 'device_name' -DEVICE_ID_GROUP = 'Device descriptor or name' +TYPE = 'type' CONFIG_SCHEMA = vol.Schema({ DOMAIN: vol.Schema({ @@ -45,12 +46,12 @@ CONFIG_SCHEMA = vol.Schema({ def setup(hass, config): - """Setup keyboard_remote.""" + """Set up the keyboard_remote.""" config = config.get(DOMAIN) if not config.get(DEVICE_DESCRIPTOR) and\ not config.get(DEVICE_NAME): - _LOGGER.error('No device_descriptor or device_name found.') + _LOGGER.error("No device_descriptor or device_name found") return keyboard_remote = KeyboardRemote( @@ -91,10 +92,7 @@ class KeyboardRemote(threading.Thread): self.device_id = self.device_name self.dev = self._get_keyboard_device() if self.dev is not None: - _LOGGER.debug( - 'Keyboard connected, %s', - self.device_id - ) + _LOGGER.debug("Keyboard connected, %s", self.device_id) else: id_folder = '/dev/input/by-id/' device_names = [InputDevice(file_name).name @@ -116,6 +114,7 @@ class KeyboardRemote(threading.Thread): self.key_value = KEY_VALUE.get(config.get(TYPE, 'key_up')) def _get_keyboard_device(self): + """Get the keyboard device.""" from evdev import InputDevice, list_devices if self.device_name: devices = [InputDevice(file_name) for file_name in list_devices()] @@ -132,14 +131,12 @@ class KeyboardRemote(threading.Thread): return None def run(self): - """Main loop of the KeyboardRemote.""" + """Run the loop of the KeyboardRemote.""" from evdev import categorize, ecodes if self.dev is not None: self.dev.grab() - _LOGGER.debug( - 'Interface started for %s', - self.dev) + _LOGGER.debug("Interface started for %s", self.dev) while not self.stopped.isSet(): # Sleeps to ease load on processor @@ -152,8 +149,7 @@ class KeyboardRemote(threading.Thread): self.hass.bus.fire( KEYBOARD_REMOTE_CONNECTED ) - _LOGGER.debug('Keyboard re-connected, %s', - self.device_id) + _LOGGER.debug("Keyboard re-connected, %s", self.device_id) else: continue @@ -164,8 +160,7 @@ class KeyboardRemote(threading.Thread): self.hass.bus.fire( KEYBOARD_REMOTE_DISCONNECTED ) - _LOGGER.debug('Keyboard disconnected, %s', - self.device_id) + _LOGGER.debug("Keyboard disconnected, %s", self.device_id) continue if not event: diff --git a/homeassistant/components/knx.py b/homeassistant/components/knx.py index 53c414922e4..f72a3048dec 100644 --- a/homeassistant/components/knx.py +++ b/homeassistant/components/knx.py @@ -8,10 +8,10 @@ import logging import voluptuous as vol +import homeassistant.helpers.config_validation as cv from homeassistant.const import ( EVENT_HOMEASSISTANT_STOP, CONF_HOST, CONF_PORT) from homeassistant.helpers.entity import Entity -import homeassistant.helpers.config_validation as cv REQUIREMENTS = ['knxip==0.3.3'] @@ -34,7 +34,7 @@ CONFIG_SCHEMA = vol.Schema({ def setup(hass, config): - """Setup the connection to the KNX IP interface.""" + """Set up the connection to the KNX IP interface.""" global KNXTUNNEL from knxip.ip import KNXIPTunnel @@ -94,12 +94,12 @@ class KNXConfig(object): @property def name(self): - """The name given to the entity.""" + """Return the name given to the entity.""" return self.config['name'] @property def address(self): - """The address of the device as an integer value. + """Return the address of the device as an integer value. 3 types of addresses are supported: integer - 0-65535 @@ -110,7 +110,7 @@ class KNXConfig(object): @property def state_address(self): - """The group address the device sends its current state to. + """Return the group address the device sends its current state to. Some KNX devices can send the current state to a seperate group address. This makes send e.g. when an actuator can @@ -145,12 +145,12 @@ class KNXGroupAddress(Entity): @property def name(self): - """The entity's display name.""" + """Return the entity's display name.""" return self._config.name @property def config(self): - """The entity's configuration.""" + """Return the entity's configuration.""" return self._config @property @@ -175,7 +175,7 @@ class KNXGroupAddress(Entity): @property def cache(self): - """The name given to the entity.""" + """Return the name given to the entity.""" return self._config.config.get('cache', True) def group_write(self, value): @@ -257,12 +257,12 @@ class KNXMultiAddressDevice(Entity): @property def name(self): - """The entity's display name.""" + """Return the entity's display name.""" return self._config.name @property def config(self): - """The entity's configuration.""" + """Return the entity's configuration.""" return self._config @property @@ -272,7 +272,7 @@ class KNXMultiAddressDevice(Entity): @property def cache(self): - """The name given to the entity.""" + """Return the name given to the entity.""" return self._config.config.get('cache', True) def has_attribute(self, name): diff --git a/homeassistant/components/lirc.py b/homeassistant/components/lirc.py index ac4807b26af..8b9ad0209da 100644 --- a/homeassistant/components/lirc.py +++ b/homeassistant/components/lirc.py @@ -32,7 +32,7 @@ CONFIG_SCHEMA = vol.Schema({ def setup(hass, config): - """Setup LIRC capability.""" + """Set up the LIRC capability.""" import lirc # blocking=True gives unexpected behavior (multiple responses for 1 press) @@ -70,7 +70,7 @@ class LircInterface(threading.Thread): self.hass = hass def run(self): - """Main loop of LIRC interface thread.""" + """Run the loop of the LIRC interface thread.""" import lirc _LOGGER.debug("LIRC interface thread started") while not self.stopped.isSet(): diff --git a/homeassistant/components/litejet.py b/homeassistant/components/litejet.py index aa4488c1277..e7c8452b27b 100644 --- a/homeassistant/components/litejet.py +++ b/homeassistant/components/litejet.py @@ -7,9 +7,9 @@ import logging import voluptuous as vol +import homeassistant.helpers.config_validation as cv from homeassistant.helpers import discovery from homeassistant.const import CONF_PORT -import homeassistant.helpers.config_validation as cv REQUIREMENTS = ['pylitejet==0.1'] @@ -30,7 +30,7 @@ CONFIG_SCHEMA = vol.Schema({ def setup(hass, config): - """Initialize the LiteJet component.""" + """Set up the LiteJet component.""" from pylitejet import LiteJet url = config[DOMAIN].get(CONF_PORT) diff --git a/homeassistant/components/logbook.py b/homeassistant/components/logbook.py index 92f99887867..98a0973a807 100644 --- a/homeassistant/components/logbook.py +++ b/homeassistant/components/logbook.py @@ -17,13 +17,12 @@ import homeassistant.util.dt as dt_util from homeassistant.components import sun from homeassistant.components.frontend import register_built_in_panel from homeassistant.components.http import HomeAssistantView -from homeassistant.const import (EVENT_HOMEASSISTANT_START, - EVENT_HOMEASSISTANT_STOP, EVENT_STATE_CHANGED, - STATE_NOT_HOME, STATE_OFF, STATE_ON, - ATTR_HIDDEN, HTTP_BAD_REQUEST) +from homeassistant.const import ( + EVENT_HOMEASSISTANT_START, EVENT_HOMEASSISTANT_STOP, EVENT_STATE_CHANGED, + STATE_NOT_HOME, STATE_OFF, STATE_ON, ATTR_HIDDEN, HTTP_BAD_REQUEST) from homeassistant.core import State, split_entity_id, DOMAIN as HA_DOMAIN -DOMAIN = "logbook" +DOMAIN = 'logbook' DEPENDENCIES = ['recorder', 'frontend'] _LOGGER = logging.getLogger(__name__) @@ -100,11 +99,11 @@ def setup(hass, config): hass.http.register_view(LogbookView(config.get(DOMAIN, {}))) - register_built_in_panel(hass, 'logbook', 'Logbook', - 'mdi:format-list-bulleted-type') + register_built_in_panel( + hass, 'logbook', 'Logbook', 'mdi:format-list-bulleted-type') - hass.services.register(DOMAIN, 'log', log_message, - schema=LOG_MESSAGE_SCHEMA) + hass.services.register( + DOMAIN, 'log', log_message, schema=LOG_MESSAGE_SCHEMA) return True @@ -164,11 +163,11 @@ class Entry(object): def humanify(events): - """Generator that converts a list of events into Entry objects. + """Generate a converted list of events into Entry objects. Will try to group events if possible: - - if 2+ sensor updates in GROUP_BY_MINUTES, show last - - if home assistant stop and start happen in same minute call it restarted + - if 2+ sensor updates in GROUP_BY_MINUTES, show last + - if home assistant stop and start happen in same minute call it restarted """ # Group events in batches of GROUP_BY_MINUTES for _, g_events in groupby( diff --git a/homeassistant/components/logentries.py b/homeassistant/components/logentries.py index ef79b033922..6dc76d8d932 100644 --- a/homeassistant/components/logentries.py +++ b/homeassistant/components/logentries.py @@ -10,9 +10,9 @@ import requests import voluptuous as vol +import homeassistant.helpers.config_validation as cv from homeassistant.const import (CONF_TOKEN, EVENT_STATE_CHANGED) from homeassistant.helpers import state as state_helper -import homeassistant.helpers.config_validation as cv _LOGGER = logging.getLogger(__name__) @@ -28,7 +28,7 @@ CONFIG_SCHEMA = vol.Schema({ def setup(hass, config): - """Setup the Logentries component.""" + """Set up the Logentries component.""" conf = config[DOMAIN] token = conf.get(CONF_TOKEN) le_wh = '{}{}'.format(DEFAULT_HOST, token) @@ -52,11 +52,13 @@ def setup(hass, config): } ] try: - payload = {"host": le_wh, - "event": json_body} + payload = { + "host": le_wh, + "event": json_body + } requests.post(le_wh, data=json.dumps(payload), timeout=10) except requests.exceptions.RequestException as error: - _LOGGER.exception('Error sending to Logentries: %s', error) + _LOGGER.exception("Error sending to Logentries: %s", error) hass.bus.listen(EVENT_STATE_CHANGED, logentries_event_listener) diff --git a/homeassistant/components/logger.py b/homeassistant/components/logger.py index 8572bbc044a..e36053900fd 100644 --- a/homeassistant/components/logger.py +++ b/homeassistant/components/logger.py @@ -62,7 +62,7 @@ class HomeAssistantLogFilter(logging.Filter): self.logfilter = logfilter def filter(self, record): - """A filter to use.""" + """The filter to use.""" # Log with filtered severity if LOGGER_LOGS in self.logfilter: for filtername in self.logfilter[LOGGER_LOGS]: @@ -77,7 +77,7 @@ class HomeAssistantLogFilter(logging.Filter): @asyncio.coroutine def async_setup(hass, config): - """Setup the logger component.""" + """Set up the logger component.""" logfilter = {} # Set default log severity diff --git a/homeassistant/components/lutron.py b/homeassistant/components/lutron.py index 3bd1682bc41..ed3134c275a 100644 --- a/homeassistant/components/lutron.py +++ b/homeassistant/components/lutron.py @@ -22,7 +22,7 @@ LUTRON_DEVICES = 'lutron_devices' def setup(hass, base_config): - """Setup the Lutron component.""" + """Set up the Lutron component.""" from pylutron import Lutron hass.data[LUTRON_CONTROLLER] = None @@ -66,7 +66,7 @@ class LutronDevice(Entity): ) def _update_callback(self, _device): - """Callback invoked by pylutron when the device state changes.""" + """Run when invoked by pylutron when the device state changes.""" self.schedule_update_ha_state() @property diff --git a/homeassistant/components/lutron_caseta.py b/homeassistant/components/lutron_caseta.py index 1e19083e959..375e2930a4f 100644 --- a/homeassistant/components/lutron_caseta.py +++ b/homeassistant/components/lutron_caseta.py @@ -32,7 +32,7 @@ CONFIG_SCHEMA = vol.Schema({ def setup(hass, base_config): - """Setup the Lutron component.""" + """Set up the Lutron component.""" from pylutron_caseta.smartbridge import Smartbridge config = base_config.get(DOMAIN) @@ -44,8 +44,7 @@ def setup(hass, base_config): config[CONF_HOST]) return False - _LOGGER.info("Connected to Lutron smartbridge at %s", - config[CONF_HOST]) + _LOGGER.info("Connected to Lutron smartbridge at %s", config[CONF_HOST]) for component in ('light', 'switch'): discovery.load_platform(hass, component, DOMAIN, {}, config) @@ -88,8 +87,10 @@ class LutronCasetaDevice(Entity): @property def device_state_attributes(self): """Return the state attributes.""" - attr = {'Device ID': self._device_id, - 'Zone ID': self._device_zone} + attr = { + 'Device ID': self._device_id, + 'Zone ID': self._device_zone, + } return attr @property diff --git a/homeassistant/components/microsoft_face.py b/homeassistant/components/microsoft_face.py index 5d98f04d01e..53a856e0eb4 100644 --- a/homeassistant/components/microsoft_face.py +++ b/homeassistant/components/microsoft_face.py @@ -23,11 +23,11 @@ from homeassistant.helpers.entity import Entity from homeassistant.loader import get_component from homeassistant.util import slugify +_LOGGER = logging.getLogger(__name__) + DOMAIN = 'microsoft_face' DEPENDENCIES = ['camera'] -_LOGGER = logging.getLogger(__name__) - FACE_API_URL = "https://westus.api.cognitive.microsoft.com/face/v1.0/{0}" DATA_MICROSOFT_FACE = 'microsoft_face' diff --git a/homeassistant/components/mochad.py b/homeassistant/components/mochad.py index 83665a3c6d1..a42d142112d 100644 --- a/homeassistant/components/mochad.py +++ b/homeassistant/components/mochad.py @@ -4,15 +4,14 @@ Support for CM15A/CM19A X10 Controller using mochad daemon. For more details about this component, please refer to the documentation at https://home-assistant.io/components/mochad/ """ - import logging import voluptuous as vol +import homeassistant.helpers.config_validation as cv from homeassistant.const import ( EVENT_HOMEASSISTANT_START, EVENT_HOMEASSISTANT_STOP) from homeassistant.const import (CONF_HOST, CONF_PORT) -from homeassistant.helpers import config_validation as cv REQUIREMENTS = ['pymochad==0.1.1'] @@ -31,7 +30,7 @@ CONFIG_SCHEMA = vol.Schema({ def setup(hass, config): - """Setup the mochad platform.""" + """Set up the mochad component.""" conf = config[DOMAIN] host = conf.get(CONF_HOST) port = conf.get(CONF_PORT) @@ -72,12 +71,12 @@ class MochadCtrl(object): @property def host(self): - """The server where mochad is running.""" + """Return the server where mochad is running.""" return self._host @property def port(self): - """The port mochad is running on.""" + """Return the port mochad is running on.""" return self._port def disconnect(self): diff --git a/homeassistant/components/modbus.py b/homeassistant/components/modbus.py index 3ed9fff9cf0..416ce7ec6ce 100644 --- a/homeassistant/components/modbus.py +++ b/homeassistant/components/modbus.py @@ -9,22 +9,22 @@ import threading import voluptuous as vol +import homeassistant.helpers.config_validation as cv from homeassistant.const import ( EVENT_HOMEASSISTANT_START, EVENT_HOMEASSISTANT_STOP, CONF_HOST, CONF_METHOD, CONF_PORT) -import homeassistant.helpers.config_validation as cv -DOMAIN = "modbus" +DOMAIN = 'modbus' REQUIREMENTS = ['https://github.com/bashwork/pymodbus/archive/' 'd7fc4f1cc975631e0a9011390e8017f64b612661.zip#pymodbus==1.2.0'] # Type of network -CONF_BAUDRATE = "baudrate" -CONF_BYTESIZE = "bytesize" -CONF_STOPBITS = "stopbits" -CONF_TYPE = "type" -CONF_PARITY = "parity" +CONF_BAUDRATE = 'baudrate' +CONF_BYTESIZE = 'bytesize' +CONF_STOPBITS = 'stopbits' +CONF_TYPE = 'type' +CONF_PARITY = 'parity' SERIAL_SCHEMA = { vol.Required(CONF_BAUDRATE): cv.positive_int, @@ -50,11 +50,11 @@ CONFIG_SCHEMA = vol.Schema({ _LOGGER = logging.getLogger(__name__) -SERVICE_WRITE_REGISTER = "write_register" +SERVICE_WRITE_REGISTER = 'write_register' -ATTR_ADDRESS = "address" -ATTR_UNIT = "unit" -ATTR_VALUE = "value" +ATTR_ADDRESS = 'address' +ATTR_UNIT = 'unit' +ATTR_VALUE = 'value' SERVICE_WRITE_REGISTER_SCHEMA = vol.Schema({ vol.Required(ATTR_UNIT): cv.positive_int, @@ -75,7 +75,7 @@ def setup(hass, config): # Connect to Modbus network # pylint: disable=global-statement, import-error - if client_type == "serial": + if client_type == 'serial': from pymodbus.client.sync import ModbusSerialClient as ModbusClient client = ModbusClient(method=config[DOMAIN][CONF_METHOD], port=config[DOMAIN][CONF_PORT], @@ -83,11 +83,11 @@ def setup(hass, config): stopbits=config[DOMAIN][CONF_STOPBITS], bytesize=config[DOMAIN][CONF_BYTESIZE], parity=config[DOMAIN][CONF_PARITY]) - elif client_type == "tcp": + elif client_type == 'tcp': from pymodbus.client.sync import ModbusTcpClient as ModbusClient client = ModbusClient(host=config[DOMAIN][CONF_HOST], port=config[DOMAIN][CONF_PORT]) - elif client_type == "udp": + elif client_type == 'udp': from pymodbus.client.sync import ModbusUdpClient as ModbusClient client = ModbusClient(host=config[DOMAIN][CONF_HOST], port=config[DOMAIN][CONF_PORT]) diff --git a/homeassistant/components/mqtt_eventstream.py b/homeassistant/components/mqtt_eventstream.py index bd149b6397d..40a752807ed 100644 --- a/homeassistant/components/mqtt_eventstream.py +++ b/homeassistant/components/mqtt_eventstream.py @@ -20,7 +20,7 @@ from homeassistant.core import EventOrigin, State import homeassistant.helpers.config_validation as cv from homeassistant.remote import JSONEncoder -DOMAIN = "mqtt_eventstream" +DOMAIN = 'mqtt_eventstream' DEPENDENCIES = ['mqtt'] CONF_PUBLISH_TOPIC = 'publish_topic' @@ -39,7 +39,7 @@ CONFIG_SCHEMA = vol.Schema({ @asyncio.coroutine def async_setup(hass, config): - """Setup the MQTT eventstream component.""" + """Set up the MQTT eventstream component.""" mqtt = loader.get_component('mqtt') conf = config.get(DOMAIN, {}) pub_topic = conf.get(CONF_PUBLISH_TOPIC) diff --git a/homeassistant/components/mysensors.py b/homeassistant/components/mysensors.py index dbf66c2288b..a7e5c7cacfa 100644 --- a/homeassistant/components/mysensors.py +++ b/homeassistant/components/mysensors.py @@ -13,41 +13,45 @@ import voluptuous as vol import homeassistant.helpers.config_validation as cv from homeassistant.setup import setup_component -from homeassistant.components.mqtt import (valid_publish_topic, - valid_subscribe_topic) -from homeassistant.const import (ATTR_BATTERY_LEVEL, CONF_NAME, - CONF_OPTIMISTIC, EVENT_HOMEASSISTANT_START, - EVENT_HOMEASSISTANT_STOP, STATE_OFF, STATE_ON) +from homeassistant.components.mqtt import ( + valid_publish_topic, valid_subscribe_topic) +from homeassistant.const import ( + ATTR_BATTERY_LEVEL, CONF_NAME, CONF_OPTIMISTIC, EVENT_HOMEASSISTANT_START, + EVENT_HOMEASSISTANT_STOP, STATE_OFF, STATE_ON) from homeassistant.helpers import discovery from homeassistant.loader import get_component -_LOGGER = logging.getLogger(__name__) - -ATTR_NODE_ID = 'node_id' -ATTR_CHILD_ID = 'child_id' -ATTR_DESCRIPTION = 'description' -ATTR_DEVICE = 'device' -CONF_BAUD_RATE = 'baud_rate' -CONF_DEVICE = 'device' -CONF_DEBUG = 'debug' -CONF_GATEWAYS = 'gateways' -CONF_PERSISTENCE = 'persistence' -CONF_PERSISTENCE_FILE = 'persistence_file' -CONF_TCP_PORT = 'tcp_port' -CONF_TOPIC_IN_PREFIX = 'topic_in_prefix' -CONF_TOPIC_OUT_PREFIX = 'topic_out_prefix' -CONF_RETAIN = 'retain' -CONF_VERSION = 'version' -DEFAULT_VERSION = 1.4 -DEFAULT_BAUD_RATE = 115200 -DEFAULT_TCP_PORT = 5003 -DOMAIN = 'mysensors' -MYSENSORS_GATEWAYS = 'mysensors_gateways' -MQTT_COMPONENT = 'mqtt' REQUIREMENTS = [ 'https://github.com/theolind/pymysensors/archive/' 'c6990eaaa741444a638608e6e00488195e2ca74c.zip#pymysensors==0.9.1'] +_LOGGER = logging.getLogger(__name__) + +ATTR_CHILD_ID = 'child_id' +ATTR_DESCRIPTION = 'description' +ATTR_DEVICE = 'device' +ATTR_NODE_ID = 'node_id' + +CONF_BAUD_RATE = 'baud_rate' +CONF_DEBUG = 'debug' +CONF_DEVICE = 'device' +CONF_GATEWAYS = 'gateways' +CONF_PERSISTENCE = 'persistence' +CONF_PERSISTENCE_FILE = 'persistence_file' +CONF_RETAIN = 'retain' +CONF_TCP_PORT = 'tcp_port' +CONF_TOPIC_IN_PREFIX = 'topic_in_prefix' +CONF_TOPIC_OUT_PREFIX = 'topic_out_prefix' +CONF_VERSION = 'version' + +DEFAULT_BAUD_RATE = 115200 +DEFAULT_TCP_PORT = 5003 +DEFAULT_VERSION = 1.4 +DOMAIN = 'mysensors' + +MQTT_COMPONENT = 'mqtt' +MYSENSORS_GATEWAYS = 'mysensors_gateways' + def is_socket_address(value): """Validate that value is a valid address.""" @@ -148,7 +152,7 @@ CONFIG_SCHEMA = vol.Schema({ def setup(hass, config): - """Setup the MySensors component.""" + """Set up the MySensors component.""" import mysensors.mysensors as mysensors version = config[DOMAIN].get(CONF_VERSION) @@ -201,7 +205,7 @@ def setup(hass, config): gateway.event_callback = gateway.callback_factory() def gw_start(event): - """Callback to trigger start of gateway and any persistence.""" + """Trigger to start of the gateway and any persistence.""" if persistence: for node_id in gateway.sensors: node = gateway.sensors[node_id] @@ -220,7 +224,7 @@ def setup(hass, config): gateways = hass.data.get(MYSENSORS_GATEWAYS) if gateways is not None: _LOGGER.error( - '%s already exists in %s, will not setup %s component', + "%s already exists in %s, will not setup %s component", MYSENSORS_GATEWAYS, hass.data, DOMAIN) return False @@ -245,7 +249,7 @@ def setup(hass, config): if not gateways: _LOGGER.error( - 'No devices could be setup as gateways, check your configuration') + "No devices could be setup as gateways, check your configuration") return False hass.data[MYSENSORS_GATEWAYS] = gateways @@ -266,9 +270,9 @@ def setup(hass, config): def pf_callback_factory(map_sv_types, devices, entity_class, add_devices=None): """Return a new callback for the platform.""" def mysensors_callback(gateway, msg): - """Callback for mysensors platform.""" + """Run when a message from the gateway arrives.""" if gateway.sensors[msg.node_id].sketch_name is None: - _LOGGER.debug('No sketch_name: node %s', msg.node_id) + _LOGGER.debug("No sketch_name: node %s", msg.node_id) return child = gateway.sensors[msg.node_id].children.get(msg.child_id) if child is None: @@ -294,7 +298,7 @@ def pf_callback_factory(map_sv_types, devices, entity_class, add_devices=None): devices[key] = device_class( gateway, msg.node_id, child.id, name, value_type) if add_devices: - _LOGGER.info('Adding new devices: %s', [devices[key]]) + _LOGGER.info("Adding new devices: %s", [devices[key]]) add_devices([devices[key]], True) else: devices[key].update() @@ -305,7 +309,7 @@ class GatewayWrapper(object): """Gateway wrapper class.""" def __init__(self, gateway, optimistic, device): - """Setup class attributes on instantiation. + """Set up the class attributes on instantiation. Args: gateway (mysensors.SerialGateway): Gateway to wrap. @@ -348,7 +352,7 @@ class GatewayWrapper(object): def node_update(msg): """Callback for node updates from the MySensors gateway.""" _LOGGER.debug( - 'Update: node %s, child %s sub_type %s', + "Update: node %s, child %s sub_type %s", msg.node_id, msg.child_id, msg.sub_type) for callback in self.platform_callbacks: callback(self, msg) @@ -357,10 +361,10 @@ class GatewayWrapper(object): class MySensorsDeviceEntity(object): - """Represent a MySensors entity.""" + """Representation of a MySensors entity.""" def __init__(self, gateway, node_id, child_id, name, value_type): - """Set up MySensors device.""" + """Set up the MySensors device.""" self.gateway = gateway self.node_id = node_id self.child_id = child_id diff --git a/homeassistant/components/neato.py b/homeassistant/components/neato.py index 67716c6a2e5..2401bc6604f 100644 --- a/homeassistant/components/neato.py +++ b/homeassistant/components/neato.py @@ -10,10 +10,10 @@ from urllib.error import HTTPError import voluptuous as vol +import homeassistant.helpers.config_validation as cv from homeassistant.const import CONF_PASSWORD, CONF_USERNAME from homeassistant.helpers import discovery from homeassistant.util import Throttle -import homeassistant.helpers.config_validation as cv _LOGGER = logging.getLogger(__name__) @@ -81,13 +81,13 @@ ALERTS = { def setup(hass, config): - """Setup the Neato component.""" + """Set up the Neato component.""" from pybotvac import Account hass.data[NEATO_LOGIN] = NeatoHub(hass, config[DOMAIN], Account) hub = hass.data[NEATO_LOGIN] if not hub.login(): - _LOGGER.debug('Failed to login to Neato API') + _LOGGER.debug("Failed to login to Neato API") return False hub.update_robots() for component in ('camera', 'sensor', 'switch'): @@ -114,9 +114,9 @@ class NeatoHub(object): def login(self): """Login to My Neato.""" try: - _LOGGER.debug('Trying to connect to Neato API') - self.my_neato = self._neato(self.config[CONF_USERNAME], - self.config[CONF_PASSWORD]) + _LOGGER.debug("Trying to connect to Neato API") + self.my_neato = self._neato( + self.config[CONF_USERNAME], self.config[CONF_PASSWORD]) return True except HTTPError: _LOGGER.error("Unable to connect to Neato API") @@ -125,7 +125,7 @@ class NeatoHub(object): @Throttle(timedelta(seconds=1)) def update_robots(self): """Update the robot states.""" - _LOGGER.debug('Running HUB.update_robots %s', + _LOGGER.debug("Running HUB.update_robots %s", self._hass.data[NEATO_ROBOTS]) self._hass.data[NEATO_ROBOTS] = self.my_neato.robots self._hass.data[NEATO_MAP_DATA] = self.my_neato.maps diff --git a/homeassistant/components/nest.py b/homeassistant/components/nest.py index 94a0db35f4d..8d99a4d0327 100644 --- a/homeassistant/components/nest.py +++ b/homeassistant/components/nest.py @@ -11,16 +11,16 @@ import voluptuous as vol import homeassistant.helpers.config_validation as cv from homeassistant.helpers import discovery -from homeassistant.const import (CONF_STRUCTURE, CONF_FILENAME, - CONF_BINARY_SENSORS, CONF_SENSORS, - CONF_MONITORED_CONDITIONS) +from homeassistant.const import ( + CONF_STRUCTURE, CONF_FILENAME, CONF_BINARY_SENSORS, CONF_SENSORS, + CONF_MONITORED_CONDITIONS) from homeassistant.loader import get_component +REQUIREMENTS = ['python-nest==3.1.0'] + _CONFIGURING = {} _LOGGER = logging.getLogger(__name__) -REQUIREMENTS = ['python-nest==3.1.0'] - DOMAIN = 'nest' DATA_NEST = 'nest' @@ -54,7 +54,7 @@ def request_configuration(nest, hass, config): return def nest_configuration_callback(data): - """The actions to do when our configuration callback is called.""" + """Run when the configuration callback is called.""" _LOGGER.debug("configurator callback") pin = data.get('pin') setup_nest(hass, nest, config, pin=pin) @@ -72,7 +72,7 @@ def request_configuration(nest, hass, config): def setup_nest(hass, nest, config, pin=None): - """Setup Nest Devices.""" + """Set up the Nest devices.""" if pin is not None: _LOGGER.debug("pin acquired, requesting access token") nest.request_token(pin) @@ -108,7 +108,7 @@ def setup_nest(hass, nest, config, pin=None): def setup(hass, config): - """Setup the Nest thermostat component.""" + """Set up the Nest thermostat component.""" import nest if 'nest' in _CONFIGURING: @@ -144,7 +144,7 @@ class NestDevice(object): _LOGGER.debug("Structures to include: %s", self._structure) def thermostats(self): - """Generator returning list of thermostats and their location.""" + """Generate a list of thermostats and their location.""" try: for structure in self.nest.structures: if structure.name in self._structure: @@ -158,7 +158,7 @@ class NestDevice(object): "Connection error logging into the nest web service.") def smoke_co_alarms(self): - """Generator returning list of smoke co alarams.""" + """Generate a list of smoke co alarams.""" try: for structure in self.nest.structures: if structure.name in self._structure: @@ -172,7 +172,7 @@ class NestDevice(object): "Connection error logging into the nest web service.") def cameras(self): - """Generator returning list of cameras.""" + """Generate a list of cameras.""" try: for structure in self.nest.structures: if structure.name in self._structure: diff --git a/homeassistant/components/nuimo_controller.py b/homeassistant/components/nuimo_controller.py index e9fd41bd098..68bf050ae43 100644 --- a/homeassistant/components/nuimo_controller.py +++ b/homeassistant/components/nuimo_controller.py @@ -7,7 +7,9 @@ https://home-assistant.io/components/nuimo_controller/ import logging import threading import time + import voluptuous as vol + import homeassistant.helpers.config_validation as cv from homeassistant.const import (CONF_MAC, CONF_NAME, EVENT_HOMEASSISTANT_STOP) @@ -44,7 +46,7 @@ DEFAULT_ADAPTER = 'hci0' def setup(hass, config): - """Setup the Nuimo component.""" + """Set up the Nuimo component.""" conf = config[DOMAIN] mac = conf.get(CONF_MAC) name = conf.get(CONF_NAME) @@ -62,7 +64,7 @@ class NuimoLogger(object): def received_gesture_event(self, event): """Input Event received.""" - _LOGGER.debug("received event: name=%s, gesture_id=%s,value=%s", + _LOGGER.debug("Received event: name=%s, gesture_id=%s,value=%s", event.name, event.gesture, event.value) self._hass.bus.fire(EVENT_NUIMO, {'type': event.name, 'value': event.value, @@ -83,7 +85,7 @@ class NuimoThread(threading.Thread): hass.bus.listen_once(EVENT_HOMEASSISTANT_STOP, self.stop) def run(self): - """Setup connection or be idle.""" + """Set up the connection or be idle.""" while self._hass_is_running: if not self._nuimo or not self._nuimo.is_connected(): self._attach() @@ -102,7 +104,7 @@ class NuimoThread(threading.Thread): self._hass_is_running = False def _attach(self): - """Create a nuimo object from mac address or discovery.""" + """Create a Nuimo object from MAC address or discovery.""" # pylint: disable=import-error from nuimo import NuimoController, NuimoDiscoveryManager @@ -118,7 +120,7 @@ class NuimoThread(threading.Thread): nuimo_manager.start_discovery() # Were any Nuimos found? if not nuimo_manager.nuimos: - _LOGGER.debug('No Nuimos detected') + _LOGGER.debug("No Nuimo devices detected") return # Take the first Nuimo found. self._nuimo = nuimo_manager.nuimos[0] @@ -131,9 +133,9 @@ class NuimoThread(threading.Thread): try: self._nuimo.connect() - _LOGGER.debug('connected to %s', self._mac) + _LOGGER.debug("Connected to %s", self._mac) except RuntimeError as error: - _LOGGER.error('could not connect to %s: %s', self._mac, error) + _LOGGER.error("Could not connect to %s: %s", self._mac, error) time.sleep(1) return @@ -148,9 +150,9 @@ class NuimoThread(threading.Thread): if self._name == name and matrix: self._nuimo.write_matrix(matrix, interval) - self._hass.services.register(DOMAIN, SERVICE_NUIMO, - handle_write_matrix, - schema=SERVICE_NUIMO_SCHEMA) + self._hass.services.register( + DOMAIN, SERVICE_NUIMO, handle_write_matrix, + schema=SERVICE_NUIMO_SCHEMA) self._nuimo.write_matrix(HOMEASSIST_LOGO, 2.0) @@ -173,15 +175,15 @@ class DiscoveryLogger(object): # pylint: disable=no-self-use def discovery_started(self): - """Discovery startet.""" - _LOGGER.info("started discovery") + """Discovery started.""" + _LOGGER.info("Started discovery") # pylint: disable=no-self-use def discovery_finished(self): """Discovery finished.""" - _LOGGER.info("finished discovery") + _LOGGER.info("Finished discovery") # pylint: disable=no-self-use def controller_added(self, nuimo): - """Controller found.""" - _LOGGER.info("added Nuimo: %s", nuimo) + """Return that a controller was found.""" + _LOGGER.info("Added Nuimo: %s", nuimo) diff --git a/homeassistant/components/octoprint.py b/homeassistant/components/octoprint.py index 24f7039a41c..db6dd9931be 100644 --- a/homeassistant/components/octoprint.py +++ b/homeassistant/components/octoprint.py @@ -28,7 +28,7 @@ CONFIG_SCHEMA = vol.Schema({ def setup(hass, config): - """Set up OctoPrint API.""" + """Set up the OctoPrint component.""" base_url = 'http://{}/api/'.format(config[DOMAIN][CONF_HOST]) api_key = config[DOMAIN][CONF_API_KEY] @@ -75,9 +75,8 @@ class OctoPrintAPI(object): return self.printer_last_reading[0] url = self.api_url + endpoint try: - response = requests.get(url, - headers=self.headers, - timeout=30) + response = requests.get( + url, headers=self.headers, timeout=30) response.raise_for_status() if endpoint == "job": self.job_last_reading[0] = response.json() @@ -94,8 +93,8 @@ class OctoPrintAPI(object): def update(self, sensor_type, end_point, group, tool=None): """Return the value for sensor_type from the provided endpoint.""" try: - return get_value_from_json(self.get(end_point), sensor_type, - group, tool) + return get_value_from_json( + self.get(end_point), sensor_type, group, tool) except requests.exceptions.ConnectionError: raise diff --git a/homeassistant/components/panel_iframe.py b/homeassistant/components/panel_iframe.py index d0f9d20f838..50e764ba1f9 100644 --- a/homeassistant/components/panel_iframe.py +++ b/homeassistant/components/panel_iframe.py @@ -1,4 +1,9 @@ -"""Add an iframe panel to Home Assistant.""" +""" +Register an iFrame front end panel. + +For more details about this component, please refer to the documentation at +https://home-assistant.io/components/panel_iframe/ +""" import voluptuous as vol import homeassistant.helpers.config_validation as cv @@ -22,7 +27,7 @@ CONFIG_SCHEMA = vol.Schema({ def setup(hass, config): - """Setup iframe frontend panels.""" + """Set up the iFrame frontend panels.""" for url_path, info in config[DOMAIN].items(): register_built_in_panel( hass, 'iframe', info.get(CONF_TITLE), info.get(CONF_ICON), diff --git a/homeassistant/components/persistent_notification.py b/homeassistant/components/persistent_notification.py index d7eef848679..7173045c06d 100644 --- a/homeassistant/components/persistent_notification.py +++ b/homeassistant/components/persistent_notification.py @@ -17,13 +17,15 @@ from homeassistant.helpers.entity import async_generate_entity_id from homeassistant.util import slugify from homeassistant.config import load_yaml_config_file +ATTR_MESSAGE = 'message' +ATTR_NOTIFICATION_ID = 'notification_id' +ATTR_TITLE = 'title' + DOMAIN = 'persistent_notification' + ENTITY_ID_FORMAT = DOMAIN + '.{}' SERVICE_CREATE = 'create' -ATTR_TITLE = 'title' -ATTR_MESSAGE = 'message' -ATTR_NOTIFICATION_ID = 'notification_id' SCHEMA_SERVICE_CREATE = vol.Schema({ vol.Required(ATTR_MESSAGE): cv.template, @@ -57,7 +59,7 @@ def async_create(hass, message, title=None, notification_id=None): @asyncio.coroutine def async_setup(hass, config): - """Setup the persistent notification component.""" + """Set up the persistent notification component.""" @callback def create_service(call): """Handle a create notification service call.""" diff --git a/homeassistant/components/pilight.py b/homeassistant/components/pilight.py index 1d5bf2563de..18782fe4207 100644 --- a/homeassistant/components/pilight.py +++ b/homeassistant/components/pilight.py @@ -53,7 +53,7 @@ CONFIG_SCHEMA = vol.Schema({ def setup(hass, config): - """Setup the Pilight component.""" + """Set up the Pilight component.""" from pilight import pilight host = config[DOMAIN][CONF_HOST] @@ -69,13 +69,13 @@ def setup(hass, config): return False def start_pilight_client(_): - """Called once when Home Assistant starts.""" + """Run when Home Assistant starts.""" pilight_client.start() hass.bus.listen_once(EVENT_HOMEASSISTANT_START, start_pilight_client) def stop_pilight_client(_): - """Called once when Home Assistant stops.""" + """Run once when Home Assistant stops.""" pilight_client.stop() hass.bus.listen_once(EVENT_HOMEASSISTANT_STOP, stop_pilight_client) @@ -100,7 +100,7 @@ def setup(hass, config): whitelist = config[DOMAIN].get(CONF_WHITELIST) def handle_received_code(data): - """Called when RF codes are received.""" + """Run when RF codes are received.""" # Unravel dict of dicts to make event_data cut in automation rule # possible data = dict({'protocol': data['protocol'], 'uuid': data['uuid']}, @@ -140,10 +140,10 @@ class CallRateDelayThrottle(object): self._schedule = functools.partial(track_point_in_utc_time, hass) def limited(self, method): - """Decorator to delay calls on a certain method.""" + """The decorater to delay calls on a certain method.""" @functools.wraps(method) def decorated(*args, **kwargs): - """The decorated function.""" + """Delay a call.""" if self._delay.total_seconds() == 0.0: method(*args, **kwargs) return diff --git a/homeassistant/components/proximity.py b/homeassistant/components/proximity.py index 084d6ac7407..38b37cad51e 100644 --- a/homeassistant/components/proximity.py +++ b/homeassistant/components/proximity.py @@ -11,13 +11,13 @@ import logging import voluptuous as vol +import homeassistant.helpers.config_validation as cv from homeassistant.const import ( CONF_ZONE, CONF_DEVICES, CONF_UNIT_OF_MEASUREMENT) from homeassistant.helpers.entity import Entity from homeassistant.helpers.event import track_state_change from homeassistant.util.distance import convert from homeassistant.util.location import distance -import homeassistant.helpers.config_validation as cv _LOGGER = logging.getLogger(__name__) @@ -56,7 +56,7 @@ CONFIG_SCHEMA = vol.Schema({ def setup_proximity_component(hass, name, config): - """Set up individual proximity component.""" + """Set up the individual proximity component.""" ignored_zones = config.get(CONF_IGNORED_ZONES) proximity_devices = config.get(CONF_DEVICES) tolerance = config.get(CONF_TOLERANCE) @@ -129,7 +129,7 @@ class Proximity(Entity): } def check_proximity_state_change(self, entity, old_state, new_state): - """Function to perform the proximity checking.""" + """Perform the proximity checking.""" entity_name = new_state.name devices_to_calculate = False devices_in_zone = '' diff --git a/homeassistant/components/qwikswitch.py b/homeassistant/components/qwikswitch.py index f4f1c6129a1..dd8ceefb169 100644 --- a/homeassistant/components/qwikswitch.py +++ b/homeassistant/components/qwikswitch.py @@ -123,7 +123,7 @@ class QSLight(QSToggleEntity, Light): def setup(hass, config): - """Setup the QSUSB component.""" + """Set up the QSUSB component.""" from pyqwikswitch import ( QSUsb, CMD_BUTTONS, QS_NAME, QS_ID, QS_CMD, PQS_VALUE, PQS_TYPE, QSType) diff --git a/homeassistant/components/rest_command.py b/homeassistant/components/rest_command.py index 5bf629ed37f..026f0e9a19b 100644 --- a/homeassistant/components/rest_command.py +++ b/homeassistant/components/rest_command.py @@ -54,7 +54,7 @@ CONFIG_SCHEMA = vol.Schema({ @asyncio.coroutine def async_setup(hass, config): - """Setup the rest_command component.""" + """Set up the REST command component.""" websession = async_get_clientsession(hass) def async_register_rest_command(name, command_config): diff --git a/homeassistant/components/rfxtrx.py b/homeassistant/components/rfxtrx.py index 1370aa73e1f..b7f016d1029 100644 --- a/homeassistant/components/rfxtrx.py +++ b/homeassistant/components/rfxtrx.py @@ -16,7 +16,7 @@ from homeassistant.const import (ATTR_ENTITY_ID, TEMP_CELSIUS) REQUIREMENTS = ['pyRFXtrx==0.18.0'] -DOMAIN = "rfxtrx" +DOMAIN = 'rfxtrx' DEFAULT_SIGNAL_REPETITIONS = 1 @@ -126,10 +126,10 @@ CONFIG_SCHEMA = vol.Schema({ def setup(hass, config): - """Setup the RFXtrx component.""" + """Set up the RFXtrx component.""" # Declare the Handle event def handle_receive(event): - """Callback all subscribers for RFXtrx gateway.""" + """Handle revieved messgaes from RFXtrx gateway.""" # Log RFXCOM event if not event.device.id_string: return diff --git a/homeassistant/components/ring.py b/homeassistant/components/ring.py index 01b9cee9996..fe5e7bc07ea 100644 --- a/homeassistant/components/ring.py +++ b/homeassistant/components/ring.py @@ -35,7 +35,7 @@ CONFIG_SCHEMA = vol.Schema({ def setup(hass, config): - """Set up Ring component.""" + """Set up the Ring component.""" conf = config[DOMAIN] username = conf.get(CONF_USERNAME) password = conf.get(CONF_PASSWORD) diff --git a/homeassistant/components/rpi_gpio.py b/homeassistant/components/rpi_gpio.py index 0f2f5792cbc..dfc60b5e45e 100644 --- a/homeassistant/components/rpi_gpio.py +++ b/homeassistant/components/rpi_gpio.py @@ -19,7 +19,7 @@ DOMAIN = 'rpi_gpio' # pylint: disable=no-member def setup(hass, config): - """Setup the Raspberry PI GPIO component.""" + """Set up the Raspberry PI GPIO component.""" import RPi.GPIO as GPIO def cleanup_gpio(event): @@ -36,13 +36,13 @@ def setup(hass, config): def setup_output(port): - """Setup a GPIO as output.""" + """Set up a GPIO as output.""" import RPi.GPIO as GPIO GPIO.setup(port, GPIO.OUT) def setup_input(port, pull_mode): - """Setup a GPIO as input.""" + """Set up a GPIO as input.""" import RPi.GPIO as GPIO GPIO.setup(port, GPIO.IN, GPIO.PUD_DOWN if pull_mode == 'DOWN' else GPIO.PUD_UP) diff --git a/homeassistant/components/rss_feed_template.py b/homeassistant/components/rss_feed_template.py index a94ab2d04af..e6af34a9b5e 100644 --- a/homeassistant/components/rss_feed_template.py +++ b/homeassistant/components/rss_feed_template.py @@ -14,10 +14,10 @@ import voluptuous as vol from homeassistant.components.http import HomeAssistantView import homeassistant.helpers.config_validation as cv -DOMAIN = "rss_feed_template" +CONTENT_TYPE_XML = 'text/xml' DEPENDENCIES = ['http'] -CONTENT_TYPE_XML = "text/xml" +DOMAIN = 'rss_feed_template' CONFIG_SCHEMA = vol.Schema({ DOMAIN: cv.ordered_dict( @@ -37,7 +37,7 @@ CONFIG_SCHEMA = vol.Schema({ def setup(hass, config): - """Setup the RSS feeds.""" + """Set up the RSS feed template component.""" for (feeduri, feedconfig) in config[DOMAIN].items(): url = '/api/rss_template/%s' % feeduri @@ -78,7 +78,7 @@ class RssView(HomeAssistantView): @asyncio.coroutine def get(self, request, entity_id=None): - """Generate the rss view XML.""" + """Generate the RSS view XML.""" response = '\n\n' response += '\n' diff --git a/homeassistant/components/script.py b/homeassistant/components/script.py index bcab6465dc1..6d2982dd262 100644 --- a/homeassistant/components/script.py +++ b/homeassistant/components/script.py @@ -22,18 +22,20 @@ import homeassistant.helpers.config_validation as cv from homeassistant.helpers.script import Script -DOMAIN = "script" -ENTITY_ID_FORMAT = DOMAIN + '.{}' -GROUP_NAME_ALL_SCRIPTS = 'all scripts' +_LOGGER = logging.getLogger(__name__) -CONF_SEQUENCE = "sequence" - -ATTR_VARIABLES = 'variables' +ATTR_CAN_CANCEL = 'can_cancel' ATTR_LAST_ACTION = 'last_action' ATTR_LAST_TRIGGERED = 'last_triggered' -ATTR_CAN_CANCEL = 'can_cancel' +ATTR_VARIABLES = 'variables' -_LOGGER = logging.getLogger(__name__) +CONF_SEQUENCE = 'sequence' + +DOMAIN = 'script' + +ENTITY_ID_FORMAT = DOMAIN + '.{}' + +GROUP_NAME_ALL_SCRIPTS = 'all scripts' _SCRIPT_ENTRY_SCHEMA = vol.Schema({ CONF_ALIAS: cv.string, diff --git a/homeassistant/components/scsgate.py b/homeassistant/components/scsgate.py index 54e4b821c4b..8c5c6570515 100644 --- a/homeassistant/components/scsgate.py +++ b/homeassistant/components/scsgate.py @@ -38,7 +38,7 @@ SCSGATE_SCHEMA = vol.Schema({ def setup(hass, config): - """Setup the SCSGate component.""" + """Set up the SCSGate component.""" device = config[DOMAIN][CONF_DEVICE] global SCSGATE @@ -61,7 +61,7 @@ def setup(hass, config): class SCSGate(object): - """The class for dealing with the SCSGate device via scsgate.Reactor.""" + """The class for dealing with the SCSGate device via scsgate.Reactor.""" def __init__(self, device, logger): """Initialize the SCSGate.""" @@ -81,7 +81,7 @@ class SCSGate(object): handle_message=self.handle_message) def handle_message(self, message): - """Method called whenever a message is seen on the bus.""" + """Handle a messages seen on the bus.""" from scsgate.messages import StateMessage, ScenarioTriggeredMessage self._logger.debug("Received message {}".format(message)) @@ -114,7 +114,7 @@ class SCSGate(object): @property def devices(self): - """Dictionary with known devices. + """Return a dictionary with known devices. Key is device ID, value is the device itself. """ diff --git a/homeassistant/components/shell_command.py b/homeassistant/components/shell_command.py index e4807251932..6aabdc8ddf7 100644 --- a/homeassistant/components/shell_command.py +++ b/homeassistant/components/shell_command.py @@ -26,7 +26,7 @@ CONFIG_SCHEMA = vol.Schema({ def setup(hass, config): - """Setup the shell_command component.""" + """Set up the shell_command component.""" conf = config.get(DOMAIN, {}) cache = {} @@ -51,16 +51,16 @@ def setup(hass, config): try: rendered_args = args_compiled.render(call.data) except TemplateError as ex: - _LOGGER.exception('Error rendering command template: %s', ex) + _LOGGER.exception("Error rendering command template: %s", ex) return else: rendered_args = None if rendered_args == args: - # no template used. default behavior + # No template used. default behavior shell = True else: - # template used. Break into list and use shell=False for security + # Template used. Break into list and use shell=False for security cmd = [prog] + shlex.split(rendered_args) shell = False @@ -69,7 +69,7 @@ def setup(hass, config): stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL) except subprocess.SubprocessError: - _LOGGER.exception('Error running command: %s', cmd) + _LOGGER.exception("Error running command: %s", cmd) for name in conf.keys(): hass.services.register(DOMAIN, name, service_handler) diff --git a/homeassistant/components/sleepiq.py b/homeassistant/components/sleepiq.py index 610f4e79bb2..d9d81d3fee0 100644 --- a/homeassistant/components/sleepiq.py +++ b/homeassistant/components/sleepiq.py @@ -4,7 +4,6 @@ Support for SleepIQ from SleepNumber. For more details about this platform, please refer to the documentation at https://home-assistant.io/components/sleepiq/ """ - import logging from datetime import timedelta @@ -47,7 +46,7 @@ CONFIG_SCHEMA = vol.Schema({ def setup(hass, config): - """Setup SleepIQ. + """Set up the SleepIQ component. Will automatically load sensor components to support devices discovered on the account. @@ -76,7 +75,7 @@ def setup(hass, config): class SleepIQData(object): - """Gets the latest data from SleepIQ.""" + """Get the latest data from SleepIQ.""" def __init__(self, client): """Initialize the data object.""" @@ -112,9 +111,8 @@ class SleepIQSensor(Entity): @property def name(self): """Return the name of the sensor.""" - return 'SleepNumber {} {} {}'.format(self.bed.name, - self.side.sleeper.first_name, - self._name) + return 'SleepNumber {} {} {}'.format( + self.bed.name, self.side.sleeper.first_name, self._name) def update(self): """Get the latest data from SleepIQ and updates the states.""" diff --git a/homeassistant/components/splunk.py b/homeassistant/components/splunk.py index 2ae2842bceb..e9a2ee13ae2 100644 --- a/homeassistant/components/splunk.py +++ b/homeassistant/components/splunk.py @@ -34,7 +34,7 @@ CONFIG_SCHEMA = vol.Schema({ def setup(hass, config): - """Setup the Splunk component.""" + """Set up the Splunk component.""" conf = config[DOMAIN] host = conf.get(CONF_HOST) port = conf.get(CONF_PORT) @@ -73,12 +73,14 @@ def setup(hass, config): ] try: - payload = {"host": event_collector, - "event": json_body} + payload = { + "host": event_collector, + "event": json_body, + } requests.post(event_collector, data=json.dumps(payload), - headers=headers) + headers=headers, timeout=10) except requests.exceptions.RequestException as error: - _LOGGER.exception('Error saving event to Splunk: %s', error) + _LOGGER.exception("Error saving event to Splunk: %s", error) hass.bus.listen(EVENT_STATE_CHANGED, splunk_event_listener) diff --git a/homeassistant/components/statsd.py b/homeassistant/components/statsd.py index d85bc1e030c..452faf8933b 100644 --- a/homeassistant/components/statsd.py +++ b/homeassistant/components/statsd.py @@ -39,7 +39,7 @@ CONFIG_SCHEMA = vol.Schema({ def setup(hass, config): - """Setup the StatsD component.""" + """Set up the StatsD component.""" import statsd conf = config[DOMAIN] diff --git a/homeassistant/components/sun.py b/homeassistant/components/sun.py index f5fb0115a43..b2af30d8438 100644 --- a/homeassistant/components/sun.py +++ b/homeassistant/components/sun.py @@ -356,7 +356,7 @@ class Sun(Entity): self.location.longitude) def point_in_time_listener(self, now): - """Called when the state of the sun has changed.""" + """Run when the state of the sun has changed.""" self.update_as_of(now) self.schedule_update_ha_state() diff --git a/homeassistant/components/tado.py b/homeassistant/components/tado.py index b7758c95c0e..a465119dc2d 100644 --- a/homeassistant/components/tado.py +++ b/homeassistant/components/tado.py @@ -107,21 +107,21 @@ class TadoDataStore: return data def get_zones(self): - """Wrapper for getZones().""" + """Wrap for getZones().""" return self.tado.getZones() def get_capabilities(self, tado_id): - """Wrapper for getCapabilities(..).""" + """Wrap for getCapabilities(..).""" return self.tado.getCapabilities(tado_id) def get_me(self): - """Wrapper for getMet().""" + """Wrap for getMet().""" return self.tado.getMe() def reset_zone_overlay(self, zone_id): - """Wrapper for resetZoneOverlay(..).""" + """Wrap for resetZoneOverlay(..).""" return self.tado.resetZoneOverlay(zone_id) def set_zone_overlay(self, zone_id, mode, temperature=None, duration=None): - """Wrapper for setZoneOverlay(..).""" + """Wrap for setZoneOverlay(..).""" return self.tado.setZoneOverlay(zone_id, mode, temperature, duration) diff --git a/homeassistant/components/tellduslive.py b/homeassistant/components/tellduslive.py index eb2957d7b4a..a9f3cea81e7 100644 --- a/homeassistant/components/tellduslive.py +++ b/homeassistant/components/tellduslive.py @@ -46,14 +46,13 @@ ATTR_LAST_UPDATED = 'time_last_updated' def setup(hass, config): - """Setup the Telldus Live component.""" + """Set up the Telldus Live component.""" client = TelldusLiveClient(hass, config) if not client.validate_session(): _LOGGER.error( - 'Authentication Error: ' - 'Please make sure you have configured your keys ' - 'that can be aquired from https://api.telldus.com/keys/index') + "Authentication Error: Please make sure you have configured your " + "keys that can be aquired from https://api.telldus.com/keys/index") return False hass.data[DOMAIN] = client @@ -94,7 +93,7 @@ class TelldusLiveClient(object): def update(self, now): """Periodically poll the servers for current state.""" - _LOGGER.debug('Updating') + _LOGGER.debug("Updating") try: self._sync() finally: @@ -104,7 +103,7 @@ class TelldusLiveClient(object): def _sync(self): """Update local list of devices.""" if not self._client.update(): - _LOGGER.warning('Failed request') + _LOGGER.warning("Failed request") def identify_device(device): """Find out what type of HA component to create.""" @@ -116,8 +115,8 @@ class TelldusLiveClient(object): elif device.methods & TURNON: return 'switch' else: - _LOGGER.warning('Unidentified device type (methods: %d)', - device.methods) + _LOGGER.warning( + "Unidentified device type (methods: %d)", device.methods) return 'switch' def discover(device_id, component): @@ -158,10 +157,10 @@ class TelldusLiveEntity(Entity): self._client = hass.data[DOMAIN] self._client.entities.append(self) self._name = self.device.name - _LOGGER.debug('Created device %s', self) + _LOGGER.debug("Created device %s", self) def changed(self): - """A property of the device might have changed.""" + """Return the property of the device might have changed.""" if self.device.name: self._name = self.device.name self.schedule_update_ha_state() @@ -183,7 +182,7 @@ class TelldusLiveEntity(Entity): @property def should_poll(self): - """Polling is not needed.""" + """Return the polling state.""" return False @property diff --git a/homeassistant/components/tellstick.py b/homeassistant/components/tellstick.py index ea71ef3cdef..5d0ec78dfa7 100644 --- a/homeassistant/components/tellstick.py +++ b/homeassistant/components/tellstick.py @@ -56,7 +56,7 @@ def _discover(hass, config, component_name, found_tellcore_devices): def setup(hass, config): - """Setup the Tellstick component.""" + """Set up the Tellstick component.""" from tellcore.constants import TELLSTICK_DIM from tellcore.telldus import AsyncioCallbackDispatcher from tellcore.telldus import TelldusCore @@ -151,7 +151,7 @@ class TellstickDevice(Entity): """ def __init__(self, tellcore_id, tellcore_registry, signal_repetitions): - """Initalize the Tellstick device.""" + """Init the Tellstick device.""" self._signal_repetitions = signal_repetitions self._state = None self._requested_state = None @@ -217,7 +217,7 @@ class TellstickDevice(Entity): _LOGGER.error(err) def _change_device_state(self, new_state, data): - """The logic for actually turning on or off the device.""" + """Turn on or off the device.""" with TELLSTICK_LOCK: # Set the requested state and number of repeats before calling # _send_repeated_command the first time. Subsequent calls will be @@ -244,8 +244,8 @@ class TellstickDevice(Entity): def _update_model_from_command(self, tellcore_command, tellcore_data): """Update the model, from a sent tellcore command and data.""" - from tellcore.constants import (TELLSTICK_TURNON, TELLSTICK_TURNOFF, - TELLSTICK_DIM) + from tellcore.constants import ( + TELLSTICK_TURNON, TELLSTICK_TURNOFF, TELLSTICK_DIM) if tellcore_command not in [TELLSTICK_TURNON, TELLSTICK_TURNOFF, TELLSTICK_DIM]: @@ -268,8 +268,8 @@ class TellstickDevice(Entity): def _update_from_tellcore(self): """Read the current state of the device from the tellcore library.""" from tellcore.library import TelldusError - from tellcore.constants import (TELLSTICK_TURNON, TELLSTICK_TURNOFF, - TELLSTICK_DIM) + from tellcore.constants import ( + TELLSTICK_TURNON, TELLSTICK_TURNOFF, TELLSTICK_DIM) with TELLSTICK_LOCK: try: diff --git a/homeassistant/components/tradfri.py b/homeassistant/components/tradfri.py index 3fd51a68db0..7af31a66b9d 100644 --- a/homeassistant/components/tradfri.py +++ b/homeassistant/components/tradfri.py @@ -73,14 +73,14 @@ def request_configuration(hass, config, host): @asyncio.coroutine def async_setup(hass, config): - """Setup Tradfri.""" + """Set up the Tradfri component.""" conf = config.get(DOMAIN, {}) host = conf.get(CONF_HOST) key = conf.get(CONF_API_KEY) @asyncio.coroutine def gateway_discovered(service, info): - """Called when a gateway is discovered.""" + """Run when a gateway is discovered.""" keys = yield from hass.async_add_job(_read_config, hass) host = info['host'] diff --git a/homeassistant/components/vera.py b/homeassistant/components/vera.py index 655c8100f8c..6dbac5496c2 100644 --- a/homeassistant/components/vera.py +++ b/homeassistant/components/vera.py @@ -56,7 +56,7 @@ VERA_COMPONENTS = [ # pylint: disable=unused-argument, too-many-function-args def setup(hass, base_config): - """Common setup for Vera devices.""" + """Set up for Vera devices.""" global VERA_CONTROLLER import pyvera as veraApi @@ -102,7 +102,7 @@ def setup(hass, base_config): # pylint: disable=too-many-return-statements def map_vera_device(vera_device, remap): - """Map vera classes to HA types.""" + """Map vera classes to Home Assistant types.""" import pyvera as veraApi if isinstance(vera_device, veraApi.VeraDimmer): return 'light' @@ -145,6 +145,7 @@ class VeraDevice(Entity): self.update() def _update_callback(self, _device): + """Update the state.""" self.update() self.schedule_update_ha_state() diff --git a/homeassistant/components/verisure.py b/homeassistant/components/verisure.py index f2b091aa0f1..72837b07019 100644 --- a/homeassistant/components/verisure.py +++ b/homeassistant/components/verisure.py @@ -23,6 +23,7 @@ REQUIREMENTS = ['vsure==0.11.1'] _LOGGER = logging.getLogger(__name__) ATTR_DEVICE_SERIAL = 'device_serial' + CONF_ALARM = 'alarm' CONF_CODE_DIGITS = 'code_digits' CONF_HYDROMETERS = 'hygrometers' @@ -31,7 +32,9 @@ CONF_MOUSE = 'mouse' CONF_SMARTPLUGS = 'smartplugs' CONF_THERMOMETERS = 'thermometers' CONF_SMARTCAM = 'smartcam' + DOMAIN = 'verisure' + SERVICE_CAPTURE_SMARTCAM = 'capture_smartcam' HUB = None @@ -57,7 +60,7 @@ CAPTURE_IMAGE_SCHEMA = vol.Schema({ def setup(hass, config): - """Setup the Verisure component.""" + """Set up the Verisure component.""" import verisure global HUB HUB = VerisureHub(config[DOMAIN], verisure) @@ -75,7 +78,7 @@ def setup(hass, config): """Capture a new picture from a smartcam.""" device_id = service.data.get(ATTR_DEVICE_SERIAL) HUB.smartcam_capture(device_id) - _LOGGER.debug('Capturing new image from %s', ATTR_DEVICE_SERIAL) + _LOGGER.debug("Capturing new image from %s", ATTR_DEVICE_SERIAL) hass.services.register(DOMAIN, SERVICE_CAPTURE_SMARTCAM, capture_smartcam, @@ -119,7 +122,7 @@ class VerisureHub(object): try: self.my_pages.login() except self._verisure.Error as ex: - _LOGGER.error('Could not log in to verisure mypages, %s', ex) + _LOGGER.error("Could not log in to verisure mypages, %s", ex) return False return True @@ -168,9 +171,9 @@ class VerisureHub(object): @Throttle(timedelta(seconds=30)) def update_smartcam_imagelist(self): """Update the imagelist for the camera.""" - _LOGGER.debug('Running update imagelist') + _LOGGER.debug("Running update imagelist") self.smartcam_dict = self.my_pages.smartcam.get_imagelist() - _LOGGER.debug('New dict: %s', self.smartcam_dict) + _LOGGER.debug("New dict: %s", self.smartcam_dict) @Throttle(timedelta(seconds=30)) def smartcam_capture(self, device_id): @@ -191,7 +194,7 @@ class VerisureHub(object): except AttributeError: status[overview.deviceLabel] = overview except self._verisure.Error as ex: - _LOGGER.info('Caught connection error %s, tries to reconnect', ex) + _LOGGER.info("Caught connection error %s, tries to reconnect", ex) self.reconnect() def reconnect(self): diff --git a/homeassistant/components/volvooncall.py b/homeassistant/components/volvooncall.py index 04420bec567..da419ff0ab3 100644 --- a/homeassistant/components/volvooncall.py +++ b/homeassistant/components/volvooncall.py @@ -56,7 +56,7 @@ CONFIG_SCHEMA = vol.Schema({ def setup(hass, config): - """Setup the VOC component.""" + """Set up the Volvo On Call component.""" from volvooncall import Connection connection = Connection( config[DOMAIN].get(CONF_USERNAME), @@ -79,14 +79,11 @@ def setup(hass, config): for attr, (component, *_) in RESOURCES.items(): if (getattr(vehicle, attr + '_supported', True) and attr in config[DOMAIN].get(CONF_RESOURCES, [attr])): - discovery.load_platform(hass, - component, - DOMAIN, - (vehicle.vin, attr), - config) + discovery.load_platform( + hass, component, DOMAIN, (vehicle.vin, attr), config) def update_vehicle(vehicle): - """Updated information on vehicle received.""" + """Revieve updated information on vehicle.""" state.vehicles[vehicle.vin] = vehicle if vehicle.vin not in state.entities: discover_vehicle(vehicle) @@ -101,7 +98,7 @@ def setup(hass, config): """Update status from the online service.""" try: if not connection.update(): - _LOGGER.warning('Could not query server') + _LOGGER.warning("Could not query server") return False for vehicle in connection.vehicles: @@ -111,7 +108,7 @@ def setup(hass, config): finally: track_point_in_utc_time(hass, update, utcnow() + interval) - _LOGGER.info('Logging in to service') + _LOGGER.info("Logging in to service") return update(utcnow()) @@ -154,7 +151,7 @@ class VolvoEntity(Entity): @property def should_poll(self): - """Polling is not needed.""" + """Return the polling state.""" return False @property diff --git a/homeassistant/components/weblink.py b/homeassistant/components/weblink.py index 7fe121d64c9..f55fe1f0bb5 100644 --- a/homeassistant/components/weblink.py +++ b/homeassistant/components/weblink.py @@ -34,7 +34,7 @@ CONFIG_SCHEMA = vol.Schema({ def setup(hass, config): - """Setup weblink component.""" + """Set up the weblink component.""" links = config.get(DOMAIN) for link in links.get(CONF_ENTITIES): diff --git a/homeassistant/components/websocket_api.py b/homeassistant/components/websocket_api.py index a3557a301c5..009c0d1f1d6 100644 --- a/homeassistant/components/websocket_api.py +++ b/homeassistant/components/websocket_api.py @@ -1,4 +1,9 @@ -"""Websocket based API for Home Assistant.""" +""" +Websocket based API for Home Assistant. + +For more details about this component, please refer to the documentation at +https://home-assistant.io/developers/websocket_api/ +""" import asyncio from functools import partial import json @@ -22,7 +27,7 @@ from homeassistant.components.http.ban import process_wrong_login DOMAIN = 'websocket_api' -URL = "/api/websocket" +URL = '/api/websocket' DEPENDENCIES = 'http', ERR_ID_REUSE = 1 @@ -209,15 +214,15 @@ class ActiveConnection: def debug(self, message1, message2=''): """Print a debug message.""" - _LOGGER.debug('WS %s: %s %s', id(self.wsock), message1, message2) + _LOGGER.debug("WS %s: %s %s", id(self.wsock), message1, message2) def log_error(self, message1, message2=''): """Print an error message.""" - _LOGGER.error('WS %s: %s %s', id(self.wsock), message1, message2) + _LOGGER.error("WS %s: %s %s", id(self.wsock), message1, message2) def send_message(self, message): - """Helper method to send messages.""" - self.debug('Sending', message) + """Send messages.""" + self.debug("Sending", message) self.wsock.send_json(message, dumps=JSON_DUMP) @asyncio.coroutine @@ -234,10 +239,10 @@ class ActiveConnection: """Cancel this connection.""" socket_task.cancel() - unsub_stop = self.hass.bus.async_listen(EVENT_HOMEASSISTANT_STOP, - cancel_connection) + unsub_stop = self.hass.bus.async_listen( + EVENT_HOMEASSISTANT_STOP, cancel_connection) - self.debug('Connected') + self.debug("Connected") msg = None authenticated = False @@ -255,7 +260,7 @@ class ActiveConnection: authenticated = True else: - self.debug('Invalid password') + self.debug("Invalid password") self.send_message(auth_invalid_message('Invalid password')) if not authenticated: @@ -269,7 +274,7 @@ class ActiveConnection: last_id = 0 while msg: - self.debug('Received', msg) + self.debug("Received", msg) msg = BASE_COMMAND_MESSAGE_SCHEMA(msg) cur_id = msg['id'] @@ -286,7 +291,7 @@ class ActiveConnection: msg = yield from wsock.receive_json() except vol.Invalid as err: - error_msg = 'Message incorrectly formatted: ' + error_msg = "Message incorrectly formatted: " if msg: error_msg += humanize_error(msg, err) else: @@ -303,27 +308,27 @@ class ActiveConnection: else: iden = None - self.send_message(error_message(iden, ERR_INVALID_FORMAT, - error_msg)) + self.send_message(error_message( + iden, ERR_INVALID_FORMAT, error_msg)) except TypeError as err: if wsock.closed: - self.debug('Connection closed by client') + self.debug("Connection closed by client") else: - self.log_error('Unexpected TypeError', msg) + self.log_error("Unexpected TypeError", msg) except ValueError as err: - msg = 'Received invalid JSON' + msg = "Received invalid JSON" value = getattr(err, 'doc', None) # Py3.5+ only if value: msg += ': {}'.format(value) self.log_error(msg) except asyncio.CancelledError: - self.debug('Connection cancelled by server') + self.debug("Connection cancelled by server") except Exception: # pylint: disable=broad-except - error = 'Unexpected error inside websocket API. ' + error = "Unexpected error inside websocket API. " if msg is not None: error += str(msg) _LOGGER.exception(error) @@ -335,7 +340,7 @@ class ActiveConnection: unsub() yield from wsock.close() - self.debug('Closed connection') + self.debug("Closed connection") return wsock @@ -345,7 +350,7 @@ class ActiveConnection: @callback def forward_events(event): - """Helper to forward events to websocket.""" + """Forward events to websocket.""" if event.event_type == EVENT_TIME_CHANGED: return @@ -380,7 +385,7 @@ class ActiveConnection: @asyncio.coroutine def call_service_helper(msg): - """Helper to call a service and fire complete message.""" + """Call a service and fire complete message.""" yield from self.hass.services.async_call( msg['domain'], msg['service'], msg['service_data'], True) try: @@ -395,22 +400,22 @@ class ActiveConnection: """Handle get states command.""" msg = GET_STATES_MESSAGE_SCHEMA(msg) - self.send_message(result_message(msg['id'], - self.hass.states.async_all())) + self.send_message(result_message( + msg['id'], self.hass.states.async_all())) def handle_get_services(self, msg): """Handle get services command.""" msg = GET_SERVICES_MESSAGE_SCHEMA(msg) - self.send_message(result_message(msg['id'], - self.hass.services.async_services())) + self.send_message(result_message( + msg['id'], self.hass.services.async_services())) def handle_get_config(self, msg): """Handle get config command.""" msg = GET_CONFIG_MESSAGE_SCHEMA(msg) - self.send_message(result_message(msg['id'], - self.hass.config.as_dict())) + self.send_message(result_message( + msg['id'], self.hass.config.as_dict())) def handle_get_panels(self, msg): """Handle get panels command.""" diff --git a/homeassistant/components/wemo.py b/homeassistant/components/wemo.py index 98eefbc42d8..3d7226e3c8b 100644 --- a/homeassistant/components/wemo.py +++ b/homeassistant/components/wemo.py @@ -45,7 +45,7 @@ CONFIG_SCHEMA = vol.Schema({ # pylint: disable=unused-argument, too-many-function-args def setup(hass, config): - """Common setup for WeMo devices.""" + """Set up for WeMo devices.""" import pywemo global SUBSCRIPTION_REGISTRY diff --git a/homeassistant/components/wink.py b/homeassistant/components/wink.py index 8cf32f64d61..d755d59056b 100644 --- a/homeassistant/components/wink.py +++ b/homeassistant/components/wink.py @@ -120,7 +120,7 @@ def setup(hass, config): def pull_new_devices(call): """Pull new devices added to users Wink account since startup.""" - _LOGGER.info("Getting new devices from Wink API.") + _LOGGER.info("Getting new devices from Wink API") for component in WINK_COMPONENTS: discovery.load_platform(hass, component, DOMAIN, {}, config) hass.services.register(DOMAIN, 'Add new devices', pull_new_devices) @@ -166,7 +166,7 @@ class WinkDevice(Entity): @property def available(self): - """True if connection == True.""" + """Return true if connection == True.""" return self.wink.available() def update(self): diff --git a/homeassistant/components/zha/__init__.py b/homeassistant/components/zha/__init__.py index e9e21b634d1..8c84fe166f0 100644 --- a/homeassistant/components/zha/__init__.py +++ b/homeassistant/components/zha/__init__.py @@ -9,13 +9,11 @@ import logging import voluptuous as vol +import homeassistant.helpers.config_validation as cv from homeassistant import const as ha_const from homeassistant.helpers import discovery, entity from homeassistant.util import slugify -import homeassistant.helpers.config_validation as cv - -# Definitions for interfacing with the rest of HA REQUIREMENTS = ['bellows==0.2.7'] DOMAIN = 'zha' @@ -38,9 +36,9 @@ CONFIG_SCHEMA = vol.Schema({ }) }, extra=vol.ALLOW_EXTRA) -ATTR_DURATION = "duration" +ATTR_DURATION = 'duration' -SERVICE_PERMIT = "permit" +SERVICE_PERMIT = 'permit' SERVICE_DESCRIPTIONS = { SERVICE_PERMIT: { "description": "Allow nodes to join the Zigbee network", @@ -72,7 +70,7 @@ _LOGGER = logging.getLogger(__name__) @asyncio.coroutine def async_setup(hass, config): - """Setup ZHA. + """Set up ZHA. Will automatically load components to support devices found on the network. """ @@ -109,7 +107,7 @@ def async_setup(hass, config): class ApplicationListener: - """Handlers for events that happen on the ZigBee application.""" + """All handlers for events that happen on the ZigBee application.""" def __init__(self, hass, config): """Initialize the listener.""" @@ -213,7 +211,7 @@ class Entity(entity.Entity): _domain = None # Must be overriden by subclasses def __init__(self, endpoint, clusters, manufacturer, model, **kwargs): - """Initialize ZHA entity.""" + """Init ZHA entity.""" self._device_state_attributes = {} ieeetail = ''.join([ '%02x' % (o, ) for o in endpoint.device.ieee[-4:] diff --git a/homeassistant/components/zha/const.py b/homeassistant/components/zha/const.py index 5e2dfb12d6f..ed06f18c1f5 100644 --- a/homeassistant/components/zha/const.py +++ b/homeassistant/components/zha/const.py @@ -1,6 +1,5 @@ -"""Constants related to the zha component.""" +"""All constants related to the ZHA component.""" -# Populated by populate_data() when zha component is initialized DEVICE_CLASS = {} SINGLE_CLUSTER_DEVICE_CLASS = {} COMPONENT_CLUSTERS = {} diff --git a/homeassistant/components/zigbee.py b/homeassistant/components/zigbee.py index 817e7e432db..95b0971373d 100644 --- a/homeassistant/components/zigbee.py +++ b/homeassistant/components/zigbee.py @@ -61,7 +61,7 @@ PLATFORM_SCHEMA = vol.Schema({ def setup(hass, config): - """Setup the connection to the ZigBee device.""" + """Set up the connection to the ZigBee device.""" global DEVICE global GPIO_DIGITAL_OUTPUT_LOW global GPIO_DIGITAL_OUTPUT_HIGH @@ -98,7 +98,7 @@ def setup(hass, config): hass.bus.listen_once(EVENT_HOMEASSISTANT_STOP, close_serial_port) def _frame_received(frame): - """Called when a ZigBee frame is received. + """Run when a ZigBee frame is received. Pickles the frame, then encodes it into base64 since it contains non JSON serializable binary. @@ -134,12 +134,12 @@ class ZigBeeConfig(object): @property def name(self): - """The name given to the entity.""" + """Return the name given to the entity.""" return self._config["name"] @property def address(self): - """The address of the device. + """Return the address of the device. If an address has been provided, unhexlify it, otherwise return None as we're talking to our local ZigBee device. @@ -151,16 +151,16 @@ class ZigBeeConfig(object): @property def should_poll(self): - """No polling needed.""" + """Return the polling state.""" return self._should_poll class ZigBeePinConfig(ZigBeeConfig): - """Handle the fetching of configuration from the config file.""" + """Handle the fetching of configuration from the configuration file.""" @property def pin(self): - """The GPIO pin number.""" + """Return the GPIO pin number.""" return self._config["pin"] @@ -195,7 +195,7 @@ class ZigBeeDigitalInConfig(ZigBeePinConfig): @property def bool2state(self): - """A dictionary mapping the internal value to the ZigBee value. + """Return a dictionary mapping the internal value to the ZigBee value. For the translation of on/off as being pin high or low. """ @@ -203,7 +203,7 @@ class ZigBeeDigitalInConfig(ZigBeePinConfig): @property def state2bool(self): - """A dictionary mapping the ZigBee value to the internal value. + """Return a dictionary mapping the ZigBee value to the internal value. For the translation of pin high/low as being on or off. """ @@ -245,7 +245,7 @@ class ZigBeeDigitalOutConfig(ZigBeePinConfig): @property def bool2state(self): - """A dictionary mapping booleans to GPIOSetting objects. + """Return a dictionary mapping booleans to GPIOSetting objects. For the translation of on/off as being pin high or low. """ @@ -253,7 +253,7 @@ class ZigBeeDigitalOutConfig(ZigBeePinConfig): @property def state2bool(self): - """A dictionary mapping GPIOSetting objects to booleans. + """Return a dictionary mapping GPIOSetting objects to booleans. For the translation of pin high/low as being on or off. """ @@ -265,7 +265,7 @@ class ZigBeeAnalogInConfig(ZigBeePinConfig): @property def max_voltage(self): - """The voltage at which the ADC will report its highest value.""" + """Return the voltage for ADC to report its highest value.""" return float(self._config.get("max_volts", DEFAULT_ADC_MAX_VOLTS)) @@ -306,7 +306,7 @@ class ZigBeeDigitalIn(Entity): @property def config(self): - """The entity's configuration.""" + """Return the entity's configuration.""" return self._config @property @@ -428,17 +428,17 @@ class ZigBeeAnalogIn(Entity): @property def name(self): - """The name of the input.""" + """Return the name of the input.""" return self._config.name @property def config(self): - """The entity's configuration.""" + """Return the entity's configuration.""" return self._config @property def should_poll(self): - """The state of the polling, if needed.""" + """Return the polling state, if needed.""" return self._config.should_poll @property diff --git a/homeassistant/components/zone.py b/homeassistant/components/zone.py index 235fe11934a..e1a8b8e721b 100644 --- a/homeassistant/components/zone.py +++ b/homeassistant/components/zone.py @@ -104,7 +104,7 @@ def in_zone(zone, latitude, longitude, radius=0): @asyncio.coroutine def async_setup(hass, config): - """Setup zone.""" + """Set up the zone.""" entities = set() tasks = [] for _, entry in config_per_platform(config, DOMAIN): @@ -112,8 +112,8 @@ def async_setup(hass, config): zone = Zone(hass, name, entry[CONF_LATITUDE], entry[CONF_LONGITUDE], entry.get(CONF_RADIUS), entry.get(CONF_ICON), entry.get(CONF_PASSIVE)) - zone.entity_id = async_generate_entity_id(ENTITY_ID_FORMAT, name, - entities) + zone.entity_id = async_generate_entity_id( + ENTITY_ID_FORMAT, name, entities) tasks.append(zone.async_update_ha_state()) entities.add(zone.entity_id) diff --git a/homeassistant/config.py b/homeassistant/config.py index 6e349ea486a..253a6af4e2f 100644 --- a/homeassistant/config.py +++ b/homeassistant/config.py @@ -325,7 +325,7 @@ def async_process_ha_core_config(hass, config): hac = hass.config def set_time_zone(time_zone_str): - """Helper method to set time zone.""" + """Help to set the time zone.""" if time_zone_str is None: return diff --git a/homeassistant/core.py b/homeassistant/core.py index c9cba0a1357..a0a80b9c8bd 100644 --- a/homeassistant/core.py +++ b/homeassistant/core.py @@ -164,7 +164,7 @@ class HomeAssistant(object): self.bus.async_fire(EVENT_HOMEASSISTANT_START) try: - # only block for EVENT_HOMEASSISTANT_START listener + # Only block for EVENT_HOMEASSISTANT_START listener self.async_stop_track_tasks() with timeout(TIMEOUT_EVENT_START, loop=self.loop): yield from self.async_block_till_done() @@ -208,7 +208,7 @@ class HomeAssistant(object): else: task = self.loop.run_in_executor(None, target, *args) - # if a task is sheduled + # If a task is sheduled if self._track_task and task is not None: self._pending_tasks.append(task) @@ -296,7 +296,7 @@ class EventOrigin(enum.Enum): class Event(object): - """Represents an event within the Bus.""" + """Representation of an event within the bus.""" __slots__ = ['event_type', 'data', 'origin', 'time_fired'] @@ -341,7 +341,7 @@ class Event(object): class EventBus(object): - """Allows firing of and listening for events.""" + """Allow the firing of and listening for events.""" def __init__(self, hass: HomeAssistant) -> None: """Initialize a new event bus.""" @@ -350,7 +350,7 @@ class EventBus(object): @callback def async_listeners(self): - """Dict with events and the number of listeners. + """Dictionary with events and the number of listeners. This method must be run in the event loop. """ @@ -359,7 +359,7 @@ class EventBus(object): @property def listeners(self): - """Dict with events and the number of listeners.""" + """Dictionary with events and the number of listeners.""" return run_callback_threadsafe( self._hass.loop, self.async_listeners ).result() @@ -736,7 +736,7 @@ class StateMachine(object): class Service(object): - """Represents a callable service.""" + """Representation of a callable service.""" __slots__ = ['func', 'description', 'fields', 'schema', 'is_callback', 'is_coroutinefunction'] @@ -759,7 +759,7 @@ class Service(object): class ServiceCall(object): - """Represents a call to a service.""" + """Representation of a call to a service.""" __slots__ = ['domain', 'service', 'data', 'call_id'] @@ -780,7 +780,7 @@ class ServiceCall(object): class ServiceRegistry(object): - """Offers services over the eventbus.""" + """Offer the services over the eventbus.""" def __init__(self, hass): """Initialize a service registry.""" @@ -799,14 +799,14 @@ class ServiceRegistry(object): @property def services(self): - """Dict with per domain a list of available services.""" + """Dictionary with per domain a list of available services.""" return run_callback_threadsafe( self._hass.loop, self.async_services, ).result() @callback def async_services(self): - """Dict with per domain a list of available services. + """Dictionary with per domain a list of available services. This method must be run in the event loop. """ @@ -952,7 +952,7 @@ class ServiceRegistry(object): @callback def service_executed(event): - """Callback method that is called when service is executed.""" + """Method that is called when service is executed.""" if event.data[ATTR_SERVICE_CALL_ID] == call_id: fut.set_result(True) @@ -970,7 +970,7 @@ class ServiceRegistry(object): @asyncio.coroutine def _event_to_service_call(self, event): - """Callback for SERVICE_CALLED events from the event bus.""" + """Method for the SERVICE_CALLED events from the EventBus.""" service_data = event.data.get(ATTR_SERVICE_DATA) or {} domain = event.data.get(ATTR_DOMAIN).lower() service = event.data.get(ATTR_SERVICE).lower() @@ -1056,7 +1056,7 @@ class Config(object): location.distance(self.latitude, self.longitude, lat, lon), 'm') def path(self, *path): - """Generate path to the file within the config dir. + """Generate path to the file within the configuration directory. Async friendly. """ @@ -1065,7 +1065,7 @@ class Config(object): return os.path.join(self.config_dir, *path) def as_dict(self): - """Create a dict representation of this dict. + """Create a dictionary representation of this dict. Async friendly. """ diff --git a/homeassistant/exceptions.py b/homeassistant/exceptions.py index f45fd3c3841..4981e13beeb 100644 --- a/homeassistant/exceptions.py +++ b/homeassistant/exceptions.py @@ -1,4 +1,4 @@ -"""Exceptions used by Home Assistant.""" +"""The exceptions used by Home Assistant.""" class HomeAssistantError(Exception): @@ -23,6 +23,6 @@ class TemplateError(HomeAssistantError): """Error during template rendering.""" def __init__(self, exception): - """Initalize the error.""" + """Init the error.""" super().__init__('{}: {}'.format(exception.__class__.__name__, exception)) diff --git a/homeassistant/remote.py b/homeassistant/remote.py index c0e3d9d6459..b65b3f3de22 100644 --- a/homeassistant/remote.py +++ b/homeassistant/remote.py @@ -25,15 +25,15 @@ from homeassistant.const import ( HTTP_HEADER_CONTENT_TYPE, CONTENT_TYPE_JSON) from homeassistant.exceptions import HomeAssistantError -METHOD_GET = "get" -METHOD_POST = "post" -METHOD_DELETE = "delete" - _LOGGER = logging.getLogger(__name__) +METHOD_GET = 'get' +METHOD_POST = 'post' +METHOD_DELETE = 'delete' + class APIStatus(enum.Enum): - """Represent API status.""" + """Representation of an API status.""" # pylint: disable=no-init, invalid-name OK = "ok" @@ -51,7 +51,7 @@ class API(object): def __init__(self, host: str, api_password: Optional[str]=None, port: Optional[int]=SERVER_PORT, use_ssl: bool=False) -> None: - """Initalize the API.""" + """Init the API.""" self.host = host self.port = port self.api_password = api_password diff --git a/homeassistant/setup.py b/homeassistant/setup.py index f10e3f21124..96d27e3494b 100644 --- a/homeassistant/setup.py +++ b/homeassistant/setup.py @@ -1,4 +1,4 @@ -"""Provides methods to bootstrap a home assistant instance.""" +"""All methods needed to bootstrap a Home Assistant instance.""" import asyncio import logging import logging.handlers @@ -28,7 +28,7 @@ SLOW_SETUP_WARNING = 10 def setup_component(hass: core.HomeAssistant, domain: str, config: Optional[Dict]=None) -> bool: - """Setup a component and all its dependencies.""" + """Set up a component and all its dependencies.""" return run_coroutine_threadsafe( async_setup_component(hass, domain, config), loop=hass.loop).result() @@ -36,7 +36,7 @@ def setup_component(hass: core.HomeAssistant, domain: str, @asyncio.coroutine def async_setup_component(hass: core.HomeAssistant, domain: str, config: Optional[Dict]=None) -> bool: - """Setup a component and all its dependencies. + """Set up a component and all its dependencies. This method is a coroutine. """ @@ -78,15 +78,15 @@ def _async_process_requirements(hass: core.HomeAssistant, name: str, """Install packages.""" return pkg_util.install_package( mod, target=hass.config.path('deps'), - constraints=os.path.join(os.path.dirname(__file__), - CONSTRAINT_FILE)) + constraints=os.path.join( + os.path.dirname(__file__), CONSTRAINT_FILE)) with (yield from pip_lock): for req in requirements: ret = yield from hass.loop.run_in_executor(None, pip_install, req) if not ret: - _LOGGER.error('Not initializing %s because could not install ' - 'dependency %s', name, req) + _LOGGER.error("Not initializing %s because could not install " + "dependency %s", name, req) async_notify_setup_error(hass, name) return False @@ -100,8 +100,8 @@ def _async_process_dependencies(hass, config, name, dependencies): if dep in loader.DEPENDENCY_BLACKLIST] if blacklisted: - _LOGGER.error('Unable to setup dependencies of %s: ' - 'found blacklisted dependencies: %s', + _LOGGER.error("Unable to setup dependencies of %s: " + "found blacklisted dependencies: %s", name, ', '.join(blacklisted)) return False @@ -117,8 +117,8 @@ def _async_process_dependencies(hass, config, name, dependencies): in enumerate(results) if not res] if failed: - _LOGGER.error('Unable to setup dependencies of %s. ' - 'Setup failed for dependencies: %s', + _LOGGER.error("Unable to setup dependencies of %s. " + "Setup failed for dependencies: %s", name, ', '.join(failed)) return False @@ -128,23 +128,19 @@ def _async_process_dependencies(hass, config, name, dependencies): @asyncio.coroutine def _async_setup_component(hass: core.HomeAssistant, domain: str, config) -> bool: - """Setup a component for Home Assistant. + """Set up a component for Home Assistant. This method is a coroutine. - - hass: Home Assistant instance. - domain: Domain of component to setup. - config: The Home Assistant configuration. """ def log_error(msg, link=True): """Log helper.""" - _LOGGER.error('Setup failed for %s: %s', domain, msg) + _LOGGER.error("Setup failed for %s: %s", domain, msg) async_notify_setup_error(hass, domain, link) component = loader.get_component(domain) if not component: - log_error('Component not found.', False) + log_error("Component not found.", False) return False # Validate no circular dependencies @@ -152,21 +148,21 @@ def _async_setup_component(hass: core.HomeAssistant, # OrderedSet is empty if component or dependencies could not be resolved if not components: - log_error('Unable to resolve component or dependencies.') + log_error("Unable to resolve component or dependencies.") return False processed_config = \ conf_util.async_process_component_config(hass, config, domain) if processed_config is None: - log_error('Invalid config.') + log_error("Invalid config.") return False if not hass.config.skip_pip and hasattr(component, 'REQUIREMENTS'): req_success = yield from _async_process_requirements( hass, domain, component.REQUIREMENTS) if not req_success: - log_error('Could not install all requirements.') + log_error("Could not install all requirements.") return False if hasattr(component, 'DEPENDENCIES'): @@ -174,7 +170,7 @@ def _async_setup_component(hass: core.HomeAssistant, hass, config, domain, component.DEPENDENCIES) if not dep_success: - log_error('Could not setup all dependencies.') + log_error("Could not setup all dependencies.") return False async_comp = hasattr(component, 'async_setup') @@ -182,7 +178,7 @@ def _async_setup_component(hass: core.HomeAssistant, _LOGGER.info("Setting up %s", domain) warn_task = hass.loop.call_later( SLOW_SETUP_WARNING, _LOGGER.warning, - 'Setup of %s is taking over %s seconds.', domain, SLOW_SETUP_WARNING) + "Setup of %s is taking over %s seconds.", domain, SLOW_SETUP_WARNING) try: if async_comp: @@ -191,24 +187,24 @@ def _async_setup_component(hass: core.HomeAssistant, result = yield from hass.loop.run_in_executor( None, component.setup, hass, processed_config) except Exception: # pylint: disable=broad-except - _LOGGER.exception('Error during setup of component %s', domain) + _LOGGER.exception("Error during setup of component %s", domain) async_notify_setup_error(hass, domain, True) return False finally: warn_task.cancel() if result is False: - log_error('Component failed to initialize.') + log_error("Component failed to initialize.") return False elif result is not True: - log_error('Component did not return boolean if setup was successful. ' - 'Disabling component.') + log_error("Component did not return boolean if setup was successful. " + "Disabling component.") loader.set_component(domain, None) return False hass.config.components.add(component.DOMAIN) - # cleanup + # Cleanup if domain in hass.data[DATA_SETUP]: hass.data[DATA_SETUP].pop(domain) @@ -231,7 +227,7 @@ def async_prepare_setup_platform(hass: core.HomeAssistant, config, domain: str, def log_error(msg): """Log helper.""" - _LOGGER.error('Unable to prepare setup for platform %s: %s', + _LOGGER.error("Unable to prepare setup for platform %s: %s", platform_path, msg) async_notify_setup_error(hass, platform_path) @@ -239,7 +235,7 @@ def async_prepare_setup_platform(hass: core.HomeAssistant, config, domain: str, # Not found if platform is None: - log_error('Platform not found.') + log_error("Platform not found.") return None # Already loaded @@ -252,7 +248,7 @@ def async_prepare_setup_platform(hass: core.HomeAssistant, config, domain: str, hass, config, platform_path, platform.DEPENDENCIES) if not dep_success: - log_error('Could not setup all dependencies.') + log_error("Could not setup all dependencies.") return None if not hass.config.skip_pip and hasattr(platform, 'REQUIREMENTS'): @@ -260,7 +256,7 @@ def async_prepare_setup_platform(hass: core.HomeAssistant, config, domain: str, hass, platform_path, platform.REQUIREMENTS) if not req_success: - log_error('Could not install all requirements.') + log_error("Could not install all requirements.") return None return platform diff --git a/homeassistant/util/temperature.py b/homeassistant/util/temperature.py index c773e564011..adaa8afcb57 100644 --- a/homeassistant/util/temperature.py +++ b/homeassistant/util/temperature.py @@ -1,30 +1,26 @@ """Temperature util functions.""" from homeassistant.const import ( - TEMP_CELSIUS, - TEMP_FAHRENHEIT, - UNIT_NOT_RECOGNIZED_TEMPLATE, - TEMPERATURE -) + TEMP_CELSIUS, TEMP_FAHRENHEIT, UNIT_NOT_RECOGNIZED_TEMPLATE, TEMPERATURE) def fahrenheit_to_celsius(fahrenheit: float) -> float: - """Convert a Fahrenheit temperature to Celsius.""" + """Convert a temperature in Fahrenheit to Celsius.""" return (fahrenheit - 32.0) / 1.8 def celsius_to_fahrenheit(celsius: float) -> float: - """Convert a Celsius temperature to Fahrenheit.""" + """Convert a temperature in Celsius to Fahrenheit.""" return celsius * 1.8 + 32.0 def convert(temperature: float, from_unit: str, to_unit: str) -> float: """Convert a temperature from one unit to another.""" if from_unit not in (TEMP_CELSIUS, TEMP_FAHRENHEIT): - raise ValueError(UNIT_NOT_RECOGNIZED_TEMPLATE.format(from_unit, - TEMPERATURE)) + raise ValueError(UNIT_NOT_RECOGNIZED_TEMPLATE.format( + from_unit, TEMPERATURE)) if to_unit not in (TEMP_CELSIUS, TEMP_FAHRENHEIT): - raise ValueError(UNIT_NOT_RECOGNIZED_TEMPLATE.format(to_unit, - TEMPERATURE)) + raise ValueError(UNIT_NOT_RECOGNIZED_TEMPLATE.format( + to_unit, TEMPERATURE)) if from_unit == to_unit: return temperature diff --git a/homeassistant/util/yaml.py b/homeassistant/util/yaml.py index 15366f1b670..19e614da1f8 100644 --- a/homeassistant/util/yaml.py +++ b/homeassistant/util/yaml.py @@ -65,12 +65,12 @@ def load_yaml(fname: str) -> Union[List, Dict]: _LOGGER.error(exc) raise HomeAssistantError(exc) except UnicodeDecodeError as exc: - _LOGGER.error('Unable to read file %s: %s', fname, exc) + _LOGGER.error("Unable to read file %s: %s", fname, exc) raise HomeAssistantError(exc) def dump(_dict: dict) -> str: - """Dump yaml to a string and remove null.""" + """Dump YAML to a string and remove null.""" return yaml.safe_dump(_dict, default_flow_style=False) \ .replace(': null\n', ':\n') @@ -237,8 +237,8 @@ def _secret_yaml(loader: SafeLineLoader, secrets = _load_secret_yaml(secret_path) if node.value in secrets: - _LOGGER.debug('Secret %s retrieved from secrets.yaml in ' - 'folder %s', node.value, secret_path) + _LOGGER.debug("Secret %s retrieved from secrets.yaml in " + "folder %s", node.value, secret_path) return secrets[node.value] if secret_path == os.path.dirname(sys.path[0]): @@ -252,10 +252,10 @@ def _secret_yaml(loader: SafeLineLoader, # do some keyring stuff pwd = keyring.get_password(_SECRET_NAMESPACE, node.value) if pwd: - _LOGGER.debug('Secret %s retrieved from keyring.', node.value) + _LOGGER.debug("Secret %s retrieved from keyring", node.value) return pwd - _LOGGER.error('Secret %s not defined.', node.value) + _LOGGER.error("Secret %s not defined", node.value) raise HomeAssistantError(node.value) diff --git a/tests/components/device_tracker/test_ddwrt.py b/tests/components/device_tracker/test_ddwrt.py index 4d4f22f2181..d55bc4e2ae1 100644 --- a/tests/components/device_tracker/test_ddwrt.py +++ b/tests/components/device_tracker/test_ddwrt.py @@ -87,7 +87,7 @@ class TestDdwrt(unittest.TestCase): }}) self.assertTrue( - 'Invalid response from ddwrt' in + 'Invalid response from DD-WRT' in str(mock_error.call_args_list[-1])) @mock.patch('homeassistant.components.device_tracker._LOGGER.error') diff --git a/tests/components/test_splunk.py b/tests/components/test_splunk.py index 661f53b533a..4d5d4cc5d45 100644 --- a/tests/components/test_splunk.py +++ b/tests/components/test_splunk.py @@ -106,7 +106,8 @@ class TestSplunk(unittest.TestCase): self.mock_post.call_args, mock.call( payload['host'], data=payload, - headers={'Authorization': 'Splunk secret'} + headers={'Authorization': 'Splunk secret'}, + timeout=10 ) ) self.mock_post.reset_mock() From 85b7433bc418df561530b8a75c53c96963c67742 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sat, 29 Apr 2017 22:42:12 -0700 Subject: [PATCH 100/169] Update sensehat.py --- homeassistant/components/light/sensehat.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/light/sensehat.py b/homeassistant/components/light/sensehat.py index c4aad134b0b..869963d3545 100644 --- a/homeassistant/components/light/sensehat.py +++ b/homeassistant/components/light/sensehat.py @@ -86,12 +86,12 @@ class SenseHatLight(Light): def should_poll(self): """Return if we should poll this device.""" return False - + @property def assumed_state(self) -> bool: """Return True if unable to access real state of the entity.""" return True - + def turn_on(self, **kwargs): """Instruct the light to turn on and set correct brightness & color.""" self._brightness = kwargs.get(ATTR_BRIGHTNESS, 255) From 9f68fd918453ec7ac6d3d6efd83990c52b100d7e Mon Sep 17 00:00:00 2001 From: Anders Melchiorsen Date: Sun, 30 Apr 2017 09:05:29 +0200 Subject: [PATCH 101/169] Flux switch: avoid updates when off (#7363) * Flux switch: avoid updates when off Calling turn_on when the switch is already on would orphan the existing time tracker, losing our ability to cancel it when turn_off is called. * Cleanups The self.is_on property can now be found from self.unsub_tracker, so get rid of the self._state attribute. Add an entry guard to turn_on, making further conditionals unnecessary. --- homeassistant/components/switch/flux.py | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/homeassistant/components/switch/flux.py b/homeassistant/components/switch/flux.py index 0c58fb2a182..034fb7a4262 100644 --- a/homeassistant/components/switch/flux.py +++ b/homeassistant/components/switch/flux.py @@ -113,7 +113,6 @@ class FluxSwitch(SwitchDevice): """Initialize the Flux switch.""" self._name = name self.hass = hass - self._state = state self._lights = lights self._start_time = start_time self._stop_time = stop_time @@ -133,15 +132,19 @@ class FluxSwitch(SwitchDevice): @property def is_on(self): """Return true if switch is on.""" - return self._state + return self.unsub_tracker is not None def turn_on(self, **kwargs): """Turn on flux.""" - if not self._state: # make initial update - self.flux_update() - self._state = True + if self.is_on: + return + + # make initial update + self.flux_update() + self.unsub_tracker = track_time_change(self.hass, self.flux_update, second=[0, 30]) + self.schedule_update_ha_state() def turn_off(self, **kwargs): @@ -150,7 +153,6 @@ class FluxSwitch(SwitchDevice): self.unsub_tracker() self.unsub_tracker = None - self._state = False self.schedule_update_ha_state() def flux_update(self, now=None): From 955e3e054225895be2bd0fd082354c7dc7197233 Mon Sep 17 00:00:00 2001 From: Brent Hughes Date: Sun, 30 Apr 2017 02:18:00 -0500 Subject: [PATCH 102/169] Zoneminder: Fixed undefined index error (#7340) * Zoneminder: Fixed undefined index error * Add Pascal's correct fix. --- homeassistant/components/camera/zoneminder.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/homeassistant/components/camera/zoneminder.py b/homeassistant/components/camera/zoneminder.py index 62d895d3922..5410833761b 100644 --- a/homeassistant/components/camera/zoneminder.py +++ b/homeassistant/components/camera/zoneminder.py @@ -107,7 +107,7 @@ class ZoneMinderCamera(MjpegCamera): self._monitor_id) return - if status_response['success'] is False: + if not status_response.get("success", False): _LOGGER.warning("Alarm status API call failed for monitor %i", self._monitor_id) return From 8df5de2bb8cd5a1592b2f73243a4143e9d525fef Mon Sep 17 00:00:00 2001 From: Henrik Nicolaisen Date: Sun, 30 Apr 2017 09:30:37 +0200 Subject: [PATCH 103/169] optimize remote calls and apps on webostv media_player (#7191) * - changed updater to only do updated if they succed and handle calls when tv is off better by only doing 1 remote call - show all sources instead of only connected, to fix source selection when unit is powered off - fixed sources so they can launch apps and select sources * fixed lint errors * show all sources and apps if no custom options are defined in the conf * fixed indentation for lint * set _current_source when state is off and fixed timeout exception --- .../components/media_player/webostv.py | 74 +++++++++++++------ 1 file changed, 50 insertions(+), 24 deletions(-) diff --git a/homeassistant/components/media_player/webostv.py b/homeassistant/components/media_player/webostv.py index 68de934d28b..67f2afc8520 100644 --- a/homeassistant/components/media_player/webostv.py +++ b/homeassistant/components/media_player/webostv.py @@ -173,34 +173,55 @@ class LgWebOSDevice(MediaPlayerDevice): """Retrieve the latest data.""" from websockets.exceptions import ConnectionClosed try: - self._state = STATE_PLAYING - self._muted = self._client.get_muted() - self._volume = self._client.get_volume() - self._current_source_id = self._client.get_input() - self._source_list = {} - self._app_list = {} + current_input = self._client.get_input() + if current_input is not None: + self._current_source_id = current_input + if self._state in (STATE_UNKNOWN, STATE_OFF): + self._state = STATE_PLAYING + else: + self._state = STATE_OFF + self._current_source = None + self._current_source_id = None - custom_sources = self._customize.get(CONF_SOURCES, []) + if self._state is not STATE_OFF: + self._muted = self._client.get_muted() + self._volume = self._client.get_volume() - for app in self._client.get_apps(): - self._app_list[app['id']] = app - if app['id'] == self._current_source_id: - self._current_source = app['title'] - self._source_list[app['title']] = app - elif (app['id'] in custom_sources or - any(word in app['title'] for word in custom_sources) or - any(word in app['id'] for word in custom_sources)): - self._source_list[app['title']] = app + self._source_list = {} + self._app_list = {} + conf_sources = self._customize.get(CONF_SOURCES, []) - for source in self._client.get_inputs(): - if not source['connected']: - continue - app = self._app_list[source['appId']] - self._source_list[app['title']] = app + for app in self._client.get_apps(): + self._app_list[app['id']] = app + if conf_sources: + if app['id'] == self._current_source_id: + self._current_source = app['title'] + self._source_list[app['title']] = app + elif (app['id'] in conf_sources or + any(word in app['title'] + for word in conf_sources) or + any(word in app['id'] + for word in conf_sources)): + self._source_list[app['title']] = app + else: + self._current_source = app['title'] + self._source_list[app['title']] = app + for source in self._client.get_inputs(): + if conf_sources: + if source['id'] == self._current_source_id: + self._source_list[source['label']] = source + elif (source['label'] in conf_sources or + any(source['label'].find(word) != -1 + for word in conf_sources)): + self._source_list[source['label']] = source + else: + self._source_list[source['label']] = source except (OSError, ConnectionClosed, TypeError, asyncio.TimeoutError): self._state = STATE_OFF + self._current_source = None + self._current_source_id = None @property def name(self): @@ -296,9 +317,14 @@ class LgWebOSDevice(MediaPlayerDevice): def select_source(self, source): """Select input source.""" - self._current_source_id = self._source_list[source]['id'] - self._current_source = self._source_list[source]['title'] - self._client.launch_app(self._source_list[source]['id']) + if self._source_list.get(source).get('title'): + self._current_source_id = self._source_list[source]['id'] + self._current_source = self._source_list[source]['title'] + self._client.launch_app(self._source_list[source]['id']) + elif self._source_list.get(source).get('label'): + self._current_source_id = self._source_list[source]['id'] + self._current_source = self._source_list[source]['label'] + self._client.set_input(self._source_list[source]['id']) def media_play(self): """Send play command.""" From 7ff1ded0b5f8f3587d0e2fa739ff3b73a42c5386 Mon Sep 17 00:00:00 2001 From: Dan Ports Date: Sun, 30 Apr 2017 00:31:46 -0700 Subject: [PATCH 104/169] binary_sensor.workday: fix handling of states vs provinces (#7162) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * binary_sensor.workday: fix handling of states vs provinces * Add test cases for workday sensor with states * remove redundant assignment * Repair unit test to improve coverage Patch from Wolf-Bastian Pöttner * Fix handling of invalid states/provinces * fix indentation to satisfy pylint --- .../components/binary_sensor/workday.py | 17 ++++--- .../components/binary_sensor/test_workday.py | 45 ++++++++++++++++++- 2 files changed, 55 insertions(+), 7 deletions(-) diff --git a/homeassistant/components/binary_sensor/workday.py b/homeassistant/components/binary_sensor/workday.py index 57c4533fb5d..81cc8fd8798 100644 --- a/homeassistant/components/binary_sensor/workday.py +++ b/homeassistant/components/binary_sensor/workday.py @@ -65,15 +65,20 @@ def setup_platform(hass, config, add_devices, discovery_info=None): obj_holidays = getattr(holidays, country)(years=year) if province: - if province not in obj_holidays.PROVINCES and \ - province not in obj_holidays.STATES: + # 'state' and 'prov' are not interchangeable, so need to make + # sure we use the right one + if (hasattr(obj_holidays, "PROVINCES") and + province in obj_holidays.PROVINCES): + obj_holidays = getattr(holidays, country)(prov=province, + years=year) + elif (hasattr(obj_holidays, "STATES") and + province in obj_holidays.STATES): + obj_holidays = getattr(holidays, country)(state=province, + years=year) + else: _LOGGER.error("There is no province/state %s in country %s", province, country) return False - else: - year = datetime.datetime.now().year - obj_holidays = getattr(holidays, country)(prov=province, - years=year) _LOGGER.debug("Found the following holidays for your configuration:") for date, name in sorted(obj_holidays.items()): diff --git a/tests/components/binary_sensor/test_workday.py b/tests/components/binary_sensor/test_workday.py index 814606613f5..c828a3b0cd6 100644 --- a/tests/components/binary_sensor/test_workday.py +++ b/tests/components/binary_sensor/test_workday.py @@ -38,12 +38,27 @@ class TestWorkdaySetup(object): }, } + self.config_state = { + 'binary_sensor': { + 'platform': 'workday', + 'country': 'US', + 'province': 'CA' + }, + } + + self.config_nostate = { + 'binary_sensor': { + 'platform': 'workday', + 'country': 'US', + }, + } + self.config_includeholiday = { 'binary_sensor': { 'platform': 'workday', 'country': 'DE', 'province': 'BW', - 'workdays': ['holiday', 'mon', 'tue', 'wed', 'thu', 'fri'], + 'workdays': ['holiday'], 'excludes': ['sat', 'sun'] }, } @@ -122,6 +137,34 @@ class TestWorkdaySetup(object): entity = self.hass.states.get('binary_sensor.workday_sensor') assert entity.state == 'on' + # Freeze time to a public holiday in state CA + @freeze_time("Mar 31st, 2017") + def test_public_holiday_state(self): + """Test if public holidays are reported correctly.""" + with assert_setup_component(1, 'binary_sensor'): + setup_component(self.hass, 'binary_sensor', self.config_state) + + assert self.hass.states.get('binary_sensor.workday_sensor') is not None + + self.hass.start() + + entity = self.hass.states.get('binary_sensor.workday_sensor') + assert entity.state == 'off' + + # Freeze time to a public holiday in state CA + @freeze_time("Mar 31st, 2017") + def test_public_holiday_nostate(self): + """Test if public holidays are reported correctly.""" + with assert_setup_component(1, 'binary_sensor'): + setup_component(self.hass, 'binary_sensor', self.config_nostate) + + assert self.hass.states.get('binary_sensor.workday_sensor') is not None + + self.hass.start() + + entity = self.hass.states.get('binary_sensor.workday_sensor') + assert entity.state == 'on' + def test_setup_component_invalidprovince(self): """Setup workday component.""" with assert_setup_component(1, 'binary_sensor'): From 1f4f2d708633fbbf54b32e42fd10fd2d84ce5b45 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sun, 30 Apr 2017 09:42:19 +0200 Subject: [PATCH 105/169] Upgrade voluptuous to 0.10.5 (#7107) * Upgrade voluptuous to 0.10.5 * Fix tests --- homeassistant/config.py | 5 ++--- homeassistant/package_constraints.txt | 2 +- requirements_all.txt | 2 +- setup.py | 2 +- tests/test_config.py | 4 ++-- 5 files changed, 7 insertions(+), 8 deletions(-) diff --git a/homeassistant/config.py b/homeassistant/config.py index 253a6af4e2f..3d1aee6c4f0 100644 --- a/homeassistant/config.py +++ b/homeassistant/config.py @@ -454,10 +454,9 @@ def _identify_config_schema(module): except (AttributeError, KeyError): return (None, None) t_schema = str(schema) - if (t_schema.startswith('=3.11,<4 pytz>=2017.02 pip>=7.1.0 jinja2>=2.9.5 -voluptuous==0.9.3 +voluptuous==0.10.5 typing>=3,<4 aiohttp==2.0.7 async_timeout==1.2.0 diff --git a/requirements_all.txt b/requirements_all.txt index 2cb86b3435c..faf6d89f9a1 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -4,7 +4,7 @@ pyyaml>=3.11,<4 pytz>=2017.02 pip>=7.1.0 jinja2>=2.9.5 -voluptuous==0.9.3 +voluptuous==0.10.5 typing>=3,<4 aiohttp==2.0.7 async_timeout==1.2.0 diff --git a/setup.py b/setup.py index 05f117652d1..65d02c3e8c6 100755 --- a/setup.py +++ b/setup.py @@ -20,7 +20,7 @@ REQUIRES = [ 'pytz>=2017.02', 'pip>=7.1.0', 'jinja2>=2.9.5', - 'voluptuous==0.9.3', + 'voluptuous==0.10.5', 'typing>=3,<4', 'aiohttp==2.0.7', 'async_timeout==1.2.0', diff --git a/tests/test_config.py b/tests/test_config.py index 1d1208f8859..c555c879300 100644 --- a/tests/test_config.py +++ b/tests/test_config.py @@ -509,7 +509,7 @@ def test_merge_once_only(merge_log_err): 'mqtt': {}, 'api': {} } config_util.merge_packages_config(config, packages) - assert merge_log_err.call_count == 2 + assert merge_log_err.call_count == 1 assert len(config) == 3 @@ -521,7 +521,7 @@ def test_merge_id_schema(hass): 'script': 'dict', 'input_boolean': 'dict', 'shell_command': 'dict', - 'qwikswitch': '', + 'qwikswitch': 'dict', } for name, expected_type in types.items(): module = config_util.get_component(name) From 9afbbbf3fecc38bf23810d0682ab71e56c822c09 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sun, 30 Apr 2017 10:55:03 -0700 Subject: [PATCH 106/169] Remove ordered_dict validator (#7375) * Remove ordered_dict validator * Lint * Update test_config_validation.py --- homeassistant/components/group.py | 2 +- .../components/media_player/dunehd.py | 2 +- homeassistant/components/rss_feed_template.py | 6 +- homeassistant/components/zwave/__init__.py | 2 +- homeassistant/config.py | 4 +- homeassistant/helpers/config_validation.py | 24 -------- tests/helpers/test_config_validation.py | 58 ------------------- 7 files changed, 8 insertions(+), 90 deletions(-) diff --git a/homeassistant/components/group.py b/homeassistant/components/group.py index 5dde5d6fea8..41c3f7e269b 100644 --- a/homeassistant/components/group.py +++ b/homeassistant/components/group.py @@ -64,7 +64,7 @@ GROUP_SCHEMA = vol.Schema({ }) CONFIG_SCHEMA = vol.Schema({ - DOMAIN: cv.ordered_dict(vol.All(_conf_preprocess, GROUP_SCHEMA)) + DOMAIN: vol.Schema({cv.match_all: vol.All(_conf_preprocess, GROUP_SCHEMA)}) }, extra=vol.ALLOW_EXTRA) # List of ON/OFF state tuples for groupable states diff --git a/homeassistant/components/media_player/dunehd.py b/homeassistant/components/media_player/dunehd.py index 1facb523da6..4ff1d57c558 100644 --- a/homeassistant/components/media_player/dunehd.py +++ b/homeassistant/components/media_player/dunehd.py @@ -22,7 +22,7 @@ CONF_SOURCES = 'sources' PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ vol.Required(CONF_HOST): cv.string, - vol.Optional(CONF_SOURCES): cv.ordered_dict(cv.string, cv.string), + vol.Optional(CONF_SOURCES): vol.Schema({cv.string: cv.string}), vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string, }) diff --git a/homeassistant/components/rss_feed_template.py b/homeassistant/components/rss_feed_template.py index e6af34a9b5e..1441a98c0a8 100644 --- a/homeassistant/components/rss_feed_template.py +++ b/homeassistant/components/rss_feed_template.py @@ -20,8 +20,8 @@ DEPENDENCIES = ['http'] DOMAIN = 'rss_feed_template' CONFIG_SCHEMA = vol.Schema({ - DOMAIN: cv.ordered_dict( - vol.Schema({ + DOMAIN: vol.Schema({ + cv.match_all: vol.Schema({ vol.Optional('requires_api_password', default=True): cv.boolean, vol.Optional('title'): cv.template, vol.Required('items'): vol.All( @@ -32,7 +32,7 @@ CONFIG_SCHEMA = vol.Schema({ }] ) }) - ) + }) }, extra=vol.ALLOW_EXTRA) diff --git a/homeassistant/components/zwave/__init__.py b/homeassistant/components/zwave/__init__.py index 0a32a664dc3..bf7eaa87e68 100755 --- a/homeassistant/components/zwave/__init__.py +++ b/homeassistant/components/zwave/__init__.py @@ -125,7 +125,7 @@ CONFIG_SCHEMA = vol.Schema({ vol.Optional(CONF_DEVICE_CONFIG, default={}): vol.Schema({cv.entity_id: DEVICE_CONFIG_SCHEMA_ENTRY}), vol.Optional(CONF_DEVICE_CONFIG_GLOB, default={}): - cv.ordered_dict(DEVICE_CONFIG_SCHEMA_ENTRY, cv.string), + vol.Schema({cv.string: DEVICE_CONFIG_SCHEMA_ENTRY}), vol.Optional(CONF_DEVICE_CONFIG_DOMAIN, default={}): vol.Schema({cv.string: DEVICE_CONFIG_SCHEMA_ENTRY}), vol.Optional(CONF_DEBUG, default=DEFAULT_DEBUG): cv.boolean, diff --git a/homeassistant/config.py b/homeassistant/config.py index 3d1aee6c4f0..39a6d3304ac 100644 --- a/homeassistant/config.py +++ b/homeassistant/config.py @@ -112,7 +112,7 @@ CUSTOMIZE_CONFIG_SCHEMA = vol.Schema({ vol.Optional(CONF_CUSTOMIZE_DOMAIN, default={}): vol.Schema({cv.string: dict}), vol.Optional(CONF_CUSTOMIZE_GLOB, default={}): - cv.ordered_dict(OrderedDict, cv.string), + vol.Schema({cv.string: OrderedDict}), }) CORE_CONFIG_SCHEMA = CUSTOMIZE_CONFIG_SCHEMA.extend({ @@ -454,7 +454,7 @@ def _identify_config_schema(module): except (AttributeError, KeyError): return (None, None) t_schema = str(schema) - if t_schema.startswith(('{', ' Sequence: """Ensure that input is a list or make one from comma-separated string.""" if isinstance(value, str): diff --git a/tests/helpers/test_config_validation.py b/tests/helpers/test_config_validation.py index 7255447cd49..ac652e29833 100644 --- a/tests/helpers/test_config_validation.py +++ b/tests/helpers/test_config_validation.py @@ -1,5 +1,4 @@ """Test config validators.""" -from collections import OrderedDict from datetime import timedelta, datetime, date import enum import os @@ -448,63 +447,6 @@ def test_has_at_least_one_key(): schema(value) -def test_ordered_dict_only_dict(): - """Test ordered_dict validator.""" - schema = vol.Schema(cv.ordered_dict(cv.match_all, cv.match_all)) - - for value in (None, [], 100, 'hello'): - with pytest.raises(vol.MultipleInvalid): - schema(value) - - -def test_ordered_dict_order(): - """Test ordered_dict validator.""" - schema = vol.Schema(cv.ordered_dict(int, cv.string)) - - val = OrderedDict() - val['first'] = 1 - val['second'] = 2 - - validated = schema(val) - - assert isinstance(validated, OrderedDict) - assert ['first', 'second'] == list(validated.keys()) - - -def test_ordered_dict_key_validator(): - """Test ordered_dict key validator.""" - schema = vol.Schema(cv.ordered_dict(cv.match_all, cv.string)) - - with pytest.raises(vol.Invalid): - schema({None: 1}) - - schema({'hello': 'world'}) - - schema = vol.Schema(cv.ordered_dict(cv.match_all, int)) - - with pytest.raises(vol.Invalid): - schema({'hello': 1}) - - schema({1: 'works'}) - - -def test_ordered_dict_value_validator(): # pylint: disable=invalid-name - """Test ordered_dict validator.""" - schema = vol.Schema(cv.ordered_dict(cv.string)) - - with pytest.raises(vol.Invalid): - schema({'hello': None}) - - schema({'hello': 'world'}) - - schema = vol.Schema(cv.ordered_dict(int)) - - with pytest.raises(vol.Invalid): - schema({'hello': 'world'}) - - schema({'hello': 5}) - - def test_enum(): """Test enum validator.""" class TestEnum(enum.Enum): From f20a81d0c537901829107ced550b0d2b81fd6ccd Mon Sep 17 00:00:00 2001 From: Gergely Imreh Date: Sun, 30 Apr 2017 19:48:54 +0100 Subject: [PATCH 107/169] light.blinkt: add support for Blinkt! lights on Raspberry Pi (#7377) --- .coveragerc | 1 + homeassistant/components/light/blinkt.py | 120 +++++++++++++++++++++++ requirements_all.txt | 3 + 3 files changed, 124 insertions(+) create mode 100644 homeassistant/components/light/blinkt.py diff --git a/.coveragerc b/.coveragerc index ed81479a645..094d2dc193a 100644 --- a/.coveragerc +++ b/.coveragerc @@ -231,6 +231,7 @@ omit = homeassistant/components/keyboard.py homeassistant/components/keyboard_remote.py homeassistant/components/light/avion.py + homeassistant/components/light/blinkt.py homeassistant/components/light/blinksticklight.py homeassistant/components/light/decora.py homeassistant/components/light/flux_led.py diff --git a/homeassistant/components/light/blinkt.py b/homeassistant/components/light/blinkt.py new file mode 100644 index 00000000000..af8c33801fa --- /dev/null +++ b/homeassistant/components/light/blinkt.py @@ -0,0 +1,120 @@ +""" +Support for Blinkt! lights on Raspberry Pi. + +For more details about this platform, please refer to the documentation at +https://home-assistant.io/components/light.blinkt/ +""" +import logging + +import voluptuous as vol + +import homeassistant.helpers.config_validation as cv +from homeassistant.components.light import ( + ATTR_BRIGHTNESS, SUPPORT_BRIGHTNESS, ATTR_RGB_COLOR, SUPPORT_RGB_COLOR, + Light, PLATFORM_SCHEMA) +from homeassistant.const import CONF_NAME + +REQUIREMENTS = ['blinkt==0.1.0'] + +_LOGGER = logging.getLogger(__name__) + +SUPPORT_BLINKT = (SUPPORT_BRIGHTNESS | SUPPORT_RGB_COLOR) + +DEFAULT_NAME = 'blinkt' + +PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ + vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string, +}) + + +def setup_platform(hass, config, add_devices, discovery_info=None): + """Set up the Blinkt Light platform.""" + import blinkt + + # ensure that the lights are off when exiting + blinkt.set_clear_on_exit() + + name = config.get(CONF_NAME) + + add_devices([BlinktLight(blinkt, name)]) + + +class BlinktLight(Light): + """Representation of a Blinkt! Light.""" + + def __init__(self, blinkt, name): + """Initialize a Blinkt Light. + + Default brightness and white color. + """ + self._blinkt = blinkt + self._name = name + self._is_on = False + self._brightness = 255 + self._rgb_color = [255, 255, 255] + + @property + def name(self): + """Return the display name of this light.""" + return self._name + + @property + def brightness(self): + """Read back the brightness of the light. + + Returns integer in the range of 1-255. + """ + return self._brightness + + @property + def rgb_color(self): + """Read back the color of the light. + + Returns [r, g, b] list with values in range of 0-255. + """ + return self._rgb_color + + @property + def supported_features(self): + """Flag supported features.""" + return SUPPORT_BLINKT + + @property + def is_on(self): + """Return true if light is on.""" + return self._is_on + + @property + def should_poll(self): + """Return if we should poll this device.""" + return False + + @property + def assumed_state(self) -> bool: + """Return True if unable to access real state of the entity.""" + return True + + def turn_on(self, **kwargs): + """Instruct the light to turn on and set correct brightness & color.""" + self._brightness = kwargs.get(ATTR_BRIGHTNESS, 255) + percent_bright = (self._brightness / 255) + + if ATTR_RGB_COLOR in kwargs: + self._rgb_color = kwargs[ATTR_RGB_COLOR] + + self._blinkt.set_all(self._rgb_color[0], + self._rgb_color[1], + self._rgb_color[2], + percent_bright) + + self._blinkt.show() + + self._is_on = True + self.schedule_update_ha_state() + + def turn_off(self, **kwargs): + """Instruct the light to turn off.""" + self._blinkt.set_brightness(0) + self._blinkt.show() + self._is_on = False + self.schedule_update_ha_state() diff --git a/requirements_all.txt b/requirements_all.txt index faf6d89f9a1..03fa1f166d0 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -92,6 +92,9 @@ blinkpy==0.5.2 # homeassistant.components.light.blinksticklight blinkstick==1.1.8 +# homeassistant.components.light.blinkt +blinkt==0.1.0 + # homeassistant.components.sensor.bitcoin blockchain==1.3.3 From c14b829f27e85bf3db6f5aa7187e52a39bf7e0e7 Mon Sep 17 00:00:00 2001 From: Wojciech Bederski Date: Sun, 30 Apr 2017 21:03:03 +0200 Subject: [PATCH 108/169] improve handling of flux_led lights in RGBW mode (#7221) allows simultaneous control of both RGB and White channels. --- homeassistant/components/light/flux_led.py | 47 ++++++++++++++++------ 1 file changed, 34 insertions(+), 13 deletions(-) diff --git a/homeassistant/components/light/flux_led.py b/homeassistant/components/light/flux_led.py index 798ad804fa1..b437eff3fbd 100644 --- a/homeassistant/components/light/flux_led.py +++ b/homeassistant/components/light/flux_led.py @@ -12,9 +12,9 @@ import voluptuous as vol from homeassistant.const import CONF_DEVICES, CONF_NAME, CONF_PROTOCOL from homeassistant.components.light import ( - ATTR_BRIGHTNESS, ATTR_RGB_COLOR, ATTR_EFFECT, EFFECT_COLORLOOP, - EFFECT_RANDOM, SUPPORT_BRIGHTNESS, SUPPORT_EFFECT, - SUPPORT_RGB_COLOR, Light, + ATTR_BRIGHTNESS, ATTR_RGB_COLOR, ATTR_EFFECT, ATTR_WHITE_VALUE, + EFFECT_COLORLOOP, EFFECT_RANDOM, SUPPORT_BRIGHTNESS, SUPPORT_EFFECT, + SUPPORT_RGB_COLOR, SUPPORT_WHITE_VALUE, Light, PLATFORM_SCHEMA) import homeassistant.helpers.config_validation as cv @@ -27,8 +27,10 @@ ATTR_MODE = 'mode' DOMAIN = 'flux_led' -SUPPORT_FLUX_LED = (SUPPORT_BRIGHTNESS | SUPPORT_EFFECT | - SUPPORT_RGB_COLOR) +SUPPORT_FLUX_LED_RGB = (SUPPORT_BRIGHTNESS | SUPPORT_EFFECT | + SUPPORT_RGB_COLOR) +SUPPORT_FLUX_LED_RGBW = (SUPPORT_WHITE_VALUE | SUPPORT_EFFECT | + SUPPORT_RGB_COLOR) MODE_RGB = 'rgb' MODE_RGBW = 'rgbw' @@ -180,7 +182,16 @@ class FluxLight(Light): @property def brightness(self): """Return the brightness of this light between 0..255.""" - return self._bulb.brightness + if self._mode == MODE_RGB: + return self._bulb.brightness + return None # not used for RGBW + + @property + def white_value(self): + """Return the white value of this light between 0..255.""" + if self._mode == MODE_RGBW: + return self._bulb.getRgbw()[3] + return None # not used for RGB @property def rgb_color(self): @@ -190,7 +201,11 @@ class FluxLight(Light): @property def supported_features(self): """Flag supported features.""" - return SUPPORT_FLUX_LED + if self._mode == MODE_RGBW: + return SUPPORT_FLUX_LED_RGBW + elif self._mode == MODE_RGB: + return SUPPORT_FLUX_LED_RGB + return 0 @property def effect_list(self): @@ -204,17 +219,23 @@ class FluxLight(Light): rgb = kwargs.get(ATTR_RGB_COLOR) brightness = kwargs.get(ATTR_BRIGHTNESS) + white_value = kwargs.get(ATTR_WHITE_VALUE) effect = kwargs.get(ATTR_EFFECT) + if rgb is not None and brightness is not None: self._bulb.setRgb(*tuple(rgb), brightness=brightness) + elif rgb is not None and white_value is not None: + self._bulb.setRgbw(*tuple(rgb), w=white_value) elif rgb is not None: - self._bulb.setRgb(*tuple(rgb)) + # self.white_value and self.brightness are appropriately + # returning None for MODE_RGB and MODE_RGBW respectively + self._bulb.setRgbw(*tuple(rgb), + w=self.white_value, + brightness=self.brightness) elif brightness is not None: - if self._mode == 'rgbw': - self._bulb.setWarmWhite255(brightness) - elif self._mode == 'rgb': - (red, green, blue) = self._bulb.getRgb() - self._bulb.setRgb(red, green, blue, brightness=brightness) + self._bulb.setRgb(*self.rgb_color, brightness=brightness) + elif white_value is not None: + self._bulb.setRgbw(*self.rgb_color, w=white_value) elif effect == EFFECT_RANDOM: self._bulb.setRgb(random.randint(0, 255), random.randint(0, 255), From 5d7403bd818c91b3fc75e5dbfdba69ddbdc77c9f Mon Sep 17 00:00:00 2001 From: ChristianKuehnel Date: Sun, 30 Apr 2017 21:32:32 +0200 Subject: [PATCH 109/169] Plant (replacement for MiGardener) (#7131) * new implementation without mqtt * fixed lint findings * fixed more lint findings * fixed final flak8 error * added unit tests for platform "plant" * - changed status to "OK" / "problem" - added attribute "problem" with details on the problems - removed unused constant - setting icon to "?" until we have meaningful data * reformatted code to meet line length requirements --- homeassistant/components/plant.py | 242 ++++++++++++++++++++++++++++++ tests/components/test_plant.py | 73 +++++++++ 2 files changed, 315 insertions(+) create mode 100644 homeassistant/components/plant.py create mode 100644 tests/components/test_plant.py diff --git a/homeassistant/components/plant.py b/homeassistant/components/plant.py new file mode 100644 index 00000000000..ac4650bc470 --- /dev/null +++ b/homeassistant/components/plant.py @@ -0,0 +1,242 @@ +"""Component to monitor plants. + +This is meant to be used with Xiaomi Mi Plant sensors, but will +work with any sensor that provides the right parameters. +To read the sensor data and send it via MQTT, +see https://github.com/ChristianKuehnel/plantgateway +""" + +import logging +import asyncio +import voluptuous as vol +from homeassistant.const import ( + STATE_UNKNOWN, TEMP_CELSIUS, ATTR_TEMPERATURE, CONF_SENSORS, + ATTR_UNIT_OF_MEASUREMENT, ATTR_ICON) +import homeassistant.helpers.config_validation as cv +from homeassistant.helpers.entity import Entity +from homeassistant.helpers.entity_component import EntityComponent +from homeassistant.core import callback +from homeassistant.helpers.event import async_track_state_change + + +_LOGGER = logging.getLogger(__name__) + +DEFAULT_NAME = 'plant' + +READING_BATTERY = 'battery' +READING_TEMPERATURE = ATTR_TEMPERATURE +READING_MOISTURE = 'moisture' +READING_CONDUCTIVITY = 'conductivity' +READING_BRIGHTNESS = 'brightness' + +ATTR_PROBLEM = 'problem' +PROBLEM_NONE = 'none' + +CONF_MIN_BATTERY_LEVEL = 'min_' + READING_BATTERY +CONF_MIN_TEMPERATURE = 'min_' + READING_TEMPERATURE +CONF_MAX_TEMPERATURE = 'max_' + READING_TEMPERATURE +CONF_MIN_MOISTURE = 'min_' + READING_MOISTURE +CONF_MAX_MOISTURE = 'max_' + READING_MOISTURE +CONF_MIN_CONDUCTIVITY = 'min_' + READING_CONDUCTIVITY +CONF_MAX_CONDUCTIVITY = 'max_' + READING_CONDUCTIVITY +CONF_MIN_BRIGHTNESS = 'min_' + READING_BRIGHTNESS +CONF_MAX_BRIGHTNESS = 'max_' + READING_BRIGHTNESS + +CONF_SENSOR_BATTERY_LEVEL = READING_BATTERY +CONF_SENSOR_MOISTURE = READING_MOISTURE +CONF_SENSOR_CONDUCTIVITY = READING_CONDUCTIVITY +CONF_SENSOR_TEMPERATURE = READING_TEMPERATURE +CONF_SENSOR_BRIGHTNESS = READING_BRIGHTNESS + +SCHEMA_SENSORS = vol.Schema({ + vol.Optional(CONF_SENSOR_BATTERY_LEVEL): cv.entity_id, + vol.Optional(CONF_SENSOR_MOISTURE): cv.entity_id, + vol.Optional(CONF_SENSOR_CONDUCTIVITY): cv.entity_id, + vol.Optional(CONF_SENSOR_TEMPERATURE): cv.entity_id, + vol.Optional(CONF_SENSOR_BRIGHTNESS): cv.entity_id, +}) + +PLANT_SCHEMA = vol.Schema({ + vol.Required(CONF_SENSORS): vol.Schema(SCHEMA_SENSORS), + vol.Optional(CONF_MIN_BATTERY_LEVEL): cv.positive_int, + vol.Optional(CONF_MIN_TEMPERATURE): cv.small_float, + vol.Optional(CONF_MAX_TEMPERATURE): cv.small_float, + vol.Optional(CONF_MIN_MOISTURE): cv.positive_int, + vol.Optional(CONF_MAX_MOISTURE): cv.positive_int, + vol.Optional(CONF_MIN_CONDUCTIVITY): cv.positive_int, + vol.Optional(CONF_MAX_CONDUCTIVITY): cv.positive_int, + vol.Optional(CONF_MIN_BRIGHTNESS): cv.positive_int, + vol.Optional(CONF_MAX_BRIGHTNESS): cv.positive_int, +}) + +DOMAIN = 'plant' + +CONFIG_SCHEMA = vol.Schema({ + DOMAIN: { + cv.string: PLANT_SCHEMA + }, +}, extra=vol.ALLOW_EXTRA) + + +@asyncio.coroutine +def async_setup(hass, config): + """Set up Plant component.""" + component = EntityComponent(_LOGGER, DOMAIN, hass) + + entities = [] + for plant_name, plant_config in config[DOMAIN].items(): + _LOGGER.info('added plant %s', plant_name) + entity = Plant(plant_name, plant_config) + sensor_entity_ids = list(plant_config[CONF_SENSORS].values()) + _LOGGER.debug('subscribing to entity_ids %s', sensor_entity_ids) + async_track_state_change(hass, sensor_entity_ids, entity.state_changed) + entities.append(entity) + + yield from component.async_add_entities(entities) + + return True + + +class Plant(Entity): + """Plant monitors the well-being of a plant. + + It also checks the measurements against + configurable min and max values. + """ + + READINGS = { + READING_BATTERY: { + ATTR_UNIT_OF_MEASUREMENT: '%', + 'min': CONF_MIN_BATTERY_LEVEL, + 'icon': 'mdi:battery-outline' + }, + READING_TEMPERATURE: { + ATTR_UNIT_OF_MEASUREMENT: TEMP_CELSIUS, + 'min': CONF_MIN_TEMPERATURE, + 'max': CONF_MAX_TEMPERATURE, + 'icon': 'mdi:thermometer' + }, + READING_MOISTURE: { + ATTR_UNIT_OF_MEASUREMENT: '%', + 'min': CONF_MIN_MOISTURE, + 'max': CONF_MAX_MOISTURE, + 'icon': 'mdi:water' + }, + READING_CONDUCTIVITY: { + ATTR_UNIT_OF_MEASUREMENT: 'µS/cm', + 'min': CONF_MIN_CONDUCTIVITY, + 'max': CONF_MAX_CONDUCTIVITY, + 'icon': 'mdi:emoticon-poop' + }, + READING_BRIGHTNESS: { + ATTR_UNIT_OF_MEASUREMENT: 'lux', + 'min': CONF_MIN_BRIGHTNESS, + 'max': CONF_MAX_BRIGHTNESS, + 'icon': 'mdi:white-balance-sunny' + } + } + + def __init__(self, name, config): + """Default constructor.""" + self._config = config + self._sensormap = dict() + for reading, entity_id in config['sensors'].items(): + self._sensormap[entity_id] = reading + self._state = STATE_UNKNOWN + self._name = name + self._battery = None + self._moisture = None + self._conductivity = None + self._temperature = None + self._brightness = None + self._icon = 'mdi:help-circle' + self._problems = PROBLEM_NONE + + @callback + def state_changed(self, entity_id, _, new_state): + """Update the sensor status. + + This callback is triggered, when the sensor state changes. + """ + value = new_state.state + _LOGGER.debug('received callback from %s with value %s', + entity_id, value) + if value == STATE_UNKNOWN: + return + + reading = self._sensormap[entity_id] + if reading == READING_MOISTURE: + self._moisture = int(value) + elif reading == READING_BATTERY: + self._battery = int(value) + elif reading == READING_TEMPERATURE: + self._temperature = float(value) + elif reading == READING_CONDUCTIVITY: + self._conductivity = int(value) + elif reading == READING_BRIGHTNESS: + self._brightness = int(value) + else: + raise _LOGGER.error('unknown reading from sensor %s: %s', + entity_id, value) + self._update_state() + + def _update_state(self): + """"Update the state of the class based sensor data.""" + result = [] + for sensor_name in self._sensormap.values(): + params = self.READINGS[sensor_name] + value = getattr(self, '_{}'.format(sensor_name)) + if value is not None: + if 'min' in params and params['min'] in self._config: + min_value = self._config[params['min']] + if value < min_value: + result.append('{} low'.format(sensor_name)) + self._icon = params['icon'] + + if 'max' in params and params['max'] in self._config: + max_value = self._config[params['max']] + if value > max_value: + result.append('{} high'.format(sensor_name)) + self._icon = params['icon'] + + if len(result) == 0: + self._state = 'ok' + self._icon = 'mdi:thumb-up' + self._problems = PROBLEM_NONE + else: + self._state = 'problem' + self._problems = ','.join(result) + _LOGGER.debug('new data processed') + self.hass.async_add_job(self.async_update_ha_state()) + + @property + def should_poll(self): + """No polling needed.""" + return False + + @property + def name(self): + """Return the name of the sensor.""" + return self._name + + @property + def state(self): + """Return the state of the entity.""" + return self._state + + @property + def state_attributes(self): + """Return the attributes of the entity. + + Provide the individual measurements from the + sensor in the attributes of the device. + """ + attrib = { + ATTR_ICON: self._icon, + ATTR_PROBLEM: self._problems, + } + + for reading in self._sensormap.values(): + attrib[reading] = getattr(self, '_{}'.format(reading)) + + return attrib diff --git a/tests/components/test_plant.py b/tests/components/test_plant.py new file mode 100644 index 00000000000..57339f28941 --- /dev/null +++ b/tests/components/test_plant.py @@ -0,0 +1,73 @@ +"""Unit tests for platform/plant.py.""" + +import unittest + +from tests.common import get_test_home_assistant +import homeassistant.components.plant as plant + + +class TestPlant(unittest.TestCase): + """test the processing of data.""" + + GOOD_DATA = { + 'moisture': 50, + 'battery': 90, + 'temperature': 23.4, + 'conductivity': 777, + 'brightness': 987, + } + + GOOD_CONFIG = { + 'sensors': { + 'moisture': 'sensor.mqtt_plant_moisture', + 'battery': 'sensor.mqtt_plant_battery', + 'temperature': 'sensor.mqtt_plant_temperature', + 'conductivity': 'sensor.mqtt_plant_conductivity', + 'brightness': 'sensor.mqtt_plant_brightness', + }, + 'min_moisture': 20, + 'max_moisture': 60, + 'min_battery': 17, + 'min_conductivity': 500, + 'min_temperature': 15, + } + + class _MockState(object): + + def __init__(self, state=None): + self.state = state + + def setUp(self): + """Setup things to be run when tests are started.""" + self.hass = get_test_home_assistant() + + def tearDown(self): + """Stop everything that was started.""" + self.hass.stop() + + def test_valid_data(self): + """Test processing valid data.""" + self.sensor = plant.Plant('my plant', self.GOOD_CONFIG) + self.sensor.hass = self.hass + for reading, value in self.GOOD_DATA.items(): + self.sensor.state_changed( + self.GOOD_CONFIG['sensors'][reading], None, + TestPlant._MockState(value)) + self.assertEqual(self.sensor.state, 'ok') + attrib = self.sensor.state_attributes + for reading, value in self.GOOD_DATA.items(): + # battery level has a different name in + # the JSON format than in hass + self.assertEqual(attrib[reading], value) + + def test_low_battery(self): + """Test processing with low battery data and limit set.""" + self.sensor = plant.Plant(self.hass, self.GOOD_CONFIG) + self.sensor.hass = self.hass + self.assertEqual(self.sensor.state_attributes['problem'], 'none') + self.sensor.state_changed('sensor.mqtt_plant_battery', + TestPlant._MockState(45), + TestPlant._MockState(10)) + self.assertEqual(self.sensor.state, 'problem') + self.assertEqual(self.sensor.state_attributes['problem'], + 'battery low') From c085f06df523314d5f772de4fe56028ed835731d Mon Sep 17 00:00:00 2001 From: abmantis Date: Sun, 30 Apr 2017 20:41:21 +0100 Subject: [PATCH 110/169] Add support for shuffle toggling on Spotify component. (#7339) * add support for shuffle toggling on Spotify component. this also required adding support for shuffle on the media_player component. * lint * Use ATTR_MEDIA_SHUFFLING for service handler param * Line too long fix * fix tests * add shuffle set to demo mediaplayer * rename shuffle attribute --- .../components/media_player/__init__.py | 48 ++++++++++++++++++- homeassistant/components/media_player/demo.py | 21 ++++++-- .../components/media_player/services.yaml | 11 +++++ .../components/media_player/spotify.py | 18 +++++-- .../components/media_player/universal.py | 28 +++++++++-- homeassistant/const.py | 1 + .../components/media_player/test_universal.py | 27 ++++++++++- 7 files changed, 139 insertions(+), 15 deletions(-) diff --git a/homeassistant/components/media_player/__init__.py b/homeassistant/components/media_player/__init__.py index 511cb8208a5..bd29fe24aec 100644 --- a/homeassistant/components/media_player/__init__.py +++ b/homeassistant/components/media_player/__init__.py @@ -31,7 +31,8 @@ from homeassistant.const import ( SERVICE_VOLUME_UP, SERVICE_VOLUME_DOWN, SERVICE_VOLUME_SET, SERVICE_VOLUME_MUTE, SERVICE_TOGGLE, SERVICE_MEDIA_STOP, SERVICE_MEDIA_PLAY_PAUSE, SERVICE_MEDIA_PLAY, SERVICE_MEDIA_PAUSE, - SERVICE_MEDIA_NEXT_TRACK, SERVICE_MEDIA_PREVIOUS_TRACK, SERVICE_MEDIA_SEEK) + SERVICE_MEDIA_NEXT_TRACK, SERVICE_MEDIA_PREVIOUS_TRACK, SERVICE_MEDIA_SEEK, + SERVICE_SHUFFLE_SET) _LOGGER = logging.getLogger(__name__) _RND = SystemRandom() @@ -81,6 +82,7 @@ ATTR_APP_NAME = 'app_name' ATTR_INPUT_SOURCE = 'source' ATTR_INPUT_SOURCE_LIST = 'source_list' ATTR_MEDIA_ENQUEUE = 'enqueue' +ATTR_MEDIA_SHUFFLE = 'shuffle' MEDIA_TYPE_MUSIC = 'music' MEDIA_TYPE_TVSHOW = 'tvshow' @@ -104,6 +106,7 @@ SUPPORT_SELECT_SOURCE = 2048 SUPPORT_STOP = 4096 SUPPORT_CLEAR_PLAYLIST = 8192 SUPPORT_PLAY = 16384 +SUPPORT_SHUFFLE_SET = 32768 # Service call validation schemas MEDIA_PLAYER_SCHEMA = vol.Schema({ @@ -133,6 +136,10 @@ MEDIA_PLAYER_PLAY_MEDIA_SCHEMA = MEDIA_PLAYER_SCHEMA.extend({ vol.Optional(ATTR_MEDIA_ENQUEUE): cv.boolean, }) +MEDIA_PLAYER_SET_SHUFFLE_SCHEMA = MEDIA_PLAYER_SCHEMA.extend({ + vol.Required(ATTR_MEDIA_SHUFFLE): cv.boolean, +}) + SERVICE_TO_METHOD = { SERVICE_TURN_ON: {'method': 'async_turn_on'}, SERVICE_TURN_OFF: {'method': 'async_turn_off'}, @@ -161,6 +168,9 @@ SERVICE_TO_METHOD = { SERVICE_PLAY_MEDIA: { 'method': 'async_play_media', 'schema': MEDIA_PLAYER_PLAY_MEDIA_SCHEMA}, + SERVICE_SHUFFLE_SET: { + 'method': 'async_set_shuffle', + 'schema': MEDIA_PLAYER_SET_SHUFFLE_SCHEMA}, } ATTR_TO_PROPERTY = [ @@ -185,6 +195,7 @@ ATTR_TO_PROPERTY = [ ATTR_APP_NAME, ATTR_INPUT_SOURCE, ATTR_INPUT_SOURCE_LIST, + ATTR_MEDIA_SHUFFLE, ] @@ -322,6 +333,16 @@ def clear_playlist(hass, entity_id=None): hass.services.call(DOMAIN, SERVICE_CLEAR_PLAYLIST, data) +def set_shuffle(hass, shuffle, entity_id=None): + """Send the media player the command to enable/disable shuffle mode.""" + data = {ATTR_MEDIA_SHUFFLE: shuffle} + + if entity_id: + data[ATTR_ENTITY_ID] = entity_id + + hass.services.call(DOMAIN, SERVICE_SHUFFLE_SET, data) + + @asyncio.coroutine def async_setup(hass, config): """Track states and offer events for media_players.""" @@ -358,6 +379,9 @@ def async_setup(hass, config): params['media_id'] = service.data.get(ATTR_MEDIA_CONTENT_ID) params[ATTR_MEDIA_ENQUEUE] = \ service.data.get(ATTR_MEDIA_ENQUEUE) + elif service.service == SERVICE_SHUFFLE_SET: + params[ATTR_MEDIA_SHUFFLE] = \ + service.data.get(ATTR_MEDIA_SHUFFLE) target_players = component.async_extract_from_service(service) update_tasks = [] @@ -539,6 +563,11 @@ class MediaPlayerDevice(Entity): """List of available input sources.""" return None + @property + def shuffle(self): + """Boolean if shuffle is enabled.""" + return None + @property @deprecated_substitute('supported_media_commands') def supported_features(self): @@ -701,6 +730,18 @@ class MediaPlayerDevice(Entity): return self.hass.loop.run_in_executor( None, self.clear_playlist) + def set_shuffle(self, shuffle): + """Enable/disable shuffle mode.""" + raise NotImplementedError() + + def async_set_shuffle(self, shuffle): + """Enable/disable shuffle mode. + + This method must be run in the event loop and returns a coroutine. + """ + return self.hass.loop.run_in_executor( + None, self.set_shuffle, shuffle) + # No need to overwrite these. @property def support_play(self): @@ -757,6 +798,11 @@ class MediaPlayerDevice(Entity): """Boolean if clear playlist command supported.""" return bool(self.supported_features & SUPPORT_CLEAR_PLAYLIST) + @property + def support_shuffle_set(self): + """Boolean if shuffle is supported.""" + return bool(self.supported_features & SUPPORT_SHUFFLE_SET) + def async_toggle(self): """Toggle the power on the media player. diff --git a/homeassistant/components/media_player/demo.py b/homeassistant/components/media_player/demo.py index 90253895882..0319ccf98b3 100644 --- a/homeassistant/components/media_player/demo.py +++ b/homeassistant/components/media_player/demo.py @@ -9,7 +9,7 @@ from homeassistant.components.media_player import ( SUPPORT_PAUSE, SUPPORT_PLAY_MEDIA, SUPPORT_PREVIOUS_TRACK, SUPPORT_TURN_OFF, SUPPORT_TURN_ON, SUPPORT_VOLUME_MUTE, SUPPORT_VOLUME_SET, SUPPORT_SELECT_SOURCE, SUPPORT_CLEAR_PLAYLIST, SUPPORT_PLAY, - MediaPlayerDevice) + SUPPORT_SHUFFLE_SET, MediaPlayerDevice) from homeassistant.const import STATE_OFF, STATE_PAUSED, STATE_PLAYING import homeassistant.util.dt as dt_util @@ -31,15 +31,17 @@ YOUTUBE_COVER_URL_FORMAT = 'https://img.youtube.com/vi/{}/hqdefault.jpg' YOUTUBE_PLAYER_SUPPORT = \ SUPPORT_PAUSE | SUPPORT_VOLUME_SET | SUPPORT_VOLUME_MUTE | \ - SUPPORT_TURN_ON | SUPPORT_TURN_OFF | SUPPORT_PLAY_MEDIA | SUPPORT_PLAY + SUPPORT_TURN_ON | SUPPORT_TURN_OFF | SUPPORT_PLAY_MEDIA | SUPPORT_PLAY | \ + SUPPORT_SHUFFLE_SET MUSIC_PLAYER_SUPPORT = \ SUPPORT_PAUSE | SUPPORT_VOLUME_SET | SUPPORT_VOLUME_MUTE | \ - SUPPORT_TURN_ON | SUPPORT_TURN_OFF | SUPPORT_CLEAR_PLAYLIST | SUPPORT_PLAY + SUPPORT_TURN_ON | SUPPORT_TURN_OFF | SUPPORT_CLEAR_PLAYLIST | \ + SUPPORT_PLAY | SUPPORT_SHUFFLE_SET NETFLIX_PLAYER_SUPPORT = \ SUPPORT_PAUSE | SUPPORT_TURN_ON | SUPPORT_TURN_OFF | \ - SUPPORT_SELECT_SOURCE | SUPPORT_PLAY + SUPPORT_SELECT_SOURCE | SUPPORT_PLAY | SUPPORT_SHUFFLE_SET class AbstractDemoPlayer(MediaPlayerDevice): @@ -53,6 +55,7 @@ class AbstractDemoPlayer(MediaPlayerDevice): self._player_state = STATE_PLAYING self._volume_level = 1.0 self._volume_muted = False + self._shuffle = False @property def should_poll(self): @@ -79,6 +82,11 @@ class AbstractDemoPlayer(MediaPlayerDevice): """Return boolean if volume is currently muted.""" return self._volume_muted + @property + def shuffle(self): + """Boolean if shuffling is enabled.""" + return self._shuffle + def turn_on(self): """Turn the media player on.""" self._player_state = STATE_PLAYING @@ -109,6 +117,11 @@ class AbstractDemoPlayer(MediaPlayerDevice): self._player_state = STATE_PAUSED self.schedule_update_ha_state() + def set_shuffle(self, shuffle): + """Enable/disable shuffle mode.""" + self._shuffle = shuffle + self.schedule_update_ha_state() + class DemoYoutubePlayer(AbstractDemoPlayer): """A Demo media player that only supports YouTube.""" diff --git a/homeassistant/components/media_player/services.yaml b/homeassistant/components/media_player/services.yaml index e23616a47a9..ae90e141289 100644 --- a/homeassistant/components/media_player/services.yaml +++ b/homeassistant/components/media_player/services.yaml @@ -154,6 +154,17 @@ clear_playlist: description: Name(s) of entites to change source on example: 'media_player.living_room_chromecast' +shuffle_set: + description: Set shuffling state + + fields: + entity_id: + description: Name(s) of entities to set + example: 'media_player.spotify' + shuffle: + description: True/false for enabling/disabling shuffle + example: true + sonos_join: description: Group player together. diff --git a/homeassistant/components/media_player/spotify.py b/homeassistant/components/media_player/spotify.py index ce4230bf92c..fcb54245ead 100644 --- a/homeassistant/components/media_player/spotify.py +++ b/homeassistant/components/media_player/spotify.py @@ -16,8 +16,8 @@ from homeassistant.components.http import HomeAssistantView from homeassistant.components.media_player import ( MEDIA_TYPE_MUSIC, MEDIA_TYPE_PLAYLIST, SUPPORT_VOLUME_SET, SUPPORT_PLAY, SUPPORT_PAUSE, SUPPORT_PLAY_MEDIA, SUPPORT_NEXT_TRACK, - SUPPORT_PREVIOUS_TRACK, SUPPORT_SELECT_SOURCE, PLATFORM_SCHEMA, - MediaPlayerDevice) + SUPPORT_PREVIOUS_TRACK, SUPPORT_SELECT_SOURCE, SUPPORT_SHUFFLE_SET, + PLATFORM_SCHEMA, MediaPlayerDevice) from homeassistant.const import ( CONF_NAME, STATE_PLAYING, STATE_PAUSED, STATE_IDLE, STATE_UNKNOWN) import homeassistant.helpers.config_validation as cv @@ -33,7 +33,7 @@ _LOGGER = logging.getLogger(__name__) SUPPORT_SPOTIFY = SUPPORT_VOLUME_SET | SUPPORT_PAUSE | SUPPORT_PLAY |\ SUPPORT_NEXT_TRACK | SUPPORT_PREVIOUS_TRACK | SUPPORT_SELECT_SOURCE |\ - SUPPORT_PLAY_MEDIA + SUPPORT_PLAY_MEDIA | SUPPORT_SHUFFLE_SET SCOPE = 'user-read-playback-state user-modify-playback-state' DEFAULT_CACHE_PATH = '.spotify-token-cache' @@ -132,6 +132,7 @@ class SpotifyMediaPlayer(MediaPlayerDevice): self._current_device = None self._devices = None self._volume = None + self._shuffle = False self._player = None self._token_info = self._oauth.get_cached_token() @@ -185,11 +186,17 @@ class SpotifyMediaPlayer(MediaPlayerDevice): self._volume = device.get('volume_percent') / 100 if device.get('name'): self._current_device = device.get('name') + if device.get('shuffle_state'): + self._shuffle = device.get('shuffle_state') def set_volume_level(self, volume): """Set the volume level.""" self._player.volume(int(volume * 100)) + def set_shuffle(self, shuffle): + """Enable/Disable shuffle mode.""" + self._player.shuffle(shuffle) + def media_next_track(self): """Skip to next track.""" self._player.next_track() @@ -245,6 +252,11 @@ class SpotifyMediaPlayer(MediaPlayerDevice): """Device volume.""" return self._volume + @property + def shuffle(self): + """Shuffling state.""" + return self._shuffle + @property def source_list(self): """Playback devices.""" diff --git a/homeassistant/components/media_player/universal.py b/homeassistant/components/media_player/universal.py index 5dfe007976f..ba671f25f38 100644 --- a/homeassistant/components/media_player/universal.py +++ b/homeassistant/components/media_player/universal.py @@ -17,19 +17,19 @@ from homeassistant.components.media_player import ( ATTR_MEDIA_PLAYLIST, ATTR_MEDIA_SEASON, ATTR_MEDIA_SEEK_POSITION, ATTR_MEDIA_SERIES_TITLE, ATTR_MEDIA_TITLE, ATTR_MEDIA_TRACK, ATTR_MEDIA_VOLUME_LEVEL, ATTR_MEDIA_VOLUME_MUTED, ATTR_INPUT_SOURCE_LIST, - ATTR_MEDIA_POSITION, + ATTR_MEDIA_POSITION, ATTR_MEDIA_SHUFFLE, ATTR_MEDIA_POSITION_UPDATED_AT, DOMAIN, SERVICE_PLAY_MEDIA, SUPPORT_TURN_OFF, SUPPORT_TURN_ON, SUPPORT_VOLUME_MUTE, SUPPORT_VOLUME_SET, SUPPORT_VOLUME_STEP, SUPPORT_SELECT_SOURCE, SUPPORT_CLEAR_PLAYLIST, - ATTR_INPUT_SOURCE, SERVICE_SELECT_SOURCE, SERVICE_CLEAR_PLAYLIST, - MediaPlayerDevice) + SUPPORT_SHUFFLE_SET, ATTR_INPUT_SOURCE, SERVICE_SELECT_SOURCE, + SERVICE_CLEAR_PLAYLIST, MediaPlayerDevice) from homeassistant.const import ( ATTR_ENTITY_ID, ATTR_ENTITY_PICTURE, CONF_NAME, SERVICE_MEDIA_NEXT_TRACK, SERVICE_MEDIA_PAUSE, SERVICE_MEDIA_PLAY, SERVICE_MEDIA_PLAY_PAUSE, SERVICE_MEDIA_PREVIOUS_TRACK, SERVICE_MEDIA_SEEK, SERVICE_TURN_OFF, SERVICE_TURN_ON, SERVICE_VOLUME_DOWN, SERVICE_VOLUME_MUTE, - SERVICE_VOLUME_SET, SERVICE_VOLUME_UP, STATE_IDLE, STATE_OFF, STATE_ON, - SERVICE_MEDIA_STOP, ATTR_SUPPORTED_FEATURES) + SERVICE_VOLUME_SET, SERVICE_VOLUME_UP, SERVICE_SHUFFLE_SET, STATE_IDLE, + STATE_OFF, STATE_ON, SERVICE_MEDIA_STOP, ATTR_SUPPORTED_FEATURES) from homeassistant.helpers.event import async_track_state_change from homeassistant.helpers.service import async_call_from_config @@ -356,6 +356,11 @@ class UniversalMediaPlayer(MediaPlayerDevice): """List of available input sources.""" return self._override_or_child_attr(ATTR_INPUT_SOURCE_LIST) + @property + def shuffle(self): + """Boolean if shuffling is enabled.""" + return self._override_or_child_attr(ATTR_MEDIA_SHUFFLE) + @property def supported_features(self): """Flag media player features that are supported.""" @@ -383,6 +388,10 @@ class UniversalMediaPlayer(MediaPlayerDevice): if SERVICE_CLEAR_PLAYLIST in self._cmds: flags |= SUPPORT_CLEAR_PLAYLIST + if SERVICE_SHUFFLE_SET in self._cmds and \ + ATTR_MEDIA_SHUFFLE in self._attrs: + flags |= SUPPORT_SHUFFLE_SET + return flags @property @@ -524,6 +533,15 @@ class UniversalMediaPlayer(MediaPlayerDevice): """ return self._async_call_service(SERVICE_CLEAR_PLAYLIST) + def async_set_shuffle(self, shuffle): + """Enable/disable shuffling. + + This method must be run in the event loop and returns a coroutine. + """ + data = {ATTR_MEDIA_SHUFFLE: shuffle} + return self._async_call_service( + SERVICE_SHUFFLE_SET, data, allow_override=True) + @asyncio.coroutine def async_update(self): """Update state in HA.""" diff --git a/homeassistant/const.py b/homeassistant/const.py index c6aa14417f5..5ab322fab6c 100644 --- a/homeassistant/const.py +++ b/homeassistant/const.py @@ -324,6 +324,7 @@ SERVICE_MEDIA_STOP = 'media_stop' SERVICE_MEDIA_NEXT_TRACK = 'media_next_track' SERVICE_MEDIA_PREVIOUS_TRACK = 'media_previous_track' SERVICE_MEDIA_SEEK = 'media_seek' +SERVICE_SHUFFLE_SET = 'shuffle_set' SERVICE_ALARM_DISARM = 'alarm_disarm' SERVICE_ALARM_ARM_HOME = 'alarm_arm_home' diff --git a/tests/components/media_player/test_universal.py b/tests/components/media_player/test_universal.py index 62be4aca267..d2cc874a541 100644 --- a/tests/components/media_player/test_universal.py +++ b/tests/components/media_player/test_universal.py @@ -30,6 +30,7 @@ class MockMediaPlayer(media_player.MediaPlayerDevice): self._source = None self._tracks = 12 self._media_image_url = None + self._shuffle = False self.service_calls = { 'turn_on': mock_service( @@ -67,6 +68,9 @@ class MockMediaPlayer(media_player.MediaPlayerDevice): 'clear_playlist': mock_service( hass, media_player.DOMAIN, media_player.SERVICE_CLEAR_PLAYLIST), + 'shuffle_set': mock_service( + hass, media_player.DOMAIN, + media_player.SERVICE_SHUFFLE_SET), } @property @@ -99,6 +103,11 @@ class MockMediaPlayer(media_player.MediaPlayerDevice): """Image url of current playing media.""" return self._media_image_url + @property + def shuffle(self): + """Return true if the media player is shuffling.""" + return self._shuffle + def turn_on(self): """Mock turn_on function.""" self._state = STATE_UNKNOWN @@ -131,6 +140,10 @@ class MockMediaPlayer(media_player.MediaPlayerDevice): """Clear players playlist.""" self._tracks = 0 + def set_shuffle(self, shuffle): + """Clear players playlist.""" + self._shuffle = shuffle + class TestMediaPlayer(unittest.TestCase): """Test the media_player module.""" @@ -164,6 +177,9 @@ class TestMediaPlayer(unittest.TestCase): self.mock_source_id = input_select.ENTITY_ID_FORMAT.format('source') self.hass.states.set(self.mock_source_id, 'dvd') + self.mock_shuffle_switch_id = switch.ENTITY_ID_FORMAT.format('shuffle') + self.hass.states.set(self.mock_shuffle_switch_id, STATE_OFF) + self.config_children_only = { 'name': 'test', 'platform': 'universal', 'children': [media_player.ENTITY_ID_FORMAT.format('mock1'), @@ -178,7 +194,8 @@ class TestMediaPlayer(unittest.TestCase): 'volume_level': self.mock_volume_id, 'source': self.mock_source_id, 'source_list': self.mock_source_list_id, - 'state': self.mock_state_switch_id + 'state': self.mock_state_switch_id, + 'shuffle': self.mock_shuffle_switch_id } } @@ -541,6 +558,7 @@ class TestMediaPlayer(unittest.TestCase): config['commands']['volume_mute'] = 'test' config['commands']['volume_set'] = 'test' config['commands']['select_source'] = 'test' + config['commands']['shuffle_set'] = 'test' ump = universal.UniversalMediaPlayer(self.hass, **config) ump.entity_id = media_player.ENTITY_ID_FORMAT.format(config['name']) @@ -553,7 +571,7 @@ class TestMediaPlayer(unittest.TestCase): check_flags = universal.SUPPORT_TURN_ON | universal.SUPPORT_TURN_OFF \ | universal.SUPPORT_VOLUME_STEP | universal.SUPPORT_VOLUME_MUTE \ - | universal.SUPPORT_SELECT_SOURCE + | universal.SUPPORT_SELECT_SOURCE | universal.SUPPORT_SHUFFLE_SET self.assertEqual(check_flags, ump.supported_features) @@ -674,6 +692,11 @@ class TestMediaPlayer(unittest.TestCase): self.assertEqual( 1, len(self.mock_mp_2.service_calls['clear_playlist'])) + run_coroutine_threadsafe( + ump.async_set_shuffle(True), + self.hass.loop).result() + self.assertEqual(1, len(self.mock_mp_2.service_calls['shuffle_set'])) + def test_service_call_to_command(self): """Test service call to command.""" config = self.config_children_only From 0fe0f1918ab1e73285d3248c88dd4625cb292203 Mon Sep 17 00:00:00 2001 From: Brian Cribbs Date: Sun, 30 Apr 2017 16:33:29 -0400 Subject: [PATCH 111/169] more requested changes --- homeassistant/components/cover/mqtt.py | 25 +++++++++++++++++++++++-- tests/components/cover/test_mqtt.py | 1 + 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/cover/mqtt.py b/homeassistant/components/cover/mqtt.py index 8c455a911b4..8226cb1a5fb 100644 --- a/homeassistant/components/cover/mqtt.py +++ b/homeassistant/components/cover/mqtt.py @@ -11,7 +11,10 @@ import voluptuous as vol from homeassistant.core import callback import homeassistant.components.mqtt as mqtt -from homeassistant.components.cover import CoverDevice, ATTR_TILT_POSITION +from homeassistant.components.cover import ( + CoverDevice, ATTR_TILT_POSITION, SUPPORT_OPEN_TILT, + SUPPORT_CLOSE_TILT, SUPPORT_STOP_TILT, SUPPORT_SET_TILT_POSITION, + SUPPORT_OPEN, SUPPORT_CLOSE, SUPPORT_STOP, SUPPORT_SET_POSITION) from homeassistant.const import ( CONF_NAME, CONF_VALUE_TEMPLATE, CONF_OPTIMISTIC, STATE_OPEN, STATE_CLOSED, STATE_UNKNOWN) @@ -50,6 +53,9 @@ DEFAULT_TILT_MIN = 0 DEFAULT_TILT_MAX = 100 DEFAULT_TILT_OPTIMISTIC = False +TILT_FEATURES = (SUPPORT_OPEN_TILT | SUPPORT_CLOSE_TILT | SUPPORT_STOP_TILT | + SUPPORT_SET_TILT_POSITION) + PLATFORM_SCHEMA = mqtt.MQTT_RW_PLATFORM_SCHEMA.extend({ vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string, vol.Optional(CONF_PAYLOAD_OPEN, default=DEFAULT_PAYLOAD_OPEN): cv.string, @@ -130,7 +136,7 @@ class MqttCover(CoverDevice): self._tilt_closed_position = tilt_closed_position self._optimistic = optimistic or state_topic is None self._template = value_template - self._tilt_value = STATE_UNKNOWN + self._tilt_value = None self._tilt_min = tilt_min self._tilt_max = tilt_max self._tilt_optimistic = tilt_optimistic @@ -186,6 +192,8 @@ class MqttCover(CoverDevice): if self._tilt_status_topic is None: self._tilt_optimistic = True else: + self._tilt_optimistic = False + self._tilt_value = STATE_UNKNOWN yield from mqtt.async_subscribe( self.hass, self._tilt_status_topic, tilt_updated, self._qos) @@ -217,6 +225,19 @@ class MqttCover(CoverDevice): """Return current position of cover tilt.""" return self._tilt_value + @property + def supported_features(self): + """Flag supported features.""" + supported_features = SUPPORT_OPEN | SUPPORT_CLOSE | SUPPORT_STOP + + if self.current_cover_position is not None: + supported_features |= SUPPORT_SET_POSITION + + if self._tilt_command_topic is not None: + supported_features |= TILT_FEATURES + + return supported_features + @asyncio.coroutine def async_open_cover(self, **kwargs): """Move the cover up. diff --git a/tests/components/cover/test_mqtt.py b/tests/components/cover/test_mqtt.py index 494c1f0bf33..b2dcf8e175d 100644 --- a/tests/components/cover/test_mqtt.py +++ b/tests/components/cover/test_mqtt.py @@ -213,6 +213,7 @@ class TestCoverMQTT(unittest.TestCase): state_attributes_dict = self.hass.states.get( 'cover.test').attributes self.assertFalse('current_position' in state_attributes_dict) + self.assertFalse('current_tilt_position' in state_attributes_dict) fire_mqtt_message(self.hass, 'state-topic', '0') self.hass.block_till_done() From 87ef26be229147701abe0749852838fdb314d2fd Mon Sep 17 00:00:00 2001 From: Robbie Trencheny Date: Sun, 30 Apr 2017 15:23:49 -0700 Subject: [PATCH 112/169] Disable identify schema validation for now --- homeassistant/components/ios.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/homeassistant/components/ios.py b/homeassistant/components/ios.py index bac5bb59d96..3607fda9a79 100644 --- a/homeassistant/components/ios.py +++ b/homeassistant/components/ios.py @@ -288,15 +288,16 @@ class iOSIdentifyDeviceView(HomeAssistantView): def post(self, request): """Handle the POST request for device identification.""" try: - req_data = yield from request.json() + data = yield from request.json() except ValueError: return self.json_message("Invalid JSON", HTTP_BAD_REQUEST) - try: - data = IDENTIFY_SCHEMA(req_data) - except vol.Invalid as ex: - return self.json_message(humanize_error(request.json, ex), - HTTP_BAD_REQUEST) + # Commented for now while iOS app is getting frequent updates + # try: + # data = IDENTIFY_SCHEMA(req_data) + # except vol.Invalid as ex: + # return self.json_message(humanize_error(request.json, ex), + # HTTP_BAD_REQUEST) data[ATTR_LAST_SEEN_AT] = datetime.datetime.now() From ecf511ff35d950b90638f139211953e9922a8033 Mon Sep 17 00:00:00 2001 From: Robbie Trencheny Date: Sun, 30 Apr 2017 15:55:34 -0700 Subject: [PATCH 113/169] Remove unused dependency --- homeassistant/components/ios.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/homeassistant/components/ios.py b/homeassistant/components/ios.py index 3607fda9a79..7f6fcda6e35 100644 --- a/homeassistant/components/ios.py +++ b/homeassistant/components/ios.py @@ -11,7 +11,7 @@ import logging import datetime import voluptuous as vol -from voluptuous.humanize import humanize_error +# from voluptuous.humanize import humanize_error from homeassistant.helpers import config_validation as cv From 6aac53399de756778b17537b0bf3b9b8c2f97aae Mon Sep 17 00:00:00 2001 From: Marcelo Moreira de Mello Date: Sun, 30 Apr 2017 23:08:14 -0400 Subject: [PATCH 114/169] Upgrade Ring to 0.1.4 (#7386) --- homeassistant/components/ring.py | 2 +- requirements_all.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/ring.py b/homeassistant/components/ring.py index fe5e7bc07ea..450ef6b1978 100644 --- a/homeassistant/components/ring.py +++ b/homeassistant/components/ring.py @@ -13,7 +13,7 @@ import homeassistant.loader as loader from requests.exceptions import HTTPError, ConnectTimeout -REQUIREMENTS = ['ring_doorbell==0.1.3'] +REQUIREMENTS = ['ring_doorbell==0.1.4'] _LOGGER = logging.getLogger(__name__) diff --git a/requirements_all.txt b/requirements_all.txt index 03fa1f166d0..03bebd8ddaf 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -706,7 +706,7 @@ radiotherm==1.2 rflink==0.0.31 # homeassistant.components.ring -ring_doorbell==0.1.3 +ring_doorbell==0.1.4 # homeassistant.components.switch.rpi_rf # rpi-rf==0.9.6 From 86cfc2a0ed10558be3bc8021c7c215a42cecf994 Mon Sep 17 00:00:00 2001 From: Alok Saboo Date: Sun, 30 Apr 2017 23:10:08 -0400 Subject: [PATCH 115/169] Updated docstrings (#7383) * Updated docstrings * Updated docstrings * Updated docstrings * Update docstrings * Update more docstrings --- homeassistant/components/camera/netatmo.py | 2 +- homeassistant/components/climate/proliphix.py | 2 +- homeassistant/components/device_tracker/mysensors.py | 2 +- homeassistant/components/emulated_hue/__init__.py | 4 ++-- homeassistant/components/light/blinksticklight.py | 2 +- homeassistant/components/light/enocean.py | 2 +- homeassistant/components/light/flux_led.py | 2 +- homeassistant/components/light/homematic.py | 2 +- homeassistant/components/light/hue.py | 6 +++--- homeassistant/components/light/hyperion.py | 2 +- homeassistant/components/light/insteon_hub.py | 2 +- homeassistant/components/light/insteon_local.py | 2 +- homeassistant/components/light/knx.py | 2 +- homeassistant/components/light/lifx_legacy.py | 4 ++-- homeassistant/components/light/limitlessled.py | 4 ++-- homeassistant/components/light/litejet.py | 2 +- homeassistant/components/light/lutron.py | 4 ++-- homeassistant/components/light/lutron_caseta.py | 4 ++-- homeassistant/components/light/mqtt_json.py | 2 +- homeassistant/components/light/mqtt_template.py | 2 +- homeassistant/components/light/mysensors.py | 4 ++-- homeassistant/components/light/osramlightify.py | 4 ++-- homeassistant/components/light/rfxtrx.py | 4 ++-- homeassistant/components/light/rpi_gpio_pwm.py | 2 +- homeassistant/components/light/scsgate.py | 2 +- homeassistant/components/light/tellduslive.py | 4 ++-- homeassistant/components/light/tellstick.py | 2 +- homeassistant/components/light/tradfri.py | 2 +- homeassistant/components/light/vera.py | 4 ++-- homeassistant/components/light/wemo.py | 6 +++--- homeassistant/components/light/wink.py | 8 ++++---- homeassistant/components/light/x10.py | 2 +- homeassistant/components/light/yeelight.py | 4 ++-- homeassistant/components/light/zha.py | 2 +- homeassistant/components/light/zwave.py | 8 ++++---- 35 files changed, 56 insertions(+), 56 deletions(-) diff --git a/homeassistant/components/camera/netatmo.py b/homeassistant/components/camera/netatmo.py index 7185d14e54d..ca94db797a9 100644 --- a/homeassistant/components/camera/netatmo.py +++ b/homeassistant/components/camera/netatmo.py @@ -55,7 +55,7 @@ class NetatmoCamera(Camera): """Representation of the images published from a Netatmo camera.""" def __init__(self, data, camera_name, home, camera_type, verify_ssl): - """Setup for access to the Netatmo camera images.""" + """Set up access to the Netatmo camera images.""" super(NetatmoCamera, self).__init__() self._data = data self._camera_name = camera_name diff --git a/homeassistant/components/climate/proliphix.py b/homeassistant/components/climate/proliphix.py index 7f7e8af6d0a..f168df04158 100644 --- a/homeassistant/components/climate/proliphix.py +++ b/homeassistant/components/climate/proliphix.py @@ -48,7 +48,7 @@ class ProliphixThermostat(ClimateDevice): @property def should_poll(self): - """Polling needed for thermostat.""" + """Set up polling needed for thermostat.""" return True def update(self): diff --git a/homeassistant/components/device_tracker/mysensors.py b/homeassistant/components/device_tracker/mysensors.py index 00bd2eef6e0..4503c4d1b26 100644 --- a/homeassistant/components/device_tracker/mysensors.py +++ b/homeassistant/components/device_tracker/mysensors.py @@ -17,7 +17,7 @@ _LOGGER = logging.getLogger(__name__) def setup_scanner(hass, config, see, discovery_info=None): """Set up the MySensors tracker.""" def mysensors_callback(gateway, msg): - """Callback for mysensors platform.""" + """Set up callback for mysensors platform.""" node = gateway.sensors[msg.node_id] if node.sketch_name is None: _LOGGER.debug("No sketch_name: node %s", msg.node_id) diff --git a/homeassistant/components/emulated_hue/__init__.py b/homeassistant/components/emulated_hue/__init__.py index 567528b72ff..b0b6ec0324f 100644 --- a/homeassistant/components/emulated_hue/__init__.py +++ b/homeassistant/components/emulated_hue/__init__.py @@ -234,7 +234,7 @@ class Config(object): return is_default_exposed or explicit_expose def _load_numbers_json(self): - """Helper method to load numbers json.""" + """Set up helper method to load numbers json.""" try: with open(self.hass.config.path(NUMBERS_FILE), encoding='utf-8') as fil: @@ -247,7 +247,7 @@ class Config(object): return {} def _save_numbers_json(self): - """Helper method to save numbers json.""" + """Set up helper method to save numbers json.""" try: with open(self.hass.config.path(NUMBERS_FILE), 'w', encoding='utf-8') as fil: diff --git a/homeassistant/components/light/blinksticklight.py b/homeassistant/components/light/blinksticklight.py index 700840fb4bd..bbbde10ecc8 100644 --- a/homeassistant/components/light/blinksticklight.py +++ b/homeassistant/components/light/blinksticklight.py @@ -54,7 +54,7 @@ class BlinkStickLight(Light): @property def should_poll(self): - """Polling needed.""" + """Set up polling.""" return True @property diff --git a/homeassistant/components/light/enocean.py b/homeassistant/components/light/enocean.py index 844cba1e631..ad4bc381b80 100644 --- a/homeassistant/components/light/enocean.py +++ b/homeassistant/components/light/enocean.py @@ -34,7 +34,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the EnOcean light platform.""" + """Set up the EnOcean light platform.""" sender_id = config.get(CONF_SENDER_ID) devname = config.get(CONF_NAME) dev_id = config.get(CONF_ID) diff --git a/homeassistant/components/light/flux_led.py b/homeassistant/components/light/flux_led.py index b437eff3fbd..4b9bed10201 100644 --- a/homeassistant/components/light/flux_led.py +++ b/homeassistant/components/light/flux_led.py @@ -94,7 +94,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the Flux lights.""" + """Set up the Flux lights.""" import flux_led lights = [] light_ips = [] diff --git a/homeassistant/components/light/homematic.py b/homeassistant/components/light/homematic.py index 08d79b3245a..11bba4260d5 100644 --- a/homeassistant/components/light/homematic.py +++ b/homeassistant/components/light/homematic.py @@ -18,7 +18,7 @@ SUPPORT_HOMEMATIC = SUPPORT_BRIGHTNESS def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the Homematic light platform.""" + """Set up the Homematic light platform.""" if discovery_info is None: return diff --git a/homeassistant/components/light/hue.py b/homeassistant/components/light/hue.py index 77981ea6e68..0f00519ab91 100644 --- a/homeassistant/components/light/hue.py +++ b/homeassistant/components/light/hue.py @@ -104,7 +104,7 @@ def _find_host_from_config(hass, filename=PHUE_CONFIG_FILE): def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the Hue lights.""" + """Set up the Hue lights.""" # Default needed in case of discovery filename = config.get(CONF_FILENAME, PHUE_CONFIG_FILE) allow_unreachable = config.get(CONF_ALLOW_UNREACHABLE, @@ -140,7 +140,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None): def setup_bridge(host, hass, add_devices, filename, allow_unreachable, allow_in_emulated_hue, allow_hue_groups): - """Setup a phue bridge based on host parameter.""" + """Set up a phue bridge based on host parameter.""" import phue try: @@ -273,7 +273,7 @@ def request_configuration(host, hass, add_devices, filename, # pylint: disable=unused-argument def hue_configuration_callback(data): - """The actions to do when our configuration callback is called.""" + """Set up actions to do when our configuration callback is called.""" setup_bridge(host, hass, add_devices, filename, allow_unreachable, allow_in_emulated_hue, allow_hue_groups) diff --git a/homeassistant/components/light/hyperion.py b/homeassistant/components/light/hyperion.py index cfa9a64580e..99fc557af20 100644 --- a/homeassistant/components/light/hyperion.py +++ b/homeassistant/components/light/hyperion.py @@ -36,7 +36,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup a Hyperion server remote.""" + """Set up a Hyperion server remote.""" host = config.get(CONF_HOST) port = config.get(CONF_PORT) default_color = config.get(CONF_DEFAULT_COLOR) diff --git a/homeassistant/components/light/insteon_hub.py b/homeassistant/components/light/insteon_hub.py index 6f547b5f92a..3bdf69671e0 100644 --- a/homeassistant/components/light/insteon_hub.py +++ b/homeassistant/components/light/insteon_hub.py @@ -14,7 +14,7 @@ SUPPORT_INSTEON_HUB = SUPPORT_BRIGHTNESS def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the Insteon Hub light platform.""" + """Set up the Insteon Hub light platform.""" devs = [] for device in INSTEON.devices: if device.DeviceCategory == "Switched Lighting Control": diff --git a/homeassistant/components/light/insteon_local.py b/homeassistant/components/light/insteon_local.py index e115235706c..f7beb0c31ac 100644 --- a/homeassistant/components/light/insteon_local.py +++ b/homeassistant/components/light/insteon_local.py @@ -64,7 +64,7 @@ def request_configuration(device_id, insteonhub, model, hass, return def insteon_light_config_callback(data): - """The actions to do when our configuration callback is called.""" + """Set up actions to do when our configuration callback is called.""" setup_light(device_id, data.get('name'), insteonhub, hass, add_devices_callback) diff --git a/homeassistant/components/light/knx.py b/homeassistant/components/light/knx.py index 7a972e35d40..6d5cd12c23e 100644 --- a/homeassistant/components/light/knx.py +++ b/homeassistant/components/light/knx.py @@ -25,7 +25,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the KNX light platform.""" + """Set up the KNX light platform.""" add_devices([KNXLight(hass, KNXConfig(config))]) diff --git a/homeassistant/components/light/lifx_legacy.py b/homeassistant/components/light/lifx_legacy.py index 8a81c992a13..cc48f4cf4c1 100644 --- a/homeassistant/components/light/lifx_legacy.py +++ b/homeassistant/components/light/lifx_legacy.py @@ -48,7 +48,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ # pylint: disable=unused-argument def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the LIFX platform.""" + """Set up the LIFX platform.""" server_addr = config.get(CONF_SERVER) broadcast_addr = config.get(CONF_BROADCAST) @@ -121,7 +121,7 @@ class LIFX(object): # pylint: disable=unused-argument def poll(self, now): - """Polling for the light.""" + """Set up polling for the light.""" self.probe() def probe(self, address=None): diff --git a/homeassistant/components/light/limitlessled.py b/homeassistant/components/light/limitlessled.py index c2769ab6638..c7091afcb27 100644 --- a/homeassistant/components/light/limitlessled.py +++ b/homeassistant/components/light/limitlessled.py @@ -95,7 +95,7 @@ def rewrite_legacy(config): def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the LimitlessLED lights.""" + """Set up the LimitlessLED lights.""" from limitlessled.bridge import Bridge # Two legacy configuration formats are supported to maintain backwards @@ -123,7 +123,7 @@ def state(new_state): Specify True (turn on) or False (turn off). """ def decorator(function): - """Decorator function.""" + """Set up the decorator function.""" # pylint: disable=no-member,protected-access def wrapper(self, **kwargs): """Wrap a group state change.""" diff --git a/homeassistant/components/light/litejet.py b/homeassistant/components/light/litejet.py index 907d7f27fb9..d95fa6841b6 100644 --- a/homeassistant/components/light/litejet.py +++ b/homeassistant/components/light/litejet.py @@ -57,7 +57,7 @@ class LiteJetLight(Light): @property def name(self): - """The light's name.""" + """Set up the light's name.""" return self._name @property diff --git a/homeassistant/components/light/lutron.py b/homeassistant/components/light/lutron.py index 5322fd79489..d9dfdbdd8f9 100644 --- a/homeassistant/components/light/lutron.py +++ b/homeassistant/components/light/lutron.py @@ -13,7 +13,7 @@ _LOGGER = logging.getLogger(__name__) # pylint: disable=unused-argument def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup Lutron lights.""" + """Set up Lutron lights.""" devs = [] for (area_name, device) in hass.data[LUTRON_DEVICES]['light']: dev = LutronLight(area_name, device, hass.data[LUTRON_CONTROLLER]) @@ -82,6 +82,6 @@ class LutronLight(LutronDevice, Light): return self._lutron_device.last_level() > 0 def update(self): - """Called when forcing a refresh of the device.""" + """Call when forcing a refresh of the device.""" if self._prev_brightness is None: self._prev_brightness = to_hass_level(self._lutron_device.level) diff --git a/homeassistant/components/light/lutron_caseta.py b/homeassistant/components/light/lutron_caseta.py index 705886855b0..7b842cd0ff7 100644 --- a/homeassistant/components/light/lutron_caseta.py +++ b/homeassistant/components/light/lutron_caseta.py @@ -16,7 +16,7 @@ DEPENDENCIES = ['lutron_caseta'] # pylint: disable=unused-argument def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup Lutron Caseta lights.""" + """Set up Lutron Caseta lights.""" devs = [] bridge = hass.data[LUTRON_CASETA_SMARTBRIDGE] light_devices = bridge.get_devices_by_types(["WallDimmer", "PlugInDimmer"]) @@ -59,6 +59,6 @@ class LutronCasetaLight(LutronCasetaDevice, Light): return self._state["current_state"] > 0 def update(self): - """Called when forcing a refresh of the device.""" + """Call when forcing a refresh of the device.""" self._state = self._smartbridge.get_device_by_id(self._device_id) _LOGGER.debug(self._state) diff --git a/homeassistant/components/light/mqtt_json.py b/homeassistant/components/light/mqtt_json.py index b109460700e..eaa36992012 100755 --- a/homeassistant/components/light/mqtt_json.py +++ b/homeassistant/components/light/mqtt_json.py @@ -71,7 +71,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ @asyncio.coroutine def async_setup_platform(hass, config, async_add_devices, discovery_info=None): - """Setup a MQTT JSON Light.""" + """Set up a MQTT JSON Light.""" if discovery_info is not None: config = PLATFORM_SCHEMA(discovery_info) async_add_devices([MqttJson( diff --git a/homeassistant/components/light/mqtt_template.py b/homeassistant/components/light/mqtt_template.py index fa0d71f46ef..422c9c951de 100755 --- a/homeassistant/components/light/mqtt_template.py +++ b/homeassistant/components/light/mqtt_template.py @@ -65,7 +65,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ @asyncio.coroutine def async_setup_platform(hass, config, async_add_devices, discovery_info=None): - """Setup a MQTT Template light.""" + """Set up a MQTT Template light.""" if discovery_info is not None: config = PLATFORM_SCHEMA(discovery_info) diff --git a/homeassistant/components/light/mysensors.py b/homeassistant/components/light/mysensors.py index 7cb978bc10c..e25067916b2 100644 --- a/homeassistant/components/light/mysensors.py +++ b/homeassistant/components/light/mysensors.py @@ -25,7 +25,7 @@ SUPPORT_MYSENSORS = (SUPPORT_BRIGHTNESS | SUPPORT_RGB_COLOR | def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the mysensors platform for sensors.""" + """Set up the mysensors platform for sensors.""" # Only act if loaded via mysensors by discovery event. # Otherwise gateway is not setup. if discovery_info is None: @@ -65,7 +65,7 @@ class MySensorsLight(mysensors.MySensorsDeviceEntity, Light): """Represent the value of a MySensors Light child node.""" def __init__(self, *args): - """Setup instance attributes.""" + """Set up instance attributes.""" mysensors.MySensorsDeviceEntity.__init__(self, *args) self._state = None self._brightness = None diff --git a/homeassistant/components/light/osramlightify.py b/homeassistant/components/light/osramlightify.py index 1ddfe1baa53..e93c2092f98 100644 --- a/homeassistant/components/light/osramlightify.py +++ b/homeassistant/components/light/osramlightify.py @@ -39,7 +39,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the Osram Lightify lights.""" + """Set up the Osram Lightify lights.""" import lightify host = config.get(CONF_HOST) if host: @@ -57,7 +57,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None): def setup_bridge(bridge, add_devices_callback): - """Setup the Lightify bridge.""" + """Set up the Lightify bridge.""" lights = {} @util.Throttle(MIN_TIME_BETWEEN_SCANS, MIN_TIME_BETWEEN_FORCED_SCANS) diff --git a/homeassistant/components/light/rfxtrx.py b/homeassistant/components/light/rfxtrx.py index 623b42d77ad..b3bfc82a26b 100644 --- a/homeassistant/components/light/rfxtrx.py +++ b/homeassistant/components/light/rfxtrx.py @@ -20,14 +20,14 @@ SUPPORT_RFXTRX = SUPPORT_BRIGHTNESS def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the RFXtrx platform.""" + """Set up the RFXtrx platform.""" import RFXtrx as rfxtrxmod lights = rfxtrx.get_devices_from_config(config, RfxtrxLight) add_devices(lights) def light_update(event): - """Callback for light updates from the RFXtrx gateway.""" + """Define callback for light updates from the RFXtrx gateway.""" if not isinstance(event.device, rfxtrxmod.LightingDevice) or \ not event.device.known_to_be_dimmable: return diff --git a/homeassistant/components/light/rpi_gpio_pwm.py b/homeassistant/components/light/rpi_gpio_pwm.py index c8ba110c58a..0248ca49dd6 100644 --- a/homeassistant/components/light/rpi_gpio_pwm.py +++ b/homeassistant/components/light/rpi_gpio_pwm.py @@ -55,7 +55,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the pwm lights.""" + """Set up the pwm lights.""" from pwmled.led import SimpleLed from pwmled.led.rgb import RgbLed from pwmled.led.rgbw import RgbwLed diff --git a/homeassistant/components/light/scsgate.py b/homeassistant/components/light/scsgate.py index 532dc67562f..1de2e31af5f 100644 --- a/homeassistant/components/light/scsgate.py +++ b/homeassistant/components/light/scsgate.py @@ -24,7 +24,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the SCSGate switches.""" + """Set up the SCSGate switches.""" devices = config.get(CONF_DEVICES) lights = [] logger = logging.getLogger(__name__) diff --git a/homeassistant/components/light/tellduslive.py b/homeassistant/components/light/tellduslive.py index 31f9eb1d253..b2cbd856075 100644 --- a/homeassistant/components/light/tellduslive.py +++ b/homeassistant/components/light/tellduslive.py @@ -17,7 +17,7 @@ _LOGGER = logging.getLogger(__name__) def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup lights.""" + """Set up lights.""" if discovery_info is None: return add_devices(TelldusLiveLight(hass, light) for light in discovery_info) @@ -32,7 +32,7 @@ class TelldusLiveLight(TelldusLiveEntity, Light): self._last_brightness = self.brightness def changed(self): - """A property of the device might have changed.""" + """Define a property of the device that might have changed.""" self._last_brightness = self.brightness super().changed() diff --git a/homeassistant/components/light/tellstick.py b/homeassistant/components/light/tellstick.py index 9002731e44e..2c1401e34d8 100644 --- a/homeassistant/components/light/tellstick.py +++ b/homeassistant/components/light/tellstick.py @@ -20,7 +20,7 @@ SUPPORT_TELLSTICK = SUPPORT_BRIGHTNESS # pylint: disable=unused-argument def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup Tellstick lights.""" + """Set up Tellstick lights.""" if (discovery_info is None or discovery_info[ATTR_DISCOVER_DEVICES] is None): return diff --git a/homeassistant/components/light/tradfri.py b/homeassistant/components/light/tradfri.py index fe30c0f370c..488cea05494 100644 --- a/homeassistant/components/light/tradfri.py +++ b/homeassistant/components/light/tradfri.py @@ -20,7 +20,7 @@ ALLOWED_TEMPERATURES = { def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the IKEA Tradfri Light platform.""" + """Set up the IKEA Tradfri Light platform.""" if discovery_info is None: return diff --git a/homeassistant/components/light/vera.py b/homeassistant/components/light/vera.py index 3dc5f774785..8565cf5a9a4 100644 --- a/homeassistant/components/light/vera.py +++ b/homeassistant/components/light/vera.py @@ -20,7 +20,7 @@ SUPPORT_VERA = SUPPORT_BRIGHTNESS # pylint: disable=unused-argument def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup Vera lights.""" + """Set up Vera lights.""" add_devices( VeraLight(device, VERA_CONTROLLER) for device in VERA_DEVICES['light']) @@ -67,5 +67,5 @@ class VeraLight(VeraDevice, Light): return self._state def update(self): - """Called by the vera device callback to update state.""" + """Call to update state.""" self._state = self.vera_device.is_switched_on() diff --git a/homeassistant/components/light/wemo.py b/homeassistant/components/light/wemo.py index 02106511fe2..71c2e333c9a 100644 --- a/homeassistant/components/light/wemo.py +++ b/homeassistant/components/light/wemo.py @@ -26,7 +26,7 @@ SUPPORT_WEMO = (SUPPORT_BRIGHTNESS | SUPPORT_COLOR_TEMP | SUPPORT_RGB_COLOR | def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup WeMo bridges and register connected lights.""" + """Set up WeMo bridges and register connected lights.""" import pywemo.discovery as discovery if discovery_info is not None: @@ -39,7 +39,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None): def setup_bridge(bridge, add_devices): - """Setup a WeMo link.""" + """Set up a WeMo link.""" lights = {} @util.Throttle(MIN_TIME_BETWEEN_SCANS, MIN_TIME_BETWEEN_FORCED_SCANS) @@ -97,7 +97,7 @@ class WemoLight(Light): @property def is_on(self): - """True if device is on.""" + """Set True if device is on.""" return self.device.state['onoff'] != 0 @property diff --git a/homeassistant/components/light/wink.py b/homeassistant/components/light/wink.py index 26c85f19fa4..9ffc7b5f4c6 100644 --- a/homeassistant/components/light/wink.py +++ b/homeassistant/components/light/wink.py @@ -22,7 +22,7 @@ RGB_MODES = ['hsb', 'rgb'] def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the Wink lights.""" + """Set up the Wink lights.""" import pywink for light in pywink.get_light_bulbs(): @@ -53,7 +53,7 @@ class WinkLight(WinkDevice, Light): @property def rgb_color(self): - """Current bulb color in RGB.""" + """Define current bulb color in RGB.""" if not self.wink.supports_hue_saturation(): return None elif self.wink.color_model() not in RGB_MODES: @@ -72,14 +72,14 @@ class WinkLight(WinkDevice, Light): @property def xy_color(self): - """Current bulb color in CIE 1931 (XY) color space.""" + """Define current bulb color in CIE 1931 (XY) color space.""" if not self.wink.supports_xy_color(): return None return self.wink.color_xy() @property def color_temp(self): - """Current bulb color in degrees Kelvin.""" + """Define current bulb color in degrees Kelvin.""" if not self.wink.supports_temperature(): return None return color_util.color_temperature_kelvin_to_mired( diff --git a/homeassistant/components/light/x10.py b/homeassistant/components/light/x10.py index 48df8368294..7062665c42b 100644 --- a/homeassistant/components/light/x10.py +++ b/homeassistant/components/light/x10.py @@ -40,7 +40,7 @@ def get_unit_status(code): def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the x10 Light platform.""" + """Set up the x10 Light platform.""" try: x10_command('info') except CalledProcessError as err: diff --git a/homeassistant/components/light/yeelight.py b/homeassistant/components/light/yeelight.py index 9253f471431..7ba2b3ad4f3 100644 --- a/homeassistant/components/light/yeelight.py +++ b/homeassistant/components/light/yeelight.py @@ -54,7 +54,7 @@ SUPPORT_YEELIGHT_RGB = (SUPPORT_YEELIGHT | def _cmd(func): - """A wrapper to catch exceptions from the bulb.""" + """Define a wrapper to catch exceptions from the bulb.""" def _wrap(self, *args, **kwargs): import yeelight try: @@ -67,7 +67,7 @@ def _cmd(func): def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the Yeelight bulbs.""" + """Set up Yeelight bulbs.""" lights = [] if discovery_info is not None: _LOGGER.debug("Adding autodetected %s", discovery_info['hostname']) diff --git a/homeassistant/components/light/zha.py b/homeassistant/components/light/zha.py index f404657dbfc..8959fa9ef0e 100644 --- a/homeassistant/components/light/zha.py +++ b/homeassistant/components/light/zha.py @@ -17,7 +17,7 @@ DEPENDENCIES = ['zha'] @asyncio.coroutine def async_setup_platform(hass, config, async_add_devices, discovery_info=None): - """Setup Zigbee Home Automation lights.""" + """Set up Zigbee Home Automation lights.""" discovery_info = zha.get_discovery_info(hass, discovery_info) if discovery_info is None: return diff --git a/homeassistant/components/light/zwave.py b/homeassistant/components/light/zwave.py index 0b43878d025..81d36b4779b 100644 --- a/homeassistant/components/light/zwave.py +++ b/homeassistant/components/light/zwave.py @@ -113,19 +113,19 @@ class ZwaveDimmer(zwave.ZWaveDeviceEntity, Light): self._brightness, self._state = brightness_state(self.values.primary) def value_added(self): - """Called when a new value is added to this entity.""" + """Call when a new value is added to this entity.""" self._supported_features = SUPPORT_BRIGHTNESS if self.values.dimming_duration is not None: self._supported_features |= SUPPORT_TRANSITION def value_changed(self): - """Called when a value for this entity's node has changed.""" + """Call when a value for this entity's node has changed.""" if self._refresh_value: if self._refreshing: self._refreshing = False else: def _refresh_value(): - """Used timer callback for delayed value refresh.""" + """Use timer callback for delayed value refresh.""" self._refreshing = True self.values.primary.refresh() @@ -218,7 +218,7 @@ class ZwaveColorLight(ZwaveDimmer): super().__init__(values, refresh, delay) def value_added(self): - """Called when a new value is added to this entity.""" + """Call when a new value is added to this entity.""" super().value_added() self._supported_features |= SUPPORT_RGB_COLOR From fafd0d4e4cfa63c49b611c0b2066fc5b985d3038 Mon Sep 17 00:00:00 2001 From: Daniel Perna Date: Mon, 1 May 2017 06:37:00 +0200 Subject: [PATCH 116/169] Fix impulse events, added error event for Homegear (#7349) * Fix impulse event, added error event * Requested changes --- homeassistant/components/homematic.py | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/homeassistant/components/homematic.py b/homeassistant/components/homematic.py index 8c107fae26a..ace4795d54c 100644 --- a/homeassistant/components/homematic.py +++ b/homeassistant/components/homematic.py @@ -42,9 +42,12 @@ ATTR_NAME = 'name' ATTR_ADDRESS = 'address' ATTR_VALUE = 'value' ATTR_PROXY = 'proxy' +ATTR_ERRORCODE = 'error' +ATTR_MESSAGE = 'message' EVENT_KEYPRESS = 'homematic.keypress' EVENT_IMPULSE = 'homematic.impulse' +EVENT_ERROR = 'homematic.error' SERVICE_VIRTUALKEY = 'virtualkey' SERVICE_RECONNECT = 'reconnect' @@ -447,6 +450,14 @@ def _system_callback_handler(hass, config, src, *args): ATTR_DISCOVER_DEVICES: found_devices }, config) + elif src == 'error': + _LOGGER.debug("Error: %s", args) + (interface_id, errorcode, message) = args + hass.bus.fire(EVENT_ERROR, { + ATTR_ERRORCODE: errorcode, + ATTR_MESSAGE: message + }) + def _get_devices(hass, discovery_type, keys, proxy): """Get the Homematic devices for given discovery_type.""" @@ -544,19 +555,19 @@ def _hm_event_handler(hass, proxy, device, caller, attribute, value): # keypress event if attribute in HM_PRESS_EVENTS: - hass.add_job(hass.bus.async_fire(EVENT_KEYPRESS, { + hass.bus.fire(EVENT_KEYPRESS, { ATTR_NAME: hmdevice.NAME, ATTR_PARAM: attribute, ATTR_CHANNEL: channel - })) + }) return # impulse event if attribute in HM_IMPULSE_EVENTS: - hass.add_job(hass.bus.async_fire(EVENT_KEYPRESS, { + hass.bus.fire(EVENT_IMPULSE, { ATTR_NAME: hmdevice.NAME, ATTR_CHANNEL: channel - })) + }) return _LOGGER.warning("Event is unknown and not forwarded") From da2521a29922c7da744685255f7f8d16fcd0cc1e Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Mon, 1 May 2017 20:09:49 -0700 Subject: [PATCH 117/169] Fix YAML dump (#7388) * Fix YAML dump * Add test --- homeassistant/util/yaml.py | 29 ++++++++++++++++++----------- tests/util/test_yaml.py | 8 ++++++++ 2 files changed, 26 insertions(+), 11 deletions(-) diff --git a/homeassistant/util/yaml.py b/homeassistant/util/yaml.py index 19e614da1f8..7827f484fdf 100644 --- a/homeassistant/util/yaml.py +++ b/homeassistant/util/yaml.py @@ -20,18 +20,20 @@ _SECRET_YAML = 'secrets.yaml' __SECRET_CACHE = {} # type: Dict +class NodeListClass(list): + """Wrapper class to be able to add attributes on a list.""" + + pass + + +class NodeStrClass(str): + """Wrapper class to be able to add attributes on a string.""" + + pass + + def _add_reference(obj, loader, node): """Add file reference information to an object.""" - class NodeListClass(list): - """Wrapper class to be able to add attributes on a list.""" - - pass - - class NodeStrClass(str): - """Wrapper class to be able to add attributes on a string.""" - - pass - if isinstance(obj, list): obj = NodeListClass(obj) if isinstance(obj, str): @@ -305,4 +307,9 @@ def represent_odict(dump, tag, mapping, flow_style=None): yaml.SafeDumper.add_representer( OrderedDict, lambda dumper, value: - represent_odict(dumper, u'tag:yaml.org,2002:map', value)) + represent_odict(dumper, 'tag:yaml.org,2002:map', value)) + +yaml.SafeDumper.add_representer( + NodeListClass, + lambda dumper, value: + dumper.represent_sequence('tag:yaml.org,2002:seq', value)) diff --git a/tests/util/test_yaml.py b/tests/util/test_yaml.py index 79fd994ce86..0ccb6f5d6d0 100644 --- a/tests/util/test_yaml.py +++ b/tests/util/test_yaml.py @@ -385,3 +385,11 @@ class TestSecrets(unittest.TestCase): load_yaml(self._yaml_path, 'api_password: !secret pw') assert mock_error.call_count == 1, \ "Expected an error about logger: value" + + +def test_representing_yaml_loaded_data(): + """Test we can represent YAML loaded data.""" + files = {YAML_CONFIG_FILE: 'key: [1, "2", 3]'} + with patch_yaml_files(files): + data = load_yaml_config_file(YAML_CONFIG_FILE) + assert yaml.dump(data) == "key:\n- 1\n- '2'\n- 3\n" From 8ea6c7319ac5888fe0fc207b7242bd25339ba577 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Mon, 1 May 2017 23:29:01 -0700 Subject: [PATCH 118/169] Migrate updater to aiohttp (#7387) * Migrate updater to aiohttp * Fix tests * Update updater.py * Docs --- homeassistant/components/updater.py | 113 ++++++++------ tests/common.py | 45 ++++-- tests/components/test_discovery.py | 4 +- tests/components/test_updater.py | 224 ++++++++++++++++------------ 4 files changed, 222 insertions(+), 164 deletions(-) diff --git a/homeassistant/components/updater.py b/homeassistant/components/updater.py index c6cd1a69d0c..137757fdbd4 100644 --- a/homeassistant/components/updater.py +++ b/homeassistant/components/updater.py @@ -4,22 +4,25 @@ Support to check for available updates. For more details about this component, please refer to the documentation at https://home-assistant.io/components/updater/ """ +import asyncio import json import logging import os import platform import uuid -from datetime import datetime, timedelta +from datetime import timedelta # pylint: disable=no-name-in-module, import-error from distutils.version import StrictVersion -import requests +import aiohttp +import async_timeout import voluptuous as vol +from homeassistant.helpers.aiohttp_client import async_get_clientsession import homeassistant.helpers.config_validation as cv import homeassistant.util.dt as dt_util -from homeassistant.const import __version__ as CURRENT_VERSION -from homeassistant.const import ATTR_FRIENDLY_NAME +from homeassistant.const import ( + ATTR_FRIENDLY_NAME, __version__ as CURRENT_VERSION) from homeassistant.helpers import event REQUIREMENTS = ['distro==1.0.4'] @@ -67,59 +70,63 @@ def _load_uuid(hass, filename=UPDATER_UUID_FILE): return _create_uuid(hass, filename) -def setup(hass, config): +@asyncio.coroutine +def async_setup(hass, config): """Set up the updater component.""" if 'dev' in CURRENT_VERSION: # This component only makes sense in release versions _LOGGER.warning("Running on 'dev', only analytics will be submitted") config = config.get(DOMAIN, {}) - huuid = _load_uuid(hass) if config.get(CONF_REPORTING) else None + if config.get(CONF_REPORTING): + huuid = yield from hass.async_add_job(_load_uuid, hass) + else: + huuid = None + + @asyncio.coroutine + def check_new_version(now): + """Check if a new version is available and report if one is.""" + result = yield from get_newest_version(hass, huuid) + + if result is None: + return + + newest, releasenotes = result + + if newest is None or 'dev' in CURRENT_VERSION: + return + + if StrictVersion(newest) > StrictVersion(CURRENT_VERSION): + _LOGGER.info("The latest available version is %s", newest) + hass.states.async_set( + ENTITY_ID, newest, {ATTR_FRIENDLY_NAME: 'Update Available', + ATTR_RELEASE_NOTES: releasenotes} + ) + elif StrictVersion(newest) == StrictVersion(CURRENT_VERSION): + _LOGGER.info( + "You are on the latest version (%s) of Home Assistant", newest) # Update daily, start 1 hour after startup - _dt = datetime.now() + timedelta(hours=1) - event.track_time_change( - hass, lambda _: check_newest_version(hass, huuid), + _dt = dt_util.utcnow() + timedelta(hours=1) + event.async_track_utc_time_change( + hass, check_new_version, hour=_dt.hour, minute=_dt.minute, second=_dt.second) return True -def check_newest_version(hass, huuid): - """Check if a new version is available and report if one is.""" - result = get_newest_version(huuid) - - if result is None: - return - - newest, releasenotes = result - - if newest is None or 'dev' in CURRENT_VERSION: - return - - if StrictVersion(newest) > StrictVersion(CURRENT_VERSION): - _LOGGER.info("The latest available version is %s", newest) - hass.states.set( - ENTITY_ID, newest, {ATTR_FRIENDLY_NAME: 'Update Available', - ATTR_RELEASE_NOTES: releasenotes} - ) - elif StrictVersion(newest) == StrictVersion(CURRENT_VERSION): - _LOGGER.info("You are on the latest version (%s) of Home Assistant", - newest) - - -def get_newest_version(huuid): - """Get the newest Home Assistant version.""" +@asyncio.coroutine +def get_system_info(hass): + """Return info about the system.""" info_object = { 'arch': platform.machine(), - 'dev': ('dev' in CURRENT_VERSION), + 'dev': 'dev' in CURRENT_VERSION, 'docker': False, 'os_name': platform.system(), 'python_version': platform.python_version(), 'timezone': dt_util.DEFAULT_TIME_ZONE.zone, - 'uuid': huuid, 'version': CURRENT_VERSION, - 'virtualenv': (os.environ.get('VIRTUAL_ENV') is not None), + 'virtualenv': os.environ.get('VIRTUAL_ENV') is not None, } if platform.system() == 'Windows': @@ -130,32 +137,44 @@ def get_newest_version(huuid): info_object['os_version'] = platform.release() elif platform.system() == 'Linux': import distro - linux_dist = distro.linux_distribution(full_distribution_name=False) + linux_dist = yield from hass.async_add_job( + distro.linux_distribution, False) info_object['distribution'] = linux_dist[0] info_object['os_version'] = linux_dist[1] info_object['docker'] = os.path.isfile('/.dockerenv') - if not huuid: + return info_object + + +@asyncio.coroutine +def get_newest_version(hass, huuid): + """Get the newest Home Assistant version.""" + if huuid: + info_object = yield from get_system_info(hass) + info_object['huuid'] = huuid + else: info_object = {} - res = None + session = async_get_clientsession(hass) try: - req = requests.post(UPDATER_URL, json=info_object, timeout=5) - res = req.json() - res = RESPONSE_SCHEMA(res) - + with async_timeout.timeout(5, loop=hass.loop): + req = yield from session.post(UPDATER_URL, json=info_object) _LOGGER.info(("Submitted analytics to Home Assistant servers. " "Information submitted includes %s"), info_object) - return (res['version'], res['release-notes']) - except requests.RequestException: + except (asyncio.TimeoutError, aiohttp.ClientError): _LOGGER.error("Could not contact Home Assistant Update to check " "for updates") return None + try: + res = yield from req.json() except ValueError: - _LOGGER.error("Received invalid response from Home Assistant Update") + _LOGGER.error("Received invalid JSON from Home Assistant Update") return None + try: + res = RESPONSE_SCHEMA(res) + return (res['version'], res['release-notes']) except vol.Invalid: _LOGGER.error('Got unexpected response: %s', res) return None diff --git a/tests/common.py b/tests/common.py index a6627344879..1dc6e9ffdba 100644 --- a/tests/common.py +++ b/tests/common.py @@ -1,9 +1,10 @@ """Test the helper method for writing tests.""" import asyncio +import functools as ft import os import sys from datetime import timedelta -from unittest.mock import patch, MagicMock +from unittest.mock import patch, MagicMock, Mock from io import StringIO import logging import threading @@ -36,6 +37,21 @@ _LOGGER = logging.getLogger(__name__) INST_COUNT = 0 +def threadsafe_callback_factory(func): + """Create threadsafe functions out of callbacks. + + Callback needs to have `hass` as first argument. + """ + @ft.wraps(func) + def threadsafe(*args, **kwargs): + """Call func threadsafe.""" + hass = args[0] + run_callback_threadsafe( + hass.loop, ft.partial(func, *args, **kwargs)).result() + + return threadsafe + + def get_test_config_dir(*add_path): """Return a path to a test config dir.""" return os.path.join(os.path.dirname(__file__), 'testing_config', *add_path) @@ -93,8 +109,8 @@ def async_test_home_assistant(loop): def async_add_job(target, *args): """Add a magic mock.""" - if isinstance(target, MagicMock): - return + if isinstance(target, Mock): + return mock_coro(target()) return orig_async_add_job(target, *args) hass.async_add_job = async_add_job @@ -177,15 +193,16 @@ def async_fire_mqtt_message(hass, topic, payload, qos=0): payload, qos) -def fire_mqtt_message(hass, topic, payload, qos=0): - """Fire the MQTT message.""" - run_callback_threadsafe( - hass.loop, async_fire_mqtt_message, hass, topic, payload, qos).result() +fire_mqtt_message = threadsafe_callback_factory(async_fire_mqtt_message) -def fire_time_changed(hass, time): +@ha.callback +def async_fire_time_changed(hass, time): """Fire a time changes event.""" - hass.bus.fire(EVENT_TIME_CHANGED, {'now': time}) + hass.bus.async_fire(EVENT_TIME_CHANGED, {'now': time}) + + +fire_time_changed = threadsafe_callback_factory(async_fire_time_changed) def fire_service_discovered(hass, service, info): @@ -271,6 +288,7 @@ def mock_mqtt_component(hass): return mock_mqtt +@ha.callback def mock_component(hass, component): """Mock a component is setup.""" if component in hass.config.components: @@ -417,16 +435,11 @@ def patch_yaml_files(files_dict, endswith=True): def mock_coro(return_value=None): """Helper method to return a coro that returns a value.""" - @asyncio.coroutine - def coro(): - """Fake coroutine.""" - return return_value - - return coro() + return mock_coro_func(return_value)() def mock_coro_func(return_value=None): - """Helper method to return a coro that returns a value.""" + """Helper method to create a coro function that returns a value.""" @asyncio.coroutine def coro(*args, **kwargs): """Fake coroutine.""" diff --git a/tests/components/test_discovery.py b/tests/components/test_discovery.py index 7073c420341..d5be9c483ad 100644 --- a/tests/components/test_discovery.py +++ b/tests/components/test_discovery.py @@ -8,7 +8,7 @@ from homeassistant.bootstrap import async_setup_component from homeassistant.components import discovery from homeassistant.util.dt import utcnow -from tests.common import mock_coro, fire_time_changed +from tests.common import mock_coro, async_fire_time_changed # One might consider to "mock" services, but it's easy enough to just use # what is already available. @@ -47,7 +47,7 @@ def mock_discovery(hass, discoveries, config=BASE_CONFIG): return_value=mock_coro()) as mock_discover, \ patch('homeassistant.components.discovery.async_load_platform', return_value=mock_coro()) as mock_platform: - fire_time_changed(hass, utcnow()) + async_fire_time_changed(hass, utcnow()) # Work around an issue where our loop.call_soon not get caught yield from hass.async_block_till_done() yield from hass.async_block_till_done() diff --git a/tests/components/test_updater.py b/tests/components/test_updater.py index da9775e17e6..8cc1c78cdcb 100644 --- a/tests/components/test_updater.py +++ b/tests/components/test_updater.py @@ -1,132 +1,158 @@ """The tests for the Updater component.""" -from datetime import datetime, timedelta -import unittest -from unittest.mock import patch -import os +import asyncio +from datetime import timedelta +from unittest.mock import patch, Mock -import requests -import requests_mock -import voluptuous as vol +from freezegun import freeze_time +import pytest -from homeassistant.setup import setup_component +from homeassistant.setup import async_setup_component from homeassistant.components import updater - -from tests.common import ( - assert_setup_component, fire_time_changed, get_test_home_assistant) +import homeassistant.util.dt as dt_util +from tests.common import async_fire_time_changed, mock_coro NEW_VERSION = '10000.0' - -# We need to use a 'real' looking version number to load the updater component -MOCK_CURRENT_VERSION = '10.0' +MOCK_VERSION = '10.0' +MOCK_DEV_VERSION = '10.0.dev0' +MOCK_HUUID = 'abcdefg' +MOCK_RESPONSE = { + 'version': '0.15', + 'release-notes': 'https://home-assistant.io' +} -class TestUpdater(unittest.TestCase): - """Test the Updater component.""" +@pytest.fixture +def mock_get_newest_version(): + """Fixture to mock get_newest_version.""" + with patch('homeassistant.components.updater.get_newest_version') as mock: + yield mock - hass = None - def setup_method(self, _): - """Setup things to be run when tests are started.""" - self.hass = get_test_home_assistant() +@pytest.fixture +def mock_get_uuid(): + """Fixture to mock get_uuid.""" + with patch('homeassistant.components.updater._load_uuid') as mock: + yield mock - def teardown_method(self, _): - """Stop everything that was started.""" - self.hass.stop() - @patch('homeassistant.components.updater.get_newest_version') - def test_new_version_shows_entity_on_start( # pylint: disable=invalid-name - self, mock_get_newest_version): - """Test if new entity is created if new version is available.""" - mock_get_newest_version.return_value = (NEW_VERSION, '') - updater.CURRENT_VERSION = MOCK_CURRENT_VERSION +@asyncio.coroutine +@freeze_time("Mar 15th, 2017") +def test_new_version_shows_entity_after_hour(hass, mock_get_uuid, + mock_get_newest_version): + """Test if new entity is created if new version is available.""" + mock_get_uuid.return_value = MOCK_HUUID + mock_get_newest_version.return_value = mock_coro((NEW_VERSION, '')) - with assert_setup_component(1) as config: - setup_component(self.hass, updater.DOMAIN, {updater.DOMAIN: {}}) - _dt = datetime.now() + timedelta(hours=1) - assert config['updater'] == {'reporting': True} + res = yield from async_setup_component( + hass, updater.DOMAIN, {updater.DOMAIN: {}}) + assert res, 'Updater failed to setup' - for secs in [-1, 0, 1]: - fire_time_changed(self.hass, _dt + timedelta(seconds=secs)) - self.hass.block_till_done() + with patch('homeassistant.components.updater.CURRENT_VERSION', + MOCK_VERSION): + async_fire_time_changed(hass, dt_util.utcnow() + timedelta(hours=1)) + yield from hass.async_block_till_done() - self.assertTrue(self.hass.states.is_state( - updater.ENTITY_ID, NEW_VERSION)) + assert hass.states.is_state(updater.ENTITY_ID, NEW_VERSION) - @patch('homeassistant.components.updater.get_newest_version') - def test_no_entity_on_same_version( # pylint: disable=invalid-name - self, mock_get_newest_version): - """Test if no entity is created if same version.""" - mock_get_newest_version.return_value = (MOCK_CURRENT_VERSION, '') - updater.CURRENT_VERSION = MOCK_CURRENT_VERSION - with assert_setup_component(1) as config: - assert setup_component( - self.hass, updater.DOMAIN, {updater.DOMAIN: {}}) - _dt = datetime.now() + timedelta(hours=1) - assert config['updater'] == {'reporting': True} +@asyncio.coroutine +@freeze_time("Mar 15th, 2017") +def test_same_version_not_show_entity(hass, mock_get_uuid, + mock_get_newest_version): + """Test if new entity is created if new version is available.""" + mock_get_uuid.return_value = MOCK_HUUID + mock_get_newest_version.return_value = mock_coro((MOCK_VERSION, '')) - self.assertIsNone(self.hass.states.get(updater.ENTITY_ID)) + res = yield from async_setup_component( + hass, updater.DOMAIN, {updater.DOMAIN: {}}) + assert res, 'Updater failed to setup' - mock_get_newest_version.return_value = (NEW_VERSION, '') + with patch('homeassistant.components.updater.CURRENT_VERSION', + MOCK_VERSION): + async_fire_time_changed(hass, dt_util.utcnow() + timedelta(hours=1)) + yield from hass.async_block_till_done() - for secs in [-1, 0, 1]: - fire_time_changed(self.hass, _dt + timedelta(seconds=secs)) - self.hass.block_till_done() + assert hass.states.get(updater.ENTITY_ID) is None - self.assertTrue(self.hass.states.is_state( - updater.ENTITY_ID, NEW_VERSION)) - @patch('homeassistant.components.updater.requests.post') - def test_errors_while_fetching_new_version( # pylint: disable=invalid-name - self, mock_get): - """Test for errors while fetching the new version.""" - mock_get.side_effect = requests.RequestException - uuid = '0000' - self.assertIsNone(updater.get_newest_version(uuid)) +@asyncio.coroutine +@freeze_time("Mar 15th, 2017") +def test_disable_reporting(hass, mock_get_uuid, mock_get_newest_version): + """Test if new entity is created if new version is available.""" + mock_get_uuid.return_value = MOCK_HUUID + mock_get_newest_version.return_value = mock_coro((MOCK_VERSION, '')) - mock_get.side_effect = ValueError - self.assertIsNone(updater.get_newest_version(uuid)) + res = yield from async_setup_component( + hass, updater.DOMAIN, {updater.DOMAIN: { + 'reporting': False + }}) + assert res, 'Updater failed to setup' - mock_get.side_effect = vol.Invalid('Expected dictionary') - self.assertIsNone(updater.get_newest_version(uuid)) + with patch('homeassistant.components.updater.CURRENT_VERSION', + MOCK_VERSION): + async_fire_time_changed(hass, dt_util.utcnow() + timedelta(hours=1)) + yield from hass.async_block_till_done() - def test_uuid_function(self): - """Test if the uuid function works.""" - path = self.hass.config.path(updater.UPDATER_UUID_FILE) - try: - # pylint: disable=protected-access - uuid = updater._load_uuid(self.hass) - assert os.path.isfile(path) - uuid2 = updater._load_uuid(self.hass) - assert uuid == uuid2 - os.remove(path) - uuid2 = updater._load_uuid(self.hass) - assert uuid != uuid2 - finally: - os.remove(path) + assert hass.states.get(updater.ENTITY_ID) is None + call = mock_get_newest_version.mock_calls[0][1] + assert call[0] is hass + assert call[1] is None - @requests_mock.Mocker() - def test_reporting_false_works(self, m): - """Test we do not send any data.""" - m.post(updater.UPDATER_URL, - json={'version': '0.15', - 'release-notes': 'https://home-assistant.io'}) - response = updater.get_newest_version(None) +@asyncio.coroutine +def test_get_newest_version_no_analytics_when_no_huuid(hass, aioclient_mock): + """Test we do not gather analytics when no huuid is passed in.""" + aioclient_mock.post(updater.UPDATER_URL, json=MOCK_RESPONSE) - assert response == ('0.15', 'https://home-assistant.io') + with patch('homeassistant.components.updater.get_system_info', + side_effect=Exception): + res = yield from updater.get_newest_version(hass, None) + assert res == (MOCK_RESPONSE['version'], + MOCK_RESPONSE['release-notes']) - history = m.request_history - assert len(history) == 1 - assert history[0].json() == {} +@asyncio.coroutine +def test_get_newest_version_analytics_when_huuid(hass, aioclient_mock): + """Test we do not gather analytics when no huuid is passed in.""" + aioclient_mock.post(updater.UPDATER_URL, json=MOCK_RESPONSE) - @patch('homeassistant.components.updater.get_newest_version') - def test_error_during_fetch_works( - self, mock_get_newest_version): - """Test if no entity is created if same version.""" - mock_get_newest_version.return_value = None + with patch('homeassistant.components.updater.get_system_info', + Mock(return_value=mock_coro({'fake': 'bla'}))): + res = yield from updater.get_newest_version(hass, MOCK_HUUID) + assert res == (MOCK_RESPONSE['version'], + MOCK_RESPONSE['release-notes']) - updater.check_newest_version(self.hass, None) - self.assertIsNone(self.hass.states.get(updater.ENTITY_ID)) +@asyncio.coroutine +def test_error_fetching_new_version_timeout(hass): + """Test we do not gather analytics when no huuid is passed in.""" + with patch('homeassistant.components.updater.get_system_info', + Mock(return_value=mock_coro({'fake': 'bla'}))), \ + patch('async_timeout.timeout', side_effect=asyncio.TimeoutError): + res = yield from updater.get_newest_version(hass, MOCK_HUUID) + assert res is None + + +@asyncio.coroutine +def test_error_fetching_new_version_bad_json(hass, aioclient_mock): + """Test we do not gather analytics when no huuid is passed in.""" + aioclient_mock.post(updater.UPDATER_URL, text='not json') + + with patch('homeassistant.components.updater.get_system_info', + Mock(return_value=mock_coro({'fake': 'bla'}))): + res = yield from updater.get_newest_version(hass, MOCK_HUUID) + assert res is None + + +@asyncio.coroutine +def test_error_fetching_new_version_invalid_response(hass, aioclient_mock): + """Test we do not gather analytics when no huuid is passed in.""" + aioclient_mock.post(updater.UPDATER_URL, json={ + 'version': '0.15' + # 'release-notes' is missing + }) + + with patch('homeassistant.components.updater.get_system_info', + Mock(return_value=mock_coro({'fake': 'bla'}))): + res = yield from updater.get_newest_version(hass, MOCK_HUUID) + assert res is None From f17c1090e1660b53fc6716221d867fede01558b1 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Tue, 2 May 2017 00:27:50 -0700 Subject: [PATCH 119/169] Remove path whitelisting for hassio (#7399) * Remove path whitelisting for hassio * Update frontend * Lint --- homeassistant/components/frontend/version.py | 8 +- .../frontend/www_static/frontend.html | 2 +- .../frontend/www_static/frontend.html.gz | Bin 140445 -> 140429 bytes .../www_static/home-assistant-polymer | 2 +- .../www_static/panels/ha-panel-config.html | 2 +- .../www_static/panels/ha-panel-config.html.gz | Bin 17286 -> 17328 bytes .../www_static/panels/ha-panel-hassio.html | 173 +----------------- .../www_static/panels/ha-panel-hassio.html.gz | Bin 9012 -> 7449 bytes .../www_static/panels/ha-panel-zwave.html | 2 +- .../www_static/panels/ha-panel-zwave.html.gz | Bin 6092 -> 6135 bytes .../frontend/www_static/service_worker.js | 2 +- .../frontend/www_static/service_worker.js.gz | Bin 2516 -> 2518 bytes homeassistant/components/hassio.py | 35 +--- tests/components/test_hassio.py | 95 +--------- 14 files changed, 19 insertions(+), 302 deletions(-) diff --git a/homeassistant/components/frontend/version.py b/homeassistant/components/frontend/version.py index 263c3f7c425..23437de3924 100644 --- a/homeassistant/components/frontend/version.py +++ b/homeassistant/components/frontend/version.py @@ -3,20 +3,20 @@ FINGERPRINTS = { "compatibility.js": "83d9c77748dafa9db49ae77d7f3d8fb0", "core.js": "5d08475f03adb5969bd31855d5ca0cfd", - "frontend.html": "1533f44c55927e814294de757cd7eada", + "frontend.html": "094c2015c8291c767b8933428d92076f", "mdi.html": "1cc8593d3684f7f6f3b3854403216f77", "micromarkdown-js.html": "93b5ec4016f0bba585521cf4d18dec1a", - "panels/ha-panel-config.html": "39f00f769faa63ee61f1fe6fc85d67f7", + "panels/ha-panel-config.html": "59d9eb28758b497a4d9b2428f978b9b1", "panels/ha-panel-dev-event.html": "2db9c218065ef0f61d8d08db8093cad2", "panels/ha-panel-dev-info.html": "61610e015a411cfc84edd2c4d489e71d", "panels/ha-panel-dev-service.html": "415552027cb083badeff5f16080410ed", "panels/ha-panel-dev-state.html": "d70314913b8923d750932367b1099750", "panels/ha-panel-dev-template.html": "567fbf86735e1b891e40c2f4060fec9b", - "panels/ha-panel-hassio.html": "1d954cfe5f47c4be3cf4f6f5db9a83b2", + "panels/ha-panel-hassio.html": "0aa1523357326cb40e2242dce9b2c0d6", "panels/ha-panel-history.html": "89062c48c76206cad1cec14ddbb1cbb1", "panels/ha-panel-iframe.html": "d920f0aa3c903680f2f8795e2255daab", "panels/ha-panel-logbook.html": "6dd6a16f52117318b202e60f98400163", "panels/ha-panel-map.html": "31c592c239636f91e07c7ac232a5ebc4", - "panels/ha-panel-zwave.html": "a81f82b48439da80286798558f414a2e", + "panels/ha-panel-zwave.html": "84fb45638d2a69bac343246a687f647c", "websocket_test.html": "575de64b431fe11c3785bf96d7813450" } diff --git a/homeassistant/components/frontend/www_static/frontend.html b/homeassistant/components/frontend/www_static/frontend.html index 827325cb058..fa6cbcd1717 100644 --- a/homeassistant/components/frontend/www_static/frontend.html +++ b/homeassistant/components/frontend/www_static/frontend.html @@ -743,4 +743,4 @@ return performance.now()};else var t=function(){return Date.now()};var e=functio this.hass.callService('media_player', service, serviceData); }, }); -}()); \ No newline at end of file +}()); \ No newline at end of file diff --git a/homeassistant/components/frontend/www_static/frontend.html.gz b/homeassistant/components/frontend/www_static/frontend.html.gz index 46d65a09b0233e69bdc866d60d12bc94408c3127..19aa142bb86d68680bbb714c78dadeac07eaa090 100644 GIT binary patch delta 13367 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

    uaj#4S-V4l(Rzjk< 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 delta 13403 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 diff --git a/homeassistant/components/frontend/www_static/home-assistant-polymer b/homeassistant/components/frontend/www_static/home-assistant-polymer index 863ccb54861..110f152e237 160000 --- a/homeassistant/components/frontend/www_static/home-assistant-polymer +++ b/homeassistant/components/frontend/www_static/home-assistant-polymer @@ -1 +1 @@ -Subproject commit 863ccb548616236faafa3b3393a1f51429bb8afd +Subproject commit 110f152e2371319ff4cf0b6fcc18b10e943cf08d diff --git a/homeassistant/components/frontend/www_static/panels/ha-panel-config.html b/homeassistant/components/frontend/www_static/panels/ha-panel-config.html index 84813853c21..fc00afe012c 100644 --- a/homeassistant/components/frontend/www_static/panels/ha-panel-config.html +++ b/homeassistant/components/frontend/www_static/panels/ha-panel-config.html @@ -1,4 +1,4 @@ - \ No newline at end of file +}); \ No newline at end of file diff --git a/homeassistant/components/frontend/www_static/panels/ha-panel-hassio.html.gz b/homeassistant/components/frontend/www_static/panels/ha-panel-hassio.html.gz index 6254eb394a6fe6509d2dc99c83bb41e00e32c50e..719b9c608f185cedf81b026331d45d7403fd9af8 100644 GIT binary patch literal 7449 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 Xtqjjd+(lW^ReJirf=Iy`a)kf@n+km_ literal 9012 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 af~UU(=2|?GS(lsa=6?XsizgMajsO6yRiu{y diff --git a/homeassistant/components/frontend/www_static/panels/ha-panel-zwave.html b/homeassistant/components/frontend/www_static/panels/ha-panel-zwave.html index 627c7c15035..6af056b0db4 100644 --- a/homeassistant/components/frontend/www_static/panels/ha-panel-zwave.html +++ b/homeassistant/components/frontend/www_static/panels/ha-panel-zwave.html @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/homeassistant/components/frontend/www_static/panels/ha-panel-zwave.html.gz b/homeassistant/components/frontend/www_static/panels/ha-panel-zwave.html.gz index 89c637ad527637b6c4c3927ddf9556a5211043f4..fec3a4f832bf9f5816f13564203a6ced55ac4e5e 100644 GIT binary patch delta 5179 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 pv=n}tsoUm=)x<-^tM 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 diff --git a/homeassistant/components/frontend/www_static/service_worker.js b/homeassistant/components/frontend/www_static/service_worker.js index a1ee58da087..244c0a6b13d 100644 --- a/homeassistant/components/frontend/www_static/service_worker.js +++ b/homeassistant/components/frontend/www_static/service_worker.js @@ -1 +1 @@ -"use strict";function setOfCachedUrls(e){return e.keys().then(function(e){return e.map(function(e){return e.url})}).then(function(e){return new Set(e)})}function notificationEventCallback(e,t){firePushCallback({action:t.action,data:t.notification.data,tag:t.notification.tag,type:e},t.notification.data.jwt)}function firePushCallback(e,t){delete e.data.jwt,0===Object.keys(e.data).length&&e.data.constructor===Object&&delete e.data,fetch("/api/notify.html5/callback",{method:"POST",headers:new Headers({"Content-Type":"application/json",Authorization:"Bearer "+t}),body:JSON.stringify(e)})}var precacheConfig=[["/","39154f75cd31edbe1d4a249039273520"],["/frontend/panels/dev-event-2db9c218065ef0f61d8d08db8093cad2.html","b5b751e49b1bba55f633ae0d7a92677d"],["/frontend/panels/dev-info-61610e015a411cfc84edd2c4d489e71d.html","6568377ee31cbd78fedc003b317f7faf"],["/frontend/panels/dev-service-415552027cb083badeff5f16080410ed.html","a4b1ec9bfa5bc3529af7783ae56cb55c"],["/frontend/panels/dev-state-d70314913b8923d750932367b1099750.html","c61b5b1461959aac106400e122993e9e"],["/frontend/panels/dev-template-567fbf86735e1b891e40c2f4060fec9b.html","d2853ecf45de1dbadf49fe99a7424ef3"],["/frontend/panels/map-31c592c239636f91e07c7ac232a5ebc4.html","182580419ce2c935ae6ec65502b6db96"],["/static/compatibility-83d9c77748dafa9db49ae77d7f3d8fb0.js","5f05c83be2b028d577962f9625904806"],["/static/core-5d08475f03adb5969bd31855d5ca0cfd.js","1cd99ba798bfcff9768c9d2bb2f58a7c"],["/static/frontend-1533f44c55927e814294de757cd7eada.html","4a5d18075e9c90493b51531c3d13d343"],["/static/mdi-d86ee142ae2476f49384bfe866a2885e.html","1a47930d13e98b823c3b00a824449f04"],["static/fonts/roboto/Roboto-Bold.ttf","d329cc8b34667f114a95422aaad1b063"],["static/fonts/roboto/Roboto-Light.ttf","7b5fb88f12bec8143f00e21bc3222124"],["static/fonts/roboto/Roboto-Medium.ttf","fe13e4170719c2fc586501e777bde143"],["static/fonts/roboto/Roboto-Regular.ttf","ac3f799d5bbaf5196fab15ab8de8431c"],["static/icons/favicon-192x192.png","419903b8422586a7e28021bbe9011175"],["static/icons/favicon.ico","04235bda7843ec2fceb1cbe2bc696cf4"],["static/images/card_media_player_bg.png","a34281d1c1835d338a642e90930e61aa"],["static/webcomponents-lite.min.js","32b5a9b7ada86304bec6b43d3f2194f0"]],cacheName="sw-precache-v3--"+(self.registration?self.registration.scope:""),ignoreUrlParametersMatching=[/^utm_/],addDirectoryIndex=function(e,t){var n=new URL(e);return"/"===n.pathname.slice(-1)&&(n.pathname+=t),n.toString()},cleanResponse=function(e){return e.redirected?("body"in e?Promise.resolve(e.body):e.blob()).then(function(t){return new Response(t,{headers:e.headers,status:e.status,statusText:e.statusText})}):Promise.resolve(e)},createCacheKey=function(e,t,n,a){var c=new URL(e);return a&&c.pathname.match(a)||(c.search+=(c.search?"&":"")+encodeURIComponent(t)+"="+encodeURIComponent(n)),c.toString()},isPathWhitelisted=function(e,t){if(0===e.length)return!0;var n=new URL(t).pathname;return e.some(function(e){return n.match(e)})},stripIgnoredUrlParameters=function(e,t){var n=new URL(e);return n.search=n.search.slice(1).split("&").map(function(e){return e.split("=")}).filter(function(e){return t.every(function(t){return!t.test(e[0])})}).map(function(e){return e.join("=")}).join("&"),n.toString()},hashParamName="_sw-precache",urlsToCacheKeys=new Map(precacheConfig.map(function(e){var t=e[0],n=e[1],a=new URL(t,self.location),c=createCacheKey(a,hashParamName,n,!1);return[a.toString(),c]}));self.addEventListener("install",function(e){e.waitUntil(caches.open(cacheName).then(function(e){return setOfCachedUrls(e).then(function(t){return Promise.all(Array.from(urlsToCacheKeys.values()).map(function(n){if(!t.has(n)){var a=new Request(n,{credentials:"same-origin"});return fetch(a).then(function(t){if(!t.ok)throw new Error("Request for "+n+" returned a response with status "+t.status);return cleanResponse(t).then(function(t){return e.put(n,t)})})}}))})}).then(function(){return self.skipWaiting()}))}),self.addEventListener("activate",function(e){var t=new Set(urlsToCacheKeys.values());e.waitUntil(caches.open(cacheName).then(function(e){return e.keys().then(function(n){return Promise.all(n.map(function(n){if(!t.has(n.url))return e.delete(n)}))})}).then(function(){return self.clients.claim()}))}),self.addEventListener("fetch",function(e){if("GET"===e.request.method){var t,n=stripIgnoredUrlParameters(e.request.url,ignoreUrlParametersMatching);t=urlsToCacheKeys.has(n);t||(n=addDirectoryIndex(n,"index.html"),t=urlsToCacheKeys.has(n));!t&&"navigate"===e.request.mode&&isPathWhitelisted(["^((?!(static|api|local|service_worker.js|manifest.json)).)*$"],e.request.url)&&(n=new URL("/",self.location).toString(),t=urlsToCacheKeys.has(n)),t&&e.respondWith(caches.open(cacheName).then(function(e){return e.match(urlsToCacheKeys.get(n)).then(function(e){if(e)return e;throw Error("The cached response that was expected is missing.")})}).catch(function(t){return console.warn('Couldn\'t serve response for "%s" from cache: %O',e.request.url,t),fetch(e.request)}))}}),self.addEventListener("push",function(e){var t;e.data&&(t=e.data.json(),e.waitUntil(self.registration.showNotification(t.title,t).then(function(e){firePushCallback({type:"received",tag:t.tag,data:t.data},t.data.jwt)})))}),self.addEventListener("notificationclick",function(e){var t;notificationEventCallback("clicked",e),e.notification.close(),e.notification.data&&e.notification.data.url&&(t=e.notification.data.url)&&e.waitUntil(clients.matchAll({type:"window"}).then(function(e){var n,a;for(n=0;n=3a8g0Yl&$$K*qro55otF`-D6gzUJE|9clCB}wXt_l|f&Q-{WST3x}^(<*?Do*S4-4|JOAN zX^Q`Ja~IBUz#C{r&bhhud{L|Gi+{X({VK4?spe=!AGAx}j8+XuiyYLTi}~!+CuidL zP7({I8B0J>C94-6|bOdCkigdU}HXxlwdL1QI5Q5S&t-#xaLbWt>H6mOY@SsB}F}NlHQp3FQeP zQp-F6r6QTABxjHjwNaDOG>@|kASP0%EZ3l97{&s3q%+O+X*Df0mxY9JLMWwC7-dp~ zc`Pt4T2oEZFb@+nVXKKJf`DW~b1Gy^BgS=><+vxBNo(m2(qAk1XO z@j2oYgiJOXNFGt^M2BB*G|HG|N~TY5b!sOc12^6g21@glm%Fx|l0L zS;~ZpNlvMvl7~{OUM`V}F~KvI3oW%~S(;0xA|WD8bDqgPxf>6SLzc)0K`Zl!5t(6d za~8)58pfh9OZCPrOs85$n&+WPAx4;`lE#>r3E?Uv3E7jrRK=J`nNt?4IL#Bpb*d5J zIZcu9d!!hBuwW{}2ZtTVz8~EEq0nleOaPw_!rFkYiPcR`CtvV zpd*S%lE+lVan92uLQ_~ALP|K_m3D;*i9Xg*s`(2ZH#g{O1+N<%V>x?hs@z^1a^M*Gl(O{2!$+6L5Z<~FZ{Ju8JFO$zcSL(0W@oj&;eqJf~KD#3^w(;BU zSIumn{qXh$HpFSqYq0-eJFfyPGK&hO2Q9W*aL2?uJ9F=*&u7N-k%83jx}NHKx4tZa zS8t(3C$%s;%BdQRgEa}%6W6hQ*(q@P$(yEL7Oj2V*5xH2;d=K;nAsy? z8x7!GJ&F1uc?3iSw2)kal6M$_))#Dcer&If(!f7!`>$Hx;!`@Y^ltL?n;61DAf z(gOpm>&(m==vVkdFxBrO=XZsptb2Bh_?Ybj*yZ~+A%-83jrTwC9pioZ`PTEMojj~1 z-C^d11yzMU#k|GbDY2XGS_Z)tFU*I^6s6nkpbfBQRqnR@6}R%^Q((*gMwqj}^&yAuHnbo;GXeZ&~{@U;v469BNs z)k_4{J_34dZjQz$Lo)q8kaFToUme9q^-%Eb5#RH+V*8^je)C5hCCkDx0sQ5~@+Yq9 zkh1S5w8Ht@v-eI{jGG=6L4Oh+oQS!7vX;7cYj6t>@d0mYX7{7e1Al6;6;-nXmVkJ{ z9=ScM`oUMl4_m9sAHzZO z%T?Wcg9drkk0q}PZDrXLK4!7^=RYAK+uM0ZNw&4mp4|7V-)=QKxeedgD~&$+)JIIc z{~eHh1H3PP4qb~rT!+DjE$pU!kr)cZ`vr_TmFlh>m<2bZE8dRa`>NwkqoN%l!du)} z;Pg#W1Ap1u)ux;54iup8gI zzmsK+#r5<0(STR0$31|X=4@u09OC&XaE2J literal 2516 zcmV;_2`ly=iwFp{qXAh019N3^c4=c}Uw3bEYh`jSYI6XkSZ#CLxDoy<3a95IYlRRMwlCb**gK)T0jUbMs871?V?z)%g(IwP4q6J%Z>H+;)Bt*#*@8cEQ01OR+lr zV%=8v!TtHAHQbC|fyEj8Y-dZ|*wU0rxQCyvp|;ONRY{>f`4HOR&Xg^@Sa*xv?49V> zUD;?Dgj!gEPy2ErHy2tle>{&mP8+K?4D^yx_gT>RA2%3yIm2+v)Syq z{0Pbp=nb!esDgTK7Z(?sPgPT+C)Ua~?QX%v#eulcfK?0Mn}}68>CL;17Is;&iQ3rU zg?CG^i$-60FP^`8?S%^v8rts4q5Jn??B99Mn%W|k3f+0x6e7O2L@PC>0RvT<|2zbA4Vr%luC5+*|lU&KT zpc4IJ3^OE)i#SCScA7*g2`Da&U{WDcT$nsBa8E2#k}>raO;%VK>pZ3;<%G(DCsgMQ z0ZV9>OA>RAPg^}IBZwVIGr}1cLXkL2;}}Sia87~4c|8`EtIDZjS#G2$GIS^qREKVe zRbtXOi;dgDR+UZ)MnRdBY2*QJ-K5+A=ORy&6bwDB3e(CM(PlhR3FR5h3@V6ol?!}M z1Outktp-vg%;CrtB#KieAOn>#7AG=8B4vXH2T-Xds#&gZAj_(>x8s6puJSxj3oVS` zTBck85+^rQ7e>a>#|{-R6ElTwgG9zjp;?~uEHU`Uc$^|hA1P=N9HeWS<2ov|WIW>% zBcWhSGbLhW^dOfg&AAjgFQie%@H{IN*NK#gVTH)mf!r-ZW5OskX{s24lS4t$gr^#E zmMfiO#EUH~sbCsIC}+SG+R3S8xRfZW3Dq>E2hx|i9P1(jKyd<+G|$jYv`D3aBFjWl z6byEFi!|pnMlpbv7YS8V#<3`pG)33OX)kzdH5%Pb+D10EnY`?O#y>Wdj;u9~95mrd z6_TbI(ut5%aF!;C5JD3fXY^a5ektb*yOEVkW@J$ql1NYp3pL2-gkT&cNkWoun)NH_ za=qLLGl08GNgn4&tHdZ)WGp5~ja(v)({CE~66Whlv>RzcQIm778D=TN2+xd=m~~{K zp-9ms`_f8R7$!zsyTO?7`uf37uro;@@%uJF6+SI=CXee?1c zEQr&gufh6<<-CqC$t-G=9(7o1!5@?0;=+HJzMR=0#15o+)z?%%xDQnYqJ9Y-g4Dt6 zWKY$iADl^`pZcDw%U+4oPhYgnvh3XJuBom8I}Z0QxWeD6k$&*F39|=H*jA-)!@F(! zfU!P|Lg&A=n-~V0=hyJr?&jQsYxS;<>~Onk0jovdUH%hp4=@btPz*S#V;o1~;zB*3 zxO5KkMeyZ|uc8jy6ScUU?S@ai3(vXs5^B|Gc=Ph-XIrx2W-q;&cj`?Y1fe=`LD{`P zg>M%~&kC6X`jO8|7`%v0|$ZR{<@Q(yhhfSaL5vkyO)4us;=DE(@loe_|^`VWhPit>aFzN|rW9YD} ze;2P|w zQq_nl#x2H9h1GQ5GKg+OY2Vbgto(ilU4%KS_IJte{Aud=40kr>w^54f{U6#^+(y`1 zEd57lM%SWRL+6sm0f2QM1?Xmk!9`FH=K$bK`1jiRz7FpYG>!W$Mb%w-9a=ud)5W~3 zz55+ghqH}1Vdo&f`4rei+uZay>Zi7C5Vehlk!jrFq`vejc!W27!9e( z9bqWpmK{aMQG( zpvAuG%Tm;(akAVAAEP+<^PjLGJJ@;OlI(JyJGmcbzx`}>b{nB}R~kd`>9-hq|2rXv z0{B?|9QqP{ybhfYJK9Z$B(X^luNN@tRqBUyU>CxUZbUbN&#S(78kOA$8Q$T>B5$Co z>Mb~t16&i`R4&}w+W-Dpv#xagukY>1;SCQu`h@gd=Z#z{9W1ySefRwPL%cDQY_4>6 z(>?RgQ-8JY7AG>qbhsZv_hBL1+&pzI#=`x?aH0oZG&jHPU32+ZtxH?Ej^Y^R4lq)s1k-Tw=gopgC)761Sv2j74I diff --git a/homeassistant/components/hassio.py b/homeassistant/components/hassio.py index be0424e592c..ed7e13a2969 100644 --- a/homeassistant/components/hassio.py +++ b/homeassistant/components/hassio.py @@ -11,8 +11,7 @@ import re import aiohttp from aiohttp import web -from aiohttp.web_exceptions import ( - HTTPBadGateway, HTTPNotFound, HTTPMethodNotAllowed) +from aiohttp.web_exceptions import HTTPBadGateway from aiohttp.hdrs import CONTENT_TYPE import async_timeout @@ -28,23 +27,6 @@ DEPENDENCIES = ['http'] TIMEOUT = 10 -HASSIO_REST_COMMANDS = { - 'host/shutdown': ['POST'], - 'host/reboot': ['POST'], - 'host/update': ['POST'], - 'host/info': ['GET'], - 'supervisor/info': ['GET'], - 'supervisor/update': ['POST'], - 'supervisor/options': ['POST'], - 'supervisor/reload': ['POST'], - 'supervisor/logs': ['GET'], - 'homeassistant/info': ['GET'], - 'homeassistant/update': ['POST'], - 'homeassistant/logs': ['GET'], - 'network/info': ['GET'], - 'network/options': ['POST'], -} - ADDON_REST_COMMANDS = { 'install': ['POST'], 'uninstall': ['POST'], @@ -166,21 +148,6 @@ class HassIOView(HomeAssistantView): @asyncio.coroutine def _handle(self, request, path): """Route data to hassio.""" - if path.startswith('addons/'): - parts = path.split('/') - - if len(parts) != 3: - raise HTTPNotFound() - - allowed_methods = ADDON_REST_COMMANDS.get(parts[-1]) - else: - allowed_methods = HASSIO_REST_COMMANDS.get(path) - - if allowed_methods is None: - raise HTTPNotFound() - if request.method not in allowed_methods: - raise HTTPMethodNotAllowed(request.method, allowed_methods) - client = yield from self.hassio.command_proxy(path, request) data = yield from client.read() diff --git a/tests/components/test_hassio.py b/tests/components/test_hassio.py index 53c8697b44a..fa89230d3f2 100644 --- a/tests/components/test_hassio.py +++ b/tests/components/test_hassio.py @@ -48,32 +48,13 @@ def test_fail_setup_cannot_connect(hass): @asyncio.coroutine -def test_invalid_path(hassio_client): - """Test requesting invalid path.""" - with patch.dict(ho.HASSIO_REST_COMMANDS, {}, clear=True): - resp = yield from hassio_client.post('/api/hassio/beer') - - assert resp.status == 404 - - -@asyncio.coroutine -def test_invalid_method(hassio_client): - """Test requesting path with invalid method.""" - with patch.dict(ho.HASSIO_REST_COMMANDS, {'beer': ['POST']}): - resp = yield from hassio_client.get('/api/hassio/beer') - - assert resp.status == 405 - - -@asyncio.coroutine -def test_forward_normal_path(hassio_client): +def test_forward_request(hassio_client): """Test fetching normal path.""" response = MagicMock() response.read.return_value = mock_coro('data') - with patch.dict(ho.HASSIO_REST_COMMANDS, {'beer': ['POST']}), \ - patch('homeassistant.components.hassio.HassIO.command_proxy', - Mock(return_value=mock_coro(response))), \ + with patch('homeassistant.components.hassio.HassIO.command_proxy', + Mock(return_value=mock_coro(response))), \ patch('homeassistant.components.hassio._create_response') as mresp: mresp.return_value = 'response' resp = yield from hassio_client.post('/api/hassio/beer') @@ -89,14 +70,13 @@ def test_forward_normal_path(hassio_client): @asyncio.coroutine -def test_forward_normal_log_path(hassio_client): +def test_forward_log_request(hassio_client): """Test fetching normal log path.""" response = MagicMock() response.read.return_value = mock_coro('data') - with patch.dict(ho.HASSIO_REST_COMMANDS, {'beer/logs': ['GET']}), \ - patch('homeassistant.components.hassio.HassIO.command_proxy', - Mock(return_value=mock_coro(response))), \ + with patch('homeassistant.components.hassio.HassIO.command_proxy', + Mock(return_value=mock_coro(response))), \ patch('homeassistant.components.hassio.' '_create_response_log') as mresp: mresp.return_value = 'response' @@ -112,69 +92,6 @@ def test_forward_normal_log_path(hassio_client): assert mresp.mock_calls[0][1] == (response, 'data') -@asyncio.coroutine -def test_forward_addon_path(hassio_client): - """Test fetching addon path.""" - response = MagicMock() - response.read.return_value = mock_coro('data') - - with patch.dict(ho.ADDON_REST_COMMANDS, {'install': ['POST']}), \ - patch('homeassistant.components.hassio.' - 'HassIO.command_proxy') as proxy_command, \ - patch('homeassistant.components.hassio._create_response') as mresp: - proxy_command.return_value = mock_coro(response) - mresp.return_value = 'response' - resp = yield from hassio_client.post('/api/hassio/addons/beer/install') - - # Check we got right response - assert resp.status == 200 - body = yield from resp.text() - assert body == 'response' - - assert proxy_command.mock_calls[0][1][0] == 'addons/beer/install' - - # Check we forwarded command - assert len(mresp.mock_calls) == 1 - assert mresp.mock_calls[0][1] == (response, 'data') - - -@asyncio.coroutine -def test_forward_addon_log_path(hassio_client): - """Test fetching addon log path.""" - response = MagicMock() - response.read.return_value = mock_coro('data') - - with patch.dict(ho.ADDON_REST_COMMANDS, {'logs': ['GET']}), \ - patch('homeassistant.components.hassio.' - 'HassIO.command_proxy') as proxy_command, \ - patch('homeassistant.components.hassio.' - '_create_response_log') as mresp: - proxy_command.return_value = mock_coro(response) - mresp.return_value = 'response' - resp = yield from hassio_client.get('/api/hassio/addons/beer/logs') - - # Check we got right response - assert resp.status == 200 - body = yield from resp.text() - assert body == 'response' - - assert proxy_command.mock_calls[0][1][0] == 'addons/beer/logs' - - # Check we forwarded command - assert len(mresp.mock_calls) == 1 - assert mresp.mock_calls[0][1] == (response, 'data') - - -@asyncio.coroutine -def test_bad_request_when_wrong_addon_url(hassio_client): - """Test we cannot mess with addon url.""" - resp = yield from hassio_client.get('/api/hassio/addons/../../info') - assert resp.status == 404 - - resp = yield from hassio_client.get('/api/hassio/addons/info') - assert resp.status == 404 - - @asyncio.coroutine def test_bad_gateway_when_cannot_find_supervisor(hassio_client): """Test we get a bad gateway error if we can't find supervisor.""" From 350a6fd5fa9fcd32b7c3812e33fe464e0fe747a1 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Tue, 2 May 2017 07:47:02 -0700 Subject: [PATCH 120/169] Lint --- tests/components/test_hassio.py | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/components/test_hassio.py b/tests/components/test_hassio.py index fa89230d3f2..658e78b4523 100644 --- a/tests/components/test_hassio.py +++ b/tests/components/test_hassio.py @@ -5,7 +5,6 @@ from unittest.mock import patch, Mock, MagicMock import pytest -import homeassistant.components.hassio as ho from homeassistant.setup import async_setup_component from tests.common import mock_coro, mock_http_component_app From 752a4b958e7294239848b32f88222f19475c40c5 Mon Sep 17 00:00:00 2001 From: John Mihalic Date: Tue, 2 May 2017 11:38:27 -0400 Subject: [PATCH 121/169] Add Eight sleep component (#7275) * Eight Sleep Implementation * Update coverage * Update hass requirements * Remove unnecessary debug statements * Bump version to fix date error * Address comments * Update requirements --- .coveragerc | 3 + .../components/binary_sensor/eight_sleep.py | 69 +++++ homeassistant/components/eight_sleep.py | 241 ++++++++++++++++ .../components/sensor/eight_sleep.py | 273 ++++++++++++++++++ homeassistant/components/services.yaml | 14 + requirements_all.txt | 3 + 6 files changed, 603 insertions(+) create mode 100644 homeassistant/components/binary_sensor/eight_sleep.py create mode 100644 homeassistant/components/eight_sleep.py create mode 100644 homeassistant/components/sensor/eight_sleep.py diff --git a/.coveragerc b/.coveragerc index 094d2dc193a..e358dbcab75 100644 --- a/.coveragerc +++ b/.coveragerc @@ -158,6 +158,9 @@ omit = homeassistant/components/zha/const.py homeassistant/components/*/zha.py + homeassistant/components/eight_sleep.py + homeassistant/components/*/eight_sleep.py + homeassistant/components/alarm_control_panel/alarmdotcom.py homeassistant/components/alarm_control_panel/concord232.py homeassistant/components/alarm_control_panel/nx584.py diff --git a/homeassistant/components/binary_sensor/eight_sleep.py b/homeassistant/components/binary_sensor/eight_sleep.py new file mode 100644 index 00000000000..08f33997c3f --- /dev/null +++ b/homeassistant/components/binary_sensor/eight_sleep.py @@ -0,0 +1,69 @@ +""" +Support for Eight Sleep binary sensors. + +For more details about this platform, please refer to the documentation at +https://home-assistant.io/components/binary_sensor.eight_sleep/ +""" +import logging +import asyncio + +from homeassistant.components.binary_sensor import BinarySensorDevice +from homeassistant.components.eight_sleep import ( + DATA_EIGHT, EightSleepHeatEntity, CONF_BINARY_SENSORS, NAME_MAP) + +DEPENDENCIES = ['eight_sleep'] + +_LOGGER = logging.getLogger(__name__) + + +@asyncio.coroutine +def async_setup_platform(hass, config, async_add_devices, discovery_info=None): + """Setup the eight sleep binary sensor.""" + if discovery_info is None: + return + + name = 'Eight' + sensors = discovery_info[CONF_BINARY_SENSORS] + eight = hass.data[DATA_EIGHT] + + all_sensors = [] + + for sensor in sensors: + all_sensors.append(EightHeatSensor(name, eight, sensor)) + + async_add_devices(all_sensors, True) + + +class EightHeatSensor(EightSleepHeatEntity, BinarySensorDevice): + """Representation of a eight sleep heat-based sensor.""" + + def __init__(self, name, eight, sensor): + """Initialize the sensor.""" + super().__init__(eight) + + self._sensor = sensor + self._mapped_name = NAME_MAP.get(self._sensor, self._sensor) + self._name = '{} {}'.format(name, self._mapped_name) + self._state = None + + self._side = self._sensor.split('_')[0] + self._userid = self._eight.fetch_userid(self._side) + self._usrobj = self._eight.users[self._userid] + + _LOGGER.debug('Presence Sensor: %s, Side: %s, User: %s', + self._sensor, self._side, self._userid) + + @property + def name(self): + """Return the name of the sensor, if any.""" + return self._name + + @property + def is_on(self): + """Return true if the binary sensor is on.""" + return self._state + + @asyncio.coroutine + def async_update(self): + """Retrieve latest state.""" + self._state = self._usrobj.bed_presence diff --git a/homeassistant/components/eight_sleep.py b/homeassistant/components/eight_sleep.py new file mode 100644 index 00000000000..db718aec05e --- /dev/null +++ b/homeassistant/components/eight_sleep.py @@ -0,0 +1,241 @@ +""" +Support for Eight smart mattress covers and mattresses. + +For more details about this component, please refer to the documentation at +https://home-assistant.io/components/eight_sleep/ +""" +import asyncio +import logging +import os +from datetime import timedelta + +import voluptuous as vol + +from homeassistant.core import callback +from homeassistant.config import load_yaml_config_file +from homeassistant.const import ( + CONF_USERNAME, CONF_PASSWORD, CONF_SENSORS, CONF_BINARY_SENSORS, + ATTR_ENTITY_ID, EVENT_HOMEASSISTANT_STOP) +from homeassistant.helpers import discovery +import homeassistant.helpers.config_validation as cv +from homeassistant.helpers.dispatcher import ( + async_dispatcher_send, async_dispatcher_connect) +from homeassistant.helpers.entity import Entity +from homeassistant.helpers.event import async_track_point_in_utc_time +from homeassistant.util.dt import utcnow + +REQUIREMENTS = ['pyeight==0.0.4'] + +_LOGGER = logging.getLogger(__name__) + +CONF_PARTNER = 'partner' + +DATA_EIGHT = 'eight_sleep' +DEFAULT_PARTNER = False +DOMAIN = 'eight_sleep' + +HEAT_ENTITY = 'heat' +USER_ENTITY = 'user' + +HEAT_SCAN_INTERVAL = timedelta(seconds=60) +USER_SCAN_INTERVAL = timedelta(seconds=300) + +SIGNAL_UPDATE_HEAT = 'eight_heat_update' +SIGNAL_UPDATE_USER = 'eight_user_update' + +NAME_MAP = { + 'left_current_sleep': 'Left Sleep Session', + 'left_last_sleep': 'Left Previous Sleep Session', + 'left_bed_state': 'Left Bed State', + 'left_presence': 'Left Bed Presence', + 'left_bed_temp': 'Left Bed Temperature', + 'left_sleep_stage': 'Left Sleep Stage', + 'right_current_sleep': 'Right Sleep Session', + 'right_last_sleep': 'Right Previous Sleep Session', + 'right_bed_state': 'Right Bed State', + 'right_presence': 'Right Bed Presence', + 'right_bed_temp': 'Right Bed Temperature', + 'right_sleep_stage': 'Right Sleep Stage', + 'room_temp': 'Room Temperature', +} + +SENSORS = ['current_sleep', + 'last_sleep', + 'bed_state', + 'bed_temp', + 'sleep_stage'] + +SERVICE_HEAT_SET = 'heat_set' + +ATTR_TARGET_HEAT = 'target' +ATTR_HEAT_DURATION = 'duration' + +VALID_TARGET_HEAT = vol.All(vol.Coerce(int), vol.Clamp(min=0, max=100)) +VALID_DURATION = vol.All(vol.Coerce(int), vol.Clamp(min=0, max=28800)) + +SERVICE_EIGHT_SCHEMA = vol.Schema({ + ATTR_ENTITY_ID: cv.entity_ids, + ATTR_TARGET_HEAT: VALID_TARGET_HEAT, + ATTR_HEAT_DURATION: VALID_DURATION, + }) + +CONFIG_SCHEMA = vol.Schema({ + DOMAIN: vol.Schema({ + vol.Required(CONF_USERNAME): cv.string, + vol.Required(CONF_PASSWORD): cv.string, + vol.Optional(CONF_PARTNER, default=DEFAULT_PARTNER): cv.boolean, + }), +}, extra=vol.ALLOW_EXTRA) + + +@asyncio.coroutine +def async_setup(hass, config): + """Set up the Eight Sleep component.""" + from pyeight.eight import EightSleep + + conf = config.get(DOMAIN) + user = conf.get(CONF_USERNAME) + password = conf.get(CONF_PASSWORD) + partner = conf.get(CONF_PARTNER) + + if hass.config.time_zone is None: + _LOGGER.error('Timezone is not set in Home Assistant.') + return False + + timezone = hass.config.time_zone + + eight = EightSleep(user, password, timezone, partner, None, hass.loop) + + hass.data[DATA_EIGHT] = eight + + # Authenticate, build sensors + success = yield from eight.start() + if not success: + # Authentication failed, cannot continue + return False + + @asyncio.coroutine + def async_update_heat_data(now): + """Update heat data from eight in HEAT_SCAN_INTERVAL.""" + yield from eight.update_device_data() + async_dispatcher_send(hass, SIGNAL_UPDATE_HEAT) + + async_track_point_in_utc_time( + hass, async_update_heat_data, utcnow() + HEAT_SCAN_INTERVAL) + + @asyncio.coroutine + def async_update_user_data(now): + """Update user data from eight in USER_SCAN_INTERVAL.""" + yield from eight.update_user_data() + async_dispatcher_send(hass, SIGNAL_UPDATE_USER) + + async_track_point_in_utc_time( + hass, async_update_user_data, utcnow() + USER_SCAN_INTERVAL) + + yield from async_update_heat_data(None) + yield from async_update_user_data(None) + + # Load sub components + sensors = [] + binary_sensors = [] + if eight.users: + for user in eight.users: + obj = eight.users[user] + for sensor in SENSORS: + sensors.append('{}_{}'.format(obj.side, sensor)) + binary_sensors.append('{}_presence'.format(obj.side)) + sensors.append('room_temp') + + hass.async_add_job(discovery.async_load_platform( + hass, 'sensor', DOMAIN, { + CONF_SENSORS: sensors, + }, config)) + + hass.async_add_job(discovery.async_load_platform( + hass, 'binary_sensor', DOMAIN, { + CONF_BINARY_SENSORS: binary_sensors, + }, config)) + + descriptions = yield from hass.loop.run_in_executor( + None, load_yaml_config_file, + os.path.join(os.path.dirname(__file__), 'services.yaml')) + + @asyncio.coroutine + def async_service_handler(service): + """Handle eight sleep service calls.""" + params = service.data.copy() + + sensor = params.pop(ATTR_ENTITY_ID, None) + target = params.pop(ATTR_TARGET_HEAT, None) + duration = params.pop(ATTR_HEAT_DURATION, 0) + + for sens in sensor: + side = sens.split('_')[1] + userid = eight.fetch_userid(side) + usrobj = eight.users[userid] + yield from usrobj.set_heating_level(target, duration) + + async_dispatcher_send(hass, SIGNAL_UPDATE_HEAT) + + # Register services + hass.services.async_register( + DOMAIN, SERVICE_HEAT_SET, async_service_handler, + descriptions[DOMAIN].get(SERVICE_HEAT_SET), + schema=SERVICE_EIGHT_SCHEMA) + + @asyncio.coroutine + def stop_eight(event): + """Handle stopping eight api session.""" + yield from eight.stop() + + hass.bus.async_listen_once(EVENT_HOMEASSISTANT_STOP, stop_eight) + + return True + + +class EightSleepUserEntity(Entity): + """The Eight Sleep device entity.""" + + def __init__(self, eight): + """Initialize the data oject.""" + self._eight = eight + + @asyncio.coroutine + def async_added_to_hass(self): + """Register update dispatcher.""" + @callback + def async_eight_user_update(): + """Update callback.""" + self.hass.async_add_job(self.async_update_ha_state(True)) + + async_dispatcher_connect( + self.hass, SIGNAL_UPDATE_USER, async_eight_user_update) + + @property + def should_poll(self): + """Return True if entity has to be polled for state.""" + return False + + +class EightSleepHeatEntity(Entity): + """The Eight Sleep device entity.""" + + def __init__(self, eight): + """Initialize the data oject.""" + self._eight = eight + + @asyncio.coroutine + def async_added_to_hass(self): + """Register update dispatcher.""" + @callback + def async_eight_heat_update(): + """Update callback.""" + self.hass.async_add_job(self.async_update_ha_state(True)) + + async_dispatcher_connect( + self.hass, SIGNAL_UPDATE_HEAT, async_eight_heat_update) + + @property + def should_poll(self): + """Return True if entity has to be polled for state.""" + return False diff --git a/homeassistant/components/sensor/eight_sleep.py b/homeassistant/components/sensor/eight_sleep.py new file mode 100644 index 00000000000..e7d3e240701 --- /dev/null +++ b/homeassistant/components/sensor/eight_sleep.py @@ -0,0 +1,273 @@ +""" +Support for Eight Sleep sensors. + +For more details about this platform, please refer to the documentation at +https://home-assistant.io/components/sensor.eight_sleep/ +""" +import logging +import asyncio + +from homeassistant.components.eight_sleep import ( + DATA_EIGHT, EightSleepHeatEntity, EightSleepUserEntity, + CONF_SENSORS, NAME_MAP) + +DEPENDENCIES = ['eight_sleep'] + +ATTR_ROOM_TEMP = 'Room Temperature' +ATTR_AVG_ROOM_TEMP = 'Average Room Temperature' +ATTR_BED_TEMP = 'Bed Temperature' +ATTR_AVG_BED_TEMP = 'Average Bed Temperature' +ATTR_RESP_RATE = 'Respiratory Rate' +ATTR_AVG_RESP_RATE = 'Average Respiratory Rate' +ATTR_HEART_RATE = 'Heart Rate' +ATTR_AVG_HEART_RATE = 'Average Heart Rate' +ATTR_SLEEP_DUR = 'Time Slept' +ATTR_LIGHT_PERC = 'Light Sleep %' +ATTR_DEEP_PERC = 'Deep Sleep %' +ATTR_TNT = 'Tosses & Turns' +ATTR_SLEEP_STAGE = 'Sleep Stage' +ATTR_TARGET_HEAT = 'Target Heating Level' +ATTR_ACTIVE_HEAT = 'Heating Active' +ATTR_DURATION_HEAT = 'Heating Time Remaining' +ATTR_LAST_SEEN = 'Last In Bed' +ATTR_PROCESSING = 'Processing' +ATTR_SESSION_START = 'Session Start' + +_LOGGER = logging.getLogger(__name__) + + +@asyncio.coroutine +def async_setup_platform(hass, config, async_add_devices, discovery_info=None): + """Setup the eight sleep sensors.""" + if discovery_info is None: + return + + name = 'Eight' + sensors = discovery_info[CONF_SENSORS] + eight = hass.data[DATA_EIGHT] + + if hass.config.units.is_metric: + units = 'si' + else: + units = 'us' + + all_sensors = [] + + for sensor in sensors: + if 'bed_state' in sensor: + all_sensors.append(EightHeatSensor(name, eight, sensor)) + elif 'room_temp' in sensor: + all_sensors.append(EightRoomSensor(name, eight, sensor, units)) + else: + all_sensors.append(EightUserSensor(name, eight, sensor, units)) + + async_add_devices(all_sensors, True) + + +class EightHeatSensor(EightSleepHeatEntity): + """Representation of a eight sleep heat-based sensor.""" + + def __init__(self, name, eight, sensor): + """Initialize the sensor.""" + super().__init__(eight) + + self._sensor = sensor + self._mapped_name = NAME_MAP.get(self._sensor, self._sensor) + self._name = '{} {}'.format(name, self._mapped_name) + self._state = None + + self._side = self._sensor.split('_')[0] + self._userid = self._eight.fetch_userid(self._side) + self._usrobj = self._eight.users[self._userid] + + _LOGGER.debug('Heat Sensor: %s, Side: %s, User: %s', + self._sensor, self._side, self._userid) + + @property + def name(self): + """Return the name of the sensor, if any.""" + return self._name + + @property + def state(self): + """Return the state of the sensor.""" + return self._state + + @property + def unit_of_measurement(self): + """Return the unit the value is expressed in.""" + return '%' + + @asyncio.coroutine + def async_update(self): + """Retrieve latest state.""" + _LOGGER.debug('Updating Heat sensor: %s', self._sensor) + self._state = self._usrobj.heating_level + + @property + def device_state_attributes(self): + """Return device state attributes.""" + state_attr = {ATTR_TARGET_HEAT: self._usrobj.target_heating_level} + state_attr[ATTR_ACTIVE_HEAT] = self._usrobj.now_heating + state_attr[ATTR_DURATION_HEAT] = self._usrobj.heating_remaining + state_attr[ATTR_LAST_SEEN] = self._usrobj.last_seen + + return state_attr + + +class EightUserSensor(EightSleepUserEntity): + """Representation of a eight sleep user-based sensor.""" + + def __init__(self, name, eight, sensor, units): + """Initialize the sensor.""" + super().__init__(eight) + + self._sensor = sensor + self._sensor_root = self._sensor.split('_', 1)[1] + self._mapped_name = NAME_MAP.get(self._sensor, self._sensor) + self._name = '{} {}'.format(name, self._mapped_name) + self._state = None + self._attr = None + self._units = units + + self._side = self._sensor.split('_', 1)[0] + self._userid = self._eight.fetch_userid(self._side) + self._usrobj = self._eight.users[self._userid] + + _LOGGER.debug('User Sensor: %s, Side: %s, User: %s', + self._sensor, self._side, self._userid) + + @property + def name(self): + """Return the name of the sensor, if any.""" + return self._name + + @property + def state(self): + """Return the state of the sensor.""" + return self._state + + @property + def unit_of_measurement(self): + """Return the unit the value is expressed in.""" + if 'current_sleep' in self._sensor or 'last_sleep' in self._sensor: + return 'Score' + elif 'bed_temp' in self._sensor: + if self._units == 'si': + return '°C' + else: + return '°F' + + @property + def icon(self): + """Icon to use in the frontend, if any.""" + if 'bed_temp' in self._sensor: + return 'mdi:thermometer' + + @asyncio.coroutine + def async_update(self): + """Retrieve latest state.""" + _LOGGER.debug('Updating User sensor: %s', self._sensor) + if 'current' in self._sensor: + self._state = self._usrobj.current_sleep_score + self._attr = self._usrobj.current_values + elif 'last' in self._sensor: + self._state = self._usrobj.last_sleep_score + self._attr = self._usrobj.last_values + elif 'bed_temp' in self._sensor: + temp = self._usrobj.current_values['bed_temp'] + if self._units == 'si': + self._state = round(temp, 2) + else: + self._state = round((temp*1.8)+32, 2) + elif 'sleep_stage' in self._sensor: + self._state = self._usrobj.current_values['stage'] + + @property + def device_state_attributes(self): + """Return device state attributes.""" + if self._attr is None: + # Skip attributes if sensor type doesn't support + return None + + state_attr = {ATTR_SESSION_START: self._attr['date']} + state_attr[ATTR_TNT] = self._attr['tnt'] + state_attr[ATTR_PROCESSING] = self._attr['processing'] + + sleep_time = sum(self._attr['breakdown'].values()) - \ + self._attr['breakdown']['awake'] + state_attr[ATTR_SLEEP_DUR] = sleep_time + state_attr[ATTR_LIGHT_PERC] = round(( + self._attr['breakdown']['light'] / sleep_time) * 100, 2) + state_attr[ATTR_DEEP_PERC] = round(( + self._attr['breakdown']['deep'] / sleep_time) * 100, 2) + + if self._units == 'si': + room_temp = round(self._attr['room_temp'], 2) + bed_temp = round(self._attr['bed_temp'], 2) + else: + room_temp = round((self._attr['room_temp']*1.8)+32, 2) + bed_temp = round((self._attr['bed_temp']*1.8)+32, 2) + + if 'current' in self._sensor_root: + state_attr[ATTR_RESP_RATE] = round(self._attr['resp_rate'], 2) + state_attr[ATTR_HEART_RATE] = round(self._attr['heart_rate'], 2) + state_attr[ATTR_SLEEP_STAGE] = self._attr['stage'] + state_attr[ATTR_ROOM_TEMP] = room_temp + state_attr[ATTR_BED_TEMP] = bed_temp + elif 'last' in self._sensor_root: + state_attr[ATTR_AVG_RESP_RATE] = round(self._attr['resp_rate'], 2) + state_attr[ATTR_AVG_HEART_RATE] = round( + self._attr['heart_rate'], 2) + state_attr[ATTR_AVG_ROOM_TEMP] = room_temp + state_attr[ATTR_AVG_BED_TEMP] = bed_temp + + return state_attr + + +class EightRoomSensor(EightSleepUserEntity): + """Representation of a eight sleep room sensor.""" + + def __init__(self, name, eight, sensor, units): + """Initialize the sensor.""" + super().__init__(eight) + + self._sensor = sensor + self._mapped_name = NAME_MAP.get(self._sensor, self._sensor) + self._name = '{} {}'.format(name, self._mapped_name) + self._state = None + self._attr = None + self._units = units + + @property + def name(self): + """Return the name of the sensor, if any.""" + return self._name + + @property + def state(self): + """Return the state of the sensor.""" + return self._state + + @asyncio.coroutine + def async_update(self): + """Retrieve latest state.""" + _LOGGER.debug('Updating Room sensor: %s', self._sensor) + temp = self._eight.room_temperature() + if self._units == 'si': + self._state = round(temp, 2) + else: + self._state = round((temp*1.8)+32, 2) + + @property + def unit_of_measurement(self): + """Return the unit the value is expressed in.""" + if self._units == 'si': + return '°C' + else: + return '°F' + + @property + def icon(self): + """Icon to use in the frontend, if any.""" + return 'mdi:thermometer' diff --git a/homeassistant/components/services.yaml b/homeassistant/components/services.yaml index 6cff6d5f4f4..0807eb617ee 100644 --- a/homeassistant/components/services.yaml +++ b/homeassistant/components/services.yaml @@ -388,3 +388,17 @@ hassio: addon: description: Name of addon. example: 'smb_config' + +eight_sleep: + heat_set: + description: Set heating level for eight sleep. + fields: + entity_id: + description: Entity id of the bed state to adjust. + example: 'sensor.eight_left_bed_state' + target: + description: Target heating level from 0-100. + example: 35 + duration: + description: Duration to heat at the target level in seconds. + example: 3600 diff --git a/requirements_all.txt b/requirements_all.txt index 03bebd8ddaf..5ee8aa61ef5 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -530,6 +530,9 @@ pydroid-ipcam==0.8 # homeassistant.components.sensor.ebox pyebox==0.1.0 +# homeassistant.components.eight_sleep +pyeight==0.0.4 + # homeassistant.components.notify.html5 pyelliptic==1.5.7 From f4f06af0c597d172942c5a42a9a7e3b1e9370778 Mon Sep 17 00:00:00 2001 From: Scott Bradshaw Date: Tue, 2 May 2017 11:46:56 -0400 Subject: [PATCH 122/169] OpenGarage support (#7338) * OpenGarage.io support Cleaned up component and ran lint checking * Fixing lint errors * Added supported_features and device_class * Added timeout to HTTP Requests and other changes based on feedback. * Removed watcher. It provided little value and could cause issues if status was stuck in a state. * Changes based on feedback. Added error checking for invalid device_key. * Lint --- .coveragerc | 1 + homeassistant/components/cover/opengarage.py | 196 +++++++++++++++++++ 2 files changed, 197 insertions(+) create mode 100644 homeassistant/components/cover/opengarage.py diff --git a/.coveragerc b/.coveragerc index e358dbcab75..f9de6c87c43 100644 --- a/.coveragerc +++ b/.coveragerc @@ -192,6 +192,7 @@ omit = homeassistant/components/cover/garadget.py homeassistant/components/cover/homematic.py homeassistant/components/cover/myq.py + homeassistant/components/cover/opengarage.py homeassistant/components/cover/rpi_gpio.py homeassistant/components/cover/scsgate.py homeassistant/components/cover/wink.py diff --git a/homeassistant/components/cover/opengarage.py b/homeassistant/components/cover/opengarage.py new file mode 100644 index 00000000000..316770c395f --- /dev/null +++ b/homeassistant/components/cover/opengarage.py @@ -0,0 +1,196 @@ +""" +Platform for the opengarage.io cover component. + +For more details about this platform, please refer to the documentation +https://home-assistant.io/components/cover.opengarage/ +""" +import logging + +import voluptuous as vol + +import requests + +from homeassistant.components.cover import ( + CoverDevice, PLATFORM_SCHEMA, SUPPORT_OPEN, SUPPORT_CLOSE) +from homeassistant.const import ( + CONF_DEVICE, CONF_NAME, STATE_UNKNOWN, STATE_CLOSED, STATE_OPEN, + CONF_COVERS, CONF_HOST, CONF_PORT) +import homeassistant.helpers.config_validation as cv + +DEFAULT_NAME = 'OpenGarage' +DEFAULT_PORT = 80 + +CONF_DEVICEKEY = "device_key" + +ATTR_SIGNAL_STRENGTH = "wifi_signal" +ATTR_DISTANCE_SENSOR = "distance_sensor" +ATTR_DOOR_STATE = "door_state" + +STATE_OPENING = "opening" +STATE_CLOSING = "closing" +STATE_STOPPED = "stopped" +STATE_OFFLINE = "offline" + +STATES_MAP = { + 0: STATE_CLOSED, + 1: STATE_OPEN +} + + +# Validation of the user's configuration +COVER_SCHEMA = vol.Schema({ + vol.Required(CONF_DEVICEKEY): cv.string, + vol.Required(CONF_HOST): cv.string, + vol.Optional(CONF_PORT, default=DEFAULT_PORT): cv.port, + vol.Optional(CONF_NAME): cv.string +}) + +PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ + vol.Required(CONF_COVERS): vol.Schema({cv.slug: COVER_SCHEMA}), +}) + +_LOGGER = logging.getLogger(__name__) + + +def setup_platform(hass, config, add_devices, discovery_info=None): + """Setup OpenGarage covers.""" + covers = [] + devices = config.get(CONF_COVERS) + + for device_id, device_config in devices.items(): + args = { + CONF_NAME: device_config.get(CONF_NAME), + CONF_HOST: device_config.get(CONF_HOST), + CONF_PORT: device_config.get(CONF_PORT), + "device_id": device_config.get(CONF_DEVICE, device_id), + CONF_DEVICEKEY: device_config.get(CONF_DEVICEKEY) + } + + covers.append(OpenGarageCover(hass, args)) + + add_devices(covers, True) + + +class OpenGarageCover(CoverDevice): + """Representation of a OpenGarage cover.""" + + # pylint: disable=no-self-use + def __init__(self, hass, args): + """Initialize the cover.""" + self.opengarage_url = 'http://{}:{}'.format( + args[CONF_HOST], + args[CONF_PORT]) + self.hass = hass + self._name = args[CONF_NAME] + self.device_id = args['device_id'] + self._devicekey = args[CONF_DEVICEKEY] + self._state = STATE_UNKNOWN + self._state_before_move = None + self.dist = None + self.signal = None + self._available = True + + @property + def name(self): + """Return the name of the cover.""" + return self._name + + @property + def available(self): + """Return True if entity is available.""" + return self._available + + @property + def device_state_attributes(self): + """Return the device state attributes.""" + data = {} + + if self.signal is not None: + data[ATTR_SIGNAL_STRENGTH] = self.signal + + if self.dist is not None: + data[ATTR_DISTANCE_SENSOR] = self.dist + + if self._state is not None: + data[ATTR_DOOR_STATE] = self._state + + return data + + @property + def is_closed(self): + """Return if the cover is closed.""" + if self._state == STATE_UNKNOWN: + return None + else: + return self._state in [STATE_CLOSED, STATE_OPENING] + + def close_cover(self): + """Close the cover.""" + if self._state not in [STATE_CLOSED, STATE_CLOSING]: + self._state_before_move = self._state + self._state = STATE_CLOSING + self._push_button() + + def open_cover(self): + """Open the cover.""" + if self._state not in [STATE_OPEN, STATE_OPENING]: + self._state_before_move = self._state + self._state = STATE_OPENING + self._push_button() + + def update(self): + """Get updated status from API.""" + try: + status = self._get_status() + if self._name is None: + if status["name"] is not None: + self._name = status["name"] + state = STATES_MAP.get(status.get('door'), STATE_UNKNOWN) + if self._state_before_move is not None: + if self._state_before_move != state: + self._state = state + self._state_before_move = None + else: + self._state = state + + _LOGGER.debug("%s status: %s", self._name, self._state) + self.signal = status.get('rssi') + self.dist = status.get('dist') + self._available = True + except (requests.exceptions.RequestException) as ex: + _LOGGER.error('Unable to connect to OpenGarage device: %(reason)s', + dict(reason=ex)) + self._state = STATE_OFFLINE + + def _get_status(self): + """Get latest status.""" + url = '{}/jc'.format(self.opengarage_url) + ret = requests.get(url, timeout=10) + return ret.json() + + def _push_button(self): + """Send commands to API.""" + url = '{}/cc?dkey={}&click=1'.format( + self.opengarage_url, self._devicekey) + try: + response = requests.get(url, timeout=10).json() + if response["result"] == 2: + _LOGGER.error("Unable to control %s: device_key is incorrect.", + self._name) + self._state = self._state_before_move + self._state_before_move = None + except (requests.exceptions.RequestException) as ex: + _LOGGER.error('Unable to connect to OpenGarage device: %(reason)s', + dict(reason=ex)) + self._state = self._state_before_move + self._state_before_move = None + + @property + def device_class(self): + """Return the class of this device, from component DEVICE_CLASSES.""" + return 'garage' + + @property + def supported_features(self): + """Flag supported features.""" + return SUPPORT_OPEN | SUPPORT_CLOSE From 570c5549a97a1cd2e106f07191be43127fe70197 Mon Sep 17 00:00:00 2001 From: Andrey Date: Tue, 2 May 2017 19:15:02 +0300 Subject: [PATCH 123/169] Clean up requirements (#7391) --- homeassistant/components/nuimo_controller.py | 2 +- homeassistant/components/sensor/dht.py | 2 +- homeassistant/components/sensor/thinkingcleaner.py | 4 +--- homeassistant/components/switch/thinkingcleaner.py | 4 +--- requirements_all.txt | 14 +++++++------- 5 files changed, 11 insertions(+), 15 deletions(-) diff --git a/homeassistant/components/nuimo_controller.py b/homeassistant/components/nuimo_controller.py index 68bf050ae43..ffd7a799413 100644 --- a/homeassistant/components/nuimo_controller.py +++ b/homeassistant/components/nuimo_controller.py @@ -15,7 +15,7 @@ from homeassistant.const import (CONF_MAC, CONF_NAME, EVENT_HOMEASSISTANT_STOP) REQUIREMENTS = [ '--only-binary=all ' # avoid compilation of gattlib - 'http://github.com/getSenic/nuimo-linux-python' + 'https://github.com/getSenic/nuimo-linux-python' '/archive/29fc42987f74d8090d0e2382e8f248ff5990b8c9.zip' '#nuimo==1.0.0'] diff --git a/homeassistant/components/sensor/dht.py b/homeassistant/components/sensor/dht.py index 1b4b6c63156..327001e67cd 100644 --- a/homeassistant/components/sensor/dht.py +++ b/homeassistant/components/sensor/dht.py @@ -18,7 +18,7 @@ from homeassistant.util import Throttle from homeassistant.util.temperature import celsius_to_fahrenheit # Update this requirement to upstream as soon as it supports Python 3. -REQUIREMENTS = ['http://github.com/adafruit/Adafruit_Python_DHT/archive/' +REQUIREMENTS = ['https://github.com/adafruit/Adafruit_Python_DHT/archive/' 'da8cddf7fb629c1ef4f046ca44f42523c9cf2d11.zip' '#Adafruit_DHT==1.3.0'] diff --git a/homeassistant/components/sensor/thinkingcleaner.py b/homeassistant/components/sensor/thinkingcleaner.py index 35462466f2a..83cf799e3cd 100644 --- a/homeassistant/components/sensor/thinkingcleaner.py +++ b/homeassistant/components/sensor/thinkingcleaner.py @@ -12,9 +12,7 @@ from homeassistant.helpers.entity import Entity _LOGGER = logging.getLogger(__name__) -REQUIREMENTS = ['https://github.com/TheRealLink/pythinkingcleaner' - '/archive/v0.0.2.zip' - '#pythinkingcleaner==0.0.2'] +REQUIREMENTS = ['pythinkingcleaner==0.0.3'] MIN_TIME_BETWEEN_SCANS = timedelta(seconds=10) MIN_TIME_BETWEEN_FORCED_SCANS = timedelta(milliseconds=100) diff --git a/homeassistant/components/switch/thinkingcleaner.py b/homeassistant/components/switch/thinkingcleaner.py index f577b29d2d5..c088667a044 100644 --- a/homeassistant/components/switch/thinkingcleaner.py +++ b/homeassistant/components/switch/thinkingcleaner.py @@ -15,9 +15,7 @@ from homeassistant.helpers.entity import ToggleEntity _LOGGER = logging.getLogger(__name__) -REQUIREMENTS = ['https://github.com/TheRealLink/pythinkingcleaner' - '/archive/v0.0.2.zip' - '#pythinkingcleaner==0.0.2'] +REQUIREMENTS = ['pythinkingcleaner==0.0.3'] MIN_TIME_BETWEEN_SCANS = timedelta(seconds=10) MIN_TIME_BETWEEN_FORCED_SCANS = timedelta(milliseconds=100) diff --git a/requirements_all.txt b/requirements_all.txt index 5ee8aa61ef5..2af9ff81f51 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -11,7 +11,7 @@ async_timeout==1.2.0 chardet==3.0.2 # homeassistant.components.nuimo_controller ---only-binary=all http://github.com/getSenic/nuimo-linux-python/archive/29fc42987f74d8090d0e2382e8f248ff5990b8c9.zip#nuimo==1.0.0 +--only-binary=all https://github.com/getSenic/nuimo-linux-python/archive/29fc42987f74d8090d0e2382e8f248ff5990b8c9.zip#nuimo==1.0.0 # homeassistant.components.bbb_gpio # Adafruit_BBIO==1.0.0 @@ -245,15 +245,11 @@ hikvision==0.4 # homeassistant.components.binary_sensor.workday holidays==0.8.1 -# homeassistant.components.sensor.dht -# http://github.com/adafruit/Adafruit_Python_DHT/archive/da8cddf7fb629c1ef4f046ca44f42523c9cf2d11.zip#Adafruit_DHT==1.3.0 - # homeassistant.components.switch.dlink https://github.com/LinuxChristian/pyW215/archive/v0.4.zip#pyW215==0.4 -# homeassistant.components.sensor.thinkingcleaner -# homeassistant.components.switch.thinkingcleaner -https://github.com/TheRealLink/pythinkingcleaner/archive/v0.0.2.zip#pythinkingcleaner==0.0.2 +# homeassistant.components.sensor.dht +# https://github.com/adafruit/Adafruit_Python_DHT/archive/da8cddf7fb629c1ef4f046ca44f42523c9cf2d11.zip#Adafruit_DHT==1.3.0 # homeassistant.components.media_player.braviatv https://github.com/aparraga/braviarc/archive/0.3.7.zip#braviarc==0.3.7 @@ -624,6 +620,10 @@ pysma==0.1.3 # homeassistant.components.sensor.snmp pysnmp==4.3.5 +# homeassistant.components.sensor.thinkingcleaner +# homeassistant.components.switch.thinkingcleaner +pythinkingcleaner==0.0.3 + # homeassistant.components.media_player.clementine python-clementine-remote==1.0.1 From 0e0892525916d0e6a3ea3abd10e16d3bebcbadd1 Mon Sep 17 00:00:00 2001 From: amigian74 Date: Tue, 2 May 2017 18:18:34 +0200 Subject: [PATCH 124/169] correct MQTT subscription filter (#7269) * correct MQTT subscription filter * wildcard handling (#) fixed * wildcard handling (#) fixed * added tests for topic subscription like +/something/# * function names changed (line too long) * using raw strings for regular expression import order changed --- homeassistant/components/mqtt/__init__.py | 21 ++++++++---- tests/components/mqtt/test_init.py | 40 +++++++++++++++++++++++ 2 files changed, 55 insertions(+), 6 deletions(-) diff --git a/homeassistant/components/mqtt/__init__.py b/homeassistant/components/mqtt/__init__.py index 458c5952a69..89c003c070c 100644 --- a/homeassistant/components/mqtt/__init__.py +++ b/homeassistant/components/mqtt/__init__.py @@ -10,6 +10,7 @@ import os import socket import time import ssl +import re import requests.certs import voluptuous as vol @@ -639,12 +640,20 @@ def _raise_on_error(result): def _match_topic(subscription, topic): """Test if topic matches subscription.""" + reg_ex_parts = [] + suffix = "" if subscription.endswith('#'): - return (subscription[:-2] == topic or - topic.startswith(subscription[:-1])) - + subscription = subscription[:-2] + suffix = "(.*)" sub_parts = subscription.split('/') - topic_parts = topic.split('/') + for sub_part in sub_parts: + if sub_part == "+": + reg_ex_parts.append(r"([^\/]+)") + else: + reg_ex_parts.append(sub_part) - return (len(sub_parts) == len(topic_parts) and - all(a == b for a, b in zip(sub_parts, topic_parts) if a != '+')) + reg_ex = "^" + (r'\/'.join(reg_ex_parts)) + suffix + "$" + + reg = re.compile(reg_ex) + + return reg.match(topic) is not None diff --git a/tests/components/mqtt/test_init.py b/tests/components/mqtt/test_init.py index 0017674e82f..0ef512edcd6 100644 --- a/tests/components/mqtt/test_init.py +++ b/tests/components/mqtt/test_init.py @@ -209,6 +209,46 @@ class TestMQTT(unittest.TestCase): self.hass.block_till_done() self.assertEqual(0, len(self.calls)) + def test_subscribe_topic_level_wildcard_and_wildcard_root_topic(self): + """Test the subscription of wildcard topics.""" + mqtt.subscribe(self.hass, '+/test-topic/#', self.record_calls) + + fire_mqtt_message(self.hass, 'hi/test-topic', 'test-payload') + + self.hass.block_till_done() + self.assertEqual(1, len(self.calls)) + self.assertEqual('hi/test-topic', self.calls[0][0]) + self.assertEqual('test-payload', self.calls[0][1]) + + def test_subscribe_topic_level_wildcard_and_wildcard_subtree_topic(self): + """Test the subscription of wildcard topics.""" + mqtt.subscribe(self.hass, '+/test-topic/#', self.record_calls) + + fire_mqtt_message(self.hass, 'hi/test-topic/here-iam', 'test-payload') + + self.hass.block_till_done() + self.assertEqual(1, len(self.calls)) + self.assertEqual('hi/test-topic/here-iam', self.calls[0][0]) + self.assertEqual('test-payload', self.calls[0][1]) + + def test_subscribe_topic_level_wildcard_and_wildcard_level_no_match(self): + """Test the subscription of wildcard topics.""" + mqtt.subscribe(self.hass, '+/test-topic/#', self.record_calls) + + fire_mqtt_message(self.hass, 'hi/here-iam/test-topic', 'test-payload') + + self.hass.block_till_done() + self.assertEqual(0, len(self.calls)) + + def test_subscribe_topic_level_wildcard_and_wildcard_no_match(self): + """Test the subscription of wildcard topics.""" + mqtt.subscribe(self.hass, '+/test-topic/#', self.record_calls) + + fire_mqtt_message(self.hass, 'hi/another-test-topic', 'test-payload') + + self.hass.block_till_done() + self.assertEqual(0, len(self.calls)) + def test_subscribe_binary_topic(self): """Test the subscription to a binary topic.""" mqtt.subscribe(self.hass, 'test-topic', self.record_calls, From a4f1f6e724d61a6da51cce17729418e0dd12890c Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Tue, 2 May 2017 18:18:47 +0200 Subject: [PATCH 125/169] Update docstrings (#7374) * Update docstrings * Update docstrings * Update docstrings * Update docstrings * Update docstrings * Update docstrings * Update docstring * Update docstrings * Update docstrings * Fix lint issues * Update docstrings * Revert changes in dict --- .../components/binary_sensor/isy994.py | 2 +- .../components/binary_sensor/netatmo.py | 6 +- homeassistant/components/calendar/google.py | 2 +- homeassistant/components/camera/netatmo.py | 2 +- homeassistant/components/climate/__init__.py | 2 +- .../components/device_tracker/mikrotik.py | 10 +- homeassistant/components/fan/isy994.py | 2 +- homeassistant/components/fan/wink.py | 2 +- homeassistant/components/light/demo.py | 2 +- .../components/light/lifx/__init__.py | 11 +- .../components/light/lifx/effects.py | 20 +-- homeassistant/components/light/lutron.py | 7 +- .../components/light/lutron_caseta.py | 10 +- homeassistant/components/light/mqtt.py | 20 +-- homeassistant/components/light/mqtt_json.py | 12 +- .../components/light/mqtt_template.py | 34 +--- homeassistant/components/light/mysensors.py | 30 ++-- homeassistant/components/light/mystrom.py | 2 +- .../components/light/osramlightify.py | 57 +++---- homeassistant/components/light/piglow.py | 2 +- homeassistant/components/light/qwikswitch.py | 2 +- homeassistant/components/light/rflink.py | 4 +- homeassistant/components/light/rfxtrx.py | 10 +- .../components/light/rpi_gpio_pwm.py | 19 ++- homeassistant/components/light/scsgate.py | 2 +- homeassistant/components/light/sensehat.py | 5 +- homeassistant/components/light/tellduslive.py | 7 +- homeassistant/components/light/tellstick.py | 20 ++- homeassistant/components/light/tikteck.py | 8 +- homeassistant/components/light/tradfri.py | 8 +- homeassistant/components/light/vera.py | 2 +- homeassistant/components/light/wemo.py | 6 +- homeassistant/components/light/wink.py | 4 +- homeassistant/components/light/x10.py | 2 +- homeassistant/components/light/yeelight.py | 34 ++-- .../components/light/yeelightsunflower.py | 2 +- homeassistant/components/light/zha.py | 8 +- homeassistant/components/light/zwave.py | 7 +- homeassistant/components/lock/__init__.py | 10 +- homeassistant/components/lock/demo.py | 2 +- homeassistant/components/lock/isy994.py | 6 +- homeassistant/components/lock/lockitron.py | 22 +-- homeassistant/components/lock/mqtt.py | 11 +- homeassistant/components/lock/nuki.py | 6 +- homeassistant/components/lock/vera.py | 2 +- homeassistant/components/lock/volvooncall.py | 5 +- homeassistant/components/lock/wink.py | 3 +- homeassistant/components/lock/zwave.py | 52 +++--- .../components/media_player/__init__.py | 6 +- .../components/media_player/anthemav.py | 15 +- .../components/media_player/apple_tv.py | 5 +- .../components/media_player/aquostv.py | 19 +-- .../components/media_player/braviatv.py | 10 +- homeassistant/components/media_player/cast.py | 14 +- .../components/media_player/clementine.py | 14 +- homeassistant/components/media_player/cmus.py | 6 +- homeassistant/components/media_player/demo.py | 2 +- .../components/media_player/denon.py | 14 +- .../components/media_player/denonavr.py | 8 +- .../components/media_player/directv.py | 34 ++-- .../components/media_player/dunehd.py | 8 +- homeassistant/components/media_player/emby.py | 20 +-- .../components/media_player/firetv.py | 12 +- .../components/media_player/gpmdp.py | 6 +- .../components/media_player/gstreamer.py | 2 +- .../components/media_player/hdmi_cec.py | 2 +- .../components/media_player/itunes.py | 2 +- homeassistant/components/media_player/kodi.py | 42 ++--- .../components/media_player/lg_netcast.py | 2 +- .../components/media_player/liveboxplaytv.py | 6 +- .../components/media_player/mpchc.py | 18 +-- homeassistant/components/media_player/mpd.py | 16 +- homeassistant/components/media_player/nad.py | 2 +- .../components/media_player/onkyo.py | 18 +-- .../components/media_player/openhome.py | 5 +- .../media_player/panasonic_viera.py | 2 +- .../components/media_player/pandora.py | 61 ++++--- .../components/media_player/philips_js.py | 2 +- .../components/media_player/pioneer.py | 14 +- homeassistant/components/media_player/plex.py | 42 +++-- homeassistant/components/media_player/roku.py | 9 +- .../components/media_player/russound_rnet.py | 6 +- .../components/media_player/samsungtv.py | 5 +- .../components/media_player/snapcast.py | 6 +- .../components/media_player/sonos.py | 27 ++-- .../components/media_player/soundtouch.py | 17 +- .../components/media_player/spotify.py | 34 ++-- .../components/media_player/squeezebox.py | 6 +- .../components/media_player/universal.py | 33 ++-- homeassistant/components/media_player/vlc.py | 2 +- .../components/media_player/volumio.py | 2 +- .../components/media_player/webostv.py | 6 +- .../components/media_player/yamaha.py | 4 +- homeassistant/components/microsoft_face.py | 2 +- homeassistant/components/modbus.py | 2 +- homeassistant/components/mqtt/__init__.py | 3 +- homeassistant/components/mqtt/discovery.py | 2 +- homeassistant/components/mqtt/server.py | 2 +- homeassistant/components/notify/__init__.py | 4 +- homeassistant/components/notify/apns.py | 39 ++--- homeassistant/components/notify/aws_lambda.py | 9 +- homeassistant/components/notify/aws_sns.py | 2 +- homeassistant/components/notify/aws_sqs.py | 2 +- homeassistant/components/notify/ciscospark.py | 18 +-- .../components/notify/command_line.py | 4 +- homeassistant/components/notify/facebook.py | 6 +- .../components/notify/free_mobile.py | 6 +- homeassistant/components/notify/gntp.py | 2 +- homeassistant/components/notify/group.py | 2 +- homeassistant/components/notify/html5.py | 39 +++-- homeassistant/components/notify/instapush.py | 2 +- homeassistant/components/notify/ios.py | 8 +- .../components/notify/joaoapps_join.py | 12 +- homeassistant/components/notify/kodi.py | 2 +- homeassistant/components/notify/lannouncer.py | 6 +- .../components/notify/llamalab_automate.py | 10 +- homeassistant/components/notify/matrix.py | 2 +- .../components/notify/message_bird.py | 12 +- homeassistant/components/notify/mysensors.py | 4 +- homeassistant/components/notify/nma.py | 3 +- homeassistant/components/notify/pushbullet.py | 7 +- homeassistant/components/notify/pushetta.py | 9 +- homeassistant/components/notify/pushover.py | 9 +- homeassistant/components/notify/rest.py | 4 +- homeassistant/components/notify/sendgrid.py | 2 +- homeassistant/components/notify/slack.py | 15 +- homeassistant/components/notify/smtp.py | 4 +- homeassistant/components/notify/syslog.py | 4 +- homeassistant/components/notify/telstra.py | 6 +- .../components/notify/twilio_call.py | 13 +- homeassistant/components/notify/twilio_sms.py | 8 +- homeassistant/components/notify/twitter.py | 3 +- homeassistant/components/notify/xmpp.py | 6 +- homeassistant/components/recorder/__init__.py | 12 +- homeassistant/components/recorder/models.py | 6 +- homeassistant/components/recorder/util.py | 6 +- homeassistant/components/remote/demo.py | 2 +- homeassistant/components/remote/harmony.py | 2 +- homeassistant/components/scene/__init__.py | 2 +- .../components/scene/homeassistant.py | 2 +- .../scene/hunterdouglas_powerview.py | 9 +- homeassistant/components/scene/lifx_cloud.py | 2 +- homeassistant/components/scene/wink.py | 2 +- homeassistant/components/sensor/__init__.py | 7 +- .../components/sensor/alarmdecoder.py | 10 +- .../components/sensor/android_ip_webcam.py | 2 +- homeassistant/components/sensor/apcupsd.py | 6 +- homeassistant/components/sensor/arduino.py | 2 - homeassistant/components/sensor/arest.py | 2 +- homeassistant/components/sensor/arwn.py | 6 +- homeassistant/components/sensor/bitcoin.py | 3 +- homeassistant/components/sensor/blink.py | 10 +- homeassistant/components/sensor/bloomsky.py | 6 +- homeassistant/components/sensor/bom.py | 10 +- homeassistant/components/sensor/broadlink.py | 2 +- .../components/sensor/coinmarketcap.py | 2 +- .../components/sensor/comed_hourly_pricing.py | 19 ++- .../components/sensor/command_line.py | 12 +- .../components/sensor/crimereports.py | 32 ++-- homeassistant/components/sensor/darksky.py | 13 +- homeassistant/components/sensor/demo.py | 2 +- .../components/sensor/deutsche_bahn.py | 2 +- homeassistant/components/sensor/dht.py | 6 +- homeassistant/components/sensor/dnsip.py | 2 +- homeassistant/components/sensor/dovado.py | 63 ++++---- homeassistant/components/sensor/dsmr.py | 30 ++-- .../components/sensor/dte_energy_bridge.py | 2 +- .../components/sensor/dublin_bus_transport.py | 2 +- homeassistant/components/sensor/dweet.py | 8 +- homeassistant/components/sensor/ebox.py | 13 +- homeassistant/components/sensor/ecobee.py | 2 +- .../sensor/eddystone_temperature.py | 6 +- homeassistant/components/sensor/efergy.py | 8 +- homeassistant/components/sensor/eliqonline.py | 2 +- homeassistant/components/sensor/enocean.py | 4 +- homeassistant/components/sensor/envisalink.py | 5 +- homeassistant/components/sensor/fastdotcom.py | 15 +- homeassistant/components/sensor/fedex.py | 21 +-- homeassistant/components/sensor/fido.py | 63 +++----- homeassistant/components/sensor/fitbit.py | 4 +- homeassistant/components/sensor/fixer.py | 10 +- .../components/sensor/fritzbox_callmonitor.py | 42 ++--- .../components/sensor/fritzbox_netmonitor.py | 24 +-- homeassistant/components/sensor/glances.py | 2 +- .../components/sensor/google_travel_time.py | 13 +- homeassistant/components/sensor/gpsd.py | 6 +- homeassistant/components/sensor/gtfs.py | 6 +- .../components/sensor/haveibeenpwned.py | 11 +- homeassistant/components/sensor/hddtemp.py | 6 +- .../components/sensor/history_stats.py | 13 +- homeassistant/components/sensor/homematic.py | 66 ++++---- homeassistant/components/sensor/hp_ilo.py | 14 +- .../components/sensor/hydroquebec.py | 25 ++- homeassistant/components/sensor/imap.py | 11 +- .../components/sensor/imap_email_content.py | 2 +- homeassistant/components/sensor/influxdb.py | 26 ++- homeassistant/components/sensor/ios.py | 16 +- homeassistant/components/sensor/knx.py | 32 ++-- homeassistant/components/sensor/kwb.py | 3 +- .../components/sensor/linux_battery.py | 2 +- homeassistant/components/sensor/loopenergy.py | 4 +- homeassistant/components/sensor/lyft.py | 4 +- homeassistant/components/sensor/metoffice.py | 29 ++-- homeassistant/components/sensor/mfi.py | 4 +- homeassistant/components/sensor/mhz19.py | 4 +- homeassistant/components/sensor/min_max.py | 2 +- homeassistant/components/sensor/modbus.py | 1 + .../components/sensor/modem_callerid.py | 6 +- .../components/sensor/mold_indicator.py | 15 +- homeassistant/components/sensor/mqtt.py | 8 +- homeassistant/components/sensor/mqtt_room.py | 10 +- homeassistant/components/sensor/mvglive.py | 20 +-- homeassistant/components/sensor/mysensors.py | 2 +- homeassistant/components/sensor/neato.py | 8 +- homeassistant/components/sensor/nest.py | 2 +- homeassistant/components/sensor/netatmo.py | 11 +- homeassistant/components/sensor/netdata.py | 2 +- .../components/sensor/neurio_energy.py | 8 +- homeassistant/components/sensor/nut.py | 16 +- homeassistant/components/sensor/nzbget.py | 4 +- homeassistant/components/sensor/octoprint.py | 36 ++--- homeassistant/components/sensor/ohmconnect.py | 2 +- homeassistant/components/sensor/onewire.py | 19 +-- homeassistant/components/sensor/openevse.py | 1 - homeassistant/components/sensor/opensky.py | 7 +- .../components/sensor/openweathermap.py | 2 +- homeassistant/components/sensor/pi_hole.py | 2 +- homeassistant/components/sensor/plex.py | 2 +- .../components/sensor/pocketcasts.py | 6 +- homeassistant/components/sensor/pushbullet.py | 6 +- homeassistant/components/sensor/qnap.py | 150 +++++++++--------- homeassistant/components/sensor/random.py | 4 +- homeassistant/components/sensor/rest.py | 4 +- homeassistant/components/sensor/rfxtrx.py | 5 +- homeassistant/components/sensor/ring.py | 18 +-- homeassistant/components/sensor/sabnzbd.py | 2 +- homeassistant/components/sensor/sensehat.py | 2 +- homeassistant/components/sensor/sleepiq.py | 2 +- homeassistant/components/sensor/sma.py | 7 +- homeassistant/components/sensor/speedtest.py | 11 +- homeassistant/components/sensor/statistics.py | 2 +- .../components/sensor/steam_online.py | 2 +- .../components/sensor/supervisord.py | 4 +- .../sensor/swiss_hydrological_data.py | 13 +- .../sensor/swiss_public_transport.py | 6 +- .../components/sensor/synologydsm.py | 5 +- homeassistant/components/sensor/tado.py | 2 +- homeassistant/components/sensor/ted5000.py | 4 +- .../components/sensor/tellduslive.py | 3 +- homeassistant/components/sensor/tellstick.py | 2 +- homeassistant/components/sensor/temper.py | 6 +- homeassistant/components/sensor/template.py | 4 +- homeassistant/components/sensor/time_date.py | 2 +- homeassistant/components/sensor/torque.py | 2 +- .../components/sensor/transmission.py | 2 +- homeassistant/components/sensor/twitch.py | 2 +- homeassistant/components/sensor/ups.py | 10 +- homeassistant/components/sensor/usps.py | 10 +- homeassistant/components/sensor/vasttrafik.py | 9 +- homeassistant/components/sensor/vera.py | 2 +- homeassistant/components/sensor/verisure.py | 2 +- .../components/sensor/volvooncall.py | 2 +- .../components/sensor/wunderground.py | 9 +- homeassistant/components/sensor/yr.py | 13 +- homeassistant/components/sensor/yweather.py | 53 +++---- homeassistant/components/sensor/zabbix.py | 71 ++++----- homeassistant/components/sensor/zamg.py | 4 +- homeassistant/components/sensor/zha.py | 11 +- homeassistant/components/sensor/zigbee.py | 2 +- homeassistant/components/sensor/zoneminder.py | 2 +- homeassistant/components/sensor/zwave.py | 4 +- .../components/switch/anel_pwrctrl.py | 2 +- homeassistant/components/switch/broadlink.py | 58 ++++--- homeassistant/components/switch/demo.py | 2 +- .../components/switch/digital_ocean.py | 2 +- homeassistant/components/switch/dlink.py | 2 +- homeassistant/components/switch/enocean.py | 2 +- homeassistant/components/switch/flux.py | 38 +++-- .../components/switch/hikvisioncam.py | 2 +- homeassistant/components/switch/homematic.py | 2 +- homeassistant/components/switch/knx.py | 2 +- .../components/switch/lutron_caseta.py | 10 +- homeassistant/components/switch/mfi.py | 2 +- homeassistant/components/switch/mochad.py | 2 +- homeassistant/components/switch/mysensors.py | 4 +- homeassistant/components/switch/orvibo.py | 2 +- homeassistant/components/switch/rfxtrx.py | 2 +- homeassistant/components/switch/rpi_gpio.py | 2 +- homeassistant/components/switch/scsgate.py | 2 +- .../components/switch/tellduslive.py | 2 +- homeassistant/components/switch/tellstick.py | 2 +- homeassistant/components/switch/template.py | 2 +- .../components/switch/thinkingcleaner.py | 2 +- homeassistant/components/switch/tplink.py | 2 +- .../components/switch/transmission.py | 2 +- homeassistant/components/switch/verisure.py | 2 +- .../components/switch/volvooncall.py | 2 +- homeassistant/components/switch/wemo.py | 2 +- homeassistant/components/switch/wink.py | 2 +- homeassistant/components/switch/zha.py | 2 +- homeassistant/components/switch/zigbee.py | 2 +- .../components/telegram_bot/__init__.py | 4 +- .../components/telegram_bot/polling.py | 8 +- .../components/telegram_bot/webhooks.py | 11 +- homeassistant/components/tts/amazon_polly.py | 2 +- homeassistant/components/tts/demo.py | 2 +- homeassistant/components/tts/marytts.py | 2 +- homeassistant/components/tts/yandextts.py | 2 +- homeassistant/components/weather/__init__.py | 2 +- homeassistant/components/weather/demo.py | 2 +- .../components/weather/openweathermap.py | 2 +- homeassistant/components/zwave/__init__.py | 2 +- homeassistant/helpers/__init__.py | 2 +- homeassistant/helpers/condition.py | 8 +- homeassistant/helpers/config_validation.py | 4 +- homeassistant/helpers/deprecation.py | 5 +- homeassistant/helpers/discovery.py | 4 +- homeassistant/helpers/dispatcher.py | 2 +- homeassistant/helpers/entity.py | 14 +- homeassistant/helpers/entity_component.py | 12 +- homeassistant/helpers/event.py | 8 +- homeassistant/helpers/restore_state.py | 4 +- homeassistant/helpers/script.py | 20 +-- homeassistant/helpers/service.py | 2 +- homeassistant/helpers/state.py | 2 +- homeassistant/helpers/template.py | 16 +- homeassistant/helpers/typing.py | 2 +- homeassistant/scripts/db_migrator.py | 2 +- homeassistant/scripts/influxdb_import.py | 2 +- homeassistant/scripts/influxdb_migrator.py | 2 +- homeassistant/scripts/macos/__init__.py | 2 +- homeassistant/util/__init__.py | 4 +- homeassistant/util/async.py | 8 +- homeassistant/util/logging.py | 2 +- tests/common.py | 26 +-- tests/components/fan/__init__.py | 2 +- tests/test_util/aiohttp.py | 2 +- .../image_processing/test.py | 2 +- .../custom_components/light/test.py | 2 +- .../custom_components/switch/test.py | 2 +- 340 files changed, 1533 insertions(+), 1708 deletions(-) diff --git a/homeassistant/components/binary_sensor/isy994.py b/homeassistant/components/binary_sensor/isy994.py index 2c4b9e0b97f..fd6269e3630 100644 --- a/homeassistant/components/binary_sensor/isy994.py +++ b/homeassistant/components/binary_sensor/isy994.py @@ -26,7 +26,7 @@ STATES = [STATE_OFF, STATE_ON, 'true', 'false'] # pylint: disable=unused-argument def setup_platform(hass, config: ConfigType, add_devices: Callable[[list], None], discovery_info=None): - """Setup the ISY994 binary sensor platform.""" + """Set up the ISY994 binary sensor platform.""" if isy.ISY is None or not isy.ISY.connected: _LOGGER.error("A connection has not been made to the ISY controller") return False diff --git a/homeassistant/components/binary_sensor/netatmo.py b/homeassistant/components/binary_sensor/netatmo.py index e0841e2e286..70887e9391d 100644 --- a/homeassistant/components/binary_sensor/netatmo.py +++ b/homeassistant/components/binary_sensor/netatmo.py @@ -34,8 +34,8 @@ PRESENCE_SENSOR_TYPES = { "Outdoor vehicle": "motion" } TAG_SENSOR_TYPES = { - "Tag Vibration": 'vibration', - "Tag Open": 'opening' + "Tag Vibration": "vibration", + "Tag Open": "opening" } CONF_HOME = 'home' @@ -117,7 +117,7 @@ class NetatmoBinarySensor(BinarySensorDevice): def __init__(self, data, camera_name, module_name, home, timeout, offset, camera_type, sensor): - """Setup for access to the Netatmo camera events.""" + """Set up for access to the Netatmo camera events.""" self._data = data self._camera_name = camera_name self._module_name = module_name diff --git a/homeassistant/components/calendar/google.py b/homeassistant/components/calendar/google.py index 8a2e77d1915..26c2c251afb 100644 --- a/homeassistant/components/calendar/google.py +++ b/homeassistant/components/calendar/google.py @@ -54,7 +54,7 @@ class GoogleCalendarData(object): """Class to utilize calendar service object to get next event.""" def __init__(self, calendar_service, calendar_id, search=None): - """Setup how we are going to search the google calendar.""" + """Set up how we are going to search the google calendar.""" self.calendar_service = calendar_service self.calendar_id = calendar_id self.search = search diff --git a/homeassistant/components/camera/netatmo.py b/homeassistant/components/camera/netatmo.py index ca94db797a9..e5f22cced16 100644 --- a/homeassistant/components/camera/netatmo.py +++ b/homeassistant/components/camera/netatmo.py @@ -55,7 +55,7 @@ class NetatmoCamera(Camera): """Representation of the images published from a Netatmo camera.""" def __init__(self, data, camera_name, home, camera_type, verify_ssl): - """Set up access to the Netatmo camera images.""" + """Set up for access to the Netatmo camera images.""" super(NetatmoCamera, self).__init__() self._data = data self._camera_name = camera_name diff --git a/homeassistant/components/climate/__init__.py b/homeassistant/components/climate/__init__.py index 44cbdc99c04..10b5984500b 100644 --- a/homeassistant/components/climate/__init__.py +++ b/homeassistant/components/climate/__init__.py @@ -208,7 +208,7 @@ def set_swing_mode(hass, swing_mode, entity_id=None): @asyncio.coroutine def async_setup(hass, config): - """Setup climate devices.""" + """Set up climate devices.""" component = EntityComponent(_LOGGER, DOMAIN, hass, SCAN_INTERVAL) yield from component.async_setup(config) diff --git a/homeassistant/components/device_tracker/mikrotik.py b/homeassistant/components/device_tracker/mikrotik.py index 5b28a9eb664..f22b297b78d 100644 --- a/homeassistant/components/device_tracker/mikrotik.py +++ b/homeassistant/components/device_tracker/mikrotik.py @@ -63,10 +63,10 @@ class MikrotikScanner(DeviceScanner): self.success_init = self.connect_to_device() if self.success_init: - _LOGGER.info('Start polling Mikrotik router...') + _LOGGER.info("Start polling Mikrotik router...") self._update_info() else: - _LOGGER.error('Connection to Mikrotik failed.') + _LOGGER.error("Connection to Mikrotik failed") def connect_to_device(self): """Connect to Mikrotik method.""" @@ -83,14 +83,14 @@ class MikrotikScanner(DeviceScanner): routerboard_info = self.client(cmd='/system/routerboard/getall') if routerboard_info: - _LOGGER.info('Connected to Mikrotik %s with ip %s.', + _LOGGER.info("Connected to Mikrotik %s with IP %s", routerboard_info[0].get('model', 'Router'), self.host) self.connected = True except (librouteros.exceptions.TrapError, librouteros.exceptions.ConnectionError) as api_error: - _LOGGER.error('Connection error: %s', api_error) + _LOGGER.error("Connection error: %s", api_error) return self.connected @@ -108,7 +108,7 @@ class MikrotikScanner(DeviceScanner): def _update_info(self): """Retrieve latest information from the Mikrotik box.""" with self.lock: - _LOGGER.info('Loading wireless device from Mikrotik...') + _LOGGER.info("Loading wireless device from Mikrotik...") wireless_clients = self.client( cmd='/interface/wireless/registration-table/getall' diff --git a/homeassistant/components/fan/isy994.py b/homeassistant/components/fan/isy994.py index 4e61a0c209b..8b9236fdb32 100644 --- a/homeassistant/components/fan/isy994.py +++ b/homeassistant/components/fan/isy994.py @@ -35,7 +35,7 @@ STATES = [SPEED_OFF, SPEED_LOW, 'med', SPEED_HIGH] # pylint: disable=unused-argument def setup_platform(hass, config: ConfigType, add_devices: Callable[[list], None], discovery_info=None): - """Setup the ISY994 fan platform.""" + """Set up the ISY994 fan platform.""" if isy.ISY is None or not isy.ISY.connected: _LOGGER.error("A connection has not been made to the ISY controller") return False diff --git a/homeassistant/components/fan/wink.py b/homeassistant/components/fan/wink.py index 98e301f5a48..e8f5d6fd17a 100644 --- a/homeassistant/components/fan/wink.py +++ b/homeassistant/components/fan/wink.py @@ -19,7 +19,7 @@ SPEED_AUTO = 'auto' def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the Wink platform.""" + """Set up the Wink platform.""" import pywink for fan in pywink.get_fans(): diff --git a/homeassistant/components/light/demo.py b/homeassistant/components/light/demo.py index 6482e31fbaa..22ab404a3b2 100644 --- a/homeassistant/components/light/demo.py +++ b/homeassistant/components/light/demo.py @@ -27,7 +27,7 @@ SUPPORT_DEMO = (SUPPORT_BRIGHTNESS | SUPPORT_COLOR_TEMP | SUPPORT_EFFECT | def setup_platform(hass, config, add_devices_callback, discovery_info=None): - """Setup the demo light platform.""" + """Set up the demo light platform.""" add_devices_callback([ DemoLight("Bed Light", False, True, effect_list=LIGHT_EFFECT_LIST, effect=LIGHT_EFFECT_LIST[0]), diff --git a/homeassistant/components/light/lifx/__init__.py b/homeassistant/components/light/lifx/__init__.py index 9a44938308e..e0181f9fef9 100644 --- a/homeassistant/components/light/lifx/__init__.py +++ b/homeassistant/components/light/lifx/__init__.py @@ -56,12 +56,12 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ @asyncio.coroutine def async_setup_platform(hass, config, async_add_devices, discovery_info=None): - """Setup the LIFX platform.""" + """Set up the LIFX platform.""" import aiolifx if sys.platform == 'win32': - _LOGGER.warning('The lifx platform is known to not work on Windows. ' - 'Consider using the lifx_legacy platform instead.') + _LOGGER.warning("The lifx platform is known to not work on Windows. " + "Consider using the lifx_legacy platform instead") server_addr = config.get(CONF_SERVER) @@ -420,9 +420,8 @@ class LIFXLight(Light): self._bri = bri self._kel = kel - red, green, blue = colorsys.hsv_to_rgb(hue / SHORT_MAX, - sat / SHORT_MAX, - bri / SHORT_MAX) + red, green, blue = colorsys.hsv_to_rgb( + hue / SHORT_MAX, sat / SHORT_MAX, bri / SHORT_MAX) red = int(red * BYTE_MAX) green = int(green * BYTE_MAX) diff --git a/homeassistant/components/light/lifx/effects.py b/homeassistant/components/light/lifx/effects.py index e2ba0a73534..0714450a7cd 100644 --- a/homeassistant/components/light/lifx/effects.py +++ b/homeassistant/components/light/lifx/effects.py @@ -40,22 +40,22 @@ LIFX_EFFECT_BREATHE_SCHEMA = LIFX_EFFECT_SCHEMA.extend({ ATTR_COLOR_NAME: cv.string, ATTR_RGB_COLOR: vol.All(vol.ExactSequence((cv.byte, cv.byte, cv.byte)), vol.Coerce(tuple)), - vol.Optional(ATTR_PERIOD, default=1.0): vol.All(vol.Coerce(float), - vol.Range(min=0.05)), - vol.Optional(ATTR_CYCLES, default=1.0): vol.All(vol.Coerce(float), - vol.Range(min=1)), + vol.Optional(ATTR_PERIOD, default=1.0): + vol.All(vol.Coerce(float), vol.Range(min=0.05)), + vol.Optional(ATTR_CYCLES, default=1.0): + vol.All(vol.Coerce(float), vol.Range(min=1)), }) LIFX_EFFECT_PULSE_SCHEMA = LIFX_EFFECT_BREATHE_SCHEMA LIFX_EFFECT_COLORLOOP_SCHEMA = LIFX_EFFECT_SCHEMA.extend({ ATTR_BRIGHTNESS: vol.All(vol.Coerce(int), vol.Clamp(min=0, max=255)), - vol.Optional(ATTR_PERIOD, default=60): vol.All(vol.Coerce(float), - vol.Clamp(min=1)), - vol.Optional(ATTR_CHANGE, default=20): vol.All(vol.Coerce(float), - vol.Clamp(min=0, max=360)), - vol.Optional(ATTR_SPREAD, default=30): vol.All(vol.Coerce(float), - vol.Clamp(min=0, max=360)), + vol.Optional(ATTR_PERIOD, default=60): + vol.All(vol.Coerce(float), vol.Clamp(min=1)), + vol.Optional(ATTR_CHANGE, default=20): + vol.All(vol.Coerce(float), vol.Clamp(min=0, max=360)), + vol.Optional(ATTR_SPREAD, default=30): + vol.All(vol.Coerce(float), vol.Clamp(min=0, max=360)), }) LIFX_EFFECT_STOP_SCHEMA = vol.Schema({ diff --git a/homeassistant/components/light/lutron.py b/homeassistant/components/light/lutron.py index d9dfdbdd8f9..47cadec0f7d 100644 --- a/homeassistant/components/light/lutron.py +++ b/homeassistant/components/light/lutron.py @@ -1,4 +1,9 @@ -"""Support for Lutron lights.""" +""" +Support for Lutron lights. + +For more details about this platform, please refer to the documentation at +https://home-assistant.io/components/light.lutron/ +""" import logging from homeassistant.components.light import ( diff --git a/homeassistant/components/light/lutron_caseta.py b/homeassistant/components/light/lutron_caseta.py index 7b842cd0ff7..8e4e9d7450e 100644 --- a/homeassistant/components/light/lutron_caseta.py +++ b/homeassistant/components/light/lutron_caseta.py @@ -1,4 +1,9 @@ -"""Support for Lutron Caseta lights.""" +""" +Support for Lutron Caseta lights. + +For more details about this platform, please refer to the documentation at +https://home-assistant.io/components/light.lutron_caseta/ +""" import logging from homeassistant.components.light import ( @@ -8,7 +13,6 @@ from homeassistant.components.light.lutron import ( from homeassistant.components.lutron_caseta import ( LUTRON_CASETA_SMARTBRIDGE, LutronCasetaDevice) - _LOGGER = logging.getLogger(__name__) DEPENDENCIES = ['lutron_caseta'] @@ -16,7 +20,7 @@ DEPENDENCIES = ['lutron_caseta'] # pylint: disable=unused-argument def setup_platform(hass, config, add_devices, discovery_info=None): - """Set up Lutron Caseta lights.""" + """Set up the Lutron Caseta lights.""" devs = [] bridge = hass.data[LUTRON_CASETA_SMARTBRIDGE] light_devices = bridge.get_devices_by_types(["WallDimmer", "PlugInDimmer"]) diff --git a/homeassistant/components/light/mqtt.py b/homeassistant/components/light/mqtt.py index 018d7a40639..038cacd300e 100644 --- a/homeassistant/components/light/mqtt.py +++ b/homeassistant/components/light/mqtt.py @@ -92,7 +92,7 @@ PLATFORM_SCHEMA = mqtt.MQTT_RW_PLATFORM_SCHEMA.extend({ @asyncio.coroutine def async_setup_platform(hass, config, async_add_devices, discovery_info=None): - """Add MQTT Light.""" + """Set up a MQTT Light.""" if discovery_info is not None: config = PLATFORM_SCHEMA(discovery_info) @@ -142,7 +142,7 @@ def async_setup_platform(hass, config, async_add_devices, discovery_info=None): class MqttLight(Light): - """MQTT light.""" + """Representation of a MQTT light.""" def __init__(self, name, effect_list, topic, templates, qos, retain, payload, optimistic, brightness_scale, @@ -197,7 +197,7 @@ class MqttLight(Light): @asyncio.coroutine def async_added_to_hass(self): - """Subscribe mqtt events. + """Subscribe to MQTT events. This method is a coroutine. """ @@ -211,7 +211,7 @@ class MqttLight(Light): @callback def state_received(topic, payload, qos): - """A new MQTT message has been received.""" + """Handle new MQTT messages.""" payload = templates[CONF_STATE](payload) if payload == self._payload['on']: self._state = True @@ -226,7 +226,7 @@ class MqttLight(Light): @callback def brightness_received(topic, payload, qos): - """A new MQTT message for the brightness has been received.""" + """Handle new MQTT messages for the brightness.""" device_value = float(templates[CONF_BRIGHTNESS](payload)) percent_bright = device_value / self._brightness_scale self._brightness = int(percent_bright * 255) @@ -244,7 +244,7 @@ class MqttLight(Light): @callback def rgb_received(topic, payload, qos): - """A new MQTT message has been received.""" + """Handle new MQTT messages for RGB.""" self._rgb = [int(val) for val in templates[CONF_RGB](payload).split(',')] self.hass.async_add_job(self.async_update_ha_state()) @@ -261,7 +261,7 @@ class MqttLight(Light): @callback def color_temp_received(topic, payload, qos): - """A new MQTT message for color temp has been received.""" + """Handle new MQTT messages for color temperature.""" self._color_temp = int(templates[CONF_COLOR_TEMP](payload)) self.hass.async_add_job(self.async_update_ha_state()) @@ -277,7 +277,7 @@ class MqttLight(Light): @callback def effect_received(topic, payload, qos): - """A new MQTT message for effect has been received.""" + """Handle new MQTT messages for effect.""" self._effect = templates[CONF_EFFECT](payload) self.hass.async_add_job(self.async_update_ha_state()) @@ -293,7 +293,7 @@ class MqttLight(Light): @callback def white_value_received(topic, payload, qos): - """A new MQTT message for the white value has been received.""" + """Handle new MQTT messages for white value.""" device_value = float(templates[CONF_WHITE_VALUE](payload)) percent_white = device_value / self._white_value_scale self._white_value = int(percent_white * 255) @@ -311,7 +311,7 @@ class MqttLight(Light): @callback def xy_received(topic, payload, qos): - """A new MQTT message has been received.""" + """Handle new MQTT messages for color.""" self._xy = [float(val) for val in templates[CONF_XY](payload).split(',')] self.hass.async_add_job(self.async_update_ha_state()) diff --git a/homeassistant/components/light/mqtt_json.py b/homeassistant/components/light/mqtt_json.py index eaa36992012..4fee1138909 100755 --- a/homeassistant/components/light/mqtt_json.py +++ b/homeassistant/components/light/mqtt_json.py @@ -157,13 +157,13 @@ class MqttJson(Light): @asyncio.coroutine def async_added_to_hass(self): - """Subscribe mqtt events. + """Subscribe to MQTT events. This method is a coroutine. """ @callback def state_received(topic, payload, qos): - """A new MQTT message has been received.""" + """Handle new MQTT messages.""" values = json.loads(payload) if values['state'] == 'ON': @@ -189,7 +189,7 @@ class MqttJson(Light): except KeyError: pass except ValueError: - _LOGGER.warning('Invalid brightness value received') + _LOGGER.warning("Invalid brightness value received") if self._color_temp is not None: try: @@ -197,7 +197,7 @@ class MqttJson(Light): except KeyError: pass except ValueError: - _LOGGER.warning('Invalid color temp value received') + _LOGGER.warning("Invalid color temp value received") if self._effect is not None: try: @@ -205,7 +205,7 @@ class MqttJson(Light): except KeyError: pass except ValueError: - _LOGGER.warning('Invalid effect value received') + _LOGGER.warning("Invalid effect value received") if self._white_value is not None: try: @@ -213,7 +213,7 @@ class MqttJson(Light): except KeyError: pass except ValueError: - _LOGGER.warning('Invalid white value value received') + _LOGGER.warning("Invalid white value value received") if self._xy is not None: try: diff --git a/homeassistant/components/light/mqtt_template.py b/homeassistant/components/light/mqtt_template.py index 422c9c951de..07fd6d45d8c 100755 --- a/homeassistant/components/light/mqtt_template.py +++ b/homeassistant/components/light/mqtt_template.py @@ -104,7 +104,7 @@ class MqttTemplate(Light): def __init__(self, hass, name, effect_list, topics, templates, optimistic, qos, retain): - """Initialize MQTT Template light.""" + """Initialize a MQTT Template light.""" self._name = name self._effect_list = effect_list self._topics = topics @@ -139,21 +139,19 @@ class MqttTemplate(Light): self._rgb = None self._effect = None - # init hass to template for tpl in self._templates.values(): if tpl is not None: tpl.hass = hass @asyncio.coroutine def async_added_to_hass(self): - """Subscribe mqtt events. + """Subscribe to MQTT events. This method is a coroutine. """ @callback def state_received(topic, payload, qos): - """A new MQTT message has been received.""" - # read state + """Handle new MQTT messages.""" state = self._templates[CONF_STATE_TEMPLATE].\ async_render_with_possible_json_value(payload) if state == STATE_ON: @@ -161,9 +159,8 @@ class MqttTemplate(Light): elif state == STATE_OFF: self._state = False else: - _LOGGER.warning('Invalid state value received') + _LOGGER.warning("Invalid state value received") - # read brightness if self._brightness is not None: try: self._brightness = int( @@ -171,9 +168,8 @@ class MqttTemplate(Light): async_render_with_possible_json_value(payload) ) except ValueError: - _LOGGER.warning('Invalid brightness value received') + _LOGGER.warning("Invalid brightness value received") - # read color temperature if self._color_temp is not None: try: self._color_temp = int( @@ -181,9 +177,8 @@ class MqttTemplate(Light): async_render_with_possible_json_value(payload) ) except ValueError: - _LOGGER.warning('Invalid color temperature value received') + _LOGGER.warning("Invalid color temperature value received") - # read color if self._rgb is not None: try: self._rgb[0] = int( @@ -196,9 +191,8 @@ class MqttTemplate(Light): self._templates[CONF_BLUE_TEMPLATE]. async_render_with_possible_json_value(payload)) except ValueError: - _LOGGER.warning('Invalid color value received') + _LOGGER.warning("Invalid color value received") - # read white value if self._white_value is not None: try: self._white_value = int( @@ -208,16 +202,14 @@ class MqttTemplate(Light): except ValueError: _LOGGER.warning('Invalid white value received') - # read effect if self._templates[CONF_EFFECT_TEMPLATE] is not None: effect = self._templates[CONF_EFFECT_TEMPLATE].\ async_render_with_possible_json_value(payload) - # validate effect value if effect in self._effect_list: self._effect = effect else: - _LOGGER.warning('Unsupported effect value received') + _LOGGER.warning("Unsupported effect value received") self.hass.async_add_job(self.async_update_ha_state()) @@ -285,26 +277,22 @@ class MqttTemplate(Light): This method is a coroutine. """ - # state values = {'state': True} if self._optimistic: self._state = True - # brightness if ATTR_BRIGHTNESS in kwargs: values['brightness'] = int(kwargs[ATTR_BRIGHTNESS]) if self._optimistic: self._brightness = kwargs[ATTR_BRIGHTNESS] - # color_temp if ATTR_COLOR_TEMP in kwargs: values['color_temp'] = int(kwargs[ATTR_COLOR_TEMP]) if self._optimistic: self._color_temp = kwargs[ATTR_COLOR_TEMP] - # color if ATTR_RGB_COLOR in kwargs: values['red'] = kwargs[ATTR_RGB_COLOR][0] values['green'] = kwargs[ATTR_RGB_COLOR][1] @@ -313,22 +301,18 @@ class MqttTemplate(Light): if self._optimistic: self._rgb = kwargs[ATTR_RGB_COLOR] - # white value if ATTR_WHITE_VALUE in kwargs: values['white_value'] = int(kwargs[ATTR_WHITE_VALUE]) if self._optimistic: self._white_value = kwargs[ATTR_WHITE_VALUE] - # effect if ATTR_EFFECT in kwargs: values['effect'] = kwargs.get(ATTR_EFFECT) - # flash if ATTR_FLASH in kwargs: values['flash'] = kwargs.get(ATTR_FLASH) - # transition if ATTR_TRANSITION in kwargs: values['transition'] = int(kwargs[ATTR_TRANSITION]) @@ -347,12 +331,10 @@ class MqttTemplate(Light): This method is a coroutine. """ - # state values = {'state': False} if self._optimistic: self._state = False - # transition if ATTR_TRANSITION in kwargs: values['transition'] = int(kwargs[ATTR_TRANSITION]) diff --git a/homeassistant/components/light/mysensors.py b/homeassistant/components/light/mysensors.py index e25067916b2..203119e5e51 100644 --- a/homeassistant/components/light/mysensors.py +++ b/homeassistant/components/light/mysensors.py @@ -4,15 +4,12 @@ Support for MySensors lights. For more details about this platform, please refer to the documentation at https://home-assistant.io/components/light.mysensors/ """ - import logging from homeassistant.components import mysensors -from homeassistant.components.light import (ATTR_BRIGHTNESS, ATTR_RGB_COLOR, - ATTR_WHITE_VALUE, - SUPPORT_BRIGHTNESS, - SUPPORT_RGB_COLOR, - SUPPORT_WHITE_VALUE, Light) +from homeassistant.components.light import ( + ATTR_BRIGHTNESS, ATTR_RGB_COLOR, ATTR_WHITE_VALUE, + SUPPORT_BRIGHTNESS, SUPPORT_RGB_COLOR, SUPPORT_WHITE_VALUE, Light) from homeassistant.const import STATE_OFF, STATE_ON from homeassistant.util.color import rgb_hex_to_rgb_list @@ -25,9 +22,7 @@ SUPPORT_MYSENSORS = (SUPPORT_BRIGHTNESS | SUPPORT_RGB_COLOR | def setup_platform(hass, config, add_devices, discovery_info=None): - """Set up the mysensors platform for sensors.""" - # Only act if loaded via mysensors by discovery event. - # Otherwise gateway is not setup. + """Set up the MySensors platform for lights.""" if discovery_info is None: return @@ -62,10 +57,10 @@ def setup_platform(hass, config, add_devices, discovery_info=None): class MySensorsLight(mysensors.MySensorsDeviceEntity, Light): - """Represent the value of a MySensors Light child node.""" + """Representation of a MySensors Light child node.""" def __init__(self, *args): - """Set up instance attributes.""" + """Initialize a MySensors Light.""" mysensors.MySensorsDeviceEntity.__init__(self, *args) self._state = None self._brightness = None @@ -157,7 +152,7 @@ class MySensorsLight(mysensors.MySensorsDeviceEntity, Light): elif white is not None: rgb.append(white) else: - _LOGGER.error('White value is not updated for RGBW light') + _LOGGER.error("White value is not updated for RGBW light") return hex_color = hex_template % tuple(rgb) if len(rgb) > 3: @@ -206,9 +201,8 @@ class MySensorsLight(mysensors.MySensorsDeviceEntity, Light): set_req = self.gateway.const.SetReq if value_type is None or value is None: _LOGGER.warning( - '%s: value_type %s, value = %s, ' - 'None is not valid argument when setting child value' - '', self._name, value_type, value) + "%s: value_type %s, value = %s, None is not valid argument " + "when setting child value", self._name, value_type, value) return self.gateway.set_child_value( self.node_id, self.child_id, value_type, value) @@ -244,7 +238,7 @@ class MySensorsLight(mysensors.MySensorsDeviceEntity, Light): value = self._values[self.value_type] if len(value) != 6 and len(value) != 8: _LOGGER.error( - 'Wrong value %s for %s', value, set_req(self.value_type).name) + "Wrong value %s for %s", value, set_req(self.value_type).name) return color_list = rgb_hex_to_rgb_list(value) if set_req.V_LIGHT not in self._values and \ @@ -253,7 +247,7 @@ class MySensorsLight(mysensors.MySensorsDeviceEntity, Light): if len(color_list) > 3: if set_req.V_RGBW != self.value_type: _LOGGER.error( - 'Wrong value %s for %s', + "Wrong value %s for %s", value, set_req(self.value_type).name) return self._white = color_list.pop() @@ -265,7 +259,7 @@ class MySensorsLight(mysensors.MySensorsDeviceEntity, Light): child = node.children[self.child_id] for value_type, value in child.values.items(): _LOGGER.debug( - '%s: value_type %s, value = %s', self._name, value_type, value) + "%s: value_type %s, value = %s", self._name, value_type, value) self._values[value_type] = value diff --git a/homeassistant/components/light/mystrom.py b/homeassistant/components/light/mystrom.py index e29535d60e6..2eb7c106bf2 100644 --- a/homeassistant/components/light/mystrom.py +++ b/homeassistant/components/light/mystrom.py @@ -72,7 +72,7 @@ class MyStromLight(Light): @property def brightness(self): - """Brightness of the light.""" + """Return the brightness of the light.""" return self._brightness @property diff --git a/homeassistant/components/light/osramlightify.py b/homeassistant/components/light/osramlightify.py index e93c2092f98..3faeb1a9d71 100644 --- a/homeassistant/components/light/osramlightify.py +++ b/homeassistant/components/light/osramlightify.py @@ -46,13 +46,13 @@ def setup_platform(hass, config, add_devices, discovery_info=None): try: bridge = lightify.Lightify(host) except socket.error as err: - msg = 'Error connecting to bridge: {} due to: {}'.format(host, - str(err)) + msg = "Error connecting to bridge: {} due to: {}".format( + host, str(err)) _LOGGER.exception(msg) return False setup_bridge(bridge, add_devices) else: - _LOGGER.error('No host found in configuration') + _LOGGER.error("No host found in configuration") return False @@ -105,8 +105,8 @@ class OsramLightifyLight(Light): @property def rgb_color(self): - """Last RGB color value set.""" - _LOGGER.debug("rgb_color light state for light: %s is: %s %s %s ", + """Return the last RGB color value set.""" + _LOGGER.debug("rgb_color light state for light: %s is: %s %s %s", self._name, self._rgb[0], self._rgb[1], self._rgb[2]) return self._rgb @@ -117,16 +117,16 @@ class OsramLightifyLight(Light): @property def brightness(self): - """Brightness of this light between 0..255.""" - _LOGGER.debug("brightness for light %s is: %s", - self._name, self._brightness) + """Return the brightness of this light between 0..255.""" + _LOGGER.debug( + "Brightness for light %s is: %s", self._name, self._brightness) return self._brightness @property def is_on(self): """Update Status to True if device is on.""" - _LOGGER.debug("is_on light state for light: %s is: %s", - self._name, self._state) + _LOGGER.debug( + "is_on light state for light: %s is: %s", self._name, self._state) return self._state @property @@ -136,35 +136,31 @@ class OsramLightifyLight(Light): def turn_on(self, **kwargs): """Turn the device on.""" - _LOGGER.debug("turn_on Attempting to turn on light: %s ", - self._name) + _LOGGER.debug("turn_on Attempting to turn on light: %s ", self._name) self._light.set_onoff(1) self._state = self._light.on() if ATTR_TRANSITION in kwargs: transition = int(kwargs[ATTR_TRANSITION] * 10) - _LOGGER.debug("turn_on requested transition time for light:" - " %s is: %s ", - self._name, transition) + _LOGGER.debug("turn_on requested transition time for light: " + "%s is: %s", self._name, transition) else: transition = 0 - _LOGGER.debug("turn_on requested transition time for light:" - " %s is: %s ", - self._name, transition) + _LOGGER.debug("turn_on requested transition time for light: " + "%s is: %s", self._name, transition) if ATTR_RGB_COLOR in kwargs: red, green, blue = kwargs[ATTR_RGB_COLOR] - _LOGGER.debug("turn_on requested ATTR_RGB_COLOR for light:" - " %s is: %s %s %s ", - self._name, red, green, blue) + _LOGGER.debug("turn_on requested ATTR_RGB_COLOR for light: " + "%s is: %s %s %s", self._name, red, green, blue) self._light.set_rgb(red, green, blue, transition) if ATTR_COLOR_TEMP in kwargs: color_t = kwargs[ATTR_COLOR_TEMP] kelvin = int(color_temperature_mired_to_kelvin(color_t)) - _LOGGER.debug("turn_on requested set_temperature for light:" - " %s: %s ", self._name, kelvin) + _LOGGER.debug("turn_on requested set_temperature for light: " + "%s: %s", self._name, kelvin) self._light.set_temperature(kelvin, transition) if ATTR_BRIGHTNESS in kwargs: @@ -182,9 +178,8 @@ class OsramLightifyLight(Light): random.randrange(0, 255), random.randrange(0, 255), transition) - _LOGGER.debug("turn_on requested random effect for light:" - " %s with transition %s ", - self._name, transition) + _LOGGER.debug("turn_on requested random effect for light: " + "%s with transition %s", self._name, transition) self.schedule_update_ha_state() @@ -194,15 +189,13 @@ class OsramLightifyLight(Light): self._name) if ATTR_TRANSITION in kwargs: transition = int(kwargs[ATTR_TRANSITION] * 10) - _LOGGER.debug("turn_off requested transition time for light:" - " %s is: %s ", - self._name, transition) + _LOGGER.debug("turn_off requested transition time for light: " + "%s is: %s", self._name, transition) self._light.set_luminance(0, transition) else: transition = 0 - _LOGGER.debug("turn_off requested transition time for light:" - " %s is: %s ", - self._name, transition) + _LOGGER.debug("turn_off requested transition time for light: " + "%s is: %s ", self._name, transition) self._light.set_onoff(0) self._state = self._light.on() diff --git a/homeassistant/components/light/piglow.py b/homeassistant/components/light/piglow.py index afdda745721..d08776551f8 100644 --- a/homeassistant/components/light/piglow.py +++ b/homeassistant/components/light/piglow.py @@ -59,7 +59,7 @@ class PiglowLight(Light): @property def brightness(self): - """Brightness of the light (an integer in the range 1-255).""" + """Return the brightness of the light.""" return self._brightness @property diff --git a/homeassistant/components/light/qwikswitch.py b/homeassistant/components/light/qwikswitch.py index b5b4378d526..63051d2ea8c 100644 --- a/homeassistant/components/light/qwikswitch.py +++ b/homeassistant/components/light/qwikswitch.py @@ -15,7 +15,7 @@ DEPENDENCIES = ['qwikswitch'] # pylint: disable=unused-argument def setup_platform(hass, config, add_devices, discovery_info=None): - """Add lights from the main Qwikswitch component.""" + """Set up the lights from the main Qwikswitch component.""" if discovery_info is None: _LOGGER.error("Configure Qwikswitch component failed") return False diff --git a/homeassistant/components/light/rflink.py b/homeassistant/components/light/rflink.py index e0b627f1ffa..fb054407dff 100644 --- a/homeassistant/components/light/rflink.py +++ b/homeassistant/components/light/rflink.py @@ -119,7 +119,7 @@ def devices_from_config(domain_config, hass=None): # Register entity (and aliasses) to listen to incoming rflink events - # device id and normal aliasses respond to normal and group command + # Device id and normal aliasses respond to normal and group command hass.data[DATA_ENTITY_LOOKUP][ EVENT_KEY_COMMAND][device_id].append(device) if config[CONF_GROUP]: @@ -188,7 +188,7 @@ class DimmableRflinkLight(SwitchableRflinkDevice, Light): # rflink only support 16 brightness levels self._brightness = int(kwargs[ATTR_BRIGHTNESS] / 17) * 17 - # turn on light at the requested dim level + # Turn on light at the requested dim level yield from self._async_handle_command('dim', self._brightness) @property diff --git a/homeassistant/components/light/rfxtrx.py b/homeassistant/components/light/rfxtrx.py index b3bfc82a26b..9248b0131f1 100644 --- a/homeassistant/components/light/rfxtrx.py +++ b/homeassistant/components/light/rfxtrx.py @@ -27,7 +27,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None): add_devices(lights) def light_update(event): - """Define callback for light updates from the RFXtrx gateway.""" + """Handle light updates from the RFXtrx gateway.""" if not isinstance(event.device, rfxtrxmod.LightingDevice) or \ not event.device.known_to_be_dimmable: return @@ -38,13 +38,13 @@ def setup_platform(hass, config, add_devices, discovery_info=None): rfxtrx.apply_received_command(event) - # Subscribe to main rfxtrx events + # Subscribe to main RFXtrx events if light_update not in rfxtrx.RECEIVED_EVT_SUBSCRIBERS: rfxtrx.RECEIVED_EVT_SUBSCRIBERS.append(light_update) class RfxtrxLight(rfxtrx.RfxtrxDevice, Light): - """Represenation of a RFXtrx light.""" + """Representation of a RFXtrx light.""" @property def brightness(self): @@ -61,8 +61,8 @@ class RfxtrxLight(rfxtrx.RfxtrxDevice, Light): brightness = kwargs.get(ATTR_BRIGHTNESS) if brightness is None: self._brightness = 255 - self._send_command("turn_on") + self._send_command('turn_on') else: self._brightness = brightness _brightness = (brightness * 100 // 255) - self._send_command("dim", _brightness) + self._send_command('dim', _brightness) diff --git a/homeassistant/components/light/rpi_gpio_pwm.py b/homeassistant/components/light/rpi_gpio_pwm.py index 0248ca49dd6..f2d39dea633 100644 --- a/homeassistant/components/light/rpi_gpio_pwm.py +++ b/homeassistant/components/light/rpi_gpio_pwm.py @@ -4,7 +4,6 @@ Support for LED lights that can be controlled using PWM. For more details about this platform, please refer to the documentation at https://home-assistant.io/components/light.pwm/ """ - import logging import voluptuous as vol @@ -55,7 +54,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ def setup_platform(hass, config, add_devices, discovery_info=None): - """Set up the pwm lights.""" + """Set up the PWM LED lights.""" from pwmled.led import SimpleLed from pwmled.led.rgb import RgbLed from pwmled.led.rgbw import RgbwLed @@ -76,7 +75,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None): opt_args['address'] = led_conf[CONF_ADDRESS] driver = Pca9685Driver(pins, **opt_args) else: - _LOGGER.error("Invalid driver type.") + _LOGGER.error("Invalid driver type") return name = led_conf[CONF_NAME] @@ -88,7 +87,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None): elif led_type == CONF_LED_TYPE_RGBW: led = PwmRgbLed(RgbwLed(driver), name) else: - _LOGGER.error("Invalid led type.") + _LOGGER.error("Invalid led type") return leds.append(led) @@ -96,10 +95,10 @@ def setup_platform(hass, config, add_devices, discovery_info=None): class PwmSimpleLed(Light): - """Representation of a simple on-color pwm led.""" + """Representation of a simple one-color PWM LED.""" def __init__(self, led, name): - """Initialize led.""" + """Initialize one-color PWM LED.""" self._led = led self._name = name self._is_on = False @@ -149,7 +148,7 @@ class PwmSimpleLed(Light): self.schedule_update_ha_state() def turn_off(self, **kwargs): - """Turn off a led.""" + """Turn off a LED.""" if self.is_on: if ATTR_TRANSITION in kwargs: transition_time = kwargs[ATTR_TRANSITION] @@ -162,10 +161,10 @@ class PwmSimpleLed(Light): class PwmRgbLed(PwmSimpleLed): - """Representation of a rgb(w) pwm led.""" + """Representation of a RGB(W) PWM LED.""" def __init__(self, led, name): - """Initialize led.""" + """Initialize a RGB(W) PWM LED.""" super().__init__(led, name) self._color = DEFAULT_COLOR @@ -180,7 +179,7 @@ class PwmRgbLed(PwmSimpleLed): return SUPPORT_RGB_LED def turn_on(self, **kwargs): - """Turn on a led.""" + """Turn on a LED.""" if ATTR_RGB_COLOR in kwargs: self._color = kwargs[ATTR_RGB_COLOR] if ATTR_BRIGHTNESS in kwargs: diff --git a/homeassistant/components/light/scsgate.py b/homeassistant/components/light/scsgate.py index 1de2e31af5f..214a2d99449 100644 --- a/homeassistant/components/light/scsgate.py +++ b/homeassistant/components/light/scsgate.py @@ -47,7 +47,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None): class SCSGateLight(Light): - """representation of a SCSGate light.""" + """Representation of a SCSGate light.""" def __init__(self, scs_id, name, logger): """Initialize the light.""" diff --git a/homeassistant/components/light/sensehat.py b/homeassistant/components/light/sensehat.py index 869963d3545..2cf9c4f9b31 100644 --- a/homeassistant/components/light/sensehat.py +++ b/homeassistant/components/light/sensehat.py @@ -58,10 +58,7 @@ class SenseHatLight(Light): @property def brightness(self): - """Read back the brightness of the light. - - Returns integer in the range of 1-255. - """ + """Read back the brightness of the light.""" return self._brightness @property diff --git a/homeassistant/components/light/tellduslive.py b/homeassistant/components/light/tellduslive.py index b2cbd856075..321cfd677b5 100644 --- a/homeassistant/components/light/tellduslive.py +++ b/homeassistant/components/light/tellduslive.py @@ -5,7 +5,6 @@ This platform uses the Telldus Live online service. For more details about this platform, please refer to the documentation at https://home-assistant.io/components/light.tellduslive/ - """ import logging @@ -17,17 +16,17 @@ _LOGGER = logging.getLogger(__name__) def setup_platform(hass, config, add_devices, discovery_info=None): - """Set up lights.""" + """Set up the Tellstick Net lights.""" if discovery_info is None: return add_devices(TelldusLiveLight(hass, light) for light in discovery_info) class TelldusLiveLight(TelldusLiveEntity, Light): - """Representation of a light.""" + """Representation of a Tellstick Net light.""" def __init__(self, hass, device_id): - """Initialize the light.""" + """Initialize the Tellstick Net light.""" super().__init__(hass, device_id) self._last_brightness = self.brightness diff --git a/homeassistant/components/light/tellstick.py b/homeassistant/components/light/tellstick.py index 2c1401e34d8..d2a6dadd9da 100644 --- a/homeassistant/components/light/tellstick.py +++ b/homeassistant/components/light/tellstick.py @@ -6,12 +6,11 @@ https://home-assistant.io/components/light.tellstick/ """ import voluptuous as vol -from homeassistant.components.light import (ATTR_BRIGHTNESS, - SUPPORT_BRIGHTNESS, Light) -from homeassistant.components.tellstick import (DEFAULT_SIGNAL_REPETITIONS, - ATTR_DISCOVER_DEVICES, - ATTR_DISCOVER_CONFIG, - DOMAIN, TellstickDevice) +from homeassistant.components.light import ( + ATTR_BRIGHTNESS, SUPPORT_BRIGHTNESS, Light) +from homeassistant.components.tellstick import ( + DEFAULT_SIGNAL_REPETITIONS, ATTR_DISCOVER_DEVICES, ATTR_DISCOVER_CONFIG, + DOMAIN, TellstickDevice) PLATFORM_SCHEMA = vol.Schema({vol.Required("platform"): DOMAIN}) @@ -20,14 +19,13 @@ SUPPORT_TELLSTICK = SUPPORT_BRIGHTNESS # pylint: disable=unused-argument def setup_platform(hass, config, add_devices, discovery_info=None): - """Set up Tellstick lights.""" + """Set up the Tellstick lights.""" if (discovery_info is None or discovery_info[ATTR_DISCOVER_DEVICES] is None): return - # Allow platform level override, fallback to module config - signal_repetitions = discovery_info.get(ATTR_DISCOVER_CONFIG, - DEFAULT_SIGNAL_REPETITIONS) + signal_repetitions = discovery_info.get( + ATTR_DISCOVER_CONFIG, DEFAULT_SIGNAL_REPETITIONS) add_devices(TellstickLight(tellcore_id, hass.data['tellcore_registry'], signal_repetitions) @@ -38,7 +36,7 @@ class TellstickLight(TellstickDevice, Light): """Representation of a Tellstick light.""" def __init__(self, tellcore_id, tellcore_registry, signal_repetitions): - """Initialize the light.""" + """Initialize the Tellstick light.""" super().__init__(tellcore_id, tellcore_registry, signal_repetitions) self._brightness = 255 diff --git a/homeassistant/components/light/tikteck.py b/homeassistant/components/light/tikteck.py index 7b0222107a2..07d4b63e99a 100644 --- a/homeassistant/components/light/tikteck.py +++ b/homeassistant/components/light/tikteck.py @@ -60,8 +60,8 @@ class TikteckLight(Light): self._rgb = [255, 255, 255] self._state = False self.is_valid = True - self._bulb = tikteck.tikteck(self._address, "Smart Light", - self._password) + self._bulb = tikteck.tikteck( + self._address, "Smart Light", self._password) if self._bulb.connect() is False: self.is_valid = False _LOGGER.error( @@ -99,12 +99,12 @@ class TikteckLight(Light): @property def should_poll(self): - """Don't poll.""" + """Return the polling state.""" return False @property def assumed_state(self): - """We can't read the actual state, so assume it matches.""" + """Return the assumed state.""" return True def set_state(self, red, green, blue, brightness): diff --git a/homeassistant/components/light/tradfri.py b/homeassistant/components/light/tradfri.py index 488cea05494..016771a15ca 100644 --- a/homeassistant/components/light/tradfri.py +++ b/homeassistant/components/light/tradfri.py @@ -59,7 +59,7 @@ class TradfriGroup(Light): @property def brightness(self): - """Brightness of the group lights (an integer in the range 1-255).""" + """Return the brightness of the group lights.""" return self._group.dimmer def turn_off(self, **kwargs): @@ -79,7 +79,7 @@ class TradfriGroup(Light): class Tradfri(Light): - """The platform class required by hass.""" + """The platform class required by Home Asisstant.""" def __init__(self, light): """Initialize a Light.""" @@ -118,7 +118,7 @@ class Tradfri(Light): @property def brightness(self): - """Brightness of the light (an integer in the range 1-255).""" + """Return the brightness of the light.""" return self._light_data.dimmer @property @@ -134,7 +134,7 @@ class Tradfri(Light): if hex_color == self._light_data.hex_color), None) if kelvin is None: _LOGGER.error( - 'unexpected color temperature found for %s: %s', + "Unexpected color temperature found for %s: %s", self.name, self._light_data.hex_color) return return color_util.color_temperature_kelvin_to_mired(kelvin) diff --git a/homeassistant/components/light/vera.py b/homeassistant/components/light/vera.py index 8565cf5a9a4..70432de6644 100644 --- a/homeassistant/components/light/vera.py +++ b/homeassistant/components/light/vera.py @@ -20,7 +20,7 @@ SUPPORT_VERA = SUPPORT_BRIGHTNESS # pylint: disable=unused-argument def setup_platform(hass, config, add_devices, discovery_info=None): - """Set up Vera lights.""" + """Set up the Vera lights.""" add_devices( VeraLight(device, VERA_CONTROLLER) for device in VERA_DEVICES['light']) diff --git a/homeassistant/components/light/wemo.py b/homeassistant/components/light/wemo.py index 71c2e333c9a..620271a1071 100644 --- a/homeassistant/components/light/wemo.py +++ b/homeassistant/components/light/wemo.py @@ -26,7 +26,7 @@ SUPPORT_WEMO = (SUPPORT_BRIGHTNESS | SUPPORT_COLOR_TEMP | SUPPORT_RGB_COLOR | def setup_platform(hass, config, add_devices, discovery_info=None): - """Set up WeMo bridges and register connected lights.""" + """Set up the WeMo bridges and register connected lights.""" import pywemo.discovery as discovery if discovery_info is not None: @@ -64,7 +64,7 @@ class WemoLight(Light): """Representation of a WeMo light.""" def __init__(self, device, update_lights): - """Initialize the light.""" + """Initialize the WeMo light.""" self.light_id = device.name self.device = device self.update_lights = update_lights @@ -97,7 +97,7 @@ class WemoLight(Light): @property def is_on(self): - """Set True if device is on.""" + """Return true if device is on.""" return self.device.state['onoff'] != 0 @property diff --git a/homeassistant/components/light/wink.py b/homeassistant/components/light/wink.py index 9ffc7b5f4c6..82b7c9f4f8c 100644 --- a/homeassistant/components/light/wink.py +++ b/homeassistant/components/light/wink.py @@ -105,8 +105,8 @@ class WinkLight(WinkDevice, Light): state_kwargs['color_xy'] = xyb[0], xyb[1] state_kwargs['brightness'] = xyb[2] elif self.wink.supports_hue_saturation(): - hsv = colorsys.rgb_to_hsv(rgb_color[0], - rgb_color[1], rgb_color[2]) + hsv = colorsys.rgb_to_hsv( + rgb_color[0], rgb_color[1], rgb_color[2]) state_kwargs['color_hue_saturation'] = hsv[0], hsv[1] if color_temp_mired: diff --git a/homeassistant/components/light/x10.py b/homeassistant/components/light/x10.py index 7062665c42b..e782e664801 100644 --- a/homeassistant/components/light/x10.py +++ b/homeassistant/components/light/x10.py @@ -67,7 +67,7 @@ class X10Light(Light): @property def brightness(self): - """Brightness of the light (an integer in the range 1-255).""" + """Return the brightness of the light.""" return self._brightness @property diff --git a/homeassistant/components/light/yeelight.py b/homeassistant/components/light/yeelight.py index 7ba2b3ad4f3..dbb1e4e26ca 100644 --- a/homeassistant/components/light/yeelight.py +++ b/homeassistant/components/light/yeelight.py @@ -26,11 +26,11 @@ REQUIREMENTS = ['yeelight==0.2.2'] _LOGGER = logging.getLogger(__name__) -CONF_TRANSITION = "transition" +CONF_TRANSITION = 'transition' DEFAULT_TRANSITION = 350 -CONF_SAVE_ON_CHANGE = "save_on_change" -CONF_MODE_MUSIC = "use_music_mode" +CONF_SAVE_ON_CHANGE = 'save_on_change' +CONF_MODE_MUSIC = 'use_music_mode' DOMAIN = 'yeelight' @@ -67,14 +67,14 @@ def _cmd(func): def setup_platform(hass, config, add_devices, discovery_info=None): - """Set up Yeelight bulbs.""" + """Set up the Yeelight bulbs.""" lights = [] if discovery_info is not None: _LOGGER.debug("Adding autodetected %s", discovery_info['hostname']) - # not using hostname, as it seems to vary. - name = "yeelight_%s_%s" % (discovery_info["device_type"], - discovery_info["properties"]["mac"]) + # Not using hostname, as it seems to vary. + name = "yeelight_%s_%s" % (discovery_info['device_type'], + discovery_info['properties']['mac']) device = {'name': name, 'ipaddr': discovery_info['host']} lights.append(YeelightLight(device, DEVICE_SCHEMA({}))) @@ -85,14 +85,14 @@ def setup_platform(hass, config, add_devices, discovery_info=None): device = {'name': device_config[CONF_NAME], 'ipaddr': ipaddr} lights.append(YeelightLight(device, device_config)) - add_devices(lights, True) # true to request an update before adding. + add_devices(lights, True) class YeelightLight(Light): """Representation of a Yeelight light.""" def __init__(self, device, config): - """Initialize the light.""" + """Initialize the Yeelight light.""" self.config = config self._name = device['name'] self._ipaddr = device['ipaddr'] @@ -142,8 +142,8 @@ class YeelightLight(Light): return self._brightness def _get_rgb_from_properties(self): - rgb = self._properties.get("rgb", None) - color_mode = self._properties.get("color_mode", None) + rgb = self._properties.get('rgb', None) + color_mode = self._properties.get('color_mode', None) if not rgb or not color_mode: return rgb @@ -151,9 +151,9 @@ class YeelightLight(Light): if color_mode == 2: # color temperature return color_temperature_to_rgb(self.color_temp) if color_mode == 3: # hsv - hue = self._properties.get("hue") - sat = self._properties.get("sat") - val = self._properties.get("bright") + hue = self._properties.get('hue') + sat = self._properties.get('sat') + val = self._properties.get('bright') return colorsys.hsv_to_rgb(hue, sat, val) rgb = int(rgb) @@ -204,13 +204,13 @@ class YeelightLight(Light): if self._bulb_device.bulb_type == yeelight.BulbType.Color: self._supported_features = SUPPORT_YEELIGHT_RGB - self._is_on = self._properties.get("power") == "on" + self._is_on = self._properties.get('power') == 'on' - bright = self._properties.get("bright", None) + bright = self._properties.get('bright', None) if bright: self._brightness = 255 * (int(bright) / 100) - temp_in_k = self._properties.get("ct", None) + temp_in_k = self._properties.get('ct', None) if temp_in_k: self._color_temp = kelvin_to_mired(int(temp_in_k)) diff --git a/homeassistant/components/light/yeelightsunflower.py b/homeassistant/components/light/yeelightsunflower.py index 70df2136716..5f48e3a0a71 100644 --- a/homeassistant/components/light/yeelightsunflower.py +++ b/homeassistant/components/light/yeelightsunflower.py @@ -67,7 +67,7 @@ class SunflowerBulb(Light): @property def brightness(self): - """HA brightness is 0-255; Yeelight Sunflower's brightness is 0-100.""" + """Return the brightness is 0-255; Yeelight's brightness is 0-100.""" return int(self._brightness / 100 * 255) @property diff --git a/homeassistant/components/light/zha.py b/homeassistant/components/light/zha.py index 8959fa9ef0e..0c230877625 100644 --- a/homeassistant/components/light/zha.py +++ b/homeassistant/components/light/zha.py @@ -17,7 +17,7 @@ DEPENDENCIES = ['zha'] @asyncio.coroutine def async_setup_platform(hass, config, async_add_devices, discovery_info=None): - """Set up Zigbee Home Automation lights.""" + """Set up the Zigbee Home Automation lights.""" discovery_info = zha.get_discovery_info(hass, discovery_info) if discovery_info is None: return @@ -33,12 +33,12 @@ def async_setup_platform(hass, config, async_add_devices, discovery_info=None): class Light(zha.Entity, light.Light): - """ZHA or ZLL light.""" + """Representation of a ZHA or ZLL light.""" _domain = light.DOMAIN def __init__(self, **kwargs): - """Initialize ZHA light.""" + """Initialize the ZHA light.""" super().__init__(**kwargs) self._supported_features = 0 self._color_temp = None @@ -61,7 +61,7 @@ class Light(zha.Entity, light.Light): @property def is_on(self) -> bool: - """Return True if entity is on.""" + """Return true if entity is on.""" if self._state == 'unknown': return False return bool(self._state) diff --git a/homeassistant/components/light/zwave.py b/homeassistant/components/light/zwave.py index 81d36b4779b..9488ad38a59 100644 --- a/homeassistant/components/light/zwave.py +++ b/homeassistant/components/light/zwave.py @@ -46,13 +46,12 @@ TEMP_COLD_HASS = (TEMP_COLOR_MAX - TEMP_COLOR_MIN) / 3 + TEMP_COLOR_MIN def get_device(node, values, node_config, **kwargs): - """Create zwave entity device.""" + """Create Z-Wave entity device.""" name = '{}.{}'.format(DOMAIN, zwave.object_id(values.primary)) refresh = node_config.get(zwave.CONF_REFRESH_VALUE) delay = node_config.get(zwave.CONF_REFRESH_DELAY) - _LOGGER.debug('name=%s node_config=%s CONF_REFRESH_VALUE=%s' - ' CONF_REFRESH_DELAY=%s', name, node_config, - refresh, delay) + _LOGGER.debug("name=%s node_config=%s CONF_REFRESH_VALUE=%s" + " CONF_REFRESH_DELAY=%s", name, node_config, refresh, delay) if node.has_command_class(zwave.const.COMMAND_CLASS_SWITCH_COLOR): return ZwaveColorLight(values, refresh, delay) diff --git a/homeassistant/components/lock/__init__.py b/homeassistant/components/lock/__init__.py index 3d83ae5895d..7d3e75595e2 100644 --- a/homeassistant/components/lock/__init__.py +++ b/homeassistant/components/lock/__init__.py @@ -22,17 +22,19 @@ from homeassistant.const import ( STATE_UNKNOWN, SERVICE_LOCK, SERVICE_UNLOCK) from homeassistant.components import group -DOMAIN = 'lock' -SCAN_INTERVAL = timedelta(seconds=30) ATTR_CHANGED_BY = 'changed_by' -GROUP_NAME_ALL_LOCKS = 'all locks' -ENTITY_ID_ALL_LOCKS = group.ENTITY_ID_FORMAT.format('all_locks') +DOMAIN = 'lock' +ENTITY_ID_ALL_LOCKS = group.ENTITY_ID_FORMAT.format('all_locks') ENTITY_ID_FORMAT = DOMAIN + '.{}' +GROUP_NAME_ALL_LOCKS = 'all locks' + MIN_TIME_BETWEEN_SCANS = timedelta(seconds=10) +SCAN_INTERVAL = timedelta(seconds=30) + LOCK_SERVICE_SCHEMA = vol.Schema({ vol.Optional(ATTR_ENTITY_ID): cv.entity_ids, vol.Optional(ATTR_CODE): cv.string, diff --git a/homeassistant/components/lock/demo.py b/homeassistant/components/lock/demo.py index fca922b11e2..aca25e7e16d 100644 --- a/homeassistant/components/lock/demo.py +++ b/homeassistant/components/lock/demo.py @@ -10,7 +10,7 @@ from homeassistant.const import (STATE_LOCKED, STATE_UNLOCKED) # pylint: disable=unused-argument def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the Demo lock platform.""" + """Set up the Demo lock platform.""" add_devices([ DemoLock('Front Door', STATE_LOCKED), DemoLock('Kitchen Door', STATE_UNLOCKED) diff --git a/homeassistant/components/lock/isy994.py b/homeassistant/components/lock/isy994.py index d7e921a16e5..edbb8a34f24 100644 --- a/homeassistant/components/lock/isy994.py +++ b/homeassistant/components/lock/isy994.py @@ -28,7 +28,7 @@ def setup_platform(hass, config: ConfigType, add_devices: Callable[[list], None], discovery_info=None): """Set up the ISY994 lock platform.""" if isy.ISY is None or not isy.ISY.connected: - _LOGGER.error('A connection has not been made to the ISY controller.') + _LOGGER.error("A connection has not been made to the ISY controller") return False devices = [] @@ -115,9 +115,9 @@ class ISYLockProgram(ISYLockDevice): def lock(self, **kwargs) -> None: """Lock the device.""" if not self._actions.runThen(): - _LOGGER.error('Unable to lock device') + _LOGGER.error("Unable to lock device") def unlock(self, **kwargs) -> None: """Unlock the device.""" if not self._actions.runElse(): - _LOGGER.error('Unable to unlock device') + _LOGGER.error("Unable to unlock device") diff --git a/homeassistant/components/lock/lockitron.py b/homeassistant/components/lock/lockitron.py index 86821711fd2..eb301eeb013 100644 --- a/homeassistant/components/lock/lockitron.py +++ b/homeassistant/components/lock/lockitron.py @@ -28,16 +28,17 @@ API_ACTION_URL = BASE_URL + '/v2/locks/{}?access_token={}&state={}' # pylint: disable=unused-argument def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the Lockitron platform.""" + """Set up the Lockitron platform.""" access_token = config.get(CONF_ACCESS_TOKEN) device_id = config.get(CONF_ID) - response = requests.get(API_STATE_URL.format(device_id, access_token)) + response = requests.get( + API_STATE_URL.format(device_id, access_token), timeout=5) if response.status_code == 200: add_devices([Lockitron(response.json()['state'], access_token, device_id)]) else: - _LOGGER.error('Error retrieving lock status during init: %s', - response.text) + _LOGGER.error( + "Error retrieving lock status during init: %s", response.text) class Lockitron(LockDevice): @@ -72,21 +73,20 @@ class Lockitron(LockDevice): def update(self): """Update the internal state of the device.""" - response = requests \ - .get(API_STATE_URL.format(self.device_id, self.access_token)) + response = requests.get(API_STATE_URL.format( + self.device_id, self.access_token), timeout=5) if response.status_code == 200: self._state = response.json()['state'] else: - _LOGGER.error('Error retrieving lock status: %s', response.text) + _LOGGER.error("Error retrieving lock status: %s", response.text) def do_change_request(self, requested_state): """Execute the change request and pull out the new state.""" - response = requests.put( - API_ACTION_URL.format(self.device_id, self.access_token, - requested_state)) + response = requests.put(API_ACTION_URL.format( + self.device_id, self.access_token, requested_state), timeout=5) if response.status_code == 200: return response.json()['state'] else: - _LOGGER.error('Error setting lock state: %s\n%s', + _LOGGER.error("Error setting lock state: %s\n%s", requested_state, response.text) return self._state diff --git a/homeassistant/components/lock/mqtt.py b/homeassistant/components/lock/mqtt.py index 43d5788af9b..de14d21a09b 100644 --- a/homeassistant/components/lock/mqtt.py +++ b/homeassistant/components/lock/mqtt.py @@ -20,7 +20,6 @@ import homeassistant.helpers.config_validation as cv _LOGGER = logging.getLogger(__name__) - CONF_PAYLOAD_LOCK = 'payload_lock' CONF_PAYLOAD_UNLOCK = 'payload_unlock' @@ -42,7 +41,7 @@ PLATFORM_SCHEMA = mqtt.MQTT_RW_PLATFORM_SCHEMA.extend({ @asyncio.coroutine def async_setup_platform(hass, config, async_add_devices, discovery_info=None): - """Setup the MQTT lock.""" + """Set up the MQTT lock.""" value_template = config.get(CONF_VALUE_TEMPLATE) if value_template is not None: value_template.hass = hass @@ -61,7 +60,7 @@ def async_setup_platform(hass, config, async_add_devices, discovery_info=None): class MqttLock(LockDevice): - """Represents a lock that can be toggled using MQTT.""" + """Representation of a lock that can be toggled using MQTT.""" def __init__(self, name, state_topic, command_topic, qos, retain, payload_lock, payload_unlock, optimistic, value_template): @@ -79,13 +78,13 @@ class MqttLock(LockDevice): @asyncio.coroutine def async_added_to_hass(self): - """Subscribe mqtt events. + """Subscribe to MQTT events. This method is a coroutine. """ @callback def message_received(topic, payload, qos): - """A new MQTT message has been received.""" + """Handle new MQTT messages.""" if self._template is not None: payload = self._template.async_render_with_possible_json_value( payload) @@ -110,7 +109,7 @@ class MqttLock(LockDevice): @property def name(self): - """The name of the lock.""" + """Return the name of the lock.""" return self._name @property diff --git a/homeassistant/components/lock/nuki.py b/homeassistant/components/lock/nuki.py index bb3f2f030a2..144bfc3ec45 100644 --- a/homeassistant/components/lock/nuki.py +++ b/homeassistant/components/lock/nuki.py @@ -6,13 +6,13 @@ https://home-assistant.io/components/lock.nuki/ """ from datetime import timedelta import logging + import voluptuous as vol +import homeassistant.helpers.config_validation as cv from homeassistant.components.lock import (LockDevice, PLATFORM_SCHEMA) from homeassistant.const import (CONF_HOST, CONF_PORT, CONF_TOKEN) from homeassistant.util import Throttle -import homeassistant.helpers.config_validation as cv - REQUIREMENTS = ['pynuki==1.2.2'] @@ -33,7 +33,7 @@ MIN_TIME_BETWEEN_FORCED_SCANS = timedelta(seconds=5) # pylint: disable=unused-argument def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the Demo lock platform.""" + """Set up the Nuki lock platform.""" from pynuki import NukiBridge bridge = NukiBridge(config.get(CONF_HOST), config.get(CONF_TOKEN)) add_devices([NukiLock(lock) for lock in bridge.locks]) diff --git a/homeassistant/components/lock/vera.py b/homeassistant/components/lock/vera.py index da2a465d570..04962566821 100644 --- a/homeassistant/components/lock/vera.py +++ b/homeassistant/components/lock/vera.py @@ -48,6 +48,6 @@ class VeraLock(VeraDevice, LockDevice): return self._state == STATE_LOCKED def update(self): - """Called by the Vera device callback to update state.""" + """Update state by the Vera device callback.""" self._state = (STATE_LOCKED if self.vera_device.is_locked(True) else STATE_UNLOCKED) diff --git a/homeassistant/components/lock/volvooncall.py b/homeassistant/components/lock/volvooncall.py index b308ec61fba..ab1d2fabefe 100644 --- a/homeassistant/components/lock/volvooncall.py +++ b/homeassistant/components/lock/volvooncall.py @@ -1,5 +1,5 @@ """ -Support for Volvo locks. +Support for Volvo On Call locks. For more details about this platform, please refer to the documentation at https://home-assistant.io/components/lock.volvooncall/ @@ -14,9 +14,10 @@ _LOGGER = logging.getLogger(__name__) # pylint: disable=unused-argument def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the lock.""" + """Set up the Volvo On Call lock.""" if discovery_info is None: return + add_devices([VolvoLock(hass, *discovery_info)]) diff --git a/homeassistant/components/lock/wink.py b/homeassistant/components/lock/wink.py index 76922cf9d62..9ac5c579ab5 100644 --- a/homeassistant/components/lock/wink.py +++ b/homeassistant/components/lock/wink.py @@ -4,7 +4,6 @@ Support for Wink locks. For more details about this platform, please refer to the documentation at https://home-assistant.io/components/lock.wink/ """ - from homeassistant.components.lock import LockDevice from homeassistant.components.wink import WinkDevice, DOMAIN @@ -12,7 +11,7 @@ DEPENDENCIES = ['wink'] def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the Wink platform.""" + """Set up the Wink platform.""" import pywink for lock in pywink.get_locks(): diff --git a/homeassistant/components/lock/zwave.py b/homeassistant/components/lock/zwave.py index 9a3e2e34fcc..7e2d328c34a 100644 --- a/homeassistant/components/lock/zwave.py +++ b/homeassistant/components/lock/zwave.py @@ -1,5 +1,5 @@ """ -Zwave platform that handles simple door locks. +Z-Wave platform that handles simple door locks. For more details about this platform, please refer to the documentation at https://home-assistant.io/components/lock.zwave/ @@ -122,7 +122,7 @@ CLEAR_USERCODE_SCHEMA = vol.Schema({ @asyncio.coroutine def async_setup_platform(hass, config, async_add_devices, discovery_info=None): - """Generic Z-Wave platform setup.""" + """Set up the Z-Wave Lock platform.""" yield from zwave.async_setup_platform( hass, config, async_add_devices, discovery_info) @@ -142,8 +142,8 @@ def async_setup_platform(hass, config, async_add_devices, discovery_info=None): if value.index != code_slot: continue if len(str(usercode)) > 4: - _LOGGER.error('Invalid code provided: (%s)' - ' usercode must %s or less digits', + _LOGGER.error("Invalid code provided: (%s) " + "usercode must %s or less digits", usercode, len(value.data)) break value.data = str(usercode) @@ -159,7 +159,7 @@ def async_setup_platform(hass, config, async_add_devices, discovery_info=None): class_id=zwave.const.COMMAND_CLASS_USER_CODE).values(): if value.index != code_slot: continue - _LOGGER.info('Usercode at slot %s is: %s', value.index, value.data) + _LOGGER.info("Usercode at slot %s is: %s", value.index, value.data) break def clear_usercode(service): @@ -178,28 +178,22 @@ def async_setup_platform(hass, config, async_add_devices, discovery_info=None): i += 1 _LOGGER.debug('Data to clear lock: %s', data) value.data = data - _LOGGER.info('Usercode at slot %s is cleared', value.index) + _LOGGER.info("Usercode at slot %s is cleared", value.index) break - hass.services.async_register(DOMAIN, - SERVICE_SET_USERCODE, - set_usercode, - descriptions.get(SERVICE_SET_USERCODE), - schema=SET_USERCODE_SCHEMA) - hass.services.async_register(DOMAIN, - SERVICE_GET_USERCODE, - get_usercode, - descriptions.get(SERVICE_GET_USERCODE), - schema=GET_USERCODE_SCHEMA) - hass.services.async_register(DOMAIN, - SERVICE_CLEAR_USERCODE, - clear_usercode, - descriptions.get(SERVICE_CLEAR_USERCODE), - schema=CLEAR_USERCODE_SCHEMA) + hass.services.async_register( + DOMAIN, SERVICE_SET_USERCODE, set_usercode, + descriptions.get(SERVICE_SET_USERCODE), schema=SET_USERCODE_SCHEMA) + hass.services.async_register( + DOMAIN, SERVICE_GET_USERCODE, get_usercode, + descriptions.get(SERVICE_GET_USERCODE), schema=GET_USERCODE_SCHEMA) + hass.services.async_register( + DOMAIN, SERVICE_CLEAR_USERCODE, clear_usercode, + descriptions.get(SERVICE_CLEAR_USERCODE), schema=CLEAR_USERCODE_SCHEMA) def get_device(node, values, **kwargs): - """Create zwave entity device.""" + """Create Z-Wave entity device.""" return ZwaveLock(values) @@ -230,8 +224,7 @@ class ZwaveLock(zwave.ZWaveDeviceEntity, LockDevice): def update_properties(self): """Callback on data changes for node values.""" self._state = self.values.primary.data - _LOGGER.debug('Lock state set from Bool value and' - ' is %s', self._state) + _LOGGER.debug("Lock state set from Bool value and is %s", self._state) if self.values.access_control: notification_data = self.values.access_control.data self._notification = LOCK_NOTIFICATION.get(str(notification_data)) @@ -240,21 +233,20 @@ class ZwaveLock(zwave.ZWaveDeviceEntity, LockDevice): if self.values.v2btze_advanced and \ self.values.v2btze_advanced.data == CONFIG_ADVANCED: self._state = LOCK_STATUS.get(str(notification_data)) - _LOGGER.debug('Lock state set from Access Control ' - 'value and is %s, get=%s', - str(notification_data), - self.state) + _LOGGER.debug( + "Lock state set from Access Control value and is %s, " + "get=%s", str(notification_data), self.state) if not self.values.alarm_type: return alarm_type = self.values.alarm_type.data - _LOGGER.debug('Lock alarm_type is %s', str(alarm_type)) + _LOGGER.debug("Lock alarm_type is %s", str(alarm_type)) if self.values.alarm_level: alarm_level = self.values.alarm_level.data else: alarm_level = None - _LOGGER.debug('Lock alarm_level is %s', str(alarm_level)) + _LOGGER.debug("Lock alarm_level is %s", str(alarm_level)) if not alarm_type: return diff --git a/homeassistant/components/media_player/__init__.py b/homeassistant/components/media_player/__init__.py index bd29fe24aec..be7fce16821 100644 --- a/homeassistant/components/media_player/__init__.py +++ b/homeassistant/components/media_player/__init__.py @@ -897,7 +897,7 @@ class MediaPlayerDevice(Entity): @asyncio.coroutine def _async_fetch_image(hass, url): - """Helper method to fetch image. + """Fetch image. Images are cached in memory (the images are typically 10-100kB in size). """ @@ -942,8 +942,8 @@ class MediaPlayerImageView(HomeAssistantView): """Media player view to serve an image.""" requires_auth = False - url = "/api/media_player_proxy/{entity_id}" - name = "api:media_player:image" + url = '/api/media_player_proxy/{entity_id}' + name = 'api:media_player:image' def __init__(self, entities): """Initialize a media player view.""" diff --git a/homeassistant/components/media_player/anthemav.py b/homeassistant/components/media_player/anthemav.py index e6fd4e286ab..64b8e826cfb 100644 --- a/homeassistant/components/media_player/anthemav.py +++ b/homeassistant/components/media_player/anthemav.py @@ -45,11 +45,11 @@ def async_setup_platform(hass, config, async_add_devices, discovery_info=None): name = config.get(CONF_NAME) device = None - _LOGGER.info('Provisioning Anthem AVR device at %s:%d', host, port) + _LOGGER.info("Provisioning Anthem AVR device at %s:%d", host, port) def async_anthemav_update_callback(message): """Receive notification from transport that new data exists.""" - _LOGGER.info('Received update calback from AVR: %s', message) + _LOGGER.info("Received update calback from AVR: %s", message) hass.async_add_job(device.async_update_ha_state()) avr = yield from anthemav.Connection.create( @@ -58,9 +58,9 @@ def async_setup_platform(hass, config, async_add_devices, discovery_info=None): device = AnthemAVR(avr, name) - _LOGGER.debug('dump_devicedata: '+device.dump_avrdata) - _LOGGER.debug('dump_conndata: '+avr.dump_conndata) - _LOGGER.debug('dump_rawdata: '+avr.protocol.dump_rawdata) + _LOGGER.debug("dump_devicedata: %s", device.dump_avrdata) + _LOGGER.debug("dump_conndata: %s", avr.dump_conndata) + _LOGGER.debug("dump_rawdata: %s", avr.protocol.dump_rawdata) hass.bus.async_listen_once(EVENT_HOMEASSISTANT_STOP, device.avr.close) async_add_devices([device]) @@ -70,7 +70,7 @@ class AnthemAVR(MediaPlayerDevice): """Entity reading values from Anthem AVR protocol.""" def __init__(self, avr, name): - """"Initialize entity with transport.""" + """Initialize entity with transport.""" super().__init__() self.avr = avr self._name = name @@ -163,7 +163,8 @@ class AnthemAVR(MediaPlayerDevice): def _update_avr(self, propname, value): """Update a property in the AVR.""" - _LOGGER.info('Sending command to AVR: set '+propname+' to '+str(value)) + _LOGGER.info( + "Sending command to AVR: set %s to %s", propname, str(value)) setattr(self.avr.protocol, propname, value) @property diff --git a/homeassistant/components/media_player/apple_tv.py b/homeassistant/components/media_player/apple_tv.py index 580870cf375..97114a6bc84 100644 --- a/homeassistant/components/media_player/apple_tv.py +++ b/homeassistant/components/media_player/apple_tv.py @@ -45,7 +45,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ @asyncio.coroutine def async_setup_platform(hass, config, async_add_devices, discovery_info=None): - """Setup the Apple TV platform.""" + """Set up the Apple TV platform.""" import pyatv if discovery_info is not None: @@ -95,12 +95,13 @@ class AppleTvDevice(MediaPlayerDevice): @asyncio.coroutine def async_added_to_hass(self): - """Called when entity is about to be added to HASS.""" + """Handle when an entity is about to be added to Home Assistant.""" if not self._is_off: self._atv.push_updater.start() @callback def _set_power_off(self, is_off): + """Set the power to off.""" self._playing = None self._artwork_hash = None self._is_off = is_off diff --git a/homeassistant/components/media_player/aquostv.py b/homeassistant/components/media_player/aquostv.py index 65d3e2c93fd..2d51cacadff 100644 --- a/homeassistant/components/media_player/aquostv.py +++ b/homeassistant/components/media_player/aquostv.py @@ -61,7 +61,7 @@ SOURCES = {0: 'TV / Antenna', # pylint: disable=unused-argument def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the Sharp Aquos TV platform.""" + """Set up the Sharp Aquos TV platform.""" import sharp_aquos_rc name = config.get(CONF_NAME) @@ -77,30 +77,21 @@ def setup_platform(hass, config, add_devices, discovery_info=None): port = vals[1] host = vals[0] - remote = sharp_aquos_rc.TV(host, - port, - username, - password, - timeout=20) + remote = sharp_aquos_rc.TV(host, port, username, password, timeout=20) add_devices([SharpAquosTVDevice(name, remote, power_on_enabled)]) return True host = config.get(CONF_HOST) - remote = sharp_aquos_rc.TV(host, - port, - username, - password, - 15, - 1) + remote = sharp_aquos_rc.TV(host, port, username, password, 15, 1) add_devices([SharpAquosTVDevice(name, remote, power_on_enabled)]) return True def _retry(func): - """Decorator to handle query retries.""" + """Handle query retries.""" def wrapper(obj, *args, **kwargs): - """Wrapper for all query functions.""" + """Wrap all query functions.""" update_retries = 5 while update_retries > 0: try: diff --git a/homeassistant/components/media_player/braviatv.py b/homeassistant/components/media_player/braviatv.py index 96c1e3726a8..1c8419ba144 100644 --- a/homeassistant/components/media_player/braviatv.py +++ b/homeassistant/components/media_player/braviatv.py @@ -76,7 +76,7 @@ def _config_from_file(filename, config=None): with open(filename, 'w') as fdesc: fdesc.write(json.dumps(new_config)) except IOError as error: - _LOGGER.error('Saving config file failed: %s', error) + _LOGGER.error("Saving config file failed: %s", error) return False return True else: @@ -88,7 +88,7 @@ def _config_from_file(filename, config=None): except ValueError as error: return {} except IOError as error: - _LOGGER.error('Reading config file failed: %s', error) + _LOGGER.error("Reading config file failed: %s", error) # This won't work yet return False else: @@ -135,13 +135,13 @@ def setup_bravia(config, pin, hass, add_devices): request_id = _CONFIGURING.pop(host) configurator = get_component('configurator') configurator.request_done(request_id) - _LOGGER.info('Discovery configuration done!') + _LOGGER.info("Discovery configuration done") # Save config if not _config_from_file( hass.config.path(BRAVIA_CONFIG_FILE), {host: {'pin': pin, 'host': host, 'mac': mac}}): - _LOGGER.error('failed to save config file') + _LOGGER.error("Failed to save configuration file") add_devices([BraviaTVDevice(host, mac, name, pin)]) @@ -160,7 +160,7 @@ def request_configuration(config, hass, add_devices): return def bravia_configuration_callback(data): - """Callback after user enter PIN.""" + """Handle the entry of user PIN.""" from braviarc import braviarc pin = data.get('pin') diff --git a/homeassistant/components/media_player/cast.py b/homeassistant/components/media_player/cast.py index 148cdee1d48..e4ecd1bd37d 100644 --- a/homeassistant/components/media_player/cast.py +++ b/homeassistant/components/media_player/cast.py @@ -43,10 +43,10 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ # pylint: disable=unused-argument def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the cast platform.""" + """Set up the cast platform.""" import pychromecast - # import CEC IGNORE attributes + # Import CEC IGNORE attributes pychromecast.IGNORE_CEC += config.get(CONF_IGNORE_CEC, []) hosts = [] @@ -68,8 +68,8 @@ def setup_platform(hass, config, add_devices, discovery_info=None): casts = [] - # get_chromecasts() returns Chromecast objects - # with the correct friendly name for grouped devices + # get_chromecasts() returns Chromecast objects with the correct friendly + # name for grouped devices all_chromecasts = pychromecast.get_chromecasts() for host in hosts: @@ -204,7 +204,7 @@ class CastDevice(MediaPlayerDevice): @property def media_series_title(self): - """The title of the series of current playing media (TV Show only).""" + """Return the title of the series of current playing media.""" return self.media_status.series_title if self.media_status else None @property @@ -310,12 +310,12 @@ class CastDevice(MediaPlayerDevice): # Implementation of chromecast status_listener methods def new_cast_status(self, status): - """Called when a new cast status is received.""" + """Handle updates of the cast status.""" self.cast_status = status self.schedule_update_ha_state() def new_media_status(self, status): - """Called when a new media status is received.""" + """Handle updates of the media status.""" self.media_status = status self.media_status_received = dt_util.utcnow() self.schedule_update_ha_state() diff --git a/homeassistant/components/media_player/clementine.py b/homeassistant/components/media_player/clementine.py index e85019b7991..d9688badcd1 100644 --- a/homeassistant/components/media_player/clementine.py +++ b/homeassistant/components/media_player/clementine.py @@ -28,6 +28,7 @@ SCAN_INTERVAL = timedelta(seconds=5) _LOGGER = logging.getLogger(__name__) DEFAULT_NAME = 'Clementine Remote' +DEFAULT_PORT = 5500 SUPPORT_CLEMENTINE = SUPPORT_PAUSE | SUPPORT_VOLUME_STEP | \ SUPPORT_PREVIOUS_TRACK | SUPPORT_VOLUME_SET | \ @@ -35,19 +36,22 @@ SUPPORT_CLEMENTINE = SUPPORT_PAUSE | SUPPORT_VOLUME_STEP | \ SUPPORT_SELECT_SOURCE | SUPPORT_PLAY PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ - vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string, vol.Required(CONF_HOST): cv.string, - vol.Optional(CONF_PORT, default=5500): cv.positive_int, vol.Optional(CONF_ACCESS_TOKEN, default=None): cv.positive_int, + vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string, + vol.Optional(CONF_PORT, default=DEFAULT_PORT): cv.port, }) # pylint: disable=unused-argument def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the Clementine platform.""" + """Set up the Clementine platform.""" from clementineremote import ClementineRemote - client = ClementineRemote(config.get(CONF_HOST), config.get(CONF_PORT), - config.get(CONF_ACCESS_TOKEN), reconnect=True) + host = config.get(CONF_HOST) + port = config.get(CONF_PORT) + token = config.get(CONF_ACCESS_TOKEN) + + client = ClementineRemote(host, port, token, reconnect=True) add_devices([ClementineDevice(client, config[CONF_NAME])]) diff --git a/homeassistant/components/media_player/cmus.py b/homeassistant/components/media_player/cmus.py index 136d26974fe..aefe5bced18 100644 --- a/homeassistant/components/media_player/cmus.py +++ b/homeassistant/components/media_player/cmus.py @@ -39,7 +39,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ def setup_platform(hass, config, add_devices, discover_info=None): - """Setup the CMUS platform.""" + """Set up the CMUS platform.""" from pycmus import exceptions host = config.get(CONF_HOST) @@ -166,7 +166,7 @@ class CmusDevice(MediaPlayerDevice): self.cmus.set_volume(int(volume * 100)) def volume_up(self): - """Function to send CMUS the command for volume up.""" + """Set the volume up.""" left = self.status['set'].get('vol_left') right = self.status['set'].get('vol_right') if left != right: @@ -178,7 +178,7 @@ class CmusDevice(MediaPlayerDevice): self.cmus.set_volume(int(current_volume) + 5) def volume_down(self): - """Function to send CMUS the command for volume down.""" + """Set the volume down.""" left = self.status['set'].get('vol_left') right = self.status['set'].get('vol_right') if left != right: diff --git a/homeassistant/components/media_player/demo.py b/homeassistant/components/media_player/demo.py index 0319ccf98b3..9e4e912f314 100644 --- a/homeassistant/components/media_player/demo.py +++ b/homeassistant/components/media_player/demo.py @@ -16,7 +16,7 @@ import homeassistant.util.dt as dt_util # pylint: disable=unused-argument def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the media player demo platform.""" + """Set up the media player demo platform.""" add_devices([ DemoYoutubePlayer( 'Living Room', 'eyU3bRy2x44', diff --git a/homeassistant/components/media_player/denon.py b/homeassistant/components/media_player/denon.py index 4b3347a832a..08e08dd1650 100755 --- a/homeassistant/components/media_player/denon.py +++ b/homeassistant/components/media_player/denon.py @@ -50,7 +50,7 @@ MEDIA_MODES = {'Tuner': 'TUNER', 'Media server': 'SERVER', def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the Denon platform.""" + """Set up the Denon platform.""" denon = DenonDevice(config.get(CONF_NAME), config.get(CONF_HOST)) if denon.update(): @@ -101,7 +101,7 @@ class DenonDevice(MediaPlayerDevice): @classmethod def telnet_request(cls, telnet, command, all_lines=False): """Execute `command` and return the response.""" - _LOGGER.debug('Sending: "%s"', command) + _LOGGER.debug("Sending: %s", command) telnet.write(command.encode('ASCII') + b'\r') lines = [] while True: @@ -109,7 +109,7 @@ class DenonDevice(MediaPlayerDevice): if not line: break lines.append(line.decode('ASCII').strip()) - _LOGGER.debug('Recived: "%s"', line) + _LOGGER.debug("Recived: %s", line) if all_lines: return lines @@ -118,7 +118,7 @@ class DenonDevice(MediaPlayerDevice): def telnet_command(self, command): """Establish a telnet connection and sends `command`.""" telnet = telnetlib.Telnet(self._host) - _LOGGER.debug('Sending: "%s"', command) + _LOGGER.debug("Sending: %s", command) telnet.write(command.encode('ASCII') + b'\r') telnet.read_very_eager() # skip response telnet.close() @@ -179,17 +179,17 @@ class DenonDevice(MediaPlayerDevice): @property def is_volume_muted(self): - """Boolean if volume is currently muted.""" + """Return boolean if volume is currently muted.""" return self._muted @property def source_list(self): - """List of available input sources.""" + """Return the list of available input sources.""" return sorted(list(self._source_list.keys())) @property def media_title(self): - """Current media info.""" + """Return the current media info.""" return self._mediainfo @property diff --git a/homeassistant/components/media_player/denonavr.py b/homeassistant/components/media_player/denonavr.py index 0b54bbe5d5a..494a3f69e6d 100644 --- a/homeassistant/components/media_player/denonavr.py +++ b/homeassistant/components/media_player/denonavr.py @@ -41,7 +41,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the Denon platform.""" + """Set up the Denon platform.""" import denonavr # Initialize list with receivers to be started @@ -116,9 +116,7 @@ class DenonDevice(MediaPlayerDevice): def update(self): """Get the latest status information from device.""" - # Update denonavr self._receiver.update() - # Refresh own data self._name = self._receiver.name self._muted = self._receiver.muted self._volume = self._receiver.volume @@ -146,7 +144,7 @@ class DenonDevice(MediaPlayerDevice): @property def is_volume_muted(self): - """Boolean if volume is currently muted.""" + """Return boolean if volume is currently muted.""" return self._muted @property @@ -163,7 +161,7 @@ class DenonDevice(MediaPlayerDevice): @property def source_list(self): - """List of available input sources.""" + """Return a list of available input sources.""" return self._source_list @property diff --git a/homeassistant/components/media_player/directv.py b/homeassistant/components/media_player/directv.py index ef3333d4da3..c1b690bc370 100644 --- a/homeassistant/components/media_player/directv.py +++ b/homeassistant/components/media_player/directv.py @@ -34,7 +34,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the DirecTV platform.""" + """Set up the DirecTV platform.""" hosts = [] if discovery_info: @@ -94,13 +94,13 @@ class DirecTvDevice(MediaPlayerDevice): """Return the state of the device.""" if self._is_standby: return STATE_OFF - # haven't determined a way to see if the content is paused + # Haven't determined a way to see if the content is paused else: return STATE_PLAYING @property def media_content_id(self): - """Content ID of current playing media.""" + """Return the content ID of current playing media.""" if self._is_standby: return None else: @@ -108,7 +108,7 @@ class DirecTvDevice(MediaPlayerDevice): @property def media_duration(self): - """Duration of current playing media in seconds.""" + """Return the duration of current playing media in seconds.""" if self._is_standby: return None else: @@ -116,7 +116,7 @@ class DirecTvDevice(MediaPlayerDevice): @property def media_title(self): - """Title of current playing media.""" + """Return the title of current playing media.""" if self._is_standby: return None else: @@ -124,7 +124,7 @@ class DirecTvDevice(MediaPlayerDevice): @property def media_series_title(self): - """Title of current episode of TV show.""" + """Return the title of current episode of TV show.""" if self._is_standby: return None else: @@ -140,7 +140,7 @@ class DirecTvDevice(MediaPlayerDevice): @property def media_content_type(self): - """Content type of current playing media.""" + """Return the content type of current playing media.""" if 'episodeTitle' in self._current: return MEDIA_TYPE_TVSHOW else: @@ -148,38 +148,38 @@ class DirecTvDevice(MediaPlayerDevice): @property def media_channel(self): - """Channel current playing media.""" + """Return the channel current playing media.""" if self._is_standby: return None else: - chan = "{} ({})".format(self._current['callsign'], - self._current['major']) + chan = "{} ({})".format( + self._current['callsign'], self._current['major']) return chan def turn_on(self): - """Turn on the reciever.""" + """Turn on the receiver.""" self.dtv.key_press('poweron') def turn_off(self): - """Turn off the reciever.""" + """Turn off the receiver.""" self.dtv.key_press('poweroff') def media_play(self): - """Send play commmand.""" + """Send play command.""" self.dtv.key_press('play') def media_pause(self): - """Send pause commmand.""" + """Send pause command.""" self.dtv.key_press('pause') def media_stop(self): - """Send stop commmand.""" + """Send stop command.""" self.dtv.key_press('stop') def media_previous_track(self): - """Send rewind commmand.""" + """Send rewind command.""" self.dtv.key_press('rew') def media_next_track(self): - """Send fast forward commmand.""" + """Send fast forward command.""" self.dtv.key_press('ffwd') diff --git a/homeassistant/components/media_player/dunehd.py b/homeassistant/components/media_player/dunehd.py index 4ff1d57c558..9e63fd6d21c 100644 --- a/homeassistant/components/media_player/dunehd.py +++ b/homeassistant/components/media_player/dunehd.py @@ -48,7 +48,7 @@ class DuneHDPlayerEntity(MediaPlayerDevice): """Implementation of the Dune HD player.""" def __init__(self, player, name, sources): - """Setup entity to control Dune HD.""" + """Initialize entity to control Dune HD.""" self._player = player self._name = name self._sources = sources @@ -83,17 +83,17 @@ class DuneHDPlayerEntity(MediaPlayerDevice): @property def volume_level(self): - """Volume level of the media player (0..1).""" + """Return the volume level of the media player (0..1).""" return int(self._state.get('playback_volume', 0)) / 100 @property def is_volume_muted(self): - """Boolean if volume is currently muted.""" + """Return a boolean if volume is currently muted.""" return int(self._state.get('playback_mute', 0)) == 1 @property def source_list(self): - """List of available input sources.""" + """Return a list of available input sources.""" return list(self._sources.keys()) @property diff --git a/homeassistant/components/media_player/emby.py b/homeassistant/components/media_player/emby.py index 3ed6d42e76a..27616b1c265 100644 --- a/homeassistant/components/media_player/emby.py +++ b/homeassistant/components/media_player/emby.py @@ -52,7 +52,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ @asyncio.coroutine def async_setup_platform(hass, config, async_add_devices, discovery_info=None): - """Setup the Emby platform.""" + """Set up the Emby platform.""" from pyemby import EmbyServer host = config.get(CONF_HOST) @@ -64,7 +64,7 @@ def async_setup_platform(hass, config, async_add_devices, discovery_info=None): if port is None: port = DEFAULT_SSL_PORT if ssl else DEFAULT_PORT - _LOGGER.debug('Setting up Emby server at: %s:%s', host, port) + _LOGGER.debug("Setting up Emby server at: %s:%s", host, port) emby = EmbyServer(host, key, port, ssl, hass.loop) @@ -93,12 +93,12 @@ def async_setup_platform(hass, config, async_add_devices, discovery_info=None): add.set_hidden(False) if new_devices: - _LOGGER.debug("Adding new devices to HASS: %s", new_devices) + _LOGGER.debug("Adding new devices: %s", new_devices) async_add_devices(new_devices, update_before_add=True) @callback def device_removal_callback(data): - """Callback for when devices are removed from emby.""" + """Handle the removal of devices from Emby.""" if data in active_emby_devices: rem = active_emby_devices.pop(data) inactive_emby_devices[data] = rem @@ -109,12 +109,12 @@ def async_setup_platform(hass, config, async_add_devices, discovery_info=None): @callback def start_emby(event): - """Start emby connection.""" + """Start Emby connection.""" emby.start() @asyncio.coroutine def stop_emby(event): - """Stop emby connection.""" + """Stop Emby connection.""" yield from emby.stop() emby.add_new_devices_callback(device_update_callback) @@ -129,7 +129,7 @@ class EmbyDevice(MediaPlayerDevice): def __init__(self, emby, device_id): """Initialize the Emby device.""" - _LOGGER.debug('New Emby Device initialized with ID: %s', device_id) + _LOGGER.debug("New Emby Device initialized with ID: %s", device_id) self.emby = emby self.device_id = device_id self.device = self.emby.devices[self.device_id] @@ -143,12 +143,12 @@ class EmbyDevice(MediaPlayerDevice): @asyncio.coroutine def async_added_to_hass(self): """Register callback.""" - self.emby.add_update_callback(self.async_update_callback, - self.device_id) + self.emby.add_update_callback( + self.async_update_callback, self.device_id) @callback def async_update_callback(self, msg): - """Callback for device updates.""" + """Handle device updates.""" # Check if we should update progress if self.device.media_position: if self.device.media_position != self.media_status_last_position: diff --git a/homeassistant/components/media_player/firetv.py b/homeassistant/components/media_player/firetv.py index 237faddaaea..fbf1d1fd03b 100644 --- a/homeassistant/components/media_player/firetv.py +++ b/homeassistant/components/media_player/firetv.py @@ -42,7 +42,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ # pylint: disable=unused-argument def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the FireTV platform.""" + """Set up the FireTV platform.""" name = config.get(CONF_NAME) host = config.get(CONF_HOST) port = config.get(CONF_PORT) @@ -52,13 +52,13 @@ def setup_platform(hass, config, add_devices, discovery_info=None): response = requests.get(DEVICE_LIST_URL.format(host, port)).json() if device_id in response[CONF_DEVICES].keys(): add_devices([FireTVDevice(host, port, device_id, name)]) - _LOGGER.info('Device %s accessible and ready for control', + _LOGGER.info("Device %s accessible and ready for control", device_id) else: - _LOGGER.warning('Device %s is not registered with firetv-server', + _LOGGER.warning("Device %s is not registered with firetv-server", device_id) except requests.exceptions.RequestException: - _LOGGER.error('Could not connect to firetv-server at %s', host) + _LOGGER.error("Could not connect to firetv-server at %s", host) class FireTV(object): @@ -88,7 +88,7 @@ class FireTV(object): return response.get('state', STATE_UNKNOWN) except requests.exceptions.RequestException: _LOGGER.error( - 'Could not retrieve device state for %s', self.device_id) + "Could not retrieve device state for %s", self.device_id) return STATE_UNKNOWN def action(self, action_id): @@ -98,7 +98,7 @@ class FireTV(object): self.host, self.port, self.device_id, action_id), timeout=10) except requests.exceptions.RequestException: _LOGGER.error( - 'Action request for %s was not accepted for device %s', + "Action request for %s was not accepted for device %s", action_id, self.device_id) diff --git a/homeassistant/components/media_player/gpmdp.py b/homeassistant/components/media_player/gpmdp.py index ca79d0a7f35..6bf5c684697 100644 --- a/homeassistant/components/media_player/gpmdp.py +++ b/homeassistant/components/media_player/gpmdp.py @@ -79,8 +79,8 @@ def request_configuration(hass, config, url, add_devices_callback): 'arguments': ['Home Assistant', pin]})) tmpmsg = json.loads(websocket.recv()) if tmpmsg['channel'] == 'time': - _LOGGER.error('Error setting up GPMDP. Please pause' - ' the desktop player and try again.') + _LOGGER.error("Error setting up GPMDP. Please pause " + "the desktop player and try again") break code = tmpmsg['payload'] if code == 'CODE_REQUIRED': @@ -106,7 +106,7 @@ def request_configuration(hass, config, url, add_devices_callback): def setup_gpmdp(hass, config, code, add_devices): - """Setup gpmdp.""" + """Set up gpmdp.""" name = config.get(CONF_NAME) host = config.get(CONF_HOST) port = config.get(CONF_PORT) diff --git a/homeassistant/components/media_player/gstreamer.py b/homeassistant/components/media_player/gstreamer.py index f9c20c4d4ea..064ca68ea95 100644 --- a/homeassistant/components/media_player/gstreamer.py +++ b/homeassistant/components/media_player/gstreamer.py @@ -36,7 +36,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ # pylint: disable=unused-argument def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the Gstreamer platform.""" + """Set up the Gstreamer platform.""" from gsp import GstreamerPlayer name = config.get(CONF_NAME) pipeline = config.get(CONF_PIPELINE) diff --git a/homeassistant/components/media_player/hdmi_cec.py b/homeassistant/components/media_player/hdmi_cec.py index aa3b44e9e90..7054c83d36a 100644 --- a/homeassistant/components/media_player/hdmi_cec.py +++ b/homeassistant/components/media_player/hdmi_cec.py @@ -134,7 +134,7 @@ class CecPlayerDevice(CecDevice, MediaPlayerDevice): @property def state(self) -> str: - """Cached state of device.""" + """Cache state of device.""" return self._state def _update(self, device=None): diff --git a/homeassistant/components/media_player/itunes.py b/homeassistant/components/media_player/itunes.py index ab7d89e9b2a..514bf24a21a 100644 --- a/homeassistant/components/media_player/itunes.py +++ b/homeassistant/components/media_player/itunes.py @@ -154,7 +154,7 @@ class Itunes(object): def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the iTunes platform.""" + """Set up the iTunes platform.""" add_devices([ ItunesDevice( config.get(CONF_NAME), diff --git a/homeassistant/components/media_player/kodi.py b/homeassistant/components/media_player/kodi.py index 9993ed2cdc6..10d13002625 100644 --- a/homeassistant/components/media_player/kodi.py +++ b/homeassistant/components/media_player/kodi.py @@ -47,17 +47,17 @@ TURN_OFF_ACTION = [None, 'quit', 'hibernate', 'suspend', 'reboot', 'shutdown'] # https://github.com/xbmc/xbmc/blob/master/xbmc/media/MediaType.h MEDIA_TYPES = { - "music": MEDIA_TYPE_MUSIC, - "artist": MEDIA_TYPE_MUSIC, - "album": MEDIA_TYPE_MUSIC, - "song": MEDIA_TYPE_MUSIC, - "video": MEDIA_TYPE_VIDEO, - "set": MEDIA_TYPE_PLAYLIST, - "musicvideo": MEDIA_TYPE_VIDEO, - "movie": MEDIA_TYPE_VIDEO, - "tvshow": MEDIA_TYPE_TVSHOW, - "season": MEDIA_TYPE_TVSHOW, - "episode": MEDIA_TYPE_TVSHOW, + 'music': MEDIA_TYPE_MUSIC, + 'artist': MEDIA_TYPE_MUSIC, + 'album': MEDIA_TYPE_MUSIC, + 'song': MEDIA_TYPE_MUSIC, + 'video': MEDIA_TYPE_VIDEO, + 'set': MEDIA_TYPE_PLAYLIST, + 'musicvideo': MEDIA_TYPE_VIDEO, + 'movie': MEDIA_TYPE_VIDEO, + 'tvshow': MEDIA_TYPE_TVSHOW, + 'season': MEDIA_TYPE_TVSHOW, + 'episode': MEDIA_TYPE_TVSHOW, } SUPPORT_KODI = SUPPORT_PAUSE | SUPPORT_VOLUME_SET | SUPPORT_VOLUME_MUTE | \ @@ -161,11 +161,11 @@ def async_setup_platform(hass, config, async_add_devices, discovery_info=None): def cmd(func): - """Decorator to catch command exceptions.""" + """Catch command exceptions.""" @wraps(func) @asyncio.coroutine def wrapper(obj, *args, **kwargs): - """Wrapper for all command methods.""" + """Wrap all command methods.""" import jsonrpc_base try: yield from func(obj, *args, **kwargs) @@ -245,7 +245,7 @@ class KodiDevice(MediaPlayerDevice): @callback def async_on_speed_event(self, sender, data): - """Called when player changes between playing and paused.""" + """Handle player changes between playing and paused.""" self._properties['speed'] = data['player']['speed'] if not hasattr(data['item'], 'id'): @@ -259,7 +259,7 @@ class KodiDevice(MediaPlayerDevice): @callback def async_on_stop(self, sender, data): - """Called when the player stops playback.""" + """Handle the stop of the player playback.""" # Prevent stop notifications which are sent after quit notification if self._players is None: return @@ -271,14 +271,14 @@ class KodiDevice(MediaPlayerDevice): @callback def async_on_volume_changed(self, sender, data): - """Called when the volume is changed.""" + """Handle the volume changes.""" self._app_properties['volume'] = data['volume'] self._app_properties['muted'] = data['muted'] self.hass.async_add_job(self.async_update_ha_state()) @callback def async_on_quit(self, sender, data): - """Called when the volume is changed.""" + """Handle the muted volume.""" self._players = None self._properties = {} self._item = {} @@ -293,8 +293,8 @@ class KodiDevice(MediaPlayerDevice): return (yield from self.server.Player.GetActivePlayers()) except jsonrpc_base.jsonrpc.TransportError: if self._players is not None: - _LOGGER.info('Unable to fetch kodi data') - _LOGGER.debug('Unable to fetch kodi data', exc_info=True) + _LOGGER.info("Unable to fetch kodi data") + _LOGGER.debug("Unable to fetch kodi data", exc_info=True) return None @property @@ -548,7 +548,7 @@ class KodiDevice(MediaPlayerDevice): @asyncio.coroutine def async_set_play_state(self, state): - """Helper method for play/pause/toggle.""" + """Handle play/pause/toggle.""" players = yield from self._get_players() if players is not None and players: @@ -590,7 +590,7 @@ class KodiDevice(MediaPlayerDevice): @asyncio.coroutine def _goto(self, direction): - """Helper method used for previous/next track.""" + """Handle for previous/next track.""" players = yield from self._get_players() if players: diff --git a/homeassistant/components/media_player/lg_netcast.py b/homeassistant/components/media_player/lg_netcast.py index 8afdf89a2e4..9e8fcbf2462 100644 --- a/homeassistant/components/media_player/lg_netcast.py +++ b/homeassistant/components/media_player/lg_netcast.py @@ -45,7 +45,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ # pylint: disable=unused-argument def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the LG TV platform.""" + """Set up the LG TV platform.""" from pylgnetcast import LgNetCastClient client = LgNetCastClient( config.get(CONF_HOST), config.get(CONF_ACCESS_TOKEN)) diff --git a/homeassistant/components/media_player/liveboxplaytv.py b/homeassistant/components/media_player/liveboxplaytv.py index 52a37eb8faa..eef5a890e8e 100644 --- a/homeassistant/components/media_player/liveboxplaytv.py +++ b/homeassistant/components/media_player/liveboxplaytv.py @@ -45,7 +45,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ # pylint: disable=unused-argument def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the Orange Livebox Play TV platform.""" + """Set up the Orange Livebox Play TV platform.""" host = config.get(CONF_HOST) port = config.get(CONF_PORT) name = config.get(CONF_NAME) @@ -56,8 +56,8 @@ def setup_platform(hass, config, add_devices, discovery_info=None): device = LiveboxPlayTvDevice(host, port, name) livebox_devices.append(device) except IOError: - _LOGGER.error('Failed to connect to Livebox Play TV at %s:%s. ' - 'Please check your configuration.', host, port) + _LOGGER.error("Failed to connect to Livebox Play TV at %s:%s. " + "Please check your configuration", host, port) add_devices(livebox_devices, True) diff --git a/homeassistant/components/media_player/mpchc.py b/homeassistant/components/media_player/mpchc.py index 168497c4052..964c2b5d009 100644 --- a/homeassistant/components/media_player/mpchc.py +++ b/homeassistant/components/media_player/mpchc.py @@ -37,7 +37,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ # pylint: disable=unused-argument def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the MPC-HC platform.""" + """Set up the MPC-HC platform.""" name = config.get(CONF_NAME) url = '{}:{}'.format(config.get(CONF_HOST), config.get(CONF_PORT)) @@ -59,8 +59,8 @@ class MpcHcDevice(MediaPlayerDevice): self._player_variables = dict() try: - response = requests.get('{}/variables.html'.format(self._url), - data=None, timeout=3) + response = requests.get( + '{}/variables.html'.format(self._url), data=None, timeout=3) mpchc_variables = re.findall(r'

    (.+?)

    ', response.text) @@ -102,24 +102,24 @@ class MpcHcDevice(MediaPlayerDevice): @property def media_title(self): - """Title of current playing media.""" + """Return the title of current playing media.""" return self._player_variables.get('file', None) @property def volume_level(self): - """Volume level of the media player (0..1).""" + """Return the volume level of the media player (0..1).""" return int(self._player_variables.get('volumelevel', 0)) / 100.0 @property def is_volume_muted(self): - """Boolean if volume is currently muted.""" + """Return boolean if volume is currently muted.""" return self._player_variables.get('muted', '0') == '1' @property def media_duration(self): - """Duration of current playing media in seconds.""" - duration = self._player_variables.get('durationstring', - "00:00:00").split(':') + """Return the duration of the current playing media in seconds.""" + duration = self._player_variables.get( + 'durationstring', "00:00:00").split(':') return \ int(duration[0]) * 3600 + \ int(duration[1]) * 60 + \ diff --git a/homeassistant/components/media_player/mpd.py b/homeassistant/components/media_player/mpd.py index f6891d23f3f..572898dd60a 100644 --- a/homeassistant/components/media_player/mpd.py +++ b/homeassistant/components/media_player/mpd.py @@ -44,7 +44,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ # pylint: disable=unused-argument def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the MPD platform.""" + """Set up the MPD platform.""" daemon = config.get(CONF_HOST) port = config.get(CONF_PORT) name = config.get(CONF_NAME) @@ -136,23 +136,23 @@ class MpdDevice(MediaPlayerDevice): @property def media_content_id(self): - """Content ID of current playing media.""" + """Return the content ID of current playing media.""" return self.currentsong.get('file') @property def media_content_type(self): - """Content type of current playing media.""" + """Return the content type of current playing media.""" return MEDIA_TYPE_MUSIC @property def media_duration(self): - """Duration of current playing media in seconds.""" + """Return the duration of current playing media in seconds.""" # Time does not exist for streams return self.currentsong.get('time') @property def media_title(self): - """Title of current playing media.""" + """Return the title of current playing media.""" name = self.currentsong.get('name', None) title = self.currentsong.get('title', None) @@ -167,12 +167,12 @@ class MpdDevice(MediaPlayerDevice): @property def media_artist(self): - """Artist of current playing media (Music track only).""" + """Return the artist of current playing media (Music track only).""" return self.currentsong.get('artist') @property def media_album_name(self): - """Album of current playing media (Music track only).""" + """Return the album of current playing media (Music track only).""" return self.currentsong.get('album') @property @@ -192,7 +192,7 @@ class MpdDevice(MediaPlayerDevice): @property def source_list(self): - """List of available input sources.""" + """Return the list of available input sources.""" return self.playlists def select_source(self, source): diff --git a/homeassistant/components/media_player/nad.py b/homeassistant/components/media_player/nad.py index 332aed4a839..c1b7b867c3b 100644 --- a/homeassistant/components/media_player/nad.py +++ b/homeassistant/components/media_player/nad.py @@ -49,7 +49,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the NAD platform.""" + """Set up the NAD platform.""" from nad_receiver import NADReceiver add_devices([NAD( config.get(CONF_NAME), diff --git a/homeassistant/components/media_player/onkyo.py b/homeassistant/components/media_player/onkyo.py index 67197d7d0da..18690cca871 100644 --- a/homeassistant/components/media_player/onkyo.py +++ b/homeassistant/components/media_player/onkyo.py @@ -43,7 +43,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the Onkyo platform.""" + """Set up the Onkyo platform.""" import eiscp from eiscp import eISCP @@ -52,12 +52,12 @@ def setup_platform(hass, config, add_devices, discovery_info=None): if CONF_HOST in config and host not in KNOWN_HOSTS: try: - hosts.append(OnkyoDevice(eiscp.eISCP(host), - config.get(CONF_SOURCES), - name=config.get(CONF_NAME))) + hosts.append(OnkyoDevice( + eiscp.eISCP(host), config.get(CONF_SOURCES), + name=config.get(CONF_NAME))) KNOWN_HOSTS.append(host) except OSError: - _LOGGER.error('Unable to connect to receiver at %s.', host) + _LOGGER.error("Unable to connect to receiver at %s", host) else: for receiver in eISCP.discover(): if receiver.host not in KNOWN_HOSTS: @@ -90,9 +90,9 @@ class OnkyoDevice(MediaPlayerDevice): except (ValueError, OSError, AttributeError, AssertionError): if self._receiver.command_socket: self._receiver.command_socket = None - _LOGGER.info('Resetting connection to %s.', self._name) + _LOGGER.info("Resetting connection to %s", self._name) else: - _LOGGER.info('%s is disconnected. Attempting to reconnect.', + _LOGGER.info("%s is disconnected. Attempting to reconnect", self._name) return False return result @@ -142,7 +142,7 @@ class OnkyoDevice(MediaPlayerDevice): @property def volume_level(self): - """Volume level of the media player (0..1).""" + """Return the volume level of the media player (0..1).""" return self._volume @property @@ -157,7 +157,7 @@ class OnkyoDevice(MediaPlayerDevice): @property def source(self): - """"Return the current input source of the device.""" + """Return the current input source of the device.""" return self._current_source @property diff --git a/homeassistant/components/media_player/openhome.py b/homeassistant/components/media_player/openhome.py index c70822381a4..ab061eb5fa4 100644 --- a/homeassistant/components/media_player/openhome.py +++ b/homeassistant/components/media_player/openhome.py @@ -22,13 +22,12 @@ SUPPORT_OPENHOME = SUPPORT_SELECT_SOURCE | \ _LOGGER = logging.getLogger(__name__) -# List of devices that have been registered DEVICES = [] # pylint: disable=unused-argument def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup Openhome Platform.""" + """Set up the Openhome platform.""" from openhomedevice.Device import Device if not discovery_info: @@ -36,7 +35,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None): name = discovery_info.get('name') description = discovery_info.get('ssdp_description') - _LOGGER.info('Openhome device found, (%s)', name) + _LOGGER.info('Openhome device found: %s', name) device = Device(description) # if device has already been discovered diff --git a/homeassistant/components/media_player/panasonic_viera.py b/homeassistant/components/media_player/panasonic_viera.py index a5f9979d2d4..8c946ec0f0f 100644 --- a/homeassistant/components/media_player/panasonic_viera.py +++ b/homeassistant/components/media_player/panasonic_viera.py @@ -42,7 +42,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ # pylint: disable=unused-argument def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the Panasonic Viera TV platform.""" + """Set up the Panasonic Viera TV platform.""" from panasonic_viera import RemoteControl mac = config.get(CONF_MAC) diff --git a/homeassistant/components/media_player/pandora.py b/homeassistant/components/media_player/pandora.py index f742618822a..2ea94885620 100644 --- a/homeassistant/components/media_player/pandora.py +++ b/homeassistant/components/media_player/pandora.py @@ -46,12 +46,12 @@ STATION_PATTERN = re.compile(r'Station\s"(.+?)"', re.MULTILINE) # pylint: disable=unused-argument def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the media player pandora platform.""" + """Set up the Pandora media player platform.""" if not _pianobar_exists(): return False pandora = PandoraMediaPlayer('Pandora') - # make sure we end the pandora subprocess on exit in case user doesn't + # Make sure we end the pandora subprocess on exit in case user doesn't # power it down. def _stop_pianobar(_event): pandora.turn_off() @@ -98,7 +98,7 @@ class PandoraMediaPlayer(MediaPlayerDevice): if self._player_state != STATE_OFF: return self._pianobar = pexpect.spawn('pianobar') - _LOGGER.info('Started pianobar subprocess') + _LOGGER.info("Started pianobar subprocess") mode = self._pianobar.expect(['Receiving new playlist', 'Select station:', 'Email:']) @@ -106,10 +106,10 @@ class PandoraMediaPlayer(MediaPlayerDevice): # station list was presented. dismiss it. self._pianobar.sendcontrol('m') elif mode == 2: - _LOGGER.warning('The pianobar client is not configured to log in. ' - 'Please create a config file for it as described ' - 'at https://home-assistant.io' - '/components/media_player.pandora/') + _LOGGER.warning( + "The pianobar client is not configured to log in. " + "Please create a config file for it as described at " + "https://home-assistant.io/components/media_player.pandora/") # pass through the email/password prompts to quit cleanly self._pianobar.sendcontrol('m') self._pianobar.sendcontrol('m') @@ -126,16 +126,16 @@ class PandoraMediaPlayer(MediaPlayerDevice): """Turn the media player off.""" import pexpect if self._pianobar is None: - _LOGGER.info('Pianobar subprocess already stopped') + _LOGGER.info("Pianobar subprocess already stopped") return self._pianobar.send('q') try: - _LOGGER.info('Stopped Pianobar subprocess') + _LOGGER.debug("Stopped Pianobar subprocess") self._pianobar.terminate() except pexpect.exceptions.TIMEOUT: # kill the process group os.killpg(os.getpgid(self._pianobar.pid), signal.SIGTERM) - _LOGGER.info('Killed Pianobar subprocess') + _LOGGER.debug("Killed Pianobar subprocess") self._pianobar = None self._player_state = STATE_OFF self.schedule_update_ha_state() @@ -203,9 +203,9 @@ class PandoraMediaPlayer(MediaPlayerDevice): try: station_index = self._stations.index(source) except ValueError: - _LOGGER.warning('Station `%s` is not in list', source) + _LOGGER.warning("Station %s is not in list", source) return - _LOGGER.info('Setting station %s, %d', source, station_index) + _LOGGER.debug("Setting station %s, %d", source, station_index) self._send_station_list_command() self._pianobar.sendline('{}'.format(station_index)) self._pianobar.expect('\r\n') @@ -243,7 +243,7 @@ class PandoraMediaPlayer(MediaPlayerDevice): 'Select station', 'Receiving new playlist']) except pexpect.exceptions.EOF: - _LOGGER.info('Pianobar process already exited.') + _LOGGER.info("Pianobar process already exited") return None self._log_match() @@ -252,12 +252,12 @@ class PandoraMediaPlayer(MediaPlayerDevice): response = None elif match_idx == 2: # stuck on a station selection dialog. Clear it. - _LOGGER.warning('On unexpected station list page.') + _LOGGER.warning("On unexpected station list page") self._pianobar.sendcontrol('m') # press enter self._pianobar.sendcontrol('m') # do it again b/c an 'i' got in response = self.update_playing_status() elif match_idx == 3: - _LOGGER.debug('Received new playlist list.') + _LOGGER.debug("Received new playlist list") response = self.update_playing_status() else: response = self._pianobar.before.decode('utf-8') @@ -268,9 +268,9 @@ class PandoraMediaPlayer(MediaPlayerDevice): station_match = re.search(STATION_PATTERN, response) if station_match: self._station = station_match.group(1) - _LOGGER.debug('Got station as: %s', self._station) + _LOGGER.debug("Got station as: %s", self._station) else: - _LOGGER.warning('No station match. ') + _LOGGER.warning("No station match") def _update_current_song(self, response): """Update info about current song.""" @@ -278,9 +278,9 @@ class PandoraMediaPlayer(MediaPlayerDevice): if song_match: (self._media_title, self._media_artist, self._media_album) = song_match.groups() - _LOGGER.debug('Got song as: %s', self._media_title) + _LOGGER.debug("Got song as: %s", self._media_title) else: - _LOGGER.warning('No song match.') + _LOGGER.warning("No song match") @util.Throttle(MIN_TIME_BETWEEN_UPDATES) def _update_song_position(self): @@ -305,7 +305,7 @@ class PandoraMediaPlayer(MediaPlayerDevice): def _log_match(self): """Log grabbed values from console.""" - _LOGGER.debug('Before: %s\nMatch: %s\nAfter: %s', + _LOGGER.debug("Before: %s\nMatch: %s\nAfter: %s", repr(self._pianobar.before), repr(self._pianobar.match), repr(self._pianobar.after)) @@ -313,10 +313,10 @@ class PandoraMediaPlayer(MediaPlayerDevice): def _send_pianobar_command(self, service_cmd): """Send a command to Pianobar.""" command = CMD_MAP.get(service_cmd) - _LOGGER.debug('Sending pinaobar command %s for %s', - command, service_cmd) + _LOGGER.debug( + "Sending pinaobar command %s for %s", command, service_cmd) if command is None: - _LOGGER.info('Command %s not supported yet', service_cmd) + _LOGGER.info("Command %s not supported yet", service_cmd) self._clear_buffer() self._pianobar.sendline(command) @@ -324,16 +324,16 @@ class PandoraMediaPlayer(MediaPlayerDevice): """List defined Pandora stations.""" self._send_station_list_command() station_lines = self._pianobar.before.decode('utf-8') - _LOGGER.debug('Getting stations: %s', station_lines) + _LOGGER.debug("Getting stations: %s", station_lines) self._stations = [] for line in station_lines.split('\r\n'): match = re.search(r'\d+\).....(.+)', line) if match: station = match.group(1).strip() - _LOGGER.debug('Found station %s', station) + _LOGGER.debug("Found station %s", station) self._stations.append(station) else: - _LOGGER.debug('No station match on `%s`', line) + _LOGGER.debug("No station match on %s", line) self._pianobar.sendcontrol('m') # press enter with blank line self._pianobar.sendcontrol('m') # do it twice in case an 'i' got in @@ -360,9 +360,8 @@ def _pianobar_exists(): if pianobar_exe: return True else: - _LOGGER.warning('The Pandora component depends on the Pianobar ' - 'client, which cannot be found. Please install ' - 'using instructions at' - 'https://home-assistant.io' - '/components/media_player.pandora/') + _LOGGER.warning( + "The Pandora component depends on the Pianobar client, which " + "cannot be found. Please install using instructions at " + "https://home-assistant.io/components/media_player.pandora/") return False diff --git a/homeassistant/components/media_player/philips_js.py b/homeassistant/components/media_player/philips_js.py index a4d3b02381a..b79f3eeeb89 100644 --- a/homeassistant/components/media_player/philips_js.py +++ b/homeassistant/components/media_player/philips_js.py @@ -43,7 +43,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ # pylint: disable=unused-argument def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the Philips TV platform.""" + """Set up the Philips TV platform.""" import haphilipsjs name = config.get(CONF_NAME) diff --git a/homeassistant/components/media_player/pioneer.py b/homeassistant/components/media_player/pioneer.py index 73f0d18f597..eb346502d95 100644 --- a/homeassistant/components/media_player/pioneer.py +++ b/homeassistant/components/media_player/pioneer.py @@ -40,11 +40,10 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the Pioneer platform.""" - pioneer = PioneerDevice(config.get(CONF_NAME), - config.get(CONF_HOST), - config.get(CONF_PORT), - config.get(CONF_TIMEOUT)) + """Set up the Pioneer platform.""" + pioneer = PioneerDevice( + config.get(CONF_NAME), config.get(CONF_HOST), config.get(CONF_PORT), + config.get(CONF_TIMEOUT)) if pioneer.update(): add_devices([pioneer]) @@ -126,9 +125,8 @@ class PioneerDevice(MediaPlayerDevice): # Build the source name dictionaries if necessary if not self._source_name_to_number: for i in range(MAX_SOURCE_NUMBERS): - result = self.telnet_request(telnet, - "?RGB" + str(i).zfill(2), - "RGB") + result = self.telnet_request( + telnet, "?RGB" + str(i).zfill(2), "RGB") if not result: continue diff --git a/homeassistant/components/media_player/plex.py b/homeassistant/components/media_player/plex.py index f601bf86944..e2f322a8ec8 100644 --- a/homeassistant/components/media_player/plex.py +++ b/homeassistant/components/media_player/plex.py @@ -76,7 +76,7 @@ def config_from_file(filename, config=None): def setup_platform(hass, config, add_devices_callback, discovery_info=None): - """Setup the Plex platform.""" + """Set up the Plex platform.""" # get config from plex.conf file_config = config_from_file(hass.config.path(PLEX_CONFIG_FILE)) @@ -100,7 +100,7 @@ def setup_platform(hass, config, add_devices_callback, discovery_info=None): def setup_plexserver(host, token, hass, config, add_devices_callback): - """Setup a plexserver based on host parameter.""" + """Set up a plexserver based on host parameter.""" import plexapi.server import plexapi.exceptions @@ -110,8 +110,7 @@ def setup_plexserver(host, token, hass, config, add_devices_callback): plexapi.exceptions.NotFound) as error: _LOGGER.info(error) # No token or wrong token - request_configuration(host, hass, config, - add_devices_callback) + request_configuration(host, hass, config, add_devices_callback) return # If we came here and configuring this host, mark as done @@ -141,7 +140,7 @@ def setup_plexserver(host, token, hass, config, add_devices_callback): try: devices = plexserver.clients() except plexapi.exceptions.BadRequest: - _LOGGER.exception('Error listing plex devices') + _LOGGER.exception("Error listing plex devices") return except OSError: _LOGGER.error("Could not connect to plex server at http://%s", @@ -214,10 +213,9 @@ def request_configuration(host, hass, config, add_devices_callback): return def plex_configuration_callback(data): - """The actions to do when our configuration callback is called.""" - setup_plexserver(host, - data.get('token'), hass, config, - add_devices_callback) + """Handle configuration changes.""" + setup_plexserver( + host, data.get('token'), hass, config, add_devices_callback) _CONFIGURING[host] = configurator.request_config( hass, @@ -547,12 +545,12 @@ class PlexClient(MediaPlayerDevice): @property def media_content_id(self): - """Content ID of current playing media.""" + """Return the content ID of current playing media.""" return self._media_content_id @property def media_content_type(self): - """Content type of current playing media.""" + """Return the content type of current playing media.""" if self._session_type == 'clip': _LOGGER.debug("Clip content type detected, " "compatibility may vary: %s", self.entity_id) @@ -568,57 +566,57 @@ class PlexClient(MediaPlayerDevice): @property def media_artist(self): - """Artist of current playing media, music track only.""" + """Return the artist of current playing media, music track only.""" return self._media_artist @property def media_album_name(self): - """Album name of current playing media, music track only.""" + """Return the album name of current playing media, music track only.""" return self._media_album_name @property def media_album_artist(self): - """Album artist of current playing media, music track only.""" + """Return the album artist of current playing media, music only.""" return self._media_album_artist @property def media_track(self): - """Track number of current playing media, music track only.""" + """Return the track number of current playing media, music only.""" return self._media_track @property def media_duration(self): - """Duration of current playing media in seconds.""" + """Return the duration of current playing media in seconds.""" return self._media_duration @property def media_image_url(self): - """Image url of current playing media.""" + """Return the image URL of current playing media.""" return self._media_image_url @property def media_title(self): - """Title of current playing media.""" + """Return the title of current playing media.""" return self._media_title @property def media_season(self): - """Season of curent playing media (TV Show only).""" + """Return the season of current playing media (TV Show only).""" return self._media_season @property def media_series_title(self): - """The title of the series of current playing media (TV Show only).""" + """Return the title of the series of current playing media.""" return self._media_series_title @property def media_episode(self): - """Episode of current playing media (TV Show only).""" + """Return the episode of current playing media (TV Show only).""" return self._media_episode @property def make(self): - """The make of the device (ex. SHIELD Android TV).""" + """Return the make of the device (ex. SHIELD Android TV).""" return self._make @property diff --git a/homeassistant/components/media_player/roku.py b/homeassistant/components/media_player/roku.py index 8d45945eee1..97f7ba2e716 100644 --- a/homeassistant/components/media_player/roku.py +++ b/homeassistant/components/media_player/roku.py @@ -39,7 +39,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the Roku platform.""" + """Set up the Roku platform.""" hosts = [] if discovery_info: @@ -48,7 +48,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None): if host in KNOWN_HOSTS: return - _LOGGER.debug('Discovered Roku: %s', host) + _LOGGER.debug("Discovered Roku: %s", host) hosts.append(discovery_info.get("host")) elif CONF_HOST in config: @@ -175,9 +175,8 @@ class RokuDevice(MediaPlayerDevice): elif self.current_app.id is None: return None - return 'http://{0}:{1}/query/icon/{2}'.format(self.ip_address, - DEFAULT_PORT, - self.current_app.id) + return 'http://{0}:{1}/query/icon/{2}'.format( + self.ip_address, DEFAULT_PORT, self.current_app.id) @property def app_name(self): diff --git a/homeassistant/components/media_player/russound_rnet.py b/homeassistant/components/media_player/russound_rnet.py index 7ae16adcce3..6615f85db65 100644 --- a/homeassistant/components/media_player/russound_rnet.py +++ b/homeassistant/components/media_player/russound_rnet.py @@ -4,8 +4,8 @@ Support for interfacing with Russound via RNET Protocol. For more details about this platform, please refer to the documentation at https://home-assistant.io/components/media_player.russound_rnet/ """ - import logging + import voluptuous as vol from homeassistant.components.media_player import ( @@ -45,7 +45,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the Russound RNET platform.""" + """Set up the Russound RNET platform.""" host = config.get(CONF_HOST) port = config.get(CONF_PORT) @@ -163,5 +163,5 @@ class RussoundRNETDevice(MediaPlayerDevice): @property def source_list(self): - """List of available input sources.""" + """Return a list of available input sources.""" return self._sources diff --git a/homeassistant/components/media_player/samsungtv.py b/homeassistant/components/media_player/samsungtv.py index c99ad49577c..0153eb687ff 100644 --- a/homeassistant/components/media_player/samsungtv.py +++ b/homeassistant/components/media_player/samsungtv.py @@ -44,7 +44,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ # pylint: disable=unused-argument def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the Samsung TV platform.""" + """Set up the Samsung TV platform.""" known_devices = hass.data.get(KNOWN_DEVICES_KEY) if known_devices is None: known_devices = set() @@ -66,8 +66,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None): timeout = DEFAULT_TIMEOUT mac = None else: - _LOGGER.warning( - 'Internal error on samsungtv component. Cannot determine device') + _LOGGER.warning("Cannot determine device") return # Only add a device once, so discovered devices do not override manual diff --git a/homeassistant/components/media_player/snapcast.py b/homeassistant/components/media_player/snapcast.py index 3e06cca38a5..f893dcdeed1 100644 --- a/homeassistant/components/media_player/snapcast.py +++ b/homeassistant/components/media_player/snapcast.py @@ -34,7 +34,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ # pylint: disable=unused-argument def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the Snapcast platform.""" + """Set up the Snapcast platform.""" import snapcast.control host = config.get(CONF_HOST) port = config.get(CONF_PORT, snapcast.control.CONTROL_PORT) @@ -42,8 +42,8 @@ def setup_platform(hass, config, add_devices, discovery_info=None): try: server = snapcast.control.Snapserver(host, port) except socket.gaierror: - _LOGGER.error('Could not connect to Snapcast server at %s:%d', - host, port) + _LOGGER.error( + "Could not connect to Snapcast server at %s:%d", host, port) return False add_devices([SnapcastDevice(client) for client in server.clients]) diff --git a/homeassistant/components/media_player/sonos.py b/homeassistant/components/media_player/sonos.py index 00cc52ab3a1..da75b89c19d 100644 --- a/homeassistant/components/media_player/sonos.py +++ b/homeassistant/components/media_player/sonos.py @@ -92,7 +92,7 @@ SONOS_SET_TIMER_SCHEMA = SONOS_SCHEMA.extend({ def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the Sonos platform.""" + """Set up the Sonos platform.""" import soco if DATA_SONOS not in hass.data: @@ -105,7 +105,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None): if discovery_info: player = soco.SoCo(discovery_info.get('host')) - # if device allready exists by config + # if device already exists by config if player.uid in [x.unique_id for x in hass.data[DATA_SONOS]]: return @@ -132,18 +132,18 @@ def setup_platform(hass, config, add_devices, discovery_info=None): interface_addr=config.get(CONF_INTERFACE_ADDR)) if not players: - _LOGGER.warning('No Sonos speakers found.') + _LOGGER.warning("No Sonos speakers found") return hass.data[DATA_SONOS] = [SonosDevice(p) for p in players] add_devices(hass.data[DATA_SONOS], True) - _LOGGER.info('Added %s Sonos speakers', len(players)) + _LOGGER.info("Added %s Sonos speakers", len(players)) descriptions = load_yaml_config_file( path.join(path.dirname(__file__), 'services.yaml')) def service_handle(service): - """Internal func for applying a service.""" + """Handle for services.""" entity_ids = service.data.get('entity_id') if entity_ids: @@ -221,28 +221,28 @@ def _get_entity_from_soco(hass, soco): for device in hass.data[DATA_SONOS]: if soco == device.soco: return device - raise ValueError("No entity for SoCo device!") + raise ValueError("No entity for SoCo device") def soco_error(funct): - """Decorator to catch soco exceptions.""" + """Catch soco exceptions.""" @ft.wraps(funct) def wrapper(*args, **kwargs): - """Wrapper for all soco exception.""" + """Wrap for all soco exception.""" from soco.exceptions import SoCoException try: return funct(*args, **kwargs) except SoCoException as err: - _LOGGER.error("Error on %s with %s.", funct.__name__, err) + _LOGGER.error("Error on %s with %s", funct.__name__, err) return wrapper def soco_coordinator(funct): - """Decorator to call funct on coordinator.""" + """Call function on coordinator.""" @ft.wraps(funct) def wrapper(device, *args, **kwargs): - """Wrapper for call to coordinator.""" + """Wrap for call to coordinator.""" if device.is_coordinator: return funct(device, *args, **kwargs) return funct(device.coordinator, *args, **kwargs) @@ -296,7 +296,7 @@ class SonosDevice(MediaPlayerDevice): @property def should_poll(self): - """Polling needed.""" + """Return the polling state.""" return True @property @@ -340,8 +340,7 @@ class SonosDevice(MediaPlayerDevice): def _is_available(self): try: sock = socket.create_connection( - address=(self._player.ip_address, 1443), - timeout=3) + address=(self._player.ip_address, 1443), timeout=3) sock.close() return True except socket.error: diff --git a/homeassistant/components/media_player/soundtouch.py b/homeassistant/components/media_player/soundtouch.py index fb2e02494df..4827732bd21 100644 --- a/homeassistant/components/media_player/soundtouch.py +++ b/homeassistant/components/media_player/soundtouch.py @@ -1,4 +1,9 @@ -"""Support for interface with a Bose Soundtouch.""" +""" +Support for interface with a Bose Soundtouch. + +For more details about this platform, please refer to the documentation at +https://home-assistant.io/components/media_player.soundtouch/ +""" import logging from os import path @@ -69,14 +74,14 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the Bose Soundtouch platform.""" + """Set up the Bose Soundtouch platform.""" if DATA_SOUNDTOUCH not in hass.data: hass.data[DATA_SOUNDTOUCH] = [] if discovery_info: # Discovery - host = discovery_info["host"] - port = int(discovery_info["port"]) + host = discovery_info['host'] + port = int(discovery_info['port']) # if device already exists by config if host in [device.config['host'] for device in @@ -119,8 +124,8 @@ def setup_platform(hass, config, add_devices, discovery_info=None): device.entity_id == master_device_id].__iter__(), None) if master is None: - _LOGGER.warning("Unable to find master with entity_id:" + str( - master_device_id)) + _LOGGER.warning("Unable to find master with entity_id: %s", + str(master_device_id)) return if service.service == SERVICE_PLAY_EVERYWHERE: diff --git a/homeassistant/components/media_player/spotify.py b/homeassistant/components/media_player/spotify.py index fcb54245ead..a73a4a922ca 100644 --- a/homeassistant/components/media_player/spotify.py +++ b/homeassistant/components/media_player/spotify.py @@ -4,7 +4,6 @@ Support for interacting with Spotify Connect. For more details about this platform, please refer to the documentation at https://home-assistant.io/components/media_player.spotify/ """ - import logging from datetime import timedelta @@ -22,7 +21,6 @@ from homeassistant.const import ( CONF_NAME, STATE_PLAYING, STATE_PAUSED, STATE_IDLE, STATE_UNKNOWN) import homeassistant.helpers.config_validation as cv - COMMIT = '544614f4b1d508201d363e84e871f86c90aa26b2' REQUIREMENTS = ['https://github.com/happyleavesaoc/spotipy/' 'archive/%s.zip#spotipy==2.4.4' % COMMIT] @@ -72,7 +70,7 @@ def request_configuration(hass, config, add_devices, oauth): def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the Spotify platform.""" + """Set up the Spotify platform.""" import spotipy.oauth2 callback_url = '{}{}'.format(hass.config.api.base_url, AUTH_CALLBACK_PATH) cache = config.get(CONF_CACHE_PATH, hass.config.path(DEFAULT_CACHE_PATH)) @@ -82,7 +80,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None): cache_path=cache) token_info = oauth.get_cached_token() if not token_info: - _LOGGER.info('no token; requesting authorization') + _LOGGER.info("no token; requesting authorization") hass.http.register_view(SpotifyAuthCallbackView( config, add_devices, oauth)) request_configuration(hass, config, add_devices, oauth) @@ -225,31 +223,31 @@ class SpotifyMediaPlayer(MediaPlayerDevice): elif media_type == MEDIA_TYPE_PLAYLIST: kwargs['context_uri'] = media_id else: - _LOGGER.error('media type %s is not supported', media_type) + _LOGGER.error("media type %s is not supported", media_type) return if not media_id.startswith('spotify:'): - _LOGGER.error('media id must be spotify uri') + _LOGGER.error("media id must be spotify uri") return self._player.start_playback(**kwargs) @property def name(self): - """Name.""" + """Return the name.""" return self._name @property def icon(self): - """Icon.""" + """Return the icon.""" return ICON @property def state(self): - """Playback state.""" + """Return the playback state.""" return self._state @property def volume_level(self): - """Device volume.""" + """Return the device volume.""" return self._volume @property @@ -259,40 +257,40 @@ class SpotifyMediaPlayer(MediaPlayerDevice): @property def source_list(self): - """Playback devices.""" + """Return a list of source devices.""" return list(self._devices.keys()) @property def source(self): - """Current playback device.""" + """Return the current playback device.""" return self._current_device @property def media_content_id(self): - """Media URL.""" + """Return the media URL.""" return self._uri @property def media_image_url(self): - """Media image url.""" + """Return the media image URL.""" return self._image_url @property def media_artist(self): - """Media artist.""" + """Return the media artist.""" return self._artist @property def media_album_name(self): - """Media album.""" + """Return the media album.""" return self._album @property def media_title(self): - """Media title.""" + """Return the media title.""" return self._title @property def supported_features(self): - """Media player features that are supported.""" + """Return the media player features that are supported.""" return SUPPORT_SPOTIFY diff --git a/homeassistant/components/media_player/squeezebox.py b/homeassistant/components/media_player/squeezebox.py index 40c48f55215..42efe183421 100644 --- a/homeassistant/components/media_player/squeezebox.py +++ b/homeassistant/components/media_player/squeezebox.py @@ -44,7 +44,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ @asyncio.coroutine def async_setup_platform(hass, config, async_add_devices, discovery_info=None): - """Setup the squeezebox platform.""" + """Set up the squeezebox platform.""" import socket username = config.get(CONF_USERNAME) @@ -65,8 +65,8 @@ def async_setup_platform(hass, config, async_add_devices, discovery_info=None): try: ipaddr = socket.gethostbyname(host) except (OSError) as error: - _LOGGER.error("Could not communicate with %s:%d: %s", - host, port, error) + _LOGGER.error( + "Could not communicate with %s:%d: %s", host, port, error) return False _LOGGER.debug("Creating LMS object for %s", ipaddr) diff --git a/homeassistant/components/media_player/universal.py b/homeassistant/components/media_player/universal.py index ba671f25f38..9709ad80c0a 100644 --- a/homeassistant/components/media_player/universal.py +++ b/homeassistant/components/media_player/universal.py @@ -51,7 +51,7 @@ _LOGGER = logging.getLogger(__name__) @asyncio.coroutine def async_setup_platform(hass, config, async_add_devices, discovery_info=None): - """Setup the universal media players.""" + """Set up the universal media players.""" if not validate_config(config): return @@ -72,7 +72,7 @@ def validate_config(config): # Validate name if CONF_NAME not in config: - _LOGGER.error('Universal Media Player configuration requires name') + _LOGGER.error("Universal Media Player configuration requires name") return False validate_children(config) @@ -83,7 +83,7 @@ def validate_config(config): for key in config: if key not in [CONF_NAME, CONF_CHILDREN, CONF_COMMANDS, CONF_ATTRS]: _LOGGER.warning( - 'Universal Media Player (%s) unrecognized parameter %s', + "Universal Media Player (%s) unrecognized parameter %s", config[CONF_NAME], key) del_keys.append(key) for key in del_keys: @@ -96,13 +96,12 @@ def validate_children(config): """Validate children.""" if CONF_CHILDREN not in config: _LOGGER.info( - 'No children under Universal Media Player (%s)', config[CONF_NAME]) + "No children under Universal Media Player (%s)", config[CONF_NAME]) config[CONF_CHILDREN] = [] elif not isinstance(config[CONF_CHILDREN], list): _LOGGER.warning( - 'Universal Media Player (%s) children not list in config. ' - 'They will be ignored.', - config[CONF_NAME]) + "Universal Media Player (%s) children not list in config. " + "They will be ignored", config[CONF_NAME]) config[CONF_CHILDREN] = [] @@ -112,9 +111,8 @@ def validate_commands(config): config[CONF_COMMANDS] = {} elif not isinstance(config[CONF_COMMANDS], dict): _LOGGER.warning( - 'Universal Media Player (%s) specified commands not dict in ' - 'config. They will be ignored.', - config[CONF_NAME]) + "Universal Media Player (%s) specified commands not dict in " + "config. They will be ignored", config[CONF_NAME]) config[CONF_COMMANDS] = {} @@ -124,9 +122,8 @@ def validate_attributes(config): config[CONF_ATTRS] = {} elif not isinstance(config[CONF_ATTRS], dict): _LOGGER.warning( - 'Universal Media Player (%s) specified attributes ' - 'not dict in config. They will be ignored.', - config[CONF_NAME]) + "Universal Media Player (%s) specified attributes " + "not dict in config. They will be ignored", config[CONF_NAME]) config[CONF_ATTRS] = {} for key, val in config[CONF_ATTRS].items(): @@ -173,8 +170,8 @@ class UniversalMediaPlayer(MediaPlayerDevice): def _override_or_child_attr(self, attr_name): """Return either the override or the active child for attr_name.""" if attr_name in self._attrs: - return self._entity_lkp(self._attrs[attr_name][0], - self._attrs[attr_name][1]) + return self._entity_lkp( + self._attrs[attr_name][0], self._attrs[attr_name][1]) return self._child_attr(attr_name) @@ -215,8 +212,8 @@ class UniversalMediaPlayer(MediaPlayerDevice): def master_state(self): """Return the master state for entity or None.""" if CONF_STATE in self._attrs: - master_state = self._entity_lkp(self._attrs[CONF_STATE][0], - self._attrs[CONF_STATE][1]) + master_state = self._entity_lkp( + self._attrs[CONF_STATE][0], self._attrs[CONF_STATE][1]) return master_state if master_state else STATE_OFF else: return None @@ -348,7 +345,7 @@ class UniversalMediaPlayer(MediaPlayerDevice): @property def source(self): - """"Return the current input source of the device.""" + """Return the current input source of the device.""" return self._override_or_child_attr(ATTR_INPUT_SOURCE) @property diff --git a/homeassistant/components/media_player/vlc.py b/homeassistant/components/media_player/vlc.py index 9439e6da5ad..f77b06054e1 100644 --- a/homeassistant/components/media_player/vlc.py +++ b/homeassistant/components/media_player/vlc.py @@ -34,7 +34,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ # pylint: disable=unused-argument def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the vlc platform.""" + """Set up the vlc platform.""" add_devices([VlcDevice(config.get(CONF_NAME, DEFAULT_NAME), config.get(CONF_ARGUMENTS))]) diff --git a/homeassistant/components/media_player/volumio.py b/homeassistant/components/media_player/volumio.py index 5944921f94f..9bf0351d200 100755 --- a/homeassistant/components/media_player/volumio.py +++ b/homeassistant/components/media_player/volumio.py @@ -140,7 +140,7 @@ class Volumio(MediaPlayerDevice): if str(url[0:2]).lower() == 'ht': mediaurl = url else: - mediaurl = "http://" + self.host + ":" + str(self.port) + url + mediaurl = "http://{}:{}{}".format(self.host, self.port, url) return mediaurl @property diff --git a/homeassistant/components/media_player/webostv.py b/homeassistant/components/media_player/webostv.py index 67f2afc8520..112b84ec5f0 100644 --- a/homeassistant/components/media_player/webostv.py +++ b/homeassistant/components/media_player/webostv.py @@ -62,7 +62,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ # pylint: disable=unused-argument def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the LG WebOS TV platform.""" + """Set up the LG WebOS TV platform.""" if discovery_info is not None: host = urlparse(discovery_info[1]).hostname else: @@ -84,7 +84,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None): def setup_tv(host, mac, name, customize, config, hass, add_devices): - """Setup a LG WebOS TV based on host parameter.""" + """Set up a LG WebOS TV based on host parameter.""" from pylgtv import WebOsClient from pylgtv import PyLGTVPairException from websockets.exceptions import ConnectionClosed @@ -133,7 +133,7 @@ def request_configuration( # pylint: disable=unused-argument def lgtv_configuration_callback(data): - """The actions to do when our configuration callback is called.""" + """Handle configuration changes.""" setup_tv(host, mac, name, customize, config, hass, add_devices) _CONFIGURING[host] = configurator.request_config( diff --git a/homeassistant/components/media_player/yamaha.py b/homeassistant/components/media_player/yamaha.py index 243b96220c9..de19ab238b5 100644 --- a/homeassistant/components/media_player/yamaha.py +++ b/homeassistant/components/media_player/yamaha.py @@ -44,7 +44,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the Yamaha platform.""" + """Set up the Yamaha platform.""" import rxv # keep track of configured receivers so that we don't end up # discovering a receiver dynamically that we have static config @@ -241,7 +241,7 @@ class YamahaDevice(MediaPlayerDevice): function() except rxv.exceptions.ResponseException: _LOGGER.warning( - 'Failed to execute %s on %s', function_text, self._name) + "Failed to execute %s on %s", function_text, self._name) def select_source(self, source): """Select input source.""" diff --git a/homeassistant/components/microsoft_face.py b/homeassistant/components/microsoft_face.py index 53a856e0eb4..a0ff2ed99e7 100644 --- a/homeassistant/components/microsoft_face.py +++ b/homeassistant/components/microsoft_face.py @@ -111,7 +111,7 @@ def face_person(hass, group, person, camera_entity): @asyncio.coroutine def async_setup(hass, config): - """Setup microsoft face.""" + """Set up microsoft face.""" entities = {} face = MicrosoftFace( hass, diff --git a/homeassistant/components/modbus.py b/homeassistant/components/modbus.py index 416ce7ec6ce..b7b6193f6c0 100644 --- a/homeassistant/components/modbus.py +++ b/homeassistant/components/modbus.py @@ -67,7 +67,7 @@ HUB = None def setup(hass, config): - """Setup Modbus component.""" + """Set up Modbus component.""" # Modbus connection type # pylint: disable=global-statement, import-error client_type = config[DOMAIN][CONF_TYPE] diff --git a/homeassistant/components/mqtt/__init__.py b/homeassistant/components/mqtt/__init__.py index 89c003c070c..b4701ad4690 100644 --- a/homeassistant/components/mqtt/__init__.py +++ b/homeassistant/components/mqtt/__init__.py @@ -214,8 +214,7 @@ def async_subscribe(hass, topic, msg_callback, qos=DEFAULT_QOS, if encoding is not None: try: payload = dp_payload.decode(encoding) - _LOGGER.debug("Received message on %s: %s", - dp_topic, payload) + _LOGGER.debug("Received message on %s: %s", dp_topic, payload) except (AttributeError, UnicodeDecodeError): _LOGGER.error("Illegal payload encoding %s from " "MQTT topic: %s, Payload: %s", diff --git a/homeassistant/components/mqtt/discovery.py b/homeassistant/components/mqtt/discovery.py index c3ff0f9dce5..dbee9dce571 100644 --- a/homeassistant/components/mqtt/discovery.py +++ b/homeassistant/components/mqtt/discovery.py @@ -31,7 +31,7 @@ ALLOWED_PLATFORMS = { @asyncio.coroutine def async_start(hass, discovery_topic, hass_config): - """Initialization of MQTT Discovery.""" + """Initialize of MQTT Discovery.""" # pylint: disable=unused-variable @asyncio.coroutine def async_device_message_received(topic, payload, qos): diff --git a/homeassistant/components/mqtt/server.py b/homeassistant/components/mqtt/server.py index c51649a3bef..0e866723b34 100644 --- a/homeassistant/components/mqtt/server.py +++ b/homeassistant/components/mqtt/server.py @@ -47,7 +47,7 @@ def async_start(hass, server_config): broker = Broker(server_config, hass.loop) yield from broker.start() except BrokerException: - logging.getLogger(__name__).exception('Error initializing MQTT server') + logging.getLogger(__name__).exception("Error initializing MQTT server") return False, None finally: passwd.close() diff --git a/homeassistant/components/notify/__init__.py b/homeassistant/components/notify/__init__.py index 35a01e25475..cf05629ce1b 100644 --- a/homeassistant/components/notify/__init__.py +++ b/homeassistant/components/notify/__init__.py @@ -68,7 +68,7 @@ def send_message(hass, message, title=None, data=None): @asyncio.coroutine def async_setup(hass, config): - """Setup the notify services.""" + """Set up the notify services.""" descriptions = yield from hass.loop.run_in_executor( None, load_yaml_config_file, os.path.join(os.path.dirname(__file__), 'services.yaml')) @@ -166,7 +166,7 @@ def async_setup(hass, config): @asyncio.coroutine def async_platform_discovered(platform, info): - """Callback to load a platform.""" + """Handle for discovered platform.""" yield from async_setup_platform(platform, discovery_info=info) discovery.async_listen_platform(hass, DOMAIN, async_platform_discovered) diff --git a/homeassistant/components/notify/apns.py b/homeassistant/components/notify/apns.py index 83ae6d489a1..ac273443506 100644 --- a/homeassistant/components/notify/apns.py +++ b/homeassistant/components/notify/apns.py @@ -77,18 +77,18 @@ class ApnsDevice(object): @property def push_id(self): - """The APNS id for the device.""" + """Return the APNS id for the device.""" return self.device_push_id @property def name(self): - """The friendly name for the device.""" + """Return the friendly name for the device.""" return self.device_name @property def tracking_device_id(self): """ - Device Id. + Return the device Id. The id of a device that is tracked by the device tracking component. @@ -98,7 +98,7 @@ class ApnsDevice(object): @property def full_tracking_device_id(self): """ - Fully qualified device id. + Return the fully qualified device id. The full id of a device that is tracked by the device tracking component. @@ -107,7 +107,7 @@ class ApnsDevice(object): @property def disabled(self): - """Should receive notifications.""" + """Return the .""" return self.device_disabled def disable(self): @@ -177,9 +177,7 @@ class ApnsNotificationService(BaseNotificationService): if device.tracking_device_id is not None ] track_state_change( - hass, - tracking_ids, - self.device_state_changed_listener) + hass, tracking_ids, self.device_state_changed_listener) def device_state_changed_listener(self, entity_id, from_s, to_s): """ @@ -205,10 +203,7 @@ class ApnsNotificationService(BaseNotificationService): current_tracking_id = None if current_device is None \ else current_device.tracking_device_id - device = ApnsDevice( - push_id, - device_name, - current_tracking_id) + device = ApnsDevice(push_id, device_name, current_tracking_id) if current_device is None: self.devices[push_id] = device @@ -244,15 +239,15 @@ class ApnsNotificationService(BaseNotificationService): elif isinstance(message, template_helper.Template): rendered_message = message.render() else: - rendered_message = "" + rendered_message = '' payload = Payload( alert=rendered_message, - badge=message_data.get("badge"), - sound=message_data.get("sound"), - category=message_data.get("category"), - custom=message_data.get("custom", {}), - content_available=message_data.get("content_available", False)) + badge=message_data.get('badge'), + sound=message_data.get('sound'), + category=message_data.get('category'), + custom=message_data.get('custom', {}), + content_available=message_data.get('content_available', False)) device_update = False @@ -266,13 +261,9 @@ class ApnsNotificationService(BaseNotificationService): if device_state is None or state == str(device_state): try: apns.send_notification( - push_id, - payload, - topic=self.topic) + push_id, payload, topic=self.topic) except Unregistered: - logging.error( - "Device %s has unregistered.", - push_id) + logging.error("Device %s has unregistered", push_id) device_update = True device.disable() diff --git a/homeassistant/components/notify/aws_lambda.py b/homeassistant/components/notify/aws_lambda.py index 801537fbba6..7bdc103523d 100644 --- a/homeassistant/components/notify/aws_lambda.py +++ b/homeassistant/components/notify/aws_lambda.py @@ -17,8 +17,9 @@ from homeassistant.components.notify import ( import homeassistant.helpers.config_validation as cv from homeassistant.remote import JSONEncoder +REQUIREMENTS = ['boto3==1.4.3'] + _LOGGER = logging.getLogger(__name__) -REQUIREMENTS = ["boto3==1.4.3"] CONF_REGION = 'region_name' CONF_ACCESS_KEY_ID = 'aws_access_key_id' @@ -28,7 +29,7 @@ CONF_CONTEXT = 'context' ATTR_CREDENTIALS = 'credentials' PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ - vol.Optional(CONF_REGION, default="us-east-1"): cv.string, + vol.Optional(CONF_REGION, default='us-east-1'): cv.string, vol.Inclusive(CONF_ACCESS_KEY_ID, ATTR_CREDENTIALS): cv.string, vol.Inclusive(CONF_SECRET_ACCESS_KEY, ATTR_CREDENTIALS): cv.string, vol.Exclusive(CONF_PROFILE_NAME, ATTR_CREDENTIALS): cv.string, @@ -40,8 +41,8 @@ def get_service(hass, config, discovery_info=None): """Get the AWS Lambda notification service.""" context_str = json.dumps({'hass': hass.config.as_dict(), 'custom': config[CONF_CONTEXT]}, cls=JSONEncoder) - context_b64 = base64.b64encode(context_str.encode("utf-8")) - context = context_b64.decode("utf-8") + context_b64 = base64.b64encode(context_str.encode('utf-8')) + context = context_b64.decode('utf-8') # pylint: disable=import-error import boto3 diff --git a/homeassistant/components/notify/aws_sns.py b/homeassistant/components/notify/aws_sns.py index 9b95c486b4d..27fa7ac41c2 100644 --- a/homeassistant/components/notify/aws_sns.py +++ b/homeassistant/components/notify/aws_sns.py @@ -26,7 +26,7 @@ CONF_PROFILE_NAME = 'profile_name' ATTR_CREDENTIALS = 'credentials' PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ - vol.Optional(CONF_REGION, default="us-east-1"): cv.string, + vol.Optional(CONF_REGION, default='us-east-1'): cv.string, vol.Inclusive(CONF_ACCESS_KEY_ID, ATTR_CREDENTIALS): cv.string, vol.Inclusive(CONF_SECRET_ACCESS_KEY, ATTR_CREDENTIALS): cv.string, vol.Exclusive(CONF_PROFILE_NAME, ATTR_CREDENTIALS): cv.string, diff --git a/homeassistant/components/notify/aws_sqs.py b/homeassistant/components/notify/aws_sqs.py index 76a137734d3..227dba14b43 100644 --- a/homeassistant/components/notify/aws_sqs.py +++ b/homeassistant/components/notify/aws_sqs.py @@ -25,7 +25,7 @@ CONF_PROFILE_NAME = 'profile_name' ATTR_CREDENTIALS = 'credentials' PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ - vol.Optional(CONF_REGION, default="us-east-1"): cv.string, + vol.Optional(CONF_REGION, default='us-east-1'): cv.string, vol.Inclusive(CONF_ACCESS_KEY_ID, ATTR_CREDENTIALS): cv.string, vol.Inclusive(CONF_SECRET_ACCESS_KEY, ATTR_CREDENTIALS): cv.string, vol.Exclusive(CONF_PROFILE_NAME, ATTR_CREDENTIALS): cv.string, diff --git a/homeassistant/components/notify/ciscospark.py b/homeassistant/components/notify/ciscospark.py index ee6115c3f79..0bf184023d7 100644 --- a/homeassistant/components/notify/ciscospark.py +++ b/homeassistant/components/notify/ciscospark.py @@ -34,29 +34,17 @@ def get_service(hass, config, discovery_info=None): class CiscoSparkNotificationService(BaseNotificationService): - """CiscoSparkNotificationService.""" + """The Cisco Spark Notification Service.""" def __init__(self, token, default_room): - """ - Initialize the service. - - Args: - token: Cisco Spark Developer's Token - default_room: Cisco Spark Room ID - """ + """Initialize the service.""" from ciscosparkapi import CiscoSparkAPI self._default_room = default_room self._token = token self._spark = CiscoSparkAPI(access_token=self._token) def send_message(self, message="", **kwargs): - """ - Send a message to a user. - - Args: - message: notificaiton text - kwargs: attributes used - 'title' - """ + """Send a message to a user.""" from ciscosparkapi import SparkApiError try: title = "" diff --git a/homeassistant/components/notify/command_line.py b/homeassistant/components/notify/command_line.py index cd3bdfb16f3..4a7483d6e4d 100644 --- a/homeassistant/components/notify/command_line.py +++ b/homeassistant/components/notify/command_line.py @@ -43,6 +43,6 @@ class CommandLineNotificationService(BaseNotificationService): stdin=subprocess.PIPE, shell=True) proc.communicate(input=message) if proc.returncode != 0: - _LOGGER.error('Command failed: %s', self.command) + _LOGGER.error("Command failed: %s", self.command) except subprocess.SubprocessError: - _LOGGER.error('Error trying to exec Command: %s', self.command) + _LOGGER.error("Error trying to exec Command: %s", self.command) diff --git a/homeassistant/components/notify/facebook.py b/homeassistant/components/notify/facebook.py index 8f8bb98bbe1..ef85450ca63 100644 --- a/homeassistant/components/notify/facebook.py +++ b/homeassistant/components/notify/facebook.py @@ -69,6 +69,6 @@ class FacebookNotificationService(BaseNotificationService): obj = resp.json() error_message = obj['error']['message'] error_code = obj['error']['code'] - _LOGGER.error("Error %s : %s (Code %s)", resp.status_code, - error_message, - error_code) + _LOGGER.error( + "Error %s : %s (Code %s)", resp.status_code, error_message, + error_code) diff --git a/homeassistant/components/notify/free_mobile.py b/homeassistant/components/notify/free_mobile.py index 74d9a80ad86..92ea75a79dc 100644 --- a/homeassistant/components/notify/free_mobile.py +++ b/homeassistant/components/notify/free_mobile.py @@ -13,9 +13,9 @@ from homeassistant.components.notify import ( from homeassistant.const import CONF_ACCESS_TOKEN, CONF_USERNAME import homeassistant.helpers.config_validation as cv -_LOGGER = logging.getLogger(__name__) REQUIREMENTS = ['freesms==0.1.1'] +_LOGGER = logging.getLogger(__name__) PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ vol.Required(CONF_USERNAME): cv.string, @@ -25,8 +25,8 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ def get_service(hass, config, discovery_info=None): """Get the Free Mobile SMS notification service.""" - return FreeSMSNotificationService(config[CONF_USERNAME], - config[CONF_ACCESS_TOKEN]) + return FreeSMSNotificationService( + config[CONF_USERNAME], config[CONF_ACCESS_TOKEN]) class FreeSMSNotificationService(BaseNotificationService): diff --git a/homeassistant/components/notify/gntp.py b/homeassistant/components/notify/gntp.py index 5aaaf64577c..b7e5b1b813a 100644 --- a/homeassistant/components/notify/gntp.py +++ b/homeassistant/components/notify/gntp.py @@ -73,7 +73,7 @@ class GNTPNotificationService(BaseNotificationService): try: self.gntp.register() except gntp.errors.NetworkError: - _LOGGER.error('Unable to register with the GNTP host.') + _LOGGER.error("Unable to register with the GNTP host") return def send_message(self, message="", **kwargs): diff --git a/homeassistant/components/notify/group.py b/homeassistant/components/notify/group.py index 07cc7b1146a..a98bb6c2317 100644 --- a/homeassistant/components/notify/group.py +++ b/homeassistant/components/notify/group.py @@ -17,7 +17,7 @@ import homeassistant.helpers.config_validation as cv _LOGGER = logging.getLogger(__name__) -CONF_SERVICES = "services" +CONF_SERVICES = 'services' PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ vol.Required(CONF_SERVICES): vol.All(cv.ensure_list, [{ diff --git a/homeassistant/components/notify/html5.py b/homeassistant/components/notify/html5.py index 419e5aba2f8..3aa5db7faba 100644 --- a/homeassistant/components/notify/html5.py +++ b/homeassistant/components/notify/html5.py @@ -90,12 +90,10 @@ CALLBACK_EVENT_PAYLOAD_SCHEMA = vol.Schema({ NOTIFY_CALLBACK_EVENT = 'html5_notification' -# badge and timestamp are Chrome specific (not in official spec) - -HTML5_SHOWNOTIFICATION_PARAMETERS = ('actions', 'badge', 'body', 'dir', - 'icon', 'lang', 'renotify', - 'requireInteraction', 'tag', 'timestamp', - 'vibrate') +# Badge and timestamp are Chrome specific (not in official spec) +HTML5_SHOWNOTIFICATION_PARAMETERS = ( + 'actions', 'badge', 'body', 'dir', 'icon', 'lang', 'renotify', + 'requireInteraction', 'tag', 'timestamp', 'vibrate') def get_service(hass, config, discovery_info=None): @@ -115,8 +113,8 @@ def get_service(hass, config, discovery_info=None): gcm_sender_id = config.get(ATTR_GCM_SENDER_ID) if gcm_sender_id is not None: - add_manifest_json_key(ATTR_GCM_SENDER_ID, - config.get(ATTR_GCM_SENDER_ID)) + add_manifest_json_key( + ATTR_GCM_SENDER_ID, config.get(ATTR_GCM_SENDER_ID)) return HTML5NotificationService(gcm_api_key, registrations) @@ -136,7 +134,7 @@ def _load_config(filename): return json.loads(inp) except (IOError, ValueError) as error: - _LOGGER.error('Reading config file %s failed: %s', filename, error) + _LOGGER.error("Reading config file %s failed: %s", filename, error) return None @@ -158,7 +156,7 @@ def _save_config(filename, config): fdesc.write(json.dumps( config, cls=JSONBytesDecoder, indent=4, sort_keys=True)) except (IOError, TypeError) as error: - _LOGGER.error('Saving config file failed: %s', error) + _LOGGER.error("Saving config file failed: %s", error) return False return True @@ -185,17 +183,16 @@ class HTML5PushRegistrationView(HomeAssistantView): try: data = REGISTER_SCHEMA(data) except vol.Invalid as ex: - return self.json_message(humanize_error(data, ex), - HTTP_BAD_REQUEST) + return self.json_message( + humanize_error(data, ex), HTTP_BAD_REQUEST) - name = ensure_unique_string('unnamed device', - self.registrations.keys()) + name = ensure_unique_string('unnamed device', self.registrations) self.registrations[name] = data if not _save_config(self.json_path, self.registrations): - return self.json_message('Error saving registration.', - HTTP_INTERNAL_SERVER_ERROR) + return self.json_message( + 'Error saving registration.', HTTP_INTERNAL_SERVER_ERROR) return self.json_message('Push notification subscriber registered.') @@ -224,8 +221,8 @@ class HTML5PushRegistrationView(HomeAssistantView): if not _save_config(self.json_path, self.registrations): self.registrations[found] = reg - return self.json_message('Error saving registration.', - HTTP_INTERNAL_SERVER_ERROR) + return self.json_message( + 'Error saving registration.', HTTP_INTERNAL_SERVER_ERROR) return self.json_message('Push notification subscriber unregistered.') @@ -318,7 +315,7 @@ class HTML5PushCallbackView(HomeAssistantView): try: event_payload = CALLBACK_EVENT_PAYLOAD_SCHEMA(event_payload) except vol.Invalid as ex: - _LOGGER.warning('Callback event payload is not valid! %s', + _LOGGER.warning("Callback event payload is not valid: %s", humanize_error(event_payload, ex)) event_name = '{}.{}'.format(NOTIFY_CALLBACK_EVENT, @@ -390,8 +387,8 @@ class HTML5NotificationService(BaseNotificationService): for target in targets: info = self.registrations.get(target) if info is None: - _LOGGER.error('%s is not a valid HTML5 push notification' - ' target!', target) + _LOGGER.error("%s is not a valid HTML5 push notification" + " target", target) continue jwt_exp = (datetime.datetime.fromtimestamp(timestamp) + diff --git a/homeassistant/components/notify/instapush.py b/homeassistant/components/notify/instapush.py index 1058293b3b5..39cdf0fc475 100644 --- a/homeassistant/components/notify/instapush.py +++ b/homeassistant/components/notify/instapush.py @@ -48,7 +48,7 @@ def get_service(hass, config, discovery_info=None): '{}{}'.format(_RESOURCE, 'events/list'), headers=headers, timeout=DEFAULT_TIMEOUT).json() except ValueError: - _LOGGER.error('Unexpected answer from Instapush API') + _LOGGER.error("Unexpected answer from Instapush API") return None if 'error' in response: diff --git a/homeassistant/components/notify/ios.py b/homeassistant/components/notify/ios.py index 6486eed1512..469f1f3e61f 100644 --- a/homeassistant/components/notify/ios.py +++ b/homeassistant/components/notify/ios.py @@ -46,10 +46,10 @@ def get_service(hass, config, discovery_info=None): hass.config.components.add("notify.ios") if not ios.devices_with_push(): - _LOGGER.error(("The notify.ios platform was loaded but no " - "devices exist! Please check the documentation at " - "https://home-assistant.io/ecosystem/ios/notifications" - "/ for more information")) + _LOGGER.error("The notify.ios platform was loaded but no " + "devices exist! Please check the documentation at " + "https://home-assistant.io/ecosystem/ios/notifications" + "/ for more information") return None return iOSNotificationService() diff --git a/homeassistant/components/notify/joaoapps_join.py b/homeassistant/components/notify/joaoapps_join.py index f79c7186359..84b37f249a8 100644 --- a/homeassistant/components/notify/joaoapps_join.py +++ b/homeassistant/components/notify/joaoapps_join.py @@ -34,7 +34,7 @@ def get_service(hass, config, discovery_info=None): if api_key: from pyjoin import get_devices if not get_devices(api_key): - _LOGGER.error("Error connecting to Join, check API key") + _LOGGER.error("Error connecting to Join. Check theAPI key") return False return JoinNotificationService(device_id, api_key) @@ -52,9 +52,7 @@ class JoinNotificationService(BaseNotificationService): from pyjoin import send_notification title = kwargs.get(ATTR_TITLE, ATTR_TITLE_DEFAULT) data = kwargs.get(ATTR_DATA) or {} - send_notification(device_id=self._device_id, - text=message, - title=title, - icon=data.get('icon'), - smallicon=data.get('smallicon'), - api_key=self._api_key) + send_notification( + device_id=self._device_id, text=message, title=title, + icon=data.get('icon'), smallicon=data.get('smallicon'), + api_key=self._api_key) diff --git a/homeassistant/components/notify/kodi.py b/homeassistant/components/notify/kodi.py index db72fff37d5..eda01c13086 100644 --- a/homeassistant/components/notify/kodi.py +++ b/homeassistant/components/notify/kodi.py @@ -100,4 +100,4 @@ class KodiNotificationService(BaseNotificationService): title, message, icon, displaytime) except jsonrpc_async.TransportError: - _LOGGER.warning('Unable to fetch Kodi data, Is Kodi online?') + _LOGGER.warning("Unable to fetch Kodi data. Is Kodi online?") diff --git a/homeassistant/components/notify/lannouncer.py b/homeassistant/components/notify/lannouncer.py index 4d038faeb9a..5677f38b06c 100644 --- a/homeassistant/components/notify/lannouncer.py +++ b/homeassistant/components/notify/lannouncer.py @@ -74,12 +74,12 @@ class LannouncerNotificationService(BaseNotificationService): # Check response buffer = sock.recv(1024) if buffer != b'LANnouncer: OK': - _LOGGER.error('Error sending data to Lannnouncer: %s', + _LOGGER.error("Error sending data to Lannnouncer: %s", buffer.decode()) # Close socket sock.close() except socket.gaierror: - _LOGGER.error('Unable to connect to host %s', self._host) + _LOGGER.error("Unable to connect to host %s", self._host) except socket.error: - _LOGGER.exception('Failed to send data to Lannnouncer') + _LOGGER.exception("Failed to send data to Lannnouncer") diff --git a/homeassistant/components/notify/llamalab_automate.py b/homeassistant/components/notify/llamalab_automate.py index bf000171c12..606c0fafc8b 100644 --- a/homeassistant/components/notify/llamalab_automate.py +++ b/homeassistant/components/notify/llamalab_automate.py @@ -8,16 +8,16 @@ import logging import requests import voluptuous as vol -from homeassistant.components.notify import (BaseNotificationService, - PLATFORM_SCHEMA) -from homeassistant.const import CONF_API_KEY +from homeassistant.components.notify import ( + BaseNotificationService, PLATFORM_SCHEMA) +from homeassistant.const import CONF_API_KEY, CONF_DEVICE from homeassistant.helpers import config_validation as cv + _LOGGER = logging.getLogger(__name__) +_RESOURCE = 'https://llamalab.com/automate/cloud/message' CONF_TO = 'to' -CONF_DEVICE = 'device' -_RESOURCE = 'https://llamalab.com/automate/cloud/message' PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ vol.Required(CONF_API_KEY): cv.string, diff --git a/homeassistant/components/notify/matrix.py b/homeassistant/components/notify/matrix.py index f1e59f048ba..c3bdeae0280 100644 --- a/homeassistant/components/notify/matrix.py +++ b/homeassistant/components/notify/matrix.py @@ -56,7 +56,7 @@ class MatrixNotificationService(BaseNotificationService): def __init__(self, config_file, homeserver, default_room, verify_ssl, username, password): - """Setup the client.""" + """Set up the client.""" self.session_filepath = config_file self.auth_tokens = self.get_auth_tokens() diff --git a/homeassistant/components/notify/message_bird.py b/homeassistant/components/notify/message_bird.py index 7e9ce3b093f..b20abb52efc 100644 --- a/homeassistant/components/notify/message_bird.py +++ b/homeassistant/components/notify/message_bird.py @@ -34,7 +34,7 @@ def get_service(hass, config, discovery_info=None): # validates the api key client.balance() except messagebird.client.ErrorException: - _LOGGER.error('The specified MessageBird API key is invalid.') + _LOGGER.error("The specified MessageBird API key is invalid") return None return MessageBirdNotificationService(config.get(CONF_SENDER), client) @@ -54,15 +54,13 @@ class MessageBirdNotificationService(BaseNotificationService): targets = kwargs.get(ATTR_TARGET) if not targets: - _LOGGER.error('No target specified.') + _LOGGER.error("No target specified") return for target in targets: try: - self.client.message_create(self.sender, - target, - message, - {'reference': 'HA'}) + self.client.message_create( + self.sender, target, message, {'reference': 'HA'}) except ErrorException as exception: - _LOGGER.error('Failed to notify %s: %s', target, exception) + _LOGGER.error("Failed to notify %s: %s", target, exception) continue diff --git a/homeassistant/components/notify/mysensors.py b/homeassistant/components/notify/mysensors.py index a2708a51efd..d9576767f25 100644 --- a/homeassistant/components/notify/mysensors.py +++ b/homeassistant/components/notify/mysensors.py @@ -5,8 +5,8 @@ For more details about this platform, please refer to the documentation https://home-assistant.io/components/notify.mysensors/ """ from homeassistant.components import mysensors -from homeassistant.components.notify import (ATTR_TARGET, - BaseNotificationService) +from homeassistant.components.notify import ( + ATTR_TARGET, BaseNotificationService) def get_service(hass, config, discovery_info=None): diff --git a/homeassistant/components/notify/nma.py b/homeassistant/components/notify/nma.py index 1116b5728fd..e81dc457a81 100644 --- a/homeassistant/components/notify/nma.py +++ b/homeassistant/components/notify/nma.py @@ -18,7 +18,6 @@ import homeassistant.helpers.config_validation as cv _LOGGER = logging.getLogger(__name__) _RESOURCE = 'https://www.notifymyandroid.com/publicapi/' - PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ vol.Required(CONF_API_KEY): cv.string, }) @@ -34,7 +33,7 @@ def get_service(hass, config, discovery_info=None): tree = ET.fromstring(response.content) if tree[0].tag == 'error': - _LOGGER.error("Wrong API key supplied. %s", tree[0].text) + _LOGGER.error("Wrong API key supplied: %s", tree[0].text) return None return NmaNotificationService(config[CONF_API_KEY]) diff --git a/homeassistant/components/notify/pushbullet.py b/homeassistant/components/notify/pushbullet.py index fb6543afcb4..18f74ac01ae 100644 --- a/homeassistant/components/notify/pushbullet.py +++ b/homeassistant/components/notify/pushbullet.py @@ -14,9 +14,10 @@ from homeassistant.components.notify import ( from homeassistant.const import CONF_API_KEY import homeassistant.helpers.config_validation as cv -_LOGGER = logging.getLogger(__name__) REQUIREMENTS = ['pushbullet.py==0.10.0'] +_LOGGER = logging.getLogger(__name__) + ATTR_URL = 'url' PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ @@ -33,9 +34,7 @@ def get_service(hass, config, discovery_info=None): try: pushbullet = PushBullet(config[CONF_API_KEY]) except InvalidKeyError: - _LOGGER.error( - "Wrong API key supplied. " - "Get it at https://www.pushbullet.com/account") + _LOGGER.error("Wrong API key supplied") return None return PushBulletNotificationService(pushbullet) diff --git a/homeassistant/components/notify/pushetta.py b/homeassistant/components/notify/pushetta.py index b1a71c57513..a29cd587105 100644 --- a/homeassistant/components/notify/pushetta.py +++ b/homeassistant/components/notify/pushetta.py @@ -29,9 +29,12 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ def get_service(hass, config, discovery_info=None): """Get the Pushetta notification service.""" - pushetta_service = PushettaNotificationService(config[CONF_API_KEY], - config[CONF_CHANNEL_NAME], - config[CONF_SEND_TEST_MSG]) + api_key = config[CONF_API_KEY] + channel_name = config[CONF_CHANNEL_NAME] + send_test_msg = config[CONF_SEND_TEST_MSG] + + pushetta_service = PushettaNotificationService( + api_key, channel_name, send_test_msg) if pushetta_service.is_valid: return pushetta_service diff --git a/homeassistant/components/notify/pushover.py b/homeassistant/components/notify/pushover.py index afaf4e6a7e9..3d8d62230ee 100644 --- a/homeassistant/components/notify/pushover.py +++ b/homeassistant/components/notify/pushover.py @@ -32,11 +32,10 @@ def get_service(hass, config, discovery_info=None): from pushover import InitError try: - return PushoverNotificationService(config[CONF_USER_KEY], - config[CONF_API_KEY]) + return PushoverNotificationService( + config[CONF_USER_KEY], config[CONF_API_KEY]) except InitError: - _LOGGER.error( - 'Wrong API key supplied. Get it at https://pushover.net') + _LOGGER.error("Wrong API key supplied") return None @@ -74,4 +73,4 @@ class PushoverNotificationService(BaseNotificationService): except ValueError as val_err: _LOGGER.error(str(val_err)) except RequestError: - _LOGGER.exception('Could not send pushover notification') + _LOGGER.exception("Could not send pushover notification") diff --git a/homeassistant/components/notify/rest.py b/homeassistant/components/notify/rest.py index 41d100b3a09..1a40e1f1833 100644 --- a/homeassistant/components/notify/rest.py +++ b/homeassistant/components/notify/rest.py @@ -71,8 +71,8 @@ class RestNotificationService(BaseNotificationService): } if self._title_param_name is not None: - data[self._title_param_name] = kwargs.get(ATTR_TITLE, - ATTR_TITLE_DEFAULT) + data[self._title_param_name] = kwargs.get( + ATTR_TITLE, ATTR_TITLE_DEFAULT) if self._target_param_name is not None and ATTR_TARGET in kwargs: # Target is a list as of 0.29 and we don't want to break existing diff --git a/homeassistant/components/notify/sendgrid.py b/homeassistant/components/notify/sendgrid.py index 4db12a5b8d8..bb4a5078013 100644 --- a/homeassistant/components/notify/sendgrid.py +++ b/homeassistant/components/notify/sendgrid.py @@ -75,4 +75,4 @@ class SendgridNotificationService(BaseNotificationService): response = self._sg.client.mail.send.post(request_body=data) if response.status_code is not 202: - _LOGGER.error('Unable to send notification with SendGrid') + _LOGGER.error("Unable to send notification") diff --git a/homeassistant/components/notify/slack.py b/homeassistant/components/notify/slack.py index b9f33c95d43..8f63fcd7a2f 100644 --- a/homeassistant/components/notify/slack.py +++ b/homeassistant/components/notify/slack.py @@ -41,7 +41,7 @@ def get_service(hass, config, discovery_info=None): config.get(CONF_ICON, None)) except slacker.Error: - _LOGGER.exception("Slack authentication failed") + _LOGGER.exception("Authentication failed") return None @@ -77,12 +77,9 @@ class SlackNotificationService(BaseNotificationService): for target in targets: try: - self.slack.chat.post_message(target, message, - as_user=self._as_user, - username=self._username, - icon_emoji=self._icon, - attachments=attachments, - link_names=True) + self.slack.chat.post_message( + target, message, as_user=self._as_user, + username=self._username, icon_emoji=self._icon, + attachments=attachments, link_names=True) except slacker.Error as err: - _LOGGER.error("Could not send slack notification. Error: %s", - err) + _LOGGER.error("Could not send notification. Error: %s", err) diff --git a/homeassistant/components/notify/smtp.py b/homeassistant/components/notify/smtp.py index 3b76f87e91c..1a2e1bf5b4e 100644 --- a/homeassistant/components/notify/smtp.py +++ b/homeassistant/components/notify/smtp.py @@ -191,8 +191,8 @@ def _build_multipart_msg(message, images): msg.attach(attachment) attachment.add_header('Content-ID', '<{}>'.format(cid)) except TypeError: - _LOGGER.warning("Attachment %s has an unkown MIME type." - " Falling back to file", atch_name) + _LOGGER.warning("Attachment %s has an unkown MIME type. " + "Falling back to file", atch_name) attachment = MIMEApplication(file_bytes, Name=atch_name) attachment['Content-Disposition'] = ('attachment; ' 'filename="%s"' % diff --git a/homeassistant/components/notify/syslog.py b/homeassistant/components/notify/syslog.py index 31689bdc9f0..740148e28e5 100644 --- a/homeassistant/components/notify/syslog.py +++ b/homeassistant/components/notify/syslog.py @@ -11,6 +11,7 @@ import voluptuous as vol from homeassistant.components.notify import ( ATTR_TITLE, ATTR_TITLE_DEFAULT, PLATFORM_SCHEMA, BaseNotificationService) +_LOGGER = logging.getLogger(__name__) CONF_FACILITY = 'facility' CONF_OPTION = 'option' @@ -64,9 +65,6 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ }) -_LOGGER = logging.getLogger(__name__) - - def get_service(hass, config, discovery_info=None): """Get the syslog notification service.""" import syslog diff --git a/homeassistant/components/notify/telstra.py b/homeassistant/components/notify/telstra.py index efe90dc51ba..7fabb51eac8 100644 --- a/homeassistant/components/notify/telstra.py +++ b/homeassistant/components/notify/telstra.py @@ -11,7 +11,7 @@ import voluptuous as vol from homeassistant.components.notify import ( BaseNotificationService, ATTR_TITLE, PLATFORM_SCHEMA) -from homeassistant.const import CONTENT_TYPE_JSON +from homeassistant.const import CONTENT_TYPE_JSON, HTTP_HEADER_CONTENT_TYPE import homeassistant.helpers.config_validation as cv _LOGGER = logging.getLogger(__name__) @@ -34,7 +34,7 @@ def get_service(hass, config, discovery_info=None): phone_number = config.get(CONF_PHONE_NUMBER) if _authenticate(consumer_key, consumer_secret) is False: - _LOGGER.exception('Error obtaining authorization from Telstra API') + _LOGGER.exception("Error obtaining authorization from Telstra API") return None return TelstraNotificationService( @@ -73,7 +73,7 @@ class TelstraNotificationService(BaseNotificationService): } message_resource = 'https://api.telstra.com/v1/sms/messages' message_headers = { - 'Content-Type': CONTENT_TYPE_JSON, + HTTP_HEADER_CONTENT_TYPE: CONTENT_TYPE_JSON, 'Authorization': 'Bearer ' + token_response['access_token'], } message_response = requests.post( diff --git a/homeassistant/components/notify/twilio_call.py b/homeassistant/components/notify/twilio_call.py index f917d5cdab3..b517808d2ce 100644 --- a/homeassistant/components/notify/twilio_call.py +++ b/homeassistant/components/notify/twilio_call.py @@ -15,10 +15,10 @@ from homeassistant.components.notify import ( ATTR_TARGET, PLATFORM_SCHEMA, BaseNotificationService) _LOGGER = logging.getLogger(__name__) -DEPENDENCIES = ["twilio"] +DEPENDENCIES = ['twilio'] -CONF_FROM_NUMBER = "from_number" +CONF_FROM_NUMBER = 'from_number' PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ vol.Required(CONF_FROM_NUMBER): @@ -28,8 +28,8 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ def get_service(hass, config, discovery_info=None): """Get the Twilio Call notification service.""" - return TwilioCallNotificationService(hass.data[DATA_TWILIO], - config[CONF_FROM_NUMBER]) + return TwilioCallNotificationService( + hass.data[DATA_TWILIO], config[CONF_FROM_NUMBER]) class TwilioCallNotificationService(BaseNotificationService): @@ -58,8 +58,7 @@ class TwilioCallNotificationService(BaseNotificationService): for target in targets: try: - self.client.calls.create(to=target, - url=twimlet_url, - from_=self.from_number) + self.client.calls.create( + to=target, url=twimlet_url, from_=self.from_number) except TwilioRestException as exc: _LOGGER.error(exc) diff --git a/homeassistant/components/notify/twilio_sms.py b/homeassistant/components/notify/twilio_sms.py index 1bdfcb64407..52cfe2f436d 100644 --- a/homeassistant/components/notify/twilio_sms.py +++ b/homeassistant/components/notify/twilio_sms.py @@ -27,8 +27,8 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ def get_service(hass, config, discovery_info=None): """Get the Twilio SMS notification service.""" - return TwilioSMSNotificationService(hass.data[DATA_TWILIO], - config[CONF_FROM_NUMBER]) + return TwilioSMSNotificationService( + hass.data[DATA_TWILIO], config[CONF_FROM_NUMBER]) class TwilioSMSNotificationService(BaseNotificationService): @@ -48,5 +48,5 @@ class TwilioSMSNotificationService(BaseNotificationService): return for target in targets: - self.client.messages.create(to=target, body=message, - from_=self.from_number) + self.client.messages.create( + to=target, body=message, from_=self.from_number) diff --git a/homeassistant/components/notify/twitter.py b/homeassistant/components/notify/twitter.py index 21388c292eb..4bbe8a5d9e1 100644 --- a/homeassistant/components/notify/twitter.py +++ b/homeassistant/components/notify/twitter.py @@ -64,5 +64,4 @@ class TwitterNotificationService(BaseNotificationService): error_message = obj['errors'][0]['message'] error_code = obj['errors'][0]['code'] _LOGGER.error("Error %s : %s (Code %s)", resp.status_code, - error_message, - error_code) + error_message, error_code) diff --git a/homeassistant/components/notify/xmpp.py b/homeassistant/components/notify/xmpp.py index ee358ed069c..8faafbeab58 100644 --- a/homeassistant/components/notify/xmpp.py +++ b/homeassistant/components/notify/xmpp.py @@ -33,9 +33,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ def get_service(hass, config, discovery_info=None): """Get the Jabber (XMPP) notification service.""" return XmppNotificationService( - config.get('sender'), - config.get('password'), - config.get('recipient'), + config.get('sender'), config.get('password'), config.get('recipient'), config.get('tls')) @@ -86,7 +84,7 @@ def send_message(sender, password, recipient, use_tls, message): self.disconnect(wait=True) def check_credentials(self, event): - """"Disconnect from the server if credentials are invalid.""" + """Disconnect from the server if credentials are invalid.""" self.disconnect() SendNotificationBot() diff --git a/homeassistant/components/recorder/__init__.py b/homeassistant/components/recorder/__init__.py index 04322646f80..90dc34c4634 100644 --- a/homeassistant/components/recorder/__init__.py +++ b/homeassistant/components/recorder/__init__.py @@ -33,10 +33,12 @@ from . import purge, migration from .const import DATA_INSTANCE from .util import session_scope -DOMAIN = 'recorder' - REQUIREMENTS = ['sqlalchemy==1.1.9'] +_LOGGER = logging.getLogger(__name__) + +DOMAIN = 'recorder' + DEFAULT_URL = 'sqlite:///{hass_config_path}' DEFAULT_DB_FILE = 'home-assistant_v2.db' @@ -66,8 +68,6 @@ CONFIG_SCHEMA = vol.Schema({ }) }, extra=vol.ALLOW_EXTRA) -_LOGGER = logging.getLogger(__name__) - def wait_connection_ready(hass): """ @@ -101,7 +101,7 @@ def run_information(hass, point_in_time: Optional[datetime]=None): @asyncio.coroutine def async_setup(hass: HomeAssistant, config: ConfigType) -> bool: - """Setup the recorder.""" + """Set up the recorder.""" conf = config.get(DOMAIN, {}) purge_days = conf.get(CONF_PURGE_DAYS) @@ -175,7 +175,7 @@ class Recorder(threading.Thread): if not connected: @callback def connection_failed(): - """Connection failed tasks.""" + """Connect failed tasks.""" self.async_db_ready.set_result(False) persistent_notification.async_create( self.hass, diff --git a/homeassistant/components/recorder/models.py b/homeassistant/components/recorder/models.py index ce42ba187c2..6dcb5dbd051 100644 --- a/homeassistant/components/recorder/models.py +++ b/homeassistant/components/recorder/models.py @@ -1,11 +1,11 @@ """Models for SQLAlchemy.""" - import json from datetime import datetime import logging -from sqlalchemy import (Boolean, Column, DateTime, ForeignKey, Index, Integer, - String, Text, distinct) +from sqlalchemy import ( + Boolean, Column, DateTime, ForeignKey, Index, Integer, String, Text, + distinct) from sqlalchemy.ext.declarative import declarative_base import homeassistant.util.dt as dt_util diff --git a/homeassistant/components/recorder/util.py b/homeassistant/components/recorder/util.py index e4ea1af1060..63faf2633b1 100644 --- a/homeassistant/components/recorder/util.py +++ b/homeassistant/components/recorder/util.py @@ -24,7 +24,7 @@ def session_scope(*, hass=None, session=None): yield session session.commit() except Exception as err: # pylint: disable=broad-except - _LOGGER.error('Error executing query: %s', err) + _LOGGER.error("Error executing query: %s", err) session.rollback() raise finally: @@ -43,7 +43,7 @@ def commit(session, work): session.commit() return True except sqlalchemy.exc.OperationalError as err: - _LOGGER.error('Error executing query: %s', err) + _LOGGER.error("Error executing query: %s", err) session.rollback() time.sleep(QUERY_RETRY_WAIT) return False @@ -63,7 +63,7 @@ def execute(qry): (row.to_native() for row in qry) if row is not None] except SQLAlchemyError as err: - _LOGGER.error('Error executing query: %s', err) + _LOGGER.error("Error executing query: %s", err) if tryno == RETRIES - 1: raise diff --git a/homeassistant/components/remote/demo.py b/homeassistant/components/remote/demo.py index 90c691a3d3c..6976c116be9 100644 --- a/homeassistant/components/remote/demo.py +++ b/homeassistant/components/remote/demo.py @@ -10,7 +10,7 @@ from homeassistant.const import DEVICE_DEFAULT_NAME # pylint: disable=unused-argument def setup_platform(hass, config, add_devices_callback, discovery_info=None): - """Setup the demo remotes.""" + """Set up the demo remotes.""" add_devices_callback([ DemoRemote('Remote One', False, None), DemoRemote('Remote Two', True, 'mdi:remote'), diff --git a/homeassistant/components/remote/harmony.py b/homeassistant/components/remote/harmony.py index 351b85cf902..e0c01023660 100755 --- a/homeassistant/components/remote/harmony.py +++ b/homeassistant/components/remote/harmony.py @@ -81,7 +81,7 @@ def register_services(hass): def _apply_service(service, service_func, *service_func_args): - """Internal func for applying a service.""" + """Handle services to apply.""" entity_ids = service.data.get('entity_id') if entity_ids: diff --git a/homeassistant/components/scene/__init__.py b/homeassistant/components/scene/__init__.py index 0d407ac3a9a..5b147fbb656 100644 --- a/homeassistant/components/scene/__init__.py +++ b/homeassistant/components/scene/__init__.py @@ -68,7 +68,7 @@ def activate(hass, entity_id=None): @asyncio.coroutine def async_setup(hass, config): - """Setup scenes.""" + """Set up the scenes.""" logger = logging.getLogger(__name__) component = EntityComponent(logger, DOMAIN, hass) diff --git a/homeassistant/components/scene/homeassistant.py b/homeassistant/components/scene/homeassistant.py index 39942eea301..57c56e8b2f6 100644 --- a/homeassistant/components/scene/homeassistant.py +++ b/homeassistant/components/scene/homeassistant.py @@ -37,7 +37,7 @@ SCENECONFIG = namedtuple('SceneConfig', [CONF_NAME, STATES]) @asyncio.coroutine def async_setup_platform(hass, config, async_add_devices, discovery_info=None): - """Setup home assistant scene entries.""" + """Set up home assistant scene entries.""" scene_config = config.get(STATES) async_add_devices(HomeAssistantScene( diff --git a/homeassistant/components/scene/hunterdouglas_powerview.py b/homeassistant/components/scene/hunterdouglas_powerview.py index c831876bf11..622acbd2583 100644 --- a/homeassistant/components/scene/hunterdouglas_powerview.py +++ b/homeassistant/components/scene/hunterdouglas_powerview.py @@ -20,7 +20,7 @@ HUB_ADDRESS = 'address' # pylint: disable=unused-argument def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the powerview scenes stored in a Powerview hub.""" + """Set up the powerview scenes stored in a Powerview hub.""" from powerview_api import powerview hub_address = config.get(HUB_ADDRESS) @@ -30,7 +30,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None): _scenes = _pv.get_scenes() _rooms = _pv.get_rooms() except ConnectionError: - _LOGGER.exception("error connecting to powerview " + _LOGGER.exception("Error connecting to powerview " "hub with ip address: %s", hub_address) return False add_devices(PowerViewScene(hass, scene, _rooms, _pv) @@ -49,9 +49,8 @@ class PowerViewScene(Scene): self.scene_data = scene_data self._sync_room_data(room_data) self.entity_id_format = DOMAIN + '.{}' - self.entity_id = generate_entity_id(self.entity_id_format, - str(self.scene_data["id"]), - hass=hass) + self.entity_id = generate_entity_id( + self.entity_id_format, str(self.scene_data["id"]), hass=hass) def _sync_room_data(self, room_data): """Sync the room data.""" diff --git a/homeassistant/components/scene/lifx_cloud.py b/homeassistant/components/scene/lifx_cloud.py index f600510d406..b96a56ca2bd 100644 --- a/homeassistant/components/scene/lifx_cloud.py +++ b/homeassistant/components/scene/lifx_cloud.py @@ -32,7 +32,7 @@ PLATFORM_SCHEMA = vol.Schema({ # pylint: disable=unused-argument @asyncio.coroutine def async_setup_platform(hass, config, async_add_devices, discovery_info=None): - """Setup the scenes stored in the LIFX Cloud.""" + """Set up the scenes stored in the LIFX Cloud.""" token = config.get(CONF_TOKEN) timeout = config.get(CONF_TIMEOUT) diff --git a/homeassistant/components/scene/wink.py b/homeassistant/components/scene/wink.py index aef7f375f0d..3906e7b5551 100644 --- a/homeassistant/components/scene/wink.py +++ b/homeassistant/components/scene/wink.py @@ -14,7 +14,7 @@ _LOGGER = logging.getLogger(__name__) def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the Wink platform.""" + """Set up the Wink platform.""" import pywink for scene in pywink.get_scenes(): diff --git a/homeassistant/components/sensor/__init__.py b/homeassistant/components/sensor/__init__.py index a3f361bdffe..92b874cf2c8 100644 --- a/homeassistant/components/sensor/__init__.py +++ b/homeassistant/components/sensor/__init__.py @@ -11,17 +11,20 @@ import logging from homeassistant.helpers.entity_component import EntityComponent from homeassistant.helpers.config_validation import PLATFORM_SCHEMA # noqa +_LOGGER = logging.getLogger(__name__) + DOMAIN = 'sensor' -SCAN_INTERVAL = timedelta(seconds=30) ENTITY_ID_FORMAT = DOMAIN + '.{}' +SCAN_INTERVAL = timedelta(seconds=30) + @asyncio.coroutine def async_setup(hass, config): """Track states and offer events for sensors.""" component = EntityComponent( - logging.getLogger(__name__), DOMAIN, hass, SCAN_INTERVAL) + _LOGGER, DOMAIN, hass, SCAN_INTERVAL) yield from component.async_setup(config) return True diff --git a/homeassistant/components/sensor/alarmdecoder.py b/homeassistant/components/sensor/alarmdecoder.py index 88246cc0bc2..dba1697f026 100644 --- a/homeassistant/components/sensor/alarmdecoder.py +++ b/homeassistant/components/sensor/alarmdecoder.py @@ -10,19 +10,17 @@ import logging from homeassistant.core import callback from homeassistant.helpers.dispatcher import async_dispatcher_connect from homeassistant.helpers.entity import Entity - from homeassistant.components.alarmdecoder import (SIGNAL_PANEL_MESSAGE) - from homeassistant.const import (STATE_UNKNOWN) -DEPENDENCIES = ['alarmdecoder'] - _LOGGER = logging.getLogger(__name__) +DEPENDENCIES = ['alarmdecoder'] + @asyncio.coroutine def async_setup_platform(hass, config, async_add_devices, discovery_info=None): - """Perform the setup for AlarmDecoder sensor devices.""" + """Set up for AlarmDecoder sensor devices.""" _LOGGER.debug("AlarmDecoderSensor: async_setup_platform") device = AlarmDecoderSensor(hass) @@ -40,7 +38,7 @@ class AlarmDecoderSensor(Entity): self._icon = 'mdi:alarm-check' self._name = 'Alarm Panel Display' - _LOGGER.debug("AlarmDecoderSensor: Setting up panel") + _LOGGER.debug("Setting up panel") @asyncio.coroutine def async_added_to_hass(self): diff --git a/homeassistant/components/sensor/android_ip_webcam.py b/homeassistant/components/sensor/android_ip_webcam.py index 687649e226a..c9e1238d9a3 100644 --- a/homeassistant/components/sensor/android_ip_webcam.py +++ b/homeassistant/components/sensor/android_ip_webcam.py @@ -15,7 +15,7 @@ DEPENDENCIES = ['android_ip_webcam'] @asyncio.coroutine def async_setup_platform(hass, config, async_add_devices, discovery_info=None): - """Setup the IP Webcam Sensor.""" + """Set up the IP Webcam Sensor.""" if discovery_info is None: return diff --git a/homeassistant/components/sensor/apcupsd.py b/homeassistant/components/sensor/apcupsd.py index 8c2cf22655d..ec4db5e2934 100644 --- a/homeassistant/components/sensor/apcupsd.py +++ b/homeassistant/components/sensor/apcupsd.py @@ -105,7 +105,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ def setup_platform(hass, config, add_entities, discovery_info=None): - """Setup the APCUPSd sensors.""" + """Set up the APCUPSd sensors.""" entities = [] for resource in config[CONF_RESOURCES]: @@ -117,8 +117,8 @@ def setup_platform(hass, config, add_entities, discovery_info=None): if sensor_type.upper() not in apcupsd.DATA.status: _LOGGER.warning( - 'Sensor type: "%s" does not appear in the APCUPSd status ' - 'output', sensor_type) + "Sensor type: %s does not appear in the APCUPSd status output", + sensor_type) entities.append(APCUPSdSensor(apcupsd.DATA, sensor_type)) diff --git a/homeassistant/components/sensor/arduino.py b/homeassistant/components/sensor/arduino.py index 03307a49768..f49d8e76f6c 100644 --- a/homeassistant/components/sensor/arduino.py +++ b/homeassistant/components/sensor/arduino.py @@ -16,7 +16,6 @@ from homeassistant.const import CONF_NAME from homeassistant.helpers.entity import Entity import homeassistant.helpers.config_validation as cv - _LOGGER = logging.getLogger(__name__) CONF_PINS = 'pins' @@ -36,7 +35,6 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ def setup_platform(hass, config, add_devices, discovery_info=None): """Set up the Arduino platform.""" - # Verify that the Arduino board is present if arduino.BOARD is None: _LOGGER.error("A connection has not been made to the Arduino board") return False diff --git a/homeassistant/components/sensor/arest.py b/homeassistant/components/sensor/arest.py index d99240cf0d2..6edef785280 100644 --- a/homeassistant/components/sensor/arest.py +++ b/homeassistant/components/sensor/arest.py @@ -83,7 +83,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None): if var_conf is not None: for variable, var_data in var_conf.items(): if variable not in response['variables']: - _LOGGER.error("Variable: '%s' does not exist", variable) + _LOGGER.error("Variable: %s does not exist", variable) continue renderer = make_renderer(var_data.get(CONF_VALUE_TEMPLATE)) diff --git a/homeassistant/components/sensor/arwn.py b/homeassistant/components/sensor/arwn.py index d2e148b8204..a63451771d6 100644 --- a/homeassistant/components/sensor/arwn.py +++ b/homeassistant/components/sensor/arwn.py @@ -135,17 +135,17 @@ class ArwnSensor(Entity): @property def unit_of_measurement(self): - """Unit this state is expressed in.""" + """Return the unit of measurement the state is expressed in.""" return self._unit_of_measurement @property def should_poll(self): - """Should we poll.""" + """Return the polling state.""" return False @property def icon(self): - """Icon of device based on its type.""" + """Return the icon of device based on its type.""" if self._icon: return self._icon else: diff --git a/homeassistant/components/sensor/bitcoin.py b/homeassistant/components/sensor/bitcoin.py index 48f3c66a4c1..371918a95d4 100644 --- a/homeassistant/components/sensor/bitcoin.py +++ b/homeassistant/components/sensor/bitcoin.py @@ -66,8 +66,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None): currency = config.get(CONF_CURRENCY) if currency not in exchangerates.get_ticker(): - _LOGGER.warning('Currency "%s" is not available. Using "USD"', - currency) + _LOGGER.warning("Currency %s is not available. Using USD", currency) currency = DEFAULT_CURRENCY data = BitcoinData() diff --git a/homeassistant/components/sensor/blink.py b/homeassistant/components/sensor/blink.py index e069dfa00f7..3805af0f2ba 100644 --- a/homeassistant/components/sensor/blink.py +++ b/homeassistant/components/sensor/blink.py @@ -53,26 +53,26 @@ class BlinkSensor(Entity): @property def name(self): - """A method to return the name of the camera.""" + """Return the name of the camera.""" return self._name @property def state(self): - """A camera's current state.""" + """Return the camera's current state.""" return self._state @property def unique_id(self): - """A unique camera sensor identifier.""" + """Return the unique camera sensor identifier.""" return "sensor_{}_{}".format(self._name, self.index) @property def unit_of_measurement(self): - """A method to determine the unit of measurement for temperature.""" + """Return the unit of measurement.""" return self._unit_of_measurement def update(self): - """A method to retrieve sensor data from the camera.""" + """Retrieve sensor data from the camera.""" camera = self.data.cameras[self._camera_name] if self._type == 'temperature': self._state = camera.temperature diff --git a/homeassistant/components/sensor/bloomsky.py b/homeassistant/components/sensor/bloomsky.py index 1026e2a92db..62769dc0494 100644 --- a/homeassistant/components/sensor/bloomsky.py +++ b/homeassistant/components/sensor/bloomsky.py @@ -44,7 +44,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ # pylint: disable=unused-argument def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the available BloomSky weather sensors.""" + """Set up the available BloomSky weather sensors.""" bloomsky = get_component('bloomsky') # Default needed in case of discovery sensors = config.get(CONF_MONITORED_CONDITIONS, SENSOR_TYPES) @@ -68,7 +68,7 @@ class BloomSkySensor(Entity): @property def name(self): - """The name of the BloomSky device and this sensor.""" + """Return the name of the BloomSky device and this sensor.""" return self._name @property @@ -78,7 +78,7 @@ class BloomSkySensor(Entity): @property def state(self): - """The current state, eg. value, of this sensor.""" + """Return the current state, eg. value, of this sensor.""" return self._state @property diff --git a/homeassistant/components/sensor/bom.py b/homeassistant/components/sensor/bom.py index a83ca49c619..db92ff40cf8 100644 --- a/homeassistant/components/sensor/bom.py +++ b/homeassistant/components/sensor/bom.py @@ -102,14 +102,14 @@ def setup_platform(hass, config, add_devices, discovery_info=None): if station is not None: if zone_id and wmo_id: _LOGGER.warning( - 'Using config "%s", not "%s" and "%s" for BOM sensor', + "Using config %s, not %s and %s for BOM sensor", CONF_STATION, CONF_ZONE_ID, CONF_WMO_ID) elif zone_id and wmo_id: station = '{}.{}'.format(zone_id, wmo_id) else: - station = closest_station(config.get(CONF_LATITUDE), - config.get(CONF_LONGITUDE), - hass.config.config_dir) + station = closest_station( + config.get(CONF_LATITUDE), config.get(CONF_LONGITUDE), + hass.config.config_dir) if station is None: _LOGGER.error("Could not get BOM weather station from lat/lon") return False @@ -186,7 +186,7 @@ class BOMCurrentData(object): def _build_url(self): url = _RESOURCE.format(self._zone_id, self._zone_id, self._wmo_id) - _LOGGER.info("BOM url %s", url) + _LOGGER.info("BOM URL %s", url) return url @Throttle(MIN_TIME_BETWEEN_UPDATES) diff --git a/homeassistant/components/sensor/broadlink.py b/homeassistant/components/sensor/broadlink.py index e0612c8b577..7d5018e054c 100644 --- a/homeassistant/components/sensor/broadlink.py +++ b/homeassistant/components/sensor/broadlink.py @@ -49,7 +49,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ # pylint: disable=unused-argument def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the Broadlink device sensors.""" + """Set up the Broadlink device sensors.""" mac = config.get(CONF_MAC).encode().replace(b':', b'') mac_addr = binascii.unhexlify(mac) broadlink_data = BroadlinkData( diff --git a/homeassistant/components/sensor/coinmarketcap.py b/homeassistant/components/sensor/coinmarketcap.py index eee43328f29..198e3756760 100644 --- a/homeassistant/components/sensor/coinmarketcap.py +++ b/homeassistant/components/sensor/coinmarketcap.py @@ -52,7 +52,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None): try: CoinMarketCapData(currency).update() except HTTPError: - _LOGGER.warning("Currency '%s' is not available. Using 'bitcoin'", + _LOGGER.warning("Currency %s is not available. Using bitcoin", currency) currency = DEFAULT_CURRENCY diff --git a/homeassistant/components/sensor/comed_hourly_pricing.py b/homeassistant/components/sensor/comed_hourly_pricing.py index 747ea0683d8..4f6e0953e54 100644 --- a/homeassistant/components/sensor/comed_hourly_pricing.py +++ b/homeassistant/components/sensor/comed_hourly_pricing.py @@ -20,13 +20,13 @@ _RESOURCE = 'https://hourlypricing.comed.com/api' SCAN_INTERVAL = timedelta(minutes=5) -CONF_MONITORED_FEEDS = 'monitored_feeds' -CONF_SENSOR_TYPE = 'type' -CONF_OFFSET = 'offset' -CONF_NAME = 'name' - -CONF_FIVE_MINUTE = 'five_minute' +CONF_ATTRIBUTION = "Data provided by ComEd Hourly Pricing service" CONF_CURRENT_HOUR_AVERAGE = 'current_hour_average' +CONF_FIVE_MINUTE = 'five_minute' +CONF_MONITORED_FEEDS = 'monitored_feeds' +CONF_NAME = 'name' +CONF_OFFSET = 'offset' +CONF_SENSOR_TYPE = 'type' SENSOR_TYPES = { CONF_FIVE_MINUTE: ['ComEd 5 Minute Price', 'c'], @@ -47,7 +47,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the ComEd Hourly Pricing sensor.""" + """Set up the ComEd Hourly Pricing sensor.""" dev = [] for variable in config[CONF_MONITORED_FEEDS]: dev.append(ComedHourlyPricingSensor( @@ -89,8 +89,7 @@ class ComedHourlyPricingSensor(Entity): @property def device_state_attributes(self): """Return the state attributes.""" - attrs = {ATTR_ATTRIBUTION: 'Data provided by ComEd Hourly ' - 'Pricing service'} + attrs = {ATTR_ATTRIBUTION: CONF_ATTRIBUTION} return attrs def update(self): @@ -109,4 +108,4 @@ class ComedHourlyPricingSensor(Entity): else: self._state = STATE_UNKNOWN except (RequestException, ValueError, KeyError): - _LOGGER.warning('Could not update status for %s', self.name) + _LOGGER.warning("Could not update status for %s", self.name) diff --git a/homeassistant/components/sensor/command_line.py b/homeassistant/components/sensor/command_line.py index 227b133535d..f2542413abf 100644 --- a/homeassistant/components/sensor/command_line.py +++ b/homeassistant/components/sensor/command_line.py @@ -33,7 +33,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ # pylint: disable=unused-argument def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the Command Sensor.""" + """Set up the Command Sensor.""" name = config.get(CONF_NAME) command = config.get(CONF_COMMAND) unit = config.get(CONF_UNIT_OF_MEASUREMENT) @@ -97,13 +97,13 @@ class CommandSensorData(object): def update(self): """Get the latest data with a shell command.""" - _LOGGER.info('Running command: %s', self.command) + _LOGGER.info("Running command: %s", self.command) try: - return_value = subprocess.check_output(self.command, shell=True, - timeout=15) + return_value = subprocess.check_output( + self.command, shell=True, timeout=15) self.value = return_value.strip().decode('utf-8') except subprocess.CalledProcessError: - _LOGGER.error('Command failed: %s', self.command) + _LOGGER.error("Command failed: %s", self.command) except subprocess.TimeoutExpired: - _LOGGER.error('Timeout for command: %s', self.command) + _LOGGER.error("Timeout for command: %s", self.command) diff --git a/homeassistant/components/sensor/crimereports.py b/homeassistant/components/sensor/crimereports.py index 8f118fc3c32..b6e5ea33216 100644 --- a/homeassistant/components/sensor/crimereports.py +++ b/homeassistant/components/sensor/crimereports.py @@ -25,11 +25,14 @@ REQUIREMENTS = ['crimereports==1.0.0'] _LOGGER = logging.getLogger(__name__) -SCAN_INTERVAL = timedelta(minutes=30) -DOMAIN = 'crimereports' -EVENT_INCIDENT = '{}_incident'.format(DOMAIN) CONF_RADIUS = 'radius' +DOMAIN = 'crimereports' + +EVENT_INCIDENT = '{}_incident'.format(DOMAIN) + +SCAN_INTERVAL = timedelta(minutes=30) + PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ vol.Required(CONF_NAME): cv.string, vol.Required(CONF_RADIUS): vol.Coerce(float), @@ -42,14 +45,16 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ # pylint: disable=unused-argument def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the Crime Reports platform.""" + """Set up the Crime Reports platform.""" latitude = config.get(CONF_LATITUDE, hass.config.latitude) longitude = config.get(CONF_LONGITUDE, hass.config.longitude) - add_devices([CrimeReportsSensor(hass, config.get(CONF_NAME), - latitude, longitude, - config.get(CONF_RADIUS), - config.get(CONF_INCLUDE), - config.get(CONF_EXCLUDE))], True) + name = config.get(CONF_NAME) + radius = config.get(CONF_RADIUS) + include = config.get(CONF_INCLUDE) + exclude = config.get(CONF_EXCLUDE) + + add_devices([CrimeReportsSensor( + hass, name, latitude, longitude, radius, include, exclude)], True) class CrimeReportsSensor(Entity): @@ -64,8 +69,8 @@ class CrimeReportsSensor(Entity): self._include = include self._exclude = exclude radius_kilometers = convert(radius, LENGTH_METERS, LENGTH_KILOMETERS) - self._crimereports = crimereports.CrimeReports((latitude, longitude), - radius_kilometers) + self._crimereports = crimereports.CrimeReports( + (latitude, longitude), radius_kilometers) self._attributes = None self._state = None self._previous_incidents = set() @@ -103,9 +108,8 @@ class CrimeReportsSensor(Entity): """Update device state.""" import crimereports incident_counts = defaultdict(int) - incidents = self._crimereports.get_incidents(now().date(), - include=self._include, - exclude=self._exclude) + incidents = self._crimereports.get_incidents( + now().date(), include=self._include, exclude=self._exclude) fire_events = len(self._previous_incidents) > 0 if len(incidents) < len(self._previous_incidents): self._previous_incidents = set() diff --git a/homeassistant/components/sensor/darksky.py b/homeassistant/components/sensor/darksky.py index aa44611aec2..eaf0c474994 100644 --- a/homeassistant/components/sensor/darksky.py +++ b/homeassistant/components/sensor/darksky.py @@ -130,8 +130,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the Dark Sky sensor.""" - # latitude and longitude are inclusive on config + """Set up the Dark Sky sensor.""" latitude = config.get(CONF_LATITUDE, hass.config.latitude) longitude = config.get(CONF_LONGITUDE, hass.config.longitude) @@ -163,8 +162,8 @@ def setup_platform(hass, config, add_devices, discovery_info=None): sensors.append(DarkSkySensor(forecast_data, variable, name)) if forecast is not None and 'daily' in SENSOR_TYPES[variable][7]: for forecast_day in forecast: - sensors.append(DarkSkySensor(forecast_data, - variable, name, forecast_day)) + sensors.append(DarkSkySensor( + forecast_data, variable, name, forecast_day)) add_devices(sensors, True) @@ -189,8 +188,8 @@ class DarkSkySensor(Entity): if self.forecast_day == 0: return '{} {}'.format(self.client_name, self._name) else: - return '{} {} {}'.format(self.client_name, self._name, - self.forecast_day) + return '{} {} {}'.format( + self.client_name, self._name, self.forecast_day) @property def state(self): @@ -285,7 +284,7 @@ class DarkSkySensor(Entity): def get_state(self, data): """ - Helper function that returns a new state based on the type. + Return a new state based on the type. If the sensor type is unknown, the current state is returned. """ diff --git a/homeassistant/components/sensor/demo.py b/homeassistant/components/sensor/demo.py index a290a0edd53..ba7c93203df 100644 --- a/homeassistant/components/sensor/demo.py +++ b/homeassistant/components/sensor/demo.py @@ -10,7 +10,7 @@ from homeassistant.helpers.entity import Entity # pylint: disable=unused-argument def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the Demo sensors.""" + """Set up the Demo sensors.""" add_devices([ DemoSensor('Outside Temperature', 15.6, TEMP_CELSIUS, 12), DemoSensor('Outside Humidity', 54, '%', None), diff --git a/homeassistant/components/sensor/deutsche_bahn.py b/homeassistant/components/sensor/deutsche_bahn.py index 34be6ba078c..0f6e3b267ca 100644 --- a/homeassistant/components/sensor/deutsche_bahn.py +++ b/homeassistant/components/sensor/deutsche_bahn.py @@ -33,7 +33,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the Deutsche Bahn Sensor.""" + """Set up the Deutsche Bahn Sensor.""" start = config.get(CONF_START) destination = config.get(CONF_DESTINATION) diff --git a/homeassistant/components/sensor/dht.py b/homeassistant/components/sensor/dht.py index 327001e67cd..a6fc9b10bee 100644 --- a/homeassistant/components/sensor/dht.py +++ b/homeassistant/components/sensor/dht.py @@ -49,7 +49,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the DHT sensor.""" + """Set up the DHT sensor.""" # pylint: disable=import-error import Adafruit_DHT @@ -139,8 +139,8 @@ class DHTClient(object): @Throttle(MIN_TIME_BETWEEN_UPDATES) def update(self): """Get the latest data the DHT sensor.""" - humidity, temperature = self.adafruit_dht.read_retry(self.sensor, - self.pin) + humidity, temperature = self.adafruit_dht.read_retry( + self.sensor, self.pin) if temperature: self.data[SENSOR_TEMPERATURE] = temperature if humidity: diff --git a/homeassistant/components/sensor/dnsip.py b/homeassistant/components/sensor/dnsip.py index 67b2e04d157..7b792d179c5 100644 --- a/homeassistant/components/sensor/dnsip.py +++ b/homeassistant/components/sensor/dnsip.py @@ -41,7 +41,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ @asyncio.coroutine def async_setup_platform(hass, config, async_add_devices, discovery_info=None): - """Setup the DNS IP sensor.""" + """Set up the DNS IP sensor.""" hostname = config.get(CONF_HOSTNAME) ipv6 = config.get(CONF_IPV6) if ipv6: diff --git a/homeassistant/components/sensor/dovado.py b/homeassistant/components/sensor/dovado.py index 6b3ff58fab5..eba6596efc4 100644 --- a/homeassistant/components/sensor/dovado.py +++ b/homeassistant/components/sensor/dovado.py @@ -14,9 +14,9 @@ from homeassistant.helpers.entity import Entity from homeassistant.util import Throttle from homeassistant.util import slugify import homeassistant.helpers.config_validation as cv -from homeassistant.const import (CONF_USERNAME, CONF_PASSWORD, - CONF_HOST, CONF_PORT, - CONF_SENSORS, DEVICE_DEFAULT_NAME) +from homeassistant.const import ( + CONF_USERNAME, CONF_PASSWORD, CONF_HOST, CONF_PORT, CONF_SENSORS, + DEVICE_DEFAULT_NAME) from homeassistant.components.sensor import (DOMAIN, PLATFORM_SCHEMA) _LOGGER = logging.getLogger(__name__) @@ -25,23 +25,23 @@ REQUIREMENTS = ['dovado==0.4.1'] MIN_TIME_BETWEEN_UPDATES = timedelta(seconds=30) -SENSOR_UPLOAD = "upload" -SENSOR_DOWNLOAD = "download" -SENSOR_SIGNAL = "signal" -SENSOR_NETWORK = "network" -SENSOR_SMS_UNREAD = "sms" +SENSOR_UPLOAD = 'upload' +SENSOR_DOWNLOAD = 'download' +SENSOR_SIGNAL = 'signal' +SENSOR_NETWORK = 'network' +SENSOR_SMS_UNREAD = 'sms' SENSORS = { - SENSOR_NETWORK: ("signal strength", "Network", None, - "mdi:access-point-network"), - SENSOR_SIGNAL: ("signal strength", "Signal Strength", "%", - "mdi:signal"), - SENSOR_SMS_UNREAD: ("sms unread", "SMS unread", "", - "mdi:message-text-outline"), - SENSOR_UPLOAD: ("traffic modem tx", "Sent", "GB", - "mdi:cloud-upload"), - SENSOR_DOWNLOAD: ("traffic modem rx", "Received", "GB", - "mdi:cloud-download"), + SENSOR_NETWORK: ('signal strength', 'Network', None, + 'mdi:access-point-network'), + SENSOR_SIGNAL: ('signal strength', 'Signal Strength', '%', + 'mdi:signal'), + SENSOR_SMS_UNREAD: ('sms unread', 'SMS unread', '', + 'mdi:message-text-outline'), + SENSOR_UPLOAD: ('traffic modem tx', 'Sent', 'GB', + 'mdi:cloud-upload'), + SENSOR_DOWNLOAD: ('traffic modem rx', 'Received', 'GB', + 'mdi:cloud-download'), } PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ @@ -55,7 +55,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the dovado platform for sensors.""" + """Set up the Dovado platform for sensors.""" return Dovado().setup(hass, config, add_devices) @@ -68,28 +68,24 @@ class Dovado: self._dovado = None def setup(self, hass, config, add_devices): - """Setup the connection.""" + """Set up the connection.""" import dovado self._dovado = dovado.Dovado( - config.get(CONF_USERNAME), - config.get(CONF_PASSWORD), - config.get(CONF_HOST), - config.get(CONF_PORT)) + config.get(CONF_USERNAME), config.get(CONF_PASSWORD), + config.get(CONF_HOST), config.get(CONF_PORT)) if not self.update(): return False def send_sms(service): """Send SMS through the router.""" - number = service.data.get("number"), - message = service.data.get("message") - _LOGGER.debug("message for %s: %s", - number, message) + number = service.data.get('number'), + message = service.data.get('message') + _LOGGER.debug("message for %s: %s", number, message) self._dovado.send_sms(number, message) - if self.state.get("sms") == "enabled": - service_name = slugify("{} {}".format(self.name, - "send_sms")) + if self.state.get('sms') == 'enabled': + service_name = slugify("{} {}".format(self.name, 'send_sms')) hass.services.register(DOMAIN, service_name, send_sms) for sensor in SENSORS: @@ -153,8 +149,7 @@ class DovadoSensor(Entity): @property def name(self): """Return the name of the sensor.""" - return "{} {}".format(self._dovado.name, - SENSORS[self._sensor][1]) + return "{} {}".format(self._dovado.name, SENSORS[self._sensor][1]) @property def state(self): @@ -175,4 +170,4 @@ class DovadoSensor(Entity): def device_state_attributes(self): """Return the state attributes.""" return {k: v for k, v in self._dovado.state.items() - if k not in ["date", "time"]} + if k not in ['date', 'time']} diff --git a/homeassistant/components/sensor/dsmr.py b/homeassistant/components/sensor/dsmr.py index 84669a57000..23324fe7360 100644 --- a/homeassistant/components/sensor/dsmr.py +++ b/homeassistant/components/sensor/dsmr.py @@ -1,4 +1,5 @@ -"""Support for Dutch Smart Meter Requirements. +""" +Support for Dutch Smart Meter Requirements. Also known as: Smartmeter or P1 port. @@ -23,7 +24,6 @@ DSMR version the Entities for this component are create during bootstrap. Another loop (DSMR class) is setup which reads the telegram queue, stores/caches the latest telegram and notifies the Entities that the telegram has been updated. - """ import asyncio from datetime import timedelta @@ -72,8 +72,8 @@ def async_setup_platform(hass, config, async_add_devices, discovery_info=None): logging.getLogger('dsmr_parser').setLevel(logging.ERROR) from dsmr_parser import obis_references as obis_ref - from dsmr_parser.clients.protocol import (create_dsmr_reader, - create_tcp_dsmr_reader) + from dsmr_parser.clients.protocol import ( + create_dsmr_reader, create_tcp_dsmr_reader) import serial dsmr_version = config[CONF_DSMR_VERSION] @@ -116,18 +116,14 @@ def async_setup_platform(hass, config, async_add_devices, discovery_info=None): # Creates a asyncio.Protocol factory for reading DSMR telegrams from serial # and calls update_entities_telegram to update entities on arrival if config[CONF_HOST]: - reader_factory = partial(create_tcp_dsmr_reader, - config[CONF_HOST], - config[CONF_PORT], - config[CONF_DSMR_VERSION], - update_entities_telegram, - loop=hass.loop) + reader_factory = partial( + create_tcp_dsmr_reader, config[CONF_HOST], config[CONF_PORT], + config[CONF_DSMR_VERSION], update_entities_telegram, + loop=hass.loop) else: - reader_factory = partial(create_dsmr_reader, - config[CONF_PORT], - config[CONF_DSMR_VERSION], - update_entities_telegram, - loop=hass.loop) + reader_factory = partial( + create_dsmr_reader, config[CONF_PORT], config[CONF_DSMR_VERSION], + update_entities_telegram, loop=hass.loop) @asyncio.coroutine def connect_and_reconnect(): @@ -141,7 +137,7 @@ def async_setup_platform(hass, config, async_add_devices, discovery_info=None): TimeoutError): # log any error while establishing connection and drop to retry # connection wait - _LOGGER.exception('error connecting to DSMR') + _LOGGER.exception("Error connecting to DSMR") transport = None if transport: @@ -174,7 +170,7 @@ class DSMREntity(Entity): """Entity reading values from DSMR telegram.""" def __init__(self, name, obis): - """"Initialize entity.""" + """Initialize entity.""" self._name = name self._obis = obis self.telegram = {} diff --git a/homeassistant/components/sensor/dte_energy_bridge.py b/homeassistant/components/sensor/dte_energy_bridge.py index 4a57bddfb9d..ea2739c3096 100644 --- a/homeassistant/components/sensor/dte_energy_bridge.py +++ b/homeassistant/components/sensor/dte_energy_bridge.py @@ -28,7 +28,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the DTE energy bridge sensor.""" + """Set up the DTE energy bridge sensor.""" name = config.get(CONF_NAME) ip_address = config.get(CONF_IP_ADDRESS) diff --git a/homeassistant/components/sensor/dublin_bus_transport.py b/homeassistant/components/sensor/dublin_bus_transport.py index ab921d1bbdd..337f8188847 100644 --- a/homeassistant/components/sensor/dublin_bus_transport.py +++ b/homeassistant/components/sensor/dublin_bus_transport.py @@ -58,7 +58,7 @@ def due_in_minutes(timestamp): def setup_platform(hass, config, add_devices, discovery_info=None): - """Get the Dublin public transport sensor.""" + """Set up the Dublin public transport sensor.""" name = config.get(CONF_NAME) stop = config.get(CONF_STOP_ID) route = config.get(CONF_ROUTE) diff --git a/homeassistant/components/sensor/dweet.py b/homeassistant/components/sensor/dweet.py index 0f9ea017571..e5f3d00830b 100644 --- a/homeassistant/components/sensor/dweet.py +++ b/homeassistant/components/sensor/dweet.py @@ -37,7 +37,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ # pylint: disable=unused-variable, too-many-function-args def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the Dweet sensor.""" + """Set up the Dweet sensor.""" import dweepy name = config.get(CONF_NAME) @@ -48,11 +48,11 @@ def setup_platform(hass, config, add_devices, discovery_info=None): try: content = json.dumps(dweepy.get_latest_dweet_for(device)[0]['content']) except dweepy.DweepyError: - _LOGGER.error("Device/thing '%s' could not be found", device) + _LOGGER.error("Device/thing %s could not be found", device) return False if value_template.render_with_possible_json_value(content) == '': - _LOGGER.error("'%s' was not found", value_template) + _LOGGER.error("%s was not found", value_template) return False dweet = DweetData(device) @@ -115,5 +115,5 @@ class DweetData(object): try: self.data = dweepy.get_latest_dweet_for(self._device) except dweepy.DweepyError: - _LOGGER.error("Device '%s' could not be found", self._device) + _LOGGER.error("Device %s could not be found", self._device) self.data = None diff --git a/homeassistant/components/sensor/ebox.py b/homeassistant/components/sensor/ebox.py index 8357e9ad8f9..3cfa5ef9ff4 100644 --- a/homeassistant/components/sensor/ebox.py +++ b/homeassistant/components/sensor/ebox.py @@ -1,8 +1,7 @@ """ Support for EBox. -Get data from 'My Usage Page' page: -https://client.ebox.ca/myusage +Get data from 'My Usage Page' page: https://client.ebox.ca/myusage For more details about this platform, please refer to the documentation at https://home-assistant.io/components/sensor.ebox/ @@ -25,12 +24,12 @@ REQUIREMENTS = ['pyebox==0.1.0'] _LOGGER = logging.getLogger(__name__) -GIGABITS = "Gb" # type: str -PRICE = "CAD" # type: str -DAYS = "days" # type: str -PERCENT = "%" # type: str +GIGABITS = 'Gb' # type: str +PRICE = 'CAD' # type: str +DAYS = 'days' # type: str +PERCENT = '%' # type: str -DEFAULT_NAME = "EBox" +DEFAULT_NAME = 'EBox' REQUESTS_TIMEOUT = 15 MIN_TIME_BETWEEN_UPDATES = timedelta(minutes=5) diff --git a/homeassistant/components/sensor/ecobee.py b/homeassistant/components/sensor/ecobee.py index 961fb9aabe3..25a363680c4 100644 --- a/homeassistant/components/sensor/ecobee.py +++ b/homeassistant/components/sensor/ecobee.py @@ -18,7 +18,7 @@ ECOBEE_CONFIG_FILE = 'ecobee.conf' def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the Ecobee sensors.""" + """Set up the Ecobee sensors.""" if discovery_info is None: return data = ecobee.NETWORK diff --git a/homeassistant/components/sensor/eddystone_temperature.py b/homeassistant/components/sensor/eddystone_temperature.py index babc8ee60a6..16e9df15e5a 100644 --- a/homeassistant/components/sensor/eddystone_temperature.py +++ b/homeassistant/components/sensor/eddystone_temperature.py @@ -136,9 +136,9 @@ class Monitor(object): def callback(bt_addr, _, packet, additional_info): """Callback for new packets.""" - self.process_packet(additional_info['namespace'], - additional_info['instance'], - packet.temperature) + self.process_packet( + additional_info['namespace'], additional_info['instance'], + packet.temperature) # pylint: disable=import-error from beacontools import ( diff --git a/homeassistant/components/sensor/efergy.py b/homeassistant/components/sensor/efergy.py index 8731158cb6a..da7181972cb 100644 --- a/homeassistant/components/sensor/efergy.py +++ b/homeassistant/components/sensor/efergy.py @@ -30,6 +30,8 @@ CONF_BUDGET = 'budget' CONF_COST = 'cost' CONF_CURRENT_VALUES = 'current_values' +DEFAULT_PERIOD = 'year' + SENSOR_TYPES = { CONF_INSTANT: ['Energy Usage', 'kW'], CONF_AMOUNT: ['Energy Consumed', 'kWh'], @@ -43,7 +45,7 @@ TYPES_SCHEMA = vol.In(SENSOR_TYPES) SENSORS_SCHEMA = vol.Schema({ vol.Required(CONF_SENSOR_TYPE): TYPES_SCHEMA, vol.Optional(CONF_CURRENCY, default=''): cv.string, - vol.Optional(CONF_PERIOD, default='year'): cv.string, + vol.Optional(CONF_PERIOD, default=DEFAULT_PERIOD): cv.string, }) PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ @@ -54,7 +56,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the Efergy sensor.""" + """Set up the Efergy sensor.""" app_token = config.get(CONF_APPTOKEN) utc_offset = str(config.get(CONF_UTC_OFFSET)) dev = [] @@ -146,4 +148,4 @@ class EfergySensor(Entity): else: self._state = 'Unknown' except (RequestException, ValueError, KeyError): - _LOGGER.warning('Could not update status for %s', self.name) + _LOGGER.warning("Could not update status for %s", self.name) diff --git a/homeassistant/components/sensor/eliqonline.py b/homeassistant/components/sensor/eliqonline.py index dad15361ba4..21b259863a7 100644 --- a/homeassistant/components/sensor/eliqonline.py +++ b/homeassistant/components/sensor/eliqonline.py @@ -37,7 +37,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the ELIQ Online sensor.""" + """Set up the ELIQ Online sensor.""" import eliqonline access_token = config.get(CONF_ACCESS_TOKEN) diff --git a/homeassistant/components/sensor/enocean.py b/homeassistant/components/sensor/enocean.py index 5f2f8edf872..6b0207c2488 100644 --- a/homeassistant/components/sensor/enocean.py +++ b/homeassistant/components/sensor/enocean.py @@ -26,7 +26,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup an EnOcean sensor device.""" + """Set up an EnOcean sensor device.""" dev_id = config.get(CONF_ID) devname = config.get(CONF_NAME) @@ -64,4 +64,4 @@ class EnOceanSensor(enocean.EnOceanDevice, Entity): @property def unit_of_measurement(self): """Return the unit of measurement.""" - return "W" + return 'W' diff --git a/homeassistant/components/sensor/envisalink.py b/homeassistant/components/sensor/envisalink.py index 9803f675913..7f1ee5c0d41 100644 --- a/homeassistant/components/sensor/envisalink.py +++ b/homeassistant/components/sensor/envisalink.py @@ -14,9 +14,10 @@ from homeassistant.components.envisalink import ( SIGNAL_KEYPAD_UPDATE, SIGNAL_PARTITION_UPDATE) from homeassistant.helpers.entity import Entity -DEPENDENCIES = ['envisalink'] _LOGGER = logging.getLogger(__name__) +DEPENDENCIES = ['envisalink'] + @asyncio.coroutine def async_setup_platform(hass, config, async_add_devices, discovery_info=None): @@ -46,7 +47,7 @@ class EnvisalinkSensor(EnvisalinkDevice, Entity): self._icon = 'mdi:alarm' self._partition_number = partition_number - _LOGGER.debug('Setting up sensor for partition: ' + partition_name) + _LOGGER.debug("Setting up sensor for partition: %s", partition_name) super().__init__(partition_name + ' Keypad', info, controller) @asyncio.coroutine diff --git a/homeassistant/components/sensor/fastdotcom.py b/homeassistant/components/sensor/fastdotcom.py index 63ddb0663d7..61f2e000d1d 100644 --- a/homeassistant/components/sensor/fastdotcom.py +++ b/homeassistant/components/sensor/fastdotcom.py @@ -39,7 +39,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the Fast.com sensor.""" + """Set up the Fast.com sensor.""" data = SpeedtestData(hass, config) sensor = SpeedtestSensor(data) add_devices([sensor]) @@ -87,7 +87,7 @@ class SpeedtestSensor(Entity): @asyncio.coroutine def async_added_to_hass(self): - """Called when entity is about to be added to hass.""" + """Handle entity which will be added.""" state = yield from async_get_last_state(self.hass, self.entity_id) if not state: return @@ -101,14 +101,13 @@ class SpeedtestData(object): """Initialize the data object.""" self.data = None if not config.get(CONF_MANUAL): - track_time_change(hass, self.update, - second=config.get(CONF_SECOND), - minute=config.get(CONF_MINUTE), - hour=config.get(CONF_HOUR), - day=config.get(CONF_DAY)) + track_time_change( + hass, self.update, second=config.get(CONF_SECOND), + minute=config.get(CONF_MINUTE), hour=config.get(CONF_HOUR), + day=config.get(CONF_DAY)) def update(self, now): """Get the latest data from fast.com.""" from fastdotcom import fast_com - _LOGGER.info('Executing fast.com speedtest') + _LOGGER.info("Executing fast.com speedtest") self.data = {'download': fast_com()} diff --git a/homeassistant/components/sensor/fedex.py b/homeassistant/components/sensor/fedex.py index 2e1b8e6a6a0..d1626ce2974 100644 --- a/homeassistant/components/sensor/fedex.py +++ b/homeassistant/components/sensor/fedex.py @@ -23,10 +23,13 @@ REQUIREMENTS = ['fedexdeliverymanager==1.0.2'] _LOGGER = logging.getLogger(__name__) -DOMAIN = 'fedex' -COOKIE = 'fedexdeliverymanager_cookies.pickle' CONF_UPDATE_INTERVAL = 'update_interval' +COOKIE = 'fedexdeliverymanager_cookies.pickle' + +DOMAIN = 'fedex' + ICON = 'mdi:package-variant-closed' + STATUS_DELIVERED = 'delivered' PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ @@ -40,19 +43,19 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ # pylint: disable=unused-argument def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the Fedex platform.""" + """Set up the Fedex platform.""" import fedexdeliverymanager try: cookie = hass.config.path(COOKIE) - session = fedexdeliverymanager.get_session(config.get(CONF_USERNAME), - config.get(CONF_PASSWORD), - cookie_path=cookie) + session = fedexdeliverymanager.get_session( + config.get(CONF_USERNAME), config.get(CONF_PASSWORD), + cookie_path=cookie) except fedexdeliverymanager.FedexError: - _LOGGER.exception('Could not connect to Fedex Delivery Manager') + _LOGGER.exception("Could not connect to Fedex Delivery Manager") return False - add_devices([FedexSensor(session, config.get(CONF_NAME), - config.get(CONF_UPDATE_INTERVAL))]) + add_devices([FedexSensor( + session, config.get(CONF_NAME), config.get(CONF_UPDATE_INTERVAL))]) class FedexSensor(Entity): diff --git a/homeassistant/components/sensor/fido.py b/homeassistant/components/sensor/fido.py index 5deb00db67b..c4f4217616f 100644 --- a/homeassistant/components/sensor/fido.py +++ b/homeassistant/components/sensor/fido.py @@ -21,61 +21,44 @@ from homeassistant.helpers.entity import Entity from homeassistant.util import Throttle import homeassistant.helpers.config_validation as cv -REQUIREMENTS = ["pyfido==1.0.1"] +REQUIREMENTS = ['pyfido==1.0.1'] _LOGGER = logging.getLogger(__name__) -KILOBITS = "Kb" # type: str -PRICE = "CAD" # type: str -MESSAGES = "messages" # type: str -MINUTES = "minutes" # type: str +KILOBITS = 'Kb' # type: str +PRICE = 'CAD' # type: str +MESSAGES = 'messages' # type: str +MINUTES = 'minutes' # type: str -DEFAULT_NAME = "Fido" +DEFAULT_NAME = 'Fido' REQUESTS_TIMEOUT = 15 MIN_TIME_BETWEEN_UPDATES = timedelta(minutes=15) SENSOR_TYPES = { - 'fido_dollar': ['Fido dollar', - PRICE, 'mdi:square-inc-cash'], - 'balance': ['Balance', - PRICE, 'mdi:square-inc-cash'], - 'data_used': ['Data used', - KILOBITS, 'mdi:download'], - 'data_limit': ['Data limit', - KILOBITS, 'mdi:download'], - 'data_remaining': ['Data remaining', - KILOBITS, 'mdi:download'], - 'text_used': ['Text used', - MESSAGES, 'mdi:message-text'], - 'text_limit': ['Text limit', - MESSAGES, 'mdi:message-text'], - 'text_remaining': ['Text remaining', - MESSAGES, 'mdi:message-text'], - 'mms_used': ['MMS used', - MESSAGES, 'mdi:message-image'], - 'mms_limit': ['MMS limit', - MESSAGES, 'mdi:message-image'], - 'mms_remaining': ['MMS remaining', - MESSAGES, 'mdi:message-image'], + 'fido_dollar': ['Fido dollar', PRICE, 'mdi:square-inc-cash'], + 'balance': ['Balance', PRICE, 'mdi:square-inc-cash'], + 'data_used': ['Data used', KILOBITS, 'mdi:download'], + 'data_limit': ['Data limit', KILOBITS, 'mdi:download'], + 'data_remaining': ['Data remaining', KILOBITS, 'mdi:download'], + 'text_used': ['Text used', MESSAGES, 'mdi:message-text'], + 'text_limit': ['Text limit', MESSAGES, 'mdi:message-text'], + 'text_remaining': ['Text remaining', MESSAGES, 'mdi:message-text'], + 'mms_used': ['MMS used', MESSAGES, 'mdi:message-image'], + 'mms_limit': ['MMS limit', MESSAGES, 'mdi:message-image'], + 'mms_remaining': ['MMS remaining', MESSAGES, 'mdi:message-image'], 'text_int_used': ['International text used', MESSAGES, 'mdi:message-alert'], 'text_int_limit': ['International text limit', MESSAGES, 'mdi:message-alart'], 'text_int_remaining': ['Internaltional remaining', MESSAGES, 'mdi:message-alert'], - 'talk_used': ['Talk used', - MINUTES, 'mdi:cellphone'], - 'talk_limit': ['Talk limit', - MINUTES, 'mdi:cellphone'], - 'talt_remaining': ['Talk remaining', - MINUTES, 'mdi:cellphone'], - 'other_talk_used': ['Other Talk used', - MINUTES, 'mdi:cellphone'], - 'other_talk_limit': ['Other Talk limit', - MINUTES, 'mdi:cellphone'], - 'other_talk_remaining': ['Other Talk remaining', - MINUTES, 'mdi:cellphone'], + 'talk_used': ['Talk used', MINUTES, 'mdi:cellphone'], + 'talk_limit': ['Talk limit', MINUTES, 'mdi:cellphone'], + 'talt_remaining': ['Talk remaining', MINUTES, 'mdi:cellphone'], + 'other_talk_used': ['Other Talk used', MINUTES, 'mdi:cellphone'], + 'other_talk_limit': ['Other Talk limit', MINUTES, 'mdi:cellphone'], + 'other_talk_remaining': ['Other Talk remaining', MINUTES, 'mdi:cellphone'], } PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ diff --git a/homeassistant/components/sensor/fitbit.py b/homeassistant/components/sensor/fitbit.py index 697fecca077..d976da723d6 100644 --- a/homeassistant/components/sensor/fitbit.py +++ b/homeassistant/components/sensor/fitbit.py @@ -156,7 +156,7 @@ def request_app_setup(hass, config, add_devices, config_path, # pylint: disable=unused-argument def fitbit_configuration_callback(callback_data): - """The actions to do when our configuration callback is called.""" + """Handle configuration updates.""" config_path = hass.config.path(FITBIT_CONFIG_FILE) if os.path.isfile(config_path): config_file = config_from_file(config_path) @@ -201,7 +201,7 @@ def request_oauth_completion(hass): # pylint: disable=unused-argument def fitbit_configuration_callback(callback_data): - """The actions to do when our configuration callback is called.""" + """Handle configuration updates.""" start_url = '{}{}'.format(hass.config.api.base_url, FITBIT_AUTH_START) diff --git a/homeassistant/components/sensor/fixer.py b/homeassistant/components/sensor/fixer.py index b30b660516d..87fafe2c27c 100644 --- a/homeassistant/components/sensor/fixer.py +++ b/homeassistant/components/sensor/fixer.py @@ -41,7 +41,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the Fixer.io sensor.""" + """Set up the Fixer.io sensor.""" from fixerio import (Fixerio, exceptions) name = config.get(CONF_NAME) @@ -51,7 +51,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None): try: Fixerio(base=base, symbols=[target], secure=True).latest() except exceptions.FixerioException: - _LOGGER.error('One of the given currencies is not supported') + _LOGGER.error("One of the given currencies is not supported") return False data = ExchangeData(base, target) @@ -116,9 +116,9 @@ class ExchangeData(object): self.rate = None self.base_currency = base_currency self.target_currency = target_currency - self.exchange = Fixerio(base=self.base_currency, - symbols=[self.target_currency], - secure=True) + self.exchange = Fixerio( + base=self.base_currency, symbols=[self.target_currency], + secure=True) @Throttle(MIN_TIME_BETWEEN_UPDATES) def update(self): diff --git a/homeassistant/components/sensor/fritzbox_callmonitor.py b/homeassistant/components/sensor/fritzbox_callmonitor.py index 956ca3fe495..ea2fcd026b3 100644 --- a/homeassistant/components/sensor/fritzbox_callmonitor.py +++ b/homeassistant/components/sensor/fritzbox_callmonitor.py @@ -24,20 +24,22 @@ from homeassistant.util import Throttle REQUIREMENTS = ['fritzconnection==0.6.3'] _LOGGER = logging.getLogger(__name__) -DEFAULT_NAME = 'Phone' -DEFAULT_HOST = '169.254.1.1' # IP valid for all Fritz!Box routers -DEFAULT_PORT = 1012 -VALUE_DEFAULT = 'idle' -VALUE_RING = 'ringing' -VALUE_CALL = 'dialing' -VALUE_CONNECT = 'talking' -VALUE_DISCONNECT = 'idle' CONF_PHONEBOOK = 'phonebook' CONF_PREFIXES = 'prefixes' +DEFAULT_HOST = '169.254.1.1' # IP valid for all Fritz!Box routers +DEFAULT_NAME = 'Phone' +DEFAULT_PORT = 1012 + INTERVAL_RECONNECT = 60 +VALUE_CALL = 'dialing' +VALUE_CONNECT = 'talking' +VALUE_DEFAULT = 'idle' +VALUE_DISCONNECT = 'idle' +VALUE_RING = 'ringing' + # Return cached results if phonebook was downloaded less then this time ago. MIN_TIME_PHONEBOOK_UPDATE = datetime.timedelta(hours=6) SCAN_INTERVAL = datetime.timedelta(hours=3) @@ -49,13 +51,13 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ vol.Optional(CONF_PASSWORD, default='admin'): cv.string, vol.Optional(CONF_USERNAME, default=''): cv.string, vol.Optional(CONF_PHONEBOOK, default=0): cv.positive_int, - vol.Optional(CONF_PREFIXES, default=[]): vol.All(cv.ensure_list, - [cv.string]) + vol.Optional(CONF_PREFIXES, default=[]): + vol.All(cv.ensure_list, [cv.string]) }) def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup Fritz!Box call monitor sensor platform.""" + """Set up Fritz!Box call monitor sensor platform.""" name = config.get(CONF_NAME) host = config.get(CONF_HOST) port = config.get(CONF_PORT) @@ -65,14 +67,13 @@ def setup_platform(hass, config, add_devices, discovery_info=None): prefixes = config.get('prefixes') try: - phonebook = FritzBoxPhonebook(host=host, port=port, - username=username, password=password, - phonebook_id=phonebook_id, - prefixes=prefixes) + phonebook = FritzBoxPhonebook( + host=host, port=port, username=username, password=password, + phonebook_id=phonebook_id, prefixes=prefixes) # pylint: disable=bare-except except: phonebook = None - _LOGGER.warning('Phonebook with ID %s not found on Fritz!Box', + _LOGGER.warning("Phonebook with ID %s not found on Fritz!Box", phonebook_id) sensor = FritzBoxCallSensor(name=name, phonebook=phonebook) @@ -116,7 +117,7 @@ class FritzBoxCallSensor(Entity): @property def should_poll(self): - """Polling needed only to update phonebook, if defined.""" + """Only poll to update phonebook, if defined.""" if self.phonebook is None: return False else: @@ -250,9 +251,8 @@ class FritzBoxPhonebook(object): # pylint: disable=import-error import fritzconnection as fc # Establish a connection to the FRITZ!Box. - self.fph = fc.FritzPhonebook(address=self.host, - user=self.username, - password=self.password) + self.fph = fc.FritzPhonebook( + address=self.host, user=self.username, password=self.password) if self.phonebook_id not in self.fph.list_phonebooks: raise ValueError("Phonebook with this ID not found.") @@ -266,7 +266,7 @@ class FritzBoxPhonebook(object): self.number_dict = {re.sub(r'[^\d\+]', '', nr): name for name, nrs in self.phonebook_dict.items() for nr in nrs} - _LOGGER.info('Fritz!Box phone book successfully updated.') + _LOGGER.info("Fritz!Box phone book successfully updated") def get_name(self, number): """Return a name for a given phone number.""" diff --git a/homeassistant/components/sensor/fritzbox_netmonitor.py b/homeassistant/components/sensor/fritzbox_netmonitor.py index ba0ee8be1b9..003307fbd83 100644 --- a/homeassistant/components/sensor/fritzbox_netmonitor.py +++ b/homeassistant/components/sensor/fritzbox_netmonitor.py @@ -19,19 +19,21 @@ from requests.exceptions import RequestException REQUIREMENTS = ['fritzconnection==0.6.3'] -MIN_TIME_BETWEEN_UPDATES = timedelta(seconds=5) +_LOGGER = logging.getLogger(__name__) CONF_DEFAULT_IP = '169.254.1.1' # This IP is valid for all FRITZ!Box routers. -ATTR_IS_LINKED = "is_linked" -ATTR_IS_CONNECTED = "is_connected" -ATTR_WAN_ACCESS_TYPE = "wan_access_type" -ATTR_EXTERNAL_IP = "external_ip" -ATTR_UPTIME = "uptime" -ATTR_BYTES_SENT = "bytes_sent" -ATTR_BYTES_RECEIVED = "bytes_received" -ATTR_MAX_BYTE_RATE_UP = "max_byte_rate_up" -ATTR_MAX_BYTE_RATE_DOWN = "max_byte_rate_down" +ATTR_BYTES_RECEIVED = 'bytes_received' +ATTR_BYTES_SENT = 'bytes_sent' +ATTR_EXTERNAL_IP = 'external_ip' +ATTR_IS_CONNECTED = 'is_connected' +ATTR_IS_LINKED = 'is_linked' +ATTR_MAX_BYTE_RATE_DOWN = 'max_byte_rate_down' +ATTR_MAX_BYTE_RATE_UP = 'max_byte_rate_up' +ATTR_UPTIME = 'uptime' +ATTR_WAN_ACCESS_TYPE = 'wan_access_type' + +MIN_TIME_BETWEEN_UPDATES = timedelta(seconds=5) STATE_ONLINE = 'online' STATE_OFFLINE = 'offline' @@ -42,8 +44,6 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ vol.Optional(CONF_HOST, default=CONF_DEFAULT_IP): cv.string, }) -_LOGGER = logging.getLogger(__name__) - def setup_platform(hass, config, add_devices, discovery_info=None): """Set up the fritzbox monitor sensors.""" diff --git a/homeassistant/components/sensor/glances.py b/homeassistant/components/sensor/glances.py index 699781d323b..ef9ea3138bd 100644 --- a/homeassistant/components/sensor/glances.py +++ b/homeassistant/components/sensor/glances.py @@ -93,7 +93,7 @@ class GlancesSensor(Entity): @property def name(self): - """The name of the sensor.""" + """Return the name of the sensor.""" if self._name is None: return SENSOR_TYPES[self.type][0] else: diff --git a/homeassistant/components/sensor/google_travel_time.py b/homeassistant/components/sensor/google_travel_time.py index 6c625ce8038..0e495c67817 100644 --- a/homeassistant/components/sensor/google_travel_time.py +++ b/homeassistant/components/sensor/google_travel_time.py @@ -73,15 +73,15 @@ TRACKABLE_DOMAINS = ['device_tracker', 'sensor', 'zone'] def convert_time_to_utc(timestr): """Take a string like 08:00:00 and convert it to a unix timestamp.""" - combined = datetime.combine(dt_util.start_of_local_day(), - dt_util.parse_time(timestr)) + combined = datetime.combine( + dt_util.start_of_local_day(), dt_util.parse_time(timestr)) if combined < datetime.now(): combined = combined + timedelta(days=1) return dt_util.as_timestamp(combined) def setup_platform(hass, config, add_devices_callback, discovery_info=None): - """Setup the Google travel time platform.""" + """Set up the Google travel time platform.""" def run_setup(event): """Delay the setup until Home Assistant is fully initialized. @@ -225,9 +225,8 @@ class GoogleTravelTimeSensor(Entity): self._origin = self._resolve_zone(self._origin) if self._destination is not None and self._origin is not None: - self._matrix = self._client.distance_matrix(self._origin, - self._destination, - **options_copy) + self._matrix = self._client.distance_matrix( + self._origin, self._destination, **options_copy) def _get_location_from_entity(self, entity_id): """Get the location from the entity state or attributes.""" @@ -246,7 +245,7 @@ class GoogleTravelTimeSensor(Entity): zone_entity = self._hass.states.get("zone.%s" % entity.state) if location.has_location(zone_entity): _LOGGER.debug( - "%s is in %s, getting zone location.", + "%s is in %s, getting zone location", entity_id, zone_entity.entity_id ) return self._get_location_from_attributes(zone_entity) diff --git a/homeassistant/components/sensor/gpsd.py b/homeassistant/components/sensor/gpsd.py index f6f9e75df31..9027802c295 100644 --- a/homeassistant/components/sensor/gpsd.py +++ b/homeassistant/components/sensor/gpsd.py @@ -37,7 +37,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the GPSD component.""" + """Set up the GPSD component.""" name = config.get(CONF_NAME) host = config.get(CONF_HOST) port = config.get(CONF_PORT) @@ -57,9 +57,9 @@ def setup_platform(hass, config, add_devices, discovery_info=None): try: sock.connect((host, port)) sock.shutdown(2) - _LOGGER.debug('Connection to GPSD possible') + _LOGGER.debug("Connection to GPSD possible") except socket.error: - _LOGGER.error('Not able to connect to GPSD') + _LOGGER.error("Not able to connect to GPSD") return False add_devices([GpsdSensor(hass, name, host, port)]) diff --git a/homeassistant/components/sensor/gtfs.py b/homeassistant/components/sensor/gtfs.py index 2726f1f579f..961b8067009 100644 --- a/homeassistant/components/sensor/gtfs.py +++ b/homeassistant/components/sensor/gtfs.py @@ -160,7 +160,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None): os.makedirs(gtfs_dir) if not os.path.exists(os.path.join(gtfs_dir, data)): - _LOGGER.error("The given GTFS data file/folder was not found!") + _LOGGER.error("The given GTFS data file/folder was not found") return False import pygtfs @@ -222,8 +222,8 @@ class GTFSDepartureSensor(Entity): def update(self): """Get the latest data from GTFS and update the states.""" with self.lock: - self._departure = get_next_departure(self._pygtfs, self.origin, - self.destination) + self._departure = get_next_departure( + self._pygtfs, self.origin, self.destination) if not self._departure: self._state = 0 self._attributes = {'Info': 'No more departures today'} diff --git a/homeassistant/components/sensor/haveibeenpwned.py b/homeassistant/components/sensor/haveibeenpwned.py index f5b6d8cfba0..1c28db9a9df 100644 --- a/homeassistant/components/sensor/haveibeenpwned.py +++ b/homeassistant/components/sensor/haveibeenpwned.py @@ -102,10 +102,9 @@ class HaveIBeenPwnedSensor(Entity): # data after hass startup once we have the data it will update as # normal using update if self._email not in self._data.data: - track_point_in_time(self._hass, - self.update_nothrottle, - dt_util.now() + - MIN_TIME_BETWEEN_FORCED_UPDATES) + track_point_in_time( + self._hass, self.update_nothrottle, + dt_util.now() + MIN_TIME_BETWEEN_FORCED_UPDATES) return if self._email in self._data.data: @@ -153,7 +152,7 @@ class HaveIBeenPwnedData(object): allow_redirects=True, timeout=5) except requests.exceptions.RequestException: - _LOGGER.error("failed fetching HaveIBeenPwned Data for '%s'", + _LOGGER.error("Failed fetching HaveIBeenPwned Data for %s", self._email) return @@ -174,6 +173,6 @@ class HaveIBeenPwnedData(object): self.set_next_email() else: - _LOGGER.error("failed fetching HaveIBeenPwned Data for '%s'" + _LOGGER.error("Failed fetching HaveIBeenPwned Data for %s" "(HTTP Status_code = %d)", self._email, req.status_code) diff --git a/homeassistant/components/sensor/hddtemp.py b/homeassistant/components/sensor/hddtemp.py index c0e3dc32d4d..b7ba91ba94a 100644 --- a/homeassistant/components/sensor/hddtemp.py +++ b/homeassistant/components/sensor/hddtemp.py @@ -38,7 +38,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the HDDTemp sensor.""" + """Set up the HDDTemp sensor.""" name = config.get(CONF_NAME) host = config.get(CONF_HOST) port = config.get(CONF_PORT) @@ -118,6 +118,6 @@ class HddTempData(object): host=self.host, port=self.port, timeout=DEFAULT_TIMEOUT) self.data = connection.read_all().decode('ascii') except ConnectionRefusedError: - _LOGGER.error('HDDTemp is not available at %s:%s', self.host, - self.port) + _LOGGER.error( + "HDDTemp is not available at %s:%s", self.host, self.port) self.data = None diff --git a/homeassistant/components/sensor/history_stats.py b/homeassistant/components/sensor/history_stats.py index fe073b89fcd..7d9dfaaa48f 100644 --- a/homeassistant/components/sensor/history_stats.py +++ b/homeassistant/components/sensor/history_stats.py @@ -4,7 +4,6 @@ Component to make instant statistics about your history. For more details about this platform, please refer to the documentation at https://home-assistant.io/components/sensor.history_stats/ """ - import datetime import logging import math @@ -152,7 +151,7 @@ class HistoryStatsSensor(Entity): @property def should_poll(self): - """Polling required.""" + """Return the polling state.""" return True @property @@ -239,8 +238,8 @@ class HistoryStatsSensor(Entity): start = dt_util.as_local(dt_util.utc_from_timestamp( math.floor(float(start_rendered)))) except ValueError: - _LOGGER.error('PARSING ERROR: start must be a datetime' - ' or a timestamp.') + _LOGGER.error("Parsing error: start must be a datetime" + "or a timestamp") return # Parse end @@ -256,8 +255,8 @@ class HistoryStatsSensor(Entity): end = dt_util.as_local(dt_util.utc_from_timestamp( math.floor(float(end_rendered)))) except ValueError: - _LOGGER.error('PARSING ERROR: end must be a datetime' - ' or a timestamp.') + _LOGGER.error("Parsing error: end must be a datetime " + "or a timestamp") return # Calculate start or end using the duration @@ -305,5 +304,5 @@ class HistoryStatsHelper: # Common during HA startup - so just a warning _LOGGER.warning(ex) return - _LOGGER.error('Error parsing template for [' + field + ']') + _LOGGER.error("Error parsing template for field %s", field) _LOGGER.error(ex) diff --git a/homeassistant/components/sensor/homematic.py b/homeassistant/components/sensor/homematic.py index 2215597f506..44ba7dfa753 100644 --- a/homeassistant/components/sensor/homematic.py +++ b/homeassistant/components/sensor/homematic.py @@ -3,11 +3,7 @@ The homematic sensor platform. For more details about this platform, please refer to the documentation at https://home-assistant.io/components/sensor.homematic/ - -Important: For this platform to work the homematic component has to be -properly configured. """ - import logging from homeassistant.const import STATE_UNKNOWN from homeassistant.components.homematic import HMDevice, ATTR_DISCOVER_DEVICES @@ -17,45 +13,45 @@ _LOGGER = logging.getLogger(__name__) DEPENDENCIES = ['homematic'] HM_STATE_HA_CAST = { - "RotaryHandleSensor": {0: "closed", 1: "tilted", 2: "open"}, - "WaterSensor": {0: "dry", 1: "wet", 2: "water"}, - "CO2Sensor": {0: "normal", 1: "added", 2: "strong"}, + 'RotaryHandleSensor': {0: 'closed', 1: 'tilted', 2: 'open'}, + 'WaterSensor': {0: 'dry', 1: 'wet', 2: 'water'}, + 'CO2Sensor': {0: 'normal', 1: 'added', 2: 'strong'}, } HM_UNIT_HA_CAST = { - "HUMIDITY": "%", - "TEMPERATURE": "°C", - "BRIGHTNESS": "#", - "POWER": "W", - "CURRENT": "mA", - "VOLTAGE": "V", - "ENERGY_COUNTER": "Wh", - "GAS_POWER": "m3", - "GAS_ENERGY_COUNTER": "m3", - "LUX": "lux", - "RAIN_COUNTER": "mm", - "WIND_SPEED": "km/h", - "WIND_DIRECTION": "°", - "WIND_DIRECTION_RANGE": "°", - "SUNSHINEDURATION": "#", - "AIR_PRESSURE": "hPa", - "FREQUENCY": "Hz", - "VALUE": "#", + 'HUMIDITY': '%', + 'TEMPERATURE': '°C', + 'BRIGHTNESS': '#', + 'POWER': 'W', + 'CURRENT': 'mA', + 'VOLTAGE': 'V', + 'ENERGY_COUNTER': 'Wh', + 'GAS_POWER': 'm3', + 'GAS_ENERGY_COUNTER': 'm3', + 'LUX': 'lux', + 'RAIN_COUNTER': 'mm', + 'WIND_SPEED': 'km/h', + 'WIND_DIRECTION': '°', + 'WIND_DIRECTION_RANGE': '°', + 'SUNSHINEDURATION': '#', + 'AIR_PRESSURE': 'hPa', + 'FREQUENCY': 'Hz', + 'VALUE': '#', } HM_ICON_HA_CAST = { - "WIND_SPEED": 'mdi:weather-windy', - "HUMIDITY": 'mdi:water-percent', - "TEMPERATURE": 'mdi:thermometer', - "LUX": 'mdi:weather-sunny', - "BRIGHTNESS": 'mdi:invert-colors', - "POWER": 'mdi:flash-red-eye', - "CURRENT": "mdi:flash-red-eye", + 'WIND_SPEED': 'mdi:weather-windy', + 'HUMIDITY': 'mdi:water-percent', + 'TEMPERATURE': 'mdi:thermometer', + 'LUX': 'mdi:weather-sunny', + 'BRIGHTNESS': 'mdi:invert-colors', + 'POWER': 'mdi:flash-red-eye', + 'CURRENT': 'mdi:flash-red-eye', } def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the platform.""" + """Set up the Homematic platform.""" if discovery_info is None: return @@ -96,8 +92,8 @@ class HMSensor(HMDevice): """Generate a data dict (self._data) from hm metadata.""" # Add state to data dict if self._state: - _LOGGER.debug("%s init datadict with main node '%s'", self._name, + _LOGGER.debug("%s init datadict with main node %s", self._name, self._state) self._data.update({self._state: STATE_UNKNOWN}) else: - _LOGGER.critical("Can't correctly init sensor %s.", self._name) + _LOGGER.critical("Can't correctly init sensor %s", self._name) diff --git a/homeassistant/components/sensor/hp_ilo.py b/homeassistant/components/sensor/hp_ilo.py index 675db6400a0..338a6e7aff5 100644 --- a/homeassistant/components/sensor/hp_ilo.py +++ b/homeassistant/components/sensor/hp_ilo.py @@ -26,7 +26,6 @@ DEFAULT_PORT = 443 MIN_TIME_BETWEEN_UPDATES = timedelta(seconds=300) -# Each sensor is defined as follows: 'Descriptive name', 'python-ilo function' SENSOR_TYPES = { 'server_name': ['Server Name', 'get_server_name'], 'server_fqdn': ['Server FQDN', 'get_server_fqdn'], @@ -74,9 +73,9 @@ def setup_platform(hass, config, add_devices, discovery_info=None): # Initialize and add all of the sensors. devices = [] for ilo_type in monitored_variables: - new_device = HpIloSensor(hp_ilo_data=hp_ilo_data, - sensor_type=SENSOR_TYPES.get(ilo_type), - client_name=name) + new_device = HpIloSensor( + hp_ilo_data=hp_ilo_data, sensor_type=SENSOR_TYPES.get(ilo_type), + client_name=name) devices.append(new_device) add_devices(devices) @@ -161,10 +160,9 @@ class HpIloData(object): import hpilo try: - self.data = hpilo.Ilo(hostname=self._host, - login=self._login, - password=self._password, - port=self._port) + self.data = hpilo.Ilo( + hostname=self._host, login=self._login, + password=self._password, port=self._port) except (hpilo.IloError, hpilo.IloCommunicationError, hpilo.IloLoginFailed) as error: raise ValueError("Unable to init HP ILO, %s", error) diff --git a/homeassistant/components/sensor/hydroquebec.py b/homeassistant/components/sensor/hydroquebec.py index 9fcabd62d76..c96909e5bc1 100644 --- a/homeassistant/components/sensor/hydroquebec.py +++ b/homeassistant/components/sensor/hydroquebec.py @@ -25,12 +25,12 @@ REQUIREMENTS = ['pyhydroquebec==1.1.0'] _LOGGER = logging.getLogger(__name__) -KILOWATT_HOUR = "kWh" # type: str -PRICE = "CAD" # type: str -DAYS = "days" # type: str -CONF_CONTRACT = "contract" # type: str +KILOWATT_HOUR = 'kWh' # type: str +PRICE = 'CAD' # type: str +DAYS = 'days' # type: str +CONF_CONTRACT = 'contract' # type: str -DEFAULT_NAME = "HydroQuebec" +DEFAULT_NAME = 'HydroQuebec' REQUESTS_TIMEOUT = 15 MIN_TIME_BETWEEN_UPDATES = timedelta(hours=1) @@ -73,10 +73,10 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string, }) -HOST = "https://www.hydroquebec.com" -HOME_URL = "{}/portail/web/clientele/authentification".format(HOST) -PROFILE_URL = ("{}/portail/fr/group/clientele/" - "portrait-de-consommation".format(HOST)) +HOST = 'https://www.hydroquebec.com' +HOME_URL = '{}/portail/web/clientele/authentification'.format(HOST) +PROFILE_URL = ('{}/portail/fr/group/clientele/' + 'portrait-de-consommation'.format(HOST)) MONTHLY_MAP = (('period_total_bill', 'montantFacturePeriode'), ('period_length', 'nbJourLecturePeriode'), ('period_total_days', 'nbJourPrevuPeriode'), @@ -163,9 +163,8 @@ class HydroquebecData(object): def __init__(self, username, password, contract=None): """Initialize the data object.""" from pyhydroquebec import HydroQuebecClient - self.client = HydroQuebecClient(username, - password, - REQUESTS_TIMEOUT) + self.client = HydroQuebecClient( + username, password, REQUESTS_TIMEOUT) self._contract = contract self.data = {} @@ -187,7 +186,5 @@ class HydroquebecData(object): @Throttle(MIN_TIME_BETWEEN_UPDATES) def update(self): """Return the latest collected data from HydroQuebec.""" - # Fetch data self._fetch_data() - # Update data self.data = self.client.get_data(self._contract)[self._contract] diff --git a/homeassistant/components/sensor/imap.py b/homeassistant/components/sensor/imap.py index 4d7f34ef682..dc772df48c0 100644 --- a/homeassistant/components/sensor/imap.py +++ b/homeassistant/components/sensor/imap.py @@ -31,12 +31,11 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the IMAP platform.""" - sensor = ImapSensor(config.get(CONF_NAME, None), - config.get(CONF_USERNAME), - config.get(CONF_PASSWORD), - config.get(CONF_SERVER), - config.get(CONF_PORT)) + """Set up the IMAP platform.""" + sensor = ImapSensor( + config.get(CONF_NAME, None), config.get(CONF_USERNAME), + config.get(CONF_PASSWORD), config.get(CONF_SERVER), + config.get(CONF_PORT)) if sensor.connection: add_devices([sensor]) diff --git a/homeassistant/components/sensor/imap_email_content.py b/homeassistant/components/sensor/imap_email_content.py index 65ae27b4de3..99613f0f7e8 100644 --- a/homeassistant/components/sensor/imap_email_content.py +++ b/homeassistant/components/sensor/imap_email_content.py @@ -41,7 +41,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the EMail platform.""" + """Set up the Email sensor platform.""" reader = EmailReader( config.get(CONF_USERNAME), config.get(CONF_PASSWORD), config.get(CONF_SERVER), config.get(CONF_PORT)) diff --git a/homeassistant/components/sensor/influxdb.py b/homeassistant/components/sensor/influxdb.py index 035c894ba0c..b4688c77e1b 100644 --- a/homeassistant/components/sensor/influxdb.py +++ b/homeassistant/components/sensor/influxdb.py @@ -65,7 +65,7 @@ MIN_TIME_BETWEEN_UPDATES = timedelta(seconds=60) def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the InfluxDB component.""" + """Set up the InfluxDB component.""" influx_conf = {'host': config[CONF_HOST], 'port': config.get(CONF_PORT), 'username': config.get(CONF_USERNAME), @@ -105,13 +105,11 @@ class InfluxSensor(Entity): query.get(CONF_FIELD), query.get(CONF_MEASUREMENT_NAME), query.get(CONF_WHERE)) - influx = InfluxDBClient(host=influx_conf['host'], - port=influx_conf['port'], - username=influx_conf['username'], - password=influx_conf['password'], - database=database, - ssl=influx_conf['ssl'], - verify_ssl=influx_conf['verify_ssl']) + influx = InfluxDBClient( + host=influx_conf['host'], port=influx_conf['port'], + username=influx_conf['username'], password=influx_conf['password'], + database=database, ssl=influx_conf['ssl'], + verify_ssl=influx_conf['verify_ssl']) try: influx.query("select * from /.*/ LIMIT 1;") self.connected = True @@ -135,12 +133,12 @@ class InfluxSensor(Entity): @property def unit_of_measurement(self): - """Unit of measurement of this entity, if any.""" + """Return the unit of measurement of this entity, if any.""" return self._unit_of_measurement @property def should_poll(self): - """Polling needed.""" + """Return the polling state.""" return True def update(self): @@ -172,11 +170,11 @@ class InfluxSensorData(object): points = list(self.influx.query(self.query).get_points()) if not points: - _LOGGER.warning("Query returned no points, sensor state set" - " to UNKNOWN : %s", self.query) + _LOGGER.warning("Query returned no points, sensor state set " + "to UNKNOWN: %s", self.query) self.value = None else: if points: - _LOGGER.warning("Query returned multiple points, only first" - " one shown : %s", self.query) + _LOGGER.warning("Query returned multiple points, only first " + "one shown: %s", self.query) self.value = points[0].get('value') diff --git a/homeassistant/components/sensor/ios.py b/homeassistant/components/sensor/ios.py index 1455431e5f7..c3bcbf60828 100644 --- a/homeassistant/components/sensor/ios.py +++ b/homeassistant/components/sensor/ios.py @@ -7,24 +7,24 @@ https://home-assistant.io/ecosystem/ios/ from homeassistant.components import ios from homeassistant.helpers.entity import Entity -DEPENDENCIES = ["ios"] +DEPENDENCIES = ['ios'] SENSOR_TYPES = { - "level": ["Battery Level", "%"], - "state": ["Battery State", None] + 'level': ['Battery Level', '%'], + 'state': ['Battery State', None] } -DEFAULT_ICON_LEVEL = "mdi:battery" -DEFAULT_ICON_STATE = "mdi:power-plug" +DEFAULT_ICON_LEVEL = 'mdi:battery' +DEFAULT_ICON_STATE = 'mdi:power-plug' def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the iOS sensor.""" + """Set up the iOS sensor.""" if discovery_info is None: return dev = list() for device_name, device in ios.devices().items(): - for sensor_type in ("level", "state"): + for sensor_type in ('level', 'state'): dev.append(IOSSensor(sensor_type, device_name, device)) add_devices(dev) @@ -36,7 +36,7 @@ class IOSSensor(Entity): def __init__(self, sensor_type, device_name, device): """Initialize the sensor.""" self._device_name = device_name - self._name = device_name + " " + SENSOR_TYPES[sensor_type][0] + self._name = "{} {}".format(device_name, SENSOR_TYPES[sensor_type][0]) self._device = device self.type = sensor_type self._state = None diff --git a/homeassistant/components/sensor/knx.py b/homeassistant/components/sensor/knx.py index fef02710b9e..1178938ce49 100644 --- a/homeassistant/components/sensor/knx.py +++ b/homeassistant/components/sensor/knx.py @@ -4,19 +4,18 @@ Sensors of a KNX Device. For more details about this platform, please refer to the documentation at https://home-assistant.io/components/knx/ """ -from homeassistant.const import (TEMP_CELSIUS, TEMPERATURE, CONF_TYPE, - ILLUMINANCE, SPEED_MS, CONF_MINIMUM, - CONF_MAXIMUM) +from homeassistant.const import ( + TEMP_CELSIUS, TEMPERATURE, CONF_TYPE, ILLUMINANCE, SPEED_MS, CONF_MINIMUM, + CONF_MAXIMUM) from homeassistant.components.knx import (KNXConfig, KNXGroupAddress) - -DEPENDENCIES = ["knx"] +DEPENDENCIES = ['knx'] # Speed units -SPEED_METERPERSECOND = "m/s" # type: str +SPEED_METERPERSECOND = 'm/s' # type: str # Illuminance units -ILLUMINANCE_LUX = "lx" # type: str +ILLUMINANCE_LUX = 'lx' # type: str # Predefined Minimum, Maximum Values for Sensors # Temperature as defined in KNX Standard 3.10 - 9.001 DPT_Value_Temp @@ -33,25 +32,25 @@ KNX_SPEED_MS_MAX = 670760 def setup_platform(hass, config, add_entities, discovery_info=None): - """Setup the KNX Sensor platform.""" + """Set up the KNX Sensor platform.""" # Add KNX Temperature Sensors # KNX Datapoint 9.001 DPT_Value_Temp if config[CONF_TYPE] == TEMPERATURE: minimum_value, maximum_value = \ - update_and_define_min_max(config, KNX_TEMP_MIN, - KNX_TEMP_MAX) + update_and_define_min_max(config, KNX_TEMP_MIN, KNX_TEMP_MAX) add_entities([ - KNXSensorFloatClass(hass, KNXConfig(config), TEMP_CELSIUS, - minimum_value, maximum_value) + KNXSensorFloatClass( + hass, KNXConfig(config), TEMP_CELSIUS, minimum_value, + maximum_value) ]) # Add KNX Speed Sensors(Like Wind Speed) # KNX Datapoint 9.005 DPT_Value_Wsp elif config[CONF_TYPE] == SPEED_MS: minimum_value, maximum_value = \ - update_and_define_min_max(config, KNX_SPEED_MS_MIN, - KNX_SPEED_MS_MAX) + update_and_define_min_max( + config, KNX_SPEED_MS_MIN, KNX_SPEED_MS_MAX) add_entities([ KNXSensorFloatClass(hass, KNXConfig(config), SPEED_METERPERSECOND, @@ -70,9 +69,8 @@ def setup_platform(hass, config, add_entities, discovery_info=None): ]) -def update_and_define_min_max(config, minimum_default, - maximum_default): - """Function help determinate a min/max value defined in config.""" +def update_and_define_min_max(config, minimum_default, maximum_default): + """Determinate a min/max value defined in the configuration.""" minimum_value = minimum_default maximum_value = maximum_default if config.get(CONF_MINIMUM): diff --git a/homeassistant/components/sensor/kwb.py b/homeassistant/components/sensor/kwb.py index 54799ccc6b4..0641917145b 100644 --- a/homeassistant/components/sensor/kwb.py +++ b/homeassistant/components/sensor/kwb.py @@ -15,7 +15,6 @@ from homeassistant.helpers.entity import Entity from homeassistant.components.sensor import PLATFORM_SCHEMA import homeassistant.helpers.config_validation as cv - REQUIREMENTS = ['pykwb==0.0.8'] _LOGGER = logging.getLogger(__name__) @@ -50,7 +49,7 @@ PLATFORM_SCHEMA = vol.Schema( def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the KWB component.""" + """Set up the KWB component.""" host = config.get(CONF_HOST) port = config.get(CONF_PORT) device = config.get(CONF_DEVICE) diff --git a/homeassistant/components/sensor/linux_battery.py b/homeassistant/components/sensor/linux_battery.py index ddfb12f008b..18e2250ee13 100644 --- a/homeassistant/components/sensor/linux_battery.py +++ b/homeassistant/components/sensor/linux_battery.py @@ -50,7 +50,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the Linux Battery sensor.""" + """Set up the Linux Battery sensor.""" name = config.get(CONF_NAME) battery_id = config.get(CONF_BATTERY) diff --git a/homeassistant/components/sensor/loopenergy.py b/homeassistant/components/sensor/loopenergy.py index ebd044343b0..a2d6b0c3a0c 100644 --- a/homeassistant/components/sensor/loopenergy.py +++ b/homeassistant/components/sensor/loopenergy.py @@ -59,7 +59,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the Loop Energy sensors.""" + """Set up the Loop Energy sensors.""" import pyloopenergy elec_config = config.get(CONF_ELEC) @@ -77,7 +77,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None): def stop_loopenergy(event): """Shutdown loopenergy thread on exit.""" - _LOGGER.info("Shutting down loopenergy.") + _LOGGER.info("Shutting down loopenergy") controller.terminate() hass.bus.listen_once(EVENT_HOMEASSISTANT_STOP, stop_loopenergy) diff --git a/homeassistant/components/sensor/lyft.py b/homeassistant/components/sensor/lyft.py index 8a8609f8914..c16fae9f5d5 100644 --- a/homeassistant/components/sensor/lyft.py +++ b/homeassistant/components/sensor/lyft.py @@ -79,8 +79,8 @@ class LyftSensor(Entity): self._product_id = product_id self._product = product self._sensortype = sensorType - self._name = '{} {}'.format(self._product['display_name'], - self._sensortype) + self._name = '{} {}'.format( + self._product['display_name'], self._sensortype) if 'lyft' not in self._name.lower(): self._name = 'Lyft{}'.format(self._name) if self._sensortype == 'time': diff --git a/homeassistant/components/sensor/metoffice.py b/homeassistant/components/sensor/metoffice.py index 725fca1db44..c1ffb01d212 100644 --- a/homeassistant/components/sensor/metoffice.py +++ b/homeassistant/components/sensor/metoffice.py @@ -4,7 +4,6 @@ Support for UK Met Office weather service. For more details about this platform, please refer to the documentation at https://home-assistant.io/components/sensor.metoffice/ """ - import logging from datetime import timedelta @@ -25,17 +24,17 @@ REQUIREMENTS = ['datapoint==0.4.3'] CONF_ATTRIBUTION = "Data provided by the Met Office" CONDITION_CLASSES = { - 'cloudy': ["7", "8"], - 'fog': ["5", "6"], - 'hail': ["19", "20", "21"], - 'lightning': ["30"], - 'lightning-rainy': ["28", "29"], - 'partlycloudy': ["2", "3"], - 'pouring': ["13", "14", "15"], - 'rainy': ["9", "10", "11", "12"], - 'snowy': ["22", "23", "24", "25", "26", "27"], - 'snowy-rainy': ["16", "17", "18"], - 'sunny': ["0", "1"], + 'cloudy': ['7', '8'], + 'fog': ['5', '6'], + 'hail': ['19', '20', '21'], + 'lightning': ['30'], + 'lightning-rainy': ['28', '29'], + 'partlycloudy': ['2', '3'], + 'pouring': ['13', '14', '15'], + 'rainy': ['9', '10', '11', '12'], + 'snowy': ['22', '23', '24', '25', '26', '27'], + 'snowy-rainy': ['16', '17', '18'], + 'sunny': ['0', '1'], 'windy': [], 'windy-variant': [], 'exceptional': [], @@ -67,7 +66,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the sensor platform.""" + """Set up the Metoffice sensor platform.""" import datapoint as dp datapoint = dp.connection(api_key=config.get(CONF_API_KEY)) @@ -167,8 +166,8 @@ class MetOfficeCurrentData(object): import datapoint as dp try: - forecast = self._datapoint.get_forecast_for_site(self._site.id, - "3hourly") + forecast = self._datapoint.get_forecast_for_site( + self._site.id, "3hourly") self.data = forecast.now() except (ValueError, dp.exceptions.APIException) as err: _LOGGER.error("Check Met Office %s", err.args) diff --git a/homeassistant/components/sensor/mfi.py b/homeassistant/components/sensor/mfi.py index af2c277f2cd..9d78ffd3f1a 100644 --- a/homeassistant/components/sensor/mfi.py +++ b/homeassistant/components/sensor/mfi.py @@ -50,7 +50,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ # pylint: disable=unused-variable def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup mFi sensors.""" + """Set up mFi sensors.""" host = config.get(CONF_HOST) username = config.get(CONF_USERNAME) password = config.get(CONF_PASSWORD) @@ -65,7 +65,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None): client = MFiClient(host, username, password, port=port, use_tls=use_tls, verify=verify_tls) except (FailedToLogin, requests.exceptions.ConnectionError) as ex: - _LOGGER.error('Unable to connect to mFi: %s', str(ex)) + _LOGGER.error("Unable to connect to mFi: %s", str(ex)) return False add_devices(MfiSensor(port, hass) diff --git a/homeassistant/components/sensor/mhz19.py b/homeassistant/components/sensor/mhz19.py index 816b7465f8f..cd559d3bbd2 100644 --- a/homeassistant/components/sensor/mhz19.py +++ b/homeassistant/components/sensor/mhz19.py @@ -43,7 +43,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the available CO2 sensors.""" + """Set up the available CO2 sensors.""" from pmsensor import co2sensor try: @@ -118,7 +118,7 @@ class MHZ19Sensor(Entity): class MHZClient(object): - """Get the latest data from the DHT sensor.""" + """Get the latest data from the MH-Z sensor.""" def __init__(self, co2sensor, serial): """Initialize the sensor.""" diff --git a/homeassistant/components/sensor/min_max.py b/homeassistant/components/sensor/min_max.py index 33ffc769991..59a89fa0e3e 100644 --- a/homeassistant/components/sensor/min_max.py +++ b/homeassistant/components/sensor/min_max.py @@ -123,7 +123,7 @@ class MinMaxSensor(Entity): @callback # pylint: disable=invalid-name def async_min_max_sensor_state_listener(entity, old_state, new_state): - """Called when the sensor changes state.""" + """Handle the sensor state changes.""" if new_state.state is None or new_state.state in STATE_UNKNOWN: self.states[entity] = STATE_UNKNOWN hass.async_add_job(self.async_update_ha_state, True) diff --git a/homeassistant/components/sensor/modbus.py b/homeassistant/components/sensor/modbus.py index f1449e5df06..3ee59e5ae54 100644 --- a/homeassistant/components/sensor/modbus.py +++ b/homeassistant/components/sensor/modbus.py @@ -17,6 +17,7 @@ from homeassistant.helpers import config_validation as cv from homeassistant.components.sensor import PLATFORM_SCHEMA _LOGGER = logging.getLogger(__name__) + DEPENDENCIES = ['modbus'] CONF_COUNT = 'count' diff --git a/homeassistant/components/sensor/modem_callerid.py b/homeassistant/components/sensor/modem_callerid.py index bb9a984c87b..e12ddb445ec 100644 --- a/homeassistant/components/sensor/modem_callerid.py +++ b/homeassistant/components/sensor/modem_callerid.py @@ -33,7 +33,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup modem caller id sensor platform.""" + """Set up modem caller ID sensor platform.""" from basicmodem.basicmodem import BasicModem as bm name = config.get(CONF_NAME) port = config.get(CONF_DEVICE) @@ -47,7 +47,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None): class ModemCalleridSensor(Entity): - """Implementation of USB modem callerid sensor.""" + """Implementation of USB modem caller ID sensor.""" def __init__(self, hass, name, port, modem): """Initialize the sensor.""" @@ -100,7 +100,7 @@ class ModemCalleridSensor(Entity): return def _incomingcallcallback(self, newstate): - """Callback from modem, process based on new state.""" + """Handle new states.""" if newstate == self.modem.STATE_RING: if self.state == self.modem.STATE_IDLE: att = {"cid_time": self.modem.get_cidtime, diff --git a/homeassistant/components/sensor/mold_indicator.py b/homeassistant/components/sensor/mold_indicator.py index 102b4620410..b668b68005c 100644 --- a/homeassistant/components/sensor/mold_indicator.py +++ b/homeassistant/components/sensor/mold_indicator.py @@ -43,7 +43,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ # pylint: disable=unused-argument def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup MoldIndicator sensor.""" + """Set up MoldIndicator sensor.""" name = config.get(CONF_NAME, DEFAULT_NAME) indoor_temp_sensor = config.get(CONF_INDOOR_TEMP) outdoor_temp_sensor = config.get(CONF_OUTDOOR_TEMP) @@ -113,9 +113,8 @@ class MoldIndicator(Entity): elif unit == TEMP_CELSIUS: return temp else: - _LOGGER.error("Temp sensor has unsupported unit: %s" - " (allowed: %s, %s)", - unit, TEMP_CELSIUS, TEMP_FAHRENHEIT) + _LOGGER.error("Temp sensor has unsupported unit: %s (allowed: %s, " + "%s)", unit, TEMP_CELSIUS, TEMP_FAHRENHEIT) return None @@ -151,7 +150,7 @@ class MoldIndicator(Entity): self._calc_moldindicator() def _sensor_changed(self, entity_id, old_state, new_state): - """Called when sensor values change.""" + """Handle sensor state changes.""" if new_state is None: return @@ -167,7 +166,7 @@ class MoldIndicator(Entity): def _calc_dewpoint(self): """Calculate the dewpoint for the indoor air.""" - # use magnus approximation to calculate the dew point + # Use magnus approximation to calculate the dew point alpha = MAGNUS_K2 * self._indoor_temp / (MAGNUS_K3 + self._indoor_temp) beta = MAGNUS_K2 * MAGNUS_K3 / (MAGNUS_K3 + self._indoor_temp) @@ -215,11 +214,11 @@ class MoldIndicator(Entity): else: self._state = '{0:d}'.format(int(crit_humidity)) - _LOGGER.debug('Mold indicator humidity: %s ', self._state) + _LOGGER.debug("Mold indicator humidity: %s", self._state) @property def should_poll(self): - """Polling needed.""" + """Return the polling state.""" return False @property diff --git a/homeassistant/components/sensor/mqtt.py b/homeassistant/components/sensor/mqtt.py index 9fcb9298805..63b015b3dfd 100644 --- a/homeassistant/components/sensor/mqtt.py +++ b/homeassistant/components/sensor/mqtt.py @@ -75,13 +75,13 @@ class MqttSensor(Entity): self._expiration_trigger = None def async_added_to_hass(self): - """Subscribe mqtt events. + """Subscribe to MQTT events. This method must be run in the event loop and returns a coroutine. """ @callback def message_received(topic, payload, qos): - """A new MQTT message has been received.""" + """Handle new MQTT messages.""" # auto-expire enabled? if self._expire_after is not None and self._expire_after > 0: # Reset old trigger @@ -94,9 +94,7 @@ class MqttSensor(Entity): dt_util.utcnow() + timedelta(seconds=self._expire_after)) self._expiration_trigger = async_track_point_in_utc_time( - self.hass, - self.value_is_expired, - expiration_at) + self.hass, self.value_is_expired, expiration_at) if self._template is not None: payload = self._template.async_render_with_possible_json_value( diff --git a/homeassistant/components/sensor/mqtt_room.py b/homeassistant/components/sensor/mqtt_room.py index 427daa1a8a2..3d0dbd68afa 100644 --- a/homeassistant/components/sensor/mqtt_room.py +++ b/homeassistant/components/sensor/mqtt_room.py @@ -58,7 +58,7 @@ MQTT_PAYLOAD = vol.Schema(vol.All(json.loads, vol.Schema({ @asyncio.coroutine def async_setup_platform(hass, config, async_add_devices, discovery_info=None): - """Setup MQTT Sensor.""" + """Set up MQTT room Sensor.""" async_add_devices([MQTTRoomSensor( config.get(CONF_NAME), config.get(CONF_STATE_TOPIC), @@ -85,7 +85,7 @@ class MQTTRoomSensor(Entity): self._updated = None def async_added_to_hass(self): - """Subscribe mqtt events. + """Subscribe to MQTT events. This method must be run in the event loop and returns a coroutine. """ @@ -100,12 +100,12 @@ class MQTTRoomSensor(Entity): @callback def message_received(topic, payload, qos): - """A new MQTT message has been received.""" + """Handle new MQTT messages.""" try: data = MQTT_PAYLOAD(payload) except vol.MultipleInvalid as error: - _LOGGER.debug('skipping update because of malformatted ' - 'data: %s', error) + _LOGGER.debug( + "Skipping update because of malformatted data: %s", error) return device = _parse_update_data(topic, data) diff --git a/homeassistant/components/sensor/mvglive.py b/homeassistant/components/sensor/mvglive.py index c2f8c2be71f..3bb027c6e7e 100644 --- a/homeassistant/components/sensor/mvglive.py +++ b/homeassistant/components/sensor/mvglive.py @@ -29,6 +29,8 @@ CONF_LINES = 'lines' CONF_PRODUCTS = 'products' CONF_TIMEOFFSET = 'timeoffset' +DEFAULT_PRODUCT = ['U-Bahn', 'Tram', 'Bus', 'S-Bahn'] + ICONS = { 'U-Bahn': 'mdi:subway', 'Tram': 'mdi:tram', @@ -47,16 +49,15 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ vol.Optional(CONF_DESTINATIONS, default=['']): cv.ensure_list_csv, vol.Optional(CONF_DIRECTIONS, default=['']): cv.ensure_list_csv, vol.Optional(CONF_LINES, default=['']): cv.ensure_list_csv, - vol.Optional(CONF_PRODUCTS, - default=['U-Bahn', 'Tram', - 'Bus', 'S-Bahn']): cv.ensure_list_csv, + vol.Optional(CONF_PRODUCTS, default=DEFAULT_PRODUCT): + cv.ensure_list_csv, vol.Optional(CONF_TIMEOFFSET, default=0): cv.positive_int, vol.Optional(CONF_NAME): cv.string}] }) def setup_platform(hass, config, add_devices, discovery_info=None): - """Get the MVGLive sensor.""" + """Set up the MVGLive sensor.""" sensors = [] for nextdeparture in config.get(CONF_NEXT_DEPARTURE): sensors.append( @@ -147,14 +148,13 @@ class MVGLiveData(object): def update(self): """Update the connection data.""" try: - _departures = self.mvg.getlivedata(station=self._station, - ubahn=self._include_ubahn, - tram=self._include_tram, - bus=self._include_bus, - sbahn=self._include_sbahn) + _departures = self.mvg.getlivedata( + station=self._station, ubahn=self._include_ubahn, + tram=self._include_tram, bus=self._include_bus, + sbahn=self._include_sbahn) except ValueError: self.departures = {} - _LOGGER.warning("Returned data not understood.") + _LOGGER.warning("Returned data not understood") return for _departure in _departures: # find the first departure meeting the criteria diff --git a/homeassistant/components/sensor/mysensors.py b/homeassistant/components/sensor/mysensors.py index 9f750e3c10b..d46680c7b66 100644 --- a/homeassistant/components/sensor/mysensors.py +++ b/homeassistant/components/sensor/mysensors.py @@ -14,7 +14,7 @@ _LOGGER = logging.getLogger(__name__) def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the MySensors platform for sensors.""" + """Set up the MySensors platform for sensors.""" # Only act if loaded via mysensors by discovery event. # Otherwise gateway is not setup. if discovery_info is None: diff --git a/homeassistant/components/sensor/neato.py b/homeassistant/components/sensor/neato.py index 7c33e481069..39d77e736c5 100644 --- a/homeassistant/components/sensor/neato.py +++ b/homeassistant/components/sensor/neato.py @@ -32,12 +32,12 @@ ATTR_CLEAN_SUSP_TIME = 'clean_suspension_time' def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the Neato sensor platform.""" + """Set up the Neato sensor platform.""" dev = [] for robot in hass.data[NEATO_ROBOTS]: for type_name in SENSOR_TYPES: dev.append(NeatoConnectedSensor(hass, robot, type_name)) - _LOGGER.debug('Adding sensors %s', dev) + _LOGGER.debug("Adding sensors %s", dev) add_devices(dev) @@ -56,7 +56,7 @@ class NeatoConnectedSensor(Entity): except (requests.exceptions.ConnectionError, requests.exceptions.HTTPError) as ex: self._state = None - _LOGGER.warning('Neato connection error: %s', ex) + _LOGGER.warning("Neato connection error: %s", ex) self._mapdata = hass.data[NEATO_MAP_DATA] self.clean_time_start = None self.clean_time_stop = None @@ -78,7 +78,7 @@ class NeatoConnectedSensor(Entity): requests.exceptions.HTTPError) as ex: self._state = None self._status_state = 'Offline' - _LOGGER.warning('Neato connection error: %s', ex) + _LOGGER.warning("Neato connection error: %s", ex) return if not self._state: return diff --git a/homeassistant/components/sensor/nest.py b/homeassistant/components/sensor/nest.py index 6305f5265b0..e2567fdf4ca 100644 --- a/homeassistant/components/sensor/nest.py +++ b/homeassistant/components/sensor/nest.py @@ -44,7 +44,7 @@ _LOGGER = logging.getLogger(__name__) def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the Nest Sensor.""" + """Set up the Nest Sensor.""" if discovery_info is None: return diff --git a/homeassistant/components/sensor/netatmo.py b/homeassistant/components/sensor/netatmo.py index 41fc4287f5f..a83b218ca8f 100644 --- a/homeassistant/components/sensor/netatmo.py +++ b/homeassistant/components/sensor/netatmo.py @@ -65,7 +65,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the available Netatmo weather sensors.""" + """Set up the available Netatmo weather sensors.""" netatmo = get_component('netatmo') data = NetAtmoData(netatmo.NETATMO_AUTH, config.get(CONF_STATION, None)) @@ -109,9 +109,8 @@ class NetAtmoSensor(Entity): module_id = self.netatmo_data.\ station_data.moduleByName(module=module_name)['_id'] self.module_id = module_id[1] - self._unique_id = "Netatmo Sensor {0} - {1} ({2})".format(self._name, - module_id, - self.type) + self._unique_id = "Netatmo Sensor {0} - {1} ({2})".format( + self._name, module_id, self.type) self.update() @property @@ -307,7 +306,7 @@ class NetAtmoData(object): self.station_data = lnetatmo.WeatherStationData(self.auth) if self.station is not None: - self.data = self.station_data.lastData(station=self.station, - exclude=3600) + self.data = self.station_data.lastData( + station=self.station, exclude=3600) else: self.data = self.station_data.lastData(exclude=3600) diff --git a/homeassistant/components/sensor/netdata.py b/homeassistant/components/sensor/netdata.py index 5a3077350bc..e575cae8529 100644 --- a/homeassistant/components/sensor/netdata.py +++ b/homeassistant/components/sensor/netdata.py @@ -103,7 +103,7 @@ class NetdataSensor(Entity): @property def name(self): - """The name of the sensor.""" + """Return the name of the sensor.""" return self._name @property diff --git a/homeassistant/components/sensor/neurio_energy.py b/homeassistant/components/sensor/neurio_energy.py index 628e739f36f..5e3bf55dc9d 100644 --- a/homeassistant/components/sensor/neurio_energy.py +++ b/homeassistant/components/sensor/neurio_energy.py @@ -43,7 +43,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the Neurio sensor.""" + """Set up the Neurio sensor.""" api_key = config.get(CONF_API_KEY) api_secret = config.get(CONF_API_SECRET) sensor_id = config.get(CONF_SENSOR_ID) @@ -90,7 +90,7 @@ class NeurioData(object): if not self.sensor_id: user_info = self.neurio_client.get_user_information() - _LOGGER.warning('Sensor ID auto-detected: %s', user_info[ + _LOGGER.warning("Sensor ID auto-detected: %s", user_info[ "locations"][0]["sensors"][0]["sensorId"]) self.sensor_id = user_info[ "locations"][0]["sensors"][0]["sensorId"] @@ -111,7 +111,7 @@ class NeurioData(object): sample = self.neurio_client.get_samples_live_last(self.sensor_id) self._active_power = sample['consumptionPower'] except (requests.exceptions.RequestException, ValueError, KeyError): - _LOGGER.warning('Could not update current power usage.') + _LOGGER.warning("Could not update current power usage") return None def get_daily_usage(self): @@ -127,7 +127,7 @@ class NeurioData(object): history = self.neurio_client.get_samples_stats( self.sensor_id, start_time, 'days', end_time) except (requests.exceptions.RequestException, ValueError, KeyError): - _LOGGER.warning('Could not update daily power usage.') + _LOGGER.warning("Could not update daily power usage") return None for result in history: diff --git a/homeassistant/components/sensor/nut.py b/homeassistant/components/sensor/nut.py index 2608be8ded9..2ebc83724ba 100644 --- a/homeassistant/components/sensor/nut.py +++ b/homeassistant/components/sensor/nut.py @@ -135,7 +135,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ def setup_platform(hass, config, add_entities, discovery_info=None): - """Setup the NUT sensors.""" + """Set up the NUT sensors.""" name = config.get(CONF_NAME) host = config.get(CONF_HOST) port = config.get(CONF_PORT) @@ -146,7 +146,7 @@ def setup_platform(hass, config, add_entities, discovery_info=None): data = PyNUTData(host, port, alias, username, password) if data.status is None: - _LOGGER.error("NUT Sensor has no data, unable to setup.") + _LOGGER.error("NUT Sensor has no data, unable to setup") return False _LOGGER.debug('NUT Sensors Available: %s', data.status) @@ -160,14 +160,14 @@ def setup_platform(hass, config, add_entities, discovery_info=None): entities.append(NUTSensor(name, data, sensor_type)) else: _LOGGER.warning( - 'Sensor type: "%s" does not appear in the NUT status ' - 'output, cannot add.', sensor_type) + "Sensor type: %s does not appear in the NUT status " + "output, cannot add", sensor_type) try: data.update(no_throttle=True) except data.pynuterror as err: _LOGGER.error("Failure while testing NUT status retrieval. " - "Cannot continue setup., %s", err) + "Cannot continue setup: %s", err) return False add_entities(entities) @@ -180,7 +180,7 @@ class NUTSensor(Entity): """Initialize the sensor.""" self._data = data self.type = sensor_type - self._name = name + ' ' + SENSOR_TYPES[sensor_type][0] + self._name = "{} {}".format(name, SENSOR_TYPES[sensor_type][0]) self._unit = SENSOR_TYPES[sensor_type][1] self.update() @@ -281,8 +281,8 @@ class PyNUTData(object): try: return self._client.list_vars(self._alias) except (self.pynuterror, ConnectionResetError) as err: - _LOGGER.debug("Error getting NUT vars for host %s: %s", - self._host, err) + _LOGGER.debug( + "Error getting NUT vars for host %s: %s", self._host, err) return None @Throttle(MIN_TIME_BETWEEN_UPDATES) diff --git a/homeassistant/components/sensor/nzbget.py b/homeassistant/components/sensor/nzbget.py index f007ea034fc..7a95e445ae0 100644 --- a/homeassistant/components/sensor/nzbget.py +++ b/homeassistant/components/sensor/nzbget.py @@ -50,7 +50,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ # pylint: disable=unused-argument def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the NZBGet sensors.""" + """Set up the NZBGet sensors.""" host = config.get(CONF_HOST) port = config.get(CONF_PORT) name = config.get(CONF_NAME) @@ -105,7 +105,7 @@ class NZBGetSensor(Entity): @property def unit_of_measurement(self): - """Unit of measurement of this entity, if any.""" + """Return the unit of measurement of this entity, if any.""" return self._unit_of_measurement def update(self): diff --git a/homeassistant/components/sensor/octoprint.py b/homeassistant/components/sensor/octoprint.py index d58f55e0ab7..b029451bd5e 100644 --- a/homeassistant/components/sensor/octoprint.py +++ b/homeassistant/components/sensor/octoprint.py @@ -16,7 +16,6 @@ from homeassistant.helpers.entity import Entity from homeassistant.loader import get_component import homeassistant.helpers.config_validation as cv - _LOGGER = logging.getLogger(__name__) DEPENDENCIES = ['octoprint'] @@ -24,7 +23,6 @@ DEPENDENCIES = ['octoprint'] DEFAULT_NAME = 'OctoPrint' SENSOR_TYPES = { - # API Endpoint, Group, Key, unit 'Temperatures': ['printer', 'temperature', '*', TEMP_CELSIUS], 'Current State': ['printer', 'state', 'text', None], 'Job Percentage': ['job', 'progress', 'completion', '%'], @@ -39,7 +37,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ # pylint: disable=unused-argument def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the available OctoPrint sensors.""" + """Set up the available OctoPrint sensors.""" octoprint = get_component('octoprint') name = config.get(CONF_NAME) monitored_conditions = config.get(CONF_MONITORED_CONDITIONS) @@ -50,23 +48,16 @@ def setup_platform(hass, config, add_devices, discovery_info=None): if octo_type == "Temperatures": for tool in octoprint.OCTOPRINT.get_tools(): for temp_type in types: - new_sensor = OctoPrintSensor(octoprint.OCTOPRINT, - temp_type, - temp_type, - name, - SENSOR_TYPES[octo_type][3], - SENSOR_TYPES[octo_type][0], - SENSOR_TYPES[octo_type][1], - tool) + new_sensor = OctoPrintSensor( + octoprint.OCTOPRINT, temp_type, temp_type, name, + SENSOR_TYPES[octo_type][3], SENSOR_TYPES[octo_type][0], + SENSOR_TYPES[octo_type][1], tool) devices.append(new_sensor) else: - new_sensor = OctoPrintSensor(octoprint.OCTOPRINT, - octo_type, - SENSOR_TYPES[octo_type][2], - name, - SENSOR_TYPES[octo_type][3], - SENSOR_TYPES[octo_type][0], - SENSOR_TYPES[octo_type][1]) + new_sensor = OctoPrintSensor( + octoprint.OCTOPRINT, octo_type, SENSOR_TYPES[octo_type][2], + name, SENSOR_TYPES[octo_type][3], SENSOR_TYPES[octo_type][0], + SENSOR_TYPES[octo_type][1]) devices.append(new_sensor) add_devices(devices) @@ -113,16 +104,15 @@ class OctoPrintSensor(Entity): @property def unit_of_measurement(self): - """Unit of measurement of this entity, if any.""" + """Return the unit of measurement of this entity, if any.""" return self._unit_of_measurement def update(self): """Update state of sensor.""" try: - self._state = self.api.update(self.sensor_type, - self.api_endpoint, - self.api_group, - self.api_tool) + self._state = self.api.update( + self.sensor_type, self.api_endpoint, self.api_group, + self.api_tool) except requests.exceptions.ConnectionError: # Error calling the api, already logged in api.update() return diff --git a/homeassistant/components/sensor/ohmconnect.py b/homeassistant/components/sensor/ohmconnect.py index 929fa607a4e..8a227af8ab3 100644 --- a/homeassistant/components/sensor/ohmconnect.py +++ b/homeassistant/components/sensor/ohmconnect.py @@ -33,7 +33,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ # pylint: disable=unused-argument def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the OhmConnect sensor.""" + """Set up the OhmConnect sensor.""" name = config.get(CONF_NAME) ohmid = config.get(CONF_ID) diff --git a/homeassistant/components/sensor/onewire.py b/homeassistant/components/sensor/onewire.py index c9028fc28ab..a06573fe97f 100644 --- a/homeassistant/components/sensor/onewire.py +++ b/homeassistant/components/sensor/onewire.py @@ -14,8 +14,11 @@ import homeassistant.helpers.config_validation as cv from homeassistant.const import STATE_UNKNOWN, TEMP_CELSIUS from homeassistant.components.sensor import PLATFORM_SCHEMA +_LOGGER = logging.getLogger(__name__) + CONF_MOUNT_DIR = 'mount_dir' CONF_NAMES = 'names' + DEFAULT_MOUNT_DIR = '/sys/bus/w1/devices/' DEVICE_FAMILIES = ('10', '22', '28', '3B', '42') @@ -24,12 +27,10 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ vol.Optional(CONF_MOUNT_DIR, default=DEFAULT_MOUNT_DIR): cv.string, }) -_LOGGER = logging.getLogger(__name__) - # pylint: disable=unused-argument def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the one wire Sensors.""" + """Set up the one wire Sensors.""" base_dir = config.get(CONF_MOUNT_DIR) sensor_ids = [] device_files = [] @@ -51,9 +52,9 @@ def setup_platform(hass, config, add_devices, discovery_info=None): os.path.split(family_file_path)[0], 'temperature')) if device_files == []: - _LOGGER.error('No onewire sensor found. Check if ' - 'dtoverlay=w1-gpio is in your /boot/config.txt. ' - 'Check the mount_dir parameter if it\'s defined.') + _LOGGER.error("No onewire sensor found. Check if dtoverlay=w1-gpio " + "is in your /boot/config.txt. " + "Check the mount_dir parameter if it's defined") return devs = [] @@ -129,11 +130,11 @@ class OneWire(Entity): if len(temp_read) == 1: temp = round(float(temp_read[0]), 1) except ValueError: - _LOGGER.warning('Invalid temperature value read from ' + + _LOGGER.warning("Invalid temperature value read from %s", self._device_file) except FileNotFoundError: - _LOGGER.warning('Cannot read from sensor: ' + - self._device_file) + _LOGGER.warning( + "Cannot read from sensor: %s", self._device_file) if temp < -55 or temp > 125: return diff --git a/homeassistant/components/sensor/openevse.py b/homeassistant/components/sensor/openevse.py index d3ac52f58bd..8751dda83fd 100644 --- a/homeassistant/components/sensor/openevse.py +++ b/homeassistant/components/sensor/openevse.py @@ -4,7 +4,6 @@ Support for monitoring an OpenEVSE Charger. For more details about this platform, please refer to the documentation at https://home-assistant.io/components/sensor.openevse/ """ - import logging from requests import RequestException diff --git a/homeassistant/components/sensor/opensky.py b/homeassistant/components/sensor/opensky.py index 17e5f1f351c..43c9177f960 100644 --- a/homeassistant/components/sensor/opensky.py +++ b/homeassistant/components/sensor/opensky.py @@ -20,7 +20,6 @@ from homeassistant.util import distance as util_distance from homeassistant.util import location as util_location import homeassistant.helpers.config_validation as cv - _LOGGER = logging.getLogger(__name__) SCAN_INTERVAL = timedelta(seconds=12) # opensky public limit is 10 seconds @@ -51,7 +50,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ # pylint: disable=unused-argument def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the Open Sky platform.""" + """Set up the Open Sky platform.""" latitude = config.get(CONF_LATITUDE, hass.config.latitude) longitude = config.get(CONF_LONGITUDE, hass.config.longitude) add_devices([OpenSkySensor( @@ -132,10 +131,10 @@ class OpenSkySensor(Entity): @property def unit_of_measurement(self): - """Unit of measurement.""" + """Return the unit of measurement.""" return 'flights' @property def icon(self): - """Icon.""" + """Return the icon.""" return 'mdi:airplane' diff --git a/homeassistant/components/sensor/openweathermap.py b/homeassistant/components/sensor/openweathermap.py index 4c556e61ae2..f3620efdb43 100755 --- a/homeassistant/components/sensor/openweathermap.py +++ b/homeassistant/components/sensor/openweathermap.py @@ -50,7 +50,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the OpenWeatherMap sensor.""" + """Set up the OpenWeatherMap sensor.""" if None in (hass.config.latitude, hass.config.longitude): _LOGGER.error("Latitude or longitude not set in Home Assistant config") return False diff --git a/homeassistant/components/sensor/pi_hole.py b/homeassistant/components/sensor/pi_hole.py index 31335acc466..1d63aacff11 100644 --- a/homeassistant/components/sensor/pi_hole.py +++ b/homeassistant/components/sensor/pi_hole.py @@ -52,7 +52,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the Pi-Hole sensor.""" + """Set up the Pi-Hole sensor.""" name = config.get(CONF_NAME) host = config.get(CONF_HOST) use_ssl = config.get(CONF_SSL) diff --git a/homeassistant/components/sensor/plex.py b/homeassistant/components/sensor/plex.py index 33da15ac836..eb6b5f49f6a 100644 --- a/homeassistant/components/sensor/plex.py +++ b/homeassistant/components/sensor/plex.py @@ -39,7 +39,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ # pylint: disable=unused-argument def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the Plex sensor.""" + """Set up the Plex sensor.""" name = config.get(CONF_NAME) plex_user = config.get(CONF_USERNAME) plex_password = config.get(CONF_PASSWORD) diff --git a/homeassistant/components/sensor/pocketcasts.py b/homeassistant/components/sensor/pocketcasts.py index 5ccd082ef89..36e0bb88e0a 100644 --- a/homeassistant/components/sensor/pocketcasts.py +++ b/homeassistant/components/sensor/pocketcasts.py @@ -32,7 +32,7 @@ SCAN_INTERVAL = timedelta(minutes=5) def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the pocketcasts platform for sensors.""" + """Set up the pocketcasts platform for sensors.""" import pocketcasts try: api = pocketcasts.Api( @@ -61,9 +61,9 @@ class PocketCastsSensor(Entity): """Update sensor values.""" try: self._state = len(self._api.new_episodes_released()) - _LOGGER.debug('Found %d new episodes', self._state) + _LOGGER.debug("Found %d new episodes", self._state) except OSError as err: - _LOGGER.warning('Failed to contact server: %s', err) + _LOGGER.warning("Failed to contact server: %s", err) @property def name(self): diff --git a/homeassistant/components/sensor/pushbullet.py b/homeassistant/components/sensor/pushbullet.py index acbe6487e9f..b81ca1beb38 100644 --- a/homeassistant/components/sensor/pushbullet.py +++ b/homeassistant/components/sensor/pushbullet.py @@ -107,7 +107,7 @@ class PushBulletNotificationProvider(): self.thread.start() def on_push(self, data): - """Method to update the current data. + """Update the current data. Currently only monitors pushes but might be extended to monitor different kinds of Pushbullet events. @@ -117,11 +117,11 @@ class PushBulletNotificationProvider(): @property def data(self): - """The current data stored in the provider.""" + """Return the current data stored in the provider.""" return self._data def retrieve_pushes(self): - """The method to run the daemon thread in. + """Retrieve_pushes. Spawn a new Listener and links it to self.on_push. """ diff --git a/homeassistant/components/sensor/qnap.py b/homeassistant/components/sensor/qnap.py index e57c59e41d6..c72d2d65c6d 100644 --- a/homeassistant/components/sensor/qnap.py +++ b/homeassistant/components/sensor/qnap.py @@ -4,7 +4,6 @@ Support for QNAP NAS Sensors. For more details about this platform, please refer to the documentation at https://home-assistant.io/components/sensor.qnap/ """ - import logging from datetime import timedelta @@ -106,7 +105,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ # pylint: disable=unused-argument def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the QNAP NAS sensor.""" + """Set up the QNAP NAS sensor.""" api = QNAPStatsAPI(config) api.update() @@ -125,14 +124,14 @@ def setup_platform(hass, config, add_devices, discovery_info=None): # Basic sensors for variable in config[CONF_MONITORED_CONDITIONS]: if variable in _SYSTEM_MON_COND: - sensors.append(QNAPSystemSensor(api, variable, - _SYSTEM_MON_COND[variable])) + sensors.append(QNAPSystemSensor( + api, variable, _SYSTEM_MON_COND[variable])) if variable in _CPU_MON_COND: - sensors.append(QNAPCPUSensor(api, variable, - _CPU_MON_COND[variable])) + sensors.append(QNAPCPUSensor( + api, variable, _CPU_MON_COND[variable])) if variable in _MEMORY_MON_COND: - sensors.append(QNAPMemorySensor(api, variable, - _MEMORY_MON_COND[variable])) + sensors.append(QNAPMemorySensor( + api, variable, _MEMORY_MON_COND[variable])) # Network sensors nics = config[CONF_NICS] @@ -210,7 +209,7 @@ class QNAPStatsAPI(object): self.data["volumes"] = self._api.get_volumes() self.data["bandwidth"] = self._api.get_bandwidth() except: - _LOGGER.exception("Failed to fetch QNAP stats from the NAS.") + _LOGGER.exception("Failed to fetch QNAP stats from the NAS") class QNAPSensor(Entity): @@ -228,19 +227,17 @@ class QNAPSensor(Entity): @property def name(self): """Return the name of the sensor, if any.""" - server_name = self._api.data["system_stats"]["system"]["name"] + server_name = self._api.data['system_stats']['system']['name'] if self.monitor_device is not None: - return "{} {} ({})".format(server_name, - self.var_name, - self.monitor_device) + return "{} {} ({})".format( + server_name, self.var_name, self.monitor_device) else: - return "{} {}".format(server_name, - self.var_name) + return "{} {}".format(server_name, self.var_name) @property def icon(self): - """Icon to use in the frontend, if any.""" + """Return the icon to use in the frontend, if any.""" return self.var_icon @property @@ -259,10 +256,10 @@ class QNAPCPUSensor(QNAPSensor): @property def state(self): """Return the state of the sensor.""" - if self.var_id == "cpu_temp": - return self._api.data["system_stats"]["cpu"]["temp_c"] - elif self.var_id == "cpu_usage": - return self._api.data["system_stats"]["cpu"]["usage_percent"] + if self.var_id == 'cpu_temp': + return self._api.data['system_stats']['cpu']['temp_c'] + elif self.var_id == 'cpu_usage': + return self._api.data['system_stats']['cpu']['usage_percent'] class QNAPMemorySensor(QNAPSensor): @@ -271,27 +268,27 @@ class QNAPMemorySensor(QNAPSensor): @property def state(self): """Return the state of the sensor.""" - free = float(self._api.data["system_stats"]["memory"]["free"]) / 1024 - if self.var_id == "memory_free": + free = float(self._api.data['system_stats']['memory']['free']) / 1024 + if self.var_id == 'memory_free': return round_nicely(free) - total = float(self._api.data["system_stats"]["memory"]["total"]) / 1024 + total = float(self._api.data['system_stats']['memory']['total']) / 1024 used = total - free - if self.var_id == "memory_used": + if self.var_id == 'memory_used': return round_nicely(used) - if self.var_id == "memory_percent_used": + if self.var_id == 'memory_percent_used': return round(used / total * 100) @property def device_state_attributes(self): """Return the state attributes.""" if self._api.data: - data = self._api.data["system_stats"]["memory"] - size = round_nicely(float(data["total"]) / 1024) + data = self._api.data['system_stats']['memory'] + size = round_nicely(float(data['total']) / 1024) return { - ATTR_MEMORY_SIZE: "{} GB".format(size), + ATTR_MEMORY_SIZE: '{} GB'.format(size), } @@ -301,30 +298,30 @@ class QNAPNetworkSensor(QNAPSensor): @property def state(self): """Return the state of the sensor.""" - if self.var_id == "network_link_status": - nic = self._api.data["system_stats"]["nics"][self.monitor_device] - return nic["link_status"] + if self.var_id == 'network_link_status': + nic = self._api.data['system_stats']['nics'][self.monitor_device] + return nic['link_status'] - data = self._api.data["bandwidth"][self.monitor_device] - if self.var_id == "network_tx": - return round_nicely(data["tx"] / 1024 / 1024) + data = self._api.data['bandwidth'][self.monitor_device] + if self.var_id == 'network_tx': + return round_nicely(data['tx'] / 1024 / 1024) - if self.var_id == "network_rx": - return round_nicely(data["rx"] / 1024 / 1024) + if self.var_id == 'network_rx': + return round_nicely(data['rx'] / 1024 / 1024) @property def device_state_attributes(self): """Return the state attributes.""" if self._api.data: - data = self._api.data["system_stats"]["nics"][self.monitor_device] + data = self._api.data['system_stats']['nics'][self.monitor_device] return { - ATTR_IP: data["ip"], - ATTR_MASK: data["mask"], - ATTR_MAC: data["mac"], - ATTR_MAX_SPEED: data["max_speed"], - ATTR_PACKETS_TX: data["tx_packets"], - ATTR_PACKETS_RX: data["rx_packets"], - ATTR_PACKETS_ERR: data["err_packets"] + ATTR_IP: data['ip'], + ATTR_MASK: data['mask'], + ATTR_MAC: data['mac'], + ATTR_MAX_SPEED: data['max_speed'], + ATTR_PACKETS_TX: data['tx_packets'], + ATTR_PACKETS_RX: data['rx_packets'], + ATTR_PACKETS_ERR: data['err_packets'] } @@ -334,28 +331,27 @@ class QNAPSystemSensor(QNAPSensor): @property def state(self): """Return the state of the sensor.""" - if self.var_id == "status": - return self._api.data["system_health"] + if self.var_id == 'status': + return self._api.data['system_health'] - if self.var_id == "system_temp": - return int(self._api.data["system_stats"]["system"]["temp_c"]) + if self.var_id == 'system_temp': + return int(self._api.data['system_stats']['system']['temp_c']) @property def device_state_attributes(self): """Return the state attributes.""" if self._api.data: - data = self._api.data["system_stats"] - days = int(data["uptime"]["days"]) - hours = int(data["uptime"]["hours"]) - minutes = int(data["uptime"]["minutes"]) + data = self._api.data['system_stats'] + days = int(data['uptime']['days']) + hours = int(data['uptime']['hours']) + minutes = int(data['uptime']['minutes']) return { - ATTR_NAME: data["system"]["name"], - ATTR_MODEL: data["system"]["model"], - ATTR_SERIAL: data["system"]["serial_number"], - ATTR_UPTIME: "{:0>2d}d {:0>2d}h {:0>2d}m".format(days, - hours, - minutes) + ATTR_NAME: data['system']['name'], + ATTR_MODEL: data['system']['model'], + ATTR_SERIAL: data['system']['serial_number'], + ATTR_UPTIME: '{:0>2d}d {:0>2d}h {:0>2d}m'.format( + days, hours, minutes) } @@ -365,18 +361,18 @@ class QNAPDriveSensor(QNAPSensor): @property def state(self): """Return the state of the sensor.""" - data = self._api.data["smart_drive_health"][self.monitor_device] + data = self._api.data['smart_drive_health'][self.monitor_device] - if self.var_id == "drive_smart_status": - return data["health"] + if self.var_id == 'drive_smart_status': + return data['health'] - if self.var_id == "drive_temp": - return int(data["temp_c"]) + if self.var_id == 'drive_temp': + return int(data['temp_c']) @property def name(self): """Return the name of the sensor, if any.""" - server_name = self._api.data["system_stats"]["system"]["name"] + server_name = self._api.data['system_stats']['system']['name'] return "{} {} (Drive {})".format( server_name, @@ -388,12 +384,12 @@ class QNAPDriveSensor(QNAPSensor): def device_state_attributes(self): """Return the state attributes.""" if self._api.data: - data = self._api.data["smart_drive_health"][self.monitor_device] + data = self._api.data['smart_drive_health'][self.monitor_device] return { - ATTR_DRIVE: data["drive_number"], - ATTR_MODEL: data["model"], - ATTR_SERIAL: data["serial"], - ATTR_TYPE: data["type"], + ATTR_DRIVE: data['drive_number'], + ATTR_MODEL: data['model'], + ATTR_SERIAL: data['serial'], + ATTR_TYPE: data['type'], } @@ -403,27 +399,27 @@ class QNAPVolumeSensor(QNAPSensor): @property def state(self): """Return the state of the sensor.""" - data = self._api.data["volumes"][self.monitor_device] + data = self._api.data['volumes'][self.monitor_device] - free_gb = int(data["free_size"]) / 1024 / 1024 / 1024 - if self.var_id == "volume_size_free": + free_gb = int(data['free_size']) / 1024 / 1024 / 1024 + if self.var_id == 'volume_size_free': return round_nicely(free_gb) - total_gb = int(data["total_size"]) / 1024 / 1024 / 1024 + total_gb = int(data['total_size']) / 1024 / 1024 / 1024 used_gb = total_gb - free_gb - if self.var_id == "volume_size_used": + if self.var_id == 'volume_size_used': return round_nicely(used_gb) - if self.var_id == "volume_percentage_used": + if self.var_id == 'volume_percentage_used': return round(used_gb / total_gb * 100) @property def device_state_attributes(self): """Return the state attributes.""" if self._api.data: - data = self._api.data["volumes"][self.monitor_device] - total_gb = int(data["total_size"]) / 1024 / 1024 / 1024 + data = self._api.data['volumes'][self.monitor_device] + total_gb = int(data['total_size']) / 1024 / 1024 / 1024 return { ATTR_VOLUME_SIZE: "{} GB".format(round_nicely(total_gb)), diff --git a/homeassistant/components/sensor/random.py b/homeassistant/components/sensor/random.py index 0b0761d7076..b9083245218 100644 --- a/homeassistant/components/sensor/random.py +++ b/homeassistant/components/sensor/random.py @@ -33,7 +33,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ @asyncio.coroutine def async_setup_platform(hass, config, async_add_devices, discovery_info=None): - """Setup the Random number sensor.""" + """Set up the Random number sensor.""" name = config.get(CONF_NAME) minimum = config.get(CONF_MINIMUM) maximum = config.get(CONF_MAXIMUM) @@ -66,7 +66,7 @@ class RandomSensor(Entity): @property def icon(self): - """Icon to use in the frontend, if any.""" + """Return the icon to use in the frontend, if any.""" return ICON @property diff --git a/homeassistant/components/sensor/rest.py b/homeassistant/components/sensor/rest.py index 16b50f8b901..cbb649892f5 100644 --- a/homeassistant/components/sensor/rest.py +++ b/homeassistant/components/sensor/rest.py @@ -42,7 +42,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the RESTful sensor.""" + """Set up the RESTful sensor.""" name = config.get(CONF_NAME) resource = config.get(CONF_RESOURCE) method = config.get(CONF_METHOD) @@ -67,7 +67,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None): rest.update() if rest.data is None: - _LOGGER.error('Unable to fetch REST data') + _LOGGER.error("Unable to fetch REST data") return False add_devices([RestSensor(hass, rest, name, unit, value_template)]) diff --git a/homeassistant/components/sensor/rfxtrx.py b/homeassistant/components/sensor/rfxtrx.py index 5f7eb8e5577..e01dbc83422 100644 --- a/homeassistant/components/sensor/rfxtrx.py +++ b/homeassistant/components/sensor/rfxtrx.py @@ -56,7 +56,7 @@ def setup_platform(hass, config, add_devices_callback, discovery_info=None): add_devices_callback(sensors) def sensor_update(event): - """Callback for sensor updates from the RFXtrx gateway.""" + """Handle sensor updates from the RFXtrx gateway.""" if not isinstance(event, SensorEvent): return @@ -82,8 +82,7 @@ def setup_platform(hass, config, add_devices_callback, discovery_info=None): return pkt_id = "".join("{0:02x}".format(x) for x in event.data) - _LOGGER.info("Automatic add rfxtrx.sensor: %s", - pkt_id) + _LOGGER.info("Automatic add rfxtrx.sensor: %s", pkt_id) data_type = '' for _data_type in DATA_TYPES: diff --git a/homeassistant/components/sensor/ring.py b/homeassistant/components/sensor/ring.py index dfe791c4c41..bfe8b2ec1cd 100644 --- a/homeassistant/components/sensor/ring.py +++ b/homeassistant/components/sensor/ring.py @@ -49,15 +49,11 @@ def setup_platform(hass, config, add_devices, discovery_info=None): for sensor_type in config.get(CONF_MONITORED_CONDITIONS): for device in ring.chimes: if 'chime' in SENSOR_TYPES[sensor_type][1]: - sensors.append(RingSensor(hass, - device, - sensor_type)) + sensors.append(RingSensor(hass, device, sensor_type)) for device in ring.doorbells: if 'doorbell' in SENSOR_TYPES[sensor_type][1]: - sensors.append(RingSensor(hass, - device, - sensor_type)) + sensors.append(RingSensor(hass, device, sensor_type)) add_devices(sensors, True) return True @@ -74,8 +70,8 @@ class RingSensor(Entity): self._extra = None self._icon = 'mdi:{}'.format(SENSOR_TYPES.get(self._sensor_type)[3]) self._kind = SENSOR_TYPES.get(self._sensor_type)[4] - self._name = "{0} {1}".format(self._data.name, - SENSOR_TYPES.get(self._sensor_type)[0]) + self._name = "{0} {1}".format( + self._data.name, SENSOR_TYPES.get(self._sensor_type)[0]) self._state = STATE_UNKNOWN self._tz = str(hass.config.time_zone) @@ -121,7 +117,7 @@ class RingSensor(Entity): def update(self): """Get the latest data and updates the state.""" - _LOGGER.debug("Pulling data from %s sensor.", self._name) + _LOGGER.debug("Pulling data from %s sensor", self._name) self._data.update() @@ -137,5 +133,5 @@ class RingSensor(Entity): if history: self._extra = history[0] created_at = self._extra['created_at'] - self._state = '{0:0>2}:{1:0>2}'.format(created_at.hour, - created_at.minute) + self._state = '{0:0>2}:{1:0>2}'.format( + created_at.hour, created_at.minute) diff --git a/homeassistant/components/sensor/sabnzbd.py b/homeassistant/components/sensor/sabnzbd.py index d27f7945e55..9caa0b08374 100644 --- a/homeassistant/components/sensor/sabnzbd.py +++ b/homeassistant/components/sensor/sabnzbd.py @@ -51,7 +51,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the SABnzbd sensors.""" + """Set up the SABnzbd sensors.""" from pysabnzbd import SabnzbdApi, SabnzbdApiException host = config.get(CONF_HOST) diff --git a/homeassistant/components/sensor/sensehat.py b/homeassistant/components/sensor/sensehat.py index f421fe79ff9..7a759351b35 100644 --- a/homeassistant/components/sensor/sensehat.py +++ b/homeassistant/components/sensor/sensehat.py @@ -59,7 +59,7 @@ def get_average(temp_base): def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the Sense HAT sensor platform.""" + """Set up the Sense HAT sensor platform.""" data = SenseHatData(config.get(CONF_IS_HAT_ATTACHED)) dev = [] for variable in config[CONF_DISPLAY_OPTIONS]: diff --git a/homeassistant/components/sensor/sleepiq.py b/homeassistant/components/sensor/sleepiq.py index ff6fb945e83..cf35a400e47 100644 --- a/homeassistant/components/sensor/sleepiq.py +++ b/homeassistant/components/sensor/sleepiq.py @@ -11,7 +11,7 @@ ICON = 'mdi:hotel' def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the SleepIQ sensors.""" + """Set up the SleepIQ sensors.""" if discovery_info is None: return diff --git a/homeassistant/components/sensor/sma.py b/homeassistant/components/sensor/sma.py index 27ab20ab67d..2f3a29efbc0 100644 --- a/homeassistant/components/sensor/sma.py +++ b/homeassistant/components/sensor/sma.py @@ -1,4 +1,5 @@ -"""SMA Solar Webconnect interface. +""" +SMA Solar Webconnect interface. For more details about this platform, please refer to the documentation at https://home-assistant.io/components/sensor.sma/ @@ -65,14 +66,14 @@ def async_setup_platform(hass, config, async_add_devices, discovery_info=None): """Set up SMA WebConnect sensor.""" import pysma - # sensor_defs from the library + # Sensor_defs from the library sensor_defs = dict(zip(SENSOR_OPTIONS, [ (pysma.KEY_CURRENT_CONSUMPTION_W, 'W', 1), (pysma.KEY_CURRENT_POWER_W, 'W', 1), (pysma.KEY_TOTAL_CONSUMPTION_KWH, 'kWh', 1000), (pysma.KEY_TOTAL_YIELD_KWH, 'kWh', 1000)])) - # sensor_defs from the custom config + # Sensor_defs from the custom config for name, prop in config[CONF_CUSTOM].items(): if name in sensor_defs: _LOGGER.warning("Custom sensor %s replace built-in sensor", name) diff --git a/homeassistant/components/sensor/speedtest.py b/homeassistant/components/sensor/speedtest.py index 600ef10cd80..bf3af95d515 100644 --- a/homeassistant/components/sensor/speedtest.py +++ b/homeassistant/components/sensor/speedtest.py @@ -125,7 +125,7 @@ class SpeedtestSensor(Entity): @asyncio.coroutine def async_added_to_hass(self): - """Called when entity is about to be added to hass.""" + """Handle all entity which are about to be added.""" state = yield from async_get_last_state(self.hass, self.entity_id) if not state: return @@ -140,11 +140,10 @@ class SpeedtestData(object): self.data = None self._server_id = config.get(CONF_SERVER_ID) if not config.get(CONF_MANUAL): - track_time_change(hass, self.update, - second=config.get(CONF_SECOND), - minute=config.get(CONF_MINUTE), - hour=config.get(CONF_HOUR), - day=config.get(CONF_DAY)) + track_time_change( + hass, self.update, second=config.get(CONF_SECOND), + minute=config.get(CONF_MINUTE), hour=config.get(CONF_HOUR), + day=config.get(CONF_DAY)) def update(self, now): """Get the latest data from speedtest.net.""" diff --git a/homeassistant/components/sensor/statistics.py b/homeassistant/components/sensor/statistics.py index 342724830e3..67850957388 100644 --- a/homeassistant/components/sensor/statistics.py +++ b/homeassistant/components/sensor/statistics.py @@ -80,7 +80,7 @@ class StatisticsSensor(Entity): @callback # pylint: disable=invalid-name def async_stats_sensor_state_listener(entity, old_state, new_state): - """Called when the sensor changes state.""" + """Handle the sensor state changes.""" self._unit_of_measurement = new_state.attributes.get( ATTR_UNIT_OF_MEASUREMENT) diff --git a/homeassistant/components/sensor/steam_online.py b/homeassistant/components/sensor/steam_online.py index 679b798a24b..9fd5ab7dd7d 100644 --- a/homeassistant/components/sensor/steam_online.py +++ b/homeassistant/components/sensor/steam_online.py @@ -37,7 +37,7 @@ STATE_PLAY = 'Play' # pylint: disable=unused-argument def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the Steam platform.""" + """Set up the Steam platform.""" import steam as steamod steamod.api.key.set(config.get(CONF_API_KEY)) add_devices( diff --git a/homeassistant/components/sensor/supervisord.py b/homeassistant/components/sensor/supervisord.py index fae7032ea58..b2d8c32d9a0 100644 --- a/homeassistant/components/sensor/supervisord.py +++ b/homeassistant/components/sensor/supervisord.py @@ -25,12 +25,12 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ # pylint: disable=unused-argument def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the Supervisord platform.""" + """Set up the Supervisord platform.""" url = config.get(CONF_URL) try: supervisor_server = xmlrpc.client.ServerProxy(url) except ConnectionRefusedError: - _LOGGER.error('Could not connect to Supervisord') + _LOGGER.error("Could not connect to Supervisord") return False processes = supervisor_server.supervisor.getAllProcessInfo() diff --git a/homeassistant/components/sensor/swiss_hydrological_data.py b/homeassistant/components/sensor/swiss_hydrological_data.py index ebd932c267c..0df63956f2e 100644 --- a/homeassistant/components/sensor/swiss_hydrological_data.py +++ b/homeassistant/components/sensor/swiss_hydrological_data.py @@ -41,17 +41,16 @@ ATTR_DISCHARGE_MAX = 'discharge_max' ATTR_WATERLEVEL_MAX = 'level_max' ATTR_TEMPERATURE_MAX = 'temperature_max' +MIN_TIME_BETWEEN_UPDATES = timedelta(minutes=30) + PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ vol.Required(CONF_STATION): vol.Coerce(int), vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string, }) -# Return cached results if last scan was less then this time ago. -MIN_TIME_BETWEEN_UPDATES = timedelta(minutes=30) - def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the Swiss hydrological sensor.""" + """Set up the Swiss hydrological sensor.""" import xmltodict name = config.get(CONF_NAME) @@ -61,10 +60,10 @@ def setup_platform(hass, config, add_devices, discovery_info=None): response = requests.get(_RESOURCE, timeout=5) if any(str(station) == location.get('@StrNr') for location in xmltodict.parse(response.text)['AKT_Data']['MesPar']) is False: - _LOGGER.error('The given station does not exist: %s', station) + _LOGGER.error("The given station does not exist: %s", station) return False except requests.exceptions.ConnectionError: - _LOGGER.error('The URL is not accessible') + _LOGGER.error("The URL is not accessible") return False data = HydrologicalData(station) @@ -164,7 +163,7 @@ class HydrologicalData(object): try: response = requests.get(_RESOURCE, timeout=5) except requests.exceptions.ConnectionError: - _LOGGER.error('Unable to retrieve data from %s', _RESOURCE) + _LOGGER.error("Unable to retrieve data from %s", _RESOURCE) try: stations = xmltodict.parse(response.text)['AKT_Data']['MesPar'] diff --git a/homeassistant/components/sensor/swiss_public_transport.py b/homeassistant/components/sensor/swiss_public_transport.py index a730e5d16cf..3ca8c4cb8e1 100644 --- a/homeassistant/components/sensor/swiss_public_transport.py +++ b/homeassistant/components/sensor/swiss_public_transport.py @@ -44,7 +44,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ def setup_platform(hass, config, add_devices, discovery_info=None): - """Get the Swiss public transport sensor.""" + """Set up the Swiss public transport sensor.""" name = config.get(CONF_NAME) # journal contains [0] Station ID start, [1] Station ID destination # [2] Station name start, and [3] Station name destination @@ -52,8 +52,8 @@ def setup_platform(hass, config, add_devices, discovery_info=None): try: for location in [config.get(CONF_START), config.get(CONF_DESTINATION)]: # transport.opendata.ch doesn't play nice with requests.Session - result = requests.get(_RESOURCE + 'locations?query=%s' % location, - timeout=10) + result = requests.get( + '{}locations?query={}'.format(_RESOURCE, location), timeout=10) journey.append(result.json()['stations'][0]['name']) except KeyError: _LOGGER.exception( diff --git a/homeassistant/components/sensor/synologydsm.py b/homeassistant/components/sensor/synologydsm.py index 8ee0d6eae18..b2bcea02c00 100644 --- a/homeassistant/components/sensor/synologydsm.py +++ b/homeassistant/components/sensor/synologydsm.py @@ -4,7 +4,6 @@ Support for Synology NAS Sensors. For more details about this platform, please refer to the documentation at https://home-assistant.io/components/sensor.synologydsm/ """ - import logging from datetime import timedelta @@ -86,7 +85,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ def setup_platform(hass, config, add_devices_callback, discovery_info=None): - """Setup the Synology NAS Sensor.""" + """Set up the Synology NAS Sensor.""" # pylint: disable=too-many-locals def run_setup(event): """Wait until HASS is fully initialized before creating. @@ -139,7 +138,7 @@ class SynoApi(): # pylint: disable=too-many-arguments, bare-except def __init__(self, host, port, username, password, temp_unit): - """Constructor of the API wrapper class.""" + """Initialize the API wrapper class.""" from SynologyDSM import SynologyDSM self.temp_unit = temp_unit diff --git a/homeassistant/components/sensor/tado.py b/homeassistant/components/sensor/tado.py index 371d7e3e1c9..b654a4444c4 100644 --- a/homeassistant/components/sensor/tado.py +++ b/homeassistant/components/sensor/tado.py @@ -84,7 +84,7 @@ class TadoSensor(Entity): """Representation of a tado Sensor.""" def __init__(self, store, zone_name, zone_id, zone_variable, data_id): - """Initialization of TadoSensor class.""" + """Initialize of the Tado Sensor.""" self._store = store self.zone_name = zone_name diff --git a/homeassistant/components/sensor/ted5000.py b/homeassistant/components/sensor/ted5000.py index f01e7909e52..08681fd37f2 100644 --- a/homeassistant/components/sensor/ted5000.py +++ b/homeassistant/components/sensor/ted5000.py @@ -34,7 +34,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ # pylint: disable=unused-variable def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the Ted5000 sensor.""" + """Set up the Ted5000 sensor.""" host = config.get(CONF_HOST) port = config.get(CONF_PORT) name = config.get(CONF_NAME) @@ -68,7 +68,7 @@ class Ted5000Sensor(Entity): @property def name(self): - """The name of the sensor.""" + """Return the name of the sensor.""" return self._name @property diff --git a/homeassistant/components/sensor/tellduslive.py b/homeassistant/components/sensor/tellduslive.py index 9bebbe6e3dc..68d0bb6535f 100644 --- a/homeassistant/components/sensor/tellduslive.py +++ b/homeassistant/components/sensor/tellduslive.py @@ -3,7 +3,6 @@ Support for Tellstick Net/Telstick Live. For more details about this platform, please refer to the documentation at https://home-assistant.io/components/sensor.tellduslive/ - """ import logging @@ -36,7 +35,7 @@ SENSOR_TYPES = { def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup Tellstick sensors.""" + """Set up the Tellstick sensors.""" if discovery_info is None: return add_devices(TelldusLiveSensor(hass, sensor) for sensor in discovery_info) diff --git a/homeassistant/components/sensor/tellstick.py b/homeassistant/components/sensor/tellstick.py index d16bb28f4f4..c9f922207e5 100644 --- a/homeassistant/components/sensor/tellstick.py +++ b/homeassistant/components/sensor/tellstick.py @@ -39,7 +39,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ # pylint: disable=unused-argument def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the Tellstick sensors.""" + """Set up the Tellstick sensors.""" import tellcore.telldus as telldus import tellcore.constants as tellcore_constants diff --git a/homeassistant/components/sensor/temper.py b/homeassistant/components/sensor/temper.py index 4ccd1be7d76..ce9d974d927 100644 --- a/homeassistant/components/sensor/temper.py +++ b/homeassistant/components/sensor/temper.py @@ -35,7 +35,7 @@ def get_temper_devices(): # pylint: disable=unused-argument def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the Temper sensors.""" + """Setu p the Temper sensors.""" temp_unit = hass.config.units.temperature_unit name = config.get(CONF_NAME) scaling = { @@ -107,6 +107,6 @@ class TemperSensor(Entity): sensor_value = self.temper_device.get_temperature(format_str) self.current_value = round(sensor_value, 1) except IOError: - _LOGGER.error('Failed to get temperature. The device address may' - 'have changed - attempting to reset device') + _LOGGER.error("Failed to get temperature. The device address may" + "have changed. Attempting to reset device") reset_devices() diff --git a/homeassistant/components/sensor/template.py b/homeassistant/components/sensor/template.py index 51a7bc82a85..8cf3083d7ed 100644 --- a/homeassistant/components/sensor/template.py +++ b/homeassistant/components/sensor/template.py @@ -40,7 +40,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ @asyncio.coroutine # pylint: disable=unused-argument def async_setup_platform(hass, config, async_add_devices, discovery_info=None): - """Setup the template sensors.""" + """Set up the template sensors.""" sensors = [] for device, device_config in config[CONF_SENSORS].items(): @@ -100,7 +100,7 @@ class SensorTemplate(Entity): @callback def template_sensor_state_listener(entity, old_state, new_state): - """Called when the target device changes state.""" + """Handle device state changes.""" self.hass.async_add_job(self.async_update_ha_state(True)) @callback diff --git a/homeassistant/components/sensor/time_date.py b/homeassistant/components/sensor/time_date.py index 9182145dc95..97e6bfd4b3a 100644 --- a/homeassistant/components/sensor/time_date.py +++ b/homeassistant/components/sensor/time_date.py @@ -37,7 +37,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ @asyncio.coroutine def async_setup_platform(hass, config, async_add_devices, discovery_info=None): - """Setup the Time and Date sensor.""" + """Set up the Time and Date sensor.""" if hass.config.time_zone is None: _LOGGER.error("Timezone is not set in Home Assistant configuration") return False diff --git a/homeassistant/components/sensor/torque.py b/homeassistant/components/sensor/torque.py index 219275aee52..acc7958ea7f 100644 --- a/homeassistant/components/sensor/torque.py +++ b/homeassistant/components/sensor/torque.py @@ -48,7 +48,7 @@ def convert_pid(value): # pylint: disable=unused-argument def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup Torque platform.""" + """Set up the Torque platform.""" vehicle = config.get(CONF_NAME) email = config.get(CONF_EMAIL) sensors = {} diff --git a/homeassistant/components/sensor/transmission.py b/homeassistant/components/sensor/transmission.py index 3c9aad05626..add9cb1aca6 100644 --- a/homeassistant/components/sensor/transmission.py +++ b/homeassistant/components/sensor/transmission.py @@ -44,7 +44,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ # pylint: disable=unused-argument def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the Transmission sensors.""" + """Set up the Transmission sensors.""" import transmissionrpc from transmissionrpc.error import TransmissionError diff --git a/homeassistant/components/sensor/twitch.py b/homeassistant/components/sensor/twitch.py index 249d18ce6cb..6d075049b74 100644 --- a/homeassistant/components/sensor/twitch.py +++ b/homeassistant/components/sensor/twitch.py @@ -33,7 +33,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ # pylint: disable=unused-argument def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the Twitch platform.""" + """Set up the Twitch platform.""" channels = config.get(CONF_CHANNELS, []) add_devices([TwitchSensor(channel) for channel in channels]) diff --git a/homeassistant/components/sensor/ups.py b/homeassistant/components/sensor/ups.py index 415ff1f8745..905cdab566e 100644 --- a/homeassistant/components/sensor/ups.py +++ b/homeassistant/components/sensor/ups.py @@ -40,15 +40,15 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ # pylint: disable=unused-argument def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the UPS platform.""" + """Set up the UPS platform.""" import upsmychoice try: cookie = hass.config.path(COOKIE) - session = upsmychoice.get_session(config.get(CONF_USERNAME), - config.get(CONF_PASSWORD), - cookie_path=cookie) + session = upsmychoice.get_session( + config.get(CONF_USERNAME), config.get(CONF_PASSWORD), + cookie_path=cookie) except upsmychoice.UPSError: - _LOGGER.exception('Could not connect to UPS My Choice') + _LOGGER.exception("Could not connect to UPS My Choice") return False add_devices([UPSSensor(session, config.get(CONF_NAME), diff --git a/homeassistant/components/sensor/usps.py b/homeassistant/components/sensor/usps.py index c0fc3d9cfe4..ec1b2f5575e 100644 --- a/homeassistant/components/sensor/usps.py +++ b/homeassistant/components/sensor/usps.py @@ -39,15 +39,15 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ # pylint: disable=unused-argument def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the USPS platform.""" + """Set up the USPS platform.""" import myusps try: cookie = hass.config.path(COOKIE) - session = myusps.get_session(config.get(CONF_USERNAME), - config.get(CONF_PASSWORD), - cookie_path=cookie) + session = myusps.get_session( + config.get(CONF_USERNAME), config.get(CONF_PASSWORD), + cookie_path=cookie) except myusps.USPSError: - _LOGGER.exception('Could not connect to My USPS') + _LOGGER.exception("Could not connect to My USPS") return False add_devices([USPSSensor(session, config.get(CONF_NAME), diff --git a/homeassistant/components/sensor/vasttrafik.py b/homeassistant/components/sensor/vasttrafik.py index 9f62c8620de..c78d352e626 100644 --- a/homeassistant/components/sensor/vasttrafik.py +++ b/homeassistant/components/sensor/vasttrafik.py @@ -42,11 +42,10 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the departure sensor.""" + """Set up the departure sensor.""" import vasttrafik planner = vasttrafik.JournyPlanner( - config.get(CONF_KEY), - config.get(CONF_SECRET)) + config.get(CONF_KEY), config.get(CONF_SECRET)) sensors = [] for departure in config.get(CONF_DEPARTURES): sensors.append( @@ -104,7 +103,7 @@ class VasttrafikDepartureSensor(Entity): """Return the next departure time.""" if not self._departureboard: _LOGGER.warning( - 'No departures from "%s" heading "%s"', + "No departures from %s heading %s", self._departure['name'], self._heading['name'] if self._heading else 'ANY') return @@ -121,5 +120,5 @@ class VasttrafikDepartureSensor(Entity): direction=self._heading['id'] if self._heading else None, date=datetime.now()+self._delay) except self._vasttrafik.Error: - _LOGGER.warning('Unable to read departure board, updating token') + _LOGGER.warning("Unable to read departure board, updating token") self._planner.update_token() diff --git a/homeassistant/components/sensor/vera.py b/homeassistant/components/sensor/vera.py index f6ae00f02a6..5cb528219a5 100644 --- a/homeassistant/components/sensor/vera.py +++ b/homeassistant/components/sensor/vera.py @@ -23,7 +23,7 @@ SCAN_INTERVAL = timedelta(seconds=5) def setup_platform(hass, config, add_devices, discovery_info=None): - """Perform the setup for Vera controller devices.""" + """Set up the Vera controller devices.""" add_devices( VeraSensor(device, VERA_CONTROLLER) for device in VERA_DEVICES['sensor']) diff --git a/homeassistant/components/sensor/verisure.py b/homeassistant/components/sensor/verisure.py index 932da40bc9f..4b22512fd4d 100644 --- a/homeassistant/components/sensor/verisure.py +++ b/homeassistant/components/sensor/verisure.py @@ -16,7 +16,7 @@ _LOGGER = logging.getLogger(__name__) def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the Verisure platform.""" + """Set up the Verisure platform.""" sensors = [] if int(hub.config.get(CONF_THERMOMETERS, 1)): diff --git a/homeassistant/components/sensor/volvooncall.py b/homeassistant/components/sensor/volvooncall.py index 9554d8c5b02..703315c478c 100644 --- a/homeassistant/components/sensor/volvooncall.py +++ b/homeassistant/components/sensor/volvooncall.py @@ -13,7 +13,7 @@ _LOGGER = logging.getLogger(__name__) def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup Volvo sensors.""" + """Set up the Volvo sensors.""" if discovery_info is None: return add_devices([VolvoSensor(hass, *discovery_info)]) diff --git a/homeassistant/components/sensor/wunderground.py b/homeassistant/components/sensor/wunderground.py index 93e747cd16f..d50f6b0897c 100644 --- a/homeassistant/components/sensor/wunderground.py +++ b/homeassistant/components/sensor/wunderground.py @@ -112,11 +112,10 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the WUnderground sensor.""" - rest = WUndergroundData(hass, - config.get(CONF_API_KEY), - config.get(CONF_PWS_ID), - config.get(CONF_LANG)) + """Set up the WUnderground sensor.""" + rest = WUndergroundData( + hass, config.get(CONF_API_KEY), config.get(CONF_PWS_ID), + config.get(CONF_LANG)) sensors = [] for variable in config[CONF_MONITORED_CONDITIONS]: sensors.append(WUndergroundSensor(rest, variable)) diff --git a/homeassistant/components/sensor/yr.py b/homeassistant/components/sensor/yr.py index 0e2c07e24bb..16951f21c5d 100644 --- a/homeassistant/components/sensor/yr.py +++ b/homeassistant/components/sensor/yr.py @@ -25,7 +25,6 @@ from homeassistant.helpers.event import ( async_track_point_in_utc_time, async_track_utc_time_change) from homeassistant.util import dt as dt_util - REQUIREMENTS = ['xmltodict==0.11.0'] _LOGGER = logging.getLogger(__name__) @@ -62,7 +61,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ @asyncio.coroutine def async_setup_platform(hass, config, async_add_devices, discovery_info=None): - """Setup the Yr.no sensor.""" + """Set up the Yr.no sensor.""" latitude = config.get(CONF_LATITUDE, hass.config.latitude) longitude = config.get(CONF_LONGITUDE, hass.config.longitude) elevation = config.get(CONF_ELEVATION, hass.config.elevation or 0) @@ -82,9 +81,9 @@ def async_setup_platform(hass, config, async_add_devices, discovery_info=None): weather = YrData(hass, coordinates, dev) # Update weather on the hour, spread seconds - async_track_utc_time_change(hass, weather.async_update, - minute=randrange(1, 10), - second=randrange(0, 59)) + async_track_utc_time_change( + hass, weather.async_update, minute=randrange(1, 10), + second=randrange(0, 59)) yield from weather.async_update() @@ -166,8 +165,8 @@ class YrData(object): try: websession = async_get_clientsession(self.hass) with async_timeout.timeout(10, loop=self.hass.loop): - resp = yield from websession.get(self._url, - params=self._urlparams) + resp = yield from websession.get( + self._url, params=self._urlparams) if resp.status != 200: try_again('{} returned {}'.format(resp.url, resp.status)) return diff --git a/homeassistant/components/sensor/yweather.py b/homeassistant/components/sensor/yweather.py index b45da4121bb..3144e812870 100644 --- a/homeassistant/components/sensor/yweather.py +++ b/homeassistant/components/sensor/yweather.py @@ -52,7 +52,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the Yahoo! weather sensor.""" + """Setnup the Yahoo! weather sensor.""" from yahooweather import get_woeid, UNIT_C, UNIT_F unit = hass.config.units.temperature_unit @@ -60,15 +60,13 @@ def setup_platform(hass, config, add_devices, discovery_info=None): forecast = config.get(CONF_FORECAST) name = config.get(CONF_NAME) - # convert unit yunit = UNIT_C if unit == TEMP_CELSIUS else UNIT_F - # for print HA style temp SENSOR_TYPES["temperature"][1] = unit SENSOR_TYPES["temp_min"][1] = unit SENSOR_TYPES["temp_max"][1] = unit - # if not exists a customer woeid / calc from HA + # If not exists a customer woeid / calc from HA if woeid is None: woeid = get_woeid(hass.config.latitude, hass.config.longitude) # receive a error? @@ -76,15 +74,12 @@ def setup_platform(hass, config, add_devices, discovery_info=None): _LOGGER.critical("Can't retrieve WOEID from yahoo!") return False - # create api object yahoo_api = YahooWeatherData(woeid, yunit) - # if update is false, it will never work... if not yahoo_api.update(): _LOGGER.critical("Can't retrieve weather data from yahoo!") return False - # check if forecast support by API if forecast >= len(yahoo_api.yahoo.Forecast): _LOGGER.error("Yahoo! only support %d days forcast!", len(yahoo_api.yahoo.Forecast)) @@ -152,30 +147,30 @@ class YahooWeatherSensor(Entity): return # default code for weather image - self._code = self._data.yahoo.Now["code"] + self._code = self._data.yahoo.Now['code'] # read data - if self._type == "weather_current": - self._state = self._data.yahoo.Now["text"] - elif self._type == "weather": - self._code = self._data.yahoo.Forecast[self._forecast]["code"] - self._state = self._data.yahoo.Forecast[self._forecast]["text"] - elif self._type == "temperature": - self._state = self._data.yahoo.Now["temp"] - elif self._type == "temp_min": - self._code = self._data.yahoo.Forecast[self._forecast]["code"] - self._state = self._data.yahoo.Forecast[self._forecast]["low"] - elif self._type == "temp_max": - self._code = self._data.yahoo.Forecast[self._forecast]["code"] - self._state = self._data.yahoo.Forecast[self._forecast]["high"] - elif self._type == "wind_speed": - self._state = self._data.yahoo.Wind["speed"] - elif self._type == "humidity": - self._state = self._data.yahoo.Atmosphere["humidity"] - elif self._type == "pressure": - self._state = self._data.yahoo.Atmosphere["pressure"] - elif self._type == "visibility": - self._state = self._data.yahoo.Atmosphere["visibility"] + if self._type == 'weather_current': + self._state = self._data.yahoo.Now['text'] + elif self._type == 'weather': + self._code = self._data.yahoo.Forecast[self._forecast]['code'] + self._state = self._data.yahoo.Forecast[self._forecast]['text'] + elif self._type == 'temperature': + self._state = self._data.yahoo.Now['temp'] + elif self._type == 'temp_min': + self._code = self._data.yahoo.Forecast[self._forecast]['code'] + self._state = self._data.yahoo.Forecast[self._forecast]['low'] + elif self._type == 'temp_max': + self._code = self._data.yahoo.Forecast[self._forecast]['code'] + self._state = self._data.yahoo.Forecast[self._forecast]['high'] + elif self._type == 'wind_speed': + self._state = self._data.yahoo.Wind['speed'] + elif self._type == 'humidity': + self._state = self._data.yahoo.Atmosphere['humidity'] + elif self._type == 'pressure': + self._state = self._data.yahoo.Atmosphere['pressure'] + elif self._type == 'visibility': + self._state = self._data.yahoo.Atmosphere['visibility'] class YahooWeatherData(object): diff --git a/homeassistant/components/sensor/zabbix.py b/homeassistant/components/sensor/zabbix.py index 6c3d0a3d653..9f46159b1a2 100644 --- a/homeassistant/components/sensor/zabbix.py +++ b/homeassistant/components/sensor/zabbix.py @@ -5,28 +5,28 @@ For more details about this platform, please refer to the documentation at https://home-assistant.io/components/sensor.zabbix/ """ import logging + import voluptuous as vol -from homeassistant.helpers.entity import Entity import homeassistant.components.zabbix as zabbix -from homeassistant.components.sensor import PLATFORM_SCHEMA import homeassistant.helpers.config_validation as cv - +from homeassistant.components.sensor import PLATFORM_SCHEMA +from homeassistant.const import CONF_NAME +from homeassistant.helpers.entity import Entity _LOGGER = logging.getLogger(__name__) DEPENDENCIES = ['zabbix'] -_CONF_TRIGGERS = "triggers" -_CONF_HOSTIDS = "hostids" -_CONF_INDIVIDUAL = "individual" -_CONF_NAME = "name" +_CONF_TRIGGERS = 'triggers' +_CONF_HOSTIDS = 'hostids' +_CONF_INDIVIDUAL = 'individual' _ZABBIX_ID_LIST_SCHEMA = vol.Schema([int]) _ZABBIX_TRIGGER_SCHEMA = vol.Schema({ vol.Optional(_CONF_HOSTIDS, default=[]): _ZABBIX_ID_LIST_SCHEMA, vol.Optional(_CONF_INDIVIDUAL, default=False): cv.boolean(True), - vol.Optional(_CONF_NAME, default=None): cv.string, + vol.Optional(CONF_NAME, default=None): cv.string, }) # SCAN_INTERVAL = 30 @@ -42,18 +42,17 @@ def setup_platform(hass, config, add_devices, discovery_info=None): zapi = hass.data[zabbix.DOMAIN] if not zapi: - _LOGGER.error("zapi is None. Zabbix component hasn't been loaded?") + _LOGGER.error("zapi is None. Zabbix component hasn't been loaded?") return False - _LOGGER.info("Connected to Zabbix API Version %s", - zapi.api_version()) + _LOGGER.info("Connected to Zabbix API Version %s", zapi.api_version()) trigger_conf = config.get(_CONF_TRIGGERS) # The following code seems overly complex. Need to think about this... if trigger_conf: hostids = trigger_conf.get(_CONF_HOSTIDS) individual = trigger_conf.get(_CONF_INDIVIDUAL) - name = trigger_conf.get(_CONF_NAME) + name = trigger_conf.get(CONF_NAME) if individual: # Individual sensor per host @@ -63,10 +62,9 @@ def setup_platform(hass, config, add_devices, discovery_info=None): return False for hostid in hostids: - _LOGGER.debug("Creating Zabbix Sensor: " + str(hostid)) - sensor = ZabbixSingleHostTriggerCountSensor(zapi, - [hostid], - name) + _LOGGER.debug("Creating Zabbix Sensor: %s", str(hostid)) + sensor = ZabbixSingleHostTriggerCountSensor( + zapi, [hostid], name) sensors.append(sensor) else: if not hostids: @@ -75,10 +73,9 @@ def setup_platform(hass, config, add_devices, discovery_info=None): sensor = ZabbixTriggerCountSensor(zapi, name) else: # Single sensor that sums total issues for all hosts - _LOGGER.debug("Creating Zabbix Sensor group: " + str(hostids)) - sensor = ZabbixMultipleHostTriggerCountSensor(zapi, - hostids, - name) + _LOGGER.debug("Creating Zabbix Sensor group: %s", str(hostids)) + sensor = ZabbixMultipleHostTriggerCountSensor( + zapi, hostids, name) sensors.append(sensor) else: # Single sensor that provides the total count of triggers. @@ -115,14 +112,12 @@ class ZabbixTriggerCountSensor(Entity): return 'issues' def _call_zabbix_api(self): - return self._zapi.trigger.get(output="extend", - only_true=1, - monitored=1, - filter={"value": 1}) + return self._zapi.trigger.get( + output="extend", only_true=1, monitored=1, filter={"value": 1}) def update(self): """Update the sensor.""" - _LOGGER.debug("Updating ZabbixTriggerCountSensor: " + str(self._name)) + _LOGGER.debug("Updating ZabbixTriggerCountSensor: %s", str(self._name)) triggers = self._call_zabbix_api() self._state = len(triggers) @@ -140,35 +135,31 @@ class ZabbixSingleHostTriggerCountSensor(ZabbixTriggerCountSensor): super().__init__(zApi, name) self._hostid = hostid if not name: - self._name = self._zapi.host.get(hostids=self._hostid, - output="extend")[0]["name"] + self._name = self._zapi.host.get( + hostids=self._hostid, output="extend")[0]["name"] self._attributes["Host ID"] = self._hostid def _call_zabbix_api(self): - return self._zapi.trigger.get(hostids=self._hostid, - output="extend", - only_true=1, - monitored=1, - filter={"value": 1}) + return self._zapi.trigger.get( + hostids=self._hostid, output="extend", only_true=1, monitored=1, + filter={"value": 1}) class ZabbixMultipleHostTriggerCountSensor(ZabbixTriggerCountSensor): """Get the active trigger count for specified Zabbix monitored hosts.""" def __init__(self, zApi, hostids, name=None): - """Initiate Zabbix sensor.""" + """Initialize Zabbix sensor.""" super().__init__(zApi, name) self._hostids = hostids if not name: - host_names = self._zapi.host.get(hostids=self._hostids, - output="extend") + host_names = self._zapi.host.get( + hostids=self._hostids, output="extend") self._name = " ".join(name["name"] for name in host_names) self._attributes["Host IDs"] = self._hostids def _call_zabbix_api(self): - return self._zapi.trigger.get(hostids=self._hostids, - output="extend", - only_true=1, - monitored=1, - filter={"value": 1}) + return self._zapi.trigger.get( + hostids=self._hostids, output="extend", only_true=1, + monitored=1, filter={"value": 1}) diff --git a/homeassistant/components/sensor/zamg.py b/homeassistant/components/sensor/zamg.py index 3d5f6146a39..ef4ebe373e7 100644 --- a/homeassistant/components/sensor/zamg.py +++ b/homeassistant/components/sensor/zamg.py @@ -185,7 +185,7 @@ class ZamgData(object): .format(self._station_id)) def get_data(self, variable): - """Generic accessor for data.""" + """Get the data.""" return self.data.get(variable) @@ -231,7 +231,7 @@ def closest_station(lat, lon, cache_dir): stations = zamg_stations(cache_dir) def comparable_dist(zamg_id): - """A fast key function for psudeo-distance from lat/lon.""" + """Calculater psudeo-distance from lat/lon.""" station_lat, station_lon = stations[zamg_id] return (lat - station_lat) ** 2 + (lon - station_lon) ** 2 diff --git a/homeassistant/components/sensor/zha.py b/homeassistant/components/sensor/zha.py index ef1fe36873b..dd176a9119b 100644 --- a/homeassistant/components/sensor/zha.py +++ b/homeassistant/components/sensor/zha.py @@ -19,7 +19,7 @@ DEPENDENCIES = ['zha'] @asyncio.coroutine def async_setup_platform(hass, config, async_add_devices, discovery_info=None): - """Setup Zigbee Home Automation sensors.""" + """Set up Zigbee Home Automation sensors.""" discovery_info = zha.get_discovery_info(hass, discovery_info) if discovery_info is None: return @@ -44,10 +44,7 @@ def make_sensor(discovery_info): cluster = clusters[0] yield from cluster.bind() yield from cluster.configure_reporting( - attr, - 300, - 600, - sensor.min_reportable_change, + attr, 300, 600, sensor.min_reportable_change, ) return sensor @@ -95,5 +92,5 @@ class TemperatureSensor(Sensor): if self._state == 'unknown': return 'unknown' celsius = round(float(self._state) / 100, 1) - return convert_temperature(celsius, TEMP_CELSIUS, - self.unit_of_measurement) + return convert_temperature( + celsius, TEMP_CELSIUS, self.unit_of_measurement) diff --git a/homeassistant/components/sensor/zigbee.py b/homeassistant/components/sensor/zigbee.py index f3e8d5480a8..176c0fd51aa 100644 --- a/homeassistant/components/sensor/zigbee.py +++ b/homeassistant/components/sensor/zigbee.py @@ -31,7 +31,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the ZigBee platform. + """Set up the ZigBee platform. Uses the 'type' config value to work out which type of ZigBee sensor we're dealing with and instantiates the relevant classes to handle it. diff --git a/homeassistant/components/sensor/zoneminder.py b/homeassistant/components/sensor/zoneminder.py index 388c12641c5..8ef5266790c 100644 --- a/homeassistant/components/sensor/zoneminder.py +++ b/homeassistant/components/sensor/zoneminder.py @@ -81,7 +81,7 @@ class ZMSensorEvents(Entity): """Get the number of events for each monitor.""" def __init__(self, monitor_id, monitor_name, include_archived): - """Initiate event sensor.""" + """Initialize event sensor.""" self._monitor_id = monitor_id self._monitor_name = monitor_name self._include_archived = include_archived diff --git a/homeassistant/components/sensor/zwave.py b/homeassistant/components/sensor/zwave.py index 92ea3966b0f..e9ea0e7512d 100644 --- a/homeassistant/components/sensor/zwave.py +++ b/homeassistant/components/sensor/zwave.py @@ -16,7 +16,7 @@ _LOGGER = logging.getLogger(__name__) def get_device(node, values, **kwargs): - """Create zwave entity device.""" + """Create Z-Wave entity device.""" # Generic Device mappings if node.has_command_class(zwave.const.COMMAND_CLASS_SENSOR_MULTILEVEL): return ZWaveMultilevelSensor(values) @@ -38,7 +38,7 @@ class ZWaveSensor(zwave.ZWaveDeviceEntity): self.update_properties() def update_properties(self): - """Callback on data changes for node values.""" + """Handle the data changes for node values.""" self._state = self.values.primary.data self._units = self.values.primary.units diff --git a/homeassistant/components/switch/anel_pwrctrl.py b/homeassistant/components/switch/anel_pwrctrl.py index ff3eaf387ab..fccb43a08f2 100644 --- a/homeassistant/components/switch/anel_pwrctrl.py +++ b/homeassistant/components/switch/anel_pwrctrl.py @@ -37,7 +37,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ # pylint: disable=unused-variable def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup PwrCtrl devices/switches.""" + """Set up PwrCtrl devices/switches.""" host = config.get(CONF_HOST, None) username = config.get(CONF_USERNAME) password = config.get(CONF_PASSWORD) diff --git a/homeassistant/components/switch/broadlink.py b/homeassistant/components/switch/broadlink.py index e97745cc0c6..8e4bacf7f99 100644 --- a/homeassistant/components/switch/broadlink.py +++ b/homeassistant/components/switch/broadlink.py @@ -10,33 +10,33 @@ import asyncio import binascii import logging import socket + import voluptuous as vol import homeassistant.loader as loader from homeassistant.util.dt import utcnow from homeassistant.components.switch import (SwitchDevice, PLATFORM_SCHEMA) -from homeassistant.const import (CONF_FRIENDLY_NAME, CONF_SWITCHES, - CONF_COMMAND_OFF, CONF_COMMAND_ON, - CONF_TIMEOUT, CONF_HOST, CONF_MAC, - CONF_TYPE) +from homeassistant.const import ( + CONF_FRIENDLY_NAME, CONF_SWITCHES, CONF_COMMAND_OFF, CONF_COMMAND_ON, + CONF_TIMEOUT, CONF_HOST, CONF_MAC, CONF_TYPE) import homeassistant.helpers.config_validation as cv REQUIREMENTS = ['broadlink==0.3'] _LOGGER = logging.getLogger(__name__) -DOMAIN = "broadlink" +DOMAIN = 'broadlink' DEFAULT_NAME = 'Broadlink switch' DEFAULT_TIMEOUT = 10 DEFAULT_RETRY = 3 -SERVICE_LEARN = "learn_command" -SERVICE_SEND = "send_packet" +SERVICE_LEARN = 'learn_command' +SERVICE_SEND = 'send_packet' -RM_TYPES = ["rm", "rm2", "rm_mini", "rm_pro_phicomm", "rm2_home_plus", - "rm2_home_plus_gdt", "rm2_pro_plus", "rm2_pro_plus2", - "rm2_pro_plus_bl", "rm_mini_shate"] -SP1_TYPES = ["sp1"] -SP2_TYPES = ["sp2", "honeywell_sp2", "sp3", "spmini2", "spminiplus"] +RM_TYPES = ['rm', 'rm2', 'rm_mini', 'rm_pro_phicomm', 'rm2_home_plus', + 'rm2_home_plus_gdt', 'rm2_pro_plus', 'rm2_pro_plus2', + 'rm2_pro_plus_bl', 'rm_mini_shate'] +SP1_TYPES = ['sp1'] +SP2_TYPES = ['sp2', 'honeywell_sp2', 'sp3', 'spmini2', 'spminiplus'] SWITCH_TYPES = RM_TYPES + SP1_TYPES + SP2_TYPES @@ -58,7 +58,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup Broadlink switches.""" + """Set up Broadlink switches.""" import broadlink devices = config.get(CONF_SWITCHES, {}) ip_addr = config.get(CONF_HOST) @@ -75,33 +75,31 @@ def setup_platform(hass, config, add_devices, discovery_info=None): auth = yield from hass.loop.run_in_executor(None, broadlink_device.auth) except socket.timeout: - _LOGGER.error("Failed to connect to device, timeout.") + _LOGGER.error("Failed to connect to device, timeout") return if not auth: - _LOGGER.error("Failed to connect to device.") + _LOGGER.error("Failed to connect to device") return - yield from hass.loop.run_in_executor(None, - broadlink_device.enter_learning) + yield from hass.loop.run_in_executor( + None, broadlink_device.enter_learning) _LOGGER.info("Press the key you want HASS to learn") start_time = utcnow() while (utcnow() - start_time) < timedelta(seconds=20): - packet = yield from hass.loop.run_in_executor(None, - broadlink_device. - check_data) + packet = yield from hass.loop.run_in_executor( + None, broadlink_device.check_data) if packet: - log_msg = 'Recieved packet is: {}'.\ + log_msg = "Recieved packet is: {}".\ format(b64encode(packet).decode('utf8')) _LOGGER.info(log_msg) - persistent_notification.async_create(hass, log_msg, - title='Broadlink switch') + persistent_notification.async_create( + hass, log_msg, title='Broadlink switch') return yield from asyncio.sleep(1, loop=hass.loop) - _LOGGER.error('Did not received any signal.') - persistent_notification.async_create(hass, - "Did not received any signal", - title='Broadlink switch') + _LOGGER.error("Did not received any signal") + persistent_notification.async_create( + hass, "Did not received any signal", title='Broadlink switch') @asyncio.coroutine def _send_packet(call): @@ -119,7 +117,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None): None, broadlink_device.auth) except socket.timeout: if retry == DEFAULT_RETRY-1: - _LOGGER.error("Failed to send packet to device.") + _LOGGER.error("Failed to send packet to device") if switch_type in RM_TYPES: broadlink_device = broadlink.rm((ip_addr, 80), mac_addr) @@ -148,7 +146,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None): try: broadlink_device.auth() except socket.timeout: - _LOGGER.error("Failed to connect to device.") + _LOGGER.error("Failed to connect to device") add_devices(switches) @@ -199,7 +197,7 @@ class BroadlinkRMSwitch(SwitchDevice): def _sendpacket(self, packet, retry=2): """Send packet to device.""" if packet is None: - _LOGGER.debug("Empty packet.") + _LOGGER.debug("Empty packet") return True try: self._device.send_data(packet) diff --git a/homeassistant/components/switch/demo.py b/homeassistant/components/switch/demo.py index 54277d3ab39..83b8ae796bb 100644 --- a/homeassistant/components/switch/demo.py +++ b/homeassistant/components/switch/demo.py @@ -10,7 +10,7 @@ from homeassistant.const import DEVICE_DEFAULT_NAME # pylint: disable=unused-argument def setup_platform(hass, config, add_devices_callback, discovery_info=None): - """Setup the demo switches.""" + """Set up the demo switches.""" add_devices_callback([ DemoSwitch('Decorative Lights', True, None, True), DemoSwitch('AC', False, 'mdi:air-conditioner', False) diff --git a/homeassistant/components/switch/digital_ocean.py b/homeassistant/components/switch/digital_ocean.py index 066a356ba7b..c873439dd58 100644 --- a/homeassistant/components/switch/digital_ocean.py +++ b/homeassistant/components/switch/digital_ocean.py @@ -28,7 +28,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the Digital Ocean droplet switch.""" + """Set up the Digital Ocean droplet switch.""" digital_ocean = get_component('digital_ocean') droplets = config.get(CONF_DROPLETS) diff --git a/homeassistant/components/switch/dlink.py b/homeassistant/components/switch/dlink.py index 11aff81a0d5..d5036f9cb06 100644 --- a/homeassistant/components/switch/dlink.py +++ b/homeassistant/components/switch/dlink.py @@ -39,7 +39,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ # pylint: disable=unused-argument def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup a D-Link Smart Plug.""" + """Set up a D-Link Smart Plug.""" from pyW215.pyW215 import SmartPlug host = config.get(CONF_HOST) diff --git a/homeassistant/components/switch/enocean.py b/homeassistant/components/switch/enocean.py index ead5d789bbd..abe197485d4 100644 --- a/homeassistant/components/switch/enocean.py +++ b/homeassistant/components/switch/enocean.py @@ -26,7 +26,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the EnOcean switch platform.""" + """Set up the EnOcean switch platform.""" dev_id = config.get(CONF_ID) devname = config.get(CONF_NAME) diff --git a/homeassistant/components/switch/flux.py b/homeassistant/components/switch/flux.py index 034fb7a4262..2052ffc4c15 100644 --- a/homeassistant/components/switch/flux.py +++ b/homeassistant/components/switch/flux.py @@ -81,7 +81,7 @@ def set_lights_temp(hass, lights, mired, brightness): # pylint: disable=unused-argument def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the Flux switches.""" + """Set up the Flux switches.""" name = config.get(CONF_NAME) lights = config.get(CONF_LIGHTS) start_time = config.get(CONF_START_TIME) @@ -139,11 +139,11 @@ class FluxSwitch(SwitchDevice): if self.is_on: return - # make initial update + # Make initial update self.flux_update() - self.unsub_tracker = track_time_change(self.hass, self.flux_update, - second=[0, 30]) + self.unsub_tracker = track_time_change( + self.hass, self.flux_update, second=[0, 30]) self.schedule_update_ha_state() @@ -159,13 +159,12 @@ class FluxSwitch(SwitchDevice): """Update all the lights using flux.""" if now is None: now = dt_now() - sunset = next_setting(self.hass, SUN).replace(day=now.day, - month=now.month, - year=now.year) + sunset = next_setting(self.hass, SUN).replace( + day=now.day, month=now.month, year=now.year) start_time = self.find_start_time(now) - stop_time = now.replace(hour=self._stop_time.hour, - minute=self._stop_time.minute, - second=0) + stop_time = now.replace( + hour=self._stop_time.hour, minute=self._stop_time.minute, + second=0) if start_time < now < sunset: # Daytime @@ -203,26 +202,25 @@ class FluxSwitch(SwitchDevice): if self._mode == MODE_XY: set_lights_xy(self.hass, self._lights, x_val, y_val, brightness) - _LOGGER.info("Lights updated to x:%s y:%s brightness:%s, %s%%" - " of %s cycle complete at %s", x_val, y_val, + _LOGGER.info("Lights updated to x:%s y:%s brightness:%s, %s%% " + "of %s cycle complete at %s", x_val, y_val, brightness, round( percentage_complete * 100), time_state, now) else: # Convert to mired and clamp to allowed values mired = color_temperature_kelvin_to_mired(temp) set_lights_temp(self.hass, self._lights, mired, brightness) - _LOGGER.info("Lights updated to mired:%s brightness:%s, %s%%" - " of %s cycle complete at %s", mired, brightness, + _LOGGER.info("Lights updated to mired:%s brightness:%s, %s%% " + "of %s cycle complete at %s", mired, brightness, round(percentage_complete * 100), time_state, now) def find_start_time(self, now): """Return sunrise or start_time if given.""" if self._start_time: - sunrise = now.replace(hour=self._start_time.hour, - minute=self._start_time.minute, - second=0) + sunrise = now.replace( + hour=self._start_time.hour, minute=self._start_time.minute, + second=0) else: - sunrise = next_rising(self.hass, SUN).replace(day=now.day, - month=now.month, - year=now.year) + sunrise = next_rising(self.hass, SUN).replace( + day=now.day, month=now.month, year=now.year) return sunrise diff --git a/homeassistant/components/switch/hikvisioncam.py b/homeassistant/components/switch/hikvisioncam.py index 220011b2fb0..74d3a2429eb 100644 --- a/homeassistant/components/switch/hikvisioncam.py +++ b/homeassistant/components/switch/hikvisioncam.py @@ -34,7 +34,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup Hikvision camera.""" + """Set up Hikvision camera.""" import hikvision.api from hikvision.error import HikvisionError, MissingParamError diff --git a/homeassistant/components/switch/homematic.py b/homeassistant/components/switch/homematic.py index bbacfdb1db9..a95f414bb1b 100644 --- a/homeassistant/components/switch/homematic.py +++ b/homeassistant/components/switch/homematic.py @@ -15,7 +15,7 @@ DEPENDENCIES = ['homematic'] def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the Homematic switch platform.""" + """Set up the Homematic switch platform.""" if discovery_info is None: return diff --git a/homeassistant/components/switch/knx.py b/homeassistant/components/switch/knx.py index 5141e26cdf3..d07df08ed5c 100644 --- a/homeassistant/components/switch/knx.py +++ b/homeassistant/components/switch/knx.py @@ -25,7 +25,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the KNX switch platform.""" + """Set up the KNX switch platform.""" add_devices([KNXSwitch(hass, KNXConfig(config))]) diff --git a/homeassistant/components/switch/lutron_caseta.py b/homeassistant/components/switch/lutron_caseta.py index a8fca67e91a..01d8e063db9 100644 --- a/homeassistant/components/switch/lutron_caseta.py +++ b/homeassistant/components/switch/lutron_caseta.py @@ -1,11 +1,15 @@ -"""Support for Lutron Caseta switches.""" +""" +Support for Lutron Caseta switches. + +For more details about this platform, please refer to the documentation at +https://home-assistant.io/components/sitch.lutron_caseta/ +""" import logging from homeassistant.components.lutron_caseta import ( LUTRON_CASETA_SMARTBRIDGE, LutronCasetaDevice) from homeassistant.components.switch import SwitchDevice - _LOGGER = logging.getLogger(__name__) DEPENDENCIES = ['lutron_caseta'] @@ -13,7 +17,7 @@ DEPENDENCIES = ['lutron_caseta'] # pylint: disable=unused-argument def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup Lutron switch.""" + """Set up Lutron switch.""" devs = [] bridge = hass.data[LUTRON_CASETA_SMARTBRIDGE] switch_devices = bridge.get_devices_by_type("WallSwitch") diff --git a/homeassistant/components/switch/mfi.py b/homeassistant/components/switch/mfi.py index da74d189c6f..76c3df5c98c 100644 --- a/homeassistant/components/switch/mfi.py +++ b/homeassistant/components/switch/mfi.py @@ -41,7 +41,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ # pylint: disable=unused-variable def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup mFi sensors.""" + """Set up mFi sensors.""" host = config.get(CONF_HOST) username = config.get(CONF_USERNAME) password = config.get(CONF_PASSWORD) diff --git a/homeassistant/components/switch/mochad.py b/homeassistant/components/switch/mochad.py index b7ebcabeb86..21df1898fd2 100644 --- a/homeassistant/components/switch/mochad.py +++ b/homeassistant/components/switch/mochad.py @@ -31,7 +31,7 @@ PLATFORM_SCHEMA = vol.Schema({ def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup X10 switches over a mochad controller.""" + """Set up X10 switches over a mochad controller.""" devs = config.get(CONF_DEVICES) add_devices([MochadSwitch( hass, mochad.CONTROLLER.ctrl, dev) for dev in devs]) diff --git a/homeassistant/components/switch/mysensors.py b/homeassistant/components/switch/mysensors.py index 968166d4d65..c72ea1e4cfe 100644 --- a/homeassistant/components/switch/mysensors.py +++ b/homeassistant/components/switch/mysensors.py @@ -28,7 +28,7 @@ SEND_IR_CODE_SERVICE_SCHEMA = vol.Schema({ def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the mysensors platform for switches.""" + """Set up the mysensors platform for switches.""" # Only act if loaded via mysensors by discovery event. # Otherwise gateway is not setup. if discovery_info is None: @@ -158,7 +158,7 @@ class MySensorsIRSwitch(MySensorsSwitch): """IR switch child class to MySensorsSwitch.""" def __init__(self, *args): - """Setup instance attributes.""" + """Set up instance attributes.""" MySensorsSwitch.__init__(self, *args) self._ir_code = None diff --git a/homeassistant/components/switch/orvibo.py b/homeassistant/components/switch/orvibo.py index 0ce1426dd1f..8acf398968d 100644 --- a/homeassistant/components/switch/orvibo.py +++ b/homeassistant/components/switch/orvibo.py @@ -33,7 +33,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ # pylint: disable=unused-argument def setup_platform(hass, config, add_devices_callback, discovery_info=None): - """Setup S20 switches.""" + """Set up S20 switches.""" from orvibo.s20 import discover, S20, S20Exception switch_data = {} diff --git a/homeassistant/components/switch/rfxtrx.py b/homeassistant/components/switch/rfxtrx.py index 959bab5fe40..4679ea19f4d 100644 --- a/homeassistant/components/switch/rfxtrx.py +++ b/homeassistant/components/switch/rfxtrx.py @@ -17,7 +17,7 @@ PLATFORM_SCHEMA = rfxtrx.DEFAULT_SCHEMA def setup_platform(hass, config, add_devices_callback, discovery_info=None): - """Setup the RFXtrx platform.""" + """Set up the RFXtrx platform.""" import RFXtrx as rfxtrxmod # Add switch from config file diff --git a/homeassistant/components/switch/rpi_gpio.py b/homeassistant/components/switch/rpi_gpio.py index cc761250be4..18d05db2f28 100644 --- a/homeassistant/components/switch/rpi_gpio.py +++ b/homeassistant/components/switch/rpi_gpio.py @@ -36,7 +36,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ # pylint: disable=unused-argument def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the Raspberry PI GPIO devices.""" + """Set up the Raspberry PI GPIO devices.""" invert_logic = config.get(CONF_INVERT_LOGIC) switches = [] diff --git a/homeassistant/components/switch/scsgate.py b/homeassistant/components/switch/scsgate.py index 965011d12ea..7c22e0d5a88 100644 --- a/homeassistant/components/switch/scsgate.py +++ b/homeassistant/components/switch/scsgate.py @@ -31,7 +31,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the SCSGate switches.""" + """Set up the SCSGate switches.""" logger = logging.getLogger(__name__) _setup_traditional_switches( diff --git a/homeassistant/components/switch/tellduslive.py b/homeassistant/components/switch/tellduslive.py index 5f3901d79b8..eec63ebaa5c 100644 --- a/homeassistant/components/switch/tellduslive.py +++ b/homeassistant/components/switch/tellduslive.py @@ -16,7 +16,7 @@ _LOGGER = logging.getLogger(__name__) def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup Tellstick switches.""" + """Set up Tellstick switches.""" if discovery_info is None: return add_devices(TelldusLiveSwitch(hass, switch) for switch in discovery_info) diff --git a/homeassistant/components/switch/tellstick.py b/homeassistant/components/switch/tellstick.py index 094db06c49f..c631eedc050 100644 --- a/homeassistant/components/switch/tellstick.py +++ b/homeassistant/components/switch/tellstick.py @@ -17,7 +17,7 @@ PLATFORM_SCHEMA = vol.Schema({vol.Required("platform"): DOMAIN}) # pylint: disable=unused-argument def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup Tellstick switches.""" + """Set up Tellstick switches.""" if (discovery_info is None or discovery_info[ATTR_DISCOVER_DEVICES] is None): return diff --git a/homeassistant/components/switch/template.py b/homeassistant/components/switch/template.py index 4ea2d82388d..b88b9ea590d 100644 --- a/homeassistant/components/switch/template.py +++ b/homeassistant/components/switch/template.py @@ -44,7 +44,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ @asyncio.coroutine # pylint: disable=unused-argument def async_setup_platform(hass, config, async_add_devices, discovery_info=None): - """Setup the Template switch.""" + """Set up the Template switch.""" switches = [] for device, device_config in config[CONF_SWITCHES].items(): diff --git a/homeassistant/components/switch/thinkingcleaner.py b/homeassistant/components/switch/thinkingcleaner.py index c088667a044..37c2f52e228 100644 --- a/homeassistant/components/switch/thinkingcleaner.py +++ b/homeassistant/components/switch/thinkingcleaner.py @@ -31,7 +31,7 @@ SWITCH_TYPES = { def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the ThinkingCleaner platform.""" + """Set up the ThinkingCleaner platform.""" from pythinkingcleaner import Discovery discovery = Discovery() diff --git a/homeassistant/components/switch/tplink.py b/homeassistant/components/switch/tplink.py index cc00a3691ee..1b8ef585557 100644 --- a/homeassistant/components/switch/tplink.py +++ b/homeassistant/components/switch/tplink.py @@ -32,7 +32,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ # pylint: disable=unused-argument def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the TPLink switch platform.""" + """Set up the TPLink switch platform.""" from pyHS100 import SmartPlug host = config.get(CONF_HOST) name = config.get(CONF_NAME) diff --git a/homeassistant/components/switch/transmission.py b/homeassistant/components/switch/transmission.py index 6b8f89838d5..656a6227358 100644 --- a/homeassistant/components/switch/transmission.py +++ b/homeassistant/components/switch/transmission.py @@ -33,7 +33,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ # pylint: disable=unused-argument def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the Transmission switch.""" + """Set up the Transmission switch.""" import transmissionrpc from transmissionrpc.error import TransmissionError diff --git a/homeassistant/components/switch/verisure.py b/homeassistant/components/switch/verisure.py index d7974335811..3aeb092f35b 100644 --- a/homeassistant/components/switch/verisure.py +++ b/homeassistant/components/switch/verisure.py @@ -14,7 +14,7 @@ _LOGGER = logging.getLogger(__name__) def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the Verisure switch platform.""" + """Set up the Verisure switch platform.""" if not int(hub.config.get(CONF_SMARTPLUGS, 1)): return False diff --git a/homeassistant/components/switch/volvooncall.py b/homeassistant/components/switch/volvooncall.py index 46cfd667951..9e20ddb5e7e 100644 --- a/homeassistant/components/switch/volvooncall.py +++ b/homeassistant/components/switch/volvooncall.py @@ -15,7 +15,7 @@ _LOGGER = logging.getLogger(__name__) def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup Tellstick switches.""" + """Set up Tellstick switches.""" if discovery_info is None: return add_devices([VolvoSwitch(hass, *discovery_info)]) diff --git a/homeassistant/components/switch/wemo.py b/homeassistant/components/switch/wemo.py index 700d9d25b5a..ba47ed7cb04 100644 --- a/homeassistant/components/switch/wemo.py +++ b/homeassistant/components/switch/wemo.py @@ -32,7 +32,7 @@ WEMO_STANDBY = 8 # pylint: disable=unused-argument, too-many-function-args def setup_platform(hass, config, add_devices_callback, discovery_info=None): - """Setup discovered WeMo switches.""" + """Set up discovered WeMo switches.""" import pywemo.discovery as discovery if discovery_info is not None: diff --git a/homeassistant/components/switch/wink.py b/homeassistant/components/switch/wink.py index 5d5b477be99..6783f2201c1 100644 --- a/homeassistant/components/switch/wink.py +++ b/homeassistant/components/switch/wink.py @@ -12,7 +12,7 @@ DEPENDENCIES = ['wink'] def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the Wink platform.""" + """Set up the Wink platform.""" import pywink for switch in pywink.get_switches(): diff --git a/homeassistant/components/switch/zha.py b/homeassistant/components/switch/zha.py index fb327d3ddd9..c98db2e894e 100644 --- a/homeassistant/components/switch/zha.py +++ b/homeassistant/components/switch/zha.py @@ -16,7 +16,7 @@ DEPENDENCIES = ['zha'] def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup Zigbee Home Automation switches.""" + """Set up Zigbee Home Automation switches.""" discovery_info = zha.get_discovery_info(hass, discovery_info) if discovery_info is None: return diff --git a/homeassistant/components/switch/zigbee.py b/homeassistant/components/switch/zigbee.py index 7a58b0867c1..a0db5685a90 100644 --- a/homeassistant/components/switch/zigbee.py +++ b/homeassistant/components/switch/zigbee.py @@ -25,7 +25,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the ZigBee switch platform.""" + """Set up the ZigBee switch platform.""" add_devices([ZigBeeSwitch(hass, ZigBeeDigitalOutConfig(config))]) diff --git a/homeassistant/components/telegram_bot/__init__.py b/homeassistant/components/telegram_bot/__init__.py index e0adff19731..1a79109f17d 100644 --- a/homeassistant/components/telegram_bot/__init__.py +++ b/homeassistant/components/telegram_bot/__init__.py @@ -39,10 +39,10 @@ PLATFORM_SCHEMA = vol.Schema({ @asyncio.coroutine def async_setup(hass, config): - """Setup the telegram bot component.""" + """Set up the telegram bot component.""" @asyncio.coroutine def async_setup_platform(p_type, p_config=None, discovery_info=None): - """Setup a telegram bot platform.""" + """Set up a telegram bot platform.""" platform = yield from async_prepare_setup_platform( hass, config, DOMAIN, p_type) diff --git a/homeassistant/components/telegram_bot/polling.py b/homeassistant/components/telegram_bot/polling.py index d46c3f539d2..c9891e884f0 100644 --- a/homeassistant/components/telegram_bot/polling.py +++ b/homeassistant/components/telegram_bot/polling.py @@ -1,5 +1,9 @@ -"""Telegram bot polling implementation.""" +""" +Telegram bot polling implementation. +For more details about this platform, please refer to the documentation at +https://home-assistant.io/components/telegram_bot.polling/ +""" import asyncio from asyncio.futures import CancelledError import logging @@ -23,7 +27,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA @asyncio.coroutine def async_setup_platform(hass, config, async_add_devices, discovery_info=None): - """Setup the polling platform.""" + """Set up the Telegram polling platform.""" import telegram bot = telegram.Bot(config[CONF_API_KEY]) pol = TelegramPoll(bot, hass, config[CONF_ALLOWED_CHAT_IDS]) diff --git a/homeassistant/components/telegram_bot/webhooks.py b/homeassistant/components/telegram_bot/webhooks.py index 3444c58809a..4c9f7684d36 100644 --- a/homeassistant/components/telegram_bot/webhooks.py +++ b/homeassistant/components/telegram_bot/webhooks.py @@ -1,9 +1,8 @@ """ Allows utilizing telegram webhooks. -See https://core.telegram.org/bots/webhooks for details - about webhooks. - +For more details about this platform, please refer to the documentation at +https://home-assistant.io/components/telegram_bot.webhooks/ """ import asyncio import logging @@ -45,7 +44,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ def setup_platform(hass, config, async_add_devices, discovery_info=None): - """Setup the polling platform.""" + """Set up the Telegram webhooks platform.""" import telegram bot = telegram.Bot(config[CONF_API_KEY]) @@ -54,9 +53,9 @@ def setup_platform(hass, config, async_add_devices, discovery_info=None): hass.config.api.base_url, TELEGRAM_HANDLER_URL) if current_status and current_status['url'] != handler_url: if bot.setWebhook(handler_url): - _LOGGER.info("set new telegram webhook %s", handler_url) + _LOGGER.info("Set new telegram webhook %s", handler_url) else: - _LOGGER.error("set telegram webhook failed %s", handler_url) + _LOGGER.error("Set telegram webhook failed %s", handler_url) return False hass.bus.listen_once( diff --git a/homeassistant/components/tts/amazon_polly.py b/homeassistant/components/tts/amazon_polly.py index 7dab49482ed..e3c90f4778c 100644 --- a/homeassistant/components/tts/amazon_polly.py +++ b/homeassistant/components/tts/amazon_polly.py @@ -81,7 +81,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ def get_engine(hass, config): - """Setup Amazon Polly speech component.""" + """Set up Amazon Polly speech component.""" # pylint: disable=import-error output_format = config.get(CONF_OUTPUT_FORMAT) sample_rate = config.get(CONF_SAMPLE_RATE, diff --git a/homeassistant/components/tts/demo.py b/homeassistant/components/tts/demo.py index d9d1eccec8d..ea169e9f1a5 100644 --- a/homeassistant/components/tts/demo.py +++ b/homeassistant/components/tts/demo.py @@ -22,7 +22,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ def get_engine(hass, config): - """Setup Demo speech component.""" + """Set up Demo speech component.""" return DemoProvider(config[CONF_LANG]) diff --git a/homeassistant/components/tts/marytts.py b/homeassistant/components/tts/marytts.py index ffb6950d79b..e0e7e1d0f88 100644 --- a/homeassistant/components/tts/marytts.py +++ b/homeassistant/components/tts/marytts.py @@ -51,7 +51,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ @asyncio.coroutine def async_get_engine(hass, config): - """Setup MaryTTS speech component.""" + """Set up MaryTTS speech component.""" return MaryTTSProvider(hass, config) diff --git a/homeassistant/components/tts/yandextts.py b/homeassistant/components/tts/yandextts.py index fb95faf1ecf..0f8ec88f87b 100644 --- a/homeassistant/components/tts/yandextts.py +++ b/homeassistant/components/tts/yandextts.py @@ -66,7 +66,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ @asyncio.coroutine def async_get_engine(hass, config): - """Setup VoiceRSS speech component.""" + """Set up VoiceRSS speech component.""" return YandexSpeechKitProvider(hass, config) diff --git a/homeassistant/components/weather/__init__.py b/homeassistant/components/weather/__init__.py index d67af26f560..9b0daf10efb 100644 --- a/homeassistant/components/weather/__init__.py +++ b/homeassistant/components/weather/__init__.py @@ -36,7 +36,7 @@ ATTR_FORECAST_TIME = 'datetime' @asyncio.coroutine def async_setup(hass, config): - """Setup the weather component.""" + """Set up the weather component.""" component = EntityComponent(_LOGGER, DOMAIN, hass) yield from component.async_setup(config) diff --git a/homeassistant/components/weather/demo.py b/homeassistant/components/weather/demo.py index 00470e86e1b..0a404447346 100644 --- a/homeassistant/components/weather/demo.py +++ b/homeassistant/components/weather/demo.py @@ -29,7 +29,7 @@ CONDITION_CLASSES = { def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the Demo weather.""" + """Set up the Demo weather.""" add_devices([ DemoWeather('South', 'Sunshine', 21, 92, 1099, 0.5, TEMP_CELSIUS, [22, 19, 15, 12, 14, 18, 21]), diff --git a/homeassistant/components/weather/openweathermap.py b/homeassistant/components/weather/openweathermap.py index aa3213c3832..088ca359cc1 100644 --- a/homeassistant/components/weather/openweathermap.py +++ b/homeassistant/components/weather/openweathermap.py @@ -53,7 +53,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the OpenWeatherMap weather platform.""" + """Set up the OpenWeatherMap weather platform.""" import pyowm longitude = config.get(CONF_LONGITUDE, round(hass.config.longitude, 5)) diff --git a/homeassistant/components/zwave/__init__.py b/homeassistant/components/zwave/__init__.py index bf7eaa87e68..dad7a55d14c 100755 --- a/homeassistant/components/zwave/__init__.py +++ b/homeassistant/components/zwave/__init__.py @@ -214,7 +214,7 @@ def async_setup_platform(hass, config, async_add_devices, discovery_info=None): # pylint: disable=R0914 def setup(hass, config): - """Setup Z-Wave. + """Set up Z-Wave. Will automatically load components to support devices found on the network. """ diff --git a/homeassistant/helpers/__init__.py b/homeassistant/helpers/__init__.py index 47a7627b5ce..91ec5051552 100644 --- a/homeassistant/helpers/__init__.py +++ b/homeassistant/helpers/__init__.py @@ -17,7 +17,7 @@ ConfigType = Dict[str, Any] # pylint: disable=invalid-sequence-index def config_per_platform(config: ConfigType, domain: str) -> Iterable[Tuple[Any, Any]]: - """Generator to break a component config into different platforms. + """Break a component config into different platforms. For example, will find 'switch', 'switch 2', 'switch 3', .. etc Async friendly. diff --git a/homeassistant/helpers/condition.py b/homeassistant/helpers/condition.py index 24af8a26351..bbfb19f7806 100644 --- a/homeassistant/helpers/condition.py +++ b/homeassistant/helpers/condition.py @@ -30,7 +30,7 @@ _LOGGER = logging.getLogger(__name__) def _threaded_factory(async_factory): - """Helper method to create threaded versions of async factories.""" + """Create threaded versions of async factories.""" @ft.wraps(async_factory) def factory(config, config_validation=True): """Threaded factory.""" @@ -90,7 +90,7 @@ def async_and_from_config(config: ConfigType, config_validation: bool=True): if not check(hass, variables): return False except Exception as ex: # pylint: disable=broad-except - _LOGGER.warning('Error during and-condition: %s', ex) + _LOGGER.warning("Error during and-condition: %s", ex) return False return True @@ -121,7 +121,7 @@ def async_or_from_config(config: ConfigType, config_validation: bool=True): if check(hass, variables): return True except Exception as ex: # pylint: disable=broad-except - _LOGGER.warning('Error during or-condition: %s', ex) + _LOGGER.warning("Error during or-condition: %s", ex) return False @@ -285,7 +285,7 @@ def async_template(hass, value_template, variables=None): try: value = value_template.async_render(variables) except TemplateError as ex: - _LOGGER.error('Error during template condition: %s', ex) + _LOGGER.error("Error during template condition: %s", ex) return False return value.lower() == 'true' diff --git a/homeassistant/helpers/config_validation.py b/homeassistant/helpers/config_validation.py index 32eeeaff5ab..3378116163f 100644 --- a/homeassistant/helpers/config_validation.py +++ b/homeassistant/helpers/config_validation.py @@ -43,7 +43,7 @@ T = TypeVar('T') # Adapted from: # https://github.com/alecthomas/voluptuous/issues/115#issuecomment-144464666 def has_at_least_one_key(*keys: str) -> Callable: - """Validator that at least one key exists.""" + """Validate that at least one key exists.""" def validate(obj: Dict) -> Dict: """Test keys exist in dict.""" if not isinstance(obj, dict): @@ -192,7 +192,7 @@ time_period = vol.Any(time_period_str, time_period_seconds, timedelta, def match_all(value): - """Validator that matches all values.""" + """Validate that matches all values.""" return value diff --git a/homeassistant/helpers/deprecation.py b/homeassistant/helpers/deprecation.py index a2396b9d30f..88de3a48aa0 100644 --- a/homeassistant/helpers/deprecation.py +++ b/homeassistant/helpers/deprecation.py @@ -1,5 +1,4 @@ """Deprecation helpers for Home Assistant.""" - import inspect import logging @@ -13,9 +12,9 @@ def deprecated_substitute(substitute_name): warning will be issued alerting the user of the impending change. """ def decorator(func): - """Decorator function.""" + """Decorate function as deprecated.""" def func_wrapper(self): - """Wrapper for original function.""" + """Wrap for the original function.""" if hasattr(self, substitute_name): # If this platform is still using the old property, issue # a logger warning once with instructions on how to fix it. diff --git a/homeassistant/helpers/discovery.py b/homeassistant/helpers/discovery.py index 67fa71ece29..7d3d7d0e823 100644 --- a/homeassistant/helpers/discovery.py +++ b/homeassistant/helpers/discovery.py @@ -19,7 +19,7 @@ ATTR_PLATFORM = 'platform' def listen(hass, service, callback): - """Setup listener for discovery of specific service. + """Set up listener for discovery of specific service. Service can be a string or a list/tuple. """ @@ -29,7 +29,7 @@ def listen(hass, service, callback): @core.callback def async_listen(hass, service, callback): - """Setup listener for discovery of specific service. + """Set up listener for discovery of specific service. Service can be a string or a list/tuple. """ diff --git a/homeassistant/helpers/dispatcher.py b/homeassistant/helpers/dispatcher.py index c4c5ea59d6b..d5fbadec883 100644 --- a/homeassistant/helpers/dispatcher.py +++ b/homeassistant/helpers/dispatcher.py @@ -1,4 +1,4 @@ -"""Helpers for hass dispatcher & internal component / platform.""" +"""Helpers for Home Assistant dispatcher & internal component/platform.""" import logging from homeassistant.core import callback diff --git a/homeassistant/helpers/entity.py b/homeassistant/helpers/entity.py index 6a625ee9e3e..f687d1e808f 100644 --- a/homeassistant/helpers/entity.py +++ b/homeassistant/helpers/entity.py @@ -206,13 +206,13 @@ class Entity(object): # update entity data if force_refresh: if self._update_warn: - _LOGGER.warning('Update for %s is already in progress', + _LOGGER.warning("Update for %s is already in progress", self.entity_id) return self._update_warn = self.hass.loop.call_later( SLOW_UPDATE_WARNING, _LOGGER.warning, - 'Update of %s is taking over %s seconds.', self.entity_id, + "Update of %s is taking over %s seconds", self.entity_id, SLOW_UPDATE_WARNING ) @@ -224,7 +224,7 @@ class Entity(object): yield from self.hass.loop.run_in_executor( None, self.update) except Exception: # pylint: disable=broad-except - _LOGGER.exception('Update for %s fails', self.entity_id) + _LOGGER.exception("Update for %s fails", self.entity_id) return finally: self._update_warn.cancel() @@ -264,9 +264,9 @@ class Entity(object): if not self._slow_reported and end - start > 0.4: self._slow_reported = True - _LOGGER.warning('Updating state for %s took %.3f seconds. ' - 'Please report platform to the developers at ' - 'https://goo.gl/Nvioub', self.entity_id, + _LOGGER.warning("Updating state for %s took %.3f seconds. " + "Please report platform to the developers at " + "https://goo.gl/Nvioub", self.entity_id, end - start) # Overwrite properties that have been set in the config file. @@ -316,7 +316,7 @@ class Entity(object): self.hass.states.async_remove(self.entity_id) def _attr_setter(self, name, typ, attr, attrs): - """Helper method to populate attributes based on properties.""" + """Populate attributes based on properties.""" if attr in attrs: return diff --git a/homeassistant/helpers/entity_component.py b/homeassistant/helpers/entity_component.py index 9e059528619..6e69f772d1e 100644 --- a/homeassistant/helpers/entity_component.py +++ b/homeassistant/helpers/entity_component.py @@ -76,7 +76,7 @@ class EntityComponent(object): # Refer to: homeassistant.components.discovery.load_platform() @callback def component_platform_discovered(platform, info): - """Callback to load a platform.""" + """Handle the loading of a platform.""" self.hass.async_add_job( self._async_setup_platform(platform, {}, info)) @@ -114,7 +114,7 @@ class EntityComponent(object): @asyncio.coroutine def _async_setup_platform(self, platform_type, platform_config, discovery_info=None): - """Setup a platform for this component. + """Set up a platform for this component. This method must be run in the event loop. """ @@ -140,7 +140,7 @@ class EntityComponent(object): self.logger.info("Setting up %s.%s", self.domain, platform_type) warn_task = self.hass.loop.call_later( SLOW_SETUP_WARNING, self.logger.warning, - 'Setup of platform %s is taking over %s seconds.', platform_type, + "Setup of platform %s is taking over %s seconds.", platform_type, SLOW_SETUP_WARNING) try: @@ -161,7 +161,7 @@ class EntityComponent(object): '{}.{}'.format(self.domain, platform_type)) except Exception: # pylint: disable=broad-except self.logger.exception( - 'Error while setting up platform %s', platform_type) + "Error while setting up platform %s", platform_type) finally: warn_task.cancel() @@ -297,7 +297,7 @@ class EntityPlatform(object): """Keep track of entities for a single platform and stay in loop.""" def __init__(self, component, platform, scan_interval, entity_namespace): - """Initalize the entity platform.""" + """Initialize the entity platform.""" self.component = component self.platform = platform self.scan_interval = scan_interval @@ -430,7 +430,7 @@ class EntityPlatform(object): yield from update_coro except Exception: # pylint: disable=broad-except self.component.logger.exception( - 'Error while update entity from %s in %s', + "Error while update entity from %s in %s", self.platform, self.component.domain) if tasks: diff --git a/homeassistant/helpers/event.py b/homeassistant/helpers/event.py index 12e031bfc3e..0cdcca42eca 100644 --- a/homeassistant/helpers/event.py +++ b/homeassistant/helpers/event.py @@ -59,7 +59,7 @@ def async_track_state_change(hass, entity_ids, action, from_state=None, @callback def state_change_listener(event): - """The listener that listens for specific state changes.""" + """Handle specific state changes.""" if entity_ids != MATCH_ALL and \ event.data.get('entity_id') not in entity_ids: return @@ -175,7 +175,7 @@ def async_track_time_interval(hass, action, interval): @callback def interval_listener(now): - """Called when when the interval has elapsed.""" + """Handle elaspsed intervals.""" nonlocal remove remove = async_track_point_in_utc_time( hass, interval_listener, next_interval()) @@ -212,7 +212,7 @@ def async_track_sunrise(hass, action, offset=None): @callback def sunrise_automation_listener(now): - """Called when it's time for action.""" + """Handle points in time to execute actions.""" nonlocal remove remove = async_track_point_in_utc_time( hass, sunrise_automation_listener, next_rise()) @@ -249,7 +249,7 @@ def async_track_sunset(hass, action, offset=None): @callback def sunset_automation_listener(now): - """Called when it's time for action.""" + """Handle points in time to execute actions.""" nonlocal remove remove = async_track_point_in_utc_time( hass, sunset_automation_listener, next_set()) diff --git a/homeassistant/helpers/restore_state.py b/homeassistant/helpers/restore_state.py index c022d5ae8f3..08e7a91397a 100644 --- a/homeassistant/helpers/restore_state.py +++ b/homeassistant/helpers/restore_state.py @@ -50,7 +50,7 @@ def _load_restore_cache(hass: HomeAssistant): @asyncio.coroutine def async_get_last_state(hass, entity_id: str): - """Helper to restore state.""" + """Restore state.""" if DATA_RESTORE_CACHE in hass.data: return hass.data[DATA_RESTORE_CACHE].get(entity_id) @@ -84,7 +84,7 @@ def async_get_last_state(hass, entity_id: str): @asyncio.coroutine def async_restore_state(entity, extract_info): - """Helper to call entity.async_restore_state with cached info.""" + """Call entity.async_restore_state with cached info.""" if entity.hass.state not in (CoreState.starting, CoreState.not_running): _LOGGER.debug("Not restoring state for %s: Hass is not starting: %s", entity.entity_id, entity.hass.state) diff --git a/homeassistant/helpers/script.py b/homeassistant/helpers/script.py index 03a01ece768..b44905a3141 100644 --- a/homeassistant/helpers/script.py +++ b/homeassistant/helpers/script.py @@ -19,14 +19,14 @@ from homeassistant.util.async import ( _LOGGER = logging.getLogger(__name__) -CONF_ALIAS = "alias" -CONF_SERVICE = "service" -CONF_SERVICE_DATA = "data" -CONF_SEQUENCE = "sequence" -CONF_EVENT = "event" -CONF_EVENT_DATA = "event_data" -CONF_DELAY = "delay" -CONF_WAIT_TEMPLATE = "wait_template" +CONF_ALIAS = 'alias' +CONF_SERVICE = 'service' +CONF_SERVICE_DATA = 'data' +CONF_SEQUENCE = 'sequence' +CONF_EVENT = 'event' +CONF_EVENT_DATA = 'event_data' +CONF_DELAY = 'delay' +CONF_WAIT_TEMPLATE = 'wait_template' def call_from_config(hass: HomeAssistant, config: ConfigType, @@ -88,7 +88,7 @@ class Script(): @callback def async_script_delay(now): - """Called after delay is done.""" + """Handle delay.""" # pylint: disable=cell-var-from-loop self._async_listener.remove(unsub) self.hass.async_add_job(self.async_run(variables)) @@ -124,7 +124,7 @@ class Script(): @callback def async_script_wait(entity_id, from_s, to_s): - """Called after template condition is true.""" + """Handle script after template condition is true.""" self._async_remove_listener() self.hass.async_add_job(self.async_run(variables)) diff --git a/homeassistant/helpers/service.py b/homeassistant/helpers/service.py index ce0d4f6c8a3..af6aa0f2195 100644 --- a/homeassistant/helpers/service.py +++ b/homeassistant/helpers/service.py @@ -81,7 +81,7 @@ def async_call_from_config(hass, config, blocking=False, variables=None, def extract_entity_ids(hass, service_call, expand_group=True): - """Helper method to extract a list of entity ids from a service call. + """Extract a list of entity ids from a service call. Will convert group entity ids to the entity ids it represents. diff --git a/homeassistant/helpers/state.py b/homeassistant/helpers/state.py index dbc32d1c37e..7715e49880d 100644 --- a/homeassistant/helpers/state.py +++ b/homeassistant/helpers/state.py @@ -133,7 +133,7 @@ def async_reproduce_state(hass, states, blocking=False): for state in states: if hass.states.get(state.entity_id) is None: - _LOGGER.warning('reproduce_state: Unable to find entity %s', + _LOGGER.warning("reproduce_state: Unable to find entity %s", state.entity_id) continue diff --git a/homeassistant/helpers/template.py b/homeassistant/helpers/template.py index ce5cc9e918d..7c2aeff71aa 100644 --- a/homeassistant/helpers/template.py +++ b/homeassistant/helpers/template.py @@ -131,7 +131,7 @@ class Template(object): try: return self._compiled.render(variables).strip() except jinja2.TemplateError as ex: - _LOGGER.error('Error parsing value: %s (value: %s, template: %s)', + _LOGGER.error("Error parsing value: %s (value: %s, template: %s)", ex, value, self.template) return value if error_value is _SENTINEL else error_value @@ -238,11 +238,11 @@ class LocationMethods(object): point_state = self._resolve_state(args[0]) if point_state is None: - _LOGGER.warning('Closest:Unable to find state %s', args[0]) + _LOGGER.warning("Closest:Unable to find state %s", args[0]) return None elif not loc_helper.has_location(point_state): _LOGGER.warning( - 'Closest:State does not contain valid location: %s', + "Closest:State does not contain valid location: %s", point_state) return None @@ -257,7 +257,7 @@ class LocationMethods(object): if latitude is None or longitude is None: _LOGGER.warning( - 'Closest:Received invalid coordinates: %s, %s', + "Closest:Received invalid coordinates: %s, %s", args[0], args[1]) return None @@ -297,7 +297,7 @@ class LocationMethods(object): if latitude is None or longitude is None: _LOGGER.warning( - 'Distance:State does not contains a location: %s', + "Distance:State does not contains a location: %s", value) return None @@ -305,7 +305,7 @@ class LocationMethods(object): # We expect this and next value to be lat&lng if not to_process: _LOGGER.warning( - 'Distance:Expected latitude and longitude, got %s', + "Distance:Expected latitude and longitude, got %s", value) return None @@ -314,8 +314,8 @@ class LocationMethods(object): longitude = convert(value_2, float) if latitude is None or longitude is None: - _LOGGER.warning('Distance:Unable to process latitude and ' - 'longitude: %s, %s', value, value_2) + _LOGGER.warning("Distance:Unable to process latitude and " + "longitude: %s, %s", value, value_2) return None locations.append((latitude, longitude)) diff --git a/homeassistant/helpers/typing.py b/homeassistant/helpers/typing.py index 24774ac29da..d0feab414da 100644 --- a/homeassistant/helpers/typing.py +++ b/homeassistant/helpers/typing.py @@ -1,4 +1,4 @@ -"""Typing Helpers for Home-Assistant.""" +"""Typing Helpers for Home Assistant.""" from typing import Dict, Any, Tuple import homeassistant.core diff --git a/homeassistant/scripts/db_migrator.py b/homeassistant/scripts/db_migrator.py index ee3ee253b65..bf4dddc94fe 100644 --- a/homeassistant/scripts/db_migrator.py +++ b/homeassistant/scripts/db_migrator.py @@ -47,7 +47,7 @@ def print_progress(iteration: int, total: int, prefix: str='', suffix: str='', def run(script_args: List) -> int: - """The actual script body.""" + """Run the actual script.""" # pylint: disable=invalid-name from sqlalchemy import create_engine from sqlalchemy.orm import sessionmaker diff --git a/homeassistant/scripts/influxdb_import.py b/homeassistant/scripts/influxdb_import.py index 2d9af4c7529..c21ac4adad9 100644 --- a/homeassistant/scripts/influxdb_import.py +++ b/homeassistant/scripts/influxdb_import.py @@ -9,7 +9,7 @@ import homeassistant.config as config_util def run(script_args: List) -> int: - """The actual script body.""" + """Run the actual script.""" from sqlalchemy import create_engine from sqlalchemy.orm import sessionmaker from influxdb import InfluxDBClient diff --git a/homeassistant/scripts/influxdb_migrator.py b/homeassistant/scripts/influxdb_migrator.py index 6f643c592de..6f130d18757 100644 --- a/homeassistant/scripts/influxdb_migrator.py +++ b/homeassistant/scripts/influxdb_migrator.py @@ -32,7 +32,7 @@ def print_progress(iteration: int, total: int, prefix: str='', suffix: str='', def run(script_args: List) -> int: - """The actual script body.""" + """Run the actual script.""" from influxdb import InfluxDBClient parser = argparse.ArgumentParser( diff --git a/homeassistant/scripts/macos/__init__.py b/homeassistant/scripts/macos/__init__.py index a37275e715f..275a33627a9 100644 --- a/homeassistant/scripts/macos/__init__.py +++ b/homeassistant/scripts/macos/__init__.py @@ -4,7 +4,7 @@ import time def install_osx(): - """Setup to run via launchd on OS X.""" + """Set up to run via launchd on OS X.""" with os.popen('which hass') as inp: hass_path = inp.read().strip() diff --git a/homeassistant/util/__init__.py b/homeassistant/util/__init__.py index 1186892b512..616b9100815 100644 --- a/homeassistant/util/__init__.py +++ b/homeassistant/util/__init__.py @@ -185,7 +185,7 @@ class OrderedSet(MutableSet): next_item[1] = prev_item def __iter__(self): - """Iteration of the set.""" + """Iterate of the set.""" end = self.end curr = end[2] while curr is not end: @@ -273,7 +273,7 @@ class Throttle(object): @wraps(method) def wrapper(*args, **kwargs): - """Wrapper that allows wrapped to be called only once per min_time. + """Wrap that allows wrapped to be called only once per min_time. If we cannot acquire the lock, it is running so return None. """ diff --git a/homeassistant/util/async.py b/homeassistant/util/async.py index 58aaa4b0338..ea8e5e3c874 100644 --- a/homeassistant/util/async.py +++ b/homeassistant/util/async.py @@ -19,7 +19,7 @@ _LOGGER = logging.getLogger(__name__) def _set_result_unless_cancelled(fut, result): - """Helper setting the result only if the future was not cancelled.""" + """Set the result only if the Future was not cancelled.""" if fut.cancelled(): return fut.set_result(result) @@ -41,7 +41,7 @@ def _set_concurrent_future_state(concurr, source): def _copy_future_state(source, dest): - """Internal helper to copy state from another Future. + """Copy state from another Future. The other Future may be a concurrent.futures.Future. """ @@ -112,7 +112,7 @@ def run_coroutine_threadsafe(coro, loop): future = concurrent.futures.Future() def callback(): - """Callback to call the coroutine.""" + """Handle the call to the coroutine.""" try: # pylint: disable=deprecated-method _chain_future(ensure_future(coro, loop=loop), future) @@ -142,7 +142,7 @@ def fire_coroutine_threadsafe(coro, loop): raise TypeError('A coroutine object is required: %s' % coro) def callback(): - """Callback to fire coroutine.""" + """Handle the firing of a coroutine.""" # pylint: disable=deprecated-method ensure_future(coro, loop=loop) diff --git a/homeassistant/util/logging.py b/homeassistant/util/logging.py index 095e906efe1..16d5c750172 100644 --- a/homeassistant/util/logging.py +++ b/homeassistant/util/logging.py @@ -73,7 +73,7 @@ class AsyncHandler(object): self.loop.call_soon_threadsafe(self._queue.put_nowait, record) def __repr__(self): - """String name of this.""" + """Return the string names.""" return str(self.handler) def _process(self): diff --git a/tests/common.py b/tests/common.py index 1dc6e9ffdba..0a2ea951c91 100644 --- a/tests/common.py +++ b/tests/common.py @@ -78,7 +78,7 @@ def get_test_home_assistant(): orig_stop = hass.stop def start_hass(*mocks): - """Helper to start hass.""" + """Start hass.""" run_coroutine_threadsafe(hass.async_start(), loop=hass.loop).result() def stop_hass(): @@ -167,12 +167,12 @@ def get_test_instance_port(): def mock_service(hass, domain, service): - """Setup a fake service & return a list that logs calls to this service.""" + """Set up a fake service & return a calls log list to this service.""" calls = [] @asyncio.coroutine def mock_service_log(call): # pylint: disable=unnecessary-lambda - """"Mocked service call.""" + """Mocked service call.""" calls.append(call) if hass.loop.__dict__.get("_thread_ident", 0) == threading.get_ident(): @@ -228,7 +228,7 @@ def ensure_sun_set(hass): def load_fixture(filename): - """Helper to load a fixture.""" + """Load a fixture.""" path = os.path.join(os.path.dirname(__file__), 'fixtures', filename) with open(path) as fptr: return fptr.read() @@ -320,7 +320,7 @@ class MockModule(object): self.async_setup = async_setup def setup(self, hass, config): - """Setup the component. + """Set up the component. We always define this mock because MagicMock setups will be seen by the executor as a coroutine, raising an exception. @@ -344,7 +344,7 @@ class MockPlatform(object): self.PLATFORM_SCHEMA = platform_schema def setup_platform(self, hass, config, add_devices, discovery_info=None): - """Setup the platform.""" + """Set up the platform.""" if self._setup_platform is not None: self._setup_platform(hass, config, add_devices, discovery_info) @@ -409,7 +409,7 @@ def patch_yaml_files(files_dict, endswith=True): """Mock open() in the yaml module, used by load_yaml.""" # Return the mocked file on full match if fname in files_dict: - _LOGGER.debug('patch_yaml_files match %s', fname) + _LOGGER.debug("patch_yaml_files match %s", fname) res = StringIO(files_dict[fname]) setattr(res, 'name', fname) return res @@ -417,29 +417,29 @@ def patch_yaml_files(files_dict, endswith=True): # Match using endswith for ends in matchlist: if fname.endswith(ends): - _LOGGER.debug('patch_yaml_files end match %s: %s', ends, fname) + _LOGGER.debug("patch_yaml_files end match %s: %s", ends, fname) res = StringIO(files_dict[ends]) setattr(res, 'name', fname) return res # Fallback for hass.components (i.e. services.yaml) if 'homeassistant/components' in fname: - _LOGGER.debug('patch_yaml_files using real file: %s', fname) + _LOGGER.debug("patch_yaml_files using real file: %s", fname) return open(fname, encoding='utf-8') # Not found - raise FileNotFoundError('File not found: {}'.format(fname)) + raise FileNotFoundError("File not found: {}".format(fname)) return patch.object(yaml, 'open', mock_open_f, create=True) def mock_coro(return_value=None): - """Helper method to return a coro that returns a value.""" + """Return a coro that returns a value.""" return mock_coro_func(return_value)() def mock_coro_func(return_value=None): - """Helper method to create a coro function that returns a value.""" + """Return a method to create a coro function that returns a value.""" @asyncio.coroutine def coro(*args, **kwargs): """Fake coroutine.""" @@ -469,7 +469,7 @@ def assert_setup_component(count, domain=None): res = async_process_component_config( hass, config_input, domain) config[domain] = None if res is None else res.get(domain) - _LOGGER.debug('Configuration for %s, Validated: %s, Original %s', + _LOGGER.debug("Configuration for %s, Validated: %s, Original %s", domain, config[domain], config_input.get(domain)) return res diff --git a/tests/components/fan/__init__.py b/tests/components/fan/__init__.py index 463e96a4319..54ed1fcc505 100644 --- a/tests/components/fan/__init__.py +++ b/tests/components/fan/__init__.py @@ -17,7 +17,7 @@ class TestFanEntity(unittest.TestCase): """Test coverage for base fan entity class.""" def setUp(self): - """Setup test data.""" + """Set up test data.""" self.fan = BaseFan() def tearDown(self): diff --git a/tests/test_util/aiohttp.py b/tests/test_util/aiohttp.py index 39e926ab7e7..0af5321c65f 100644 --- a/tests/test_util/aiohttp.py +++ b/tests/test_util/aiohttp.py @@ -63,7 +63,7 @@ class AiohttpClientMocker: @property def call_count(self): - """Number of requests made.""" + """Return the number of requests made.""" return len(self.mock_calls) def clear_requests(self): diff --git a/tests/testing_config/custom_components/image_processing/test.py b/tests/testing_config/custom_components/image_processing/test.py index 0c538bc6781..29d362699f5 100644 --- a/tests/testing_config/custom_components/image_processing/test.py +++ b/tests/testing_config/custom_components/image_processing/test.py @@ -4,7 +4,7 @@ from homeassistant.components.image_processing import ImageProcessingEntity def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the test image_processing platform.""" + """Set up the test image_processing platform.""" add_devices([TestImageProcessing('camera.demo_camera', "Test")]) diff --git a/tests/testing_config/custom_components/light/test.py b/tests/testing_config/custom_components/light/test.py index 07a856d42bc..fafe88eecbe 100644 --- a/tests/testing_config/custom_components/light/test.py +++ b/tests/testing_config/custom_components/light/test.py @@ -11,7 +11,7 @@ DEVICES = [] def init(empty=False): - """Initalize the platform with devices.""" + """Initialize the platform with devices.""" global DEVICES DEVICES = [] if empty else [ diff --git a/tests/testing_config/custom_components/switch/test.py b/tests/testing_config/custom_components/switch/test.py index ca027e9e906..2819f2f2951 100644 --- a/tests/testing_config/custom_components/switch/test.py +++ b/tests/testing_config/custom_components/switch/test.py @@ -11,7 +11,7 @@ DEVICES = [] def init(empty=False): - """Initalize the platform with devices.""" + """Initialize the platform with devices.""" global DEVICES DEVICES = [] if empty else [ From 12c8266942fe2ef6ed45da8788df877d2d46e166 Mon Sep 17 00:00:00 2001 From: Gergely Imreh Date: Tue, 2 May 2017 17:35:23 +0100 Subject: [PATCH 126/169] light.blinkt: update brightness control logic (#7389) Always use the current brightness, as per discussion at https://github.com/home-assistant/home-assistant/pull/7377#discussion_r114102005 --- homeassistant/components/light/blinkt.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/homeassistant/components/light/blinkt.py b/homeassistant/components/light/blinkt.py index af8c33801fa..ffd3c102c7f 100644 --- a/homeassistant/components/light/blinkt.py +++ b/homeassistant/components/light/blinkt.py @@ -96,12 +96,12 @@ class BlinktLight(Light): def turn_on(self, **kwargs): """Instruct the light to turn on and set correct brightness & color.""" - self._brightness = kwargs.get(ATTR_BRIGHTNESS, 255) - percent_bright = (self._brightness / 255) - if ATTR_RGB_COLOR in kwargs: self._rgb_color = kwargs[ATTR_RGB_COLOR] + if ATTR_BRIGHTNESS in kwargs: + self._brightness = kwargs[ATTR_BRIGHTNESS] + percent_bright = (self._brightness / 255) self._blinkt.set_all(self._rgb_color[0], self._rgb_color[1], self._rgb_color[2], From 4d52b0ecd571230073b20bab1518147e76582ca9 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Tue, 2 May 2017 22:47:20 +0200 Subject: [PATCH 127/169] Update docstrings (#7405) * Update docstrings * Fix lint issues * Update docstrings --- homeassistant/components/__init__.py | 2 +- .../alarm_control_panel/alarmdecoder.py | 6 +- .../alarm_control_panel/verisure.py | 10 +- homeassistant/components/alarmdecoder.py | 13 ++- homeassistant/components/automation/time.py | 2 +- .../components/binary_sensor/eight_sleep.py | 10 +- homeassistant/components/calendar/demo.py | 2 +- homeassistant/components/cover/mqtt.py | 8 +- homeassistant/components/cover/opengarage.py | 32 +++---- homeassistant/components/cover/zwave.py | 2 +- .../components/device_sun_light_trigger.py | 6 +- .../components/device_tracker/tplink.py | 16 ++-- homeassistant/components/discovery.py | 2 +- homeassistant/components/ecobee.py | 2 +- homeassistant/components/enocean.py | 2 +- homeassistant/components/envisalink.py | 4 +- homeassistant/components/group.py | 2 +- homeassistant/components/hdmi_cec.py | 37 ++++--- homeassistant/components/input_select.py | 4 +- homeassistant/components/input_slider.py | 9 +- homeassistant/components/joaoapps_join.py | 4 +- .../components/light/lifx/__init__.py | 8 +- .../components/light/lifx/effects.py | 6 +- homeassistant/components/light/litejet.py | 4 +- homeassistant/components/lock/zwave.py | 2 +- homeassistant/components/logger.py | 2 +- .../components/media_player/dunehd.py | 4 +- homeassistant/components/media_player/emby.py | 20 ++-- .../components/media_player/gpmdp.py | 2 +- .../components/media_player/openhome.py | 4 +- .../components/media_player/pandora.py | 5 +- .../components/media_player/soundtouch.py | 4 +- .../components/media_player/universal.py | 10 +- homeassistant/components/mysensors.py | 14 +-- homeassistant/components/notify/apns.py | 11 +-- homeassistant/components/pilight.py | 4 +- homeassistant/components/plant.py | 29 +++--- .../components/sensor/api_streams.py | 2 +- homeassistant/components/sensor/blink.py | 2 +- homeassistant/components/sensor/bom.py | 2 +- .../sensor/eddystone_temperature.py | 10 +- .../components/sensor/eight_sleep.py | 12 +-- homeassistant/components/sensor/ohmconnect.py | 2 +- homeassistant/components/sensor/zabbix.py | 6 +- homeassistant/components/sensor/zha.py | 2 +- homeassistant/components/sensor/zigbee.py | 2 +- homeassistant/components/sensor/zoneminder.py | 2 +- .../components/switch/anel_pwrctrl.py | 6 +- homeassistant/components/switch/broadlink.py | 4 +- .../components/switch/digitalloggers.py | 20 ++-- homeassistant/components/switch/hdmi_cec.py | 2 +- .../components/switch/insteon_local.py | 2 +- homeassistant/components/switch/kankun.py | 8 +- .../components/switch/lutron_caseta.py | 2 +- homeassistant/components/switch/mfi.py | 4 +- homeassistant/components/switch/mqtt.py | 6 +- homeassistant/components/switch/netio.py | 14 +-- .../components/switch/pulseaudio_loopback.py | 6 +- homeassistant/components/switch/rfxtrx.py | 4 +- homeassistant/components/switch/template.py | 17 ++-- homeassistant/components/switch/vera.py | 6 +- .../components/switch/wake_on_lan.py | 8 +- homeassistant/components/switch/wemo.py | 31 +++--- homeassistant/components/switch/zwave.py | 2 +- .../components/telegram_bot/__init__.py | 20 ++-- .../components/telegram_bot/polling.py | 6 +- .../components/telegram_bot/webhooks.py | 2 +- homeassistant/components/tradfri.py | 2 +- homeassistant/components/tts/__init__.py | 18 ++-- homeassistant/components/tts/amazon_polly.py | 96 +++++++++---------- homeassistant/components/tts/demo.py | 12 +-- homeassistant/components/tts/google.py | 5 +- homeassistant/components/tts/marytts.py | 8 +- homeassistant/components/tts/picotts.py | 4 +- homeassistant/components/tts/voicerss.py | 5 +- homeassistant/components/tts/yandextts.py | 12 +-- homeassistant/components/zwave/__init__.py | 82 ++++++++-------- homeassistant/components/zwave/node_entity.py | 6 +- homeassistant/core.py | 12 +-- homeassistant/helpers/template.py | 4 +- tests/common.py | 2 +- 81 files changed, 375 insertions(+), 409 deletions(-) diff --git a/homeassistant/components/__init__.py b/homeassistant/components/__init__.py index 2abbf6c86ed..c372004e310 100644 --- a/homeassistant/components/__init__.py +++ b/homeassistant/components/__init__.py @@ -105,7 +105,7 @@ def async_setup(hass, config): """Set up general services related to Home Assistant.""" @asyncio.coroutine def async_handle_turn_service(service): - """Method to handle calls to homeassistant.turn_on/off.""" + """Handle calls to homeassistant.turn_on/off.""" entity_ids = extract_entity_ids(hass, service) # Generic turn on/off method requires entity id diff --git a/homeassistant/components/alarm_control_panel/alarmdecoder.py b/homeassistant/components/alarm_control_panel/alarmdecoder.py index 40084eb1351..f54774b8923 100644 --- a/homeassistant/components/alarm_control_panel/alarmdecoder.py +++ b/homeassistant/components/alarm_control_panel/alarmdecoder.py @@ -25,7 +25,7 @@ DEPENDENCIES = ['alarmdecoder'] @asyncio.coroutine def async_setup_platform(hass, config, async_add_devices, discovery_info=None): - """Perform the setup for AlarmDecoder alarm panels.""" + """Set up for AlarmDecoder alarm panels.""" _LOGGER.debug("AlarmDecoderAlarmPanel: setup") device = AlarmDecoderAlarmPanel("Alarm Panel", hass) @@ -78,12 +78,12 @@ class AlarmDecoderAlarmPanel(alarm.AlarmControlPanel): @property def should_poll(self): - """No polling needed.""" + """Return the polling state.""" return False @property def code_format(self): - """Regex for code format or None if no code is required.""" + """Return the regex for code format or None if no code is required.""" return '^\\d{4,6}$' @property diff --git a/homeassistant/components/alarm_control_panel/verisure.py b/homeassistant/components/alarm_control_panel/verisure.py index 83a6ef44b76..32f28865a41 100644 --- a/homeassistant/components/alarm_control_panel/verisure.py +++ b/homeassistant/components/alarm_control_panel/verisure.py @@ -32,7 +32,7 @@ class VerisureAlarm(alarm.AlarmControlPanel): """Representation of a Verisure alarm status.""" def __init__(self, device_id): - """Initalize the Verisure alarm panel.""" + """Initialize the Verisure alarm panel.""" self._id = device_id self._state = STATE_UNKNOWN self._digits = hub.config.get(CONF_CODE_DIGITS) @@ -75,23 +75,23 @@ class VerisureAlarm(alarm.AlarmControlPanel): self._state = STATE_ALARM_ARMED_AWAY elif hub.alarm_status[self._id].status != 'pending': _LOGGER.error( - 'Unknown alarm state %s', hub.alarm_status[self._id].status) + "Unknown alarm state %s", hub.alarm_status[self._id].status) self._changed_by = hub.alarm_status[self._id].name def alarm_disarm(self, code=None): """Send disarm command.""" hub.my_pages.alarm.set(code, 'DISARMED') - _LOGGER.info("verisure alarm disarming") + _LOGGER.info("Verisure alarm disarming") hub.my_pages.alarm.wait_while_pending() def alarm_arm_home(self, code=None): """Send arm home command.""" hub.my_pages.alarm.set(code, 'ARMED_HOME') - _LOGGER.info("verisure alarm arming home") + _LOGGER.info("Verisure alarm arming home") hub.my_pages.alarm.wait_while_pending() def alarm_arm_away(self, code=None): """Send arm away command.""" hub.my_pages.alarm.set(code, 'ARMED_AWAY') - _LOGGER.info("verisure alarm arming away") + _LOGGER.info("Verisure alarm arming away") hub.my_pages.alarm.wait_while_pending() diff --git a/homeassistant/components/alarmdecoder.py b/homeassistant/components/alarmdecoder.py index 186526c7758..d4948429b81 100644 --- a/homeassistant/components/alarmdecoder.py +++ b/homeassistant/components/alarmdecoder.py @@ -8,11 +8,10 @@ import asyncio import logging import voluptuous as vol -import homeassistant.helpers.config_validation as cv +import homeassistant.helpers.config_validation as cv from homeassistant.core import callback from homeassistant.const import EVENT_HOMEASSISTANT_STOP - from homeassistant.helpers.discovery import async_load_platform from homeassistant.helpers.dispatcher import async_dispatcher_send @@ -110,21 +109,21 @@ def async_setup(hass, config): @callback def stop_alarmdecoder(event): - """The callback to handle shutdown AlarmDecoder.""" - _LOGGER.debug("Shutting down alarmdecoder.") + """Handle the shutdown of AlarmDecoder.""" + _LOGGER.debug("Shutting down alarmdecoder") controller.close() @callback def handle_message(sender, message): - """The callback to handle message from AlarmDecoder.""" + """Handle message from AlarmDecoder.""" async_dispatcher_send(hass, SIGNAL_PANEL_MESSAGE, message) def zone_fault_callback(sender, zone): - """The callback to handle zone fault from AlarmDecoder.""" + """Handle zone fault from AlarmDecoder.""" async_dispatcher_send(hass, SIGNAL_ZONE_FAULT, zone) def zone_restore_callback(sender, zone): - """The callback to handle zone restore from AlarmDecoder.""" + """Handle zone restore from AlarmDecoder.""" async_dispatcher_send(hass, SIGNAL_ZONE_RESTORE, zone) controller = False diff --git a/homeassistant/components/automation/time.py b/homeassistant/components/automation/time.py index 9045cb7b1b6..1ca714026a2 100644 --- a/homeassistant/components/automation/time.py +++ b/homeassistant/components/automation/time.py @@ -32,7 +32,7 @@ TRIGGER_SCHEMA = vol.All(vol.Schema({ @asyncio.coroutine def async_trigger(hass, config, action): - """"Listen for state changes based on configuration.""" + """Listen for state changes based on configuration.""" if CONF_AFTER in config: after = config.get(CONF_AFTER) hours, minutes, seconds = after.hour, after.minute, after.second diff --git a/homeassistant/components/binary_sensor/eight_sleep.py b/homeassistant/components/binary_sensor/eight_sleep.py index 08f33997c3f..a6d4476f047 100644 --- a/homeassistant/components/binary_sensor/eight_sleep.py +++ b/homeassistant/components/binary_sensor/eight_sleep.py @@ -11,14 +11,14 @@ from homeassistant.components.binary_sensor import BinarySensorDevice from homeassistant.components.eight_sleep import ( DATA_EIGHT, EightSleepHeatEntity, CONF_BINARY_SENSORS, NAME_MAP) -DEPENDENCIES = ['eight_sleep'] - _LOGGER = logging.getLogger(__name__) +DEPENDENCIES = ['eight_sleep'] + @asyncio.coroutine def async_setup_platform(hass, config, async_add_devices, discovery_info=None): - """Setup the eight sleep binary sensor.""" + """Set up the eight sleep binary sensor.""" if discovery_info is None: return @@ -35,7 +35,7 @@ def async_setup_platform(hass, config, async_add_devices, discovery_info=None): class EightHeatSensor(EightSleepHeatEntity, BinarySensorDevice): - """Representation of a eight sleep heat-based sensor.""" + """Representation of a Eight Sleep heat-based sensor.""" def __init__(self, name, eight, sensor): """Initialize the sensor.""" @@ -50,7 +50,7 @@ class EightHeatSensor(EightSleepHeatEntity, BinarySensorDevice): self._userid = self._eight.fetch_userid(self._side) self._usrobj = self._eight.users[self._userid] - _LOGGER.debug('Presence Sensor: %s, Side: %s, User: %s', + _LOGGER.debug("Presence Sensor: %s, Side: %s, User: %s", self._sensor, self._side, self._userid) @property diff --git a/homeassistant/components/calendar/demo.py b/homeassistant/components/calendar/demo.py index 3dc11b6773f..f8ac2eceb53 100755 --- a/homeassistant/components/calendar/demo.py +++ b/homeassistant/components/calendar/demo.py @@ -77,6 +77,6 @@ class DemoGoogleCalendar(CalendarEventDevice): """Representation of a Demo Calendar element.""" def __init__(self, hass, calendar_data, data): - """The same as a google calendar but without the API calls.""" + """Initalize Google Calendar but without the API calls.""" self.data = calendar_data super().__init__(hass, data) diff --git a/homeassistant/components/cover/mqtt.py b/homeassistant/components/cover/mqtt.py index 2115434232c..829c3748d2f 100644 --- a/homeassistant/components/cover/mqtt.py +++ b/homeassistant/components/cover/mqtt.py @@ -70,10 +70,8 @@ PLATFORM_SCHEMA = mqtt.MQTT_RW_PLATFORM_SCHEMA.extend({ default=DEFAULT_TILT_CLOSED_POSITION): int, vol.Optional(CONF_TILT_OPEN_POSITION, default=DEFAULT_TILT_OPEN_POSITION): int, - vol.Optional(CONF_TILT_MIN, - default=DEFAULT_TILT_MIN): int, - vol.Optional(CONF_TILT_MAX, - default=DEFAULT_TILT_MAX): int, + vol.Optional(CONF_TILT_MIN, default=DEFAULT_TILT_MIN): int, + vol.Optional(CONF_TILT_MAX, default=DEFAULT_TILT_MAX): int, vol.Optional(CONF_TILT_STATE_OPTIMISTIC, default=DEFAULT_TILT_OPTIMISTIC): cv.boolean, }) @@ -149,7 +147,7 @@ class MqttCover(CoverDevice): """ @callback def tilt_updated(topic, payload, qos): - """The tilt was updated.""" + """Handle tilt updates.""" if (payload.isnumeric() and self._tilt_min <= int(payload) <= self._tilt_max): tilt_range = self._tilt_max - self._tilt_min diff --git a/homeassistant/components/cover/opengarage.py b/homeassistant/components/cover/opengarage.py index 316770c395f..d22e8f9104c 100644 --- a/homeassistant/components/cover/opengarage.py +++ b/homeassistant/components/cover/opengarage.py @@ -6,9 +6,8 @@ https://home-assistant.io/components/cover.opengarage/ """ import logging -import voluptuous as vol - import requests +import voluptuous as vol from homeassistant.components.cover import ( CoverDevice, PLATFORM_SCHEMA, SUPPORT_OPEN, SUPPORT_CLOSE) @@ -17,27 +16,27 @@ from homeassistant.const import ( CONF_COVERS, CONF_HOST, CONF_PORT) import homeassistant.helpers.config_validation as cv -DEFAULT_NAME = 'OpenGarage' -DEFAULT_PORT = 80 +_LOGGER = logging.getLogger(__name__) + +ATTR_DISTANCE_SENSOR = "distance_sensor" +ATTR_DOOR_STATE = "door_state" +ATTR_SIGNAL_STRENGTH = "wifi_signal" CONF_DEVICEKEY = "device_key" -ATTR_SIGNAL_STRENGTH = "wifi_signal" -ATTR_DISTANCE_SENSOR = "distance_sensor" -ATTR_DOOR_STATE = "door_state" +DEFAULT_NAME = 'OpenGarage' +DEFAULT_PORT = 80 -STATE_OPENING = "opening" STATE_CLOSING = "closing" -STATE_STOPPED = "stopped" STATE_OFFLINE = "offline" +STATE_OPENING = "opening" +STATE_STOPPED = "stopped" STATES_MAP = { 0: STATE_CLOSED, 1: STATE_OPEN } - -# Validation of the user's configuration COVER_SCHEMA = vol.Schema({ vol.Required(CONF_DEVICEKEY): cv.string, vol.Required(CONF_HOST): cv.string, @@ -49,11 +48,9 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ vol.Required(CONF_COVERS): vol.Schema({cv.slug: COVER_SCHEMA}), }) -_LOGGER = logging.getLogger(__name__) - def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup OpenGarage covers.""" + """Set up OpenGarage covers.""" covers = [] devices = config.get(CONF_COVERS) @@ -78,8 +75,7 @@ class OpenGarageCover(CoverDevice): def __init__(self, hass, args): """Initialize the cover.""" self.opengarage_url = 'http://{}:{}'.format( - args[CONF_HOST], - args[CONF_PORT]) + args[CONF_HOST], args[CONF_PORT]) self.hass = hass self._name = args[CONF_NAME] self.device_id = args['device_id'] @@ -158,7 +154,7 @@ class OpenGarageCover(CoverDevice): self.dist = status.get('dist') self._available = True except (requests.exceptions.RequestException) as ex: - _LOGGER.error('Unable to connect to OpenGarage device: %(reason)s', + _LOGGER.error("Unable to connect to OpenGarage device: %(reason)s", dict(reason=ex)) self._state = STATE_OFFLINE @@ -180,7 +176,7 @@ class OpenGarageCover(CoverDevice): self._state = self._state_before_move self._state_before_move = None except (requests.exceptions.RequestException) as ex: - _LOGGER.error('Unable to connect to OpenGarage device: %(reason)s', + _LOGGER.error("Unable to connect to OpenGarage device: %(reason)s", dict(reason=ex)) self._state = self._state_before_move self._state_before_move = None diff --git a/homeassistant/components/cover/zwave.py b/homeassistant/components/cover/zwave.py index 71194d12bba..781d7a03280 100644 --- a/homeassistant/components/cover/zwave.py +++ b/homeassistant/components/cover/zwave.py @@ -115,7 +115,7 @@ class ZwaveGarageDoor(zwave.ZWaveDeviceEntity, CoverDevice): self.update_properties() def update_properties(self): - """Callback on data changes for node values.""" + """Handle data changes for node values.""" self._state = self.values.primary.data @property diff --git a/homeassistant/components/device_sun_light_trigger.py b/homeassistant/components/device_sun_light_trigger.py index 8831008e0ab..9119394e357 100644 --- a/homeassistant/components/device_sun_light_trigger.py +++ b/homeassistant/components/device_sun_light_trigger.py @@ -84,7 +84,7 @@ def async_setup(hass, config): return next_setting - LIGHT_TRANSITION_TIME * len(light_ids) def async_turn_on_before_sunset(light_id): - """Function to turn on lights.""" + """Turn on lights.""" if not device_tracker.is_on(hass) or light.is_on(hass, light_id): return light.async_turn_on(hass, light_id, @@ -92,7 +92,7 @@ def async_setup(hass, config): profile=light_profile) def async_turn_on_factory(light_id): - """Factory to generate turn on callbacks.""" + """Generate turn on callbacks as factory.""" @callback def async_turn_on_light(now): """Turn on specific light.""" @@ -104,7 +104,7 @@ def async_setup(hass, config): # pre-sun set event @callback def schedule_light_turn_on(entity, old_state, new_state): - """The moment sun sets we want to have all the lights on. + """Turn on all the lights at the moment sun sets. We will schedule to have each light start after one another and slowly transition in. diff --git a/homeassistant/components/device_tracker/tplink.py b/homeassistant/components/device_tracker/tplink.py index 033ae84c712..65fa89d737f 100755 --- a/homeassistant/components/device_tracker/tplink.py +++ b/homeassistant/components/device_tracker/tplink.py @@ -218,7 +218,8 @@ class Tplink3DeviceScanner(TplinkDeviceScanner): response = requests.post(url, params={'operation': 'load'}, headers={'referer': referer}, - cookies={'sysauth': self.sysauth}) + cookies={'sysauth': self.sysauth}, + timeout=5) try: json_response = response.json() @@ -227,18 +228,17 @@ class Tplink3DeviceScanner(TplinkDeviceScanner): result = response.json().get('data') else: if json_response.get('errorcode') == 'timeout': - _LOGGER.info("Token timed out. " - "Relogging on next scan.") + _LOGGER.info("Token timed out. Relogging on next scan") self.stok = '' self.sysauth = '' return False else: - _LOGGER.error("An unknown error happened " - "while fetching data.") + _LOGGER.error( + "An unknown error happened while fetching data") return False except ValueError: _LOGGER.error("Router didn't respond with JSON. " - "Check if credentials are correct.") + "Check if credentials are correct") return False if result: @@ -267,7 +267,7 @@ class Tplink4DeviceScanner(TplinkDeviceScanner): # pylint: disable=no-self-use def get_device_name(self, device): - """The firmware doesn't save the name of the wireless device.""" + """Get the name of the wireless device.""" return None def _get_auth_tokens(self): @@ -298,7 +298,7 @@ class Tplink4DeviceScanner(TplinkDeviceScanner): self.token = result.group(1) return True except ValueError: - _LOGGER.error("Couldn't fetch auth tokens!") + _LOGGER.error("Couldn't fetch auth tokens") return False @Throttle(MIN_TIME_BETWEEN_SCANS) diff --git a/homeassistant/components/discovery.py b/homeassistant/components/discovery.py index 01b25cf0a87..58fc56d2cba 100644 --- a/homeassistant/components/discovery.py +++ b/homeassistant/components/discovery.py @@ -83,7 +83,7 @@ def async_setup(hass, config): @asyncio.coroutine def new_service_found(service, info): - """Called when a new service is found.""" + """Handle a new service if one is found.""" if service in ignored_platforms: logger.info("Ignoring service: %s %s", service, info) return diff --git a/homeassistant/components/ecobee.py b/homeassistant/components/ecobee.py index f217d177de0..11e6e89a74f 100644 --- a/homeassistant/components/ecobee.py +++ b/homeassistant/components/ecobee.py @@ -52,7 +52,7 @@ def request_configuration(network, hass, config): # pylint: disable=unused-argument def ecobee_configuration_callback(callback_data): - """The actions to do when our configuration callback is called.""" + """Handle configuration callbacks.""" network.request_tokens() network.update() setup_ecobee(hass, network, config) diff --git a/homeassistant/components/enocean.py b/homeassistant/components/enocean.py index 17b82a5eeeb..79c2e3dce8d 100644 --- a/homeassistant/components/enocean.py +++ b/homeassistant/components/enocean.py @@ -65,7 +65,7 @@ class EnOceanDongle: return output def callback(self, temp): - """Function for an EnOcean device's callback. + """Handle EnOcean device's callback. This is the callback function called by python-enocan whenever there is an incoming packet. diff --git a/homeassistant/components/envisalink.py b/homeassistant/components/envisalink.py index 4a26295be96..8aa41f6274a 100644 --- a/homeassistant/components/envisalink.py +++ b/homeassistant/components/envisalink.py @@ -109,7 +109,7 @@ def async_setup(hass, config): @callback def login_fail_callback(data): - """The callback for when the evl rejects our login.""" + """Handle when the evl rejects our login.""" _LOGGER.error("The Envisalink rejected your credentials") sync_connect.set_result(False) @@ -121,7 +121,7 @@ def async_setup(hass, config): @callback def connection_success_callback(data): - """The callback for a successful connection.""" + """Handle a successful connection.""" _LOGGER.info("Established a connection with the Envisalink") hass.bus.async_listen_once(EVENT_HOMEASSISTANT_STOP, stop_envisalink) sync_connect.set_result(True) diff --git a/homeassistant/components/group.py b/homeassistant/components/group.py index 41c3f7e269b..2e97ef9ef3b 100644 --- a/homeassistant/components/group.py +++ b/homeassistant/components/group.py @@ -420,7 +420,7 @@ class Group(Entity): @property def _tracking_states(self): - """The states that the group is tracking.""" + """Return the states that the group is tracking.""" states = [] for entity_id in self.tracking: diff --git a/homeassistant/components/hdmi_cec.py b/homeassistant/components/hdmi_cec.py index 1b6f644e23c..bc713c9ec06 100644 --- a/homeassistant/components/hdmi_cec.py +++ b/homeassistant/components/hdmi_cec.py @@ -112,18 +112,17 @@ SERVICE_STANDBY = 'standby' # pylint: disable=unnecessary-lambda DEVICE_SCHEMA = vol.Schema({ - vol.All(cv.positive_int): vol.Any(lambda devices: DEVICE_SCHEMA(devices), - cv.string) + vol.All(cv.positive_int): + vol.Any(lambda devices: DEVICE_SCHEMA(devices), cv.string) }) CONF_DISPLAY_NAME = 'osd_name' + CONFIG_SCHEMA = vol.Schema({ DOMAIN: vol.Schema({ - vol.Optional(CONF_DEVICES): vol.Any(DEVICE_SCHEMA, - vol.Schema({ - vol.All(cv.string): vol.Any( - cv.string) - })), + vol.Optional(CONF_DEVICES): + vol.Any(DEVICE_SCHEMA, vol.Schema({ + vol.All(cv.string): vol.Any(cv.string)})), vol.Optional(CONF_PLATFORM): vol.Any(SWITCH, MEDIA_PLAYER), vol.Optional(CONF_HOST): cv.string, vol.Optional(CONF_DISPLAY_NAME): cv.string, @@ -178,8 +177,8 @@ def setup(hass: HomeAssistant, base_config): # Create own thread if more than 1 CPU hass.loop if multiprocessing.cpu_count() < 2 else None) host = base_config[DOMAIN].get(CONF_HOST, None) - display_name = base_config[DOMAIN].get(CONF_DISPLAY_NAME, - DEFAULT_DISPLAY_NAME) + display_name = base_config[DOMAIN].get( + CONF_DISPLAY_NAME, DEFAULT_DISPLAY_NAME) if host: adapter = TcpAdapter(host, name=display_name, activate_source=False) else: @@ -273,7 +272,7 @@ def setup(hass: HomeAssistant, base_config): addr = entity.attributes['physical_address'] _LOGGER.debug("Address acquired: %s", addr) if addr is None: - _LOGGER.error("Device %s has not physical address.", + _LOGGER.error("Device %s has not physical address", call.data[ATTR_DEVICE]) return if not isinstance(addr, (PhysicalAddress,)): @@ -283,15 +282,15 @@ def setup(hass: HomeAssistant, base_config): def _update(call): """ - The function called when device update is needed. + Update if device update is needed. Called by service, requests CEC network to update data. """ hdmi_network.scan() def _new_device(device): - """Called when new device is detected by HDMI network.""" - key = DOMAIN + '.' + device.name + """Handle new devices which are detected by HDMI network.""" + key = '{}.{}'.format(DOMAIN, device.name) hass.data[key] = device ent_platform = base_config[DOMAIN][CONF_TYPES].get(key, platform) discovery.load_platform( @@ -376,32 +375,32 @@ class CecDevice(Entity): @property def vendor_id(self): - """ID of device's vendor.""" + """Return the ID of the device's vendor.""" return self._device.vendor_id @property def vendor_name(self): - """Name of device's vendor.""" + """Return the name of the device's vendor.""" return self._device.vendor @property def physical_address(self): - """Physical address of device in HDMI network.""" + """Return the physical address of device in HDMI network.""" return str(self._device.physical_address) @property def type(self): - """String representation of device's type.""" + """Return a string representation of the device's type.""" return self._device.type_name @property def type_id(self): - """Type ID of device.""" + """Return the type ID of device.""" return self._device.type @property def icon(self): - """Icon for device by its type.""" + """Return the icon for device by its type.""" return (self._icon if self._icon is not None else ICONS_BY_TYPE.get(self._device.type) if self._device.type in ICONS_BY_TYPE else ICON_UNKNOWN) diff --git a/homeassistant/components/input_select.py b/homeassistant/components/input_select.py index 94ef3318930..c7f3a7f2236 100644 --- a/homeassistant/components/input_select.py +++ b/homeassistant/components/input_select.py @@ -15,10 +15,10 @@ from homeassistant.helpers.entity import Entity from homeassistant.helpers.entity_component import EntityComponent from homeassistant.helpers.restore_state import async_get_last_state +_LOGGER = logging.getLogger(__name__) DOMAIN = 'input_select' ENTITY_ID_FORMAT = DOMAIN + '.{}' -_LOGGER = logging.getLogger(__name__) CONF_INITIAL = 'initial' CONF_OPTIONS = 'options' @@ -56,7 +56,7 @@ SERVICE_SET_OPTIONS_SCHEMA = vol.Schema({ def _cv_input_select(cfg): - """Configuration validation helper for input select (voluptuous).""" + """Configure validation helper for input select (voluptuous).""" options = cfg[CONF_OPTIONS] initial = cfg.get(CONF_INITIAL) if initial is not None and initial not in options: diff --git a/homeassistant/components/input_slider.py b/homeassistant/components/input_slider.py index b0975f9dbae..bd17376b2ef 100644 --- a/homeassistant/components/input_slider.py +++ b/homeassistant/components/input_slider.py @@ -16,9 +16,10 @@ from homeassistant.helpers.entity import Entity from homeassistant.helpers.entity_component import EntityComponent from homeassistant.helpers.restore_state import async_get_last_state +_LOGGER = logging.getLogger(__name__) + DOMAIN = 'input_slider' ENTITY_ID_FORMAT = DOMAIN + '.{}' -_LOGGER = logging.getLogger(__name__) CONF_INITIAL = 'initial' CONF_MIN = 'min' @@ -39,7 +40,7 @@ SERVICE_SELECT_VALUE_SCHEMA = vol.Schema({ def _cv_input_slider(cfg): - """Configuration validation helper for input slider (voluptuous).""" + """Configure validation helper for input slider (voluptuous).""" minimum = cfg.get(CONF_MIN) maximum = cfg.get(CONF_MAX) if minimum >= maximum: @@ -59,8 +60,8 @@ CONFIG_SCHEMA = vol.Schema({ vol.Required(CONF_MIN): vol.Coerce(float), vol.Required(CONF_MAX): vol.Coerce(float), vol.Optional(CONF_INITIAL): vol.Coerce(float), - vol.Optional(CONF_STEP, default=1): vol.All(vol.Coerce(float), - vol.Range(min=1e-3)), + vol.Optional(CONF_STEP, default=1): + vol.All(vol.Coerce(float), vol.Range(min=1e-3)), vol.Optional(CONF_ICON): cv.icon, vol.Optional(ATTR_UNIT_OF_MEASUREMENT): cv.string }, _cv_input_slider) diff --git a/homeassistant/components/joaoapps_join.py b/homeassistant/components/joaoapps_join.py index 97572512411..9dc595a6e30 100644 --- a/homeassistant/components/joaoapps_join.py +++ b/homeassistant/components/joaoapps_join.py @@ -1,7 +1,7 @@ """ Component for Joaoapps Join services. -For more details about this platform, please refer to the documentation at +For more details about this component, please refer to the documentation at https://home-assistant.io/components/join/ """ import logging @@ -30,7 +30,7 @@ CONFIG_SCHEMA = vol.Schema({ def register_device(hass, device_id, api_key, name): - """Method to register services for each join device listed.""" + """Register services for each join device listed.""" from pyjoin import (ring_device, set_wallpaper, send_sms, send_file, send_url, send_notification) diff --git a/homeassistant/components/light/lifx/__init__.py b/homeassistant/components/light/lifx/__init__.py index e0181f9fef9..f1b20f904d2 100644 --- a/homeassistant/components/light/lifx/__init__.py +++ b/homeassistant/components/light/lifx/__init__.py @@ -89,7 +89,7 @@ class LIFXManager(object): @callback def register(self, device): - """Callback for newly detected bulb.""" + """Handle for newly detected bulb.""" if device.mac_addr in self.entities: entity = self.entities[device.mac_addr] entity.device = device @@ -106,7 +106,7 @@ class LIFXManager(object): @callback def ready(self, device, msg): - """Callback that adds the device once all data is retrieved.""" + """Handle the device once all data is retrieved.""" entity = LIFXLight(device) _LOGGER.debug("%s register READY", entity.who) self.entities[device.mac_addr] = entity @@ -114,7 +114,7 @@ class LIFXManager(object): @callback def unregister(self, device): - """Callback for disappearing bulb.""" + """Handle disappearing bulbs.""" if device.mac_addr in self.entities: entity = self.entities[device.mac_addr] _LOGGER.debug("%s unregister", entity.who) @@ -134,7 +134,7 @@ class AwaitAioLIFX: @callback def callback(self, device, message): - """Callback that aiolifx invokes when the response is received.""" + """Handle responses.""" self.device = device self.message = message self.event.set() diff --git a/homeassistant/components/light/lifx/effects.py b/homeassistant/components/light/lifx/effects.py index 0714450a7cd..f4e598d9ce4 100644 --- a/homeassistant/components/light/lifx/effects.py +++ b/homeassistant/components/light/lifx/effects.py @@ -68,7 +68,7 @@ def setup(hass, lifx_manager): """Register the LIFX effects as hass service calls.""" @asyncio.coroutine def async_service_handle(service): - """Internal func for applying a service.""" + """Apply a service.""" entity_ids = extract_entity_ids(hass, service) if entity_ids: devices = [entity for entity in lifx_manager.entities.values() @@ -213,7 +213,7 @@ class LIFXEffect(object): self.lights.remove(light) def from_poweroff_hsbk(self, light, **kwargs): - """The initial color when starting from a powered off state.""" + """Return the color when starting from a powered off state.""" return None @@ -255,7 +255,7 @@ class LIFXEffectBreathe(LIFXEffect): yield from self.async_restore(light) def from_poweroff_hsbk(self, light, **kwargs): - """Initial color is the target color, but no brightness.""" + """Return the color is the target color, but no brightness.""" hsbk, _ = light.find_hsbk(**kwargs) return [hsbk[0], hsbk[1], 0, hsbk[2]] diff --git a/homeassistant/components/light/litejet.py b/homeassistant/components/light/litejet.py index d95fa6841b6..15f16d56a68 100644 --- a/homeassistant/components/light/litejet.py +++ b/homeassistant/components/light/litejet.py @@ -46,7 +46,7 @@ class LiteJetLight(Light): self.update() def _on_load_changed(self): - """Called on a LiteJet thread when a load's state changes.""" + """Handle state changes.""" _LOGGER.debug("Updating due to notification for %s", self._name) self.schedule_update_ha_state(True) @@ -57,7 +57,7 @@ class LiteJetLight(Light): @property def name(self): - """Set up the light's name.""" + """Return the light's name.""" return self._name @property diff --git a/homeassistant/components/lock/zwave.py b/homeassistant/components/lock/zwave.py index 7e2d328c34a..a46406e8361 100644 --- a/homeassistant/components/lock/zwave.py +++ b/homeassistant/components/lock/zwave.py @@ -222,7 +222,7 @@ class ZwaveLock(zwave.ZWaveDeviceEntity, LockDevice): self.update_properties() def update_properties(self): - """Callback on data changes for node values.""" + """Handle data changes for node values.""" self._state = self.values.primary.data _LOGGER.debug("Lock state set from Bool value and is %s", self._state) if self.values.access_control: diff --git a/homeassistant/components/logger.py b/homeassistant/components/logger.py index e36053900fd..94a3ad902da 100644 --- a/homeassistant/components/logger.py +++ b/homeassistant/components/logger.py @@ -62,7 +62,7 @@ class HomeAssistantLogFilter(logging.Filter): self.logfilter = logfilter def filter(self, record): - """The filter to use.""" + """Filter the log entries.""" # Log with filtered severity if LOGGER_LOGS in self.logfilter: for filtername in self.logfilter[LOGGER_LOGS]: diff --git a/homeassistant/components/media_player/dunehd.py b/homeassistant/components/media_player/dunehd.py index 9e63fd6d21c..80f4795ccbe 100644 --- a/homeassistant/components/media_player/dunehd.py +++ b/homeassistant/components/media_player/dunehd.py @@ -34,7 +34,7 @@ DUNEHD_PLAYER_SUPPORT = \ # pylint: disable=unused-argument def setup_platform(hass, config, add_devices, discovery_info=None): - """Set up the media player demo platform.""" + """Set up the DuneHD media player platform.""" sources = config.get(CONF_SOURCES, {}) from pdunehd import DuneHDPlayer @@ -136,7 +136,7 @@ class DuneHDPlayerEntity(MediaPlayerDevice): @property def media_title(self): - """Current media source.""" + """Return the current media source.""" self.__update_title() if self._media_title: return self._media_title diff --git a/homeassistant/components/media_player/emby.py b/homeassistant/components/media_player/emby.py index 27616b1c265..7fc18ef8fee 100644 --- a/homeassistant/components/media_player/emby.py +++ b/homeassistant/components/media_player/emby.py @@ -73,7 +73,7 @@ def async_setup_platform(hass, config, async_add_devices, discovery_info=None): @callback def device_update_callback(data): - """Callback for when devices are added to emby.""" + """Handle devices which are added to Emby.""" new_devices = [] active_devices = [] for dev_id in emby.devices: @@ -244,12 +244,12 @@ class EmbyDevice(MediaPlayerDevice): @property def media_duration(self): - """Duration of current playing media in seconds.""" + """Return the duration of current playing media in seconds.""" return self.device.media_runtime @property def media_position(self): - """Position of current playing media in seconds.""" + """Return the position of current playing media in seconds.""" return self.media_status_last_position @property @@ -263,12 +263,12 @@ class EmbyDevice(MediaPlayerDevice): @property def media_image_url(self): - """Image url of current playing media.""" + """Return the image URL of current playing media.""" return self.device.media_image_url @property def media_title(self): - """Title of current playing media.""" + """Return the title of current playing media.""" return self.device.media_title @property @@ -278,27 +278,27 @@ class EmbyDevice(MediaPlayerDevice): @property def media_series_title(self): - """The title of the series of current playing media (TV Show only).""" + """Return the title of the series of current playing media (TV).""" return self.device.media_series_title @property def media_episode(self): - """Episode of current playing media (TV Show only).""" + """Return the episode of current playing media (TV only).""" return self.device.media_episode @property def media_album_name(self): - """Album name of current playing media (Music track only).""" + """Return the album name of current playing media (Music only).""" return self.device.media_album_name @property def media_artist(self): - """Artist of current playing media (Music track only).""" + """Return the artist of current playing media (Music track only).""" return self.device.media_artist @property def media_album_artist(self): - """Album artist of current playing media (Music track only).""" + """Return the album artist of current playing media (Music only).""" return self.device.media_album_artist @property diff --git a/homeassistant/components/media_player/gpmdp.py b/homeassistant/components/media_player/gpmdp.py index 6bf5c684697..88a8a949ca4 100644 --- a/homeassistant/components/media_player/gpmdp.py +++ b/homeassistant/components/media_player/gpmdp.py @@ -62,7 +62,7 @@ def request_configuration(hass, config, url, add_devices_callback): # pylint: disable=unused-argument def gpmdp_configuration_callback(callback_data): - """The actions to do when our configuration callback is called.""" + """Handle configuration changes.""" while True: from websocket import _exceptions try: diff --git a/homeassistant/components/media_player/openhome.py b/homeassistant/components/media_player/openhome.py index ab061eb5fa4..59d6a8c169f 100644 --- a/homeassistant/components/media_player/openhome.py +++ b/homeassistant/components/media_player/openhome.py @@ -35,7 +35,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None): name = discovery_info.get('name') description = discovery_info.get('ssdp_description') - _LOGGER.info('Openhome device found: %s', name) + _LOGGER.info("Openhome device found: %s", name) device = Device(description) # if device has already been discovered @@ -152,7 +152,7 @@ class OpenhomeDevice(MediaPlayerDevice): @property def should_poll(self): - """Polling needed.""" + """Return the polling state.""" return True @property diff --git a/homeassistant/components/media_player/pandora.py b/homeassistant/components/media_player/pandora.py index 2ea94885620..4e36fdab5a2 100644 --- a/homeassistant/components/media_player/pandora.py +++ b/homeassistant/components/media_player/pandora.py @@ -4,7 +4,6 @@ Component for controlling Pandora stations through the pianobar client. For more details about this platform, please refer to the documentation https://home-assistant.io/components/media_player.pandora/ """ - import logging import re import os @@ -64,7 +63,7 @@ class PandoraMediaPlayer(MediaPlayerDevice): """A media player that uses the Pianobar interface to Pandora.""" def __init__(self, name): - """Initialize the demo device.""" + """Initialize the Pandora device.""" MediaPlayerDevice.__init__(self) self._name = name self._player_state = STATE_OFF @@ -79,7 +78,7 @@ class PandoraMediaPlayer(MediaPlayerDevice): @property def should_poll(self): - """Should be polled for current state.""" + """Return the polling state.""" return True @property diff --git a/homeassistant/components/media_player/soundtouch.py b/homeassistant/components/media_player/soundtouch.py index 4827732bd21..6a118844727 100644 --- a/homeassistant/components/media_player/soundtouch.py +++ b/homeassistant/components/media_player/soundtouch.py @@ -79,7 +79,6 @@ def setup_platform(hass, config, add_devices, discovery_info=None): hass.data[DATA_SOUNDTOUCH] = [] if discovery_info: - # Discovery host = discovery_info['host'] port = int(discovery_info['port']) @@ -97,7 +96,6 @@ def setup_platform(hass, config, add_devices, discovery_info=None): hass.data[DATA_SOUNDTOUCH].append(soundtouch_device) add_devices([soundtouch_device]) else: - # Config name = config.get(CONF_NAME) remote_config = { 'id': 'ha.component.soundtouch', @@ -112,7 +110,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None): path.join(path.dirname(__file__), 'services.yaml')) def service_handle(service): - """Internal func for applying a service.""" + """Handle the applying of a service.""" master_device_id = service.data.get('master') slaves_ids = service.data.get('slaves') slaves = [] diff --git a/homeassistant/components/media_player/universal.py b/homeassistant/components/media_player/universal.py index 9709ad80c0a..68c2a06cf23 100644 --- a/homeassistant/components/media_player/universal.py +++ b/homeassistant/components/media_player/universal.py @@ -225,7 +225,7 @@ class UniversalMediaPlayer(MediaPlayerDevice): @property def state(self): - """Current state of media player. + """Return the current state of media player. Off if master state is off else Status of first active child @@ -254,17 +254,17 @@ class UniversalMediaPlayer(MediaPlayerDevice): @property def media_content_id(self): - """Content ID of current playing media.""" + """Return the content ID of current playing media.""" return self._child_attr(ATTR_MEDIA_CONTENT_ID) @property def media_content_type(self): - """Content type of current playing media.""" + """Return the content type of current playing media.""" return self._child_attr(ATTR_MEDIA_CONTENT_TYPE) @property def media_duration(self): - """Duration of current playing media in seconds.""" + """Return the duration of current playing media in seconds.""" return self._child_attr(ATTR_MEDIA_DURATION) @property @@ -310,7 +310,7 @@ class UniversalMediaPlayer(MediaPlayerDevice): @property def media_series_title(self): - """The title of the series of current playing media (TV Show only).""" + """Return the title of the series of current playing media (TV).""" return self._child_attr(ATTR_MEDIA_SERIES_TITLE) @property diff --git a/homeassistant/components/mysensors.py b/homeassistant/components/mysensors.py index a7e5c7cacfa..ad4b7a4220b 100644 --- a/homeassistant/components/mysensors.py +++ b/homeassistant/components/mysensors.py @@ -168,11 +168,11 @@ def setup(hass, config): retain = config[DOMAIN].get(CONF_RETAIN) def pub_callback(topic, payload, qos, retain): - """Call mqtt publish function.""" + """Call MQTT publish function.""" mqtt.publish(hass, topic, payload, qos, retain) def sub_callback(topic, callback, qos): - """Call mqtt subscribe function.""" + """Call MQTT subscribe function.""" mqtt.subscribe(hass, topic, callback, qos) gateway = mysensors.MQTTGateway( pub_callback, sub_callback, @@ -350,7 +350,7 @@ class GatewayWrapper(object): def callback_factory(self): """Return a new callback function.""" def node_update(msg): - """Callback for node updates from the MySensors gateway.""" + """Handle node updates from the MySensors gateway.""" _LOGGER.debug( "Update: node %s, child %s sub_type %s", msg.node_id, msg.child_id, msg.sub_type) @@ -381,7 +381,7 @@ class MySensorsDeviceEntity(object): @property def name(self): - """The name of this entity.""" + """Return the name of this entity.""" return self._name @property @@ -403,14 +403,14 @@ class MySensorsDeviceEntity(object): try: attr[set_req(value_type).name] = value except ValueError: - _LOGGER.error('Value_type %s is not valid for mysensors ' - 'version %s', value_type, + _LOGGER.error("Value_type %s is not valid for mysensors " + "version %s", value_type, self.gateway.protocol_version) return attr @property def available(self): - """Return True if entity is available.""" + """Return true if entity is available.""" return self.value_type in self._values def update(self): diff --git a/homeassistant/components/notify/apns.py b/homeassistant/components/notify/apns.py index ac273443506..136d5300183 100644 --- a/homeassistant/components/notify/apns.py +++ b/homeassistant/components/notify/apns.py @@ -62,10 +62,10 @@ def get_service(hass, config, discovery_info=None): class ApnsDevice(object): """ - APNS Device class. + The APNS Device class. - Stores information about a device that is - registered for push notifications. + Stores information about a device that is registered for push + notifications. """ def __init__(self, push_id, name, tracking_device_id=None, disabled=False): @@ -181,10 +181,9 @@ class ApnsNotificationService(BaseNotificationService): def device_state_changed_listener(self, entity_id, from_s, to_s): """ - Listener for sate change. + Listen for sate change. - Track device state change if a device - has a tracking id specified. + Track device state change if a device has a tracking id specified. """ self.device_states[entity_id] = str(to_s.state) diff --git a/homeassistant/components/pilight.py b/homeassistant/components/pilight.py index 18782fe4207..3000820d28c 100644 --- a/homeassistant/components/pilight.py +++ b/homeassistant/components/pilight.py @@ -140,7 +140,7 @@ class CallRateDelayThrottle(object): self._schedule = functools.partial(track_point_in_utc_time, hass) def limited(self, method): - """The decorater to delay calls on a certain method.""" + """Decorate to delay calls on a certain method.""" @functools.wraps(method) def decorated(*args, **kwargs): """Delay a call.""" @@ -149,7 +149,7 @@ class CallRateDelayThrottle(object): return def action(event): - """The action wrapper that gets scheduled.""" + """Wrap an action that gets scheduled.""" method(*args, **kwargs) with self._lock: diff --git a/homeassistant/components/plant.py b/homeassistant/components/plant.py index ac4650bc470..6fbffc0f040 100644 --- a/homeassistant/components/plant.py +++ b/homeassistant/components/plant.py @@ -1,14 +1,14 @@ -"""Component to monitor plants. - -This is meant to be used with Xiaomi Mi Plant sensors, but will -work with any sensor that provides the right parameters. -To read the sensor data and send it via MQTT, -see https://github.com/ChristianKuehnel/plantgateway """ +Component to monitor plants. +For more details about this component, please refer to the documentation at +https://home-assistant.io/components/plant/ +""" import logging import asyncio + import voluptuous as vol + from homeassistant.const import ( STATE_UNKNOWN, TEMP_CELSIUS, ATTR_TEMPERATURE, CONF_SENSORS, ATTR_UNIT_OF_MEASUREMENT, ATTR_ICON) @@ -18,7 +18,6 @@ from homeassistant.helpers.entity_component import EntityComponent from homeassistant.core import callback from homeassistant.helpers.event import async_track_state_change - _LOGGER = logging.getLogger(__name__) DEFAULT_NAME = 'plant' @@ -80,15 +79,15 @@ CONFIG_SCHEMA = vol.Schema({ @asyncio.coroutine def async_setup(hass, config): - """Set up Plant component.""" + """Set up the Plant component.""" component = EntityComponent(_LOGGER, DOMAIN, hass) entities = [] for plant_name, plant_config in config[DOMAIN].items(): - _LOGGER.info('added plant %s', plant_name) + _LOGGER.info("Added plant %s", plant_name) entity = Plant(plant_name, plant_config) sensor_entity_ids = list(plant_config[CONF_SENSORS].values()) - _LOGGER.debug('subscribing to entity_ids %s', sensor_entity_ids) + _LOGGER.debug("Subscribing to entity_ids %s", sensor_entity_ids) async_track_state_change(hass, sensor_entity_ids, entity.state_changed) entities.append(entity) @@ -137,7 +136,7 @@ class Plant(Entity): } def __init__(self, name, config): - """Default constructor.""" + """Initalize the Plant component.""" self._config = config self._sensormap = dict() for reading, entity_id in config['sensors'].items(): @@ -159,7 +158,7 @@ class Plant(Entity): This callback is triggered, when the sensor state changes. """ value = new_state.state - _LOGGER.debug('received callback from %s with value %s', + _LOGGER.debug("Received callback from %s with value %s", entity_id, value) if value == STATE_UNKNOWN: return @@ -176,12 +175,12 @@ class Plant(Entity): elif reading == READING_BRIGHTNESS: self._brightness = int(value) else: - raise _LOGGER.error('unknown reading from sensor %s: %s', + raise _LOGGER.error("Unknown reading from sensor %s: %s", entity_id, value) self._update_state() def _update_state(self): - """"Update the state of the class based sensor data.""" + """Update the state of the class based sensor data.""" result = [] for sensor_name in self._sensormap.values(): params = self.READINGS[sensor_name] @@ -206,7 +205,7 @@ class Plant(Entity): else: self._state = 'problem' self._problems = ','.join(result) - _LOGGER.debug('new data processed') + _LOGGER.debug("New data processed") self.hass.async_add_job(self.async_update_ha_state()) @property diff --git a/homeassistant/components/sensor/api_streams.py b/homeassistant/components/sensor/api_streams.py index c15ca41d2bf..a8ef179280b 100644 --- a/homeassistant/components/sensor/api_streams.py +++ b/homeassistant/components/sensor/api_streams.py @@ -87,5 +87,5 @@ class APICount(Entity): @property def unit_of_measurement(self): - """Unit of measurement.""" + """Return the unit of measurement.""" return "clients" diff --git a/homeassistant/components/sensor/blink.py b/homeassistant/components/sensor/blink.py index 3805af0f2ba..e434776ffc6 100644 --- a/homeassistant/components/sensor/blink.py +++ b/homeassistant/components/sensor/blink.py @@ -42,7 +42,7 @@ class BlinkSensor(Entity): """A Blink camera sensor.""" def __init__(self, name, sensor_type, index, data): - """A method to initialize sensors from Blink camera.""" + """Initialize sensors from Blink camera.""" self._name = 'blink_' + name + '_' + SENSOR_TYPES[sensor_type][0] self._camera_name = name self._type = sensor_type diff --git a/homeassistant/components/sensor/bom.py b/homeassistant/components/sensor/bom.py index db92ff40cf8..4033211e461 100644 --- a/homeassistant/components/sensor/bom.py +++ b/homeassistant/components/sensor/bom.py @@ -272,7 +272,7 @@ def closest_station(lat, lon, cache_dir): stations = bom_stations(cache_dir) def comparable_dist(wmo_id): - """A fast key function for psudeo-distance from lat/lon.""" + """Create a psudeo-distance from lat/lon.""" station_lat, station_lon = stations[wmo_id] return (lat - station_lat) ** 2 + (lon - station_lon) ** 2 diff --git a/homeassistant/components/sensor/eddystone_temperature.py b/homeassistant/components/sensor/eddystone_temperature.py index 16e9df15e5a..7fd5f14e1af 100644 --- a/homeassistant/components/sensor/eddystone_temperature.py +++ b/homeassistant/components/sensor/eddystone_temperature.py @@ -118,7 +118,7 @@ class EddystoneTemp(Entity): @property def should_poll(self): - """Hass should not poll for state.""" + """Return the polling state.""" return False @@ -135,7 +135,7 @@ class Monitor(object): self.bt_device_id = bt_device_id def callback(bt_addr, _, packet, additional_info): - """Callback for new packets.""" + """Handle new packets.""" self.process_packet( additional_info['namespace'], additional_info['instance'], packet.temperature) @@ -157,10 +157,10 @@ class Monitor(object): self.scanning = True else: _LOGGER.debug( - "Warning: start() called, but scanner is already running") + "start() called, but scanner is already running") def process_packet(self, namespace, instance, temperature): - """Assign temperature to hass device.""" + """Assign temperature to device.""" _LOGGER.debug("Received temperature for <%s,%s>: %d", namespace, instance, temperature) @@ -179,4 +179,4 @@ class Monitor(object): self.scanning = False else: _LOGGER.debug( - "Warning: stop() called but scanner was not running") + "stop() called but scanner was not running") diff --git a/homeassistant/components/sensor/eight_sleep.py b/homeassistant/components/sensor/eight_sleep.py index e7d3e240701..e3b2f92d4e1 100644 --- a/homeassistant/components/sensor/eight_sleep.py +++ b/homeassistant/components/sensor/eight_sleep.py @@ -38,7 +38,7 @@ _LOGGER = logging.getLogger(__name__) @asyncio.coroutine def async_setup_platform(hass, config, async_add_devices, discovery_info=None): - """Setup the eight sleep sensors.""" + """Set up the eight sleep sensors.""" if discovery_info is None: return @@ -80,7 +80,7 @@ class EightHeatSensor(EightSleepHeatEntity): self._userid = self._eight.fetch_userid(self._side) self._usrobj = self._eight.users[self._userid] - _LOGGER.debug('Heat Sensor: %s, Side: %s, User: %s', + _LOGGER.debug("Heat Sensor: %s, Side: %s, User: %s", self._sensor, self._side, self._userid) @property @@ -101,7 +101,7 @@ class EightHeatSensor(EightSleepHeatEntity): @asyncio.coroutine def async_update(self): """Retrieve latest state.""" - _LOGGER.debug('Updating Heat sensor: %s', self._sensor) + _LOGGER.debug("Updating Heat sensor: %s", self._sensor) self._state = self._usrobj.heating_level @property @@ -134,7 +134,7 @@ class EightUserSensor(EightSleepUserEntity): self._userid = self._eight.fetch_userid(self._side) self._usrobj = self._eight.users[self._userid] - _LOGGER.debug('User Sensor: %s, Side: %s, User: %s', + _LOGGER.debug("User Sensor: %s, Side: %s, User: %s", self._sensor, self._side, self._userid) @property @@ -167,7 +167,7 @@ class EightUserSensor(EightSleepUserEntity): @asyncio.coroutine def async_update(self): """Retrieve latest state.""" - _LOGGER.debug('Updating User sensor: %s', self._sensor) + _LOGGER.debug("Updating User sensor: %s", self._sensor) if 'current' in self._sensor: self._state = self._usrobj.current_sleep_score self._attr = self._usrobj.current_values @@ -252,7 +252,7 @@ class EightRoomSensor(EightSleepUserEntity): @asyncio.coroutine def async_update(self): """Retrieve latest state.""" - _LOGGER.debug('Updating Room sensor: %s', self._sensor) + _LOGGER.debug("Updating Room sensor: %s", self._sensor) temp = self._eight.room_temperature() if self._units == 'si': self._state = round(temp, 2) diff --git a/homeassistant/components/sensor/ohmconnect.py b/homeassistant/components/sensor/ohmconnect.py index 8a227af8ab3..9808e6ecef7 100644 --- a/homeassistant/components/sensor/ohmconnect.py +++ b/homeassistant/components/sensor/ohmconnect.py @@ -52,7 +52,7 @@ class OhmconnectSensor(Entity): @property def name(self): - """The name of the sensor.""" + """Return the name of the sensor.""" return self._name @property diff --git a/homeassistant/components/sensor/zabbix.py b/homeassistant/components/sensor/zabbix.py index 9f46159b1a2..a47d466c07e 100644 --- a/homeassistant/components/sensor/zabbix.py +++ b/homeassistant/components/sensor/zabbix.py @@ -48,7 +48,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None): _LOGGER.info("Connected to Zabbix API Version %s", zapi.api_version()) trigger_conf = config.get(_CONF_TRIGGERS) - # The following code seems overly complex. Need to think about this... + # The following code seems overly complex. Need to think about this... if trigger_conf: hostids = trigger_conf.get(_CONF_HOSTIDS) individual = trigger_conf.get(_CONF_INDIVIDUAL) @@ -90,7 +90,7 @@ class ZabbixTriggerCountSensor(Entity): """Get the active trigger count for all Zabbix monitored hosts.""" def __init__(self, zApi, name="Zabbix"): - """Initiate Zabbix sensor.""" + """Initialize Zabbix sensor.""" self._name = name self._zapi = zApi self._state = None @@ -131,7 +131,7 @@ class ZabbixSingleHostTriggerCountSensor(ZabbixTriggerCountSensor): """Get the active trigger count for a single Zabbix monitored host.""" def __init__(self, zApi, hostid, name=None): - """Initiate Zabbix sensor.""" + """Initialize Zabbix sensor.""" super().__init__(zApi, name) self._hostid = hostid if not name: diff --git a/homeassistant/components/sensor/zha.py b/homeassistant/components/sensor/zha.py index dd176a9119b..78627674c55 100644 --- a/homeassistant/components/sensor/zha.py +++ b/homeassistant/components/sensor/zha.py @@ -30,7 +30,7 @@ def async_setup_platform(hass, config, async_add_devices, discovery_info=None): @asyncio.coroutine def make_sensor(discovery_info): - """Factory function for ZHA sensors.""" + """Create ZHA sensors factory.""" from bellows.zigbee import zcl if isinstance(discovery_info['clusters'][0], zcl.clusters.measurement.TemperatureMeasurement): diff --git a/homeassistant/components/sensor/zigbee.py b/homeassistant/components/sensor/zigbee.py index 176c0fd51aa..a1d549cb382 100644 --- a/homeassistant/components/sensor/zigbee.py +++ b/homeassistant/components/sensor/zigbee.py @@ -67,7 +67,7 @@ class ZigBeeTemperatureSensor(Entity): @property def unit_of_measurement(self): - """Unit the value is expressed in.""" + """Return the unit of measurement the value is expressed in.""" return TEMP_CELSIUS def update(self, *args): diff --git a/homeassistant/components/sensor/zoneminder.py b/homeassistant/components/sensor/zoneminder.py index 8ef5266790c..b31b942f486 100644 --- a/homeassistant/components/sensor/zoneminder.py +++ b/homeassistant/components/sensor/zoneminder.py @@ -51,7 +51,7 @@ class ZMSensorMonitors(Entity): """Get the status of each ZoneMinder monitor.""" def __init__(self, monitor_id, monitor_name): - """Initiate monitor sensor.""" + """Initialize monitor sensor.""" self._monitor_id = monitor_id self._monitor_name = monitor_name self._state = None diff --git a/homeassistant/components/switch/anel_pwrctrl.py b/homeassistant/components/switch/anel_pwrctrl.py index fccb43a08f2..bfa6e2af976 100644 --- a/homeassistant/components/switch/anel_pwrctrl.py +++ b/homeassistant/components/switch/anel_pwrctrl.py @@ -21,8 +21,8 @@ REQUIREMENTS = ['https://github.com/mweinelt/anel-pwrctrl/archive/' _LOGGER = logging.getLogger(__name__) -CONF_PORT_RECV = "port_recv" -CONF_PORT_SEND = "port_send" +CONF_PORT_RECV = 'port_recv' +CONF_PORT_SEND = 'port_send' MIN_TIME_BETWEEN_UPDATES = timedelta(seconds=5) @@ -76,7 +76,7 @@ class PwrCtrlSwitch(SwitchDevice): @property def should_poll(self): - """Polling is needed.""" + """Return the polling state.""" return True @property diff --git a/homeassistant/components/switch/broadlink.py b/homeassistant/components/switch/broadlink.py index 8e4bacf7f99..91bcf6c4aa5 100644 --- a/homeassistant/components/switch/broadlink.py +++ b/homeassistant/components/switch/broadlink.py @@ -174,7 +174,7 @@ class BroadlinkRMSwitch(SwitchDevice): @property def should_poll(self): - """No polling needed.""" + """Return the polling state.""" return False @property @@ -257,7 +257,7 @@ class BroadlinkSP2Switch(BroadlinkSP1Switch): @property def should_poll(self): - """Polling needed.""" + """Return the polling state.""" return True def update(self): diff --git a/homeassistant/components/switch/digitalloggers.py b/homeassistant/components/switch/digitalloggers.py index a9d30e52ee6..dabd8ea1d2d 100755 --- a/homeassistant/components/switch/digitalloggers.py +++ b/homeassistant/components/switch/digitalloggers.py @@ -1,15 +1,8 @@ """ Support for Digital Loggers DIN III Relays. -Support for Digital Loggers DIN III Relays and possibly other items -through Dwight Hubbard's, python-dlipower. - -For more details about python-dlipower, please see -https://github.com/dwighthubbard/python-dlipower - -Custom ports are NOT supported due to a limitation of the dlipower -library, not the digital loggers switch - +For more details about this platform, please refer to the documentation at +https://home-assistant.io/components/switch.digitalloggers/ """ import logging from datetime import timedelta @@ -22,9 +15,11 @@ from homeassistant.const import ( import homeassistant.helpers.config_validation as cv from homeassistant.util import Throttle - REQUIREMENTS = ['dlipower==0.7.165'] +_LOGGER = logging.getLogger(__name__) + + CONF_CYCLETIME = 'cycletime' DEFAULT_NAME = 'DINRelay' @@ -35,8 +30,6 @@ DEFAULT_CYCLETIME = 2 MIN_TIME_BETWEEN_UPDATES = timedelta(seconds=5) -_LOGGER = logging.getLogger(__name__) - PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ vol.Required(CONF_HOST): cv.string, vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string, @@ -46,7 +39,6 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ vol.All(vol.Coerce(int), vol.Range(min=1, max=600)), vol.Optional(CONF_CYCLETIME, default=DEFAULT_CYCLETIME): vol.All(vol.Coerce(int), vol.Range(min=1, max=600)), - }) @@ -103,7 +95,7 @@ class DINRelay(SwitchDevice): @property def should_poll(self): - """Polling is needed.""" + """Return the polling state.""" return True def turn_on(self, **kwargs): diff --git a/homeassistant/components/switch/hdmi_cec.py b/homeassistant/components/switch/hdmi_cec.py index 0e17aeab8e4..a100b582e64 100644 --- a/homeassistant/components/switch/hdmi_cec.py +++ b/homeassistant/components/switch/hdmi_cec.py @@ -67,5 +67,5 @@ class CecSwitchDevice(CecDevice, SwitchDevice): @property def state(self) -> str: - """Cached state of device.""" + """Return the cached state of device.""" return self._state diff --git a/homeassistant/components/switch/insteon_local.py b/homeassistant/components/switch/insteon_local.py index 5332d420499..e6e34f6de27 100644 --- a/homeassistant/components/switch/insteon_local.py +++ b/homeassistant/components/switch/insteon_local.py @@ -61,7 +61,7 @@ def request_configuration( return def insteon_switch_config_callback(data): - """The actions to do when our configuration callback is called.""" + """Handle configuration changes.""" setup_switch(device_id, data.get('name'), insteonhub, hass, add_devices_callback) diff --git a/homeassistant/components/switch/kankun.py b/homeassistant/components/switch/kankun.py index f3008d3b086..88a07b68cd9 100644 --- a/homeassistant/components/switch/kankun.py +++ b/homeassistant/components/switch/kankun.py @@ -58,7 +58,7 @@ class KankunSwitch(SwitchDevice): """Representation of a Kankun Wifi switch.""" def __init__(self, hass, name, host, port, path, user, passwd): - """Initialise the device.""" + """Initialize the device.""" self._hass = hass self._name = name self._state = False @@ -92,17 +92,17 @@ class KankunSwitch(SwitchDevice): @property def should_poll(self): - """Switch should always be polled.""" + """Return the polling state.""" return True @property def name(self): - """The name of the switch.""" + """Return the name of the switch.""" return self._name @property def is_on(self): - """True if device is on.""" + """Return true if device is on.""" return self._state def update(self): diff --git a/homeassistant/components/switch/lutron_caseta.py b/homeassistant/components/switch/lutron_caseta.py index 01d8e063db9..585dc043315 100644 --- a/homeassistant/components/switch/lutron_caseta.py +++ b/homeassistant/components/switch/lutron_caseta.py @@ -47,6 +47,6 @@ class LutronCasetaLight(LutronCasetaDevice, SwitchDevice): return self._state["current_state"] > 0 def update(self): - """Called when forcing a refresh of the device.""" + """Update when forcing a refresh of the device.""" self._state = self._smartbridge.get_device_by_id(self._device_id) _LOGGER.debug(self._state) diff --git a/homeassistant/components/switch/mfi.py b/homeassistant/components/switch/mfi.py index 76c3df5c98c..6f5dd655ba4 100644 --- a/homeassistant/components/switch/mfi.py +++ b/homeassistant/components/switch/mfi.py @@ -56,7 +56,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None): client = MFiClient(host, username, password, port=port, use_tls=use_tls, verify=verify_tls) except (FailedToLogin, requests.exceptions.ConnectionError) as ex: - _LOGGER.error('Unable to connect to mFi: %s', str(ex)) + _LOGGER.error("Unable to connect to mFi: %s", str(ex)) return False add_devices(MfiSwitch(port) @@ -75,7 +75,7 @@ class MfiSwitch(SwitchDevice): @property def should_poll(self): - """Polling is needed.""" + """Return the polling state.""" return True @property diff --git a/homeassistant/components/switch/mqtt.py b/homeassistant/components/switch/mqtt.py index 391df2ad67e..e9c282e4c45 100644 --- a/homeassistant/components/switch/mqtt.py +++ b/homeassistant/components/switch/mqtt.py @@ -78,13 +78,13 @@ class MqttSwitch(SwitchDevice): @asyncio.coroutine def async_added_to_hass(self): - """Subscribe mqtt events. + """Subscribe to MQTT events. This method is a coroutine. """ @callback def message_received(topic, payload, qos): - """A new MQTT message has been received.""" + """Handle new MQTT messages.""" if self._template is not None: payload = self._template.async_render_with_possible_json_value( payload) @@ -104,7 +104,7 @@ class MqttSwitch(SwitchDevice): @property def should_poll(self): - """No polling needed.""" + """Return the polling state.""" return False @property diff --git a/homeassistant/components/switch/netio.py b/homeassistant/components/switch/netio.py index 4148371d22b..51735a5675f 100644 --- a/homeassistant/components/switch/netio.py +++ b/homeassistant/components/switch/netio.py @@ -50,7 +50,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ def setup_platform(hass, config, add_devices, discovery_info=None): - """Configure the Netio platform.""" + """Set up the Netio platform.""" from pynetio import Netio host = config.get(CONF_HOST) @@ -126,19 +126,19 @@ class NetioSwitch(SwitchDevice): """Provide a Netio linked switch.""" def __init__(self, netio, outlet, name): - """Defined to handle throttle.""" + """Initalize the Netio switch.""" self._name = name self.outlet = outlet self.netio = netio @property def name(self): - """Netio device's name.""" + """Return the device's name.""" return self._name @property def available(self): - """Return True if entity is available.""" + """Return true if entity is available.""" return not hasattr(self, 'telnet') def turn_on(self): @@ -158,11 +158,11 @@ class NetioSwitch(SwitchDevice): @property def is_on(self): - """Return switch's status.""" + """Return the switch's status.""" return self.netio.states[self.outlet - 1] def update(self): - """Called by Home Assistant.""" + """Update the state.""" self.netio.update() @property @@ -180,7 +180,7 @@ class NetioSwitch(SwitchDevice): @property def cumulated_consumption_kwh(self): - """Total enerygy consumption since start_date.""" + """Return the total enerygy consumption since start_date.""" return self.netio.cumulated_consumptions[self.outlet - 1] @property diff --git a/homeassistant/components/switch/pulseaudio_loopback.py b/homeassistant/components/switch/pulseaudio_loopback.py index 46f9173437c..69b932ecf71 100644 --- a/homeassistant/components/switch/pulseaudio_loopback.py +++ b/homeassistant/components/switch/pulseaudio_loopback.py @@ -82,7 +82,7 @@ class PAServer(): _current_module_state = "" def __init__(self, host, port, buff_sz, tcp_timeout): - """Simple constructor for reading in our configuration.""" + """Initialize PulseAudio server.""" self._pa_host = host self._pa_port = int(port) self._buffer_size = int(buff_sz) @@ -106,7 +106,7 @@ class PAServer(): return return_data def _get_full_response(self, sock): - """Helper method to get the full response back from pulseaudio.""" + """Get the full response back from pulseaudio.""" result = "" rcv_buffer = sock.recv(self._buffer_size) result += rcv_buffer.decode('utf-8') @@ -160,7 +160,7 @@ class PALoopbackSwitch(SwitchDevice): @property def is_on(self): - """Tell the core logic if device is on.""" + """Return true if device is on.""" return self._module_idx > 0 def turn_on(self, **kwargs): diff --git a/homeassistant/components/switch/rfxtrx.py b/homeassistant/components/switch/rfxtrx.py index 4679ea19f4d..1361d22de18 100644 --- a/homeassistant/components/switch/rfxtrx.py +++ b/homeassistant/components/switch/rfxtrx.py @@ -25,7 +25,7 @@ def setup_platform(hass, config, add_devices_callback, discovery_info=None): add_devices_callback(switches) def switch_update(event): - """Callback for sensor updates from the RFXtrx gateway.""" + """Handle sensor updates from the RFXtrx gateway.""" if not isinstance(event.device, rfxtrxmod.LightingDevice) or \ event.device.known_to_be_dimmable or \ event.device.known_to_be_rollershutter: @@ -37,7 +37,7 @@ def setup_platform(hass, config, add_devices_callback, discovery_info=None): rfxtrx.apply_received_command(event) - # Subscribe to main rfxtrx events + # Subscribe to main RFXtrx events if switch_update not in rfxtrx.RECEIVED_EVT_SUBSCRIBERS: rfxtrx.RECEIVED_EVT_SUBSCRIBERS.append(switch_update) diff --git a/homeassistant/components/switch/template.py b/homeassistant/components/switch/template.py index b88b9ea590d..b81c702bc02 100644 --- a/homeassistant/components/switch/template.py +++ b/homeassistant/components/switch/template.py @@ -59,13 +59,8 @@ def async_setup_platform(hass, config, async_add_devices, discovery_info=None): switches.append( SwitchTemplate( - hass, - device, - friendly_name, - state_template, - on_action, - off_action, - entity_ids) + hass, device, friendly_name, state_template, on_action, + off_action, entity_ids) ) if not switches: _LOGGER.error("No switches added") @@ -82,8 +77,8 @@ class SwitchTemplate(SwitchDevice): on_action, off_action, entity_ids): """Initialize the Template switch.""" self.hass = hass - self.entity_id = async_generate_entity_id(ENTITY_ID_FORMAT, device_id, - hass=hass) + self.entity_id = async_generate_entity_id( + ENTITY_ID_FORMAT, device_id, hass=hass) self._name = friendly_name self._template = state_template self._on_script = Script(hass, on_action) @@ -100,7 +95,7 @@ class SwitchTemplate(SwitchDevice): @callback def template_switch_state_listener(entity, old_state, new_state): - """Called when the target device changes state.""" + """Handle target device state changes.""" self.hass.async_add_job(self.async_update_ha_state(True)) @callback @@ -126,7 +121,7 @@ class SwitchTemplate(SwitchDevice): @property def should_poll(self): - """No polling needed.""" + """Return the polling state.""" return False @property diff --git a/homeassistant/components/switch/vera.py b/homeassistant/components/switch/vera.py index 6f41c98e7b8..1e92612b9a9 100644 --- a/homeassistant/components/switch/vera.py +++ b/homeassistant/components/switch/vera.py @@ -17,7 +17,7 @@ _LOGGER = logging.getLogger(__name__) def setup_platform(hass, config, add_devices, discovery_info=None): - """Find and return Vera switches.""" + """Set up the Vera switches.""" add_devices( VeraSwitch(device, VERA_CONTROLLER) for device in VERA_DEVICES['switch']) @@ -46,7 +46,7 @@ class VeraSwitch(VeraDevice, SwitchDevice): @property def current_power_w(self): - """Current power usage in W.""" + """Return the current power usage in W.""" power = self.vera_device.power if power: return convert(power, float, 0.0) @@ -57,5 +57,5 @@ class VeraSwitch(VeraDevice, SwitchDevice): return self._state def update(self): - """Called by the vera device callback to update state.""" + """Update device state.""" self._state = self.vera_device.is_switched_on() diff --git a/homeassistant/components/switch/wake_on_lan.py b/homeassistant/components/switch/wake_on_lan.py index 4413da191d3..8430a5b8810 100644 --- a/homeassistant/components/switch/wake_on_lan.py +++ b/homeassistant/components/switch/wake_on_lan.py @@ -66,7 +66,7 @@ class WOLSwitch(SwitchDevice): @property def should_poll(self): - """Poll for status regularly.""" + """Return the polling state.""" return True @property @@ -76,14 +76,14 @@ class WOLSwitch(SwitchDevice): @property def name(self): - """The name of the switch.""" + """Return the name of the switch.""" return self._name def turn_on(self): """Turn the device on.""" if self._broadcast_address: - self._wol.send_magic_packet(self._mac_address, - ip_address=self._broadcast_address) + self._wol.send_magic_packet( + self._mac_address, ip_address=self._broadcast_address) else: self._wol.send_magic_packet(self._mac_address) diff --git a/homeassistant/components/switch/wemo.py b/homeassistant/components/switch/wemo.py index ba47ed7cb04..083af8549a1 100644 --- a/homeassistant/components/switch/wemo.py +++ b/homeassistant/components/switch/wemo.py @@ -17,13 +17,13 @@ DEPENDENCIES = ['wemo'] _LOGGER = logging.getLogger(__name__) -ATTR_SENSOR_STATE = "sensor_state" -ATTR_SWITCH_MODE = "switch_mode" +ATTR_SENSOR_STATE = 'sensor_state' +ATTR_SWITCH_MODE = 'switch_mode' ATTR_CURRENT_STATE_DETAIL = 'state_detail' -ATTR_COFFEMAKER_MODE = "coffeemaker_mode" +ATTR_COFFEMAKER_MODE = 'coffeemaker_mode' -MAKER_SWITCH_MOMENTARY = "momentary" -MAKER_SWITCH_TOGGLE = "toggle" +MAKER_SWITCH_MOMENTARY = 'momentary' +MAKER_SWITCH_TOGGLE = 'toggle' WEMO_ON = 1 WEMO_OFF = 0 @@ -63,9 +63,7 @@ class WemoSwitch(SwitchDevice): def _update_callback(self, _device, _type, _params): """Called by the Wemo device callback to update state.""" - _LOGGER.info( - 'Subscription update for %s', - _device) + _LOGGER.info("Subscription update for %s", _device) updated = self.wemo.subscription_update(_type, _params) self._update(force_update=(not updated)) @@ -133,14 +131,12 @@ class WemoSwitch(SwitchDevice): def as_uptime(_seconds): """Format seconds into uptime string in the format: 00d 00h 00m 00s.""" uptime = datetime(1, 1, 1) + timedelta(seconds=_seconds) - return "{:0>2d}d {:0>2d}h {:0>2d}m {:0>2d}s".format(uptime.day-1, - uptime.hour, - uptime.minute, - uptime.second) + return "{:0>2d}d {:0>2d}h {:0>2d}m {:0>2d}s".format( + uptime.day-1, uptime.hour, uptime.minute, uptime.second) @property def current_power_w(self): - """Current power usage in W.""" + """Return the current power usage in W.""" if self.insight_params: return convert( self.insight_params['currentpower'], float, 0.0 @@ -148,7 +144,7 @@ class WemoSwitch(SwitchDevice): @property def today_energy_kwh(self): - """Today total energy usage in kWh.""" + """Return the today total energy usage in kWh.""" if self.insight_params: miliwatts = convert(self.insight_params['todaymw'], float, 0.0) return round(miliwatts / (1000.0 * 1000.0 * 60), 2) @@ -176,7 +172,7 @@ class WemoSwitch(SwitchDevice): @property def available(self): - """True if switch is available.""" + """Return true if switch is available.""" if self._model_name == 'Insight' and self.insight_params is None: return False if self._model_name == 'Maker' and self.maker_params is None: @@ -187,7 +183,7 @@ class WemoSwitch(SwitchDevice): @property def icon(self): - """Icon of device based on its type.""" + """Return the icon of device based on its type.""" if self._model_name == 'CoffeeMaker': return 'mdi:coffee' else: @@ -210,6 +206,7 @@ class WemoSwitch(SwitchDevice): self._update(force_update=True) def _update(self, force_update=True): + """Update the device state.""" try: self._state = self.wemo.get_state(force_update) if self._model_name == 'Insight': @@ -221,5 +218,5 @@ class WemoSwitch(SwitchDevice): elif self._model_name == 'CoffeeMaker': self.coffeemaker_mode = self.wemo.mode except AttributeError as err: - _LOGGER.warning('Could not update status for %s (%s)', + _LOGGER.warning("Could not update status for %s (%s)", self.name, err) diff --git a/homeassistant/components/switch/zwave.py b/homeassistant/components/switch/zwave.py index ba64785013f..3b82d87d7e7 100644 --- a/homeassistant/components/switch/zwave.py +++ b/homeassistant/components/switch/zwave.py @@ -33,7 +33,7 @@ class ZwaveSwitch(zwave.ZWaveDeviceEntity, SwitchDevice): self._state = self.values.primary.data def update_properties(self): - """Callback on data changes for node values.""" + """Handle data changes for node values.""" self._state = self.values.primary.data if self.refresh_on_update and \ time.perf_counter() - self.last_update > 30: diff --git a/homeassistant/components/telegram_bot/__init__.py b/homeassistant/components/telegram_bot/__init__.py index 1a79109f17d..f825b6737b9 100644 --- a/homeassistant/components/telegram_bot/__init__.py +++ b/homeassistant/components/telegram_bot/__init__.py @@ -1,12 +1,9 @@ -""" -Component to receive telegram messages. - -Either by polling or webhook. -""" - +"""Component to receive telegram messages.""" import asyncio import logging + import voluptuous as vol + import homeassistant.helpers.config_validation as cv from homeassistant.const import CONF_PLATFORM, CONF_API_KEY from homeassistant.exceptions import HomeAssistantError @@ -32,8 +29,8 @@ CONF_ALLOWED_CHAT_IDS = 'allowed_chat_ids' PLATFORM_SCHEMA = vol.Schema({ vol.Required(CONF_PLATFORM): cv.string, vol.Required(CONF_API_KEY): cv.string, - vol.Required(CONF_ALLOWED_CHAT_IDS): vol.All(cv.ensure_list, - [cv.positive_int]) + vol.Required(CONF_ALLOWED_CHAT_IDS): + vol.All(cv.ensure_list, [cv.positive_int]) }, extra=vol.ALLOW_EXTRA) @@ -62,11 +59,11 @@ def async_setup(hass, config): None, platform.setup_platform, hass, p_config, discovery_info) else: - raise HomeAssistantError("Invalid telegram bot platform.") + raise HomeAssistantError("Invalid Telegram bot platform") if notify_service is None: _LOGGER.error( - "Failed to initialize telegram bot %s", p_type) + "Failed to initialize Telegram bot %s", p_type) return except Exception: # pylint: disable=broad-except @@ -105,8 +102,7 @@ class BaseTelegramBotEntity: 'from' not in data or 'text' not in data or data['from'].get('id') not in self.allowed_chat_ids): - # Message is not correct. - _LOGGER.error("Incoming message does not have required data.") + _LOGGER.error("Incoming message does not have required data") return False event = EVENT_TELEGRAM_COMMAND diff --git a/homeassistant/components/telegram_bot/polling.py b/homeassistant/components/telegram_bot/polling.py index c9891e884f0..8ae0a07a480 100644 --- a/homeassistant/components/telegram_bot/polling.py +++ b/homeassistant/components/telegram_bot/polling.py @@ -105,7 +105,7 @@ class TelegramPoll(BaseTelegramBotEntity): @asyncio.coroutine def handle(self): - """" Receiving and processing incoming messages.""" + """Receiving and processing incoming messages.""" _updates = yield from self.get_updates(self.update_id) for update in _updates['result']: self.update_id = update['update_id'] + 1 @@ -113,7 +113,7 @@ class TelegramPoll(BaseTelegramBotEntity): @asyncio.coroutine def check_incoming(self): - """"Loop which continuously checks for incoming telegram messages.""" + """Loop which continuously checks for incoming telegram messages.""" try: while True: # Each handle call sends a long polling post request @@ -122,4 +122,4 @@ class TelegramPoll(BaseTelegramBotEntity): # timeout will for this reason not really stress the processor. yield from self.handle() except CancelledError: - _LOGGER.debug("Stopping telegram polling bot") + _LOGGER.debug("Stopping Telegram polling bot") diff --git a/homeassistant/components/telegram_bot/webhooks.py b/homeassistant/components/telegram_bot/webhooks.py index 4c9f7684d36..d647fab490b 100644 --- a/homeassistant/components/telegram_bot/webhooks.py +++ b/homeassistant/components/telegram_bot/webhooks.py @@ -67,7 +67,7 @@ def setup_platform(hass, config, async_add_devices, discovery_info=None): class BotPushReceiver(HomeAssistantView, BaseTelegramBotEntity): - """Handle pushes from telegram.""" + """Handle pushes from Telegram.""" requires_auth = False url = TELEGRAM_HANDLER_URL diff --git a/homeassistant/components/tradfri.py b/homeassistant/components/tradfri.py index 7af31a66b9d..e1ef0f5fabd 100644 --- a/homeassistant/components/tradfri.py +++ b/homeassistant/components/tradfri.py @@ -45,7 +45,7 @@ def request_configuration(hass, config, host): @asyncio.coroutine def configuration_callback(callback_data): - """Called when config is submitted.""" + """Handle the submitted configuration.""" res = yield from _setup_gateway(hass, config, host, callback_data.get('key')) if not res: diff --git a/homeassistant/components/tts/__init__.py b/homeassistant/components/tts/__init__.py index e5570a6922d..c91ab47a324 100644 --- a/homeassistant/components/tts/__init__.py +++ b/homeassistant/components/tts/__init__.py @@ -102,7 +102,7 @@ def async_setup(hass, config): @asyncio.coroutine def async_setup_platform(p_type, p_config, disc_info=None): - """Set up a tts platform.""" + """Set up a TTS platform.""" platform = yield from async_prepare_setup_platform( hass, config, DOMAIN, p_type) if platform is None: @@ -454,29 +454,29 @@ class SpeechManager(object): class Provider(object): - """Represent a single provider.""" + """Represent a single TTS provider.""" hass = None name = None @property def default_language(self): - """Default language.""" + """Return the default language.""" return None @property def supported_languages(self): - """List of supported languages.""" + """Return a list of supported languages.""" return None @property def supported_options(self): - """List of supported options like voice, emotionen.""" + """Return a list of supported options like voice, emotionen.""" return None @property def default_options(self): - """Dict include default options.""" + """Return a dict include default options.""" return None def get_tts_audio(self, message, language, options=None): @@ -496,11 +496,11 @@ class Provider(object): class TextToSpeechView(HomeAssistantView): - """TTS view to serve an speech audio.""" + """TTS view to serve a speech audio.""" requires_auth = False - url = "/api/tts_proxy/{filename}" - name = "api:tts:speech" + url = '/api/tts_proxy/{filename}' + name = 'api:tts:speech' def __init__(self, tts): """Initialize a tts view.""" diff --git a/homeassistant/components/tts/amazon_polly.py b/homeassistant/components/tts/amazon_polly.py index e3c90f4778c..9be882a4cb3 100644 --- a/homeassistant/components/tts/amazon_polly.py +++ b/homeassistant/components/tts/amazon_polly.py @@ -11,57 +11,57 @@ from homeassistant.components.tts import Provider, PLATFORM_SCHEMA import homeassistant.helpers.config_validation as cv _LOGGER = logging.getLogger(__name__) -REQUIREMENTS = ["boto3==1.4.3"] +REQUIREMENTS = ['boto3==1.4.3'] -CONF_REGION = "region_name" -CONF_ACCESS_KEY_ID = "aws_access_key_id" -CONF_SECRET_ACCESS_KEY = "aws_secret_access_key" -CONF_PROFILE_NAME = "profile_name" -ATTR_CREDENTIALS = "credentials" +CONF_REGION = 'region_name' +CONF_ACCESS_KEY_ID = 'aws_access_key_id' +CONF_SECRET_ACCESS_KEY = 'aws_secret_access_key' +CONF_PROFILE_NAME = 'profile_name' +ATTR_CREDENTIALS = 'credentials' -DEFAULT_REGION = "us-east-1" -SUPPORTED_REGIONS = ["us-east-1", "us-east-2", "us-west-2", "eu-west-1"] +DEFAULT_REGION = 'us-east-1' +SUPPORTED_REGIONS = ['us-east-1', 'us-east-2', 'us-west-2', 'eu-west-1'] -CONF_VOICE = "voice" -CONF_OUTPUT_FORMAT = "output_format" -CONF_SAMPLE_RATE = "sample_rate" -CONF_TEXT_TYPE = "text_type" +CONF_VOICE = 'voice' +CONF_OUTPUT_FORMAT = 'output_format' +CONF_SAMPLE_RATE = 'sample_rate' +CONF_TEXT_TYPE = 'text_type' -SUPPORTED_VOICES = ["Geraint", "Gwyneth", "Mads", "Naja", "Hans", "Marlene", - "Nicole", "Russell", "Amy", "Brian", "Emma", "Raveena", - "Ivy", "Joanna", "Joey", "Justin", "Kendra", "Kimberly", - "Salli", "Conchita", "Enrique", "Miguel", "Penelope", - "Chantal", "Celine", "Mathieu", "Dora", "Karl", "Carla", - "Giorgio", "Mizuki", "Liv", "Lotte", "Ruben", "Ewa", - "Jacek", "Jan", "Maja", "Ricardo", "Vitoria", "Cristiano", - "Ines", "Carmen", "Maxim", "Tatyana", "Astrid", "Filiz"] +SUPPORTED_VOICES = ['Geraint', 'Gwyneth', 'Mads', 'Naja', 'Hans', 'Marlene', + 'Nicole', 'Russell', 'Amy', 'Brian', 'Emma', 'Raveena', + 'Ivy', 'Joanna', 'Joey', 'Justin', 'Kendra', 'Kimberly', + 'Salli', 'Conchita', 'Enrique', 'Miguel', 'Penelope', + 'Chantal', 'Celine', 'Mathieu', 'Dora', 'Karl', 'Carla', + 'Giorgio', 'Mizuki', 'Liv', 'Lotte', 'Ruben', 'Ewa', + 'Jacek', 'Jan', 'Maja', 'Ricardo', 'Vitoria', 'Cristiano', + 'Ines', 'Carmen', 'Maxim', 'Tatyana', 'Astrid', 'Filiz'] -SUPPORTED_OUTPUT_FORMATS = ["mp3", "ogg_vorbis", "pcm"] +SUPPORTED_OUTPUT_FORMATS = ['mp3', 'ogg_vorbis', 'pcm'] -SUPPORTED_SAMPLE_RATES = ["8000", "16000", "22050"] +SUPPORTED_SAMPLE_RATES = ['8000', '16000', '22050'] SUPPORTED_SAMPLE_RATES_MAP = { - "mp3": ["8000", "16000", "22050"], - "ogg_vorbis": ["8000", "16000", "22050"], - "pcm": ["8000", "16000"] + 'mp3': ['8000', '16000', '22050'], + 'ogg_vorbis': ['8000', '16000', '22050'], + 'pcm': ['8000', '16000'] } -SUPPORTED_TEXT_TYPES = ["text", "ssml"] +SUPPORTED_TEXT_TYPES = ['text', 'ssml'] CONTENT_TYPE_EXTENSIONS = { - "audio/mpeg": "mp3", - "audio/ogg": "ogg", - "audio/pcm": "pcm" + 'audio/mpeg': 'mp3', + 'audio/ogg': 'ogg', + 'audio/pcm': 'pcm' } -DEFAULT_VOICE = "Joanna" -DEFAULT_OUTPUT_FORMAT = "mp3" -DEFAULT_TEXT_TYPE = "text" +DEFAULT_VOICE = 'Joanna' +DEFAULT_OUTPUT_FORMAT = 'mp3' +DEFAULT_TEXT_TYPE = 'text' DEFAULT_SAMPLE_RATES = { - "mp3": "22050", - "ogg_vorbis": "22050", - "pcm": "16000" + 'mp3': '22050', + 'ogg_vorbis': '22050', + 'pcm': '16000' } PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ @@ -110,7 +110,7 @@ def get_engine(hass, config): del config[CONF_ACCESS_KEY_ID] del config[CONF_SECRET_ACCESS_KEY] - polly_client = boto3.client("polly", **aws_config) + polly_client = boto3.client('polly', **aws_config) supported_languages = [] @@ -118,10 +118,10 @@ def get_engine(hass, config): all_voices_req = polly_client.describe_voices() - for voice in all_voices_req.get("Voices"): - all_voices[voice.get("Id")] = voice - if voice.get("LanguageCode") not in supported_languages: - supported_languages.append(voice.get("LanguageCode")) + for voice in all_voices_req.get('Voices'): + all_voices[voice.get('Id')] = voice + if voice.get('LanguageCode') not in supported_languages: + supported_languages.append(voice.get('LanguageCode')) return AmazonPollyProvider(polly_client, config, supported_languages, all_voices) @@ -142,29 +142,29 @@ class AmazonPollyProvider(Provider): @property def supported_languages(self): - """List of supported languages.""" + """Return a list of supported languages.""" return self.supported_langs @property def default_language(self): - """Default language.""" - return self.all_voices.get(self.default_voice).get("LanguageCode") + """Return the default language.""" + return self.all_voices.get(self.default_voice).get('LanguageCode') @property def default_options(self): - """Dict include default options.""" + """Return dict include default options.""" return {CONF_VOICE: self.default_voice} @property def supported_options(self): - """List of supported options.""" + """Return a list of supported options.""" return [CONF_VOICE] def get_tts_audio(self, message, language=None, options=None): """Request TTS file from Polly.""" voice_id = options.get(CONF_VOICE, self.default_voice) voice_in_dict = self.all_voices.get(voice_id) - if language is not voice_in_dict.get("LanguageCode"): + if language is not voice_in_dict.get('LanguageCode'): _LOGGER.error("%s does not support the %s language", voice_id, language) return (None, None) @@ -177,5 +177,5 @@ class AmazonPollyProvider(Provider): VoiceId=voice_id ) - return (CONTENT_TYPE_EXTENSIONS[resp.get("ContentType")], - resp.get("AudioStream").read()) + return (CONTENT_TYPE_EXTENSIONS[resp.get('ContentType')], + resp.get('AudioStream').read()) diff --git a/homeassistant/components/tts/demo.py b/homeassistant/components/tts/demo.py index ea169e9f1a5..ba854fc2f5e 100644 --- a/homeassistant/components/tts/demo.py +++ b/homeassistant/components/tts/demo.py @@ -27,7 +27,7 @@ def get_engine(hass, config): class DemoProvider(Provider): - """Demo speech api provider.""" + """Demo speech API provider.""" def __init__(self, lang): """Initialize demo provider.""" @@ -36,26 +36,26 @@ class DemoProvider(Provider): @property def default_language(self): - """Default language.""" + """Return the default language.""" return self._lang @property def supported_languages(self): - """List of supported languages.""" + """Return list of supported languages.""" return SUPPORT_LANGUAGES @property def supported_options(self): - """List of supported options like voice, emotionen.""" + """Return list of supported options like voice, emotionen.""" return ['voice', 'age'] def get_tts_audio(self, message, language, options=None): """Load TTS from demo.""" - filename = os.path.join(os.path.dirname(__file__), "demo.mp3") + filename = os.path.join(os.path.dirname(__file__), 'demo.mp3') try: with open(filename, 'rb') as voice: data = voice.read() except OSError: return (None, None) - return ("mp3", data) + return ('mp3', data) diff --git a/homeassistant/components/tts/google.py b/homeassistant/components/tts/google.py index 88bf9be29b8..24e96a239b2 100644 --- a/homeassistant/components/tts/google.py +++ b/homeassistant/components/tts/google.py @@ -33,7 +33,6 @@ SUPPORT_LANGUAGES = [ DEFAULT_LANG = 'en' - PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ vol.Optional(CONF_LANG, default=DEFAULT_LANG): vol.In(SUPPORT_LANGUAGES), }) @@ -62,12 +61,12 @@ class GoogleProvider(Provider): @property def default_language(self): - """Default language.""" + """Return the default language.""" return self._lang @property def supported_languages(self): - """List of supported languages.""" + """Return list of supported languages.""" return SUPPORT_LANGUAGES @asyncio.coroutine diff --git a/homeassistant/components/tts/marytts.py b/homeassistant/components/tts/marytts.py index e0e7e1d0f88..d7db09856a6 100644 --- a/homeassistant/components/tts/marytts.py +++ b/homeassistant/components/tts/marytts.py @@ -70,12 +70,12 @@ class MaryTTSProvider(Provider): @property def default_language(self): - """Default language.""" + """Return the default language.""" return self._language @property def supported_languages(self): - """List of supported languages.""" + """Return list of supported languages.""" return SUPPORT_LANGUAGES @asyncio.coroutine @@ -105,13 +105,13 @@ class MaryTTSProvider(Provider): request = yield from websession.get(url, params=url_param) if request.status != 200: - _LOGGER.error("Error %d on load url %s.", + _LOGGER.error("Error %d on load url %s", request.status, request.url) return (None, None) data = yield from request.read() except (asyncio.TimeoutError, aiohttp.ClientError): - _LOGGER.error("Timeout for MaryTTS API.") + _LOGGER.error("Timeout for MaryTTS API") return (None, None) return (self._codec, data) diff --git a/homeassistant/components/tts/picotts.py b/homeassistant/components/tts/picotts.py index a22196cfbe0..59c698303ad 100644 --- a/homeassistant/components/tts/picotts.py +++ b/homeassistant/components/tts/picotts.py @@ -42,12 +42,12 @@ class PicoProvider(Provider): @property def default_language(self): - """Default language.""" + """Return the default language.""" return self._lang @property def supported_languages(self): - """List of supported languages.""" + """Return list of supported languages.""" return SUPPORT_LANGUAGES def get_tts_audio(self, message, language, options=None): diff --git a/homeassistant/components/tts/voicerss.py b/homeassistant/components/tts/voicerss.py index e8622d3b9a1..38f6e2290b5 100644 --- a/homeassistant/components/tts/voicerss.py +++ b/homeassistant/components/tts/voicerss.py @@ -16,7 +16,6 @@ from homeassistant.components.tts import Provider, PLATFORM_SCHEMA, CONF_LANG from homeassistant.helpers.aiohttp_client import async_get_clientsession import homeassistant.helpers.config_validation as cv - _LOGGER = logging.getLogger(__name__) VOICERSS_API_URL = "https://api.voicerss.org/" @@ -106,12 +105,12 @@ class VoiceRSSProvider(Provider): @property def default_language(self): - """Default language.""" + """Return the default language.""" return self._lang @property def supported_languages(self): - """List of supported languages.""" + """Return list of supported languages.""" return SUPPORT_LANGUAGES @asyncio.coroutine diff --git a/homeassistant/components/tts/yandextts.py b/homeassistant/components/tts/yandextts.py index 0f8ec88f87b..05daad55412 100644 --- a/homeassistant/components/tts/yandextts.py +++ b/homeassistant/components/tts/yandextts.py @@ -86,12 +86,12 @@ class YandexSpeechKitProvider(Provider): @property def default_language(self): - """Default language.""" + """Return the default language.""" return self._language @property def supported_languages(self): - """List of supported languages.""" + """Return list of supported languages.""" return SUPPORT_LANGUAGES @asyncio.coroutine @@ -112,17 +112,17 @@ class YandexSpeechKitProvider(Provider): 'speed': self._speed } - request = yield from websession.get(YANDEX_API_URL, - params=url_param) + request = yield from websession.get( + YANDEX_API_URL, params=url_param) if request.status != 200: - _LOGGER.error("Error %d on load url %s.", + _LOGGER.error("Error %d on load URL %s", request.status, request.url) return (None, None) data = yield from request.read() except (asyncio.TimeoutError, aiohttp.ClientError): - _LOGGER.error("Timeout for yandex speech kit api.") + _LOGGER.error("Timeout for yandex speech kit API") return (None, None) return (self._codec, data) diff --git a/homeassistant/components/zwave/__init__.py b/homeassistant/components/zwave/__init__.py index dad7a55d14c..d6077763464 100755 --- a/homeassistant/components/zwave/__init__.py +++ b/homeassistant/components/zwave/__init__.py @@ -199,7 +199,7 @@ def get_config_value(node, value_index, tries=5): @asyncio.coroutine def async_setup_platform(hass, config, async_add_devices, discovery_info=None): - """Generic Z-Wave platform setup.""" + """Set up the Z-Wave platform (generic part).""" if discovery_info is None or ZWAVE_NETWORK not in hass.data: return False @@ -278,7 +278,7 @@ def setup(hass, config): discovered_values = [] def value_added(node, value): - """Called when a value is added to a node on the network.""" + """Handle new added value to a node on the network.""" # Check if this value should be tracked by an existing entity for values in discovered_values: values.check_value(value) @@ -298,18 +298,18 @@ def setup(hass, config): component = EntityComponent(_LOGGER, DOMAIN, hass) def node_added(node): - """Called when a node is added on the network.""" + """Handle a new node on the network.""" entity = ZWaveNodeEntity(node, network) node_config = device_config.get(entity.entity_id) if node_config.get(CONF_IGNORED): _LOGGER.info( - "Ignoring node entity %s due to device settings.", + "Ignoring node entity %s due to device settings", entity.entity_id) return component.add_entities([entity]) def scene_activated(node, scene_id): - """Called when a scene is activated on any node in the network.""" + """Handle an activated scene on any node in the network.""" hass.bus.fire(const.EVENT_SCENE_ACTIVATED, { ATTR_ENTITY_ID: _node_object_id(node), const.ATTR_OBJECT_ID: _node_object_id(node), @@ -317,23 +317,23 @@ def setup(hass, config): }) def node_event_activated(node, value): - """Called when a nodeevent is activated on any node in the network.""" + """Handle a nodeevent on any node in the network.""" hass.bus.fire(const.EVENT_NODE_EVENT, { const.ATTR_OBJECT_ID: _node_object_id(node), const.ATTR_BASIC_LEVEL: value }) def network_ready(): - """Called when all awake nodes have been queried.""" - _LOGGER.info("Zwave network is ready for use. All awake nodes" - " have been queried. Sleeping nodes will be" - " queried when they awake.") + """Handle the query of all awake nodes.""" + _LOGGER.info("Zwave network is ready for use. All awake nodes " + "have been queried. Sleeping nodes will be " + "queried when they awake.") hass.bus.fire(const.EVENT_NETWORK_READY) def network_complete(): - """Called when all nodes on network have been queried.""" - _LOGGER.info("Zwave network is complete. All nodes on the network" - " have been queried") + """Handle the querying of all nodes on network.""" + _LOGGER.info("Z-Wave network is complete. All nodes on the network " + "have been queried") hass.bus.fire(const.EVENT_NETWORK_COMPLETE) dispatcher.connect( @@ -351,42 +351,42 @@ def setup(hass, config): def add_node(service): """Switch into inclusion mode.""" - _LOGGER.info("Zwave add_node have been initialized.") + _LOGGER.info("Z-Wave add_node have been initialized") network.controller.add_node() def add_node_secure(service): """Switch into secure inclusion mode.""" - _LOGGER.info("Zwave add_node_secure have been initialized.") + _LOGGER.info("Z-Wave add_node_secure have been initialized") network.controller.add_node(True) def remove_node(service): """Switch into exclusion mode.""" - _LOGGER.info("Zwave remove_node have been initialized.") + _LOGGER.info("Z-Wwave remove_node have been initialized") network.controller.remove_node() def cancel_command(service): """Cancel a running controller command.""" - _LOGGER.info("Cancel running ZWave command.") + _LOGGER.info("Cancel running Z-Wave command") network.controller.cancel_command() def heal_network(service): """Heal the network.""" - _LOGGER.info("ZWave heal running.") + _LOGGER.info("Z-Wave heal running") network.heal() def soft_reset(service): """Soft reset the controller.""" - _LOGGER.info("Zwave soft_reset have been initialized.") + _LOGGER.info("Z-Wave soft_reset have been initialized") network.controller.soft_reset() def test_network(service): """Test the network by sending commands to all the nodes.""" - _LOGGER.info("Zwave test_network have been initialized.") + _LOGGER.info("Z-Wave test_network have been initialized") network.test() def stop_network(_service_or_event): """Stop Z-Wave network.""" - _LOGGER.info("Stopping ZWave network.") + _LOGGER.info("Stopping Z-Wave network") network.stop() if hass.state == CoreState.running: hass.bus.fire(const.EVENT_NETWORK_STOP) @@ -398,18 +398,18 @@ def setup(hass, config): name = service.data.get(const.ATTR_NAME) node.name = name _LOGGER.info( - "Renamed ZWave node %d to %s", node_id, name) + "Renamed Z-Wave node %d to %s", node_id, name) def remove_failed_node(service): """Remove failed node.""" node_id = service.data.get(const.ATTR_NODE_ID) - _LOGGER.info('Trying to remove zwave node %d', node_id) + _LOGGER.info("Trying to remove zwave node %d", node_id) network.controller.remove_failed_node(node_id) def replace_failed_node(service): """Replace failed node.""" node_id = service.data.get(const.ATTR_NODE_ID) - _LOGGER.info('Trying to replace zwave node %d', node_id) + _LOGGER.info("Trying to replace zwave node %d", node_id) network.controller.replace_failed_node(node_id) def set_config_parameter(service): @@ -424,21 +424,21 @@ def setup(hass, config): node.get_values(class_id=const.COMMAND_CLASS_CONFIGURATION) .values()): if value.index == param and value.type == const.TYPE_LIST: - _LOGGER.debug('Values for parameter %s: %s', param, + _LOGGER.debug("Values for parameter %s: %s", param, value.data_items) i = len(value.data_items) - 1 if i == 0: node.set_config_param(param, selection, size) else: if selection > i: - _LOGGER.info('Config parameter selection does not exist!' - ' Please check zwcfg_[home_id].xml in' - ' your homeassistant config directory. ' - ' Available selections are 0 to %s', i) + _LOGGER.info("Config parameter selection does not exist! " + "Please check zwcfg_[home_id].xml in " + "your homeassistant config directory. " + "Available selections are 0 to %s", i) return node.set_config_param(param, selection, size) - _LOGGER.info('Setting config parameter %s on Node %s ' - 'with selection %s and size=%s', param, node_id, + _LOGGER.info("Setting config parameter %s on Node %s " + "with selection %s and size=%s", param, node_id, selection, size) def print_config_parameter(service): @@ -446,7 +446,7 @@ def setup(hass, config): node_id = service.data.get(const.ATTR_NODE_ID) node = network.nodes[node_id] param = service.data.get(const.ATTR_CONFIG_PARAMETER) - _LOGGER.info("Config parameter %s on Node %s : %s", + _LOGGER.info("Config parameter %s on Node %s: %s", param, node_id, get_config_value(node, param)) def print_node(service): @@ -503,7 +503,7 @@ def setup(hass, config): def start_zwave(_service_or_event): """Startup Z-Wave network.""" - _LOGGER.info("Starting ZWave network.") + _LOGGER.info("Starting Z-Wave network...") network.start() hass.bus.fire(const.EVENT_NETWORK_START) @@ -515,7 +515,7 @@ def setup(hass, config): "network state: %d %s", hass.data[ZWAVE_NETWORK].state, network.state_str) if network.state >= network.STATE_AWAKED: - _LOGGER.info("zwave ready after %d seconds", i) + _LOGGER.info("Z-Wave ready after %d seconds", i) break time.sleep(1) else: @@ -532,7 +532,7 @@ def setup(hass, config): network.set_poll_interval(polling_interval, False) poll_interval = network.get_poll_interval() - _LOGGER.info("zwave polling interval set to %d ms", poll_interval) + _LOGGER.info("Z-Wave polling interval set to %d ms", poll_interval) hass.bus.listen_once(EVENT_HOMEASSISTANT_STOP, stop_network) @@ -611,7 +611,7 @@ def setup(hass, config): # Setup autoheal if autoheal: - _LOGGER.info("ZWave network autoheal is enabled.") + _LOGGER.info("Z-Wave network autoheal is enabled") track_time_change(hass, heal_network, hour=0, minute=0, second=0) hass.bus.listen_once(EVENT_HOMEASSISTANT_START, start_zwave) @@ -722,7 +722,7 @@ class ZWaveDeviceEntityValues(): if node_config.get(CONF_IGNORED): _LOGGER.info( - "Ignoring entity %s due to device settings.", name) + "Ignoring entity %s due to device settings", name) # No entity will be created for this value self._workaround_ignore = True return @@ -780,16 +780,16 @@ class ZWaveDeviceEntity(ZWaveBaseEntity): self.network_value_changed, ZWaveNetwork.SIGNAL_VALUE_CHANGED) def network_value_changed(self, value): - """Called when a value has changed on the network.""" + """Handle a value change on the network.""" if value.value_id in [v.value_id for v in self.values if v]: return self.value_changed() def value_added(self): - """Called when a new value is added to this entity.""" + """Handle a new value of this entity.""" pass def value_changed(self): - """Called when a value for this entity's node has changed.""" + """Handle a changed value for this entity's node.""" self._update_attributes() self.update_properties() self.maybe_schedule_update() @@ -813,7 +813,7 @@ class ZWaveDeviceEntity(ZWaveBaseEntity): self.power_consumption = None def update_properties(self): - """Callback on data changes for node values.""" + """Update on data changes for node values.""" pass @property diff --git a/homeassistant/components/zwave/node_entity.py b/homeassistant/components/zwave/node_entity.py index e43ee735ac7..19527e59792 100644 --- a/homeassistant/components/zwave/node_entity.py +++ b/homeassistant/components/zwave/node_entity.py @@ -96,7 +96,7 @@ class ZWaveNodeEntity(ZWaveBaseEntity): self.network_node_changed, ZWaveNetwork.SIGNAL_NOTIFICATION) def network_node_changed(self, node=None, args=None): - """Called when node has changed on the network.""" + """Handle a changed node on the network.""" if node and node.node_id != self.node_id: return if args is not None and 'nodeId' in args and \ @@ -106,8 +106,8 @@ class ZWaveNodeEntity(ZWaveBaseEntity): def get_node_statistics(self): """Retrieve statistics from the node.""" - return self._network.manager.getNodeStatistics(self._network.home_id, - self.node_id) + return self._network.manager.getNodeStatistics( + self._network.home_id, self.node_id) def node_changed(self): """Update node properties.""" diff --git a/homeassistant/core.py b/homeassistant/core.py index a0a80b9c8bd..8f6c7df1f21 100644 --- a/homeassistant/core.py +++ b/homeassistant/core.py @@ -350,7 +350,7 @@ class EventBus(object): @callback def async_listeners(self): - """Dictionary with events and the number of listeners. + """Return dictionary with events and the number of listeners. This method must be run in the event loop. """ @@ -359,7 +359,7 @@ class EventBus(object): @property def listeners(self): - """Dictionary with events and the number of listeners.""" + """Return dictionary with events and the number of listeners.""" return run_callback_threadsafe( self._hass.loop, self.async_listeners ).result() @@ -799,14 +799,14 @@ class ServiceRegistry(object): @property def services(self): - """Dictionary with per domain a list of available services.""" + """Return dictionary with per domain a list of available services.""" return run_callback_threadsafe( self._hass.loop, self.async_services, ).result() @callback def async_services(self): - """Dictionary with per domain a list of available services. + """Return dictionary with per domain a list of available services. This method must be run in the event loop. """ @@ -952,7 +952,7 @@ class ServiceRegistry(object): @callback def service_executed(event): - """Method that is called when service is executed.""" + """Handle an executed service.""" if event.data[ATTR_SERVICE_CALL_ID] == call_id: fut.set_result(True) @@ -970,7 +970,7 @@ class ServiceRegistry(object): @asyncio.coroutine def _event_to_service_call(self, event): - """Method for the SERVICE_CALLED events from the EventBus.""" + """Handle the SERVICE_CALLED events from the EventBus.""" service_data = event.data.get(ATTR_SERVICE_DATA) or {} domain = event.data.get(ATTR_DOMAIN).lower() service = event.data.get(ATTR_SERVICE).lower() diff --git a/homeassistant/helpers/template.py b/homeassistant/helpers/template.py index 7c2aeff71aa..dafa77da972 100644 --- a/homeassistant/helpers/template.py +++ b/homeassistant/helpers/template.py @@ -54,7 +54,7 @@ class Template(object): """Class to hold a template and manage caching and rendering.""" def __init__(self, template, hass=None): - """Instantiate a Template.""" + """Instantiate a template.""" if not isinstance(template, str): raise TypeError('Expected template to be a string') @@ -336,7 +336,7 @@ class LocationMethods(object): def forgiving_round(value, precision=0): - """Rounding filter that accepts strings.""" + """Round accepted strings.""" try: value = round(float(value), precision) return int(value) if precision == 0 else value diff --git a/tests/common.py b/tests/common.py index 0a2ea951c91..1585cb33e23 100644 --- a/tests/common.py +++ b/tests/common.py @@ -172,7 +172,7 @@ def mock_service(hass, domain, service): @asyncio.coroutine def mock_service_log(call): # pylint: disable=unnecessary-lambda - """Mocked service call.""" + """Mock service call.""" calls.append(call) if hass.loop.__dict__.get("_thread_ident", 0) == threading.get_ident(): From d68f59ca6c91072988faa0ab756719ce632c6a07 Mon Sep 17 00:00:00 2001 From: Anders Melchiorsen Date: Wed, 3 May 2017 00:05:11 +0200 Subject: [PATCH 128/169] Update LIFX default color for breathe/pulse effects (#7407) First, move the default away from turn_on so we do not have to test for the current service. Next, change the default color away from random. The new default is that saturated colors will flash white and desatured colors will flash to their fully satured color. Always with full brightness. After many experiments, this was the method that best produced results that are both visually pleasing and always noticeable as a flash. --- homeassistant/components/light/lifx/effects.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/homeassistant/components/light/lifx/effects.py b/homeassistant/components/light/lifx/effects.py index f4e598d9ce4..7904529bda3 100644 --- a/homeassistant/components/light/lifx/effects.py +++ b/homeassistant/components/light/lifx/effects.py @@ -131,13 +131,6 @@ def default_effect(light, **kwargs): data = { ATTR_ENTITY_ID: light.entity_id, } - if service in (SERVICE_EFFECT_BREATHE, SERVICE_EFFECT_PULSE): - data[ATTR_RGB_COLOR] = [ - random.randint(1, 127), - random.randint(1, 127), - random.randint(1, 127), - ] - data[ATTR_BRIGHTNESS] = 255 yield from light.hass.services.async_call(DOMAIN, service, data) @@ -237,7 +230,14 @@ class LIFXEffectBreathe(LIFXEffect): """Play a light effect on the bulb.""" period = kwargs[ATTR_PERIOD] cycles = kwargs[ATTR_CYCLES] - hsbk, _ = light.find_hsbk(**kwargs) + hsbk, color_changed = light.find_hsbk(**kwargs) + + # Default color is to fully (de)saturate with full brightness + if not color_changed: + if hsbk[1] > 65536/2: + hsbk = [hsbk[0], 0, 65535, 4000] + else: + hsbk = [hsbk[0], 65535, 65535, hsbk[3]] # Start the effect args = { From 1aa3ab52b7430d1b9695c9aa17d6ecec28211805 Mon Sep 17 00:00:00 2001 From: Anders Melchiorsen Date: Wed, 3 May 2017 00:41:43 +0200 Subject: [PATCH 129/169] LIFX: Add transition option to colorloop effect (#7410) This allows for more of a disco mode where lights change so fast that you actually notice it. Also change the valid period to the maximum 20 msgs/sec that LIFX bulbs can handle. --- homeassistant/components/light/lifx/effects.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/homeassistant/components/light/lifx/effects.py b/homeassistant/components/light/lifx/effects.py index 7904529bda3..07b97d03a12 100644 --- a/homeassistant/components/light/lifx/effects.py +++ b/homeassistant/components/light/lifx/effects.py @@ -7,7 +7,8 @@ from os import path import voluptuous as vol from homeassistant.components.light import ( - DOMAIN, ATTR_BRIGHTNESS, ATTR_COLOR_NAME, ATTR_RGB_COLOR, ATTR_EFFECT) + DOMAIN, ATTR_BRIGHTNESS, ATTR_COLOR_NAME, ATTR_RGB_COLOR, ATTR_EFFECT, + ATTR_TRANSITION) from homeassistant.config import load_yaml_config_file from homeassistant.const import (ATTR_ENTITY_ID) from homeassistant.helpers.service import extract_entity_ids @@ -51,11 +52,12 @@ LIFX_EFFECT_PULSE_SCHEMA = LIFX_EFFECT_BREATHE_SCHEMA LIFX_EFFECT_COLORLOOP_SCHEMA = LIFX_EFFECT_SCHEMA.extend({ ATTR_BRIGHTNESS: vol.All(vol.Coerce(int), vol.Clamp(min=0, max=255)), vol.Optional(ATTR_PERIOD, default=60): - vol.All(vol.Coerce(float), vol.Clamp(min=1)), + vol.All(vol.Coerce(float), vol.Clamp(min=0.05)), vol.Optional(ATTR_CHANGE, default=20): vol.All(vol.Coerce(float), vol.Clamp(min=0, max=360)), vol.Optional(ATTR_SPREAD, default=30): vol.All(vol.Coerce(float), vol.Clamp(min=0, max=360)), + ATTR_TRANSITION: vol.All(vol.Coerce(float), vol.Range(min=0)), }) LIFX_EFFECT_STOP_SCHEMA = vol.Schema({ @@ -295,9 +297,10 @@ class LIFXEffectColorloop(LIFXEffect): random.shuffle(self.lights) lhue = hue - transition = int(1000 * random.uniform(period/2, period)) for light in self.lights: - if spread > 0: + if ATTR_TRANSITION in kwargs: + transition = int(1000*kwargs[ATTR_TRANSITION]) + elif light == self.lights[0] or spread > 0: transition = int(1000 * random.uniform(period/2, period)) if ATTR_BRIGHTNESS in kwargs: From 8654993b1835a317480e305e29a31ca2c0f789a9 Mon Sep 17 00:00:00 2001 From: Gergely Imreh Date: Wed, 3 May 2017 01:02:13 +0100 Subject: [PATCH 130/169] light.sensehat: brightness control logic update (#7409) Do not reset brightness when brightness is not explicitly supplied. Based on conversation at: https://github.com/home-assistant/home-assistant/pull/7377#discussion_r114102005 --- homeassistant/components/light/sensehat.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/homeassistant/components/light/sensehat.py b/homeassistant/components/light/sensehat.py index 2cf9c4f9b31..6c5467f8c6d 100644 --- a/homeassistant/components/light/sensehat.py +++ b/homeassistant/components/light/sensehat.py @@ -91,7 +91,8 @@ class SenseHatLight(Light): def turn_on(self, **kwargs): """Instruct the light to turn on and set correct brightness & color.""" - self._brightness = kwargs.get(ATTR_BRIGHTNESS, 255) + if ATTR_BRIGHTNESS in kwargs: + self._brightness = kwargs[ATTR_BRIGHTNESS] percent_bright = (self._brightness / 255) if ATTR_RGB_COLOR in kwargs: From 11dc7246afd4ba6dd2c9505926f9286ae98800f9 Mon Sep 17 00:00:00 2001 From: Andrey Date: Wed, 3 May 2017 03:23:36 +0300 Subject: [PATCH 131/169] Add Sensibo climate platform (#7379) * Add Sensibo climate platform * Force update after running a service * Add sensibo to .coveragerc * Use 10s timeout * Fix schema. Remove print. * Better handle unit conversions. --- .coveragerc | 1 + homeassistant/components/climate/__init__.py | 10 + homeassistant/components/climate/sensibo.py | 257 +++++++++++++++++++ requirements_all.txt | 3 + 4 files changed, 271 insertions(+) create mode 100644 homeassistant/components/climate/sensibo.py diff --git a/.coveragerc b/.coveragerc index f9de6c87c43..479973187ea 100644 --- a/.coveragerc +++ b/.coveragerc @@ -189,6 +189,7 @@ omit = homeassistant/components/climate/oem.py homeassistant/components/climate/proliphix.py homeassistant/components/climate/radiotherm.py + homeassistant/components/climate/sensibo.py homeassistant/components/cover/garadget.py homeassistant/components/cover/homematic.py homeassistant/components/cover/myq.py diff --git a/homeassistant/components/climate/__init__.py b/homeassistant/components/climate/__init__.py index 10b5984500b..2e2dfbef8ca 100644 --- a/homeassistant/components/climate/__init__.py +++ b/homeassistant/components/climate/__init__.py @@ -49,6 +49,7 @@ ATTR_MAX_TEMP = 'max_temp' ATTR_MIN_TEMP = 'min_temp' ATTR_TARGET_TEMP_HIGH = 'target_temp_high' ATTR_TARGET_TEMP_LOW = 'target_temp_low' +ATTR_TARGET_TEMP_STEP = 'target_temp_step' ATTR_AWAY_MODE = 'away_mode' ATTR_AUX_HEAT = 'aux_heat' ATTR_FAN_MODE = 'fan_mode' @@ -419,6 +420,10 @@ class ClimateDevice(Entity): ATTR_TEMPERATURE: self._convert_for_display(self.target_temperature), } + + if self.target_temperature_step is not None: + data[ATTR_TARGET_TEMP_STEP] = self.target_temperature_step + target_temp_high = self.target_temperature_high if target_temp_high is not None: data[ATTR_TARGET_TEMP_HIGH] = self._convert_for_display( @@ -505,6 +510,11 @@ class ClimateDevice(Entity): """Return the temperature we try to reach.""" return None + @property + def target_temperature_step(self): + """Return the supported step of target temperature.""" + return None + @property def target_temperature_high(self): """Return the highbound target temperature we try to reach.""" diff --git a/homeassistant/components/climate/sensibo.py b/homeassistant/components/climate/sensibo.py new file mode 100644 index 00000000000..afb04fa3c91 --- /dev/null +++ b/homeassistant/components/climate/sensibo.py @@ -0,0 +1,257 @@ +""" +Support for Sensibo wifi-enabled home thermostats. + +For more details about this platform, please refer to the documentation at +https://home-assistant.io/components/climate.sensibo/ +""" + +import asyncio +import logging + +import aiohttp +import async_timeout +import voluptuous as vol + +from homeassistant.const import ( + ATTR_TEMPERATURE, CONF_API_KEY, CONF_ID, TEMP_CELSIUS, TEMP_FAHRENHEIT) +from homeassistant.components.climate import ( + ATTR_CURRENT_HUMIDITY, ClimateDevice, PLATFORM_SCHEMA) +from homeassistant.helpers import config_validation as cv +from homeassistant.helpers.aiohttp_client import async_get_clientsession +from homeassistant.util.temperature import convert as convert_temperature + +REQUIREMENTS = ['pysensibo==1.0.1'] + +_LOGGER = logging.getLogger(__name__) + +ALL = 'all' +TIMEOUT = 10 + +PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ + vol.Required(CONF_API_KEY): cv.string, + vol.Optional(CONF_ID, default=ALL): vol.All(cv.ensure_list, [cv.string]), +}) + +_FETCH_FIELDS = ','.join([ + 'room{name}', 'measurements', 'remoteCapabilities', + 'acState', 'connectionStatus{isAlive}']) +_INITIAL_FETCH_FIELDS = 'id,' + _FETCH_FIELDS + + +@asyncio.coroutine +def async_setup_platform(hass, config, async_add_devices, discovery_info=None): + """Set up Sensibo devices.""" + import pysensibo + + client = pysensibo.SensiboClient( + config[CONF_API_KEY], session=async_get_clientsession(hass), + timeout=TIMEOUT) + devices = [] + try: + for dev in ( + yield from client.async_get_devices(_INITIAL_FETCH_FIELDS)): + if config[CONF_ID] == ALL or dev['id'] in config[CONF_ID]: + devices.append(SensiboClimate(client, dev)) + except aiohttp.client_exceptions.ClientConnectorError: + _LOGGER.exception('Failed to connct to Sensibo servers.') + return False + + if devices: + async_add_devices(devices) + + +class SensiboClimate(ClimateDevice): + """Representation os a Sensibo device.""" + + def __init__(self, client, data): + """Build SensiboClimate. + + client: aiohttp session. + data: initially-fetched data. + """ + self._client = client + self._id = data['id'] + self._do_update(data) + + def _do_update(self, data): + self._name = data['room']['name'] + self._measurements = data['measurements'] + self._ac_states = data['acState'] + self._status = data['connectionStatus']['isAlive'] + capabilities = data['remoteCapabilities'] + self._operations = sorted(capabilities['modes'].keys()) + self._current_capabilities = capabilities[ + 'modes'][self.current_operation] + temperature_unit_key = self._ac_states['temperatureUnit'] + self._temperature_unit = \ + TEMP_CELSIUS if temperature_unit_key == 'C' else TEMP_FAHRENHEIT + self._temperatures_list = self._current_capabilities[ + 'temperatures'][temperature_unit_key]['values'] + + @property + def device_state_attributes(self): + """Return the state attributes.""" + return {ATTR_CURRENT_HUMIDITY: self.current_humidity} + + @property + def temperature_unit(self): + """Return the unit of measurement which this thermostat uses.""" + return self._temperature_unit + + @property + def available(self): + """Return True if entity is available.""" + return self._status + + @property + def target_temperature(self): + """Return the temperature we try to reach.""" + return self._ac_states['targetTemperature'] + + @property + def target_temperature_step(self): + """Return the supported step of target temperature.""" + if self.temperature_unit == self.unit_of_measurement: + # We are working in same units as the a/c unit. Use whole degrees + # like the API supports. + return 1 + else: + # Unit conversion is going on. No point to stick to specific steps. + return None + + @property + def current_operation(self): + """Return current operation ie. heat, cool, idle.""" + return self._ac_states['mode'] + + @property + def current_humidity(self): + """Return the current humidity.""" + return self._measurements['humidity'] + + @property + def current_temperature(self): + """Return the current temperature.""" + # This field is not affected by temperature_unit. + # It is always in C / nativeTemperatureUnit + if 'nativeTemperatureUnit' not in self._ac_states: + return self._measurements['temperature'] + return convert_temperature( + self._measurements['temperature'], + TEMP_CELSIUS, + self.temperature_unit) + + @property + def operation_list(self): + """List of available operation modes.""" + return self._operations + + @property + def current_fan_mode(self): + """Return the fan setting.""" + return self._ac_states['fanLevel'] + + @property + def fan_list(self): + """List of available fan modes.""" + return self._current_capabilities['fanLevels'] + + @property + def current_swing_mode(self): + """Return the fan setting.""" + return self._ac_states['swing'] + + @property + def swing_list(self): + """List of available swing modes.""" + return self._current_capabilities['swing'] + + @property + def name(self): + """Return the name of the entity.""" + return self._name + + @property + def is_aux_heat_on(self): + """Return true if AC is on.""" + return self._ac_states['on'] + + @property + def min_temp(self): + """Return the minimum temperature.""" + return self._temperatures_list[0] + + @property + def max_temp(self): + """Return the maximum temperature.""" + return self._temperatures_list[-1] + + @asyncio.coroutine + def async_set_temperature(self, **kwargs): + """Set new target temperature.""" + temperature = kwargs.get(ATTR_TEMPERATURE) + if temperature is None: + return + temperature = int(temperature) + if temperature not in self._temperatures_list: + # Requested temperature is not supported. + if temperature == self.target_temperature: + return + index = self._temperatures_list.index(self.target_temperature) + if temperature > self.target_temperature and index < len( + self._temperatures_list) - 1: + temperature = self._temperatures_list[index + 1] + elif temperature < self.target_temperature and index > 0: + temperature = self._temperatures_list[index - 1] + else: + return + + with async_timeout.timeout(TIMEOUT): + yield from self._client.async_set_ac_state_property( + self._id, 'targetTemperature', temperature) + + @asyncio.coroutine + def async_set_fan_mode(self, fan): + """Set new target fan mode.""" + with async_timeout.timeout(TIMEOUT): + yield from self._client.async_set_ac_state_property( + self._id, 'fanLevel', fan) + + @asyncio.coroutine + def async_set_operation_mode(self, operation_mode): + """Set new target operation mode.""" + with async_timeout.timeout(TIMEOUT): + yield from self._client.async_set_ac_state_property( + self._id, 'mode', operation_mode) + + @asyncio.coroutine + def async_set_swing_mode(self, swing_mode): + """Set new target swing operation.""" + with async_timeout.timeout(TIMEOUT): + yield from self._client.async_set_ac_state_property( + self._id, 'swing', swing_mode) + + @asyncio.coroutine + def async_turn_aux_heat_on(self): + """Turn Sensibo unit on.""" + with async_timeout.timeout(TIMEOUT): + yield from self._client.async_set_ac_state_property( + self._id, 'on', True) + + @asyncio.coroutine + def async_turn_aux_heat_off(self): + """Turn Sensibo unit on.""" + with async_timeout.timeout(TIMEOUT): + yield from self._client.async_set_ac_state_property( + self._id, 'on', False) + + @asyncio.coroutine + def async_update(self): + """Retrieve latest state.""" + try: + with async_timeout.timeout(TIMEOUT): + data = yield from self._client.async_get_device( + self._id, _FETCH_FIELDS) + self._do_update(data) + except aiohttp.client_exceptions.ClientError: + _LOGGER.warning('Failed to connect to Sensibo servers.') diff --git a/requirements_all.txt b/requirements_all.txt index 2af9ff81f51..fd35592fb63 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -610,6 +610,9 @@ pyowm==2.6.1 # homeassistant.components.qwikswitch pyqwikswitch==0.4 +# homeassistant.components.climate.sensibo +pysensibo==1.0.1 + # homeassistant.components.switch.acer_projector pyserial==3.1.1 From 517bd390153d0e3d60bb6cbcd21cdce8eeef8649 Mon Sep 17 00:00:00 2001 From: zeltom Date: Wed, 3 May 2017 05:48:49 +0200 Subject: [PATCH 132/169] Pilight binary sensor components (#6774) * Add files via upload Pilight binary sensor components. * Pep8 fixed * Remove unused imports * Remove STATE_UNKNOWN import * Grouping import * New import grouping * Update pilight.py * Update pilight.py * Update pilight.py * Prevent multiple timer call * Update .coveragerc * Fix alphabet ordre * Fix & clean code (change payload comparaison, delete state function) * Fix payload comparison and remove state methode * Fix unused import, whitespaces * Fix ident error --- .coveragerc | 1 + .../components/binary_sensor/pilight.py | 186 ++++++++++++++++++ 2 files changed, 187 insertions(+) create mode 100644 homeassistant/components/binary_sensor/pilight.py diff --git a/.coveragerc b/.coveragerc index 479973187ea..f4ce71326b6 100644 --- a/.coveragerc +++ b/.coveragerc @@ -172,6 +172,7 @@ omit = homeassistant/components/binary_sensor/flic.py homeassistant/components/binary_sensor/hikvision.py homeassistant/components/binary_sensor/iss.py + homeassistant/components/binary_sensor/pilight.py homeassistant/components/binary_sensor/ping.py homeassistant/components/binary_sensor/rest.py homeassistant/components/browser.py diff --git a/homeassistant/components/binary_sensor/pilight.py b/homeassistant/components/binary_sensor/pilight.py new file mode 100644 index 00000000000..d0774ae12e6 --- /dev/null +++ b/homeassistant/components/binary_sensor/pilight.py @@ -0,0 +1,186 @@ +""" +Support for Pilight binary sensors. + +For more details about this platform, please refer to the documentation at +https://home-assistant.io/components/binary_sensor.pilight/ +""" +import datetime +import logging + +import voluptuous as vol +from homeassistant.components import pilight +from homeassistant.components.binary_sensor import ( + PLATFORM_SCHEMA, + BinarySensorDevice, +) +from homeassistant.const import ( + CONF_DISARM_AFTER_TRIGGER, + CONF_NAME, + CONF_PAYLOAD, + CONF_PAYLOAD_OFF, + CONF_PAYLOAD_ON +) +from homeassistant.helpers import config_validation as cv +from homeassistant.helpers.event import track_point_in_time +from homeassistant.util import dt as dt_util + + +_LOGGER = logging.getLogger(__name__) + +CONF_VARIABLE = 'variable' + +DEFAULT_NAME = 'Pilight Binary Sensor' +DEPENDENCIES = ['pilight'] + +PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ + vol.Required(CONF_VARIABLE): cv.string, + vol.Required(CONF_PAYLOAD): vol.Schema(dict), + vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string, + vol.Optional(CONF_PAYLOAD_ON, default='on'): cv.string, + vol.Optional(CONF_PAYLOAD_OFF, default='off'): cv.string, + vol.Optional(CONF_DISARM_AFTER_TRIGGER, default=False): cv.boolean +}) + + +# pylint: disable=unused-argument +def setup_platform(hass, config, add_devices, discovery_info=None): + """Set up Pilight Binary Sensor.""" + disarm = config.get(CONF_DISARM_AFTER_TRIGGER) + if disarm: + add_devices([PilightTriggerSensor( + hass=hass, + name=config.get(CONF_NAME), + variable=config.get(CONF_VARIABLE), + payload=config.get(CONF_PAYLOAD), + on_value=config.get(CONF_PAYLOAD_ON), + off_value=config.get(CONF_PAYLOAD_OFF), + )]) + else: + add_devices([PilightBinarySensor( + hass=hass, + name=config.get(CONF_NAME), + variable=config.get(CONF_VARIABLE), + payload=config.get(CONF_PAYLOAD), + on_value=config.get(CONF_PAYLOAD_ON), + off_value=config.get(CONF_PAYLOAD_OFF), + )]) + + +class PilightBinarySensor(BinarySensorDevice): + """Representation of a binary sensor that can be updated using Pilight.""" + + def __init__(self, hass, name, variable, payload, on_value, off_value): + """Initialize the sensor.""" + self._state = False + self._hass = hass + self._name = name + self._variable = variable + self._payload = payload + self._on_value = on_value + self._off_value = off_value + + hass.bus.listen(pilight.EVENT, self._handle_code) + + @property + def name(self): + """Return the name of the sensor.""" + return self._name + + @property + def is_on(self): + """Return True if the binary sensor is on.""" + return self._state + + def _handle_code(self, call): + """Handle received code by the pilight-daemon. + + If the code matches the defined playload + of this sensor the sensor state is changed accordingly. + """ + # Check if received code matches defined playoad + # True if payload is contained in received code dict + payload_ok = True + for key in self._payload: + if key not in call.data: + payload_ok = False + continue + if self._payload[key] != call.data[key]: + payload_ok = False + # Read out variable if payload ok + if payload_ok: + if self._variable not in call.data: + return + value = call.data[self._variable] + self._state = (value == self._on_value) + self.schedule_update_ha_state() + + +class PilightTriggerSensor(BinarySensorDevice): + """Representation of a binary sensor that can be updated using Pilight.""" + + def __init__( + self, + hass, + name, + variable, + payload, + on_value, + off_value, + rst_dly_sec=30): + """Initialize the sensor.""" + self._state = False + self._hass = hass + self._name = name + self._variable = variable + self._payload = payload + self._on_value = on_value + self._off_value = off_value + self._reset_delay_sec = rst_dly_sec + self._delay_after = None + self._hass = hass + + hass.bus.listen(pilight.EVENT, self._handle_code) + + @property + def name(self): + """Return the name of the sensor.""" + return self._name + + @property + def is_on(self): + """Return True if the binary sensor is on.""" + return self._state + + def _reset_state(self, call): + self._state = False + self._delay_after = None + self.schedule_update_ha_state() + + def _handle_code(self, call): + """Handle received code by the pilight-daemon. + + If the code matches the defined playload + of this sensor the sensor state is changed accordingly. + """ + # Check if received code matches defined playoad + # True if payload is contained in received code dict + payload_ok = True + for key in self._payload: + if key not in call.data: + payload_ok = False + continue + if self._payload[key] != call.data[key]: + payload_ok = False + # Read out variable if payload ok + if payload_ok: + if self._variable not in call.data: + return + value = call.data[self._variable] + self._state = (value == self._on_value) + if self._delay_after is None: + self._delay_after = dt_util.utcnow() + datetime.timedelta( + seconds=self._reset_delay_sec) + track_point_in_time( + self._hass, self._reset_state, + self._delay_after) + self.schedule_update_ha_state() From f9627a5646871104901f6f593081215de0fee115 Mon Sep 17 00:00:00 2001 From: wokar Date: Wed, 3 May 2017 06:04:00 +0200 Subject: [PATCH 133/169] applx suggested fix from issue #6573 (#7390) --- homeassistant/components/sensor/zamg.py | 1 + 1 file changed, 1 insertion(+) diff --git a/homeassistant/components/sensor/zamg.py b/homeassistant/components/sensor/zamg.py index ef4ebe373e7..1391572ce52 100644 --- a/homeassistant/components/sensor/zamg.py +++ b/homeassistant/components/sensor/zamg.py @@ -157,6 +157,7 @@ class ZamgData(object): response = requests.get( cls.API_URL, headers=cls.API_HEADERS, timeout=15) response.raise_for_status() + response.encoding = 'UTF8' return csv.DictReader(response.text.splitlines(), delimiter=';', quotechar='"') except Exception: # pylint:disable=broad-except From f389266f5f2dd58fc1c67f78275f770012c26f4a Mon Sep 17 00:00:00 2001 From: Henrik Nicolaisen Date: Wed, 3 May 2017 06:19:16 +0200 Subject: [PATCH 134/169] remove charset if set in content type header (#7411) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * remove charset if set in content type header like this “Content-Type: image/jpeg;charset=UTF-8” * fixed lint error --- homeassistant/components/media_player/__init__.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/homeassistant/components/media_player/__init__.py b/homeassistant/components/media_player/__init__.py index be7fce16821..a633a58912b 100644 --- a/homeassistant/components/media_player/__init__.py +++ b/homeassistant/components/media_player/__init__.py @@ -916,7 +916,8 @@ def _async_fetch_image(hass, url): if response.status == 200: content = yield from response.read() - content_type = response.headers.get(CONTENT_TYPE_HEADER) + content_type = response.headers.get(CONTENT_TYPE_HEADER)\ + .split(';')[0] except asyncio.TimeoutError: pass From c35d09d5f07eaf6ea158b2582a88df5973fb1dd7 Mon Sep 17 00:00:00 2001 From: Adam Mills Date: Wed, 3 May 2017 00:21:17 -0400 Subject: [PATCH 135/169] Convert automatic device tracker to push updates (#7404) * Convert automatic device tracker to push updates * Update test * Add to coveragerc * Fire hass events when automatic update received * Change brace indentation --- .coveragerc | 1 + .../components/device_tracker/automatic.py | 184 ++++++++++++++---- requirements_all.txt | 2 +- .../device_tracker/test_automatic.py | 1 + 4 files changed, 153 insertions(+), 35 deletions(-) diff --git a/.coveragerc b/.coveragerc index f4ce71326b6..ed969e54511 100644 --- a/.coveragerc +++ b/.coveragerc @@ -201,6 +201,7 @@ omit = homeassistant/components/device_tracker/actiontec.py homeassistant/components/device_tracker/aruba.py homeassistant/components/device_tracker/asuswrt.py + homeassistant/components/device_tracker/automatic.py homeassistant/components/device_tracker/bbox.py homeassistant/components/device_tracker/bluetooth_le_tracker.py homeassistant/components/device_tracker/bluetooth_tracker.py diff --git a/homeassistant/components/device_tracker/automatic.py b/homeassistant/components/device_tracker/automatic.py index 7fb665a7cc3..56dccd75d6d 100644 --- a/homeassistant/components/device_tracker/automatic.py +++ b/homeassistant/components/device_tracker/automatic.py @@ -11,13 +11,17 @@ import logging import voluptuous as vol from homeassistant.components.device_tracker import ( - PLATFORM_SCHEMA, ATTR_ATTRIBUTES) -from homeassistant.const import CONF_USERNAME, CONF_PASSWORD + PLATFORM_SCHEMA, ATTR_ATTRIBUTES, ATTR_DEV_ID, ATTR_HOST_NAME, ATTR_MAC, + ATTR_GPS, ATTR_GPS_ACCURACY) +from homeassistant.const import ( + CONF_USERNAME, CONF_PASSWORD, EVENT_HOMEASSISTANT_STOP, + EVENT_HOMEASSISTANT_START) +from homeassistant.core import callback from homeassistant.helpers.aiohttp_client import async_get_clientsession import homeassistant.helpers.config_validation as cv from homeassistant.helpers.event import async_track_time_interval -REQUIREMENTS = ['aioautomatic==0.2.1'] +REQUIREMENTS = ['aioautomatic==0.3.1'] _LOGGER = logging.getLogger(__name__) @@ -29,6 +33,10 @@ DEFAULT_TIMEOUT = 5 SCOPE = ['location', 'vehicle:profile', 'trip'] +ATTR_FUEL_LEVEL = 'fuel_level' + +EVENT_AUTOMATIC_UPDATE = 'automatic_update' + PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ vol.Required(CONF_CLIENT_ID): cv.string, vol.Required(CONF_SECRET): cv.string, @@ -52,64 +60,172 @@ def async_setup_scanner(hass, config, async_see, discovery_info=None): try: session = yield from client.create_session_from_password( SCOPE, config[CONF_USERNAME], config[CONF_PASSWORD]) - data = AutomaticData(hass, session, config[CONF_DEVICES], async_see) + data = AutomaticData( + hass, client, session, config[CONF_DEVICES], async_see) + + # Load the initial vehicle data + vehicles = yield from session.get_vehicles() + for vehicle in vehicles: + hass.async_add_job(data.load_vehicle(vehicle)) except aioautomatic.exceptions.AutomaticError as err: _LOGGER.error(str(err)) return False - yield from data.update() + @callback + def ws_connect(event): + """Open the websocket connection.""" + hass.async_add_job(data.ws_connect()) + + @callback + def ws_close(event): + """Close the websocket connection.""" + hass.async_add_job(data.ws_close()) + + hass.bus.async_listen_once(EVENT_HOMEASSISTANT_START, ws_connect) + hass.bus.async_listen_once(EVENT_HOMEASSISTANT_STOP, ws_close) + return True class AutomaticData(object): """A class representing an Automatic cloud service connection.""" - def __init__(self, hass, session, devices, async_see): + def __init__(self, hass, client, session, devices, async_see): """Initialize the automatic device scanner.""" self.hass = hass self.devices = devices + self.vehicle_info = {} + self.client = client self.session = session self.async_see = async_see + self.ws_reconnect_handle = None + self.ws_close_requested = False - async_track_time_interval(hass, self.update, timedelta(seconds=30)) + self.client.on_app_event( + lambda name, event: self.hass.async_add_job( + self.handle_event(name, event))) @asyncio.coroutine - def update(self, now=None): - """Update the device info.""" + def handle_event(self, name, event): + """Coroutine to update state for a realtime event.""" import aioautomatic - _LOGGER.debug('Updating devices %s', now) + # Fire a hass event + self.hass.bus.async_fire(EVENT_AUTOMATIC_UPDATE, event.data) + + if event.vehicle.id not in self.vehicle_info: + # If vehicle hasn't been seen yet, request the detailed + # info for this vehicle. + _LOGGER.info("New vehicle found.") + try: + vehicle = yield from event.get_vehicle() + except aioautomatic.exceptions.AutomaticError as err: + _LOGGER.error(str(err)) + return + yield from self.get_vehicle_info(vehicle) + + kwargs = self.vehicle_info[event.vehicle.id] + if kwargs is None: + # Ignored device + return + + # If this is a vehicle status report, update the fuel level + if name == "vehicle:status_report": + fuel_level = event.vehicle.fuel_level_percent + if fuel_level is not None: + kwargs[ATTR_ATTRIBUTES][ATTR_FUEL_LEVEL] = fuel_level + + # Send the device seen notification + if event.location is not None: + kwargs[ATTR_GPS] = (event.location.lat, event.location.lon) + kwargs[ATTR_GPS_ACCURACY] = event.location.accuracy_m + + yield from self.async_see(**kwargs) + + @asyncio.coroutine + def ws_connect(self, now=None): + """Open the websocket connection.""" + import aioautomatic + self.ws_close_requested = False + + if self.ws_reconnect_handle is not None: + _LOGGER.debug("Retrying websocket connection.") + try: + ws_loop_future = yield from self.client.ws_connect() + except aioautomatic.exceptions.UnauthorizedClientError: + _LOGGER.error("Client unauthorized for websocket connection. " + "Ensure Websocket is selected in the Automatic " + "developer application event delivery preferences.") + return + except aioautomatic.exceptions.AutomaticError as err: + if self.ws_reconnect_handle is None: + # Show log error and retry connection every 5 minutes + _LOGGER.error("Error opening websocket connection: %s", err) + self.ws_reconnect_handle = async_track_time_interval( + self.hass, self.ws_connect, timedelta(minutes=5)) + return + + if self.ws_reconnect_handle is not None: + self.ws_reconnect_handle() + self.ws_reconnect_handle = None + + _LOGGER.info("Websocket connected.") try: - vehicles = yield from self.session.get_vehicles() + yield from ws_loop_future except aioautomatic.exceptions.AutomaticError as err: _LOGGER.error(str(err)) - return False - for vehicle in vehicles: - name = vehicle.display_name - if name is None: - name = ' '.join(filter(None, ( - str(vehicle.year), vehicle.make, vehicle.model))) + _LOGGER.info("Websocket closed.") - if self.devices is not None and name not in self.devices: - continue - - self.hass.async_add_job(self.update_vehicle(vehicle, name)) + # If websocket was close was not requested, attempt to reconnect + if not self.ws_close_requested: + self.hass.loop.create_task(self.ws_connect()) @asyncio.coroutine - def update_vehicle(self, vehicle, name): - """Update the specified vehicle's data.""" + def ws_close(self): + """Close the websocket connection.""" + self.ws_close_requested = True + if self.ws_reconnect_handle is not None: + self.ws_reconnect_handle() + self.ws_reconnect_handle = None + + yield from self.client.ws_close() + + @asyncio.coroutine + def load_vehicle(self, vehicle): + """Load the vehicle's initial state and update hass.""" + kwargs = yield from self.get_vehicle_info(vehicle) + yield from self.async_see(**kwargs) + + @asyncio.coroutine + def get_vehicle_info(self, vehicle): + """Fetch the latest vehicle info from automatic.""" import aioautomatic - kwargs = { - 'dev_id': vehicle.id, - 'host_name': name, - 'mac': vehicle.id, - ATTR_ATTRIBUTES: { - 'fuel_level': vehicle.fuel_level_percent, + name = vehicle.display_name + if name is None: + name = ' '.join(filter(None, ( + str(vehicle.year), vehicle.make, vehicle.model))) + + if self.devices is not None and name not in self.devices: + self.vehicle_info[vehicle.id] = None + return + else: + self.vehicle_info[vehicle.id] = kwargs = { + ATTR_DEV_ID: vehicle.id, + ATTR_HOST_NAME: name, + ATTR_MAC: vehicle.id, + ATTR_ATTRIBUTES: { + ATTR_FUEL_LEVEL: vehicle.fuel_level_percent, } - } + } + + if vehicle.latest_location is not None: + location = vehicle.latest_location + kwargs[ATTR_GPS] = (location.lat, location.lon) + kwargs[ATTR_GPS_ACCURACY] = location.accuracy_m + return kwargs trips = [] try: @@ -120,8 +236,8 @@ class AutomaticData(object): _LOGGER.error(str(err)) if trips: - end_location = trips[0].end_location - kwargs['gps'] = (end_location.lat, end_location.lon) - kwargs['gps_accuracy'] = end_location.accuracy_m + location = trips[0].end_location + kwargs[ATTR_GPS] = (location.lat, location.lon) + kwargs[ATTR_GPS_ACCURACY] = location.accuracy_m - yield from self.async_see(**kwargs) + return kwargs diff --git a/requirements_all.txt b/requirements_all.txt index fd35592fb63..64f6500638e 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -38,7 +38,7 @@ SoCo==0.12 TwitterAPI==2.4.5 # homeassistant.components.device_tracker.automatic -aioautomatic==0.2.1 +aioautomatic==0.3.1 # homeassistant.components.sensor.dnsip aiodns==1.1.1 diff --git a/tests/components/device_tracker/test_automatic.py b/tests/components/device_tracker/test_automatic.py index dd03fd1da57..f823f3c3262 100644 --- a/tests/components/device_tracker/test_automatic.py +++ b/tests/components/device_tracker/test_automatic.py @@ -44,6 +44,7 @@ def test_valid_credentials(mock_create_session, hass): vehicle.id = 'mock_id' vehicle.display_name = 'mock_display_name' vehicle.fuel_level_percent = 45.6 + vehicle.latest_location = None trip.end_location.lat = 45.567 trip.end_location.lon = 34.345 From 70ad06d71c4826b00b54b23090238477a354e776 Mon Sep 17 00:00:00 2001 From: Gergely Imreh Date: Wed, 3 May 2017 05:21:37 +0100 Subject: [PATCH 136/169] light.piglow update (#7408) * light.piglow: brightness control logic update Do not reset brightness when brightness is not explicitly supplied. Based on conversation at: https://github.com/home-assistant/home-assistant/pull/7377#discussion_r114102005 * light.piglow: add assumed state --- homeassistant/components/light/piglow.py | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/homeassistant/components/light/piglow.py b/homeassistant/components/light/piglow.py index d08776551f8..40798810c0e 100644 --- a/homeassistant/components/light/piglow.py +++ b/homeassistant/components/light/piglow.py @@ -72,6 +72,16 @@ class PiglowLight(Light): """Flag supported features.""" return SUPPORT_PIGLOW + @property + def should_poll(self): + """Return if we should poll this device.""" + return False + + @property + def assumed_state(self) -> bool: + """Return True if unable to access real state of the entity.""" + return True + @property def is_on(self): """Return true if light is on.""" @@ -80,7 +90,9 @@ class PiglowLight(Light): def turn_on(self, **kwargs): """Instruct the light to turn on.""" self._piglow.clear() - self._brightness = kwargs.get(ATTR_BRIGHTNESS, 255) + + if ATTR_BRIGHTNESS in kwargs: + self._brightness = kwargs[ATTR_BRIGHTNESS] percent_bright = (self._brightness / 255) if ATTR_RGB_COLOR in kwargs: @@ -92,9 +104,11 @@ class PiglowLight(Light): self._piglow.all(self._brightness) self._piglow.show() self._is_on = True + self.schedule_update_ha_state() def turn_off(self, **kwargs): """Instruct the light to turn off.""" self._piglow.clear() self._piglow.show() self._is_on = False + self.schedule_update_ha_state() From b321e0ef80b2e7ae29fcec6580d662a98d4457e3 Mon Sep 17 00:00:00 2001 From: Teagan Glenn Date: Tue, 2 May 2017 22:55:51 -0600 Subject: [PATCH 137/169] Opencv (#7261) * OpenCV * Fix * Type-o * Remove unused opencv camera component discovery. --- .coveragerc | 3 + .../components/image_processing/opencv.py | 120 ++++++++++++ homeassistant/components/opencv.py | 182 ++++++++++++++++++ requirements_all.txt | 9 + 4 files changed, 314 insertions(+) create mode 100644 homeassistant/components/image_processing/opencv.py create mode 100644 homeassistant/components/opencv.py diff --git a/.coveragerc b/.coveragerc index ed969e54511..279dc114a21 100644 --- a/.coveragerc +++ b/.coveragerc @@ -77,6 +77,9 @@ omit = homeassistant/components/octoprint.py homeassistant/components/*/octoprint.py + homeassistant/components/opencv.py + homeassistant/components/*/opencv.py + homeassistant/components/qwikswitch.py homeassistant/components/*/qwikswitch.py diff --git a/homeassistant/components/image_processing/opencv.py b/homeassistant/components/image_processing/opencv.py new file mode 100644 index 00000000000..e48c14aeea5 --- /dev/null +++ b/homeassistant/components/image_processing/opencv.py @@ -0,0 +1,120 @@ +""" +Component that performs OpenCV classification on images. + +For more details about this component, please refer to the documentation at +https://home-assistant.io/components/image_processing.opencv/ +""" +from datetime import timedelta +import logging + +from homeassistant.core import split_entity_id +from homeassistant.components.image_processing import ( + ImageProcessingEntity, + PLATFORM_SCHEMA, +) +from homeassistant.components.opencv import ( + ATTR_MATCHES, + CLASSIFIER_GROUP_CONFIG, + CONF_CLASSIFIER, + CONF_ENTITY_ID, + CONF_NAME, + process_image, +) + +DEPENDENCIES = ['opencv'] + +_LOGGER = logging.getLogger(__name__) + +DEFAULT_TIMEOUT = 10 + +SCAN_INTERVAL = timedelta(seconds=2) + +PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend(CLASSIFIER_GROUP_CONFIG) + + +def _create_processor_from_config(hass, camera_entity, config): + """Create an OpenCV processor from configurtaion.""" + classifier_config = config[CONF_CLASSIFIER] + name = '{} {}'.format( + config[CONF_NAME], + split_entity_id(camera_entity)[1].replace('_', ' ')) + + processor = OpenCVImageProcessor( + hass, + camera_entity, + name, + classifier_config, + ) + + return processor + + +def setup_platform(hass, config, add_devices, discovery_info=None): + """Set up the OpenCV image processing platform.""" + if discovery_info is None: + return + + devices = [] + for camera_entity in discovery_info[CONF_ENTITY_ID]: + devices.append( + _create_processor_from_config( + hass, + camera_entity, + discovery_info)) + + add_devices(devices) + + +class OpenCVImageProcessor(ImageProcessingEntity): + """Representation of an OpenCV image processor.""" + + def __init__(self, hass, camera_entity, name, classifier_configs): + """Initialize the OpenCV entity.""" + self.hass = hass + self._camera_entity = camera_entity + self._name = name + self._classifier_configs = classifier_configs + self._matches = {} + self._last_image = None + + @property + def last_image(self): + """Return the last image.""" + return self._last_image + + @property + def matches(self): + """Return the matches it found.""" + return self._matches + + @property + def camera_entity(self): + """Return camera entity id from process pictures.""" + return self._camera_entity + + @property + def name(self): + """Return the name of the image processor.""" + return self._name + + @property + def state(self): + """Return the state of the entity.""" + total_matches = 0 + for group in self._matches.values(): + total_matches += len(group) + return total_matches + + @property + def state_attributes(self): + """Return device specific state attributes.""" + return { + ATTR_MATCHES: self._matches + } + + def process_image(self, image): + """Process the image.""" + self._last_image = image + self._matches = process_image(image, + self._classifier_configs, + False) diff --git a/homeassistant/components/opencv.py b/homeassistant/components/opencv.py new file mode 100644 index 00000000000..9f53f0841a1 --- /dev/null +++ b/homeassistant/components/opencv.py @@ -0,0 +1,182 @@ +""" +Support for OpenCV image/video processing. + +For more details about this component, please refer to the documentation at +https://home-assistant.io/components/opencv/ +""" +import asyncio +import logging +import os +import voluptuous as vol + +from homeassistant.const import ( + CONF_NAME, + CONF_ENTITY_ID, + CONF_FILE_PATH +) +from homeassistant.helpers import ( + discovery, + config_validation as cv, +) + +REQUIREMENTS = ['opencv-python==3.2.0.6', 'numpy==1.12.0', 'urllib3==1.21'] + +_LOGGER = logging.getLogger(__name__) + +ATTR_MATCHES = 'matches' + +BASE_PATH = os.path.realpath(__file__) + +CASCADE_URL = \ + 'https://raw.githubusercontent.com/opencv/opencv/master/data/' +\ + 'lbpcascades/lbpcascade_frontalface.xml' + +CONF_CLASSIFIER = 'classifier' +CONF_COLOR = 'color' +CONF_GROUPS = 'classifier_group' +CONF_MIN_SIZE = 'min_size' +CONF_NEIGHBORS = 'neighbors' +CONF_SCALE = 'scale' + +DATA_CLASSIFIER_GROUPS = 'classifier_groups' + +DEFAULT_COLOR = (255, 255, 0) +DEFAULT_CLASSIFIER_PATH = os.path.join( + os.path.dirname(BASE_PATH), + 'lbp_frontalface.xml') +DEFAULT_NAME = 'OpenCV' +DEFAULT_MIN_SIZE = (30, 30) +DEFAULT_NEIGHBORS = 4 +DEFAULT_SCALE = 1.1 + +DOMAIN = 'opencv' + +CLASSIFIER_GROUP_CONFIG = { + vol.Required(CONF_CLASSIFIER): vol.All( + cv.ensure_list, + [vol.Schema({ + vol.Optional(CONF_COLOR, default=DEFAULT_COLOR): + vol.Schema((int, int, int)), + vol.Optional(CONF_FILE_PATH, default=DEFAULT_CLASSIFIER_PATH): + cv.isfile, + vol.Optional(CONF_NAME, default=DEFAULT_NAME): + cv.string, + vol.Optional(CONF_MIN_SIZE, default=DEFAULT_MIN_SIZE): + vol.Schema((int, int)), + vol.Optional(CONF_NEIGHBORS, default=DEFAULT_NEIGHBORS): + cv.positive_int, + vol.Optional(CONF_SCALE, default=DEFAULT_SCALE): + float + })]), + vol.Required(CONF_ENTITY_ID): cv.entity_ids, + vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string, +} +CLASSIFIER_GROUP_SCHEMA = vol.Schema(CLASSIFIER_GROUP_CONFIG) + +CONFIG_SCHEMA = vol.Schema({ + DOMAIN: vol.Schema({ + vol.Required(CONF_GROUPS): vol.All( + cv.ensure_list, + [CLASSIFIER_GROUP_SCHEMA] + ), + }) +}, extra=vol.ALLOW_EXTRA) + + +# NOTE: +# pylint cannot find any of the members of cv2, using disable=no-member +# to pass linting + + +def cv_image_to_bytes(cv_image): + """Convert OpenCV image to bytes.""" + import cv2 + + # pylint: disable=no-member + encode_param = [int(cv2.IMWRITE_JPEG_QUALITY), 90] + # pylint: disable=no-member + success, data = cv2.imencode('.jpg', cv_image, encode_param) + + if success: + return data.tobytes() + + return None + + +def cv_image_from_bytes(image): + """Convert image bytes to OpenCV image.""" + import cv2 + import numpy + + # pylint: disable=no-member + return cv2.imdecode(numpy.asarray(bytearray(image)), cv2.IMREAD_UNCHANGED) + + +def process_image(image, classifier_group, is_camera): + """Process the image given a classifier group.""" + import cv2 + import numpy + + # pylint: disable=no-member + cv_image = cv2.imdecode(numpy.asarray(bytearray(image)), + cv2.IMREAD_UNCHANGED) + group_matches = {} + for classifier_config in classifier_group: + classifier_path = classifier_config[CONF_FILE_PATH] + classifier_name = classifier_config[CONF_NAME] + color = classifier_config[CONF_COLOR] + scale = classifier_config[CONF_SCALE] + neighbors = classifier_config[CONF_NEIGHBORS] + min_size = classifier_config[CONF_MIN_SIZE] + + # pylint: disable=no-member + classifier = cv2.CascadeClassifier(classifier_path) + + detections = classifier.detectMultiScale(cv_image, + scaleFactor=scale, + minNeighbors=neighbors, + minSize=min_size) + regions = [] + # pylint: disable=invalid-name + for (x, y, w, h) in detections: + if is_camera: + # pylint: disable=no-member + cv2.rectangle(cv_image, + (x, y), + (x + w, y + h), + color, + 2) + else: + regions.append((int(x), int(y), int(w), int(h))) + group_matches[classifier_name] = regions + + if is_camera: + return cv_image_to_bytes(cv_image) + else: + return group_matches + + +@asyncio.coroutine +def async_setup(hass, config): + """Set up the OpenCV platform entities.""" + _LOGGER.info('Async setup for opencv') + if not os.path.isfile(DEFAULT_CLASSIFIER_PATH): + _LOGGER.info('Downloading default classifier') + import urllib3 + + http = urllib3.PoolManager() + request = http.request('GET', CASCADE_URL, preload_content=False) + + with open(DEFAULT_CLASSIFIER_PATH, 'wb') as out: + while True: + data = request.read(1028) + if not data: + break + out.write(data) + + request.release_conn() + + for group in config[DOMAIN][CONF_GROUPS]: + discovery.load_platform(hass, 'image_processing', DOMAIN, group) + + return True diff --git a/requirements_all.txt b/requirements_all.txt index 64f6500638e..2208fde8f18 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -408,12 +408,18 @@ netdisco==1.0.0rc3 # homeassistant.components.sensor.neurio_energy neurio==0.3.1 +# homeassistant.components.opencv +numpy==1.12.0 + # homeassistant.components.google oauth2client==4.0.0 # homeassistant.components.climate.oem oemthermostat==1.1 +# homeassistant.components.opencv +opencv-python==3.2.0.6 + # homeassistant.components.sensor.openevse openevsewifi==0.4 @@ -802,6 +808,9 @@ uber_rides==0.4.1 # homeassistant.components.sensor.ups upsmychoice==1.0.2 +# homeassistant.components.opencv +urllib3==1.21 + # homeassistant.components.camera.uvc uvcclient==0.10.0 From 1a74c41056927c1c2e7ec07666a7e7b81efe66cc Mon Sep 17 00:00:00 2001 From: Luar Roji Date: Wed, 3 May 2017 03:32:19 -0300 Subject: [PATCH 138/169] Fixed extra R in variable name. (#7418) --- homeassistant/components/switch/__init__.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/switch/__init__.py b/homeassistant/components/switch/__init__.py index e792f384e1c..786319f4200 100644 --- a/homeassistant/components/switch/__init__.py +++ b/homeassistant/components/switch/__init__.py @@ -31,12 +31,12 @@ ENTITY_ID_ALL_SWITCHES = group.ENTITY_ID_FORMAT.format('all_switches') ENTITY_ID_FORMAT = DOMAIN + '.{}' ATTR_TODAY_ENERGY_KWH = "today_energy_kwh" -ATTR_CURRRENT_POWER_W = "current_power_w" +ATTR_CURRENT_POWER_W = "current_power_w" MIN_TIME_BETWEEN_SCANS = timedelta(seconds=10) PROP_TO_ATTR = { - 'current_power_w': ATTR_CURRRENT_POWER_W, + 'current_power_w': ATTR_CURRENT_POWER_W, 'today_energy_kwh': ATTR_TODAY_ENERGY_KWH, } From 203f48cadc9509f42caa062f016ae8855a9fed82 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Wed, 3 May 2017 10:11:39 +0200 Subject: [PATCH 139/169] Update docstrings (#7420) --- homeassistant/components/calendar/__init__.py | 1 - homeassistant/components/calendar/demo.py | 2 +- homeassistant/components/mysensors.py | 1 + homeassistant/components/plant.py | 2 +- homeassistant/components/sensor/knx.py | 3 +-- homeassistant/components/switch/netio.py | 2 +- homeassistant/components/switch/orvibo.py | 2 +- homeassistant/components/switch/rest.py | 4 ++-- homeassistant/components/switch/wemo.py | 2 +- homeassistant/components/telegram_bot/__init__.py | 2 +- 10 files changed, 10 insertions(+), 11 deletions(-) diff --git a/homeassistant/components/calendar/__init__.py b/homeassistant/components/calendar/__init__.py index 6bc8cc3029b..2ccd591db2c 100644 --- a/homeassistant/components/calendar/__init__.py +++ b/homeassistant/components/calendar/__init__.py @@ -18,7 +18,6 @@ from homeassistant.helpers.entity_component import EntityComponent from homeassistant.helpers.template import DATE_STR_FORMAT from homeassistant.util import dt - _LOGGER = logging.getLogger(__name__) DOMAIN = 'calendar' diff --git a/homeassistant/components/calendar/demo.py b/homeassistant/components/calendar/demo.py index f8ac2eceb53..9f6ad70b58f 100755 --- a/homeassistant/components/calendar/demo.py +++ b/homeassistant/components/calendar/demo.py @@ -77,6 +77,6 @@ class DemoGoogleCalendar(CalendarEventDevice): """Representation of a Demo Calendar element.""" def __init__(self, hass, calendar_data, data): - """Initalize Google Calendar but without the API calls.""" + """Initialize Google Calendar but without the API calls.""" self.data = calendar_data super().__init__(hass, data) diff --git a/homeassistant/components/mysensors.py b/homeassistant/components/mysensors.py index ad4b7a4220b..984ff8a4606 100644 --- a/homeassistant/components/mysensors.py +++ b/homeassistant/components/mysensors.py @@ -322,6 +322,7 @@ class GatewayWrapper(object): optimistic (bool): Send values to actuators without feedback state. device (str): Device configured as gateway. __initialised (bool): True if GatewayWrapper is initialised. + """ self._wrapped_gateway = gateway self.platform_callbacks = [] diff --git a/homeassistant/components/plant.py b/homeassistant/components/plant.py index 6fbffc0f040..2215d7c2f30 100644 --- a/homeassistant/components/plant.py +++ b/homeassistant/components/plant.py @@ -136,7 +136,7 @@ class Plant(Entity): } def __init__(self, name, config): - """Initalize the Plant component.""" + """Initialize the Plant component.""" self._config = config self._sensormap = dict() for reading, entity_id in config['sensors'].items(): diff --git a/homeassistant/components/sensor/knx.py b/homeassistant/components/sensor/knx.py index 1178938ce49..229f8790291 100644 --- a/homeassistant/components/sensor/knx.py +++ b/homeassistant/components/sensor/knx.py @@ -33,7 +33,6 @@ KNX_SPEED_MS_MAX = 670760 def setup_platform(hass, config, add_entities, discovery_info=None): """Set up the KNX Sensor platform.""" - # Add KNX Temperature Sensors # KNX Datapoint 9.001 DPT_Value_Temp if config[CONF_TYPE] == TEMPERATURE: minimum_value, maximum_value = \ @@ -70,7 +69,7 @@ def setup_platform(hass, config, add_entities, discovery_info=None): def update_and_define_min_max(config, minimum_default, maximum_default): - """Determinate a min/max value defined in the configuration.""" + """Determine a min/max value defined in the configuration.""" minimum_value = minimum_default maximum_value = maximum_default if config.get(CONF_MINIMUM): diff --git a/homeassistant/components/switch/netio.py b/homeassistant/components/switch/netio.py index 51735a5675f..3351f39eeea 100644 --- a/homeassistant/components/switch/netio.py +++ b/homeassistant/components/switch/netio.py @@ -126,7 +126,7 @@ class NetioSwitch(SwitchDevice): """Provide a Netio linked switch.""" def __init__(self, netio, outlet, name): - """Initalize the Netio switch.""" + """Initialize the Netio switch.""" self._name = name self.outlet = outlet self.netio = netio diff --git a/homeassistant/components/switch/orvibo.py b/homeassistant/components/switch/orvibo.py index 8acf398968d..e039a29809d 100644 --- a/homeassistant/components/switch/orvibo.py +++ b/homeassistant/components/switch/orvibo.py @@ -72,7 +72,7 @@ class S20Switch(SwitchDevice): @property def should_poll(self): - """Polling is needed.""" + """Return the polling state.""" return True @property diff --git a/homeassistant/components/switch/rest.py b/homeassistant/components/switch/rest.py index 179b3b24068..419f4028def 100644 --- a/homeassistant/components/switch/rest.py +++ b/homeassistant/components/switch/rest.py @@ -62,7 +62,7 @@ def async_setup_platform(hass, config, async_add_devices, discovery_info=None): req = yield from websession.get(resource) if req.status >= 400: - _LOGGER.error('Got non-ok response from resource: %s', req.status) + _LOGGER.error("Got non-ok response from resource: %s", req.status) return False except (TypeError, ValueError): @@ -95,7 +95,7 @@ class RestSwitch(SwitchDevice): @property def name(self): - """The name of the switch.""" + """Return the name of the switch.""" return self._name @property diff --git a/homeassistant/components/switch/wemo.py b/homeassistant/components/switch/wemo.py index 083af8549a1..1c6ad76ceba 100644 --- a/homeassistant/components/switch/wemo.py +++ b/homeassistant/components/switch/wemo.py @@ -62,7 +62,7 @@ class WemoSwitch(SwitchDevice): wemo.SUBSCRIPTION_REGISTRY.on(self.wemo, None, self._update_callback) def _update_callback(self, _device, _type, _params): - """Called by the Wemo device callback to update state.""" + """Update the state by the Wemo device.""" _LOGGER.info("Subscription update for %s", _device) updated = self.wemo.subscription_update(_type, _params) self._update(force_update=(not updated)) diff --git a/homeassistant/components/telegram_bot/__init__.py b/homeassistant/components/telegram_bot/__init__.py index f825b6737b9..200c4227f4d 100644 --- a/homeassistant/components/telegram_bot/__init__.py +++ b/homeassistant/components/telegram_bot/__init__.py @@ -78,7 +78,7 @@ def async_setup(hass, config): @asyncio.coroutine def async_platform_discovered(platform, info): - """Callback to load a platform.""" + """Handle the loading of a platform.""" yield from async_setup_platform(platform, discovery_info=info) discovery.async_listen_platform(hass, DOMAIN, async_platform_discovered) From 0f94c8a2e7ee5e2f3164020107b321bf64de3285 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Wed, 3 May 2017 03:15:04 -0700 Subject: [PATCH 140/169] ps - fix opencv (#7419) * ps - fix opencv * fix lint --- homeassistant/components/opencv.py | 49 +++++++++++++++--------------- requirements_all.txt | 3 -- 2 files changed, 25 insertions(+), 27 deletions(-) diff --git a/homeassistant/components/opencv.py b/homeassistant/components/opencv.py index 9f53f0841a1..ef901b3d797 100644 --- a/homeassistant/components/opencv.py +++ b/homeassistant/components/opencv.py @@ -4,11 +4,12 @@ Support for OpenCV image/video processing. For more details about this component, please refer to the documentation at https://home-assistant.io/components/opencv/ """ -import asyncio import logging import os import voluptuous as vol +import requests + from homeassistant.const import ( CONF_NAME, CONF_ENTITY_ID, @@ -19,7 +20,7 @@ from homeassistant.helpers import ( config_validation as cv, ) -REQUIREMENTS = ['opencv-python==3.2.0.6', 'numpy==1.12.0', 'urllib3==1.21'] +REQUIREMENTS = ['opencv-python==3.2.0.6', 'numpy==1.12.0'] _LOGGER = logging.getLogger(__name__) @@ -41,9 +42,7 @@ CONF_SCALE = 'scale' DATA_CLASSIFIER_GROUPS = 'classifier_groups' DEFAULT_COLOR = (255, 255, 0) -DEFAULT_CLASSIFIER_PATH = os.path.join( - os.path.dirname(BASE_PATH), - 'lbp_frontalface.xml') +DEFAULT_CLASSIFIER_PATH = 'lbp_frontalface.xml' DEFAULT_NAME = 'OpenCV' DEFAULT_MIN_SIZE = (30, 30) DEFAULT_NEIGHBORS = 4 @@ -57,8 +56,7 @@ CLASSIFIER_GROUP_CONFIG = { [vol.Schema({ vol.Optional(CONF_COLOR, default=DEFAULT_COLOR): vol.Schema((int, int, int)), - vol.Optional(CONF_FILE_PATH, default=DEFAULT_CLASSIFIER_PATH): - cv.isfile, + vol.Optional(CONF_FILE_PATH, default=None): cv.isfile, vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string, vol.Optional(CONF_MIN_SIZE, default=DEFAULT_MIN_SIZE): @@ -156,27 +154,30 @@ def process_image(image, classifier_group, is_camera): return group_matches -@asyncio.coroutine -def async_setup(hass, config): +def setup(hass, config): """Set up the OpenCV platform entities.""" - _LOGGER.info('Async setup for opencv') - if not os.path.isfile(DEFAULT_CLASSIFIER_PATH): + default_classifier = hass.config.path(DEFAULT_CLASSIFIER_PATH) + + if not os.path.isfile(default_classifier): _LOGGER.info('Downloading default classifier') - import urllib3 - http = urllib3.PoolManager() - request = http.request('GET', CASCADE_URL, preload_content=False) - - with open(DEFAULT_CLASSIFIER_PATH, 'wb') as out: - while True: - data = request.read(1028) - if not data: - break - out.write(data) - - request.release_conn() + r_class = requests.get(CASCADE_URL, stream=True) + with open(default_classifier, 'wb') as f_class: + for chunk in r_class.iter_content(chunk_size=1024): + if chunk: # filter out keep-alive new chunks + f_class.write(chunk) for group in config[DOMAIN][CONF_GROUPS]: - discovery.load_platform(hass, 'image_processing', DOMAIN, group) + grp = {} + + for classifier, config in group.items(): + config = dict(config) + + if config[CONF_FILE_PATH] is None: + config[CONF_FILE_PATH] = default_classifier + + grp[classifier] = config + + discovery.load_platform(hass, 'image_processing', DOMAIN, grp) return True diff --git a/requirements_all.txt b/requirements_all.txt index 2208fde8f18..1bf94e548c8 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -808,9 +808,6 @@ uber_rides==0.4.1 # homeassistant.components.sensor.ups upsmychoice==1.0.2 -# homeassistant.components.opencv -urllib3==1.21 - # homeassistant.components.camera.uvc uvcclient==0.10.0 From af5439860f8c9caef70cacda437b3dbf0b6083ce Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Wed, 3 May 2017 08:29:17 -0700 Subject: [PATCH 141/169] Update opencv.py --- homeassistant/components/opencv.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/homeassistant/components/opencv.py b/homeassistant/components/opencv.py index ef901b3d797..7578398ccb7 100644 --- a/homeassistant/components/opencv.py +++ b/homeassistant/components/opencv.py @@ -161,11 +161,11 @@ def setup(hass, config): if not os.path.isfile(default_classifier): _LOGGER.info('Downloading default classifier') - r_class = requests.get(CASCADE_URL, stream=True) - with open(default_classifier, 'wb') as f_class: - for chunk in r_class.iter_content(chunk_size=1024): + req = requests.get(CASCADE_URL, stream=True) + with open(default_classifier, 'wb') as fil: + for chunk in req.iter_content(chunk_size=1024): if chunk: # filter out keep-alive new chunks - f_class.write(chunk) + fil.write(chunk) for group in config[DOMAIN][CONF_GROUPS]: grp = {} From 403a721e911c4eb93a2017b7152eff378556f3d6 Mon Sep 17 00:00:00 2001 From: Andrey Date: Wed, 3 May 2017 21:08:21 +0300 Subject: [PATCH 142/169] Comment out opencv-python that is not installable on arm (#7426) * Comment out opencv-python that is not installable on arm * Disable import-error --- homeassistant/components/opencv.py | 6 +++--- requirements_all.txt | 2 +- script/gen_requirements_all.py | 1 + 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/homeassistant/components/opencv.py b/homeassistant/components/opencv.py index 7578398ccb7..634e8e156a1 100644 --- a/homeassistant/components/opencv.py +++ b/homeassistant/components/opencv.py @@ -88,7 +88,7 @@ CONFIG_SCHEMA = vol.Schema({ def cv_image_to_bytes(cv_image): """Convert OpenCV image to bytes.""" - import cv2 + import cv2 # pylint: disable=import-error # pylint: disable=no-member encode_param = [int(cv2.IMWRITE_JPEG_QUALITY), 90] @@ -103,7 +103,7 @@ def cv_image_to_bytes(cv_image): def cv_image_from_bytes(image): """Convert image bytes to OpenCV image.""" - import cv2 + import cv2 # pylint: disable=import-error import numpy # pylint: disable=no-member @@ -112,7 +112,7 @@ def cv_image_from_bytes(image): def process_image(image, classifier_group, is_camera): """Process the image given a classifier group.""" - import cv2 + import cv2 # pylint: disable=import-error import numpy # pylint: disable=no-member diff --git a/requirements_all.txt b/requirements_all.txt index 1bf94e548c8..358db1d3802 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -418,7 +418,7 @@ oauth2client==4.0.0 oemthermostat==1.1 # homeassistant.components.opencv -opencv-python==3.2.0.6 +# opencv-python==3.2.0.6 # homeassistant.components.sensor.openevse openevsewifi==0.4 diff --git a/script/gen_requirements_all.py b/script/gen_requirements_all.py index 94635a58525..1ac18ea0705 100755 --- a/script/gen_requirements_all.py +++ b/script/gen_requirements_all.py @@ -15,6 +15,7 @@ COMMENT_REQUIREMENTS = ( 'pybluez', 'beacontools', 'bluepy', + 'opencv-python', 'python-lirc', 'gattlib', 'pyuserinput', From dbd6f7e4ed768b733c14f5dfa1704379807c0b30 Mon Sep 17 00:00:00 2001 From: Anders Melchiorsen Date: Wed, 3 May 2017 23:32:49 +0200 Subject: [PATCH 143/169] Reverse limitlessled color_temp range (#7359) Reverse limitlessled color_temp range --- homeassistant/components/light/limitlessled.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/light/limitlessled.py b/homeassistant/components/light/limitlessled.py index c7091afcb27..1a1fe1cffd7 100644 --- a/homeassistant/components/light/limitlessled.py +++ b/homeassistant/components/light/limitlessled.py @@ -376,12 +376,12 @@ class LimitlessLEDRGBWWGroup(LimitlessLEDGroup): def _from_hass_temperature(temperature): """Convert Home Assistant color temperature units to percentage.""" - return (temperature - 154) / 346 + return 1 - (temperature - 154) / 346 def _to_hass_temperature(temperature): """Convert percentage to Home Assistant color temperature units.""" - return int(temperature * 346) + 154 + return 500 - int(temperature * 346) def _from_hass_brightness(brightness): From c5a91393e4203a76b62fe95ca1986115475c50f9 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Wed, 3 May 2017 20:12:51 -0700 Subject: [PATCH 144/169] Guard against no content type (#7432) --- homeassistant/components/media_player/__init__.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/media_player/__init__.py b/homeassistant/components/media_player/__init__.py index a633a58912b..97712e1c0ad 100644 --- a/homeassistant/components/media_player/__init__.py +++ b/homeassistant/components/media_player/__init__.py @@ -916,8 +916,9 @@ def _async_fetch_image(hass, url): if response.status == 200: content = yield from response.read() - content_type = response.headers.get(CONTENT_TYPE_HEADER)\ - .split(';')[0] + content_type = response.headers.get(CONTENT_TYPE_HEADER) + if content_type: + content_type = content_type.split(';')[0] except asyncio.TimeoutError: pass From ad5a9bf5ac149af9efa8301e8f817747366de519 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Wed, 3 May 2017 20:27:03 -0700 Subject: [PATCH 145/169] wsock.send_json is a coroutine (#7433) --- homeassistant/components/websocket_api.py | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/homeassistant/components/websocket_api.py b/homeassistant/components/websocket_api.py index 009c0d1f1d6..7d96f9ca093 100644 --- a/homeassistant/components/websocket_api.py +++ b/homeassistant/components/websocket_api.py @@ -221,9 +221,12 @@ class ActiveConnection: _LOGGER.error("WS %s: %s %s", id(self.wsock), message1, message2) def send_message(self, message): - """Send messages.""" + """Send messages. + + Returns a coroutine object. + """ self.debug("Sending", message) - self.wsock.send_json(message, dumps=JSON_DUMP) + return self.wsock.send_json(message, dumps=JSON_DUMP) @asyncio.coroutine def handle(self): @@ -252,7 +255,7 @@ class ActiveConnection: authenticated = True else: - self.send_message(auth_required_message()) + yield from self.send_message(auth_required_message()) msg = yield from wsock.receive_json() msg = AUTH_MESSAGE_SCHEMA(msg) @@ -261,13 +264,14 @@ class ActiveConnection: else: self.debug("Invalid password") - self.send_message(auth_invalid_message('Invalid password')) + yield from self.send_message( + auth_invalid_message('Invalid password')) if not authenticated: yield from process_wrong_login(self.request) return wsock - self.send_message(auth_ok_message()) + yield from self.send_message(auth_ok_message()) msg = yield from wsock.receive_json() @@ -279,7 +283,7 @@ class ActiveConnection: cur_id = msg['id'] if cur_id <= last_id: - self.send_message(error_message( + yield from self.send_message(error_message( cur_id, ERR_ID_REUSE, 'Identifier values have to increase.')) @@ -300,7 +304,7 @@ class ActiveConnection: self.log_error(error_msg) if not authenticated: - self.send_message(auth_invalid_message(error_msg)) + yield from self.send_message(auth_invalid_message(error_msg)) else: if isinstance(msg, dict): @@ -308,7 +312,7 @@ class ActiveConnection: else: iden = None - self.send_message(error_message( + yield from self.send_message(error_message( iden, ERR_INVALID_FORMAT, error_msg)) except TypeError as err: From fab533de87cfcf8d5a88e037a504f6141b4d08fd Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Wed, 3 May 2017 21:12:08 -0700 Subject: [PATCH 146/169] ps - fix websocket yielding pt2 (#7434) --- homeassistant/components/websocket_api.py | 67 +++++++++++++++-------- 1 file changed, 45 insertions(+), 22 deletions(-) diff --git a/homeassistant/components/websocket_api.py b/homeassistant/components/websocket_api.py index 7d96f9ca093..466236573c8 100644 --- a/homeassistant/components/websocket_api.py +++ b/homeassistant/components/websocket_api.py @@ -289,7 +289,7 @@ class ActiveConnection: else: handler_name = 'handle_{}'.format(msg['type']) - getattr(self, handler_name)(msg) + yield from getattr(self, handler_name)(msg) last_id = cur_id msg = yield from wsock.receive_json() @@ -348,18 +348,19 @@ class ActiveConnection: return wsock + @asyncio.coroutine def handle_subscribe_events(self, msg): """Handle subscribe events command.""" msg = SUBSCRIBE_EVENTS_MESSAGE_SCHEMA(msg) - @callback + @asyncio.coroutine def forward_events(event): """Forward events to websocket.""" if event.event_type == EVENT_TIME_CHANGED: return try: - self.send_message(event_message(msg['id'], event)) + yield from self.send_message(event_message(msg['id'], event)) except RuntimeError: # Socket has been closed. pass @@ -367,24 +368,31 @@ class ActiveConnection: self.event_listeners[msg['id']] = self.hass.bus.async_listen( msg['event_type'], forward_events) - self.send_message(result_message(msg['id'])) + return self.send_message(result_message(msg['id'])) def handle_unsubscribe_events(self, msg): - """Handle unsubscribe events command.""" + """Handle unsubscribe events command. + + Returns a coroutine object. + """ msg = UNSUBSCRIBE_EVENTS_MESSAGE_SCHEMA(msg) subscription = msg['subscription'] - if subscription not in self.event_listeners: - self.send_message(error_message( + if subscription in self.event_listeners: + self.event_listeners.pop(subscription)() + return self.send_message(result_message(msg['id'])) + else: + return self.send_message(error_message( msg['id'], ERR_NOT_FOUND, 'Subscription not found.')) - else: - self.event_listeners.pop(subscription)() - self.send_message(result_message(msg['id'])) + @asyncio.coroutine def handle_call_service(self, msg): - """Handle call service command.""" + """Handle call service command. + + This is a coroutine. + """ msg = CALL_SERVICE_MESSAGE_SCHEMA(msg) @asyncio.coroutine @@ -393,7 +401,7 @@ class ActiveConnection: yield from self.hass.services.async_call( msg['domain'], msg['service'], msg['service_data'], True) try: - self.send_message(result_message(msg['id'])) + yield from self.send_message(result_message(msg['id'])) except RuntimeError: # Socket has been closed. pass @@ -401,33 +409,48 @@ class ActiveConnection: self.hass.async_add_job(call_service_helper(msg)) def handle_get_states(self, msg): - """Handle get states command.""" + """Handle get states command. + + Returns a coroutine object. + """ msg = GET_STATES_MESSAGE_SCHEMA(msg) - self.send_message(result_message( + return self.send_message(result_message( msg['id'], self.hass.states.async_all())) def handle_get_services(self, msg): - """Handle get services command.""" + """Handle get services command. + + Returns a coroutine object. + """ msg = GET_SERVICES_MESSAGE_SCHEMA(msg) - self.send_message(result_message( + return self.send_message(result_message( msg['id'], self.hass.services.async_services())) def handle_get_config(self, msg): - """Handle get config command.""" + """Handle get config command. + + Returns a coroutine object. + """ msg = GET_CONFIG_MESSAGE_SCHEMA(msg) - self.send_message(result_message( + return self.send_message(result_message( msg['id'], self.hass.config.as_dict())) def handle_get_panels(self, msg): - """Handle get panels command.""" + """Handle get panels command. + + Returns a coroutine object. + """ msg = GET_PANELS_MESSAGE_SCHEMA(msg) - self.send_message(result_message( + return self.send_message(result_message( msg['id'], self.hass.data[frontend.DATA_PANELS])) def handle_ping(self, msg): - """Handle ping command.""" - self.send_message(pong_message(msg['id'])) + """Handle ping command. + + Returns a coroutine object. + """ + return self.send_message(pong_message(msg['id'])) From c44ebbefc4718869f2f15c53dce6b50d2c5781ca Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Thu, 4 May 2017 07:46:43 +0200 Subject: [PATCH 147/169] Upgrade temperusb to 1.5.3 (#7428) --- homeassistant/components/sensor/temper.py | 4 ++-- requirements_all.txt | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/homeassistant/components/sensor/temper.py b/homeassistant/components/sensor/temper.py index ce9d974d927..973e07d9cf3 100644 --- a/homeassistant/components/sensor/temper.py +++ b/homeassistant/components/sensor/temper.py @@ -13,7 +13,7 @@ from homeassistant.helpers.entity import Entity _LOGGER = logging.getLogger(__name__) -REQUIREMENTS = ['temperusb==1.5.1'] +REQUIREMENTS = ['temperusb==1.5.3'] CONF_SCALE = 'scale' CONF_OFFSET = 'offset' @@ -35,7 +35,7 @@ def get_temper_devices(): # pylint: disable=unused-argument def setup_platform(hass, config, add_devices, discovery_info=None): - """Setu p the Temper sensors.""" + """Set up the Temper sensors.""" temp_unit = hass.config.units.temperature_unit name = config.get(CONF_NAME) scaling = { diff --git a/requirements_all.txt b/requirements_all.txt index 358db1d3802..2f72e647163 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -784,7 +784,7 @@ tellcore-py==1.1.2 tellduslive==0.3.4 # homeassistant.components.sensor.temper -temperusb==1.5.1 +temperusb==1.5.3 # homeassistant.components.thingspeak thingspeak==0.4.1 From 05a3c463bf9bfb8f77064b06169e2c9a64fa4ce0 Mon Sep 17 00:00:00 2001 From: Nolan Gilley Date: Thu, 4 May 2017 01:48:43 -0400 Subject: [PATCH 148/169] update for pypi (#7430) --- homeassistant/components/ecobee.py | 4 +--- homeassistant/components/joaoapps_join.py | 4 +--- homeassistant/components/notify/joaoapps_join.py | 4 +--- requirements_all.txt | 14 +++++++------- 4 files changed, 10 insertions(+), 16 deletions(-) diff --git a/homeassistant/components/ecobee.py b/homeassistant/components/ecobee.py index 11e6e89a74f..f0c95f7de3d 100644 --- a/homeassistant/components/ecobee.py +++ b/homeassistant/components/ecobee.py @@ -16,9 +16,7 @@ from homeassistant.const import CONF_API_KEY from homeassistant.loader import get_component from homeassistant.util import Throttle -REQUIREMENTS = [ - 'https://github.com/nkgilley/python-ecobee-api/archive/' - 'a4496b293956b2eac285305136a62ac78bef510d.zip#python-ecobee==0.0.7'] +REQUIREMENTS = ['python-ecobee-api==0.0.7'] _CONFIGURING = {} _LOGGER = logging.getLogger(__name__) diff --git a/homeassistant/components/joaoapps_join.py b/homeassistant/components/joaoapps_join.py index 9dc595a6e30..fe87e33233c 100644 --- a/homeassistant/components/joaoapps_join.py +++ b/homeassistant/components/joaoapps_join.py @@ -11,9 +11,7 @@ import voluptuous as vol import homeassistant.helpers.config_validation as cv from homeassistant.const import CONF_NAME, CONF_API_KEY -REQUIREMENTS = [ - 'https://github.com/nkgilley/python-join-api/archive/' - '3e1e849f1af0b4080f551b62270c6d244d5fbcbd.zip#python-join-api==0.0.1'] +REQUIREMENTS = ['python-join-api==0.0.1'] _LOGGER = logging.getLogger(__name__) diff --git a/homeassistant/components/notify/joaoapps_join.py b/homeassistant/components/notify/joaoapps_join.py index 84b37f249a8..9afabb7249f 100644 --- a/homeassistant/components/notify/joaoapps_join.py +++ b/homeassistant/components/notify/joaoapps_join.py @@ -12,9 +12,7 @@ from homeassistant.components.notify import ( from homeassistant.const import CONF_API_KEY import homeassistant.helpers.config_validation as cv -REQUIREMENTS = [ - 'https://github.com/nkgilley/python-join-api/archive/' - '3e1e849f1af0b4080f551b62270c6d244d5fbcbd.zip#python-join-api==0.0.1'] +REQUIREMENTS = ['python-join-api==0.0.1'] _LOGGER = logging.getLogger(__name__) diff --git a/requirements_all.txt b/requirements_all.txt index 2f72e647163..022c147c2b4 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -293,13 +293,6 @@ https://github.com/molobrakos/python-pocketcasts/archive/9f61ff00c77c7c98ffa0af9 # homeassistant.components.switch.anel_pwrctrl https://github.com/mweinelt/anel-pwrctrl/archive/ed26e8830e28a2bfa4260a9002db23ce3e7e63d7.zip#anel_pwrctrl==0.0.1 -# homeassistant.components.ecobee -https://github.com/nkgilley/python-ecobee-api/archive/a4496b293956b2eac285305136a62ac78bef510d.zip#python-ecobee==0.0.7 - -# homeassistant.components.joaoapps_join -# homeassistant.components.notify.joaoapps_join -https://github.com/nkgilley/python-join-api/archive/3e1e849f1af0b4080f551b62270c6d244d5fbcbd.zip#python-join-api==0.0.1 - # homeassistant.components.notify.mailgun https://github.com/pschmitt/pymailgun/archive/1.3.zip#pymailgun==1.3 @@ -639,6 +632,9 @@ python-clementine-remote==1.0.1 # homeassistant.components.digital_ocean python-digitalocean==1.11 +# homeassistant.components.ecobee +python-ecobee-api==0.0.7 + # homeassistant.components.climate.eq3btsmart # python-eq3bt==0.1.5 @@ -648,6 +644,10 @@ python-forecastio==1.3.5 # homeassistant.components.sensor.hp_ilo python-hpilo==3.9 +# homeassistant.components.joaoapps_join +# homeassistant.components.notify.joaoapps_join +python-join-api==0.0.1 + # homeassistant.components.lirc # python-lirc==1.2.3 From df133529898c4e7316932d70e9a2cc467178b70c Mon Sep 17 00:00:00 2001 From: Gergely Imreh Date: Thu, 4 May 2017 06:59:50 +0100 Subject: [PATCH 149/169] Add new sensor: Enviro pHAT (#7427) * Add new sensor: Enviro pHAT Add support for the Enviro pHAT for Raspberry Pi, see hardware info at https://shop.pimoroni.com/products/enviro-phat * Move update to add_devices call --- .coveragerc | 1 + homeassistant/components/sensor/envirophat.py | 194 ++++++++++++++++++ requirements_all.txt | 3 + 3 files changed, 198 insertions(+) create mode 100644 homeassistant/components/sensor/envirophat.py diff --git a/.coveragerc b/.coveragerc index 279dc114a21..41794b810f4 100644 --- a/.coveragerc +++ b/.coveragerc @@ -368,6 +368,7 @@ omit = homeassistant/components/sensor/eddystone_temperature.py homeassistant/components/sensor/eliqonline.py homeassistant/components/sensor/emoncms.py + homeassistant/components/sensor/envirophat.py homeassistant/components/sensor/fastdotcom.py homeassistant/components/sensor/fedex.py homeassistant/components/sensor/fido.py diff --git a/homeassistant/components/sensor/envirophat.py b/homeassistant/components/sensor/envirophat.py new file mode 100644 index 00000000000..0c4bb42cf8f --- /dev/null +++ b/homeassistant/components/sensor/envirophat.py @@ -0,0 +1,194 @@ +""" +Support for Enviro pHAT sensors. + +For more details about this component, please refer to the documentation at +https://home-assistant.io/components/sensor.envirophat +""" +import logging +from datetime import timedelta + +import voluptuous as vol + +from homeassistant.components.sensor import PLATFORM_SCHEMA +from homeassistant.const import (TEMP_CELSIUS, CONF_DISPLAY_OPTIONS, CONF_NAME) +import homeassistant.helpers.config_validation as cv +from homeassistant.helpers.entity import Entity +from homeassistant.util import Throttle + +REQUIREMENTS = ['envirophat==0.0.6'] + +_LOGGER = logging.getLogger(__name__) + +DEFAULT_NAME = 'envirophat' +CONF_USE_LEDS = 'use_leds' + +MIN_TIME_BETWEEN_UPDATES = timedelta(seconds=60) + +SENSOR_TYPES = { + 'light': ['light', ' ', 'mdi:weather-sunny'], + 'light_red': ['light_red', ' ', 'mdi:invert-colors'], + 'light_green': ['light_green', ' ', 'mdi:invert-colors'], + 'light_blue': ['light_blue', ' ', 'mdi:invert-colors'], + 'accelerometer_x': ['accelerometer_x', 'G', 'mdi:earth'], + 'accelerometer_y': ['accelerometer_y', 'G', 'mdi:earth'], + 'accelerometer_z': ['accelerometer_z', 'G', 'mdi:earth'], + 'magnetometer_x': ['magnetometer_x', ' ', 'mdi:magnet'], + 'magnetometer_y': ['magnetometer_y', ' ', 'mdi:magnet'], + 'magnetometer_z': ['magnetometer_z', ' ', 'mdi:magnet'], + 'temperature': ['temperature', TEMP_CELSIUS, 'mdi:thermometer'], + 'pressure': ['pressure', 'hPa', 'mdi:gauge'], + 'voltage_0': ['voltage_0', 'V', 'mdi:flash'], + 'voltage_1': ['voltage_1', 'V', 'mdi:flash'], + 'voltage_2': ['voltage_2', 'V', 'mdi:flash'], + 'voltage_3': ['voltage_3', 'V', 'mdi:flash'], +} + +PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ + vol.Required(CONF_DISPLAY_OPTIONS, default=SENSOR_TYPES): + [vol.In(SENSOR_TYPES)], + vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string, + vol.Optional(CONF_USE_LEDS, default=False): cv.boolean +}) + + +def setup_platform(hass, config, add_devices, discovery_info=None): + """Set up the Sense HAT sensor platform.""" + data = EnvirophatData(config.get(CONF_USE_LEDS)) + + dev = [] + for variable in config[CONF_DISPLAY_OPTIONS]: + dev.append(EnvirophatSensor(data, variable)) + + add_devices(dev, True) + + +class EnvirophatSensor(Entity): + """Representation of an Enviro pHAT sensor.""" + + def __init__(self, data, sensor_types): + """Initialize the sensor.""" + self.data = data + self._name = SENSOR_TYPES[sensor_types][0] + self._unit_of_measurement = SENSOR_TYPES[sensor_types][1] + self.type = sensor_types + self._state = None + + @property + def name(self): + """Return the name of the sensor.""" + return self._name + + @property + def state(self): + """Return the state of the sensor.""" + return self._state + + @property + def icon(self): + """Icon to use in the frontend, if any.""" + return SENSOR_TYPES[self.type][2] + + @property + def unit_of_measurement(self): + """Return the unit the value is expressed in.""" + return self._unit_of_measurement + + def update(self): + """Get the latest data and updates the states.""" + self.data.update() + if not self.data.light: + _LOGGER.error("Didn't receive data") + return + + if self.type == 'light': + self._state = self.data.light + if self.type == 'light_red': + self._state = self.data.light_red + if self.type == 'light_green': + self._state = self.data.light_green + if self.type == 'light_blue': + self._state = self.data.light_blue + if self.type == 'accelerometer_x': + self._state = self.data.accelerometer_x + if self.type == 'accelerometer_y': + self._state = self.data.accelerometer_y + if self.type == 'accelerometer_z': + self._state = self.data.accelerometer_z + if self.type == 'magnetometer_x': + self._state = self.data.magnetometer_x + if self.type == 'magnetometer_y': + self._state = self.data.magnetometer_y + if self.type == 'magnetometer_z': + self._state = self.data.magnetometer_z + if self.type == 'temperature': + self._state = self.data.temperature + if self.type == 'pressure': + self._state = self.data.pressure + if self.type == 'voltage_0': + self._state = self.data.voltage_0 + if self.type == 'voltage_1': + self._state = self.data.voltage_1 + if self.type == 'voltage_2': + self._state = self.data.voltage_2 + if self.type == 'voltage_3': + self._state = self.data.voltage_3 + + +class EnvirophatData(object): + """Get the latest data and update.""" + + def __init__(self, use_leds): + """Initialize the data object.""" + self.use_leds = use_leds + # sensors readings + self.light = None + self.light_red = None + self.light_green = None + self.light_blue = None + self.accelerometer_x = None + self.accelerometer_y = None + self.accelerometer_z = None + self.magnetometer_x = None + self.magnetometer_y = None + self.magnetometer_z = None + self.temperature = None + self.pressure = None + self.voltage_0 = None + self.voltage_1 = None + self.voltage_2 = None + self.voltage_3 = None + + @Throttle(MIN_TIME_BETWEEN_UPDATES) + def update(self): + """Get the latest data from Enviro pHAT.""" + from envirophat import analog, leds, light, motion, weather + + # Light sensor reading: 16-bit integer + self.light = light.light() + if self.use_leds: + # pylint: disable=no-value-for-parameter + leds.on() + # the three color values scaled agains the overall light, 0-255 + self.light_red, self.light_green, self.light_blue = light.rgb() + if self.use_leds: + # pylint: disable=no-value-for-parameter + leds.off() + + # accelerometer readings in G + self.accelerometer_x, self.accelerometer_y, self.accelerometer_z = \ + motion.accelerometer() + + # raw magnetometer reading + self.magnetometer_x, self.magnetometer_y, self.magnetometer_z = \ + motion.magnetometer() + + # temperature resolution of BMP280 sensor: 0.01°C + self.temperature = round(weather.temperature(), 2) + + # pressure resolution of BMP280 sensor: 0.16 Pa, rounding to 0.1 Pa + # with conversion to 100 Pa = 1 hPa + self.pressure = round(weather.pressure() / 100.0, 3) + + # Voltage sensor, reading between 0-3.3V + self.voltage_0, self.voltage_1, self.voltage_2, self.voltage_3 = \ + analog.read_all() diff --git a/requirements_all.txt b/requirements_all.txt index 022c147c2b4..9d3be36d135 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -165,6 +165,9 @@ eliqonline==1.0.13 # homeassistant.components.enocean enocean==0.31 +# homeassistant.components.sensor.envirophat +envirophat==0.0.6 + # homeassistant.components.keyboard_remote # evdev==0.6.1 From e3bb45c9065de0a2a0780e97960ac1af380e4196 Mon Sep 17 00:00:00 2001 From: deisi Date: Thu, 4 May 2017 08:11:27 +0200 Subject: [PATCH 150/169] Added osramlightify groups. (#7376) * Added osramlighrify groups. Allows you to make use of the build in osram lightify groups. Group states get handeled similar as in the case of phillips hue. A lightify group shows up as light in the homeassistant webinterface. If one light of the group is on, the complete group is considered to be on. To use this feature, first define some groups within your lighrify bridge, then set add `allow_lightify_groups=true` to you osramlightify config. It might look like: ````yaml - platform: osramlightify host: IP-ADDRES allow_lightify_groups: true ``` * Fixed Pylint errors. * Included requests. * Included more requests. * Fixed setup bridge and removed _light attribute. * Update osramlightify.py --- .../components/light/osramlightify.py | 173 +++++++++++++----- requirements_all.txt | 2 +- 2 files changed, 125 insertions(+), 50 deletions(-) diff --git a/homeassistant/components/light/osramlightify.py b/homeassistant/components/light/osramlightify.py index 3faeb1a9d71..143dc52cbee 100644 --- a/homeassistant/components/light/osramlightify.py +++ b/homeassistant/components/light/osramlightify.py @@ -15,26 +15,32 @@ from homeassistant import util from homeassistant.const import CONF_HOST from homeassistant.components.light import ( Light, ATTR_BRIGHTNESS, ATTR_COLOR_TEMP, ATTR_EFFECT, ATTR_RGB_COLOR, - ATTR_TRANSITION, EFFECT_RANDOM, SUPPORT_BRIGHTNESS, SUPPORT_EFFECT, - SUPPORT_COLOR_TEMP, SUPPORT_RGB_COLOR, SUPPORT_TRANSITION, PLATFORM_SCHEMA) + ATTR_XY_COLOR, ATTR_TRANSITION, EFFECT_RANDOM, SUPPORT_BRIGHTNESS, + SUPPORT_EFFECT, SUPPORT_XY_COLOR, SUPPORT_COLOR_TEMP, SUPPORT_RGB_COLOR, + SUPPORT_TRANSITION, PLATFORM_SCHEMA) from homeassistant.util.color import ( - color_temperature_mired_to_kelvin, color_temperature_kelvin_to_mired) + color_temperature_mired_to_kelvin, color_temperature_kelvin_to_mired, + color_xy_brightness_to_RGB) import homeassistant.helpers.config_validation as cv REQUIREMENTS = ['https://github.com/tfriedel/python-lightify/archive/' - 'd6eadcf311e6e21746182d1480e97b350dda2b3e.zip#lightify==1.0.4'] + '1bb1db0e7bd5b14304d7bb267e2398cd5160df46.zip#lightify==1.0.5'] _LOGGER = logging.getLogger(__name__) MIN_TIME_BETWEEN_SCANS = timedelta(seconds=10) MIN_TIME_BETWEEN_FORCED_SCANS = timedelta(milliseconds=100) +CONF_ALLOW_LIGHTIFY_GROUPS = "allow_lightify_groups" +DEFAULT_ALLOW_LIGHTIFY_GROUPS = True SUPPORT_OSRAMLIGHTIFY = (SUPPORT_BRIGHTNESS | SUPPORT_COLOR_TEMP | SUPPORT_EFFECT | SUPPORT_RGB_COLOR | - SUPPORT_TRANSITION) + SUPPORT_TRANSITION | SUPPORT_XY_COLOR) PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ vol.Required(CONF_HOST): cv.string, + vol.Optional(CONF_ALLOW_LIGHTIFY_GROUPS, + default=DEFAULT_ALLOW_LIGHTIFY_GROUPS): cv.boolean, }) @@ -42,6 +48,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None): """Set up the Osram Lightify lights.""" import lightify host = config.get(CONF_HOST) + add_groups = config.get(CONF_ALLOW_LIGHTIFY_GROUPS) if host: try: bridge = lightify.Lightify(host) @@ -50,20 +57,26 @@ def setup_platform(hass, config, add_devices, discovery_info=None): host, str(err)) _LOGGER.exception(msg) return False - setup_bridge(bridge, add_devices) + setup_bridge(bridge, add_devices, add_groups) else: _LOGGER.error("No host found in configuration") return False -def setup_bridge(bridge, add_devices_callback): +def setup_bridge(bridge, add_devices_callback, add_groups): """Set up the Lightify bridge.""" lights = {} @util.Throttle(MIN_TIME_BETWEEN_SCANS, MIN_TIME_BETWEEN_FORCED_SCANS) def update_lights(): """Update the lights objects with latest info from bridge.""" - bridge.update_all_light_status() + try: + bridge.update_all_light_status() + bridge.update_group_list() + except TimeoutError: + _LOGGER.error('Timeout during updating of lights.') + except OSError: + _LOGGER.error('OSError during updating of lights.') new_lights = [] @@ -77,22 +90,31 @@ def setup_bridge(bridge, add_devices_callback): else: lights[light_id].light = light + if add_groups: + for (group_name, group) in bridge.groups().items(): + if group_name not in lights: + osram_group = OsramLightifyGroup(group, bridge, + update_lights) + lights[group_name] = osram_group + new_lights.append(osram_group) + else: + lights[group_name].group = group + if new_lights: add_devices_callback(new_lights) update_lights() -class OsramLightifyLight(Light): - """Representation of an Osram Lightify Light.""" +class Luminary(Light): + """ABS for Lightify Lights and Groups.""" - def __init__(self, light_id, light, update_lights): - """Initialize the light.""" - self._light = light - self._light_id = light_id + def __init__(self, luminary, update_lights): + """Init Luminary object.""" self.update_lights = update_lights + self._luminary = luminary self._brightness = None - self._rgb = None + self._rgb = [None] self._name = None self._temperature = None self._state = False @@ -105,9 +127,7 @@ class OsramLightifyLight(Light): @property def rgb_color(self): - """Return the last RGB color value set.""" - _LOGGER.debug("rgb_color light state for light: %s is: %s %s %s", - self._name, self._rgb[0], self._rgb[1], self._rgb[2]) + """Last RGB color value set.""" return self._rgb @property @@ -117,16 +137,12 @@ class OsramLightifyLight(Light): @property def brightness(self): - """Return the brightness of this light between 0..255.""" - _LOGGER.debug( - "Brightness for light %s is: %s", self._name, self._brightness) + """Brightness of this light between 0..255.""" return self._brightness @property def is_on(self): """Update Status to True if device is on.""" - _LOGGER.debug( - "is_on light state for light: %s is: %s", self._name, self._state) return self._state @property @@ -134,12 +150,14 @@ class OsramLightifyLight(Light): """Flag supported features.""" return SUPPORT_OSRAMLIGHTIFY + @property + def effect_list(self): + """List of supported effects.""" + return [EFFECT_RANDOM] + def turn_on(self, **kwargs): """Turn the device on.""" - _LOGGER.debug("turn_on Attempting to turn on light: %s ", self._name) - - self._light.set_onoff(1) - self._state = self._light.on() + self._luminary.set_onoff(1) if ATTR_TRANSITION in kwargs: transition = int(kwargs[ATTR_TRANSITION] * 10) @@ -152,32 +170,42 @@ class OsramLightifyLight(Light): if ATTR_RGB_COLOR in kwargs: red, green, blue = kwargs[ATTR_RGB_COLOR] - _LOGGER.debug("turn_on requested ATTR_RGB_COLOR for light: " - "%s is: %s %s %s", self._name, red, green, blue) - self._light.set_rgb(red, green, blue, transition) + _LOGGER.debug("turn_on requested ATTR_RGB_COLOR for light:" + " %s is: %s %s %s ", + self._name, red, green, blue) + self._luminary.set_rgb(red, green, blue, transition) + + if ATTR_XY_COLOR in kwargs: + x_mired, y_mired = kwargs[ATTR_XY_COLOR] + _LOGGER.debug("turn_on requested ATTR_XY_COLOR for light:" + " %s is: %s,%s", self._name, x_mired, y_mired) + red, green, blue = color_xy_brightness_to_RGB( + x_mired, y_mired, self._brightness + ) + self._luminary.set_rgb(red, green, blue, transition) if ATTR_COLOR_TEMP in kwargs: color_t = kwargs[ATTR_COLOR_TEMP] kelvin = int(color_temperature_mired_to_kelvin(color_t)) _LOGGER.debug("turn_on requested set_temperature for light: " "%s: %s", self._name, kelvin) - self._light.set_temperature(kelvin, transition) + self._luminary.set_temperature(kelvin, transition) if ATTR_BRIGHTNESS in kwargs: self._brightness = kwargs[ATTR_BRIGHTNESS] _LOGGER.debug("turn_on requested brightness for light: %s is: %s ", self._name, self._brightness) - self._brightness = self._light.set_luminance( + self._brightness = self._luminary.set_luminance( int(self._brightness / 2.55), transition) if ATTR_EFFECT in kwargs: effect = kwargs.get(ATTR_EFFECT) if effect == EFFECT_RANDOM: - self._light.set_rgb(random.randrange(0, 255), - random.randrange(0, 255), - random.randrange(0, 255), - transition) + self._luminary.set_rgb(random.randrange(0, 255), + random.randrange(0, 255), + random.randrange(0, 255), + transition) _LOGGER.debug("turn_on requested random effect for light: " "%s with transition %s", self._name, transition) @@ -189,27 +217,74 @@ class OsramLightifyLight(Light): self._name) if ATTR_TRANSITION in kwargs: transition = int(kwargs[ATTR_TRANSITION] * 10) - _LOGGER.debug("turn_off requested transition time for light: " - "%s is: %s", self._name, transition) - self._light.set_luminance(0, transition) + _LOGGER.debug("turn_off requested transition time for light:" + " %s is: %s ", + self._name, transition) + self._luminary.set_luminance(0, transition) else: transition = 0 - _LOGGER.debug("turn_off requested transition time for light: " - "%s is: %s ", self._name, transition) - self._light.set_onoff(0) - self._state = self._light.on() - + _LOGGER.debug("turn_off requested transition time for light:" + " %s is: %s ", + self._name, transition) + self._luminary.set_onoff(0) self.schedule_update_ha_state() def update(self): """Synchronize state with bridge.""" self.update_lights(no_throttle=True) - self._brightness = int(self._light.lum() * 2.55) - self._name = self._light.name() - self._rgb = self._light.rgb() - o_temp = self._light.temp() + self._name = self._luminary.name() + + +class OsramLightifyLight(Luminary): + """Representation of an Osram Lightify Light.""" + + def __init__(self, light_id, light, update_lights): + """Initialize the light.""" + self._light_id = light_id + super().__init__(light, update_lights) + + def update(self): + """Update status of a Light.""" + super().update() + self._state = self._luminary.on() + self._rgb = self._luminary.rgb() + o_temp = self._luminary.temp() + if o_temp == 0: + self._temperature = None + else: + self._temperature = color_temperature_kelvin_to_mired( + self._luminary.temp() + ) + self._brightness = int(self._luminary.lum() * 2.55) + + +class OsramLightifyGroup(Luminary): + """Representation of an Osram Lightify Group.""" + + def __init__(self, group, bridge, update_lights): + """Init light group.""" + self._bridge = bridge + self._light_ids = [] + super().__init__(group, update_lights) + + def _get_state(self): + """Get state of group. + + The group is on, if any of the lights in on. + """ + lights = self._bridge.lights() + return any(lights[light_id].on() for light_id in self._light_ids) + + def update(self): + """Update group status.""" + super().update() + self._light_ids = self._luminary.lights() + light = self._bridge.lights()[self._light_ids[0]] + self._brightness = int(light.lum() * 2.55) + self._rgb = light.rgb() + o_temp = light.temp() if o_temp == 0: self._temperature = None else: self._temperature = color_temperature_kelvin_to_mired(o_temp) - self._state = self._light.on() + self._state = light.on() diff --git a/requirements_all.txt b/requirements_all.txt index 9d3be36d135..762c9c77f56 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -312,7 +312,7 @@ https://github.com/sander76/powerviewApi/archive/246e782d60d5c0addcc98d7899a0186 https://github.com/soldag/pyflic/archive/0.4.zip#pyflic==0.4 # homeassistant.components.light.osramlightify -https://github.com/tfriedel/python-lightify/archive/d6eadcf311e6e21746182d1480e97b350dda2b3e.zip#lightify==1.0.4 +https://github.com/tfriedel/python-lightify/archive/1bb1db0e7bd5b14304d7bb267e2398cd5160df46.zip#lightify==1.0.5 # homeassistant.components.lutron https://github.com/thecynic/pylutron/archive/v0.1.0.zip#pylutron==0.1.0 From 7e539a3cb278829e951be31de921eba3f2d6fbf2 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Thu, 4 May 2017 16:03:50 +0200 Subject: [PATCH 151/169] Add support for face recognition with dlib (#7421) * Add support for face recognition with dlib * fix lint * fix lint p2 * update library * dlib can not build * fix lint * Fix int p1 * Update dlib_face_detect.py * Update dlib_face_detect.py * Update dlib_face_detect.py --- .coveragerc | 2 + .../image_processing/dlib_face_detect.py | 71 ++++++++++++++ .../image_processing/dlib_face_identify.py | 95 +++++++++++++++++++ .../image_processing/microsoft_face_detect.py | 2 - requirements_all.txt | 4 + script/gen_requirements_all.py | 3 +- 6 files changed, 174 insertions(+), 3 deletions(-) create mode 100644 homeassistant/components/image_processing/dlib_face_detect.py create mode 100644 homeassistant/components/image_processing/dlib_face_identify.py diff --git a/.coveragerc b/.coveragerc index 41794b810f4..9656508982a 100644 --- a/.coveragerc +++ b/.coveragerc @@ -237,6 +237,8 @@ omit = homeassistant/components/foursquare.py homeassistant/components/hdmi_cec.py homeassistant/components/ifttt.py + homeassistant/components/image_processing/dlib_face_detect.py + homeassistant/components/image_processing/dlib_face_identify.py homeassistant/components/joaoapps_join.py homeassistant/components/keyboard.py homeassistant/components/keyboard_remote.py diff --git a/homeassistant/components/image_processing/dlib_face_detect.py b/homeassistant/components/image_processing/dlib_face_detect.py new file mode 100644 index 00000000000..5877535d3e0 --- /dev/null +++ b/homeassistant/components/image_processing/dlib_face_detect.py @@ -0,0 +1,71 @@ +""" +Component that will help set the dlib face detect processing. + +For more details about this component, please refer to the documentation at +https://home-assistant.io/components/image_processing.dlib_face_detect/ +""" +import logging +import io + +from homeassistant.core import split_entity_id +# pylint: disable=unused-import +from homeassistant.components.image_processing import PLATFORM_SCHEMA # noqa +from homeassistant.components.image_processing import ( + CONF_SOURCE, CONF_ENTITY_ID, CONF_NAME) +from homeassistant.components.image_processing.microsoft_face_identify import ( + ImageProcessingFaceEntity) + +REQUIREMENTS = ['face_recognition==0.1.14'] + +_LOGGER = logging.getLogger(__name__) + + +def setup_platform(hass, config, add_devices, discovery_info=None): + """Set up the Microsoft Face detection platform.""" + entities = [] + for camera in config[CONF_SOURCE]: + entities.append(DlibFaceDetectEntity( + camera[CONF_ENTITY_ID], camera.get(CONF_NAME) + )) + + add_devices(entities) + + +class DlibFaceDetectEntity(ImageProcessingFaceEntity): + """Dlib Face API entity for identify.""" + + def __init__(self, camera_entity, name=None): + """Initialize Dlib.""" + super().__init__() + + self._camera = camera_entity + + if name: + self._name = name + else: + self._name = "Dlib Face {0}".format( + split_entity_id(camera_entity)[1]) + + @property + def camera_entity(self): + """Return camera entity id from process pictures.""" + return self._camera + + @property + def name(self): + """Return the name of the entity.""" + return self._name + + def process_image(self, image): + """Process image.""" + # pylint: disable=import-error + import face_recognition + + fak_file = io.BytesIO(image) + fak_file.name = "snapshot.jpg" + fak_file.seek(0) + + image = face_recognition.load_image_file(fak_file) + face_locations = face_recognition.face_locations(image) + + self.process_faces(face_locations, len(face_locations)) diff --git a/homeassistant/components/image_processing/dlib_face_identify.py b/homeassistant/components/image_processing/dlib_face_identify.py new file mode 100644 index 00000000000..a0f50796a9f --- /dev/null +++ b/homeassistant/components/image_processing/dlib_face_identify.py @@ -0,0 +1,95 @@ +""" +Component that will help set the dlib face detect processing. + +For more details about this component, please refer to the documentation at +https://home-assistant.io/components/image_processing.dlib_face_identify/ +""" +import logging +import io + +import voluptuous as vol + +from homeassistant.core import split_entity_id +from homeassistant.components.image_processing import ( + PLATFORM_SCHEMA, CONF_SOURCE, CONF_ENTITY_ID, CONF_NAME) +from homeassistant.components.image_processing.microsoft_face_identify import ( + ImageProcessingFaceEntity) +import homeassistant.helpers.config_validation as cv + +REQUIREMENTS = ['face_recognition==0.1.14'] + +_LOGGER = logging.getLogger(__name__) + +ATTR_NAME = 'name' +CONF_FACES = 'faces' + +PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ + vol.Required(CONF_FACES): {cv.string: cv.isfile}, +}) + + +def setup_platform(hass, config, add_devices, discovery_info=None): + """Set up the Microsoft Face detection platform.""" + entities = [] + for camera in config[CONF_SOURCE]: + entities.append(DlibFaceIdentifyEntity( + camera[CONF_ENTITY_ID], config[CONF_FACES], camera.get(CONF_NAME) + )) + + add_devices(entities) + + +class DlibFaceIdentifyEntity(ImageProcessingFaceEntity): + """Dlib Face API entity for identify.""" + + def __init__(self, camera_entity, faces, name=None): + """Initialize Dlib.""" + # pylint: disable=import-error + import face_recognition + super().__init__() + + self._camera = camera_entity + + if name: + self._name = name + else: + self._name = "Dlib Face {0}".format( + split_entity_id(camera_entity)[1]) + + self._faces = {} + for name, face_file in faces.items(): + image = face_recognition.load_image_file(face_file) + self._faces[name] = face_recognition.face_encodings(image)[0] + + @property + def camera_entity(self): + """Return camera entity id from process pictures.""" + return self._camera + + @property + def name(self): + """Return the name of the entity.""" + return self._name + + def process_image(self, image): + """Process image.""" + # pylint: disable=import-error + import face_recognition + + fak_file = io.BytesIO(image) + fak_file.name = "snapshot.jpg" + fak_file.seek(0) + + image = face_recognition.load_image_file(fak_file) + unknowns = face_recognition.face_encodings(image) + + found = [] + for unknown_face in unknowns: + for name, face in self._faces.items(): + result = face_recognition.compare_faces([face], unknown_face) + if result[0]: + found.append({ + ATTR_NAME: name + }) + + self.process_faces(found, len(unknowns)) diff --git a/homeassistant/components/image_processing/microsoft_face_detect.py b/homeassistant/components/image_processing/microsoft_face_detect.py index e12c2d1d646..5c4daec1067 100644 --- a/homeassistant/components/image_processing/microsoft_face_detect.py +++ b/homeassistant/components/image_processing/microsoft_face_detect.py @@ -22,8 +22,6 @@ DEPENDENCIES = ['microsoft_face'] _LOGGER = logging.getLogger(__name__) -EVENT_IDENTIFY_FACE = 'detect_face' - SUPPORTED_ATTRIBUTES = [ ATTR_AGE, ATTR_GENDER, diff --git a/requirements_all.txt b/requirements_all.txt index 762c9c77f56..c6f56e3a9e0 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -174,6 +174,10 @@ envirophat==0.0.6 # homeassistant.components.climate.honeywell evohomeclient==0.2.5 +# homeassistant.components.image_processing.dlib_face_detect +# homeassistant.components.image_processing.dlib_face_identify +# face_recognition==0.1.14 + # homeassistant.components.sensor.fastdotcom fastdotcom==0.0.1 diff --git a/script/gen_requirements_all.py b/script/gen_requirements_all.py index 1ac18ea0705..4d08ff349a0 100755 --- a/script/gen_requirements_all.py +++ b/script/gen_requirements_all.py @@ -23,7 +23,8 @@ COMMENT_REQUIREMENTS = ( 'pycups', 'python-eq3bt', 'avion', - 'decora' + 'decora', + 'face_recognition' ) IGNORE_PACKAGES = ( From cc0299d04662921d22f07fb98a9334fd46f660de Mon Sep 17 00:00:00 2001 From: Philipp Schmitt Date: Thu, 4 May 2017 19:34:00 +0200 Subject: [PATCH 152/169] Replace pymailgun with pymailgunner (#7436) * mailgun: Replace pymailgun with pymailgunner * Fix imports --- homeassistant/components/notify/mailgun.py | 10 ++++------ requirements_all.txt | 6 +++--- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/homeassistant/components/notify/mailgun.py b/homeassistant/components/notify/mailgun.py index 4a5a46f7e96..0e4254ae083 100644 --- a/homeassistant/components/notify/mailgun.py +++ b/homeassistant/components/notify/mailgun.py @@ -17,9 +17,7 @@ import homeassistant.helpers.config_validation as cv _LOGGER = logging.getLogger(__name__) -REQUIREMENTS = ['https://github.com/pschmitt/pymailgun/' - 'archive/1.3.zip#' - 'pymailgun==1.3'] +REQUIREMENTS = ['pymailgunner==1.4'] # Images to attach to notification ATTR_IMAGES = 'images' @@ -65,7 +63,7 @@ class MailgunNotificationService(BaseNotificationService): def initialize_client(self): """Initialize the connection to Mailgun.""" - from pymailgun import Client + from pymailgunner import Client self._client = Client(self._token, self._domain, self._sandbox) _LOGGER.debug("Mailgun domain: %s", self._client.domain) self._domain = self._client.domain @@ -74,7 +72,7 @@ class MailgunNotificationService(BaseNotificationService): def connection_is_valid(self): """Check whether the provided credentials are valid.""" - from pymailgun import (MailgunCredentialsError, MailgunDomainError) + from pymailgunner import (MailgunCredentialsError, MailgunDomainError) try: self.initialize_client() except MailgunCredentialsError: @@ -87,7 +85,7 @@ class MailgunNotificationService(BaseNotificationService): def send_message(self, message="", **kwargs): """Send a mail to the recipient.""" - from pymailgun import MailgunError + from pymailgunner import MailgunError subject = kwargs.get(ATTR_TITLE, ATTR_TITLE_DEFAULT) data = kwargs.get(ATTR_DATA) files = data.get(ATTR_IMAGES) if data else None diff --git a/requirements_all.txt b/requirements_all.txt index c6f56e3a9e0..4c7a06d9d30 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -300,9 +300,6 @@ https://github.com/molobrakos/python-pocketcasts/archive/9f61ff00c77c7c98ffa0af9 # homeassistant.components.switch.anel_pwrctrl https://github.com/mweinelt/anel-pwrctrl/archive/ed26e8830e28a2bfa4260a9002db23ce3e7e63d7.zip#anel_pwrctrl==0.0.1 -# homeassistant.components.notify.mailgun -https://github.com/pschmitt/pymailgun/archive/1.3.zip#pymailgun==1.3 - # homeassistant.components.switch.edimax https://github.com/rkabadi/pyedimax/archive/365301ce3ff26129a7910c501ead09ea625f3700.zip#pyedimax==0.1 @@ -590,6 +587,9 @@ pylitejet==0.1 # homeassistant.components.sensor.loopenergy pyloopenergy==0.0.17 +# homeassistant.components.notify.mailgun +pymailgunner==1.4 + # homeassistant.components.mochad pymochad==0.1.1 From 8d50045971b8145faf6810106325db10a26f799f Mon Sep 17 00:00:00 2001 From: William Scanlon Date: Thu, 4 May 2017 16:13:09 -0400 Subject: [PATCH 153/169] Suppress logs when octorpint goes offline (#7441) * Suppress logs when octorpint goes offline * Fixed line length --- homeassistant/components/octoprint.py | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/homeassistant/components/octoprint.py b/homeassistant/components/octoprint.py index db6dd9931be..b06b15c7973 100644 --- a/homeassistant/components/octoprint.py +++ b/homeassistant/components/octoprint.py @@ -85,18 +85,16 @@ class OctoPrintAPI(object): self.printer_last_reading[0] = response.json() self.printer_last_reading[1] = time.time() return response.json() - except requests.exceptions.ConnectionError as conn_exc: + except (requests.exceptions.ConnectionError, + requests.exceptions.HTTPError) as conn_exc: _LOGGER.error("Failed to update OctoPrint status. Error: %s", conn_exc) - raise def update(self, sensor_type, end_point, group, tool=None): """Return the value for sensor_type from the provided endpoint.""" - try: - return get_value_from_json( - self.get(end_point), sensor_type, group, tool) - except requests.exceptions.ConnectionError: - raise + response = self.get(end_point) + if response is not None: + return get_value_from_json(response, sensor_type, group, tool) # pylint: disable=unused-variable From d251621f2bb778d7b691dc6b1bf437e1408d3548 Mon Sep 17 00:00:00 2001 From: Nolan Gilley Date: Thu, 4 May 2017 16:14:14 -0400 Subject: [PATCH 154/169] Update join (#7443) * update python-join-api to 0.0.2 * bump python-join-api to 0.0.2 --- homeassistant/components/joaoapps_join.py | 49 +++++++++++++------ .../components/notify/joaoapps_join.py | 34 +++++++++---- requirements_all.txt | 2 +- 3 files changed, 60 insertions(+), 25 deletions(-) diff --git a/homeassistant/components/joaoapps_join.py b/homeassistant/components/joaoapps_join.py index fe87e33233c..b5bcb1e1a8a 100644 --- a/homeassistant/components/joaoapps_join.py +++ b/homeassistant/components/joaoapps_join.py @@ -11,52 +11,65 @@ import voluptuous as vol import homeassistant.helpers.config_validation as cv from homeassistant.const import CONF_NAME, CONF_API_KEY -REQUIREMENTS = ['python-join-api==0.0.1'] +REQUIREMENTS = ['python-join-api==0.0.2'] _LOGGER = logging.getLogger(__name__) DOMAIN = 'joaoapps_join' CONF_DEVICE_ID = 'device_id' +CONF_DEVICE_IDS = 'device_ids' +CONF_DEVICE_NAMES = 'device_names' CONFIG_SCHEMA = vol.Schema({ DOMAIN: vol.All(cv.ensure_list, [{ - vol.Required(CONF_DEVICE_ID): cv.string, - vol.Optional(CONF_NAME): cv.string, - vol.Optional(CONF_API_KEY): cv.string + vol.Required(CONF_API_KEY): cv.string, + vol.Optional(CONF_DEVICE_ID): cv.string, + vol.Optional(CONF_DEVICE_IDS): cv.string, + vol.Optional(CONF_DEVICE_NAMES): cv.string, + vol.Optional(CONF_NAME): cv.string }]) }, extra=vol.ALLOW_EXTRA) -def register_device(hass, device_id, api_key, name): +def register_device(hass, api_key, name, device_id, device_ids, device_names): """Register services for each join device listed.""" from pyjoin import (ring_device, set_wallpaper, send_sms, send_file, send_url, send_notification) def ring_service(service): """Service to ring devices.""" - ring_device(device_id, api_key=api_key) + ring_device(api_key=api_key, device_id=device_id, + device_ids=device_ids, device_names=device_names) def set_wallpaper_service(service): """Service to set wallpaper on devices.""" - set_wallpaper(device_id, url=service.data.get('url'), api_key=api_key) + set_wallpaper(api_key=api_key, device_id=device_id, + device_ids=device_ids, device_names=device_names, + url=service.data.get('url')) def send_file_service(service): """Service to send files to devices.""" - send_file(device_id, url=service.data.get('url'), api_key=api_key) + send_file(api_key=api_key, device_id=device_id, + device_ids=device_ids, device_names=device_names, + url=service.data.get('url')) def send_url_service(service): """Service to open url on devices.""" - send_url(device_id, url=service.data.get('url'), api_key=api_key) + send_url(api_key=api_key, device_id=device_id, + device_ids=device_ids, device_names=device_names, + url=service.data.get('url')) def send_tasker_service(service): """Service to open url on devices.""" - send_notification(device_id=device_id, - text=service.data.get('command'), - api_key=api_key) + send_notification(api_key=api_key, device_id=device_id, + device_ids=device_ids, device_names=device_names, + text=service.data.get('command')) def send_sms_service(service): """Service to send sms from devices.""" send_sms(device_id=device_id, + device_ids=device_ids, + device_names=device_names, sms_number=service.data.get('number'), sms_text=service.data.get('message'), api_key=api_key) @@ -74,13 +87,21 @@ def setup(hass, config): """Set up the Join services.""" from pyjoin import get_devices for device in config[DOMAIN]: - device_id = device.get(CONF_DEVICE_ID) api_key = device.get(CONF_API_KEY) + device_id = device.get(CONF_DEVICE_ID) + device_ids = device.get(CONF_DEVICE_IDS) + device_names = device.get(CONF_DEVICE_NAMES) name = device.get(CONF_NAME) name = name.lower().replace(" ", "_") + "_" if name else "" if api_key: if not get_devices(api_key): _LOGGER.error("Error connecting to Join, check API key") return False - register_device(hass, device_id, api_key, name) + if device_id is None and device_ids is None and device_names is None: + _LOGGER.error("No device was provided. Please specify device_id" + ", device_ids, or device_names") + return False + + register_device(hass, api_key, name, + device_id, device_ids, device_names) return True diff --git a/homeassistant/components/notify/joaoapps_join.py b/homeassistant/components/notify/joaoapps_join.py index 9afabb7249f..e391d6559e5 100644 --- a/homeassistant/components/notify/joaoapps_join.py +++ b/homeassistant/components/notify/joaoapps_join.py @@ -12,38 +12,51 @@ from homeassistant.components.notify import ( from homeassistant.const import CONF_API_KEY import homeassistant.helpers.config_validation as cv -REQUIREMENTS = ['python-join-api==0.0.1'] +REQUIREMENTS = ['python-join-api==0.0.2'] _LOGGER = logging.getLogger(__name__) CONF_DEVICE_ID = 'device_id' +CONF_DEVICE_IDS = 'device_ids' +CONF_DEVICE_NAMES = 'device_names' PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ - vol.Required(CONF_DEVICE_ID): cv.string, - vol.Optional(CONF_API_KEY): cv.string + vol.Required(CONF_API_KEY): cv.string, + vol.Optional(CONF_DEVICE_ID): cv.string, + vol.Optional(CONF_DEVICE_IDS): cv.string, + vol.Optional(CONF_DEVICE_NAMES): cv.string, }) # pylint: disable=unused-variable def get_service(hass, config, discovery_info=None): """Get the Join notification service.""" - device_id = config.get(CONF_DEVICE_ID) api_key = config.get(CONF_API_KEY) + device_id = config.get(CONF_DEVICE_ID) + device_ids = config.get(CONF_DEVICE_IDS) + device_names = config.get(CONF_DEVICE_NAMES) if api_key: from pyjoin import get_devices if not get_devices(api_key): - _LOGGER.error("Error connecting to Join. Check theAPI key") + _LOGGER.error("Error connecting to Join. Check the API key") return False - return JoinNotificationService(device_id, api_key) + if device_id is None and device_ids is None and device_names is None: + _LOGGER.error("No device was provided. Please specify device_id" + ", device_ids, or device_names") + return False + return JoinNotificationService(api_key, device_id, + device_ids, device_names) class JoinNotificationService(BaseNotificationService): """Implement the notification service for Join.""" - def __init__(self, device_id, api_key=None): + def __init__(self, api_key, device_id, device_ids, device_names): """Initialize the service.""" - self._device_id = device_id self._api_key = api_key + self._device_id = device_id + self._device_ids = device_ids + self._device_names = device_names def send_message(self, message="", **kwargs): """Send a message to a user.""" @@ -51,6 +64,7 @@ class JoinNotificationService(BaseNotificationService): title = kwargs.get(ATTR_TITLE, ATTR_TITLE_DEFAULT) data = kwargs.get(ATTR_DATA) or {} send_notification( - device_id=self._device_id, text=message, title=title, + device_id=self._device_id, device_ids=self._device_ids, + device_names=self._device_names, text=message, title=title, icon=data.get('icon'), smallicon=data.get('smallicon'), - api_key=self._api_key) + vibration=data.get('vibration'), api_key=self._api_key) diff --git a/requirements_all.txt b/requirements_all.txt index 4c7a06d9d30..5d7b3de610b 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -653,7 +653,7 @@ python-hpilo==3.9 # homeassistant.components.joaoapps_join # homeassistant.components.notify.joaoapps_join -python-join-api==0.0.1 +python-join-api==0.0.2 # homeassistant.components.lirc # python-lirc==1.2.3 From 1d9f1487c36ad59953a51bcd7df9b46de815b2e5 Mon Sep 17 00:00:00 2001 From: Greg Dowling Date: Thu, 4 May 2017 21:14:36 +0100 Subject: [PATCH 155/169] Bump pyvera version - handle malformed json replies in poll thread. (#7440) --- homeassistant/components/vera.py | 2 +- requirements_all.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/vera.py b/homeassistant/components/vera.py index 6dbac5496c2..8eb381a0b85 100644 --- a/homeassistant/components/vera.py +++ b/homeassistant/components/vera.py @@ -20,7 +20,7 @@ from homeassistant.const import ( EVENT_HOMEASSISTANT_STOP) from homeassistant.helpers.entity import Entity -REQUIREMENTS = ['pyvera==0.2.29'] +REQUIREMENTS = ['pyvera==0.2.30'] _LOGGER = logging.getLogger(__name__) diff --git a/requirements_all.txt b/requirements_all.txt index 5d7b3de610b..2c2ab44f9ff 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -704,7 +704,7 @@ pyunifi==2.0 # pyuserinput==0.1.11 # homeassistant.components.vera -pyvera==0.2.29 +pyvera==0.2.30 # homeassistant.components.notify.html5 pywebpush==0.6.1 From ea36c919192047d24f038201cce6a3352d789ebe Mon Sep 17 00:00:00 2001 From: Daniel Perna Date: Thu, 4 May 2017 22:15:36 +0200 Subject: [PATCH 156/169] Fix for broken virtual keys (#7439) --- homeassistant/components/homematic.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/homeassistant/components/homematic.py b/homeassistant/components/homematic.py index ace4795d54c..52ecb51238b 100644 --- a/homeassistant/components/homematic.py +++ b/homeassistant/components/homematic.py @@ -577,6 +577,8 @@ def _device_from_servicecall(hass, service): """Extract homematic device from service call.""" address = service.data.get(ATTR_ADDRESS) proxy = service.data.get(ATTR_PROXY) + if address == 'BIDCOS-RF': + address = 'BidCoS-RF' if proxy: return hass.data[DATA_HOMEMATIC].devices[proxy].get(address) From 1d0acb5a2ca4f82dc64df933899940a4320c0b55 Mon Sep 17 00:00:00 2001 From: William Scanlon Date: Thu, 4 May 2017 16:17:35 -0400 Subject: [PATCH 157/169] Get new token to keep pubnub updates working (#7437) --- homeassistant/components/wink.py | 82 ++++++++++++++++++++++++-------- requirements_all.txt | 2 +- 2 files changed, 63 insertions(+), 21 deletions(-) diff --git a/homeassistant/components/wink.py b/homeassistant/components/wink.py index d755d59056b..c22e32b51d4 100644 --- a/homeassistant/components/wink.py +++ b/homeassistant/components/wink.py @@ -5,17 +5,21 @@ For more details about this component, please refer to the documentation at https://home-assistant.io/components/wink/ """ import logging +import time +import json +from datetime import timedelta import voluptuous as vol from homeassistant.helpers import discovery +from homeassistant.helpers.event import track_time_interval from homeassistant.const import ( CONF_ACCESS_TOKEN, ATTR_BATTERY_LEVEL, CONF_EMAIL, CONF_PASSWORD, EVENT_HOMEASSISTANT_START, EVENT_HOMEASSISTANT_STOP) from homeassistant.helpers.entity import Entity import homeassistant.helpers.config_validation as cv -REQUIREMENTS = ['python-wink==1.2.3', 'pubnubsub-handler==1.0.2'] +REQUIREMENTS = ['python-wink==1.2.4', 'pubnubsub-handler==1.0.2'] _LOGGER = logging.getLogger(__name__) @@ -33,6 +37,9 @@ CONF_DEFINED_BOTH_MSG = 'Remove access token to use oath2.' CONF_MISSING_OATH_MSG = 'Missing oath2 credentials.' CONF_TOKEN_URL = "https://winkbearertoken.appspot.com/token" +SERVICE_ADD_NEW_DEVICES = 'add_new_devices' +SERVICE_REFRESH_STATES = 'refresh_state_from_wink' + CONFIG_SCHEMA = vol.Schema({ DOMAIN: vol.Schema({ vol.Inclusive(CONF_EMAIL, CONF_APPSPOT, @@ -65,6 +72,10 @@ def setup(hass, config): import requests from pubnubsubhandler import PubNubSubscriptionHandler + hass.data[DOMAIN] = {} + hass.data[DOMAIN]['entities'] = [] + hass.data[DOMAIN]['unique_ids'] = [] + user_agent = config[DOMAIN].get(CONF_USER_AGENT) if user_agent: @@ -73,18 +84,10 @@ def setup(hass, config): access_token = config[DOMAIN].get(CONF_ACCESS_TOKEN) client_id = config[DOMAIN].get('client_id') - if access_token: - pywink.set_bearer_token(access_token) - elif client_id: - email = config[DOMAIN][CONF_EMAIL] - password = config[DOMAIN][CONF_PASSWORD] - client_id = config[DOMAIN]['client_id'] - client_secret = config[DOMAIN]['client_secret'] - pywink.set_wink_credentials(email, password, client_id, - client_secret) - else: - email = config[DOMAIN][CONF_EMAIL] - password = config[DOMAIN][CONF_PASSWORD] + def _get_wink_token_from_web(): + email = hass.data[DOMAIN]["oath"]["email"] + password = hass.data[DOMAIN]["oath"]["password"] + payload = {'username': email, 'password': password} token_response = requests.post(CONF_TOKEN_URL, data=payload) try: @@ -94,12 +97,49 @@ def setup(hass, config): return False pywink.set_bearer_token(token) - hass.data[DOMAIN] = {} - hass.data[DOMAIN]['entities'] = [] - hass.data[DOMAIN]['unique_ids'] = [] + if access_token: + pywink.set_bearer_token(access_token) + elif client_id: + email = config[DOMAIN][CONF_EMAIL] + password = config[DOMAIN][CONF_PASSWORD] + client_id = config[DOMAIN]['client_id'] + client_secret = config[DOMAIN]['client_secret'] + pywink.set_wink_credentials(email, password, client_id, client_secret) + hass.data[DOMAIN]['oath'] = {"email": email, + "password": password, + "client_id": client_id, + "client_secret": client_secret} + else: + email = config[DOMAIN][CONF_EMAIL] + password = config[DOMAIN][CONF_PASSWORD] + hass.data[DOMAIN]['oath'] = {"email": email, "password": password} + _get_wink_token_from_web() + hass.data[DOMAIN]['pubnub'] = PubNubSubscriptionHandler( - pywink.get_subscription_key(), - pywink.wink_api_fetch) + pywink.get_subscription_key()) + + def keep_alive_call(event_time): + """Call the Wink API endpoints to keep PubNub working.""" + _LOGGER.info("Getting a new Wink token.") + if hass.data[DOMAIN]["oath"].get("client_id") is not None: + _email = hass.data[DOMAIN]["oath"]["email"] + _password = hass.data[DOMAIN]["oath"]["password"] + _client_id = hass.data[DOMAIN]["oath"]["client_id"] + _client_secret = hass.data[DOMAIN]["oath"]["client_secret"] + pywink.set_wink_credentials(_email, _password, _client_id, + _client_secret) + else: + _LOGGER.info("Getting a new Wink token.") + _get_wink_token_from_web() + time.sleep(1) + _LOGGER.info("Polling the Wink API to keep PubNub updates flowing.") + _LOGGER.debug(str(json.dumps(pywink.wink_api_fetch()))) + time.sleep(1) + _LOGGER.debug(str(json.dumps(pywink.get_user()))) + + # Call the Wink API every hour to keep PubNub updates flowing + if access_token is None: + track_time_interval(hass, keep_alive_call, timedelta(minutes=120)) def start_subscription(event): """Start the pubnub subscription.""" @@ -115,15 +155,17 @@ def setup(hass, config): """Force all devices to poll the Wink API.""" _LOGGER.info("Refreshing Wink states from API") for entity in hass.data[DOMAIN]['entities']: + # Throttle the calls to Wink API + time.sleep(1) entity.schedule_update_ha_state(True) - hass.services.register(DOMAIN, 'Refresh state from Wink', force_update) + hass.services.register(DOMAIN, SERVICE_REFRESH_STATES, force_update) def pull_new_devices(call): """Pull new devices added to users Wink account since startup.""" _LOGGER.info("Getting new devices from Wink API") for component in WINK_COMPONENTS: discovery.load_platform(hass, component, DOMAIN, {}, config) - hass.services.register(DOMAIN, 'Add new devices', pull_new_devices) + hass.services.register(DOMAIN, SERVICE_ADD_NEW_DEVICES, pull_new_devices) # Load components for the devices in Wink that we support for component in WINK_COMPONENTS: diff --git a/requirements_all.txt b/requirements_all.txt index 2c2ab44f9ff..b375c904113 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -689,7 +689,7 @@ python-twitch==1.3.0 python-vlc==1.1.2 # homeassistant.components.wink -python-wink==1.2.3 +python-wink==1.2.4 # homeassistant.components.device_tracker.trackr pytrackr==0.0.5 From 009a9d59ed175050fa9bf5374563b8e7f232009e Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Thu, 4 May 2017 21:38:28 -0700 Subject: [PATCH 158/169] Update frontend --- homeassistant/components/frontend/version.py | 6 +++--- .../frontend/www_static/frontend.html | 5 +++-- .../frontend/www_static/frontend.html.gz | Bin 140429 -> 140627 bytes .../www_static/home-assistant-polymer | 2 +- .../components/frontend/www_static/mdi.html | 2 +- .../frontend/www_static/mdi.html.gz | Bin 197577 -> 198311 bytes .../www_static/panels/ha-panel-hassio.html | 4 ++-- .../www_static/panels/ha-panel-hassio.html.gz | Bin 7449 -> 7451 bytes .../frontend/www_static/service_worker.js | 2 +- .../frontend/www_static/service_worker.js.gz | Bin 2518 -> 2513 bytes 10 files changed, 11 insertions(+), 10 deletions(-) diff --git a/homeassistant/components/frontend/version.py b/homeassistant/components/frontend/version.py index 23437de3924..943074beb40 100644 --- a/homeassistant/components/frontend/version.py +++ b/homeassistant/components/frontend/version.py @@ -3,8 +3,8 @@ FINGERPRINTS = { "compatibility.js": "83d9c77748dafa9db49ae77d7f3d8fb0", "core.js": "5d08475f03adb5969bd31855d5ca0cfd", - "frontend.html": "094c2015c8291c767b8933428d92076f", - "mdi.html": "1cc8593d3684f7f6f3b3854403216f77", + "frontend.html": "5999c8fac69c503b846672cae75a12b0", + "mdi.html": "f407a5a57addbe93817ee1b244d33fbe", "micromarkdown-js.html": "93b5ec4016f0bba585521cf4d18dec1a", "panels/ha-panel-config.html": "59d9eb28758b497a4d9b2428f978b9b1", "panels/ha-panel-dev-event.html": "2db9c218065ef0f61d8d08db8093cad2", @@ -12,7 +12,7 @@ FINGERPRINTS = { "panels/ha-panel-dev-service.html": "415552027cb083badeff5f16080410ed", "panels/ha-panel-dev-state.html": "d70314913b8923d750932367b1099750", "panels/ha-panel-dev-template.html": "567fbf86735e1b891e40c2f4060fec9b", - "panels/ha-panel-hassio.html": "0aa1523357326cb40e2242dce9b2c0d6", + "panels/ha-panel-hassio.html": "333f86e5f516b31e52365e412deb7fdc", "panels/ha-panel-history.html": "89062c48c76206cad1cec14ddbb1cbb1", "panels/ha-panel-iframe.html": "d920f0aa3c903680f2f8795e2255daab", "panels/ha-panel-logbook.html": "6dd6a16f52117318b202e60f98400163", diff --git a/homeassistant/components/frontend/www_static/frontend.html b/homeassistant/components/frontend/www_static/frontend.html index fa6cbcd1717..1fd4bda0275 100644 --- a/homeassistant/components/frontend/www_static/frontend.html +++ b/homeassistant/components/frontend/www_static/frontend.html @@ -8,6 +8,7 @@ window.hassUtil.DEFAULT_ICON = 'mdi:bookmark'; window.hassUtil.OFF_STATES = ['off', 'closed', 'unlocked']; window.hassUtil.DOMAINS_WITH_CARD = [ + 'binary_sensor', 'climate', 'cover', 'configurator', @@ -20,7 +21,7 @@ window.hassUtil.DOMAINS_WITH_CARD = [ ]; window.hassUtil.DOMAINS_WITH_MORE_INFO = [ - 'alarm_control_panel', 'automation', 'camera', 'climate', 'configurator', + 'alarm_control_panel', 'automation', 'binary_sensor', 'camera', 'climate', 'configurator', 'cover', 'fan', 'group', 'light', 'lock', 'media_player', 'script', 'sun', 'updater', ]; @@ -440,7 +441,7 @@ window.hassUtil.isComponentLoaded = function (hass, component) { window.hassUtil.computeLocationName = function (hass) { return hass.config.core.location_name; -}; \ No newline at end of file +}); \ No newline at end of file diff --git a/homeassistant/components/frontend/www_static/panels/ha-panel-hassio.html.gz b/homeassistant/components/frontend/www_static/panels/ha-panel-hassio.html.gz index 719b9c608f185cedf81b026331d45d7403fd9af8..c7689872442293fb47f9500bae9c7482f0077000 100644 GIT binary patch delta 2296 zcmVI-5ENABzYGYyk|h2R;;kQN;Jwb~5q!vBVRkm_vkr27kp6 z#Ofh=qGV?dO+CvyhTVJA56Rc6k?#^$24HVhal$N_UM%h2=R2~Xdad1FYWihrN$T>#ATBQ+Lt94*TfI=;L#B|U)5!eNS!|-)ENMxg zD(fkOPm*XMH0!>DM4sT#I0ut|%+d(m>%%8$FeIS9Sgt_YbwbGR{nrgTVN^Pu>c+T% zDP2{yZ@Xl)EjxFXn}if3Rrpvu^zpIxWsQ8P8qSHfvQB=Z>g(eTiHNng4{p3W>A z=0*Q@c_Eq!1>U!%;5E@$@m}BN>#TvGFhlD-t$E65Z)Z0zxGw$2IRN&5eLg+Md8do; zu8_*V+y2?RaCj)}ZZ=}j+pT(+qy_vWet~{{_CR#{9$#sW^;`!bC}LoEJ!W9QdQBB4 zAax56U6U`FqigcYLsXh*+w~BNG2pHf_X2C>;6)3i?RKg%Z8x|$Y1zK=C=cXDyw|f(^noFkWQ8my5%JxqDcI}K&TQTk{2{$m& z`FzIvIe>l4pLY1%dWr;wRwS?aXTT*tk9Hcpy2R@;uGv$67}v~hT>DtgjK!<-yk#&m zy(2cYlZ?MUqjzN`OF-kS8z$CoE~qvQe#|E#^EB_59qaLvv7<3L$wV5sIE5RNmoNFj zSw4|f7vvI;&2n}xWHOn=5?#L4y=uQ!@_W*wZI@9Pias7gNmz~>7*A3KB*sq`*MVhU z{{aJS+%|uImpLD_LF_q+dYxzUWU(%ZbF)llOO#LCc-N=Fp}8|B5a_Vz*O{03DsSumxfE7c`anlSKak#k_V(s$u6vMRJ|LQX;3Y^*r=smf}(CsQ_}o-5u2!t3Hs>2W@Yx&Ux?dT;qh??YNCf?{^zjI2_b^AC=zw zKB}g2o=g?(-d}jw7C{Fa$Z#GHSpK<#d2zGU;qFh>M%3KIs+HZtLFiR2WR> zB}&6?8d0hRcORw6nn|6BUz(A*rmOLzY@=d-=1Q|#FzYbs%w#cH@+@(5jqi!$=&Kn> z8S{5X7aQyyV^EMspIw)7e^@6e-p`P%;rgJUKrvEURHGq#%_&e%DupV_a{XF?jT*0M zp-e6FvU0bVzUBOwb^Zmzc)L@#%i-G{(?2qXuDngfj)9X@KG3H9<`i?ay&c!dbRhYE z`99mpnzt@iZs#s?HQ`SZh;P2w&_>yl$%}%UP~FZVIuP)>oO%1h>1uLusUwF)=nAXf z=_fvwnU*eM=Q;2&@VeDx)`A70GhT`F4NbOZE}^Y`GR0d$mUmwpt7Z=C9}}aC-!?NZ z^WEFh?)^O){nC^1z8BX~vJ573HoyvhCvd*|24BXpz0t1!7U}=#y9=ff(dUVA1LiI`IozvL{o%+xy=$OWGR#+`SY+D%6_6++X~27zuN$5+MOZ`&QW+}E^7Np_ z{0t+Lf|lQ^t&zLgn104~3-HEJ07O26!7D3XCf1Pe2WlPf+=o!_ew;I7LgK-UKUDf& z{>0GER8#(Yg(68(S36b(+#2_PE`_XP>zmKnCP$60)%kragwuG5#`~dyD7q^7$DL8uyV?7n;1NG(z2gxc0kPv59u6^o&&wHko9n+F z*8Owf`%-a)!4;4E%m!cKu%Qk0&E9+O=nyt+X<#s_Dg?t zXyoFTa~|s6KV-z8rnZNS&t_I$=?iCpQ6LVgIpdsi*Z?g zKTOfY0QqsOwg&R{rkrYLdD&Ke*B+w7Yn*3|+9o=`h2Pcl0P65>LcP(T1#BSq_Z>P< zXydTi;{wT+u;s*9h~n#x?*%q&uH~#pn+KRPqE7lXRcLFaccit`twVP+HfgMt;TegG SDNDLaPyZJH4VrF!g#Z9V6QX(m delta 2294 zcmVm`v#azDr;kfW1}43A5ySvFvwS6U>YMQkhu?N%di! zW&B?Gy;qSt==B<&@5qDdwRU@{>6fb|smlw4xV(4_Z5>H$^+I_MnL>_EBlAn=v59W8 zq$Po>tfveh` z-*=lldlwFmf8EVS40^j&kCC*1pTrf=@5~;EPT%9x%(0%}AY?-f4DZAY3|OzJ)dZxj z^rLI?B@=T^UU`TX6K%U*KQRW}bn~AV26fS!>lg0}dGF_}B z^O96c%!Owkn(tCPrLeIXzQ3e3IlX>;NXLlNHI= zbkN**(Xjy%e>oyO-8A7~ICTl+W0-FA0DsOz^`SoH_I%qFgRldsZ=!bzA^Ize7< z#zzi+D#q_*d6q$1=Ba$m20?tAD&E+VLH|GfR8QI5l@Q7j_t@iq+I`|^_GxEEXgdQ{ z-=;G1!JjaBwBC+?YIzxTmD(3*rD4`E4UEh`x1&_pc6Z`vh%6fu!*+L4Q9f*ULx@Im zYJ^1e9!fuY1=dDisABea)Wn6Yx*rvKnygh#NqwQT)%%#79VxDzVQDL@eI?-rCOV(b zcs~cQkNMM1oLldYz|e~1HUA8_ejIi*CMTK5{T4@WWAgGPKP}5A zvg(3d;#pbFE`v-alUSn5x4KvD*Ghg*PPFX?3PaJyV<-trYy;y-s({4!$>KV&lPjEzi0G%#+uq)Pe9d(a63hogvk$!ah}nCE^e%hd zLO%yX{svv80k-t^9TIipV;!Tz%M&6I(a-W*>`ZSR3rN`Wuz@vPmnowza`4^sMzOx)P?&)s{ESRn?Zpaiqp|*&2Ki0Vas;IhK^v`fvbjLCAm%ccv%Z;I1u-xY6 z8QPU;`P>;{nS*cQ7xmlRDh}sd`*1mAit?ZNewLSK4jeTb>Go>AX2< z*i9o!wczffG+8sLGx19^GS_r9ew1xg%v@=IRtshwCY_lqCQF_rj;`@NaU6X$11V$v z?&xBJy<-dt^60ZWQtl7yB*jY^k~Lf(6ci{%N{ebVWKTE+>K&y}MOm(2E3i@H2`!YV zWnNb9_R_Z;8MDs6U>I+A>UKGNyJPxC#?Y0wsY1Nvm89}jHtmO|n5*sWxI?A`$lZ#6oIV?g~Sp7~v z@u|#QbP+qxfro+DttPV;EC`+P9-MDzvORMNZS9jO9uTrT_S#rAb6EeF7+w6JnR$cn z-j;UnkI?8hos37lxQ>!#FqyLfRycuw^W8W29FFZ_cKruP|4$!VFpZc-p|tes+`uv3 zr+>gB><@T(-B{m;s8Rj0{vLh0%1>d1i zdz{X(y_|EyB&bUQSoM>5zQ8OLZx$e83xWsgZ0k0rbn0uk32kj-N-`v|_aT6PJ?^`+ zYlPUWl~-n)F#@RTXSB3h8jP-&L;1~ukq z7?~8b{8nv^+|9=HGqziRH--Wr^6d*=S@ANlhI~Iz>v-orgnI1boEZ}m4`%#z()aRr zg?46_@*gP_d6Bx>u`1x!xOXXkWF1@I6wWp|YJ9EE?_(jH#`81Q$7&q)s7&M88Am+@ z)A?A8BGXj${qv!JOUO;v5<2WX(^bK&OzXI82RA-sta}dwvCn&^dV@RJ&7SSZfk~RN zt?-Z`whwUgl5{Okub)HFRmnf@jI!R%-v927_zmkFFYgG59dGY&hGT~*kMHRH;sL3~F4k$OA3FkaqN*2QJJ@SF<1*P!Fs-s*`cp$A z7r&hIQ1|{JBmN$>J!E_?gDvI5G$zvcfmlEC^TuN|c)3pgP_X(G9UdO!^1xY)%kraP ziY5lgk7KnpkXJV4RLdJ>w(`67`W)WfJZsc8(fKX>uAT=_hkq05jRq}X1G&HN(0M`| zhs_=rNVbG6C&oe)Uw3>Yuwip8XFb|Hz?>0v(yysPTPwXIt(|Tix|^{{W33F&NZdtP Q(p7r;zk*1?8FGaH0GK0?AOHXW diff --git a/homeassistant/components/frontend/www_static/service_worker.js b/homeassistant/components/frontend/www_static/service_worker.js index 244c0a6b13d..79fc54a2fc6 100644 --- a/homeassistant/components/frontend/www_static/service_worker.js +++ b/homeassistant/components/frontend/www_static/service_worker.js @@ -1 +1 @@ -"use strict";function setOfCachedUrls(e){return e.keys().then(function(e){return e.map(function(e){return e.url})}).then(function(e){return new Set(e)})}function notificationEventCallback(e,t){firePushCallback({action:t.action,data:t.notification.data,tag:t.notification.tag,type:e},t.notification.data.jwt)}function firePushCallback(e,t){delete e.data.jwt,0===Object.keys(e.data).length&&e.data.constructor===Object&&delete e.data,fetch("/api/notify.html5/callback",{method:"POST",headers:new Headers({"Content-Type":"application/json",Authorization:"Bearer "+t}),body:JSON.stringify(e)})}var precacheConfig=[["/","43b9f99469029c48e429731761b03abd"],["/frontend/panels/dev-event-2db9c218065ef0f61d8d08db8093cad2.html","b5b751e49b1bba55f633ae0d7a92677d"],["/frontend/panels/dev-info-61610e015a411cfc84edd2c4d489e71d.html","6568377ee31cbd78fedc003b317f7faf"],["/frontend/panels/dev-service-415552027cb083badeff5f16080410ed.html","a4b1ec9bfa5bc3529af7783ae56cb55c"],["/frontend/panels/dev-state-d70314913b8923d750932367b1099750.html","c61b5b1461959aac106400e122993e9e"],["/frontend/panels/dev-template-567fbf86735e1b891e40c2f4060fec9b.html","d2853ecf45de1dbadf49fe99a7424ef3"],["/frontend/panels/map-31c592c239636f91e07c7ac232a5ebc4.html","182580419ce2c935ae6ec65502b6db96"],["/static/compatibility-83d9c77748dafa9db49ae77d7f3d8fb0.js","5f05c83be2b028d577962f9625904806"],["/static/core-5d08475f03adb5969bd31855d5ca0cfd.js","1cd99ba798bfcff9768c9d2bb2f58a7c"],["/static/frontend-094c2015c8291c767b8933428d92076f.html","9f6ff2fa80d6e34106c533b941ad0141"],["/static/mdi-1cc8593d3684f7f6f3b3854403216f77.html","eac41ec8397af607a07bc174e3c2475f"],["static/fonts/roboto/Roboto-Bold.ttf","d329cc8b34667f114a95422aaad1b063"],["static/fonts/roboto/Roboto-Light.ttf","7b5fb88f12bec8143f00e21bc3222124"],["static/fonts/roboto/Roboto-Medium.ttf","fe13e4170719c2fc586501e777bde143"],["static/fonts/roboto/Roboto-Regular.ttf","ac3f799d5bbaf5196fab15ab8de8431c"],["static/icons/favicon-192x192.png","419903b8422586a7e28021bbe9011175"],["static/icons/favicon.ico","04235bda7843ec2fceb1cbe2bc696cf4"],["static/images/card_media_player_bg.png","a34281d1c1835d338a642e90930e61aa"],["static/webcomponents-lite.min.js","32b5a9b7ada86304bec6b43d3f2194f0"]],cacheName="sw-precache-v3--"+(self.registration?self.registration.scope:""),ignoreUrlParametersMatching=[/^utm_/],addDirectoryIndex=function(e,t){var n=new URL(e);return"/"===n.pathname.slice(-1)&&(n.pathname+=t),n.toString()},cleanResponse=function(e){return e.redirected?("body"in e?Promise.resolve(e.body):e.blob()).then(function(t){return new Response(t,{headers:e.headers,status:e.status,statusText:e.statusText})}):Promise.resolve(e)},createCacheKey=function(e,t,n,a){var c=new URL(e);return a&&c.pathname.match(a)||(c.search+=(c.search?"&":"")+encodeURIComponent(t)+"="+encodeURIComponent(n)),c.toString()},isPathWhitelisted=function(e,t){if(0===e.length)return!0;var n=new URL(t).pathname;return e.some(function(e){return n.match(e)})},stripIgnoredUrlParameters=function(e,t){var n=new URL(e);return n.search=n.search.slice(1).split("&").map(function(e){return e.split("=")}).filter(function(e){return t.every(function(t){return!t.test(e[0])})}).map(function(e){return e.join("=")}).join("&"),n.toString()},hashParamName="_sw-precache",urlsToCacheKeys=new Map(precacheConfig.map(function(e){var t=e[0],n=e[1],a=new URL(t,self.location),c=createCacheKey(a,hashParamName,n,!1);return[a.toString(),c]}));self.addEventListener("install",function(e){e.waitUntil(caches.open(cacheName).then(function(e){return setOfCachedUrls(e).then(function(t){return Promise.all(Array.from(urlsToCacheKeys.values()).map(function(n){if(!t.has(n)){var a=new Request(n,{credentials:"same-origin"});return fetch(a).then(function(t){if(!t.ok)throw new Error("Request for "+n+" returned a response with status "+t.status);return cleanResponse(t).then(function(t){return e.put(n,t)})})}}))})}).then(function(){return self.skipWaiting()}))}),self.addEventListener("activate",function(e){var t=new Set(urlsToCacheKeys.values());e.waitUntil(caches.open(cacheName).then(function(e){return e.keys().then(function(n){return Promise.all(n.map(function(n){if(!t.has(n.url))return e.delete(n)}))})}).then(function(){return self.clients.claim()}))}),self.addEventListener("fetch",function(e){if("GET"===e.request.method){var t,n=stripIgnoredUrlParameters(e.request.url,ignoreUrlParametersMatching);t=urlsToCacheKeys.has(n);t||(n=addDirectoryIndex(n,"index.html"),t=urlsToCacheKeys.has(n));!t&&"navigate"===e.request.mode&&isPathWhitelisted(["^((?!(static|api|local|service_worker.js|manifest.json)).)*$"],e.request.url)&&(n=new URL("/",self.location).toString(),t=urlsToCacheKeys.has(n)),t&&e.respondWith(caches.open(cacheName).then(function(e){return e.match(urlsToCacheKeys.get(n)).then(function(e){if(e)return e;throw Error("The cached response that was expected is missing.")})}).catch(function(t){return console.warn('Couldn\'t serve response for "%s" from cache: %O',e.request.url,t),fetch(e.request)}))}}),self.addEventListener("push",function(e){var t;e.data&&(t=e.data.json(),e.waitUntil(self.registration.showNotification(t.title,t).then(function(e){firePushCallback({type:"received",tag:t.tag,data:t.data},t.data.jwt)})))}),self.addEventListener("notificationclick",function(e){var t;notificationEventCallback("clicked",e),e.notification.close(),e.notification.data&&e.notification.data.url&&(t=e.notification.data.url)&&e.waitUntil(clients.matchAll({type:"window"}).then(function(e){var n,a;for(n=0;nRRMwlCb**gK)T0jUbMs871?V?z)%g(IwP4q6J%Z>H+;)Bt*#*@8cEQ01OR+lr zV%=8v!TtHAHQbC|fyEj8Y-dZ|*wU0rxQCyvp|;ONRY{>f`4HOR&Xg^@Sa*xv?49V> zUD;?Dgj!gEPy2ErHy2tle>{&mP8+K?4D^yx_gT>RA2%3yIm2+v)Syq z{0Pbp=nb!esDgTK7Z(?sPgPT+C)Ua~?QX%v#eulcfK?0Mn}}68>CL;17Is;&iQ3rU zg?CG^i$-60FP^`8?S%^v8rts4q5Jn??B99Mn%W|k!295yXz98R3izp-7yiaSS9$IH$njydDe7RpnH%EH}~=Sxy-cREKVe zRbtXOi;dgDR+UZ)MnRdBX&@T6Zc=W5bCIV>3WlCmg=uAsXfvLugz}7L1{K7)$^||r zf`L@&Rs$&#=5XW+62&PKkb%k=ixZh4k+MO91E^FJ)ht&ykY!cc+i^iPS9zYNg%(C| zEmJN4iIW?u3nSy`V}}ZuiJ3yTK_cU%&@9h+mKgkFJWi3Mj}){B4$?KvaUB&}GM;g% zDJdA!Oo><-J;)_Wb1p^B3u%-wJkJWnbs}YASRrzCAa{$=eW}YaQL12^YMK=(@;Wof@PegjOcRnJ z54VCrs1#XRP@W5u#kq)csYspzRf*elFL-M;8r@CWMmDyYyzGC*KQ@()tToO?nsC&L zM&cd}A*tXjO%fr5CNj?Gw?zF?&KGtgE0@g3qA-X78b?xUkkJXjI7*U)BD;~Z&~7{!W=#RRF5OQdo7O~YQod|iolBTXo3a?UlwEM*wsnGq7Rjx013 zDbjpjTImYI#E5G*7!#g+#=mG)&ruF?ocA72knx$wAt_?qp#&ZiLUMLiPK5t(eVitg zNiA~J3T|7-1m$RrT*@#+57sZm96GEtt^Tk?Xv7DM`&(!~$oa+^LDQrlnkZ6GrYS8% zmL_Nlr!izih<#}{7_b<5O^xZj8)NKY=TO!|7|=vA!DTMAC^8zS=)O#*$U~D5o|@Qu z|32)C%x_`|Gq1ZDZ>!GunvTcbrQbniq88>QR;a#&Jw2LCo3;{ljuzN0?+5HA;^|dly{cZ`DXYc-(~9gC=aN(zoH=wtawT zGYXym)^1`LY@T1kXSl>czQ?%8|)09?tIrZOE}pFZ}!%=RH19JRzLRy)dvjy zW9&m|10u8SV8cHWL>)GL)<>j*^G*Bao0;c2cT-lV`P7Ft!al9NJ;A6an2n*suKr#8 zKIr@Zv${SuWxZ83jM215F|iQcqQ_te{SSMw?}d26=w3HlYIQvtzoNFop7h872c4Zc z1H&4B2!{HD=fXa5RL#&GBR^(`1op+DO~~OVWQ+bgv1fd!-ronow3mmuq(993;z(5^ zrWm&vI~7*beaj%a5v6@o+p_Ze9dr@qtlHltzw@W5<1^gZnBPVzs`r0rTX7pyN>!!n1n^gs%Wpu{GvyE`w8Hz_ zPp`c`8Mgx~qTwXG0TE;SY%cX5*5DSt)(-?zJA3Sff%sF4rKp}AbqUB93~n3@-Et6~ z6A(-eeUFbnEm#%+1YJ`)?H}~!KdG1=>6}6917rL z`E%$?^zk}$KI~{W9g@T*LA+kTs8^{U(t%wFJGv3w2tKd+-f2{JBV>4o8;iVws;al( zL=JFGbW^!-Yis}eXU)3O^}oKiBZoIU=;#yDcbzwKsdTX5YV_Un?+@|DOtQJs*-iJ% zKTrMDx?7yc5Yyp)2;GN;Y;*I}xfl!g6T^ufc+uSaws+0tW3?`Av*f@Zv?%5jWYz?#t-iARMlW| zKbjs;J2C0pvw`#EyTGm5%ekBM)id`8Oq3gJZZPzl8}HP$XWy}fVv1D3po^#VU$$-J zw7$FykkkUZks7-Zrw_A%%MPYd>&`X#VoP`t^>cnO#T8pKT&TV6RR_Bw_xO!(zn*0e boq^~bI^(Nuz^{8RV0Hg5e3-=mV-^4aUv%DK literal 2518 zcmV;{2`Tm;iwFqBD+pNv19N3^c4=c}Uw3bEYh`jSYI6XkSZj0Jx)J>=3a8g0Yl&$$K*qro55otF`-D6gzUJE|9clCB}wXt_l|f&Q-{WST3x}^(<*?Do*S4-4|JOAN zX^Q`Ja~IBUz#C{r&bhhud{L|Gi+{X({VK4?spe=!AGAx}j8+XuiyYLTi}~!+CuidL zP7({I8B0J>C94-6|bOdCkigdU}HXxlwdL1QI5Q5S&t-#xaLbWt>H6mOY@SsB}F}NlHQp3FQeP zQp-F6r6QTABxjHjwNaDOG>@|kASP0%EZ3l97{&s3q%+O+X*Df0mxY9JLMWwC7-dp~ zc`Pt4T2oEZFb@+nVXKKJf`DW~b1Gy^BgS=><+vxBNo(m2(qAk1XO z@j2oYgiJOXNFGt^M2BB*G|HG|N~TY5b!sOc12^6g21@glm%Fx|l0L zS;~ZpNlvMvl7~{OUM`V}F~KvI3oW%~S(;0xA|WD8bDqgPxf>6SLzc)0K`Zl!5t(6d za~8)58pfh9OZCPrOs85$n&+WPAx4;`lE#>r3E?Uv3E7jrRK=J`nNt?4IL#Bpb*d5J zIZcu9d!!hBuwW{}2ZtTVz8~EEq0nleOaPw_!rFkYiPcR`CtvV zpd*S%lE+lVan92uLQ_~ALP|K_m3D;*i9Xg*s`(2ZH#g{O1+N<%V>x?hs@z^1a^M*Gl(O{2!$+6L5Z<~FZ{Ju8JFO$zcSL(0W@oj&;eqJf~KD#3^w(;BU zSIumn{qXh$HpFSqYq0-eJFfyPGK&hO2Q9W*aL2?uJ9F=*&u7N-k%83jx}NHKx4tZa zS8t(3C$%s;%BdQRgEa}%6W6hQ*(q@P$(yEL7Oj2V*5xH2;d=K;nAsy? z8x7!GJ&F1uc?3iSw2)kal6M$_))#Dcer&If(!f7!`>$Hx;!`@Y^ltL?n;61DAf z(gOpm>&(m==vVkdFxBrO=XZsptb2Bh_?Ybj*yZ~+A%-83jrTwC9pioZ`PTEMojj~1 z-C^d11yzMU#k|GbDY2XGS_Z)tFU*I^6s6nkpbfBQRqnR@6}R%^Q((*gMwqj}^&yAuHnbo;GXeZ&~{@U;v469BNs z)k_4{J_34dZjQz$Lo)q8kaFToUme9q^-%Eb5#RH+V*8^je)C5hCCkDx0sQ5~@+Yq9 zkh1S5w8Ht@v-eI{jGG=6L4Oh+oQS!7vX;7cYj6t>@d0mYX7{7e1Al6;6;-nXmVkJ{ z9=ScM`oUMl4_m9sAHzZO z%T?Wcg9drkk0q}PZDrXLK4!7^=RYAK+uM0ZNw&4mp4|7V-)=QKxeedgD~&$+)JIIc z{~eHh1H3PP4qb~rT!+DjE$pU!kr)cZ`vr_TmFlh>m<2bZE8dRa`>NwkqoN%l!du)} z;Pg#W1Ap1u)ux;54iup8gI zzmsK+#r5<0(STR0$31|X=4@u09OC&XaE2J From 81b567b68f8e43b9a9d4fba1b22f27d505168084 Mon Sep 17 00:00:00 2001 From: Anders Melchiorsen Date: Wed, 26 Apr 2017 22:44:33 +0200 Subject: [PATCH 159/169] LIFX: refresh state after stopping an effect This clears the internal cache in case polling picked up the state as set by an effect. For example, aborting an effect by selecting a new brightness could keep a color set by the effect. --- homeassistant/components/light/lifx/effects.py | 1 + 1 file changed, 1 insertion(+) diff --git a/homeassistant/components/light/lifx/effects.py b/homeassistant/components/light/lifx/effects.py index 07b97d03a12..2c054d49e1a 100644 --- a/homeassistant/components/light/lifx/effects.py +++ b/homeassistant/components/light/lifx/effects.py @@ -205,6 +205,7 @@ class LIFXEffect(object): light.device.set_color(light.effect_data.color) yield from asyncio.sleep(0.5) light.effect_data = None + yield from light.refresh_state() self.lights.remove(light) def from_poweroff_hsbk(self, light, **kwargs): From 655b82c1e215874353db66e32c18ca94618ecd46 Mon Sep 17 00:00:00 2001 From: Anders Melchiorsen Date: Wed, 26 Apr 2017 22:47:32 +0200 Subject: [PATCH 160/169] LIFX: Use 3500K as neutral white This does not really matter because the colorloop uses saturated colors (without much white). Anyway, just copy the 3500K that the LIFX app uses. --- homeassistant/components/light/lifx/effects.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/light/lifx/effects.py b/homeassistant/components/light/lifx/effects.py index 2c054d49e1a..aa5179e0207 100644 --- a/homeassistant/components/light/lifx/effects.py +++ b/homeassistant/components/light/lifx/effects.py @@ -31,6 +31,8 @@ ATTR_CHANGE = 'change' WAVEFORM_SINE = 1 WAVEFORM_PULSE = 4 +NEUTRAL_WHITE = 3500 + LIFX_EFFECT_SCHEMA = vol.Schema({ vol.Optional(ATTR_ENTITY_ID): cv.entity_ids, vol.Optional(ATTR_POWER_ON, default=True): cv.boolean, @@ -313,7 +315,7 @@ class LIFXEffectColorloop(LIFXEffect): int(65535/359*lhue), int(random.uniform(0.8, 1.0)*65535), brightness, - 4000, + NEUTRAL_WHITE, ] light.device.set_color(hsbk, None, transition) @@ -325,7 +327,7 @@ class LIFXEffectColorloop(LIFXEffect): def from_poweroff_hsbk(self, light, **kwargs): """Start from a random hue.""" - return [random.randint(0, 65535), 65535, 0, 4000] + return [random.randint(0, 65535), 65535, 0, NEUTRAL_WHITE] class LIFXEffectStop(LIFXEffect): From 1e4b56c4d4300310109cf1e49c1c98dc707469bf Mon Sep 17 00:00:00 2001 From: Anders Melchiorsen Date: Wed, 26 Apr 2017 22:51:33 +0200 Subject: [PATCH 161/169] LIFX: Move random hue initial color to the LIFXEffect base class It's a reasonable default for several light effects. --- homeassistant/components/light/lifx/effects.py | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/homeassistant/components/light/lifx/effects.py b/homeassistant/components/light/lifx/effects.py index aa5179e0207..1365be60d71 100644 --- a/homeassistant/components/light/lifx/effects.py +++ b/homeassistant/components/light/lifx/effects.py @@ -212,7 +212,7 @@ class LIFXEffect(object): def from_poweroff_hsbk(self, light, **kwargs): """Return the color when starting from a powered off state.""" - return None + return [random.randint(0, 65535), 65535, 0, NEUTRAL_WHITE] class LIFXEffectBreathe(LIFXEffect): @@ -325,10 +325,6 @@ class LIFXEffectColorloop(LIFXEffect): yield from asyncio.sleep(period) - def from_poweroff_hsbk(self, light, **kwargs): - """Start from a random hue.""" - return [random.randint(0, 65535), 65535, 0, NEUTRAL_WHITE] - class LIFXEffectStop(LIFXEffect): """A no-op effect, but starting it will stop an existing effect.""" From 4be89521d4879023aaa095674175c486fcf68f05 Mon Sep 17 00:00:00 2001 From: Anders Melchiorsen Date: Sat, 29 Apr 2017 18:27:22 +0200 Subject: [PATCH 162/169] LIFX: Update aiolifx requirement This update silences some warnings (frawau/aiolifx#7). --- homeassistant/components/light/lifx/__init__.py | 2 +- requirements_all.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/light/lifx/__init__.py b/homeassistant/components/light/lifx/__init__.py index f1b20f904d2..22e7ee04fcc 100644 --- a/homeassistant/components/light/lifx/__init__.py +++ b/homeassistant/components/light/lifx/__init__.py @@ -32,7 +32,7 @@ from . import effects as lifx_effects _LOGGER = logging.getLogger(__name__) -REQUIREMENTS = ['aiolifx==0.4.5'] +REQUIREMENTS = ['aiolifx==0.4.6'] UDP_BROADCAST_PORT = 56700 diff --git a/requirements_all.txt b/requirements_all.txt index b375c904113..4f0edd805e1 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -48,7 +48,7 @@ aiodns==1.1.1 aiohttp_cors==0.5.3 # homeassistant.components.light.lifx -aiolifx==0.4.5 +aiolifx==0.4.6 # homeassistant.components.alarmdecoder alarmdecoder==0.12.1.0 From 1c5eb8836801173e7f5dc7807edcd7a171e7e6d0 Mon Sep 17 00:00:00 2001 From: Anders Melchiorsen Date: Sat, 29 Apr 2017 22:24:18 +0200 Subject: [PATCH 163/169] LIFX: avoid warnings about already running updates Forcing a refresh will log a warning if the periodic async_update happens to be running already. So let's do the refresh locally and remove the force_refresh. --- homeassistant/components/light/lifx/__init__.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/homeassistant/components/light/lifx/__init__.py b/homeassistant/components/light/lifx/__init__.py index 22e7ee04fcc..01038814f51 100644 --- a/homeassistant/components/light/lifx/__init__.py +++ b/homeassistant/components/light/lifx/__init__.py @@ -263,17 +263,19 @@ class LIFXLight(Light): """Return the list of supported effects.""" return lifx_effects.effect_list() - @callback + @asyncio.coroutine def update_after_transition(self, now): """Request new status after completion of the last transition.""" self.postponed_update = None - self.hass.async_add_job(self.async_update_ha_state(force_refresh=True)) + yield from self.refresh_state() + yield from self.async_update_ha_state() - @callback + @asyncio.coroutine def unblock_updates(self, now): """Allow async_update after the new state has settled on the bulb.""" self.blocker = None - self.hass.async_add_job(self.async_update_ha_state(force_refresh=True)) + yield from self.refresh_state() + yield from self.async_update_ha_state() def update_later(self, when): """Block immediate update requests and schedule one for later.""" From 71f9507df724d11fbf5fd1776f40813fdd0dddd0 Mon Sep 17 00:00:00 2001 From: Anders Melchiorsen Date: Tue, 2 May 2017 23:30:07 +0200 Subject: [PATCH 164/169] LIFX: fix color restore after running effects State restoration takes up to a second because bulbs can be slow to react. During this time an effect could keep running, overwriting the state that we were trying to restore. Now the effect forgets the light immediately and it thus avoids further changes while the restored state settles. --- .../components/light/lifx/effects.py | 21 ++++++++++--------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/homeassistant/components/light/lifx/effects.py b/homeassistant/components/light/lifx/effects.py index 1365be60d71..2dc56443723 100644 --- a/homeassistant/components/light/lifx/effects.py +++ b/homeassistant/components/light/lifx/effects.py @@ -198,18 +198,19 @@ class LIFXEffect(object): @asyncio.coroutine def async_restore(self, light): """Restore to the original state (if we are still running).""" - if light.effect_data: - if light.effect_data.effect == self: - if light.device and not light.effect_data.power: - light.device.set_power(False) - yield from asyncio.sleep(0.5) - if light.device: - light.device.set_color(light.effect_data.color) - yield from asyncio.sleep(0.5) - light.effect_data = None - yield from light.refresh_state() + if light in self.lights: self.lights.remove(light) + if light.effect_data and light.effect_data.effect == self: + if light.device and not light.effect_data.power: + light.device.set_power(False) + yield from asyncio.sleep(0.5) + if light.device: + light.device.set_color(light.effect_data.color) + yield from asyncio.sleep(0.5) + light.effect_data = None + yield from light.refresh_state() + def from_poweroff_hsbk(self, light, **kwargs): """Return the color when starting from a powered off state.""" return [random.randint(0, 65535), 65535, 0, NEUTRAL_WHITE] From bfd61100914df10241519d828ca3fc54a4b92039 Mon Sep 17 00:00:00 2001 From: Anders Melchiorsen Date: Wed, 3 May 2017 21:26:04 +0200 Subject: [PATCH 165/169] LIFX: handle unavailable lights gracefully Recent aiolifx allow sending messages to unregistered devices (as a no-op). This is handy because bulbs can disappear anytime we yield and constantly testing for availability is both error-prone and annoying. So keep the aiolifx device around until a new one registers on the same mac_addr. --- .../components/light/lifx/__init__.py | 19 +++++++------ .../components/light/lifx/effects.py | 27 +++++++++---------- 2 files changed, 24 insertions(+), 22 deletions(-) diff --git a/homeassistant/components/light/lifx/__init__.py b/homeassistant/components/light/lifx/__init__.py index 01038814f51..f13934011e9 100644 --- a/homeassistant/components/light/lifx/__init__.py +++ b/homeassistant/components/light/lifx/__init__.py @@ -93,6 +93,7 @@ class LIFXManager(object): if device.mac_addr in self.entities: entity = self.entities[device.mac_addr] entity.device = device + entity.registered = True _LOGGER.debug("%s register AGAIN", entity.who) self.hass.async_add_job(entity.async_update_ha_state()) else: @@ -118,7 +119,7 @@ class LIFXManager(object): if device.mac_addr in self.entities: entity = self.entities[device.mac_addr] _LOGGER.debug("%s unregister", entity.who) - entity.device = None + entity.registered = False self.hass.async_add_job(entity.async_update_ha_state()) @@ -172,6 +173,7 @@ class LIFXLight(Light): def __init__(self, device): """Initialize the light.""" self.device = device + self.registered = True self.product = device.product self.blocker = None self.effect_data = None @@ -183,7 +185,7 @@ class LIFXLight(Light): @property def available(self): """Return the availability of the device.""" - return self.device is not None + return self.registered @property def name(self): @@ -345,7 +347,7 @@ class LIFXLight(Light): def async_update(self): """Update bulb status (if it is available).""" _LOGGER.debug("%s async_update", self.who) - if self.available and self.blocker is None: + if self.blocker is None: yield from self.refresh_state() @asyncio.coroutine @@ -357,11 +359,12 @@ class LIFXLight(Light): @asyncio.coroutine def refresh_state(self): """Ask the device about its current state and update our copy.""" - msg = yield from AwaitAioLIFX(self).wait(self.device.get_color) - if msg is not None: - self.set_power(self.device.power_level) - self.set_color(*self.device.color) - self._name = self.device.label + if self.available: + msg = yield from AwaitAioLIFX(self).wait(self.device.get_color) + if msg is not None: + self.set_power(self.device.power_level) + self.set_color(*self.device.color) + self._name = self.device.label def find_hsbk(self, **kwargs): """Find the desired color from a number of possible inputs.""" diff --git a/homeassistant/components/light/lifx/effects.py b/homeassistant/components/light/lifx/effects.py index 2dc56443723..a15360df33e 100644 --- a/homeassistant/components/light/lifx/effects.py +++ b/homeassistant/components/light/lifx/effects.py @@ -176,18 +176,16 @@ class LIFXEffect(object): def async_setup(self, **kwargs): """Prepare all lights for the effect.""" for light in self.lights: + # Remember the current state (as far as we know it) yield from light.refresh_state() - if not light.device: - self.lights.remove(light) - else: - light.effect_data = LIFXEffectData( - self, light.is_on, light.device.color) + light.effect_data = LIFXEffectData( + self, light.is_on, light.device.color) - # Temporarily turn on power for the effect to be visible - if kwargs[ATTR_POWER_ON] and not light.is_on: - hsbk = self.from_poweroff_hsbk(light, **kwargs) - light.device.set_color(hsbk) - light.device.set_power(True) + # Temporarily turn on power for the effect to be visible + if kwargs[ATTR_POWER_ON] and not light.is_on: + hsbk = self.from_poweroff_hsbk(light, **kwargs) + light.device.set_color(hsbk) + light.device.set_power(True) # pylint: disable=no-self-use @asyncio.coroutine @@ -202,12 +200,13 @@ class LIFXEffect(object): self.lights.remove(light) if light.effect_data and light.effect_data.effect == self: - if light.device and not light.effect_data.power: + if not light.effect_data.power: light.device.set_power(False) yield from asyncio.sleep(0.5) - if light.device: - light.device.set_color(light.effect_data.color) - yield from asyncio.sleep(0.5) + + light.device.set_color(light.effect_data.color) + yield from asyncio.sleep(0.5) + light.effect_data = None yield from light.refresh_state() From 03e3fb77c4140092ed298852e2cbbab1405a05d1 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Thu, 4 May 2017 21:41:11 -0700 Subject: [PATCH 166/169] Version bump to 0.44 --- homeassistant/const.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/homeassistant/const.py b/homeassistant/const.py index 5ab322fab6c..d4014a7f161 100644 --- a/homeassistant/const.py +++ b/homeassistant/const.py @@ -2,7 +2,7 @@ """Constants used by Home Assistant components.""" MAJOR_VERSION = 0 MINOR_VERSION = 44 -PATCH_VERSION = '0.dev0' +PATCH_VERSION = '0' __short_version__ = '{}.{}'.format(MAJOR_VERSION, MINOR_VERSION) __version__ = '{}.{}'.format(__short_version__, PATCH_VERSION) REQUIRED_PYTHON_VER = (3, 4, 2) From 94f7c397d74dcc5a4081ff6b94219c81a6fce07c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20H=C3=B8yer=20Iversen?= Date: Fri, 5 May 2017 08:50:53 +0200 Subject: [PATCH 167/169] Add hass to rfxtrx object (#6844) --- homeassistant/components/cover/rfxtrx.py | 4 ++-- homeassistant/components/light/rfxtrx.py | 4 ++-- homeassistant/components/rfxtrx.py | 6 ++++-- homeassistant/components/switch/rfxtrx.py | 4 ++-- 4 files changed, 10 insertions(+), 8 deletions(-) diff --git a/homeassistant/components/cover/rfxtrx.py b/homeassistant/components/cover/rfxtrx.py index 0e28d3ef701..f599ea3ede1 100644 --- a/homeassistant/components/cover/rfxtrx.py +++ b/homeassistant/components/cover/rfxtrx.py @@ -16,7 +16,7 @@ def setup_platform(hass, config, add_devices_callback, discovery_info=None): """Set up the RFXtrx cover.""" import RFXtrx as rfxtrxmod - covers = rfxtrx.get_devices_from_config(config, RfxtrxCover) + covers = rfxtrx.get_devices_from_config(config, RfxtrxCover, hass) add_devices_callback(covers) def cover_update(event): @@ -26,7 +26,7 @@ def setup_platform(hass, config, add_devices_callback, discovery_info=None): not event.device.known_to_be_rollershutter: return - new_device = rfxtrx.get_new_device(event, config, RfxtrxCover) + new_device = rfxtrx.get_new_device(event, config, RfxtrxCover, hass) if new_device: add_devices_callback([new_device]) diff --git a/homeassistant/components/light/rfxtrx.py b/homeassistant/components/light/rfxtrx.py index 9248b0131f1..f831d6c04ce 100644 --- a/homeassistant/components/light/rfxtrx.py +++ b/homeassistant/components/light/rfxtrx.py @@ -23,7 +23,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None): """Set up the RFXtrx platform.""" import RFXtrx as rfxtrxmod - lights = rfxtrx.get_devices_from_config(config, RfxtrxLight) + lights = rfxtrx.get_devices_from_config(config, RfxtrxLight, hass) add_devices(lights) def light_update(event): @@ -32,7 +32,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None): not event.device.known_to_be_dimmable: return - new_device = rfxtrx.get_new_device(event, config, RfxtrxLight) + new_device = rfxtrx.get_new_device(event, config, RfxtrxLight, hass) if new_device: add_devices([new_device]) diff --git a/homeassistant/components/rfxtrx.py b/homeassistant/components/rfxtrx.py index b7f016d1029..3c3f1e00f68 100644 --- a/homeassistant/components/rfxtrx.py +++ b/homeassistant/components/rfxtrx.py @@ -191,7 +191,7 @@ def get_rfx_object(packetid): return obj -def get_devices_from_config(config, device): +def get_devices_from_config(config, device, hass): """Read rfxtrx configuration.""" signal_repetitions = config[CONF_SIGNAL_REPETITIONS] @@ -209,12 +209,13 @@ def get_devices_from_config(config, device): new_device = device(entity_info[ATTR_NAME], event, datas, signal_repetitions) + new_device.hass = hass RFX_DEVICES[device_id] = new_device devices.append(new_device) return devices -def get_new_device(event, config, device): +def get_new_device(event, config, device, hass): """Add entity if not exist and the automatic_add is True.""" device_id = slugify(event.device.id_string.lower()) if device_id in RFX_DEVICES: @@ -235,6 +236,7 @@ def get_new_device(event, config, device): signal_repetitions = config[CONF_SIGNAL_REPETITIONS] new_device = device(pkt_id, event, datas, signal_repetitions) + new_device.hass = hass RFX_DEVICES[device_id] = new_device return new_device diff --git a/homeassistant/components/switch/rfxtrx.py b/homeassistant/components/switch/rfxtrx.py index 1361d22de18..36044f5f168 100644 --- a/homeassistant/components/switch/rfxtrx.py +++ b/homeassistant/components/switch/rfxtrx.py @@ -21,7 +21,7 @@ def setup_platform(hass, config, add_devices_callback, discovery_info=None): import RFXtrx as rfxtrxmod # Add switch from config file - switches = rfxtrx.get_devices_from_config(config, RfxtrxSwitch) + switches = rfxtrx.get_devices_from_config(config, RfxtrxSwitch, hass) add_devices_callback(switches) def switch_update(event): @@ -31,7 +31,7 @@ def setup_platform(hass, config, add_devices_callback, discovery_info=None): event.device.known_to_be_rollershutter: return - new_device = rfxtrx.get_new_device(event, config, RfxtrxSwitch) + new_device = rfxtrx.get_new_device(event, config, RfxtrxSwitch, hass) if new_device: add_devices_callback([new_device]) From abe6f9343ffde31f145e618c15a0402654fdefa8 Mon Sep 17 00:00:00 2001 From: Gergely Imreh Date: Fri, 5 May 2017 19:37:54 +0100 Subject: [PATCH 168/169] sensor.envirophat: add missing requirement (#7451) Adding requirements that is not explicitly pulled in by the library that manages the Enviro pHAT. --- homeassistant/components/sensor/envirophat.py | 3 ++- requirements_all.txt | 3 +++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/homeassistant/components/sensor/envirophat.py b/homeassistant/components/sensor/envirophat.py index 0c4bb42cf8f..48370d76c83 100644 --- a/homeassistant/components/sensor/envirophat.py +++ b/homeassistant/components/sensor/envirophat.py @@ -15,7 +15,8 @@ import homeassistant.helpers.config_validation as cv from homeassistant.helpers.entity import Entity from homeassistant.util import Throttle -REQUIREMENTS = ['envirophat==0.0.6'] +REQUIREMENTS = ['envirophat==0.0.6', + 'smbus-cffi==0.5.1'] _LOGGER = logging.getLogger(__name__) diff --git a/requirements_all.txt b/requirements_all.txt index 4f0edd805e1..3dd416f3b67 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -764,6 +764,9 @@ sleekxmpp==1.3.2 # homeassistant.components.sleepiq sleepyq==0.6 +# homeassistant.components.sensor.envirophat +smbus-cffi==0.5.1 + # homeassistant.components.media_player.snapcast snapcast==1.2.2 From e2559fd6cf80fc981b45ed3a7a4b25eaa9eedb8a Mon Sep 17 00:00:00 2001 From: Josh Wright Date: Fri, 5 May 2017 19:19:24 -0400 Subject: [PATCH 169/169] Fix object type for default KNX port #7429 describes a TypeError that is raised if the port is omitted in the config for the KNX component (integer is required (got type str)). This commit changes the default port from a string to an integer. I expect this will resolve that issue... --- homeassistant/components/knx.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/homeassistant/components/knx.py b/homeassistant/components/knx.py index f72a3048dec..ff951e55810 100644 --- a/homeassistant/components/knx.py +++ b/homeassistant/components/knx.py @@ -18,7 +18,7 @@ REQUIREMENTS = ['knxip==0.3.3'] _LOGGER = logging.getLogger(__name__) DEFAULT_HOST = '0.0.0.0' -DEFAULT_PORT = '3671' +DEFAULT_PORT = 3671 DOMAIN = 'knx' EVENT_KNX_FRAME_RECEIVED = 'knx_frame_received'

  • m%W$){kE*lo^d-4s0MQ&2VpyV5ki0B)~nUYA+MU{YMfYJ6;46zE5tR(rv5wXhv +^c?{cDIWvmeW$&&)7Z%yIt7)Eo?aH|w?#i5N*U_$0n$caAW-$7aS~I%0)&RfF8NJ&`4n|*oC`W22#|1 +2e2~Wt$buho(9a!q#)g~yxZ +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 +w7I;h@n+m7nC +Ylx<5l=gBNb$MJ1ZYZb30w9!4K4F8drs)_op6k%7awB{hc^YWKiaH@t%PiW0F&eH*5=-eigv+%#7Abf$g4pNh+G@ +D-)jG$1l8Y9`131U#=j(Hnn{($Tek&%OAF7>cFQYt6Ak;EN3CtGpi`tf`#tXYbjr)GzJ!s{wvVJ$}is +ZCHsFhSq^M_sRP(m(zX?48wuzTCh{$-_AW`FltwoHTc%_;|Ck41~?=(b>U96eML#5@3RLEzVy3L6){8 +};r!%}gcHtHp>!wlDo +k;F(k9<+#o!SOiG~tI?f*Q%-ez~Q-gf~qkXQt>i +O^yusQH%8~u3p-HjF;I}Y=VG^oC|`Z${F1OHv$rG5I@|z3XUJFKj2wGY2XgTv9lw?;=_vK1Hw14imQ9 +VgPz+rqSOJG(zE(i_YaYJ1qjQ~gKBi1#AS0L +*HO$TCUSg>dWY(ZEU2H8EDVh|AdWu +<@7|ja@i2Dnch4Ho5ijiHEvvXvZfWG`fQ7HA&v*rn^3ks27A@`cM2vvQQ=OYjZI(4fBXVff5t-qC1$RSR<4qSi;epalWaeWT<;}QPoBz)=nl__GPfcHMZLj#Tpp`WO-5QGh%+Xb-=Y&qhhCmO>vi9#jLDJuFs0N@vo2MyHnh;n`To{lKs`EHNN +ySvv>s`oJjN69;_NYZUyy2%?yMFJg-Qv!UN!Hz{$Z2bv}zZ5wm`1e2H-&;-n9{a=^KS6iqTwT-~Af1o07FG4c~rpCod<<0A-crm*k#l)dzzJy@9z2G8(r+I|*0xDfmYp7~jb^5AHa`t +c0C1l~W{;v79Jvt4APd8Sx>gZ8A+pb4)7@%IwAl^mftO}cEbI**5A?Mj}pC#hIspzQI3QM5EW8LF;@i +fonoqTSZBf}5-y|uP{#?!a^91QMl^1In2US!v_NS$~cYIxihJcrmHY$SKK1-XISrN-x88#)*|<=dh|R +Q;?$bzNJ0(Rb3NEF6SDaFPGKPm3hNb4VNr-`X25hVc6&n306{tA$R>D7juAjiW(%50EdE3T%Qvx)dVF +E-Y +P|3`+4e8z!50s&kDZzNT>bhxC+$g141Ov0(3|DdY0ovfo6x%EuEMKWsmb_@d1&7Jysd`Qg}MaJJ_3Y +X!xTxM~Rpj!stJ6BYMhbN$3Bd0A9Iu&r+?P7^gkGUYx(Wt))5Rm`k?tv=1=E&6U&{k0}O%$u&kz +E=Zg@_`Q-P=Bpg4gB5RyB}+mM8HR>0mB80UZcV86Vjmk$)U>)h!D3Bzmm3`VS=a}7FSPrE$+OlD7df^ +oyzD_U_SA$Y7obChFNW>gfhBJ=!A5lD40Yo#5@mc!}(SV!=yl4ILwsX +SLHXwdnm;_dmzPo@$aj6!SzHg4$YSnqDkN%=da(tQLD@S*Anb2rmd$EG1VDX^PIa=ItokjxtMBx5{RfO@qPh5mQvFd>*Th|ldGtVYlWsy3wR_GiIz +faqP}~X`GJII`+`v#?I)|NqkV#kjTZZPe32B034_Oc;@6S)>m3Czd$yg_MXfrKUo5i81~sjf_Ig~@tl#=wuDzc^S*^p!gLXGiqK9((=s8s^w_8iPSt71`qzW +Of=<%~ukk@>@P=}?0F%GUpFqwje+3E-AQx`gUgnta-kE3J!qYr-!;k&_e_--(S@A@AFQx0(HsnJov^n +3Lp1hEy-)4|9Y2#j}zM=^=_u0VL?h#k=1C0cbs=^7vW!Yng-upG1j)Hg;BKE>+xR7XI*$uGj#A9Y~=; +R`BN@cTi0LyIGVHH`8L+j>yeaKzf8lnnn6RJV9+TcHk%@UuuDu%qNWrvNkMCWceLZ@dbPXn9U_wqq8Q +Fp4TGP)6tNFnSx&|Jm;FXm_jHGO{hJ8}p}cP;x@6&{v*hE+FQt!Sv#!Mk+c~+zecVA5&$alJ$Ey1vvO +h5m(Gt2*yq`O=A=$9t3QbFN5_x6ys{_SyUsBhPYz>*29zBf?HunBTr@z9|;7tPS8iFfGNZ3@=j2>LOXpaXmw?lAOB&KbMoFSEb#h$@b=JIlNcZK$cdhUB0?OsS7MvelK#^3mI4=JL~jDo3$M9$> +!rNW$OH6~n8nLgd26Ocsx?qZgC44Dw|e%4WxTh@OLj17b=0i=-PZ!(AK$g+?cm*$9B;UISf^EZ7p5&E +9YUCIT*V9jh+-M7_-t4q2rOUUyQ1li2Mg|Da^mR1mkm4j$mmTQsws`Ght<}c@o7MR^=HB>4!{c~86$R@Oab2dHtO%_eW{3W)kl8t6G4N8G`)-v_7FVbF8b9|xl~$CH)D1;=C6jua%rZ=RA5^JzU55znO~gX_DM;E#Yo#AB~a6VSq>acm%Edcz +vFUm{7v +-k@)if0^D&!$%39usake)FnQM`*?|OMLb5aUFX=Jl)yozWwbCM-*Ichb4_O%&K#l=-$XQfRNlAT2vT) +x*Se?l2>X)9|KK(m=dy%{o06shoRjbNGK)}olzzQcmiP+ODE9lYCBhR7O;z`}4|>e(g+SHWt&`tTI(Zv-m>%b${?NSQCZnP7oI +kZu7&1#*2!fHw)=aL;Y|e9!Pt$pI@Jp&?P)@%}p6*$xriS!k5(_-@F?151+Eb-qXry&e>I42roorsKA +Gl6A(?MiLhy5mT1d)4v|}4FGOuc-)gZ{tddpaDxM>>2#GQ(!fWouMYPw0LEljWD56BPur8xCS*;g%c% +}cn?eUTVu|v?T<1U7w>)XzOZegV5^vYsw +DTaHcx@d6oleEzgS-QMNmBlHI2;a!!>7-WpLX2%N(Kubxu68lj2zUoflG8%o1NfY%Bs>^2LjIL##_IE +Sb#ro?JI|`=ksKmP~=mFgYi{q+(4<_nJn!D2<7#tO+i9|BIZ4i>1AE$!uT*k4HBRU8u3c9jd~=2iuhx +W9)Sw}`O06-v-32hs&`~_KDjbY7ZH^UKaVnO>TgYe0%!*xBlE@a5;lfQ`S6YTJo6+rCLz8vEw1X>SJ( +|oe5WAZ?we9#T-sHsM~!VIW!uEdtRNH5!IW{*ub49wh-DHt||8#47*l1rKH0)l +geB@D?j^}8!+pB2IcL1fyv@u+?W8hT?Tr;(|rDl!5_2Ez#DOY +0a-h99W7PE?ogs5vXXQBH~ekX7bB}on(lHoLhW`bxcY>oCn=Sim&Qwa~1I660pc|iTDyb8)W6};CcLn +B3(SHYR4@W(h?@!haWi18F^!*G32$wv1RMup^M*Fw_YMt05QW=!dA-Uq6EjH(V1(BdNWo>1*83__w%1 +c8N5osse?nsb$~9j)qF?tDQg;3kf6Fm!0uQ3a~b%Wd^=U~W`}2Cp*g$3_`$@w3`i7?Nc8rJn( +nVmf6pINc&`C84x-BOdMKh>y4kD{;kqUTUD@TMg})V2AYHG7Y}6tKMx51y{+iVHZ3xKqrNRt)_Ev!afKfhC(GXhrsooA?CI0jt7$#j$NBDD602P* +?tfI55d%RQ7`$ug1!ZLt`N`cvQ|pD1xKjY>k~G7rnA@azkBQzNg6EHx`;(;G(Jmhpj^u=c|P%_x#lBe +S^7;I4dqecUdcI0Ip=$vgsuP)!c;vh#r+Rl*oSW=`H$`ahz%fF^P`!ETu}~69`M13Qf?V~2LcSd#C*f +E7AqTta_-qr$ue0)`Qp}{d&coegeu(} +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 +ye4ziHWu;r}~njYO9)y-bn}Z +xO^u{E)F~Z=TalpncZR49jF|`RhH10|9s8*0;+~x;+fdX5UFRZ8Oil*QZy3|0#$r{an&ci1UP5T5Gp& +hW&2P>XxT#ho8>%%P!HPyxO9KQH0000805+CpNx>j=j_S|=0IO>Q02lxO0B~t=FJE?LZe(wAFK~HqVRC +b6Zf7oVdF*|Af7`~f=>Pf@2z`AB+8`~;N!louTUnM9-N=@Yq%`S~RsJ9nl3|B=bkXFMFP9CyR);iv$OMf5KQvXY@7ts`7|!dG`r|c=W7qv9t1o2bY7$vmsJoBJHf{K`qS>ldjIPnc +pJ~g!ErBmJ^XH#76}!8n-r6@EYmy-(lWSAisWn_ToiFuC8H=fFOnq4&x7G*TwEkkP~}0K&4X!Dlu#i* +tKu|+mH|#2453*pTU`R6GC!|w;v#|KqaZHJe3-@nF&O2;*(AxTxWX3C({WM;VRZ?830g;@POC!=jgoj +Aq#3|V0{JSqNvq3zRs}^;Rz*5QC=nDIj%Oq8hb%BoC#h%!0T4b)1UoBX9N52yP@HRfnuM-*+&wG|v&|~fi&c;+vvUpWq#xR64#5-dTng?9R# +<&XXMOgtQq%aZFyr4$i@%FeA-|q%T2d|EQ+CJP3_Kt$LhX;S#d%62EXl)rQlsMde +bNu(<;8n2w=I_A|dv9JM#&>^yd$@aa6dW7|d#~T_@9n;fg1t98`#-+id-GlJ0&2cFI1cvrUhf?P*y96 +gQUKfAg?g_5$m`w1o$ukn_KUs!z2m<}!K=OFHwg6=fZYz>ZXX`+?fkgEeHgs`@$l`z(Jpl1B>;Z2_vY +0hw6ptq_subk2wH}x!S3JSXK?iW_WnLKxBVlG;gI^cbMW@>hkM_Be;j;&u>W!w9=_Ox-fh3w-{r>M{2 +f=~{`TJMD0sR3di%Rws&@cz4ymB%;ZNW1(j#bb8~(R*ym#;hakF#q=J*hPB5sZk4v$skpZ1P+qhR}R? ++6j|>hJ&>K*U0w0|Emz-|R9RL^}2yV5r%FLO7Nmk9Ku`UhZ!11GFQoZcZgm?%H4gi*_&wwt{zStyXJI +@f*p2y1~vEmN?K165J$#1vn~s1)rxGlVS298NzA`WL4lWlL>rZTSNM-flLt=P-B%887yKT?sz&a@_2Z +OaEC<#523V%jK9isGKIPlbhLI|_J~%iBIYFnbUaQzJekMCp#m5orDG{z3`pEXaxojn1;CvGlfg9uP=c +R;t>|t>!91U>jqf^rTV?gK2^f^lGu7@M2K)$kG@8jS!Nu@^QX)}W8q=?GB^9P +O-#3u3WDf$!=vuCOcAcSH=psfrmgj!T6IU}gpIlJOiD_}e+mPS#sn`#xdr69>=)mc;tlcoMX}2lfU`= +%>6GkG^OHA@mrz{sn9XglNG6V0e>YZRfW2tc=GqX133x;8{Ex;h>V_`4_D_;N@qtbX*0qDfAL+@81I8 +(Om>z_EVVPcznl9bN_Zb8{GxTIKdsF4A#Q^+xFx3v$xo*VwWHH1_OXU7(BlVa$sw51)aM90x4B>jZ)y +Fz{Rr*7$xpRvnuZbhOU#MqA6R`9WZNkHaFMS0{EO4z^yfD0(AioM6AHZ7>}oyamnQ#NJ5tg2mHheTU3 +O8zzV|3A=m8$kAqg!f`8qIU$hwRB~AlWa^{2HO<`QHzhCm3R`)ruSZbt4b9hAK=GUE$SY%?JVRxL)a4 +$5s6**?Bsi6BjIBCP~I5k6I$rBtH3q`3lkS0Z8 +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 +@KcV6`>DKEU@1mpi_HbcAG+2?A+v+0 +&o?msu!WoUMN+gn)-^SXtF7A6$JwV*c05l7bKVSY?^->Q2eBlsl#X3oU#FLPG`k;Ql~!a +EMIF}MZ(T9JKJ&i51}B^BTLi_@zd?-l6~#h|#2d>l(ILs%iI+Ch424xVuA(T$go-nnWNOaP$}FE{qi= +zK<6N;Mw+r5(K}aPBAf>qRoW~Mpvd{asv{xNLho5a{qu +xOMe0~S#!LGjb?*NohiaJ_xE3Sq{IyxM(lJbnv!kKg!qeVfS1+xqL{^X~ +(Ymw4J;{s3HA>Xet1Zvy&QZc9NZ0Xrrfno$97*d=69~T90a8R0?kXD;;jf^Y#$DK9cwaZ7l(pGG +Br#hSvr&~a3Zt4MQn9Jtb=lsEw6o#P?KsIo0lIV7(S?ADsR&;EeZYdE5ROCk<)nXlr!19>ib`-Z>h+$ +9FDS>r2Gj*CCAEbD=seWL?!*bJE-Oi?V#^ScOy#2#&O=eq0UWmGNen_12)*qmZLPs@KaYc^`V){3E0SR!<03Pe-cE^kt)Zm%{)es<+BpX|lDXzVYHGz*=ugixIO9<_M^U +XI;`WsK4_RWTHt)NLz2&8+SZQ+9I_@q!gB6pt)Zo-Ab1P~IIosNMh0@Xs&6lB|Jxi9%S5Ngw#HX*6q^ +uEWavR{chr2eN;o)T$>hm}QTWCODa9NAiAUfc1?&w)8YHX}v!;=TA2{HMR6zCP`@Pn{{kD{iR6Ror)S +^ju=YeUGE3R{&SNs*N5?92dsbiD&d!=2bk_Vpd=c{~n|20>#ZYgQtDt3H1n$3LC~VTomvKKw7+%`85(dR_xFV_kex0oYt;6J+10m%qL97N +IfXEfIb36`_&ieF6Tp3ZQVv$n)P=;71lvceF-jA6??VojMrN7Y$8(JK40MqJGs2*S;lPr3K<>;%CQc# +8tX_0i1}hr#`I0yAj)_;-ApifM5WucrNLNjm{-V(D-oEMIn};iD~SQCV~@$a0)H1FPI1{69I4cU`UW7 +D`H8Z96XTb;y3ZUl*^oMiTTivCo(oPqPs+?wHVG9kUReI4KwsjD=PpIN9cE=44(uYb%bx8pwTR#l2N- +Iot$<&BlOdb2J5MUA7jeZ_fsEmUSxhC{7Wb{DjBM<*?vH=?tcwhPNak#ih3taA?cvdazOFhGaxe9s`o#8=HgDEJ8qtX$D$yUc>DI~SJM +ygPM;F3Z_x3J-s1K^v0`e+o;iTI?brI;F8v((hh?C$N1wP~m*G5M)_~6vOs&Y|w6$RI;?ZO5!ucHQX? +Ra-**_*3VdFP^@p&3_r7193C!IR6$wZr0PXHe{qaaMU;_#|fJzM=;(U1W +7iVpfH$(Mi&+^b)yt7rN*UVHwH(%PliLvN~XXB$@s* +E-AdvC=upN+Ine_02m7j{NkY_3@MWD|{BO$b=(Dw&sc^)W2V%eW+4 +O&f(#(2})U%eG-jz1+q^TMeVvc72l<;%mOAXw-L8Z6r;idQAbk7oIy%1)Nt}BW&0u0s+6XsDU+sLG7e +~AAF1RFH4#|z)!2yI+WTxMg_Teqiz^Z7VJ4I^fOdF6jsAedmn;48_zr12o*o#LTAfF+sCve;4Ep4Fee ++MA0IicF15$z#|vAviAW*UK=3DHcB65u#qWgO1ug#07;b18mxiB1xDER;sjneb?S#dYX}WoXa$6K>!U!OAFQ0hM!sh-cgFj5 +}q`DZ=t&o@nyd-W~Go!yOOP`7Bm +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 +_gVPWn{dq$p5sWYi1`rJM%iR>uRQZPm +P7+K>dWro9yHb@zY+Q!1*9$F++C~$v0yYf7u%O!@!1fYdY4^XrosEGF^2II;f>%G-83cV_y^wOA1Jce +BUk4&CU3k7JzQk>D1lyjk)`M9FwSg#T+4gffPR?V%DIsHj05#wnAv^v6P+=weu_#nM8Q6V6>?XqnoCW0~l)Rp;L!uH^D?l4^ +<0fXu^$46UuE> +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 +dO*hOL!5B@q2g&~tu +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 +V>D#H~fVdr{)ztqq%L2@$}`s3)FnQ09& +qIFfMpzt_vom|TSDx*zn(e60AH`iOMKi+akblhZzjkfIkKTad4;%sZ@hs$D?X~G&eYJQ0SndC|w7^5| +)>ivuHkQ+Uzs3H@SnM&L)hTDU&Rqrto?1E04D|!Oe;gQp&`N$+d!Le*10`3RBr-Q!%F2K^*yzge))Hb +hn_>#65>6{)w&vZry`7|41Y#+09tD7nSBvCghQ$nTSG?*#7+RU2Iv|8ofQV?l!}C>Y-jsI5cpimWM4r +uesH)J|WI141*mKy(eX83U3NlL|=xt +%h)5w7Fw#zxn%=)D^hi1DSM}f$P!&yNVxn)lnS>u_{$crN)FAKx1n<6#r;++lvmHm^ZYXzpu +Ob}L^!}wrn3H}9#UO4y5A9#kQD*7ntD&P4%E!YPB9ZJC@)M=wTos-Rt+PRSmqR(NYD~E!)E;h51zN1t +3^bUP5am=LIkhPlIFgvmZr|5;T95k_q{wM$rw1)W50-DZA><89-S7F3#dZgNWytsSbskD$)d)YtrP!E +2VQBZv*jWXRWv;GSDL0;b&M}Y(&40TUiwb&TuLEGAt+Z6U?x;F(K;-16VhX|kbdTgrh=HcKwpFq2#@Tb86`&cq6Bl?kS8;4NBsZjx8s89IL?6 +h8tj*M6DBW8~)SMrf3_8#f0E%fq6a+S>bwfv;m{fLpA0S~iA5qbW}y8qCow6SB}%q|XB!#mwhRR>rB +`mBWrF`$&;Mpq&qMx?+ImjO8~|oq^JG!GHELF +RI~;?a9c{F{uu9NO&}M6yYq;Xl8pnmL?-?{o}E5*h7snHcQH0HgIA?K{U-uMGS@ZqxK!;n~aBKFi4tD +w~;&Pu&RKIbgVJr3GJfq{IPKCKID_Ms!+Yk!68c{l*2yf=e=9%H~K(DjZB(u128wjD6V41lA~v1G;Cq +NS{-THfoV=3x4Nx*xiTM?$uP^EM4}DNG{Q9jnQ($8j)8ERlM)s4CL2Dze4gq4C~Ysyiso#El}x&Mo= +F+?8y$8sivsVX% +VKCi3B$SzRdyH-i`jVbZ(kVRFHV&~vg!@+jwc2(C}okL3Pf?@%!M(Bh|Ah`jo +1d>@oLCc=8>D5m2bc=kIyfm0%i^vmEbk6kj$S1@ty@C+A&Gv-V)dQ4siLu+5e%_S2c4j%ysq)ymqwx+ +xs1q9gr7w+9xz? +hT$^tb#Kz|@dqLzVax3uJJ)PkR$Ixw0ERDjlg3tW39{J4h)IzMIxn((}JGjh7#Q#0Y@GtfL48@A(_wc +@j3(BF6(e3<_l{P~-8qo?}ZR7RwZQ>o1=FN}YU$HhmpPs#ed9V&y&6!uvyL7vA}lrS_;`Z49ptIa3X${bM^u4EQPZdEi>UYNd?tS +%qqFDM$!U|IvV-j^#fM=sOa#e6@nIaZA%{|>ZVJ*q$J|tjkzR+Oq)yD-noQ}A^u)Rx;Lt=M7b#H-zN6 +U&{>>=C@MnnGECL0y?iC>;3z98Z@qT0V*a{&Sghm>ISb*RxUYd(kI?6H?Kus&0B2dvEo1Gnvf%aq56Og5VwRmu5~>GXQIn`E>TezUxw+3-`ba&&68r{ST<=@{j@GiWHQ670Q*O7czX) +o>}QmmgpGLmFS8WsFyXWt#MuY}h-Vk5dc>Pmd@J>u!FRc+N%1}seVj_OF=^w{VUc4E@}nqcXVwnG=U< +FrKN1%UV~lhq;(QnWo2$3JR4ZL$)c7OkZpvQM<%hxkvBxo^&4eMbW#?$2TQp44g7OoB#*J4xW|)dwp} +8$)9Ho|q?LYGR59Z`9WFE1tw|K8tR8&ZqU|Jj^cKD{73EWgd;UjzKPUu4~YuCFnGAWA8Gy#XAcxl +*nn89V6BZN-iBDR$Ak&_Jejrq2FK5CR6c_PVwT#O+3Qvdmy?H+=XE&mI(|Pb)rbwBgj|;82=c~BRJzp +Y|s-Hi8L^sT8Ir73bP^XBZdI}Pg;L;%!tc*a1+nX2wH$06>-iCh@qAy-VM__BkGd84gY?KZ;S(FNsEUzV`0~C$OAzB{bx7=Myv7|L{ssk +X(@SUmIJ4vw(co^X;m4&M0X)uEY$#*D{Q5Q4l9$&@cOnmEf6t-w0`iO5X3B0I*psg7)7LT`gtRrK52s +H@afmNe?W&tvnoDE1sM3HF60h|lF0iIE^9*_zebe8~7D!R35Vmi`Wk{6kHZL~-V8 +_K#wEebV-kz^~xvjD9~?A^|-IUG81(`Fi}z%X(~#08zPc5p(7Um#})EY{F21q$n`NdNA@zHU*YnqF-K)3M?fIvp%5%=w=d1Lz*Z;ED|LPkb(wyy<7Rtxt(W>O?=9kc@JFpXYaJ +uF|SV*olQa$PVVBCXrePnw=4XHqDL1=__Iz|_hlYQ(y|?er38R(lPhB1Rm +mPQP_oC!F6))`5ZIQr{Teu=OAvgFfFpK>b*rax+N3&kLF{q8EaXB?ErTZh*cLC&`dcDoyo@7XC%59Nl +U3h{);sIjMPAewQR6WuY`beDM3f;BaC4Uw*e=?=#`Jz>@KrvuG%7(@=-46=fg+beDO41vQ*qwu74$ +3YaOgD}mX#0KZcoUX3tE)Y=vE+NaLGCvBuGP2?z3V9D@oXTDn%+!UL_71fWxS1;bb=qyGho6@^f{jt; +Cgf2ag!416UHPdE)EJG7I9;qGXn4^_+=~5Ix03aN72}tj%F(mGu%#+^G-a4%+bJ&76R6F`WYi5(x`zA +;N#^<503h?J!?0J-mxCNGvg^9-aq6Jd$k5bBV|MR!_M6Ca1&P?VY83&&=NEaRuylD`J1vLK +r-@KwzQTe!548{)S~Y-B9g#=`>36*~utAqR)1=24xEhjg8|5*X3=qIr)~Pz(eus0>z`rz>`#1qRkQwM +Qa7LvT?+_Rb4|O`zWaUY0oIw02a+@Z;$z7~?_jR$m`}5B3+vB~1H@dS>@iX^U>B{8?Q=}PZTdxbaB>& +|T*CRwg?hjXs}swofIEC +R?*aoqZOq;*LbZWNl{Enyz6iMn9*QJXGViPE2}~3wwo{86IDl*_nSrr?$}%{-G&Q3Q4{ +>Ip!HbTkx22ezKuWY}^Z*7T@$wU7I6YXrGPaOE>iF4R{RnPPM(;&1LrTA=NrIsEWX7I*P*32;@pQj00(TZjFcuq=H**=Zt({ONrB3A`| +|0swG%PuqniI8FC;OHB@2lOW6K2PDX_1yhZ*G-+?i8NiXcPF6TKkpHq7|JVwcv-aiL#fhB5538Y#HQCg~Qf7Osj#9 +3XJrF#+VMa+uQH**LfrT;~BHP+{IK3uI)h$4}iu2K)Myy|&av*eEOZ9>JnMZSUa-`GT!RDq +tU`rV<(+f|tS>b(F?c0-((Mr5Fx&SyyspMP-=zDW6R7enw?)mmK|0U>c(t%KfF4p0_%}Jyn~dN^Q!{Z +96@0Q}|5!x}A*t(tJMc7HjZY5#C_dlk% +bD;r)Hr7l_3hKKUSmheoNxB=N;Dnm!gUo@$V+8c;yh!*6}YDK&&E?$k2sWd^PDuKJ(0zeB~hpnOdls) +bx*9S@xnc3ztb1>Ibgf@5hQ3)*xz{=g<&6C~;{`1_(}N*Ogdep`=q2OXw3)E>tJ|Z`X!wNGm6`c6GCs +N2A8if_5<+qzk>WG(Zy($GCM!iq`s +0B+N-vvED~)GGcH-C;QhDFIb11`APMOd{9W_5HLk_0$*GLe>j3441v`ji(p}IRoDR`i91RQdFpSH$(v +;Hh`r5mr=pZ@XcNR)-B|j-tI17Eogs~hO!X$^gW_lw0*G>6ASmWBF$&%s9M{TnBmulJ7Ve>S`As`ex? +^wcynfm0I3n3_G78{%urnF;*IUYo93G(yx$#Hu^7JL#$+N1!sP3FEgZn|+XOD>1`7~XPGm@Gb+Oy9Yu +1avQ=S--Hq%>BJi<6wTtEAP&WG;HLK$?;&Rt$aIk|Kmz`JR%*=h;E;zd_QgdmXX8gZx--W-n8Dd=P(~ +WhzSrz&T10T1smP@3A7(Ddpo<#K$ZJr8T|RQm7q4n%73d(W42Pah72+`b-4)y9jCj0s-y6LCYj*A05X +Q-5*`YMJht6Wkv=z<=o0SFI(h*)>2wTtuP`m(%yyxlwo3XpjS$mnwCmsZv>kOc5ZdY?t+S3Xs52Rd6! +Z$LWw~sg5GqMIT1yQ5!<0z`on9{B8ENd!s@w|cE$a>jwi*$L=|U+2OkrM`7EngMW!c%H*>?3S7eJ9x3 +3r>i_Pw7SC)3Z=C)17SX9dm{-f2lq-4V<$hXx_Z(_t6pf)2WM}fR#&q|sJvvq+&Vef2=`X-UNY;_YLi +(I4`QbCskgo)oas97nI#Tq~DM`MpoBahCo93c!^c!9BXDZ38IXr1w&)cU_aNE{nXm185C*PdH)3(GCK5ARdwomVtHT<*Nu%E@ve@c1^2@vT1JoSsuvG*vY#&Vv}{&kG6Q%P3 +fx2E3cIu{RGSXSaLaukX!j)T`aso6tSFJGrbE7c{y=C5_)pMbd|bMX?V@Cds0d8`gRgdD^XAqAt~WHK +@)$gG@rI2UL0HLoKIZ<+0L)Dv?4JfYFdjK-7Lr#cD%$a+`3SXIl!qEmAmBScBGBn0sPdMo-K+c8n8U5 +~$CQZPJ8-s?%On4kjojC3G2q;Rt?Brkk37<@s5?YG?01D1AI +PM7_*e(5>ux(&wr+(wYUIsA~(g7wyK`N#9)&e-Fi@6iuQ<6Jw-xk4nc+GRsL9-W<82&k{k%S2|(%^fI(tgA4Cj>!$3u$XYfMUZqq$w=UYqvMukcVD*kX6aIj2joNroDl3a()FNp~$S ++0b3r;|uJfJ0);Jv982CVB!u75rF4yG={&)O**jx0vWRI{%u*r*#!sl5p7z=m?CJDMFZ+wW|b89aRUgIkq9M +4?PwntIA+i8G*-`wfoNnA?t951QP%6xnhLTcDnwd>rh75 +QnV;ak2mAIDI^TP)bjEw}7n2WFo?2v1mPmi5g0DSw-ea3EpVA$?bz~=%kfX3N_FgGM}X)`WpJs}qH6lbLZ<+ZZj-+21vS6~0>&)>AjNrs*>4}q6mcH&qTh))DYBFDv$1C!K;}vm!$1%RbR7v1Gd1V@ +}q$n~n?<4Jhp$I`BEnZb~xg7)eOFuffXWSR)Zp>jCe-qB%{CR7dTDTdkni`e`=g{0bITEH>O`NZ;bWAvUdj{XrpC>{M}G +Y+C#|S7LIi59)k__QnaLgFDNQnQ@@wSwU*`g +Fzg$xNG*cM2ohNSh=>0lek=(?gHakCV?(h3&ETeVK78Jj=B7x(Cn-S^-Q-iRvkhh=zHWe2afe;(|;Ib +O5Z3d#pdTA@Oo_p;;s-m5z@Lmyi2?`^}hOjn~=37XZ(@77q`@SkOD +BkaYyMxBKH35%r19riW6B<8mIEE=D%QPIyYA>d+ +ew%}{prE{c3M4Q>4{^wPfC4o>R~&b>zd#NPXq*Q8wBGPH|Jwb@AAL$#}$)ZVP{Huj}@A>h=Z_!a5qb% +PubkhI~l5@mI>j0=TiHmu8ZYJ}=(by?&$+E3ZtmXP^Eov!HpGjrE;!Zx^oEZ0X#)RuIEJ?EjQk=|!8t +F_p`TF{_^#`JvMZj>IPb)wlYog&dz;@OHl^(gB7-8K7bm-xK&ZZ1WSQhbHr(T(wG>n9q9Pzy-gFfiJ@sA +Zm_vsx{-@3GVHrIXcZAlEJ^OX-y}kRoyIZrA;r4) +y}0!l^VDUUvvV$z|9BF5^@FS7Jkov9$rP(xS+Z|Bt|hTTs@&N6Oq&oDJb$jJwthKj9NXvZrl#vk>J70 +o-h;a}c9qcj2-l>V+0i70;}U12a4mX(yLkeXs}Y-S^_jv6iVFf>y(!}KDI@S=6{xO@7SccaJedhbS$3 +{?zymD%OA4f}&_|VBoXu|B6*Je>Ggs3%$>F}fU5~! +J3wK`sw)670mw(xTpHJ^P;mU?rAw0HDw!8 +mzD%FWTeUgX^!3l9n>#zl_9CLtEVfsaB&ZxM&8=^{gqz%-5Je&i;=tbu)ILEYv9B8DQmc8I8VUt`zv{ +?L3&@IRIMK#TI9A_$%D3)dopOyKGql#cRdRClzV)}&ax*p49P4v`9DV9HwNby_suG +COMVpV|@cjXbVq)A$_wD=2vbd0?TP+c&!t(|Me-vQpMA~aH@Y0GceriJAM-9H*PyUM@;AyZA+HQj9kc +2W)nWNpcSffGoL$Mw<9eLlqtU*tZ(q)R~Cr5UOkr^&GGC8&f|>@bSl@mO@FOhEXf*dMA5GJO`|#6=+< +BZjNKM49*KKlj@u2uTfMnQ#7)#@qyPM9dXV8zUDD72FJy)}E$;%?mC)jLxDGWK<%g?$i!y^51#9-hyZ3$t +(IJBumpLTIGCvgojy5f*MPN8Pn+J0aV{ufcIW@K_oeM^+(^RT{VO`uI&4}^T9oY^ilnS8+Zn&B*j`)N +IVgosi)=|9^BOj3S+O*~{jCE>0gWapTh1}ha3(U@4HOCmpin5(VX#ri=xU2D^Uc&vG{;j{`G#2PW?wT +4eTDBXZIvg(8D$lcg}F#Aab^2z(VnF)F3sYuduVjHT~Hu!N{C)A5V5@~@@I)Qf~!1fqd#8MU;fHqgQU}HH#WMW-Yq~yv=#XT +heaf%H3?Ia)rBA4w`?2BD|>MAe>Qt{OREE`N8uSPbqeK>&eT*y@P{A$Ixm0ZV`XK)%p2uakn_G2QPW! +$h)ex!x}n(FS@Fg!vRAbtRL%v@uO5%09M860;OJWEYEYP>9w&UVU9*e(|?%E4viDky8-XYjLaLMW=N!XxzJ7xU +HATDK?sL{Hl*rSgxe3Tvbu|kxEJj)6zUySxf0@DF0p6Yzv|nSpfh!-2#0aayci>@9(3RW5wG7bCiJm; +9Wjb4wxJr8&1_}#MhKj3$sp1^xA5M#G&KTC9+U*1DvGt#)Pp^nGpgz?9CKiZ1$pX%L%ayd|`(c)64TG)mVr(Ej*hU_yCd=vg=ItEZ^#>wtQ7WXr2~$bXHdk~LK?O60j72`^}Hxi{kMZ685I4u +znmsTdoz0QF!}E<){@QkgIcBHv5u9{k&x@*H?E4`pf>&k0P4$ChR{Fd{u6Zf2}Fr9U0xE2qIjE6?DiT +KnqiA6a)aekf;S)!oDmZeg3ITU=D +cs%9rYY>_=*!Q}{M-Q6V8N`#Dx@bOCLO)6ynA8&^6r`hBON(2c@sW_XP@D;R?{dsKmWfyj +{LYP_UyF{8W=BWUqoYyn8d};L6k`<{&xG(`0V`3`QR0Y4HV1)?$aqf-GA*qJ*B75oU+$txrBN8MX>`UngM}EwF= +Rs>|~5xS|tk)6@-3Yc-JBzbz6aj^|wH;k{2+QCHk@KB7K3qMx5ZW|KhiUEPa>Rb}9mR#kyfC*)qe`0U +qsQB3dhNq|35%trkqyLi~4T&gWE95F;VgC)-3AZEL}z +B;O1R0<(Is~)h9t-xd_-!8Xo+Z|cBuW1=X5Pm3)-H{vI`y_j=^WB)YQmGqR1;F3RbPFmn@R`xzh8R43 +i_++<_G>UYtLwK#VwBDS*+;1OcY#x*U%8Bsy +Q(404&#SV=4dEtH-F8p}Z?|t964Z|g;1b>!N+_v%w1npcgg4$sF{uQ=xRvCof;C2#H5&g7 +?=17UBqyB9y3uP3%!h*QzPyvF=RH1=`g_{gery%+3U!EU6XO} +A}FiLmjbS^CIB_a?$oaM003Mz_El$JS~3a8{*&bAuK= +BTIYjiP2X0x+=Y8)vz&@_d-2MYayi7kb0hJ+&$#cY7ia!b@ZD>YhNH-br;K5cS(9MhR1x6AZyX=*HIb +k!{Bwx`AR!u9-na}8C0ceU!DmF1uc@Ma8$VwbKgUs50plW0ZVn8Fh3Wqp-Cb|fMk`*-ML%o1VJd$BrD +_`!%sn~fF*NzI0Eyqsl9!FhCY4d|Sw@A5Gv_$Ws@C~OvR4jap)FaaVlx~zC{t+Q+uCLU|K(*#k(oju8 +vQ(J*?O3^p9QV?Ho4pw?kO$zkeHJuN}Q(T2nOK=#4&-|`jw=eL%d#1XlSUSfE4X)nX;^}_IKoyY2>%@ +3k;=#e&E4SKj#kp}%Zo;>htTQ9923MGqp!pBA!jJ@k^#zYBR~L76)pg}a^0&F7mhW$?uBTOOAA)Pn^z +GJG+%jF27U1En3JoR0J}q9QAF)RLJea@XDpku=!PE0Mb`D~G%B&M;3~wEZ`3cvC!Eq{Z5cl4Ac%n?Of +Pk==XU)lUjG3bB6b9)O*g>&e6^d&M15&5&GKyWVW=~lv^LpaXT@An;Yinq$8|t2ABTUUPo*rV<7jGb_ +5Y8U7VWJCqsP +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 +1+cJ!cG$6cYC8Q%26 +!R|fhhd?+xNY`DY7?p#9l6>uM#{ZEN*><04g@q?g|9?)X*wRBdaI@`k4xv`1mqJ4o`YM +7?0nk=ULjfS*ldz6TbXq(ZJe!v?7qLZ3`;3(Ks{dLrqEz6^)l9YaRDd1SIFw8hV$`IZz5gdzVe~(_C9 +9l8Y#3=E(Xbbd0BgDybq(5**#Ck8+d_F4D_F(GaReqxoRKazB|aF0eJkYfKBu*mYo-#`Gi`m}oEgj7= +v+_{ylhW$)5pO{86n3aBrHmCv~;z~FX7!F4&X0Lzxe6RUP*=L=x2y>2#QDi6P{qq~8NDQm}*m!lo3L- +8J7*)Sh*J*v~eR0!qfi-l$|@Ung`y%z-hU<({%r?VPVWdp)$XCDG5ZVbsrkf7QtLwbh5@sS0;su^K<| +FcvN-Lur#=en +(fA$Br<8L#i*$Z&mzQ#wCFU;mf7O@Ux_sn(W;_?q^h~D +XNqR;hdD*jfN*UE{#pjot3Aa61G3K&s7ueQ@ +I$DIsPR9j1z4@+00E!K9}!#?GB)F(kG +EwhJBDvtqzFL-Z)}kTi*#K_sxXZ+7_sC8!Dpkh?+naGz6PyU}0;6|igYN_|TuiXb;5Av}=7@W2#R`l# +P$n{jH!dHo5G$RwfQvl08U|=7#xbD0Bl40J=zqVSt$CO6U>M +%#ke-P&M`WN(y>5OQulvRoZT`;;B&j)=pdIb?s>WX3@0xcmWqdquJQ9U@9vK^Fj^L`% +BrE85XblwEUO{es8%(2+fKytleYLEIiK8XZ^AhSoDhETYl9C~hZ>Mfe& +n^v9H|tHtV8tF@YBZSCC_vtVsTB3Td2zh9yH=Vr!E8~;|^I4bgCj_GA!y&rrqYw3EW^Zeo?jj&@3oMu +d2{%0lCm9yABF%RxS&AmWfoy2TQRZWz1`74Voe~JTir)r@eue{K^FXn>*=lC9<{F3!%&WZVCJRT_D!* +YTNdl%gW;d_MZks^oaY9*S5!5|y$YHQFJXR=&TgoO%`Z7urg4cRKCnBJnF!GUc=XVK_Uv!9>kv*_1+0;h$+ys(WtRImOyPY0+Q +wZ<$^IOOJ!+$HVJb{>(CpogK}bR7S6p@$723;@7tSEn^t^&rbAtp4%*6?MTW(%yXV@R9Sxg8;SGA5tK +GuU>nj-Q3vNXfLXqkLU^#fjDoz{pRbh9yOgufP2N&!;)UOJ)lqq4;5>%ovM48m0M~wv22>>5zljGdhR}E*4Rc}Ii=MAmwa`-fDX7BAu6()2GbZ)|IplsDdFB +M|{M=Nnh9E7H6bOS8 +>nXtazT9VEC*r%l)|=4oyVU|q*zU!c=I-&9FAAmo@rkv5gb)(6WX8g?hM_^VYgF35{MnmLDnA79;wac +-7QjXkJY>QES;WZGuJd=`c_}4i4?(fn&&;5P}8RNO<0Y+!5lVN=VU=^4~`ZZsfpX0*iPr!pd +zCk#4Ja7)}_G#V*GU^iwZG^BWGxY<Y{*mq5|@)4dCDb-1Y=HR%{k +u?8G&tYJR}c?hLVNyv-6qGsui6QA2Jb2$6;D%G*Q7_aZXd{**ZEL6{W|SMX9oz;9(NzsUb2M3@lxX*> +^ZboZsLiI~^-Ud~m2#-~s^{i}K{wj4@TQpDM&MIR1^NxF`7{&&&A??|Vpr^Smg~rQK|aBdSAZtYC;0k& +L`Q7YxXhyBvY2JVs5ecE^AM)`^Oe{AZy!<|tpe6|-a|@EvcUi;NMX(~Bhtb648}aJ55{L#qk1C%wEfT +n`t`T)_Q!mLDOs@K8%C}`Yle$+U{4^nk~hF?jCMSuOEsv40Q&H2Uq-YHcu`1)H&0)|3#)y*5_(fs2CC +VH!7Ou_TUxb%Q{Zw&2b%dr@J3QP0#pITZ~}KpgG4n}%ZUP@$)veO-p7-JQ-Q4%s_9ybK(>pzIK#Gox)ft`*t48`eNdEU#h^>%+nDD#ZCbV)N04?mCGGpepQ!#_6GSavEG|B8Mdm~hA3%<1>-Zc#S5VOmf=A +H-)|ohx{8m$_u5iMQp1Q453BGNJVhhE6k@mo-##qiuh10ufBh}uPb`b{^K7w2=0S?VYoBuZ+aALWyz;t+|FrNvP)n8noIM#F07A2-o?>LQMxP{2h)b%#z**b +x78%cS}U>(+M-M7Zw@EJO&DlB-s+6XBvuBMlme{KdswX7E;f6bo6%eLjy(6_8^(D_^27&GPO0$~Z4pv +`}FZbfqPiuEVb!BQJ9bQzQ%<+Bgl^N!isVC%OUq%2=b=a2IwiFK)zcc0l?P4cQJuz1rR}Gz}^Yg2Y(p +l(NRzBS;cwij-}&tF#ND)?&wJzidaRKb*57^d{J^&=@S~m$qD;p!tuIyTtjWRHM@11wWN>3+SaDw<=W +2LBsJ`0sShFNcpZVj6skrn|cDrb<9aW3)?i=V +%FhidXY~1D`>@3N!T8t<}}s!>8ZmeS?QrwWP_9pC#X7UcTOo?u<}$h8XmxFj^^#ChC0hmU_RjVKh57G +Q=^7hee_op_Po3^!1>;e#uuYRxvfB-fa|dOg@Z3Dysu$aOmno5leX&H+a+W57jS6Xie~9sysZL8Ng^h +LWg%0-M6L@@P(3&pkKdx*TQBQpxQNm2OF>p1`ES_RpHx{19dFM`SBCncsjLbI;1S_wj>F<)b9&LIopg +H}s$NAW@E^}=I^x1{cTTD@7={ej0fnqg<2$O7whkNiM+H*%MN+^&(u&Y{LWRGbEvm5Zj8P=R +|wx0BPX*lpPOd_T_j^U}3xlc`u(~FkZCqA=;~uAu!>yDMef#m4+)3Rg*TDXG1mvHo!I^V>5+vV_9 +b01p#Y7@YrP(>)JeiK6KSMS4Z?Y^p_#oG~GOW2~iwvCWq)elkFQzh4W(tSEEH&N`jGXDr@~8}S4yZUi +C@7_CD4h=3zlRcy42tvo)Nkgu3Dip^!yysqmHVb5CPMHiV+G-G+=K8D$*C0ze86}t%7OV&`7amdzP#Z +rVIYcutrWCjmLAFanVf`Xf{6K1Hin>MD=a@da0bS$L=3pGi?<4krl*c7*AHJJ>9_tlSpl*$b49=P)m^ +`D;>fI>zEz9?r>JLFzmm)I$M$Y@*XPdh=L?}7dQtW@#v8z`$h9h3gNZXgIf3EEoeNnv$OsrcllU|2xf +iGNK{U*U<0;1^1QyGIXfn@tt2;%d_Ket>@%YdiA--n7=XP9vDH;?B +&P&6r@o-GlDi(z{GUKVs0O{&k2{hr505^yr_0)*TCWe%el+<0XGETUyh*2*3L7SPVu_nU9E;5)=A@#U +d+UUz|!6Sxwj)EX`wg-!SgnpSOCmRciWCVd0>zL~KY@qWvGZh|RYRj9%UhFf;&<-3U!lRL$NCZF2&*t +NK5e58zzf)p0Ok!pFhCazB1NN(D@83%VzWzWu2T76w2be3;PED_aW<>vq#UMJZ5H5?`>5shcG|u*&$nDn?UKJVonV6_X)&(?Q&F-~}fFNWh3Gkgk61@45YKpo_`CzPj +dm$-=ItqDWeZ-L&ALzzrex#tK6mC(&@+PX{}E*u$@{OTjob@r4;4Nqh>CDqllItByhVc)>7O!2pZuEs +LF*R^PA`6lqMRwkp;V;TSYgzk#wVYtpcS*wSe0KlotX5w5SPulUgVYFx|ZTDha-eO^{UPdi|+Vbc-37 +e|dMRldSqujur|8w_?#dqssReQVjbc8nDcd2Drw5hV12hjMy|gdJt> +`Ptc1Xbnh3BmWMsQU0KQ&irG1(G4h*YkD&N=v6iQMzqxXHH>5uUE)8C+da1!36^gxp6<;wyq$)Gy3<1 +UvvS=)+RT27RI>F4hPZ<}}CT*JxohpH2Ag0AB^0(LS}ujZ!-fHfcc}Yg8J1`L4MtrHbd6t5eh97dub! +mzt`?vuU!*z2l=@e?=SgBG5`8zl*IU-ucT-ymB-A*yrBzGjF_t9~8b@K24~5TRs7GAGS;%bW$69q{zc +Qp?IS*WP1Z*ffVh|y<)kh%aooDWvyn@$)#3K&@5X`Ls8y4anAfMTPJQJc>=F+-^oA_!i%WPO1EV<7fL +uVeoM&*Hp=QdQZ$Tw)ivxfEQNPAN@`zmse|Q`eB`$(K(IoQ0X4LFY!!+-I|1Vm)3pwQL|>P#9Ol2~v- +6jyr@*f<2666dEFI{Zp+qr=Tl+YXFazCL9Sa4ogh@zuirnj+^2>sH>aY{7IcFFT64irk&D8aWND$SOX +?(F0wUKkiqUYwV+j%0Ad1p^Di^8U?L>b#&pi4{KlWx`kkObRUbXu!8mr04V8Z~{U(uGYxK_h9bD8bTl +#&flnEH!hYi(sWqEjjL%<-TG(pOPM;mV%_4M7^YMWul8pY4D=oMf5Rs(*;U`A_xL!NWAF#o4Bsx?DpJ +z!%dQVIzx+heg2sWe-?Gv?9ZoKXH3yN;LR_n17(R?Y6a8FC&?2}y~SecufC-IR0Xht#A_J2BsS=38H=1?9=ECtt?6-O+*M;Dd9Xybh@JKIudz{QkAJuJ +VR~6+R|_(ctnWG8M +4WZXmep2iMRLW-ll~}0Lcd#_x{$%n5bm|T1ldLyp8yFnaes(fHJ2N*xdU#tbbn_h0M_k8&hHfyh`Gl` +C`UWhWOZa59|Dm?KiwA&=7{>DtJbq1-;I7$Q`}qeIzqHHiv5QZy6DUi~bz$n0$rn9Rday3*x2_wt*7X +7udt+p_Gdy~*<4zdE?d{sN6W*BFx$<7*eJ>(wpG%Pv+=Og(nxp}(j(<>Q=;qab`vWI5r#J^NNmaK$N5 +d(Q8@oL+Lt#3ERh4x<_yU_lbE+8Ukbb19Nw$B{$7ya)i5F!(Kp2NIt1Y~^$%D83Uy7(0^zlFV(+8#me +||ZwRq@{4T{C4WI!;pu&KQ-jfeUXWQQT2Q=s+^)tAF@kD69U3;&2xGa4pWZ+uPdaEsQ|~F7tUcJI_Q*6V)CCNCk2CfoCRS;i}3 +T$Ke}#zCP3CZPS+p90vN?blSquRIpdo#Aw|$BXbu?eixX--D%@!M8V-Ttc0v&21(H%Ho7Q6BVWs(8Uk +6#&Wm@C8U=Xf-G-ELwZnQBhA^|2Zg-0kn((&ag(;-vy@(bre3~Kw0>JY?0DQC~C{f{8J0_*6pop-i)m +LQkW~)xLMTUa^>zzAmch;h_!T2N{MCaK6HueG@;T&|8-6k*wJlv@zwM1o`%G`T?J-7ctpoFV-YT@xU# +rV|mk8Ub{tOQJbzfK|{NLS%|cLHRR*3nVNN~oxCr37?z5Bn|~xiPI1EKg9iPdKZU`wE3A9fPh +1CV%p53jq9dwTc|9^pPewMDOSa|Gtew!u`-GabiABE$f&XS&og@+TPyQ^j>@}H=`|}=BaAZ2odY`I=>I`x9I<0R;=}FY^ +Ux-)PrM!s{R%p7hfQ_G1)MXQ*e2Hif)bNgTTj+}1pzwKtYfO)ehlg>vO}Z4S*+e1=+Y*#ZCTik_o0sX +??r(I;X=J0#!r?2YF{m$G+KUYI~csX7s>z9 +}D?MA%nan@Y`Tbt_0#{=QMWHexA(S4PwQtiaH)2`OUtKR8{c-H2;F8S6wbSdQdEkfPsCaof?`5n1!~T +@4?MPX$MtT#{b>aQvEvFq@Y68HSb&UxCpDSm1sMTLV@%^RH2={9e`4iDrH%cm0`R2^9YHBAcmD2XP>E +xoRDGtDY>g8OM*Au_hd$EMBApfgFw$v9cgHD-mxIFPjL4h100Su{?e-3Gf4)3jbjSE;)X4PH=K*ri3x +2C4f#2sHJ@1J41FU{-Q`_-9f1X3CD6nO)4r*Q{ofFn5rYR8i}g<6>|lAZg|aYa*b>=(kXncIKT@Ao^R +fWvk;*Ub)>_EiIg$-YT;7ZkWpfvEU`c2=*YvGNRv`>2 +$NAmrk_jT=PR7hK9VTL4a1R|T{4z`Z=REJdH7pZ#K^YyR +g==-BcAA3M>M(tq;SrP5E%bS*4#q&oV%Aiaj__5QDNgAmhG+HB=>Sb(pg(7@>=0i!b^|a+7;^&22K+k +x8yXMO?0SYRT(c+i3A95_b8vc3>E@4W20~mSjo_bD2Zw-0*`YwH40SJw)A!)0p7nHm0aZr6gFBUUjt2!z=zskO(r>YReIc +XI2TvA#@CzCtsny_1R2M>j*>1$>j1@Fy@Z#1fP0>cSL)*=sVn#8qj__~YXbar=uM+sK*E;R?ffc^JLR +rEk*0*R6(ctbeb3Akv9FL((3}Rb$Vo#+H}d})pMi7)gA+!_GT3A?d@znh#qh6?Crt#-S%eXg;S?f +e~c&f9kR{dWXrt0J@aVu0Y9Qb+w=(Dic-6}qI=NC5mF;4B;6vzQ08do8mU8anw)G!X^X7tVv=`H%nvD +Z6y#&!Rx>4A6t1MejW;&1Wc`Wo9@Gx3`wBh9SwbiDDs&0W70{DtEkj46!HoEFcrqS{@Wk#}nYe8*yqK ++sWm?4q*1Q%h1_2;~#T2dQhyh3`L3ji5JelchPnS|4zu>(?(ZVlr?YW9`o=(r^WSx$IL2!+cZ6dpPX( +l+0a@A}t5i6WOZ!Sl(^!;BMI@&vfR5i%nWrLl~hNcVIF)*4X74eHPCmmE=AcuZzDD^4Eb;_e{I%uitj +ixwj_2v{@f!}m;d(c9r|4YIiMUFwEDZAd@IxZVE#(F-*Dy#&w(C`CF;0G<`EUaJF+htq1a)c)u-I!-$ +43M?U)JHa;Ubi?VNt`F11C~oAH-beN$?_>M=fF*J9L-*ao4nqVY%LIr*mi*@Z>_moOQPD9a+iuaj##B +6s>>lCP2meglH!gXM>3vhz!6R$6Jocu +j}G@+(hi!u4+rWYq)_qc++vNn4+iyWsEfRoq*#jnCQRxSvz1^g^z4LqsVfE^boz@Z^X!iIWyK(nx=Tx +*}kCH`DVsKsRB3uX{DQA9?&V|67^DG6t3f$51T)DWC)r&1`k?mwQxw6eiOzRCf3*g4xA6!1M-HX~HNC +yAm%5}+xn)A*Fz(4bJtMO*Rf>!jpEml!8H(xZb2EEG!Wq5^XOLvKimZt)cpwyrO`dUR{UA=;JTi!EcA +cf58*YrFXfLpPC-Nq|B4MA;tyH3oO~dMPQzYNC+h7^Dg#OaZsR=Fw1JVe`)98VKRUjvUHd%?4p+$`D< +Qaa_5Yy}f4J{mL7uKeHFn?RW%HE$!Mx|GKZVjrlEh!HJ4uvv-kW1ReD#gf|AS!qXBR=&Tj4aVk>l+2W +rFgg@G&DC`Fmu1jy}s!g4kY$`(KjRaJAi#8?WFo0zaME}+vKC3$X_+C6W@Bwm@z^VO(NbcAw5D$%LXM +l;Vwg&v4Qmst$GmJ)a2=Jecrz-iI_5^1wRMkczJg7C81jEoHf69N=DJ)o@TuQZN+&^by)d5&v%GyAgs +4Lebj(Yf)!ygYg+HW*V&usX*X?j5qs4b3lK#C0m7Cj200z(OK%6QTalKM1k%oLr#Ca>ce>V6rUAGHag +3WvG9w4*Xw9ChwcaU1k@VSuUrsqI3~68iVKmjZ16gC2`(d(t73fI@k{YBfy4%4KU^YfS^vNU51UPq1r +=AxHAIE?~+p;R2Of8gm_U1UE$7q!nOkR#n+)V*)~xVmcm{qPGAo-i%Q$4(QZ%hsoya;Da}9ZBGhE4^P +9aE=lw(vmHz@Vj_o^L1myMHHV!fx*|eY?jq$gCPK$)0|<_lwW5TotSYKKQl@AfTGQ8ts6mXjPj(}a=K +9fgzKi79zMt<#+xOw=2=|8p(@eyVB9Cbb4HDN*YDq2kgL`2#cR2p_2IGPhN2trh6?B-M6){wG1$z`x@ +Py^@0tSLRJSSUVXt+PBZ!QpG{s_v|7eR*`Xr5594b&?;?|6WSm!7r9VBGtWuk#= +1J6c%S>1e>*CMivAD6^>L&ys&Q#`J9HBGz3x@yK!Y~6t?3&Qi7(L3lFX$b~IzyMT-EZfhl*LJzYJHZd7b;=0#Py|Gn#0nODLYBM(U@yA9q-0(`~PWE^|;G*32Oda0T=A$ +#~(Y+N_Y+v(He{3zl>V-+vNR^fHd~eiu?+9T(8JW=m2@XX%G~nZWM588I{rERxQ(7?Dmt$he2p3NV-7cr0!S|JWr)+7y=4Ex_Tk>+-D{f|M{gSGrP&aW +C%F5o2`@w~qa)^FdIH<+>V7Nw4RU(EiOxsPL|_LJsg@u7QuI&Tn-2zWi~cXa@VB?W{LZ_=X#ScWw7&o8Lmi@NV-&`hL%A@DtPrv7Bxjw@u +x8HBU2oH`Gud-Cc#Vejap)F>@Qhd6f#v9zOLfIH$|ZM9i>j}zhbWznxv7s?@jP#xO3dR*ZQyZpTCbA| +B7ll?dxW=cxaKmb=tt;H2lA?E)|+!MIt~x+W5Zn{%^;fjpny$^K`HI?0CJl80vhK_s*xWwuo#E*sp$C +KiYU-ZzS!n&?if`__8-Ew+M}WebZ(-?XBbF8v@OOumbCl?ke(oYM*FKu9&>E81b%xlIW7=hjh3*(2wJ +~rf?fWi5tu>YIyo+{q*Ab{>vv%0TX0cr2aKAY9w+(X;W*`auIK#_B4A8?Cx!*jYqW!R;^QWlK$3yW>U +Sj{^N0Nl$`;aqJrGAP^Ux!u`AiAHl24MVg9e0$vH{Rw^OWYOc+D)a=R0lDt#cLULv%pJ{($>v{52 +TOB)9Lu4P?uw<`Q>xU6sbIk>Yd}d15l|nY43C-e8RDY6Zg1=VOE;EQEh`#{eJcJH{aIECDZ1wwq$zJ1 +HfnJ`7dt=!_j#1&uKB6zq@#U`D?i5e|53$;+p@}Rk=3(;ylMKn(a60U(|)b&=7f1u)@aswY6)L0~9sPCfS$>ia^4X;Z;b1uKQI_vTIBqB$Hy$p-(NdZxHmO`LwZ%$$GJZ$V4q1mnPP}QcAFy1y|K&o`%e$**n?3SOwxWr?(GwTW6E9{5B|XxPxr%Z38 +p5`T))BE?l(-ZA20PPwTWKzxi#wC4USGB;yzn+hnWy46gzPd=H#9<{g{)26hgDr~nZ|?-DaI4no9&MW +@hE%_U>9)Ze6DU>9N%+R>rAtM&hx48WuqLB%2S5@QB|-t=TJZ@E2mkCxt>k)(@R7ORypNT8DS`%!nHp +Jcrm@gLJc&~^RDv3?)nB|&2b{)#H%JG+}%E2f{q-4(V)fjQzmC9j$^7r%$%^4gy_#m%BK^X(u@0h(TlyZFeC{HV{+aarSj@VStN~8FCwM+V#NUp`{+6rKG=K+=Z1$7HV*$9&q8>P2MYKDt!vAE-vh7y#dB;}<=L3<%}7WN<*3W1?FZokh +fl&%FQmy-6IZ8e`v0$B`Hnnd?f8)aaDBd0UFPEe!Hfu2)}m^xE=olv)A+_A|BUv6w*F +c4iD=M7Vx4(nFSJkD3f$&v;%gbxE?Qt(VEVqH;2=XrE3b0)rUhHVgRIo`5*%x9;>wJ>P(F$9JZ1zF&K +S(vF%#xU%^jVGUHD>h97i-y12FDdiXd;xfvax1E(}CCU6}NkDhUK_9}T!hHL}CY=q=Ez4~v{H`Oe2O +^@hQ9o^a#G;(+BY5E5Ub{5W7?V@$Yy~{6EiM{P5)EkNEZ3%hzN{i+}#|^7Wgi(z* +Dv5Tiqk_<2DGJjGgHo<=Vn)*AhYV1LkH-!Rz6m#k!d17M-b-vO*2Jb?1VmM$l>S1s}|oIfMYhxwKa9* +_j9y6y<`ScL+9z^pvWW|S|7IeA?N0s-1NL+yV`)l{gLdc(vLStjL6ED8lmO{dg}PNK`*kz3Lvy>n+iL +6b(~Dq|Lrb;?%JCL6|V`3_Juev)AlJUr1gf|3ts^EBJ!c9Fc+Q<1%E@J?0Vr^3#WMDK?KyZb-a87t0>1Yp!nbUmwYVNm};m*wf +1d(*^wb4o8Lfs?g*mti`&@t~nLz)};7OIZ<}e!}zr$u5z}n=TlK2s~Y3e*)KqKGc?-l<)w<<)|nhg3~ +AT4{n(2wQh6EUU0^iXad0hsY{&x$>4vb)TfmBzDJfLjoJ+ZsSE=o?YnB*q)%kT;~M-+zmH0boD6A%9g +Wgt$_`2;>W&6$vByx-A;?yFdcT%vFPIM9Bp;Vmpz0D~sWN?Mr+%MI*DOxEwb1BU?eYPXdcAjoItsK%P +%4d{)s5JqbbQxo(hT6hfc^8vqgB>=3%q`-vGj3t*Zq=lTrv&*I1_<1txQB6ET?+_WV|ovh{|>>f5#=d +`c}e<@88yI#^{?^gZ1v)swK4uuqIg!=K}kRG{kk&_T6F^bvLSR303{IOp#Il6I;F?YFc-7My;z?4pM< +vYByGO6H`=c?p*7eO3l+vHwjv+2)VplwAj{MMXZOXbXv=Daw*|W9O~L_F_CflNjXKg`IK&nP@rc@$AR +}KBlUfWy^}IRu5Zu!ySVx=)$lk{#?IRy#!j=-o!a?qHrcv=-)z9Gi~McQjRPAQ)^^RC?fdC&gl}QfKg ++i716V8OuQ{YP_IRN%KZP+{ub{IELbTbO&7nu8i8M)-U4k>JwLQTU2l?o&Hj_@R{S;Mf&;{<>F4Be89 +X&0d=MXzANEiPao_pm_mcOnFbxn?<(%f$E?b57>2l?A9sv*H^7zOEK6rn*ygERx20feK%Q^w)KHBxt4 +Vfz8Zs%82D(r**p^yn$JQE?=)W6|7=mJEAH2V=#qNDD0{39nvjfBRfZ?QbitG>X)#$j`-T#oZTDsJmX +IsrbPMIkSRhz5yaAk8`2{E>#n@Fs9>Ba_=6_4BQH<=|Sl_p=T-|seg5#(v4g7wK2ynbSh?oXjI!`EUw +jko7cJP7McOWa|h*XcGw0iPA|!oSs5)sOSXYj-(mEHX}St0i@G98I(%1@G&;@E`CKkpzb>W{*LP}fSys1dI +je#LDLX$K?bN1dTwZGkPiE~^ovEDQoHIm?(7k)tCS`Y`GOv%ko|vo3GFV~Bs4bn +?tQ4yIT$wKeK^96;ed}mbc7^4V=S+)4TdJB9X8lx3ohciri*bD*G5Hqi@^dc1GkaTtIaKjo@g4Va{$I +D@rOo@o!Q^er1vy`FU)~;R&y1w1a*V0$VLJs$ZDvBMH>1sjtb7Tq)*Dul9xRG`6>H~=@0^^H1nu`*HK +I;j`>!XvcX$y8#=tu0nJHr9lO?(^>D0iy{to#?S1wh$gDzhYQVz9E7hyVL^kzieQWQ<-@E^}ckt8GYv +m@jBqZMXY>19Gz9MeBpTFC6p1gsfBuSxEE}C6VvYp!5H1F4T+tI^lBWgz*+xJT#oWkkk97-n-qD}a(o +wO^;?~*3#9QV30)eV&^KQd#8AK5u5nZSQR`2e2R+&lmylfjcvhu!3yUCUC!MGPFx23{6S3E5&7pODMY +yYgYn-3bIOg35^DOPNv$BEbN-H=Sf_8|ay0{j1h`c8D>QrY4rByt +-Tt>Z63=Zp^r-=xFx>Rp8c=12_=xUFnwF0%W +$e=0tQhs0iCp#%_#Ju#b8w$b}3Ym#p{cmsA3|q1r}k`(SVMzys3N>BrReXJe-&wa}6H`*D$9L&ChA77r$zSFxT0s8F +Qq$s&`d*i85+SUF{+uN!e5O?)I`wsp~6A_sU>aOn=>STa6U`DLZPsI;11XRZo$%wqO^1Tlh@K$6P&b7 +^!cxOD>D~d5%!*_MGV%)scF2MX|L~W?5_8K(aPoMe%w}RTXn0C4xZ}wIrDq+$34F);r^ +j`W|EKP=M!iuH?ZL5R)3(mQ>VOXnhnQx=%N#&AzVit@)~ZlC8?vuAN1f(qkiD!=eiG+7lz<6w*+PA`F +3tA4(VXH)sFSFQN=**UO+4DrISq4bj(a(UUu&u4+{VsMrkjNUN%4@yI+n3P%?X1}_s%-%b$A5gqQ6V{U9NQWUv)*|+%8Ma6u#WK>o=g)X*ea)Jl6#3)|B7BK#hK +F+6}}2btZ7Exv7?#x{vD1{tVoNzXOakOwd)8DzG^%H2v2u({L*O?)cGHM>#$0OiHHNk5m7uAH#eHVNX +_)`xIO{JJzGS>S9Rj?gcsguK0M5(Lui_2=mE@ETEHrUEVJWA!ro|xnPCrfFmG~U4@H(28fWUpcY<}|L +@<-x=B2QEwTPSGB8ublv=N7nG5VIjMNpy8`v_NXB_&*(}+(iKWcEfqyv7^`R}g5e}0bF~?-rgRt +Qk97vy|KM-T}&7=FUtBevE2WU}jBg(>Mj90`~$Iq@zA)4eKG6%tUKUrTJJDM5*NEt+wYQP=>%n;5ZQ!DM+b1-721vOU?&`4Zq;BI`Xj`J(7H_;Ij*SeUT4 +Yx|nM&0#$(R~ylHf?E~wH1ZeqvrC$#{r4fcCFeT@6q~$dtbTD!lQ=wthw22w%g7l00bOsj?r?56AlAg +Az`{rbUKfcsJ;%BJHQz0_u$J{$H&4b&TqeCYdko%HEabBIVev|C#HEB;rS9=@fMoYYHZGsm6v4*oA#h8mCX*4=p53OS_a&cwV1Hv +}_L|I#JE~hl$m(e!t3@m8hElS1g3e&}RcA^I*eT?0(C@~K4?UCA@$!lb@O6@^v2FlVE*LWkO&1c8%f? +CUAw!*2EH{30;=BjMCep>_DB$EiIQ^=P6oFm56K$EW_Y2fW_J3G!IE9D%IlS%h*h*^ ++?mt_+*NA!aY;b$xqBifgcS5fdO#F4Hao_LX(fd6@9qXvsKZyHA+3;UR0%0UV_v5s)*Qfi|F^@;|H)U +`?zjqqf4r?sgeAY@m~>isZYUZkfoJqL>0aG_*fXXVPoM#VH9sRIA#-COychc4YB@+c-4!AHoF_GmNhg +3ws*t_uXS#=yx=$}bSW2_(} +Cco9p)`s8nKbt83V_A{Uy(@#EL=6Eq +C(i1IVNO_`ke_vT$hIb4onY)8zfzA?i+E8~IP6Z5}s+9%(>3A~H`Cm@w7(Ec$9 +b{;Uz!vzfaka1tRbeISwfOt3&d;@@(b4qi==chL)oKm==je#uyg$BrFT-;*8jXAP#(KS0FNG6v9R2&_ +Ii9=7fDk3E;%o^fwK}y|7ns!R%P^@m)@$|JVoX$E0fWguKNmr+s@C(Z_Rv9}l^d#usL}VRj^6O&epc# +i_aLs%$%Hsy%`F;J^}Uo4HKo{Q^&Z74;y7|UwYa7XW8r&)vfh$I5GBA&A{*LkC)DoB&hFeW$@Ok{iGY +zG!4mmcW5AK#1AdYAAXGYuMzu0j1u%VI*Q{S{5UE-^w1 +q}8|O((=X(Gbwa2^AStG{lo^c9CTxfi%H$(gB-Dq>kP6Ps-qI|AVE}wUgRF-6TkrAenffGEc=T(|0yR +M7;9xCy5SSz!^}HI4}`rY`KY8s=5p(SRZLPVvDsz+fO=dLg$pBG|(P3F}|m=gdD;+=B&1}{b7ccj%Z( +dIkhIEG9QkOAfvO8QDKfedut#E +L5Sx_B*&K_cufQU8FBs@HXACy1T7brtpA%q|DnK2NWP1 +llzU-<`AOUxd8<x2Z9P~?B1r!C1ir}`iD5N-SFUo+y2vHK+8gUWygh^$09Qd0No?dCICLm*h(U +BC;@Y7KT2IvO#^jC!Ti#tVHEa|OHnNNE#^l>fh7Rl~99DeuSVuV6x@xCWhhMnH-pdH-cG&#VNDwSeln +JC>Qc};3a?zR!57E%suC%qQKq)Ad=&cA%uI(D6m_fX=mQy63x{4SIcPyM>sU=Z@Q4G7uDtN4BMnIerl +|bM_743LuC!kA0JgjW9RC%KN13XG|d8>Q)mw>ds@cgeo6c-Qx}EVYZvh3>9f6`4i3A2{mb*i +r``R(?7e=I=qQ3!?9P4`2dQmwjKxL(P_@2Bkb&dnvXH<2@%{Ncy$JWGb*YOqc)-|Lq8}qPncaQfJm(HqFs>^Jm(a%Waq>~rI)v*Np?BrfUQp3r0*-9zSU-Pl!Es7?r3gjRg96qsEy-u4?Zv-3V%w +gy3!${68yn)u5AbAfQDJb^Pe?$5P8`j@Xu0 +OraK)vMwF9l0lHTcbhy04iY{ocP^sN^1{X{)&A`0_)1)cWQJQ7U6XPQ1pJP(+Idbp@v01!5Wy;QLl$? +2N`NZ^{wHzw!Iz22KtpG;FSpKX{*72!%jM6xhRCo4&tI3b%z|AGE}*ekeqe}MTX=4d|>o8R`^12q8M2 +n9!@i)ov7l(YsA&vDA#CB`1o6$Fbrl^UD}>uY%}q*Q;+ey`YZlv)Q_E#TW-lteXmXF!<@{-8yj%UrH4 +P5hkKj+jK0vn58#0Wju7q$BuZF5ejGwGrHp0xr?(Qqz=0IT)Bu9rBNMY&SEou?0QnFjiwwwoBg8%2_h +mEnCrf&QoGH|o_xR^>m2Md9k&#*Se=YR^*_p!k*v;UAY_NBp_1?b9vMF!PrKoUtoJZ{vWms)&Dap*L* +XGmxF|J^WNt_5yhB^m+`NfXpC7ovbxTG;qC3hDW#E6m!gN+%!>_hVgi`BA32JH`AY+?k(7`R$K3v>D6&k&aVbVcYM%^U|9hn|?O +tCEXlFbJZPb#ULn($&?fYUK}_q*U1TDbDD6X-`dd(!yf6>r8@uO^A}H^zCib*Smh~!ouMKJi#u_|jc= +WSsEdSGPoKVyyu>FZFm{OwFbcp=8l^=5^q7n4KfQ49$n`l(WMCL7gAAR2LT|?}4t!0(+P|c&PWc?;ms +fOLkA(h#Nuhbed(YQz2M!4o^#Ggmoc?N;~vp4^eYRE-<;$qqo}ME( +^}_f<9%nVOc<*%p5uqrS|Z>VP4#xf_TSo3Qv{WX@pla4N5s`y**b>Bu1b39C|f)Z{C +JBm7n6_}-GbHzkP9^Y-?~N?%kKBO#6V;< +-ni_RIX{D!l4Y#x%clytyU|#cmKL}=MIv=wyoRT{-W9J92G}zj_-ZnZ0^eOB$6*}0|8JgP#c@U1gbAj +ah-}*TF{Sj?kn3AR-&UnRKrPgGI)avzKrhu`(%oAG`i~id^9>n`dBFU@2^0T`-E(ap}1ieRc$s9^WJ3 +gDFbvBd1%WKTVG!|W-1<@!tvmPGgGVqg4e(`V*LxuFAr_6BX??V&`^&O&H!llCBc}Gj?IIjJH6I&h^+ +N-tIfc*N@~+pe_CV{H02Sr_TrmYW}&Jl_0`nr_LxrqYtaz}yjw{TuRlhQUrTCAudntYPGXF@^DG@==V +Ff|rq7{&HRikN8=bp`yi9jI#e+aKV0wm$swB-4ZF#a&tEsG2qE)A*S~+6zt7)b@45fk;2B?jbZHN&P4 +e2SK1f{EYb4z%+co;b{j5%Z*cB$R(uN>`|;B*b>E-F*6*;aH7*eu$da`Z^fWg_*UO=Y}8(XN^p?Mg+_ +AX8O%1slo*C&`5ILeFFEdYP*@i^fy`4p;QC^A+M#hDK9zvo4n~8efGu490X!x?} +S6HVPPM#C+d1@zO@w4E^yjRRi`iBeZ_p+ut6hy{>x5SUi9A?%{SmdH1mN_$z$;m3?e5dj96+H(zbEp; +R9x0U%I}@i$u2WV`I}%CBbmFmvAG1B>Lrho63W{$zVT&-?Nr&9SDPzBtFWLlaL`av}nlK_Pz1&d`VB= +R6KJo}Bac85&(xynB*j7?{de*dg~d-PGCOh4PgX;oN!S1re{z0$O2=Rqa5zM&Yl}_J&f_p#Fer=tSgf +)JHMk;4nA_wn7=uFDLFDfvYqJto;Y;{(}dt_QUq0Z=GjfwKg`h%?B>ztl4(;-)=sLQjbq>r^{q$_ebr +cNSCsxpJ~ZV&=yQm3IEZaNl8I#m1A#Y>98l#|DA!zPqa}+wi>=e#X +npMht6JE?f4(jI`LQjztG?6r@o<*gjh0#mS9)AurB1zJ?Ir1pFRsXpC%Lxh)#9y`dUW(AtZih~z7A7C +;fmDJFjp4$xm +0gVK@=WsDgvn@a4Qq+TYc*8=RY&9tBO@?knyik}--#Hs-5o%QDN_ecG8$DhvW^Q{n4H_TCo)mhl2lEn +rqQP;~EZx-Bc1QhztbR_l7ebjf}u%4iWZoOtYsh>Eh+Bu)C>1ID?hagO2I|>XA&uYCcjK~CMrJxNTr3 +Jh{!wVuMTR5@~QpQl}${%Z?lQ&=L&APn6K^p~CKh$?p8xU(%Fq>tnIPV=zQC&Z5nnvnL#Y8Ak%Au1h; +CaL<=EH{0Ta^w1GyJG^)W27EG?Qk#UNFa>Iee^gF%qK0$i^rQDE}8c%LWFWm!vwY2T+YW+0$eF +9yPviRCGi|%`dA4K35OjaSSxPkOpg!(XJU?jX(f3?JPR>$GsvNxJ*_kDTn|&U<(zgHAvKY^+x>0Ymf%^r^b|L`Jw_w2#`%3)@Uo*@la-P$&tq#+#2i8_h?@SDWz9!(((-KE7&yPy +c>sC!5!e_^7qKP~*dcYuQoMVQE#D?y7u->BK?M#{U5m0|~Yz{=06dS2kRsiEzMPP0O0P +_1?`raSKF6aI^8|$!{*h1O|6NKVC-h+@a(8>9` +(~pegLO2N2b^Jn+VzL#Nru>lb7&m4u{Qt-^h>tG^<9+$H+yea~K`tgY)rx%1^ead_J1bGSvlo!l|d|N +la%<>`3E#d^P)Z_a9eyV!@YN-&3W^J|eQAe)7_keLXxs-x?0LK(H&~e_X9MH#W9lu3b0K@Ct@=K)N8p +3dV7m4+gpUMVU$f;I9<1Q%RrSQ9i-R%!wYo|Dk?ZS9Ue^sD7=;i#pi~f##d*xG8@FiQ$CcJZf(`f(&Y +Db(irwcJsaZGy{M1#~v2YWUEV;y%Rc>S<^zPm${0BouPQKfcZNY$Z9>5GT6vP?Pz7mIuDcQvQ-`>u{) +iPhtWlLLg_I1IlJsFPob!r3THh7|SSOwfsQN(U)tvbJEUjtbnHH42=OX +G7~Imz#eru(?|Ib2W!-!%BNW)kk`Qk$IxF5nI)?3xR}eM?R~8SL7P6SnbQ_v+OduENNtdR?&jR*eeQq +67SA&uZ0;%sR)gSIpXTE6(#v7USzTta^6DIylcsF69mXE>}Cjv#EFE!o%}TFcF|0%+r{`CwQhHq=A&- +6wxv|I*&yr92siu*Q(GmoH}jcGs1ZYEX9@?4V+rkq!XcK-r^+P~buiuk(v^DS!F)KPxY=AO;P043wHC +#~qh-j>-#)jJ!`|>9D}zQIqe;TIg&NKz#-~M10>ZFd3Pp@9MXvI)0o5Oxx~4m~*&hR$x>L~~Q%H7)`H +o~SyG3@Q3XsZfYvFSb_V$v;kCXj +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 +f2xot;p`l6+*BZ_1FXE_<$yMNb36frv ++(|uY@>hZDBbWu`aNNirjgGm!SlK;+s~?R8$v!NYz32*#kR4e`Y8qu`Zx2Vlq@f;)-i>+{2sjAi)LX} +~veMc8DdwE&oW|~|!Iy#AU&UsFx0=cxIi(!kM}1Won7z`!uc~Nv{~{$_#gS6RkHwQB5O>T$8g;{kfVJ +Q+j7Nb6-Y?I+T9vR#8v7;+BpBgt{C-%C!R>QZJPW2;(UI6T26F|P&w7z;(ayWXOBVT$ +B%+GqF{CIv0~r9c8Lb>E)4Nn7?@{-4Vvnnkv^3z_hIDetGZuM +9@17fBjo{Y`)*{h4P=`;`x0X)RRDKzi&{nlylx_odkj9BCz`meRL>g>Hx;GmqDe1{dcR#i=WdK2sJo%8wGQH4xW5=IJ#u^FYyxG@DOBxfyG +bi-W`biXBK!F3mVKZRA_AI(X^Ts$8)j}ELG +nX}tkC7>V&;{JaqqSYFlso0Hfnx+wo)O1h-YE!9gGeT?&cutLFlHupO2m5&9vZQ=ZLzk&ZNC|x;m})P +9iN6Z8;J4Vzy6>y?hNiroSE2+z!uk)bw(duiNgXnz>rOJ7-+-K)>0HEB)EZj7wSj&$yrG=hLc_eBA3V +8>qNPawzU8tZ!hX-o)`@txxS*M}0x1U2of4yPw_??m>D>n7w-2&ewDGRw+xD-d07tOK*#{P#cMzdYf` +EPa^wfnyctlbysEXuf2d5Cp>CbKwU-W86UX+Vdx+M-l4-gNZ^ry{}KXt(2JdW4B)NmzXKnjjx~)#@b7 +q*r16v5ihnNlTooVE@+%VBS%B9Yx-7^J5@>(U_{s%upX|pcH}b;+I|6CVxlio8l#V%73b-guzA&t)wT~vIj7|CwF%u)eV$|1!c4w``g$_u$0<;fw~;Jwyo +-)D5A8+qFoQNX!#>nyi;C2|*jyZ_qd@$BcpD(r)NScTi`#ddM`TtBvO9y>kRnxJ?2vKqYZ%@$<#@MlF +5N8fPsQxmLvv@&;pmlnjSkJek%N!8JzkAUlivEXa)Kn^8}`;Fu#4PT%EqpS{l0Iux#lg*|nyq;QzpmH +7Rd*TdNbXd@YEN{N+ogz|?>>SCou=H)ICC4CMpx}c;(9u?4HtZ~#20k%9=^UNUqbDD+ +Zut0^YXncl(ca%y={L`z3z|x)t-2ICkFAjnF>3 +XAgz_-oban8h7zgimV?-8*o*ZXrl%bNzGJL`^SxAuR66GnE9wSwak}07DATmR2AkfjF +)bxKvV)D$~Tp&O$avh*wz9l!pE)#nCZ3_6p5}TR5Ci+V5V`(F7(0mAMnD2gSW0R_zt~m`;-k-_g_Nq8 +T~JZO%=lmvZgTzG8@TQqXGT^(K?pNgXe~!yQH^d^t7B +AU>G$~&R!@h6PE9W2)3o(~F=K(%|CMJlrkg5d7_W|A`&99Swz^{q5Wqs6rKy|*P>@DNP!YB0{c!-Hci +alIH8Qc3vFgT{n`O#Q>I`Z)APuo}Xh6$Gbi>PX6N9+! +MxbJVuNt)7okHSB%RYHtmq={0N1oLo65Z&JXLX0fHhN><&d?Cg>W~8F8J$vqAWmW9w7_ApIM)+0D|`# +^3uP=UY6BTIUk2)Q)2)qHAWb@wr5%)1+jh|+PEBLmN7DlKbaWqBCkE+m`qWd;qyJU1e%n(;(-JMMmib +TE@=};J#QQ?g_ixNaTi%L685mD*jSd6+PZ>HYNS5ZFjLH^7*)fI%lri=o*Iv+%HT?O*aAf0xTGbSqXo +zwQxTgAG7bt`KT3y+VeEvj12TeGDK~M<+&>8@rO)i6&Qu?J$gotgOqM{FosY_Hsy2lt;D9uh`Ce5aQ< +!*>Bay?Ia(&{dBC0yg1TlUildt=-vmbi0zYkkh|_)|&H$V`R}j2bLKUAURI=E{?=Mn>4PqP^-F*6eA! +YEi~3_9ag5-BfxW82>eMBi{|d!D35L0Rf)XdWXuX;Ek5BQ=Wvb$F20}pZ`1>GyH)E3{aq894s!+l7b<8i^VOII9ccOLYj8Vi=w$J7GF}$LXt-AK_Nt99hmR3^WNK +|iK@Ht4bya6pb-71nX)nM~+2?8FUYc0gy5$)CRAiQgWY|J-K#TI6%JGe?O1au_sWm~xocNoY-U&Go;* +;uuS~w&L+K|G?s$*B`GMamEWd@C1wY{vK&Kk@~fIo51F~Zf!JskboGe{o+O#7d5+N`m%L``X9mMvSN_ +sBSSt&y>Gh`cPZMhz5L2jT4oj&=Z}0LySV*|KfJNFrdclM=_umPQP$5^PX2PtFj%LAoHT7&W%~xMzVl@Rvym)0v6{)8dr_S;ISsu$O+xKCKiFlu>A#Trm{#i428&JbK +?!AChx$$JA2v@Y#{x+Iu}`mw8QDm`YYl%bnN~Su#qJZDsW57xB4A#pVdugJNS04HB3`vR;Eh5JS0LGQ +uuVC>6P3{W8B{peh3nW6nqX@q3YNLoPAO-3;^`ir8=ODE8a2{X=CSt`cBX61I~#p#U>@0E*HVnIGp_# +R36%tEx*oTiw~gPbF~6cQd!PwS(~x!DJb4k0H?52x{FDVi`fCQ!GhV0A8_~j1`64V{j&12au1B5whhI +*B+6Ki5Fycohi%UXa&OuiH%Td4Q2?T&b}hwjj>8>&676UH4Cc$=sZUlN`&kTWp1H44Te@4uQz^VL3=2 +_+A!=AHU8*@j=}m^QK&Ki07icoMUQTTdvJl;fBJ~whl)bM>&gc?jpm^#;E5@)hBg^p0ib11GzC!O=O) +doF(=9L)RdD*ib|AQ{U?V$Zh@*38RT@6iwq+%BCGiA23G}d9~$A;BEQyhPOpMDT8@Bwwj4meb<2t5o- +IdC_h>m(BAeajt{CKk2n=fA%Sf2`IS({*)~HGrc{dwbb10CV^p1RzM(s^u0!*JU_YtW6T +c+H-HyQ0_5)645L`LL&YxvJ-SRH8cc;0|u!@jV7B}pXJN(m^m47R4a$>B;^Eh^fCmrAY}C?_1~h+wSy +f=AG+shg3+MRT4AS`?Yg3@}rbi_8WphVh{+U}Mzj`20lv#9LLdBj?W(HS?A}{mz-#oJPTB_fDg$Fc<6 +ktc!U7PX@9Cl?*kPD29Y2HJsX4Jw_7DGXYxW-l6g&$MSSs4ndqZ=_F7^>mRi{jjv1Ly&IJt%VX*$!ov +R(j8h2ftl%!<{zq;>Sbo~TrRoO4-U~ +R0c8v%Y59Tr*&oNl(L=N7kzHA1Q?mJENAs&6u+mb0`%!@$9GWM<(LbT|1!ecTvnhKz +MTr`pURk#I?cK2f*gO;=9&^sc{hR;faVq +f9yHpTbiu%w9c3IhlJMInlyfv@)@aQB{eP8PEft38$>=v~lh3_aZcC#G>Bv=mtgF8xO%1Oe#>Q!I2a6 +H%<)EZEaknv6n)#`SFqVgS8lEiFk>gN-;~Z6eErQg;JLZrTB^~J?kg=7Yh(}Ecm1?Q$n{l2S7fjW>CJ#rhr`HTaZw8o$(tq{(E*8xEkZfX*+RYGjo9M@mFF_(kaFikDx3uY4Np6Hob(C~62{X2%Z{a3S8aNhH +NG)DzE8fBTRGC3R+l-&-^Y!dPBGo8&A@Cut}ns0A1V^YuuB9>yyT-*QSDp{{ys?%iWc40=U%jeaq@#p +pjx5iDpJ(l^NrVo=Ca{01kUS8GX;sV%;MXIe#N0qIh=rQt_~$)JEyZ2`82t$R_$?O*w!hH`k+CUH7rH +aqNVP@Togr7eOQosQpo3?hsyK1TnDBx8OJgDgr-jtt+pu?Lk3ZBk_4DlROK2LBIGO9KQH0000805+Cp +NdQ)?I<5c!04@Ol03-ka0B~t=FJE?LZe(wAFJob2Xk}w>Zgg^QY%gD5X>MtBUtcb8d2NqD4uUWcMfW| +$q#JgPu3VXDhzk=v1DVtT8lclmi^SVo1QHi)|9gM(M{8Z8ZK-6RgnMv9U`cTIiKIqLMyV%u1TFz#{6O +MOsf7oybJwoj$)%RZ1U>r(JPs5?z7UPlTC1wUF=MGJI74w0XW@Yo*%uknfUaK%WpZ)sg>7e8ni;=IVv +ZK!V2(#~DwO&SFq2>iB-^V0XI2AW7}CCRUC=77fAsrqj@1`XO9KQH0000805+CpN!nCKr2_&004N0j0 +3ZMW0B~t=FJE?LZe(wAFJob2Xk}w>Zgg^QY%gD9ZDcNRd4*F=Z=5g?z4I$v<$#e^&V3~gX;L+ZbX7H* +vt_|7SOwd)O``VKcl^b&P10}y&%Bv=^PZ8j(bkhm4}(-gRh_J!iIIl!XHdPiL?(cRUkfzX`%0M8vbC$%cWi_JfHPV-$Yh+s22nyx$FU5 +TS-TtqSFP3`Jx#s1@dX-|#gxY&@u)#u`hACTpwOY=gJrfml1}1f?S9ZNaYEih`WTm||26M@6aWAK2mm&gW=T-ysV +r0l0000I001KZ003}la4%nWWo~3|axY_HV`yb#Z*FvQZ)`7NWMOc0WpXZXd6idDZ{s!$e$THEt{CDJf +zjgjR3HyquXh`;4F@cTdpHb+Vl#;l#quP%x$M`El5AO)<#aPp)Uim46Mbz!EtvbUZ|hPE +!PR21m*Pws*5t)2)RmCAguh!*TIIB&jRvVmr}WEq`}rsLty9ZOQEMqU2iXff)A9(<{&O#9zV;#?SgEa +8x4358o2>EEXlFN{x2t+{pshR!<9p5364(XBE|~J``urM^P!VAqsT%ZTb1jcDW +|Y4==yHY+sgttrk|Lf;}k;Rx@1`nF79F6YKZp4^hL~ii{q+Sb(Mnwb{xxDdH1RSm)uniHUHP`+!6JK^t +FaoT$ZQakXzb3wxlO`kHcHJ9z&K?gcES5PQue3}uY*WH8-=CQQKl=O2@>z#z4PyXqBxsUK`!n8L4-!ZjVn6*`Nz)-a5-kd4bh+0|23y>P1GNznRohRKw(cUFjF=VqL%TF) +c<gj +Ao?VPQfwc!+*I+5>(h(o$XR~P`t=Fx?XqP0eO6Q_yHTGgw+hL5;)NAJVsb*C@uZXG-?TfpBtQ1dctF^cMqH(x&hGuoAX +{L|u;HrX!^hkTaINa{U4WQ0*D28weJAbDSnFA#-Io=%vRGf8WX*D$RM6HuQFq=ck)K`!@t`nV52O`X! +`Fd2H(wROwb>2a%%hWJa>!P#+M`O^~d_`jq(Qu@|$1v>iuQX%}v~kxgR@Vsr>};(Kk%;bDFgyOGgA@N +>Mv2n93dZ$^%pu{ZSmcRO5c@jXk)h1K=H=f7y0OUn>Ug +6^g))#T!oxN;P&bjv0RR9N0{{Ra0001RX>c!Jc4cm4Z*nh +VVPj}zV{dMBa&K%eV_{=xWiD`eol(7RgD?=@{S+rABBeY)qzwI8B1KV$?#Q)|;Kta@0zaAc5+DQi~`n1mhkWYrIK{2uQ`!#y0M}@d@L$Tx`Zypbpq6vq^S*FJL*9GxY2>mr&QMw2)ccRr>h|E>G(#E}mWzaK-zS@x +jkF}mqdOk>W-r$T)gpDljT}W<>|5*&EbjQrP(7L)|IZ8-UCS@bFHEr+D6Y%y;Wv6yrDcvj3e6Yh9$Md +~fGhD0P)h>@6aWAK2mm&gW=VMxOYqJB005u?001HY003}la4%nWWo~3|axY_HV`yb#Z*FvQZ)`7PZ*6 +d4bS`jtl~2J+13?VE&sPMzRFJ)RD|i(2BBk`cOlMP#o!!JFQ?`Haxb9L5dTw|*9c +2UwMX5_foayL5huJ^pBXMK;$;`~*--0|XQR000O8HkM{d$6&eM2oC@N;4%OJCIA2caA|NaUv_0~WN&g +WV_{=xWn*t{baHQOFJo_RbaHQOY-MsTaCy~Q>u=mP692w`1y4q>+RLu&*nzKS!0n|@0t85#B1x|weC~ +plxVx(Lsz~|K!~O3!GbANakB!|H2iyXQ^&p4CdH!aoAP8okcY^JdsKTkOfvJb;=*FJ`kJKfZ$@wTR*}uhL9}b?|c-UjBS`_|3u9^TpZXoAB@u?(z1o3%I- +dnXbZr;iY+Y5Jvbn0D7}TY_urWO`V4DZ*ewb@B?}OfR82P3>R%A@Wd4Ct`=Ky&$h7hf~5s}RaGFd^qz +go$_@MY_JW=K{j1YxMpW<@N)SOVmW(%Qhsu6f!is9QWFX-hZZ$0gNi~)9{oU +3?8Vm$d#viFk+wuC&AJ(l0qnsNc-I*=Wrdj_WspSInn{?Z2>Z~a1Jd88BWSwOhF?HQgIg+EXkXohJ@Mo%5Rj$N`Wo3VKxyMcWtl|@x8XN}Q-~)C+Hk +p92J`{@Ivug-r2`h{mIBp6(SZm`QyA~jN;mpT~0}<3jfh666rAJ^40{+D``!qU^j*-SEm9W#(sGV&5V +y#6&`eD3CSny2{{Zghyc5iGL +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 +WJ1;Z-b1F_puDPgz4AGV5hSgNFjovw-{J +nq(=4jI@o`5h4)jnwPEn11$rTdKmmh%%I7$h~{s1-h2;i&6WuBw+Sr)RY~K5f4~cp1Ius55xLHW0o0D+bBIHjpaC9s~H0rVUV_Xo_xuJ#-6!qDB_i6 +e*BY9RGdaP_`_)!2;dG`jFVx@XebyZ-#Dy@5p#EUGGDppAL!RuP=+mLR%FhJt=D|rFYN9@~5Esp2Nyl +Us$L0!-DX-xw*;zKX!>l(=m3 +LI1_yf(o|(Z|&GGnOZ6+i_4H4%%?kWy(WT2?_LuHQ;QG0-|%5qH>^$K1exG`@OQFqL6&L>H$v^F(3qn +-oBR@HtFEzUfPN%;Jx=7!4BIFrh971=g-Q2lO_{1{5ZtNMm6$iX=f +d6*XUcK*v%_ZIO5t$+Faw-)DYA>`ckj-!@tfv8UG?x1rpH__{zsOP-M44BrB6&>hA0-2Hfp8OaySZ|c +g1{^UVeUgpvSt#?&ui)-EPG+VvC|Eu62D@Hu6l%O!Hbp(_GK_CDW^itMe);(6>A&tM&S-7E}kvi|@0S +MgL6l4i41{8bBgi$BnGIw2_CiuGcE5^XS6DIUIrixfG<)`+zmIk~8afd~-3O>- +XF<8gFKjqd^66=Fg}aE-!h1jq)u1f;gDrGi^5XAuBx|+)%ar96r0{CBa)7g0-eP{hWwn6Z0<<`61xr* +rTUEe|yFSk>9hcuQ2jY3^cGE+^%?USDY*Tp3?pcP)h>@6aWAK2mm&gW=RfI9{j-t001oz001Tc003}l +a4%nWWo~3|axY_HV`yb#Z*FvQZ)`7UWp#3Cb98BAb1rasl~-GD+cp$__pjhw7?wR-wqvKojOC$Q+oeF +$Zmol2C<1|&D4PvMY9tlME&AVgNRg5y=hFB=*5%yzoy$kkEEiIv7&F2XEIYJ()-)rXPAWx)NQNm33r( +3q?rSP!hIN898KE3YMOwF!{^pd;ld_)6r<0Hrk=vX~65&)68CU}&YxV5C;AF7uAo!VQFlPURtel2i?1F)nkVF@fmlD4s7l*a)g(EGZE +y0QLqMco*RWCpAxP?Y#lYywc(?!lmFc=KLXw0xu=nt&OIVmJnn#O@xe{M@8Am_a!s!%S +)4NXXbv=9h0CU)MHLX2J$G@H#U<*nBFaxwu?rb0?|8Vb3YY<0#aGL2uH%oooTteXlxJ`GR91=?+iBxp +wvCnTxNXkoIkh{O%7?_`0tqLA>!lJHK9T(0`F*%XaY_v3+uPa3k;?bqNJxvkm~JM~}=F0 +H7AvkJ=Tp&iv*g!vv;v-2+xpnd;g^?C^an+VQ7T)uk+c<%5Xx{AlFNC;8_8s&2{ky=#xW>2)9OT|qHBCN +n@(S<&G|3Jclf{AW(`F@_RRWnW(`||jb2m>Fn!)7TLn#_*tD6?!n}iK}PidAq>Aqqdlzr#2Z^5Jd2&p +EPZkSi(612s?^v&!3RWoOPU1v?ksAwmE<*KvUV04tYJARg6JTnACbN6NW{A$p2S;gZQc;!f_#V79bJ< +7I)$FbmA3T938^I{Ftu-`5Vr&3kL>(cH^yU@qWVmO3(J{*Fz{|chCGQ0+y0y(DK417b|IgwN(brDom5 +Ji+z9Yrqx!{PPrAosSXEX)vo4Y`$i`q;fEm9>+>(Tr+9TjgWKh0)6}J +$l5-1T6xFJxzHPP6ui8fRV6C`Oe0=$7l89JMK9lw2e6{*}V!Ff(=Ql6^Ia +~_6ZK}Hau_O%QBohVul9)_5(K{lqCopWahy|M%^$Az!@aI!}4)}&~owT9|i>=_y=hQ*(jG +)9K7=U;Rwu-Z}owhp?Je{(FN6Xf@2*Jm1)Ic)ezC9%uuhCHGI#U+Pi%Gj43$C6b=0Y_mOx_)o=e`O4e +$p+o!knQ5-fHCJ2WQPYko+h>x)V_DGV%zAVh-;wv-Alyo)8QuZm((>G7=7`x0nYA>{xet#n0ZwR+F>L +ff?IJFugw1S(H)f3)z73`$D?YZaYe7#tHlXnl8jZMWtrW7o3WR$em7%abOWAk!Cc_!y%3^X +YWZK;RA&zn>k({pjjzqH_n+W0OZrcR+3yHl<~1q4THe@~9ndGW*uE-QYp?I_P8P$7HYbKTt~p1QY-O0 +0;m!mS#y3VSuc!Jc4cm4Z*nhVVPj}zV{dMBa&K%eb7gXAVQgu7WiD`eomg9s ++cp+{_pdms!9voks?80>b^t%LX}X&NO^RlaJ{X3FmZ&i^GNp=?r*4t|-g8JwrY>V=YXlix$dBjxopU7 +ib=7FtGR41swGj4BRNd7lRmtx9k5X(Gi=wIaP>VX<9JtJ@CT;j{EmvBlN;hq$+lDJ}J6Rpq?_u;3Rc2tF;CKWhGMzKJZ4cQvAW2sM>zwnMNpsMd#%0zQ)bGED~^0Ll>Rfw^e>z +zN_TWO7`t$$63xB1R1at-gqepGz?!;x#y71T +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 +w1jA`dx-*n!|pnEHXCCdtS*9 +%tQ|{pF4-eVn6+pbuW*k7r<5?*-X0OHFY`EEVj9sEN%v1(6H^#V&x0||a|}YsLRg_BBGRID>H)h2bVJ +7bGB_$ZIFW76Guq-ZSOO}6_q77FD-0AVqSQCj#)?|}g;rQU)toU?sZCwP{pzEjFgw1Z7%~N#)@XmaIRsj6cYh*^?^nm_qeOoB +jh$FQ(h~BTq;%Mt^1IcIndpn0W{Nz?~Vpii%OZ769pLkXXr +sFU|6C-dH0|DbLs@GA-seKP!(5iX}Uim;{E%!TDXU>v;}ge6uWY>3_@<`^=l##@U~7%p-42d_8aS|^! +aa7m)Xm67#5i&i}VwJSpOT0mn@k?!gK@fjHy2Yndu$jqSy!X)h>L6QD_EE1qXf$+As9iXHA@Ot1P?1# +7U_9)6>G4X-^W-PZNZ?J%>=y?S)M?1;$?4U2g#U?csfA{X^9JV9P1iU_^ksbeh23WAl+SV+Nj~|4sHY>d4G{-o>G$wuQ4 +!3aaITprjz#PB-sW(G;0SydSvyjv<-sx$%wyuUavJ)@=b@9u$8T*la^~-NBOp%t`Dt%PKmm!T>^vD^E +YK1HgwOYe2Diwv%MMm|c-I%9Tug;Ud?<9N0jzS_D4;Sgt!c3Gu#RK*CJIO;i +jqW=B2;3M=t@ipGH{4oSWi-e0?FF2af^kBkx*8x;8NtZk>$equAKI)F4VE^Hy_GovfYhS0mcJgkhSce +k^Z;<|Sizfij?S|K`c}FtN<_i~WvgY!cj|aeuxX^>3cuimX0UCeR`QMz1r_(|4!!5|Si2t*&(RF53M) +778e}W(U(UV8#)^s|(^;B?NDr|+Poa=Gg{QdSi_1U;7Q7G_dM}Kb#`kpI4bmrYJCWQIz{j2f+i +ZYCgV)F@i% +Zgg^QY%gPBV`yb_FLGsMX>(s=VPj}zE^v8uQ%!H%Fbuu>S8%!1PE#-Ih8zm?w98J#FkojvvFKW@ECmw +NHvfL4qxfT6bg*dhy~hvJZ45mq)gI{>Q7N$fAw&XW-)yqM7ey-oqY26OIEM3kQ4|JSpg`KGgiY`!m1L +@i0{E;}tDh(8f`|Kh2TkY?n)Kc}OD7Hu5ZgkhlO~Ex+rZ62=_c#QiO2UQ;mdZt-c|7VY;ebo(<#9(G&X(LO^0RJzhFaL?4Th7Q +ObHtN|gy+yW!TopY +MRj#LC&^;fh(ece$;m?8&&9eMcck{=y{xXMz>jm1<#)|G)tG#2)SzS1f5$ZGX3%m(jYAy=;*7(a_ygS +mBeWr&A=W>Gb`GdRNsz#L(9)0I>x4D@P6+Rox>2LiN8+F5(`BpWh#HfHJC!ABWp!=dSBmC+{=4WI$0o +UX|9HlK08mQ<1QY-O00;m!mS#y<)M+`h0002+0000W0001RX>c!Jc4cm4Z*nhVZ)|UJVQpbAUtei%X> +?y-E^v8Gjj@UXK@ddq`HBVulXXxxFfuq-50%4Y1;e3PTWxN3T6)^M+rM{3g^P-M)T0Ja$+c5HUktXA& +@Px@jcSoPn2sl9JlV48d^sRjKXfKBcaxR1)(#(=VfH@4uzVx%9b9Ycn0|XQ +R000O8HkM{dJ{6~5ivs`v+z9{x8~^|SaA|NaUv_0~WN&gWV{dG4a$#*@FJW$TX)bViwN_Dc+Bgt?_pi +`Q9t?9FvB7Pox#0nfo6r*I0GV8;?RXS>!MYmRCyAr{`&-El#&EuA9_j}``|103t^L;KiuhT65Nwku@* +(3?C6tqUDpU#w(sSH?myDKU(*NC0=}rPkSp-}{he!Z2o%q3Q8IUzgp=;T;ZLJa}$u^63DUc0t5LAIA! +`X5|qJ#<>DG(&eVhpN`+v{uK-97uxa)=r2W@2-#SJzrM1R2pB +LM>`auzXB5Aof?M-~VD;^QHf?`es|BU|Ou48{BEdur}3%DhqXevZYt;TZ`Z&KJCG7|Ml$$aRKg;~6Z#GJ)#9na8eBF +Rn_WTz_s^n_jFl3ymFlNR<-od8Zq_Pgs-?4e{Of83cB*5_!xsP8 +gSpV$-Q&xY~nGj5kuoBREm(oXD91=oU`os5H@w8t{|s1kz9iYuNpmbeEuVc9Fi@owg5l!ysyv +2`%FOVI3T6kXo@ACbZkKSjsX_IxYkMpTm#%Kf?!q$dItC$OsDgw8qhCuJO*b{o&g?)cfo8mJO$nu!2d +j)oiW}T;OTy{3hKa3S?)4e)q!`GL9WOu0erUWL0eNM(gO}=n&QOgc_tLZ9WzvV0CKcG$=1a@;=smK#K +nwHCwKQNb5>#Sr;&f>Q~;h;5jKEZ0p_fZj9vv4XJrrs`lmS_gHj6tuL8=m(ij47DnOrA#duo*=B$p%Z +)#o`(dhe6c)@G(g4g5)ugMEulNY=uFL+H}@S42fHF?4NwO(+YCNsEBlN(&8$qug5GFZMG+Sb2NO9KQH0000805+CpNylTr*>DN~0K_E#03!eZ0B~t=FJE?LZe(wAFJo_PZ*pO6VJ~ +5Bb7^#McWG`jGA?j=tyqKnX>G8?yF}t{Z%U&PN5?(05k~k7li +GV2~*wy81etkP<%Qz9^gLsprxn{X2uhdqRm#I29Smx=5jk#1YvrngR{bQN~8eU!S=$pB^)!PIf(vLNJ +j-?j)rnJ0|N%m=kuLO7MDV+p$=eR6#)sEfL2?*#^|8uEQfoD3p2MC +3Mio0O!5s}rb`E>iV~hnrq`nExJ;o*^SClW@5W(Rwwjdf+YPMSkkCmT!hsX*N@(o73K*SpLbOb=t^8) +Uwsj3>2EqVo@m)JWZGXn5Ew!qsg=Kq}-eb}A6YFx5C1L{^MdDQBUJ`*uKfnwE#3FrGSgTNpki$4*)9c +$y7Oi;>YfT%R&OZ!HWn;teO-(iX7p<0Kk%bpr$_&K9Krk3b0|$i7@)Gw(}dmH2 +-qdwFN(-UM*V!coelN#i2aPQoAZ(X_51PP8hx04K0%FhO2F+_X^3@}ZZ?pegMABTg8CPjA+XoHfbkbf +=*f>fQKC^$cU|iHGR-%T$t_L=VqcKnz+JkmS9K4COr&y8Uz?iZ$%^Vnb<91`pJ6#A>tEAzef?5o1Q=)~FH7s;zK +KDocTyYenr5W{jo>!KTL}LKK)YE@8&h%>1?;P;j$BDkPBCrfFQ?qShX7=*UsKX@chJJTMWv)ssYlVlZ +W)+QutPx*n(;H#=az~6#1OqX4;%kQ2?xRtDi#P&_STb5B5+_&{OR3Ig>|rqhB?IhIEe*l8A;pb3#78g +(hR)+ARj^{7MP24bn9iG^m<4)XLY7JeS*+EpmR2)9G~1H8I!am2C-`@l7s8Y_77tCNZ~?PiL8>W*Scn +Cb*ODz!Zv!kBv&b;St(`RDLlYbh5R^GzE@2j?sUE0FZyZWsi&&|Glqs!n+$^A2+m&$TQ4So7bM)yBT_ +)6(kTBEW+b2;0(foi)BvW~0)re&Y*RVp|fOHiy!6jju;edh$m1E13SZ`sM@vVlcB^y?~&I{4Shc +U7a!CVvNa~kmDX^6b#s2++4nUf9Dt~vz010N4CKr#@ow}0|3{bZaz-01_4ZyKZ}7I!tuq`boRkPSkf- +B-0YdxL-sfGx4W(3<&f>WoB8~Dw>7;Uvi~x_y83j#8^F9Dj{fs}DEQCwA?uIRck}DJ>23hqUl4M;MG1@HGnBEk$}QHwp%40{IQOp`tFkW +DWn?elz3EK96GINN4VL}c0^95&b!i&**6ID8od!y~GWHa*d~)n3{}_DyYSS?|^+vTbWq%X&zg$iAaZE +r3C7ve7rRsT2H8Z6fQgHnjkTwTUoV+SCFV&?d5OYg0FayR^v;UQ?Tl`H;mfZR(@V%jE0VrY?#0MC#F| +K1%J0)~8Lq1ltp@t4%$0+Y_r-oBGMOCt_EddZ@T3R*yFI5VIHTkM;r=w^06mM|0n0`L7X7_uv{`B#9PVtiObWGjmhh#I)uOzogKBw9huvl1_0!?idJiBj^38hR_cmU@{Nr +Hch6xC`FLIK%b8GAdH+nHStu25XPB;0zW9n{s?$Lzyi>nyVh_IgVH`*FFY69s1rJaE`rZs +B16XZ@l>*Yb4LY&z?6o%&$4?QB%!icY(at4HMTq%l}ws-hN!@T0?qYy5m*w|CB2?RW{BPsl>jieaI=rji@C|7s@O()g+R;;ltc>;dncY@G7^(|JThrV& +D3%+IHI^M!IuJ`uPaNV{*dV24d-VX0|ktM>1n(?y{TH(0D)nA|>NLbkkF+D>Vrz>D=5^LXk(4O;6%o?XUl$|usXuE?~I^(}W`+&WAWsq7^dV?pe)RxOKk#i+N73HF0C4_~aE?;t{)5V9u +E|OS^|FHwq8hUeB&MsN1V*0>&#Q2j+lR}GL7jWTZOv2K{`tqk7F}1S8kz6EP!}6rzh^$1XO`1bC1*0M +h*aiG9(q|d48C(JPVN9WD-ogzoo*P!*1GWXo-@GaK0R_&E4 +<}fw_txUzj|rbai@zP-u%$5?n9U$kMREo$Q3M1V-2$&bqWcF?UXQIDN>0GRHscJ&Pk0^SufJ&XVF;oS +)R5$*r~e6XUfO%>5kdMtwF*nRp7)~W!bp|2kYQJP)h>@6aWAK2mm&gW=Vb4*e`_w004al001HY003}l +a4%nWWo~3|axY_VY;SU5ZDB8IZfSIBVQgu0WiD`ejZ{sK(=ZUd=U0r>!=|ec!4?UrQY4@hu?X#DS8xD +Sxy__CICeF5DEar;&X<$z(v4Kro*9qdn|b3Itkkh4zCRfFtRyoBCgBq!Bd~^>m#-Enyubedix(@wDvc +oc4yDEfG$MStU9Io#*HCbQX~fH;A_L6eUv9eHPD#5rf^R#Eu5}a@q)JGc)ZC~Omx~){z3;5)L49+kD2 +kK?w$Ub6m4OWIl*HbIM4c%*5j!3+pF{@MFu1|D$?eA4J~E-LG0L$3LXBp_gox+M2<*p;5D#z-QW>9S> +D)88)w)8My?MO^wf%)VqoMSr+~Q7^=tFHmz*hv?FGv{&1m|gRe~XAqZems$Et@Lf|>7JL6^PnX>#05FB$A^ +COaa~U9BV=Vf;x(>%0zpIEnfU~;BlJJOfx4dr+{8RObQ!RXdj{aJg~5P@8Vt+>y2fagzvtQ@#r+7(Cn +4RuI&rnbk)t1vVOB$RgtL0Sc|r6vL0j-A6Ew9OsWW;zymV>1ESY3`BoB6{gd$e5jdR4;c20Bx*Vn&KZ +q-q6bfzxvF;ovAYK|iJyMjwws=(Eiq<_#R6`Bb4a*@Ud&ZK!>sV4K@pbOR3{9P8>h{<#q+)d%*+9n-I +yn8#x7iH7yvVJuPu_sQcKB!9M8@G*vH`DX>m-d`(tT*@=LQ|1!Lu?iP0Z>Z=1QY-O00;m!mS#x}ZK6F +)1pol`6aWAn0001RX>c!Jc4cm4Z*nhVZ)|UJVQpbAcWG`jGA?j=%~x%2qc{-$o?l_L+6(Ma)R%A7^+T +Gb*POCR6|!nqs}&+J6z&L)Y|}J%y8nJ-Ou!^SH(H&vsEW$?nejZs%y@iChIGAU@k=DgA2jtuiI;I8N$f+)!6F=hOvb~})ESX5PQdQ2a{5p0l`{eO{0oa&~bcU +qoCAp_2ENA%P1G>?H&Zog-;?76IMS~BYytjCjt&~=azu(IL0tkugVn|%q;E;q`sN}-{9jGE%!LaPZaz-^FST6n4{H@vDPYmse*sG&xw^FVmH_ZDQQnIl=(x=4 +**oBi)4S1-Cwc6DgCp(FX_Ev$vtp5bm{_i>UGdb3QdGcm+-$MXfSK?AoA^tyAosdi(ht6W&Qs>G*r=wBc;-&F_O5(hza)>4zGAvZHC +d&StZq%<)K+h)b6V+$Olz+1U-a8pFBgK&xcsW?k%MYZMZsCZh$Lm@wsXR%k?(PZo#RkoYlskeOHpLHQ +a?cmRhi<_?AV0_$3s#u(oaY#f26*%UEW`fX=FfV;U*8)mXDxx@ju}if$EEVi8nLEH9dSTY_bG&h@79v%PPiV6X7kE45rRl61Y%eyRLO<6L?#LFQlgNW^ +K)y9$t_+F}Bv5S?Q_3Lf{_6Qlo!HE-alpzMFcal#zNgYV==Y*vQLbpA+sgiZ|7@K3J4>z;O4D3MdM(o +Y`y22TaiMUvJQ+ycWEJd@hjkwxES{4m?`{CI?%2=rW_SN-?%SSRi`|UslMzTUxcWpZa>esB3ou>5GW) +aw0q?j_q1#0TF6`G31X8c(D$^(AtaIKtGG}Q`b=P3YTUpcf(>KAUy=1>m@p+IE0AE6ZnJKjeodva3(h +n@&wBB*LdY)q<9-cvVQ~&H3kD423L(FzvRrCL_xoV5{tCwWZ@v&N)ZTrXS_xoLTNK`CXd6(C3$=J +^}xG1loxJW4rR2^C57heX0KNX+E#66Bm4zE5hR%4qXSAOFB*p*;MKpS(TB>Y_o(sa_w>CF)GSNpaNM` +k|d6~NwqP)h>@6aWAK2mm&gW=VH@XCdMR005F00018V003}la4%nWWo~3|axY_VY;SU5ZDB8WX>N37a +&0bfdF@!;ZyGref6rer5>f*#;UMYts*|Xc5Sr#Lg%hM|^Mv-pgzXs{dA%i^s{7k-{IQF@ECkx-bPvZ% +cI^4~Z^q-)pvM<0k=)ND{Ki=zX90tEfsmA};I!R2Yr)0%63$L~G{{l{G>HgHNfS~+;O4s5AB_7jO(5i +taM*aRk)2Ev5-JK82{+Xsn{YxTe&yoIF(|7%wo8d>b|0>saXZU~F;pkYdDDfQ~3`g(JZ@ +~MZ(+}-7)F4jgAjyMl>aQ?}{=64FW3dTobba;iwnFkXN`~ef9ub~gV3w{%!w-W?EBx9wYt=Zy>tJq)n +6G2eT4OSW$s}QkoJ{H|p;H^A`YEzCL5?7!5^d>IZCw%B<1FQrj3Yq^yU3n1LG1R%EJ(?lOUP_N6n(?XhWM)s4# +J3jsYwJf&S4IRwN?VbuJ$T_95j=;^D_p5NhXG$*GmW(kA2&_-63~on;MKxKZ^APyZhzaNq;B@#yn&aE3a%U@xt4m~3R*T_U +!k<(6sF^{Alhk4t;?LDYDAal4mjKJeZRs`T#>23y5{bdxC`ql71pr&)Ha)-)7pI-P}RxT4(SEQqr}K7 +WGK1yhWdFm=@x4BVR$<==$GqinaEj=#IaY9=!N#zH}AsmYqxw91uMabwhKP%!r$8@Hxj+hQ}N{_T7k+ +YT74dzXbsBBM0-um?R3?!4*de(m1y@S`Tm?c+P*#gRZ0##30=7MDD<~Ii=F8=)n1u@|FZC|kS#5vV($ +R=9ZnO3sqj65(2UhVm@ON`x>K+F3eJ78cHX_gUFC&kU-70~e>5sM>|!x5+~R;z%mj5KYXfZfH_3vhiA +*@NIWVkFxcUA*Lx~k`#minMQZD|mvQC*?kVwzBAI;s4mmZD)3C_a=FKTRH?UOJ_N$lRl>gp`V=j#XZu +)skpg^rPKZFt}M1TXUG)?2^x*XajZ8r +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 +idLMl +Vo2gA$1hgY8&i!R9wEJF}+SiTQweH#ql<@@{K@q*#gJnKGoC$y1;PeZ52Z(^eZ>jC(Z^zji$oGh-BI0 +gtf1&{z>;InegMYEiA_&dP;ZJ)Qx}ZFO61LW16vsqF*6^r1m0&?YpWfu4NQI?kS_i9O +^@+<%+lQkq5X4R<641(yZ~)(DLsVJApTc2??skBXM*P#i578clr+{PN&S$_J{|)lRO-P&$Ag^CCly8jryZ2EXVvG7%O`B_E@j23G`pCdSbmq@}uRVsOon@r +l7oig}b~4NzH}<*=LqSOwyM2+y0G*1ALU3P(jJC^YHk8V{s^V>ig$wfBt|t(mKEeSMIjRLt8=7@01Z^G96(44i*nX;q#Ha|ZjeQ3CUJ +Mp9$Gioe$woUAAkI@>*M2s<)uNkA3UlViY!ElA#ix7s_-?LaT;N4}Lfh>N7khtfGxD;8|^qpI8ZkqFwb4UHb#k43Z$&;uUpNsLCLj +%Q>d4@Cbxuzyr;z*%7c5!PD&p${8aLcpG~06!LkfL3l$YkAPK7Zil+Nd|iLAt5`{JCOK8_YJYT>KhbV0+TkVNT7Yp?r!g2yDOt +^wmRH;qU8-k0#(5awpQvfzbQA8wAWth4jJdG9>W_b;Nk-M39-!^-H8j{3r=q~572u0dtgz)2q&*pyO2Q&3jLauZ1Ikd1MOG +Ad7+g0?`3Oi@MkshzMj*mCW{yl}>rQfS5Gw>nCdDkvENkLK5(?XvNd^n^K9SO90G&0!O^9|4u23i!KC +WhEx@;vfo$CohTMkSX@u=hV*__Zz-DB4!JD`b=OT52t04Dl*H>c>y#J^z1_%lcdw&}Qo_@h@u^hTWlo +~F(@NJ)q)S&l3eu@nIU+8Q+sn&-honm;`p_`J;y-9;VUp}51>1XlDcF_uQ?5?P8L0D=DK6Lx2!Fb~tb +!m#eixb0zJ%@`r6PJXEc>XsSsa+iLz-nG!Z;NCSDZ|BOFM39Icw6I?Jy5FSdygzeUJ=XP_T@lF?vXh(3pdR8h1rVz0u +xdp%Nvq=EZF!7g{Gepk`fe!VGbts3atiGUl`v%uxL}BIg0AEx8RJebGXiabySZuB@kB|IBSKJ|p5A3kLZpl# +>;LH$GioSoo!=+^ZNS8ccc10B+a1_1)YRj)w_H`RoQC*jT@jJv)(UUQa)QJVOmF*r(PTt +iHGV+%lBRXh*4eUk+Nj+XXmY8kh!DBo9qoKwbq?|j!^!q;eq|@u28BT!TPi1sIY-U*jBJZkis|o{_CT +TRm@dE|}#f*$yOxp*fl`;5>ZeTtR(!8yYg_&4l?QI=c(JT6Ct~mjM~S%WI$c5<83gjgl5_E*TuXY?`Kft7gVDLkqM;?dglFyh&g2n;19nx`X^k +Srb_L&z;jumv%9<{z!NaOyLyNxnJzZu<7(#h08QX_lsPES2*B +Pts&sCiV{PfDyPnnq2)!YS$hO^L +4tDVsn5(X~ObY6^WdKIN0^_0rlPFvs9UNZifKY9d52hGV?+>g*26dc>0oAP!kk9aoX`l +EB^zzD`?B_y+$pr&U8s+;3IA~fG`(J+fr?1*?>LC?n{A7Z5#@BH6Z9w}DB*3r-MPqQ+cqoFkY;{C1D3 +d78Qa7KhKVve+?K0Av$QZ&j@=Oi4;zWc}{FDNyZi^;slUQ=YjJuFwij-GV6-_xyIB_h*DN6CLOja2Wc^hePEYoLJ6B6^oDng!)m9@3diq#K!Y +Jwcp_1{Xw?cHBlX_nxI7(^QtS5(vE#RNq0TSxDQVQ+!Jm2vH2vu(4yBR`!^zSulT3MK+iU1Nib#)HOW +A(@ME+ui>#Oz>(!1CsyY`JfAH0pB#Sv6e&K3{*-}5FgyX(t5oCFE!8nbjnj&bMgfh)`3fA;cU+A?gvA +XTDoJ4A)-)tw41#lmkM~iQawSleAgf7hTc82fD?CC&!j;-n2WYhE)#AtpR`#p(h6=aT{*g&%Oi8qOr3 +QT{MZheVI}%81c?PDPqK4^PLE0jyKV>&aBeTqb1;N+_0$JNqdVRD$U{+QZh%qHfz=IdMsF#4YZk*LaO +>m;-XT@fS>9i=PRb4CtM-O#oh<|dms2Ms@qnz0}Ks&8*U3LN#1IG1mXa|b(G>@k&KY^pWdhyv6&!x7h +1Q^ZzFGF#X%G$t$mL`j0OCQiqS;VMy>)Cg8Q6kq|rb^GDKr97#JS`$e;{At#5)&OVto73UM8v;so0uX8+>S9VF^8In%d)u6l7&1u +J@oeLXU!Uj274H^%OQVmy@&oCl+mrbF&S2yRdtZXIP(({a9 +jSjO0hfXt*n0V4X;j-(&d|p!Bce&--7Ce~lK)|0R-o7CLb}9_mq%H7B2XkKc2gev>-QeJAmc4)G{{@N +_KxD8;VHxjB%iJ@o|&A*G5pOAm(!1|7N9Rb=>uR+VgQAaG@Gfu>p$*ciF+ +@o<`(vi@q{S&7Gdq^x-m)i$*PDT}DlVKQ!ZnAkew6zENLlhA5xrIB7G6)+T+_tGF2208=YLU0VVGP+B +&s7K%@uClv-%Qmo0iHqC-@Jt&%W_&ac`kFWv@zRhMfGER#MZa}qyDHIRirVu8B^AV_85ZRT~O>oM+90 +lHtv6Fn)%hg0g5(xVF>^5USFvNQ?Y`zD9AJOb^^77KJgS0`psKm+WESD$0)3652G2BFf_1N&r0Rf^%!N>KQN&G#*NIG!eYDMMQGhmjRij}S_ZCuI%r=0b7H +eT}>T@j+Zn73il!IO26L=edSuKZSa0@;D9dky4w^^f&LuVzL+pS7P2DW}PRu!yo@l3Z9bO66INof)~;bC5!hS26+~dngZMnrVpw~-;T@Qk`=r7q(>bfuoCd3;Tj-lb0tZ*T +1ZZ#tHgV4g}x|*pj^TjSJv}gTntiC52dw}jfY&4Dm_UgdN)X6FGWq$j{==l_uwR}SXx>l0c_l=X31OB +%{8eeI(QagZg`GKE2FbbT&y(IL>;RsxV7UBE=-)(=;Ln`8LIv+10l*=TX2$5Sw>AhEE?xM&A`z}POwZ +GoRrjEw^4Pg>i)5;wSdX#-ST$abW^1ZHs~GMg(lA+RO^IU7G~tDK#2&;rX`gf$Y9p9wRj>xU-!Sb-tE +YNOuouG$iw$fK(t6^rc-UGKLqa&K8$pn-jPGrRu~zPe +IS{SlK_VL1ihpRC>7bq>+r<4G;x1^yUR%+yMK98WR@@hg-8^x$@C-_$qm55#vK@>?KGfb9j!O(T_s{; +T>zdV>GWgx>(XR3tlv(3XptiWdVSMgb{e@t?VKg18o%D<%&Ee{9w-q(3;L}(@Z-1M=qf7Uqp3Y38uR$B7mPs&g|cRFeht@8P<$Ju)eZpxQwt$yxK6oH8Zr +58{G+#q$#p*HGy7E@uID|_D&vM^wrx*F<_-U;dU-WaC$aaP_JEtZrw3_$>x5$=9u>(eBzuI<;zmT>r& +SA$WHbnst$#KAvhcFDtwbHiu=Ueij7FkFF*{^(%=;=9P!3N4t*rGFzIRmaG@M_uG_@2)}%two0{LATC +WOZRkem%;jl{_Q*6A7R1#?qTI^XQG3k~?M4Og7mf-Fa3*;F-kF(R<&L;Jdr +x{rmUoiYMIZ34#0Ii*cMgD;AHzJxiBK_4rR;eE#`YPalh*{A#qbE51>crQiz~0|z6SSRmiMY$!-odq0 +QaAII>|pYWg0@t-efwJul772Y=cn!SE*3=hG8(E*#PNo&@JX+A5;CFV2mI0#r?+S87xl?;)?p3H20%a +tcgDxD6boUHz~F&#^w;%2c}O}7KsgUvL$Mh2?hu;i=n)8t{yH%!RSr=Wi6<3_ZME5exiCP&a^G4nak+ +mM=>lq~QLni5Y8;sT;tcI@8@xfY9BK@P1>n!#C;8{+UoI#bGpdooTO}xYx7zg4b|fzJ7D^{aCy@`SD^b{& +w`bTS!;=kZp!PlE)m1^DJ*%#1Gy62yD125r^a`vk3>c_U+;0yB0d&3SnL}Q#iJJP7Nr_euFImZlR;Zl +YdPIKho><3zmw&~;>{Q+bTa7PReSm@&zVYA~V +T+i35KY!RDJgLEubBk||S5DVvV$Ioxpw9=$U+5O+ZZHaPsB ++}_?jG@wXQtz#8(^^fxq&eEteC{unG?6>#893)FK?pfd8`-y4w_9)+!_EZQl+Xx=ZcSq5`Uci>_GBh3 + +8?R|Szu2ft-!zi_84x~0IdxyGgcU0vyg-T&Ms+$yW-_ZQf8o8qo)?&e}H7=vg$dv0SuAdW1oPy^%I?S +9APdBhYZq0UBVAzi}V@tC4jor@`ns&b@&X$+S9&v+Sv@Di!(@#YaO@&0$A)q&W^O+vm@B|yZFu +j7e^Z@XZ89mSgkJYZJI3ct2!Z8%5b9g{knNTuI9qS#_tw83UoSxjt5qkM|sJl*()*WcKlr&Lmo7IO4u +Z1SttpR#QR_;U|@X_-rm) +NM4quavq0RMIkSr6aM0V3z0Up6FiE!Vrhg)l0f4#cJd^2q?_)qgQuT_D3=atF|L}$lD7r;$nk&**X*NAT+22QLFaT(%Zkaw#|zby@N(?BecYW|a=hGspDi +f|Z0Pr+Tf;KpW}fZa%(w+ej)}!hm0K6>8&xf-PaoWSn^xzp-Yuuttt9S(LS3iVm^T>c*+y4cFRUZx51 +0{3tb!}O;U!yO3J7KBx&-M$7e{4kO|Xloyd#<5i%^60ySb`9OZDpu8G^gZaePHO`+lrqg!Vu$a?v@gO +gBRefJskc`FAM>;nLf1M7ck7i2p_tMfRi +kuO3*Z;WR8ykBocT$R-F_brR>kgZ0imb>sfmhjz;V+ac&Kr0Y78;=PwHFrc`{?A$(vxPA=EZ_|WPj}@wed*C)IIPp?K|<1&f5+^y6O7!4ywiu51LpHt$vpZB2x +2Ub7Ey}kZlh82(%oTWV`%GSNV;5YvQr%qjG&`ULaDL+K_sWP~gh!nR{1A;%1ig(vDa0 +Q&DtHc$pm+RkBh}JD$@$HF9i^R{noSR^j-(57O3#n*xEhbCiB;JZ@o>d3-lEb+~t*EHai7f=h#?i{Wl +|L^2Wc>WP%@=6ud=as4w)_*{791cuCCrRUN{*l+Tm3lvkI3N)@h$-YPpr^%{6?g>J`5jpCp$IvFuM64 +aNY8DP3fJy$C^srRV@mR(UJc8&fxd{yp6)gOrc?Y!UjyZxfhqV7N`%K- +eiqJ#z?At1a+vF7bRViq%g9J(z4>_1}i%GjzN8YS5zhZ`s#+VMWp-ESXM}VL}}pZ^OIK>r!P)V-neg? +y^Qw%F}=cnpX`4%z1sVOeD{+1J|$yN>-EqJ0MMx +9eGvn$Bq<%YXDqo`=U5-t#`n0W&!T_bxM+G>e?E*iaL^S++}%ekNk<-B8%1Tcr>fQUbfS3+r!l8u&X{>P +j`V@$0{`seIt2 +q`S*1q%&=x;zkhG-nr&b_u`@|L}h(K!xQgHP;^frKOWJYbvFIS20vb64a~;eApW&|E>NO-UqpqYhI~R +pl5$-`j?>^@pL%tVSbyC4HjDlKZvVsoe;WR;$(=d8@88Yz@crX?z74B>4<2l$|5mi`rMrjbuJT4i1GH +>wls9cwnrd4${8+6`wZQ+Qwg0(SE&kanH;vy-_7B$a+-mz@!Ru|=^xvEZTP#q5AJon$?h>Wv|0QdbAp +L%e^#2paISsd7Jj`7;TwMQxy$jZ9t#eL6i9EKfl3a8lZB;DjO5S;s>BN_Pm8t%6eD>;ld~fROXBQVIZ +(a%Kt-pT{{`c!YFH3;??rV%WuRa?cJ${To@>#8~!@bcT%u|g&oV|J83k)x&{^{Yf5&UoL0Y5+MAO5G% +-{(X>6;;;f0fdyq4ll3{o$Qrz9(G2iEngZPycVS)E4hWLhVZ0~Kh_TnvtmAa%!ZW+^i!M&ZfE +VfmD+syWpa8b9DVH@k=x-s6S} +o|?j49Q;z3(JaBYme5@fgi3dIlzMZ@{0&7TmyPeb0g&bAa(`TFFZG5k1OaLs)1q}TE3(iPd~+X2tx(^ +|5ksMUDk=bC11eSR-Ah@hMP!;BnbX8h9e-odf6Hq3o#$_JN*5Yw#7E@-*z0j+{G~AxZ~X6afrqq%kw> +gz+i!xFeCrrU;ghRw^W7!ry;{U$g4=n_TRQm2zY;ac43pbSF_Uur3mYd8Z$caYHe5!lFtZH%M%*^zM= +fGJc5dOgzJ0rAA6njm#0O)S^&{dRQwG|uA8b8c)Zbd=ZT{hl{y;68=%h6QdgnU{vXiVJ{M(D>>12gZ +7su|7{}x);`Yt^;wF5$X#nyYtG0qBmH#r~#a?qkzw9rvI-u*Db&?uuL0Cc@VD9)v~Mtd6g;zfE_h~qP +=H=?eLeG7L_1f4l^Uqp9_i}jA2T+zn1wB(5G&hlP!w^dJNrwWxFpV(s}bZf6eY_`&Mx9f1lFt-m^Cx_ +RMD`otCe_T1dMr42TubysaH_6dI2TqFo_DOVc;0S|Wg5?G!_^0ia6F*A}(SuRHCW~7G6;myew-pECq% +DX1dFWSlt(zs$bi-KMG+_|FnkEBb-Diz+uWoh$wD@xmS}tnJ!`IO#Kj}A0N&S(%CteGQv*Y;qzc3vCDk)ez@Ysal6%}7zJF2Fnh}N6fw{@DO^{TyMT)sg@6%Mc+#R>s3qa6wHDxVEHyzb +L_mf-&@6aWAK2mm&gW=T2Rqf+V8x!l5<`B_-tpBuM`&rkwXa)2rvLBiMx0I`}Jeq50G-4y +}kMlwHu4TOwUYDPfvGGch6yVd~}@6n?+e)on)JSdHhFwb8vWYm_2LO+qS&A?z7RearVV$pMP--|M@z5 +e=V{%+y1(#vvo@$Br?yR&J3-)BX=$ez7^_5SUPKY#!J_1ky&63QJ +sdi3bc*_-UkfBHHrSL;fwMBOtG_;PTtY@1a!n=Lo}rWLapmTB5P+tej=Sj?)j7j02>2M6-QWzmVR|Db ++hnR#b^)xEgytMXF4xh}eE>u1$mT>%o*&qmi=H(hzZF8XWrqTA|ke=XPim+b6R_3?SxVOwYSbFsz&O| +n*W&8D4;PL`ZED*&p>zw29Q{Kaee@m91Q)KXusL_h21*MOf%_I=%L*7#N|{=%is+O}zB#g*s_n1@2ud +?|lVvX^J?pFV&3{^{(S7vG(|diwHglKt>+XJ_Bdf)5hZrY|c6X0$HaPRv^I%cg8;nkL!2fF3Po>$X{o +w%<-NE>jmPF@p)8$uUe0vhZm|v6zW_gxyWDyB22B{CxKAFK^+yXz9-%@MAkZI5?QiimC!KIL*#;#BW< +(ZVt{ +c{dHweNJB?u|pRczI0C+4%J^i_Z1`nRSe);n0tLM>@Krk!7t15c%{KdQXRPG%V8s#ruy?g)kyYJ54=F +z#%-<~~t{q}iIfBoO@&)&U1d!GAq1E1c#{{HQ=vv*L=?=;kW_is<%LbWkB{^Hd)uV-gJzQ;aJsf#6G5 +PEhnuZphAX3vm9M$P5VV&0EWs4ZOA`0vxKqZQ9ol&y;O8nBlk#yVmb24IG3ugm%-TUayDIp7vz35=qw +%YHT+b)s6z=Ik=~ynqsAQI(y5MzRu#p`ME=vNT{~WtY`Wy8`;yW=$=!Wz%K?`j`1rKaB#%cBeQ3K*-< +z(|wI&h`hcMHLx&P%JA(QU}fS!4`*J9q8%E`Gc1tx*Aj;lfY|ql#Ii?Zm3^0$JlqV1*^3>Wo^pfZu;1 +}716?l`3+niUW-QVDr;9~aI8%zf*26KqJpsN_tf=G(?LB@SXf8gsa!F+w`E>)#wlCBp?OY}^#$iILDXW?YDQ*bvXSwlM=^@BkoF;?QLm~S&e +2kt1{6N`-c&AM+Ic&7&`#_oUvGN7p=GN7@;^lv&CLxC8BbuCfW0&bhO6x}p?v81W*)?!{ROR(Nw;O1;zb-q2j=Qp|U?*s9h;<+vYhjFSEwK=9Sw8MO!+7ol0E2%)&;oXavJFkT6qu +3}uLgm0>(aR7L29H?1{Hposexk$p#+XQQ36l{1*~5OUO{H|r)p;y$39Ca!$s=ivLenC=?x1?@Xbg~qg +*ak+`0(axFGPm1JCESa`GZATTr?vlu345R2zFG#rsdC7@Ge{309-9qmxLpV{hx=uRAx8j#zF9!f^{r* +XO;#PQg&)JA#=%{oTUTwiMN3=1}=i=l&lSx1|7BO;2D^O#%Ff-XuAN4dyWWL1eW6gaW64-py}tjogX+ +RzRl(Ol||TqGj`}s8BQoPJSuo1@Hk_aTY8p{9RdZ?r|0MV%23MF}<4dhv(w5Eb1rUUvBDt12fyguf7{ +2f=m~RYIzDGM0Z!hjM$R)INk_os9gy>V +1}f_A~fho`zw4OqEHcON}be@akOD`@owRx0jT{&Dbv%Ro3dssPr_zG#Otwc6e? +E`bHyL`w(|j?#7YTt`dbWLj1TV3B}|`f9{Iniky*n3*V6qwyGbeg3f)QBHQ8>~RPBACq^y5)%9r#r&Z{#PNao-VtrjND!74%#@$1KN50T>;a~DN?S)zMO4 +AMLUAIptVTKRB&@MMpy}WtF!?yKGJk92HgZe#kju!iB^}n)cFP3s<^^v&v|f<~cycKWVBM@Y6>0)nSt +H`sFj!#iuZtcxJpcluj_=OUFC|uzjBZI7TD^1%vuqfjU=ISxAt4l?58Wz^P69m%whJntw$iBZ5}9%UU +Uo_wAeCp5MJ-MVaJ)NE2r&@L*4M_BNP=;26~KFUae6CmMsM3BIQ;S+WS#9lHvl&uk?VYZ +%~WCE9XsqlYj74Fa?(l!Npm5o_t){dO&6|2r~|$HpgdFgQeoCx$Z3-mMF?!za4}4~YLL(k~h`NaMu75 +|-15gH4Qe5adYEVF1A#>jsMMTA&FWk)+VM0!_7C4*Qlxdjqh*(+7zR`(c+?C1k@J0OhxI+HRP1v@8O6h6 +_W$dZaD(-d4#F^_9EMr +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 +3ay=qs19R`xq@!gxN;> +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 +#U2Qo3r5off(#z$S*zv|E<1h-owR +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 +QkInhG-0{JVsr%>2cFtybxlj2U9EeP +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 +`@~SSI>Tg%HdVhtn1SU57ygt9 +x*2(NTS->m-hRk3C)qz7YA`cmHX7WkEHGwtVmeqBTRLG2g15Gyzn3kX}SDImc5}(BHpd-r+z&ay8!YQ +q?ux_j3#1g4d`)3Z!jNlO1Z;MWwgWc6Yllig^rr9jnAen1|I@#9L8Q!!(7)pIurfIp@02P9b3fMGjHn7xNs&iFtmT7plW@Uwoy4;QwW~?^LCSNZzcd}{&N>rD?gv)6%g<;l!zrmt}4TD4Z;nj1P?cfI(@jR~p@ws- +aYZuuqqcNhkev4JFvn{T76fUJ@ASdCb%0puWvOA=x^z5`lsC6S!;v6bmbV^M@F1Xfj0jyN(?7Md3m|G +F(KvP2-N*0K?`pAT+ip7F7XF$qA8?f%H2p18oC6e#Sd;`P`UPhyF;DQ$LS4o{TO%=&7VZN$ty-a4=gx +|PRhmVwv?UE79kiVI1S!caaXkwx7Tv3-2T=LM3cwhAO%O-=5Lihu!Yc=!;alw4?iTmPzx-U)?HKdJDR +#7=cX`w^-h&FLa#Ns8Fu7hLP*1(C8W+V;2&MeCBkiNRyRInVt89|uApP@rh7&l23FMh$TKp&^SoT$(A +7vysOuF6b*33>gdpgmOE4!mr!pn}=EjQ-wUEu{iT+sjP~l9pR#ozBCt%<7TB(3%8B2Rx7XH^|zzSNZH +JAZeuzw&f?$U12^1^=3L~&?k|j_$0EPRFivb-;7D-;z4Ut7^qm^`m+q}7ATDmC;l<6 +4|Q%oZBorZ%F%2(VLY!MJ!xQ`Qp4FoPxi>3%VG@cZ*3?U@#Xg5F=foQI`Hz-9X(;WV(W>+H_cXz-9&S +*+#9#e9V1C}Moyf7$x!n=6zF)jkGlUf911CvQ!fJ8fy9mMqIER^{*H@-qJe4axckeG8oS(0jape=P4; +fA4|27eRwr;&PDme+*ltFlJrZH97(FlLxrnCNZa#w{{dT~P$06;%9ONF)3NO(B*5{jJy8ET89D-3JW; +%r?Nhp#7K6ULHeN$`wfMfWHdhG4b8Y%W#=3lG!%AyzB#(GuEgciYyKr0+t>T+uF5=F)z0-pU2(_#?^= +?q_V(T{_9u!2gL=Xiv~+oGYyCaa!;*gCXp^x&^7>SR0R +Lr!0K&k92<~rED+lrl{#mZ?ismq;b>&E`h0FGRnZ99=nMoQm{U??m;xd*!;bS_uQUo8fN=R?k5VNiHH +k_F>Q^lm5Cx7UCM7EU8IjYRimNS>VeAQr@-#2NRuvjLgI0ZVWE1+0xB_lZQrYAGh5tszcEq7`8QPFN+ +fOMR#WoOtOgpZU8(6OyA$00TtSYNvUqc7ZTR{dY14%5(#_VI9t=7#p8ugn>)T0eA=0n(NK!brrUxSXF +jXFiSOEIW$u_v +vVw!;@PfB&qavTN!iF*iUhj3J&pc$>Xs+hp7g5);Y+Gu2;$;jJ~20e+Xm|1Vq+7R4&GCy2hs7+ +h1w(E_VId+=W$JE|xHw@8)||Kfa&*2-X!-@qD3B{JB+OOQ2?2!mh)YqegJh3 +^J5HDsfj58?JUO;D{sF2n{TFa3_$4eM!BvS%%c)Bu%18oZg3XlGRcN@o(bMAIUr;Eip1a+`zZKh21$p +-7ZS4<)k(PQA(VQ|S!a_`2j~Oi_NEWao%VY~!RN}<0{gVk2jwzY+Xt=^ +*xTHC8Y{patvnA@vsP^ZD33d=1l{m**7X~0#wWP8Z5g&b6A2l$uVX{KjO8sDXUN%zC$|@t>n^6XpVn4 +?G9dHFjX;k48t|z>tl{iRVnO&77;Ox4}<{5H%H2$>G?YxV4%0lK}(8e@8SUNlEqqI0@t+ypsFQX>L?` +>&AwK@ylR0bE$>j@j4&osyw_3uGPk~>sy&(0G +3)CwC7wXnJhzqI|CbT8n#5KZl*}DXZLpx-#9RxRZ9Q=~6M;7gA)hA6-*xWZyZa{OW17&gNL7?zRui(v +C_pilYWQ3>{aY0xMGyvjDR=$-@BFj~puVNKu +e>qhl$De4Kbooph{l0PZoA?n<_1mmaybM8D6wD#xBwuJ%+*;mlDKOoVAjvDqbX=qpI&<27xBNqdyDfO&M)>;@X0(8EC +qP)mPw#*7Mo5TLIL>cH0&k)q7<-g9hb#REoIUEOvGPQ>-O*vFkcSuWc2(xhb*H%Csvn9^}>t7ba9CS; +X-1`yBW+x+`<=t_ra)l8Z)IC3(j1IbV!B*-;UlBGz&U*3zC#xDA@>vCP_Z+n6UOo$JioeIp@)k`YF$j +27Biu1tEY4ipyS?%5)u$SlL53p{7QrDMKBZ0AXRHb=q~lJuy;?zk4L2|AAdy`LdcLyzmMj{@v;Jl(Ff*~J9`}7(S2tS-3Ke`~#$OFeUVpKjqg+eZbjyz&l_u4m&`GTNMg2yt@LJ`S@vh7l5^=sHd@y&h>O#;Pf}7_tL-mu@jyUTM17C +qXWa`Whdw=Dy(9-mLf&EnkMVR^fZ2UZor6@W +nqMP%R(~HrFSjY_$6rL4wSX>PB<5%k!G2H1$D2yY@b{iA%5fXQsROp(C!o0Wv!pxhTdc_Jta1Z5nd+U +)-Y42&;Z9RUHk(W?tvB9hQboV+-&5c%Ldm8KRhfZIia1S-GX&Cg6%66U6_-Mt}5m$sc?X!i^7~J%4U{ +|OV4;fB`fPWyE=v^iA874`Vv<6@h2VrzgKMmu)Ta*(6JxqdTGd@S=@;!UfD|{5q+D$*Gbh}^oqE%GKp +jZ1*DysEwq*nOcnPTB{6iUz#h7lsos!<&sl34eCVvgtI)LiOa~b6veJ|X`78HeXF}!qXMVmKPiM%$FgA2!R7veD# +Ln6w~VDGg>Rl0$x{7D=wMnpN35x}_7bByYmeeRpSARtO_HtRcvUXbnz{(OlVy5ZEVHC&T^pLEQf!x~r +-e4hDEpLYjq>Ax@MUZ=UYF~L>1{jxN*OYXsI6_OE;@`>t%|+c*b{B%J(t2ZyIrNUi|a;*ArGiI0#64p +M-FF`zzf5@Kiao3daD&E{h>8&3;7^S(zQ5Pj1ZW3!-cce&O@$NhZpDYyN6<-{+GrQXM*59vf!OM{WnW +W?+n|h^*dY2y`&U=fF8wl)<}p-)J|d6M59rhq^Yf8)BK2!NLqHss@7NLxZR-QlGEX3I;b1%x+?bcj2+ +uOzM!1#k5;IQWp!0PV~$$FqGZ4~`ly>VsIi3D7(Zf=u<80UXgdfEWf??|;)kOUx8ORfu99_cR17^_qRUIvK`$@I=zuD3@%LjXpuJp!tv4llJ$U-lIQYJ`4BZ(NTFVQvd +%C71Bf9#OJbtH_rrYgO``b`Bf-xcQxx8cF1v=!)34&=qNo=ybh^pAzj;&irVN@f6=w3Yv#|q#W`A`&#M9Grl*3hF9S9Fp&Z9>~^wgXsNv{aq!WZAMb~?j9&a2CK3+SRG=cj|b(d|0*8@70Yr}-8O< +NG`JJ73q{ULfI8P7CH!rhDDabBTgab8c_UxzgXS|Jsi)YFyS-RTaxzRubEZ<4cc5PhJGUQd~*2wEq8(yDXD~G{%xK9RVR(2y5!L9hHJGE--)O6g5i;i(`o(Y+Ok6jlV +mfGdaVu%#5E7l9{N2gjVYf^!8)3mG}P2ANE?aGo`i|m|FsN(EhQzf2VEirTaGs>y*(IYcybJT<=S=$q +e$x~F}U%!s%yCY56GOQhnN~@4|04nlAFgw(W4n`E-u6b#fl&@3&=1P@pTJtCG_=RqRY}d!5Y|d-zY7) +MWUg=japQLvT6d3Pe(#Xcz@d& +}P;f(M4q=dp+2xf^))=}GX9(r +EPOWt|)`NJ-+Y&&II3VbFCvrqB977wdZk3B#=$}XTS0&W4sU>Z(d^b8iC-6P-*-E9Cy2YvRCeoKfCz% +DC~!wp+z_@A%8e{olCi1orcz^X7SO;*hl;3>cZ;U#Q}EeKt!Tw;~pY2 +T(qk=e69#7|;i>6Ek%H&-x#RQS?VZlN~^ZAInjh7GC)8;~w@|RckWGXr+IEc|gz>K}jt*Dz}~djw%Xm +uhjPxuac(``piJ@Ve1t4Em`6o-Ug|uzp1CZ+s2eCY6 +HqAZ;^Hb%BOBAAHtU|#_N*%iX$y*mpi2rT8G~vmXvova-+frVY)HO5ApH%!0e0eM}0HMa@~;&-*sh~^ +Vli8mxSuC<={l8&>mgIXOB(}PyP_883c7#dgBinv+YgBdCv8wiF6XGD07TeV$;i7rw2)$^Na$OK;+3% +vF;gkpvUwB`m8@~1E0O3LRBX2fSL~Qa4fZsq4uPwf%QYz7@AM(C8ljde|nNv+hY}^QDuwl9iP|Ym&@CXUF9>#;r$T+=TN)1WLkysEPKVUXoS%k$MLOY@}3pyf4sCethxc%}U-cNGSNX^e +tHAnS)MRL;oIHo_SaPP~<3z(~fD8Tn_NCfziwiF+)y`O3OeF1to5q0TZt +3M&G+e!Ih?1SQaQEMyo^`>QErO+k!;GM~`IgCU`cnm{jg^gy%mc$G<#0{>z{K$H(Ibr++>B@;~CEdy} +_s-ydJ-tY`$`Kb&-SdP#8q@1tAFjMgfp7;P!6%c)Fg37QgUH6J~O74n7oB-3(32JF0Y$-;j@19dKFGf%s_l-FWqlG( +SeUJlA&-*R%|ISc4wrdr}>fZYznbw%gV|gReit~H+ekAWIM1d1};0nO3L}nXp4biQ5d=-M8u9*$bS@G +Al>FKC+3$==!Z^yX$HY484az4W35JWHn6 +_paVg8@7}$WcWAl*#W_+t|KVuV8`VVO6nh$A+*US}|H{b0DaZObBJipt$1z68RP@0KF6sou94Rjg(8{ +9mU=6!a6@2ue%5a*~pgDhdf&D_L*_my|_lrxf$yxPU_UEvP@QJn$@_uK*scr?Q+Vq@h0wD+9I?;k8k5 +!wZZu8G^+SXc*!{aPGfAIZZF#?LH8S)=IP1m4^Q6oJH7G=p|5PV+e>ktJ%@@Zfw7y7j&K~-5@lb%bmR +|4{8xq+S~^_A`pj*@V=Ro^eh2GG;;vl1GYJs3-)DGK=zxNm`CN?j_fRf1)=L%ITP~2xM +AmMQ5c-N1a|7GsHcE7gJ2iFc0{(#%D867$7zv^)MIdbnVf@JNssb{IT9$|GU`Ht&(aE&(v(%KTnWm^y +bZ))OgUZ4R4vZlQ`Hl3 +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 +?&VZPnB7e)W4^1*oB+GzEJ +4RIKWJToBY4di-O~QQDRn87V+!KJ9Ii2s)haH+gxrAq1>|wdws5qRI8N8%g)mJqi@Q^4^r%u=09>kFN +Rt+`R2S4@6uPprtIqSCE5Udp*bp`I1Eb@X_YtpD1^-|rXYvytJ?(3qE!phKOzm7&|q6ql_)mC +Rycad5q-6zGRoW(d-@G0&mxqcRkf4e*)DW%4TDf^`vbut6Pa1jCI&){HU9kz~k@0xzG?(vlW7_HuhLS +NP57$m-c1qD&iBmD90P&XO))w$zoAu3pzt0ow(eY@e7;&O%@c_2BHA=)jl)YQ2TtfnYWe^TrdfsYsg%kXtNB{*Cw>U`e3DL&tmq@lE +ML+r=HC63|X%Z*YG&Gdk0{h&VKY~BJ#)xP*h-wO`$D(d?W*PLS4?*1C6veb>fMc9zo=-2Be>OuN3Q9#C?wnbVZ%TZSYe+!|Lf?**c+8ajchIGzxg+ZrHeocal1 ++=8-SlsqhcQ>y~ypjZHaY%pp=55G+BL*I|+}(p&mQ$sq( +3{g1ao*`rqHrOK}T&C@TK0Wy+^FEX|cy5(}c9xQT$QEqr{y$28xSH8f?pVmTCVYw_}=QYHP)gOEbv8v +uZ5n`8;i*E*Yuc!BW+)cChFwDoc06QHZNV_c2fq6T{F!=xHTqygA3*IOOZk^{Oa&5nG0IbAt_r~Poe4}k*w6{IobG6YX@2?aW$@|A=fMO1^ +y$O+zzHsg3HB(7Ud%Cl4n1Z+f2t-vfrgRl+jSoE{itzSEgtYSBoFRnku>kl@YfS_W5~0FR&&Ysbmm6Z +GvGQng>NIwzIcY|4@X}j09dQX=Rb| +G`sh#CE3t`bgE6Or@+SuURx(zZ#zQ)(WnKQFtMuvNGHyzrbSDLT%vtfxW72q~k;BRRE~V+$3tKEypD4 +$lwMur4-fQD*y~fZ>k~Fm~O07AsXAYjEsT16xGoH~J#cVI3yc#UfwMl6Dvl`xBl`5PAH*C^$Y!fM65% +tEUohSmNJtyVtV0E!|TD2*rF|{t7QaRz#$aHNaz|@wwdNSP-Aw0)_I>zF*+__wXV%n=lo$_>#w{i-`Y +7T7DY29BMsJjX&9uFj16+;lMy;*r>__%J3o@9#Y9LxXV*uDGPo)SGQRoOIsb4|nK9obL}WUI0j=y7+% +w^vljMLB(zb0^ZZ)=?uD!f!`99?L#>Mo_NCM~n5rh^MUJ3V<_kDiiZ^baBr +tr6LTvVu_wSrwvQqQ&(v+##Y(SeHhC}kJZd6S)PO9tovmhWJ8b=HQJVH3(=t%E(3VfzHjeUb(@UL#J{ +CSKUIzu6^|eQ;_n#1WslXeBRv||j<#&5y?Yd=N|)D1A?nR~P029-!L9CjD&mL^E~5OAG{-AEG63r;_q +b6;C!`9#s{&+uVQ=J^S?7S+@HlK+nn}yb&JPc$U<74ztEM%O<}uFAVgD&dbJiiA78O=iC&>HZUc! +*50~TL#>}#oM}Rrc=VnaVzbYgb62aP#$D^y@WvQyf)#k5RhLTmD;r^1YP^0c-d-v(Oan%aRoNP&AyiP +kz#X%tgEGt*RRRE#S+!m9g!qE~9^YG%_~j*Axb#JXdNke4F{@r5exWCG?@jC>vxM-Mv*CW5I2Bc}XLOYO +)#YE*(&?nHID&#|d#^mBit%<`<{5!-}Yx4usGLpnLd1miSc1|C|1|F`G9?Qj@T5621CWMg*f@Xv3t^9*{iUrgXBzG{T5U5-upoi3MbN$A~n&{;DLPxy|*?Gu}XrTmoJkVGni|n~W +oepZi?!Kk;pn5IazR*UoJDPcIe2z8JvNEY#e>o)cXAmn1e9JR81=F_FYl@-}l&X6R@BnY9y%L*EK-HM +ET-&8?x?e=xYAZrQ|7KS^l2nnJ?6kS~RfAS}g_W%G*r?MXdjs|mAVk059brwRJ2rCU*1eMl9a+e*YXq +{aU6qU~_NEW?paG3zV8M;npth+zwi9J2khMqi?AR&%9Lt}wsE1>rq}Ix3YO9VZ=5fMTJWDQZ<9c&8-w +(-hj;4x40ZF?PoTZ|J(Rk?<=2U+=GM(6%w#ww>Xr_a!d+W9u>`J8x1%6KWVW49UKACdY%Hj<`zxm4i)Cx$*w{^~3Y*d`6B{#$l&dl5A+}lXXlYbJM!fOphB6_ +ybB?L(y(n~XSUe<6u>?l4#mAEVg#SCec4k-09qoK7`GJnU)tqFTL9qy->t9}mo1%u6YqSN2&{HKFm>XFgZW +DHo3#O`QNO%d9II{I_H9SR`-%(^+BMs%q&C<^Plb-j=)a3b{C^^4xb-tEXh&*7v0it8xYKig1r}s}Ox +Y#5zwxrPhpe#I8$tLO2pOY~X?Amp0la4K +jhIl2dzc&Bz3PSKDRp0=&&q?3lRT8S(mhPOWLANWmA194D-bvhTCM`OltmAjq``(pln=&osCB>|o*vzD6qP7#2DV;*BIU*GAD&Y?l{AU +l#u?o|>0sDwdIn^@r-B}yDM?C8YSzT+aKc3(S_8Q)tvreaf#eY!5o504JxmnckVY&3o(=Cr>SBArNKH +_N@NHXCVAt)BPV|uXdB)KAGj1?QaWk@vp_wAvJNyj8WZCZ7idwC0Hs$kv8$Ef#5VPjEuloW@NZ8?D{( +kY}()F@>|&2HQTrn+@Zz;k-9KE?fGdKR31WP`-mGoJV4X+-ucQyt!`^#n*`_GocYeSFJL=* +1)1S=O;1#TvbHL$a%`|3vzAJqp~~!&Y3oI4w8SAR*gGIgpg{O7XWDquLwv{k(NOgqp+sD?-Ow>*64(Z +qluDFC-O=}2AVxc5U6$`%DAcJy&xDz+Ql1u-LD-bpdr{_YQ_;Q4VxS{CvjxclK4mWf3t8L2g_9neD!w +VuVLgAv;ee|G13}O90Fa=!)`HmQwQz}`Kx+pU^EJBB$TnaqMD`%C!SEe*Ripv6lolHL7{4FNuC$f+B!e_nKBlay +Mi($3HQt5u)ObIR+wD;dEvCg~mgfO +VaA|NaUv_0~WN&gWWNCABY-wUIZDDR{W@U49E^v9x8)r$IXX|NvjO` +vfw#!f?B(bIll^`u^rayk)djLrAkfX$HrpioA5x~Q{FF-qNv^!#vh?8tKW@RxQ{Tts5b_P4_KrGjJGM +g97J@DAxw=eca@ZU>zwl3x(V;5pttiqhL_oB?=ut-Ga!>S9;*@vTp!;_0czql`0n8obi^yKpV=s!PRo +}OReOPDu!`t<4GAPuEtIbY^n@~i+HSTW};O=Q8ulueVAOO|9TWHG$TlS!#|865szCU;>9Ygi#@5Jpnz +;|g3oWH1%h-@|$-7Mv|}F-iGC`m}GdSc)9Rvqe}$bMrM7vl*aZz6xoca&DgFS`G%&Tr8N+^s9HUU7Ab +|?<2lM?DTLX7R#_OlcqA}z+|om5m_@7iR_N&MF6wsgTWvO!ZZy6w$HAd<1kC6To%sFV1UT+9A0ZI{TV +Ml&^tE>vT(tJz#9PjLw3!kB2C4L$854z)XQZU0Vlp;ho>I~!NKW=4{y&d4ui9|mzRg4E;Iyr33-tl+exNr8aGw+Y<3?BaB>4oeM{Bwaw0b1`$j*>#@#>sTba +}*s&y-W*KfTGMZg|C*0U*usX)3D$}w&E<~JO(HzYr$lSN|~-LNFZJyP@)1&MQ${7&;J*x-%Edw`MwXk +Cz3!JU=z+JxhPS^LCdU_Fa3Wqk%4x{5_L5=``_jFrzgQrhvyeZr^ql+1RumELEu4>O~uuC4}=tvJ{z& +QV)7f03U54M@BzJh+tTbwnWP004LkDtWh!!G0W`jr1z!*W@U;L!kwFA2TrSf!&b+4d7X +)X_E`b7k0s-Z~0Fkc|FGV3|;4FCV_ils8__T5#%+E)Y@WYA3zpnY7iF`pXXdZ|R2EZ1gRqT46*8~NA1 +$+RCs{;HD&X;`IoCr3jM6%D23(Y|@B6;C@isT*jKRYWYX%exwXGi*V#bD$Ev~~wTuGbh)tRYoG!vk$}ajr +LL%tEurndky&MH4zrDbtju)N1*gNHT&pq(v>5N;}@(i6jQSN7tkn9|8X)8;#g+B|3tPvsD6`5Q`xQIL +vO@T9i*ZkZ37wjZdz@#_LR6K!{QND`0AXUpsS>sgb*j<6f6q{1`cFDYzzp)th&BhsZlMs-$3(HfN$Rd +iBtbD0_>v%8XKEc)VtOV9-#f;lG2Lzh}Q55Z)kmBdugK7Q0MhnT?Sd?D_ +5-)cRp>x3#Klq0Hf0#~C+)ZSdqMVZFvj;M|VkwAUX8-SQ9*%GJ|89MN~tOQJs-<}-3KfJi~lMF~9yvE +&-PoH^FEXU8E$07oipmM?&`RsWG?YR_X9&!Bc&x=L61N(xzjb$(6A;%1J@TsaU&VXRjFmRKsTn?4F$u +d_HRJER!iwQ^sT>1*!nY2IwKd2xWQef8FPYZd<@4!OU3ZF42jIfw>a7mc1!nF+s6bUei$AE+*b-j{Hw +HUWGxB{G?Nk{ZMfty=!ih0h#Spf1HBK*Z{Lt;Th2`?e>9qt3>05Vj{W`Qt;&ycy~Q-Lh=$|L2%*ZPfD +2OkA^Xe|f0Fp~^HzcdLgROTQ6%VKI<8CaN{{s5VvSYhRLi+>9&!)hXsk#|r*#e^eFnum8JGz&zp_zW+ +Qq2y5rum%d5q=bsk274F+SKTS2K +F#n-Eu&)hG2EK*x5ieB#?Jl;-~A8W~a$poPHRskMm^=o26nBrlYT^4eh+m{%o%fJ#6XY3M9xY^n@z=t +9y%|!3uwD|p?reUwKVxg6&bQ#sdBST8k9~D2PY}R(0DO%=b*4Cf~MQy!!6h(bf?^5|mGjf{ +2&L*^`6Z_PZK<43W5srZ*$p7!G+>+6-T|;CX#vyORju`l5i8**(UPPfjM`%IN>0`kcOFYg9Fpq22rXj +Y~+s8<5he}AzbONd51H`ds`b)blohNs&S6^Sclg(~d|NVqJBS@s18RBgjebD|84f*{N>_f6wn!FdUtH-_9cud;yDm{F>JJhne`WT{W5YWdF}pppfBtJNWHama) +9v$fTx4ZQxWhKyMQ!Az#LJOZGriq}8g|wN-qvf@M2lQ^B&Y;IEP%%78Ze$3zA>pYi*?V~Puo?OujOQ8 +tsz#cMI;BAldaN`C36#Z$der|$nc)Df!SQ1S!npl}4u2-%NWazB#Ani`vF9EG4?E;=61kYaUM&y0d%U +k*d!?`2XbCoJ)-4D%jHW%z<;g}SnVLyo?;QTyeEh|3f*0cY2tFzdW=404&sMiP`L2~!r$A$5pgN05c8 +AD`+W>wrx%%$=}zJ5n7&*n7-m8p=7g$B@47uv?CzrMIfVISHd%GpPdh?)2jM&q)@GmHduo(K-Zk97gQ +)!eYhI6dMI7V(NnyAZF%T(a0n9QSCXS+KNJ$y%4#54vr!vte@`s%k@)r?yDw0oeDwk@Xiu)9A7-2ggL +(S5seCtjm{JmXvij_Fb!78EwC**ly=fWSuPE%`nVN@YT?NZc3RFGNDw9+b6G0}{no +9TRdzh^YO2-pC7A#hr*U|tC7DF5BCXLA~6L{|>$<*bYh>j2&gc*aXL^P}+klq=}QJ*zDQjeOc248A+O +E5XuQQZzQhZ|ae=(dV5!GZ+a*N%h=uF1(_<0Qy2zjTPb!*$<@q +a+FAmXyqkf!1xK`9w4g@6ajJT$hcmnk3P{?VOUVrH1gzu8zVdHmtTHic#@&WSC@{$i2y}inf|tI$prC +Dwchj)$k(;=Ef8DPUZ`$+ZR&p+_d2W`XruWa^E6xo@u>(&53!Um2Vi)8c%tP#8`-K;!L0&`-NKy)-vU8!?kSbev2RX~5re~=r|Bq7Zms;vw0R`b$cPd_uCPV!kryUvt}?;y%4a +)3J#&8B99B=q61tL-D(klxG5-A7jr2FF;@jgX_nd1&f9o5%AniPl|-70q_r*rCO!J1rEc9j?sW8so1L +P;THHwPH3sc_y|0=3a>({N&51a{JdH9VlkHfEYcq72*tZqi#acWxiJzoSRqj1UHP50p($7?k4^sQdJ% +MHnLH+ma+p#Vh1&{|-hV$-YrjeO#ZWwEx(*sgSY?o%mzH_1+25WE_XuuyNn_inb(?rnf?6t`KsN!rzT +zp(posGhHo9tCVnO^9m5VV>h(z17xc<$BX4_n+AGDIZr7?C_fWi6`eT`VBk$QNWx>VGbV +X+=4`wHQC2>{NLZb4Hew(9i^3{2M=hr=uu&d%8Y69#O#eyrhu3IDBHc_2hxatBT)&*62h~`g|XhS;Ek +W3eu?t$nI^{uFnu&Xg`acsgPytnB1dYWI)J3kz%OOh72qvP*SF?6kR0UQHGx8dVeTc@A~jgTr^Q+!Ze +tVFfCh88$#bFD#A1<$C;fPL5cR1!hy<>dxms#Ea>yfyZ~7`qTSFPm|?iHaRN6{TYkQ6XyzYaC&z1*qD +De*duSwh9ym%#F$%FBqrmvHnp6`FTrzy+Pp<0bz%&xP!knl6I?xP|cEMsf~c%4%H1h^%Juu4E)g&5v{ +MUn{HyUN}{GesDqCkehkNG%Z2@4v@D*zmtB4jvZyEV +?&|A@v8?n|;R5J3D=$eXZ4tua*l2G8+XvrTsE#Pe<8QZf)Bdr_8$S>FLuRh#d75Z5d+EnEI#}Bu^UjO +*p?Z;nla1-EWCnqPLs8m2~4J42&YaY224H6=IDtAmOvga!)&THCiI=W$`Vr$-joV+2Qu0D}(zWuHMI< +pzyw?YChrTtPUzfy;O+16A8xBYCkmSRtemDsmb6aUp{UBX*!v@r@Vhyp#EO{otpQx31wy!KeUDIY=d* +{m#SU6&=fBzGBaG?T4lI=i3EW~-ViMXnxc-BGYtE*}11D?MM%2s|i1{=OqM-*XMhF%M`g<9xxMft*qx +kt%vTvk)zl2(5tgUuFlNjQuxTlA7)xDoUOg*;Zz&n6O-&0EeYeFR@F%lc3{$foF4i!(VD$yZqWM2rY(#I2!gV(~p2HadsJwhyl>i{l0Q^l +Fe$eF=#`z3GI;%<3yKVY7c7P12ZFQQDiGLlMGbNW!T1%V92LmC05Ppl`dx1nScP1YR*`Jhe!TBx?>I?qV9AaCb)Zvtg9p~{Bt(Zxa)xC%|=bSqsZAyqAN_ +m<}l!5I@3EFdAmbqf}dSR+7d)Aj9 +M8jO2z{l4Le69hW)0!&=zJ$v|%zA(&1Q6YOQcH5ZCaPsCzUHi25OjhfSlnwNcHsH0#rW4-2!=g +vTZp_O$rlAI98t&!zk*8j*OwSbiB7HKFQYsK^tMSo@{!Z9C!&DyLT>8CAUZ83 +aTv@^LvNh<~9#Xc>&XIs{+0lD7383cyc>`Y=_=7I2cR+UFW8I{htoIM-u>j=&8?w9kVe{8P7L5pwf20oN|d&G^%5+Md*_3+u +6?mU)CE~{umgnLOA+lFB*e4#uWh{;Tb7D-^5@T<+UL&@0&FN!6^9x`4+zAhgqE0A4ZOvb&zRhj4!iu= +M^P{%c=UM(Bhtn+hinhuu*RbavM&)7@bps0)CUrGnTN>kft-JdptU?q(TyiBar!B+X?T@hy|Q%Y5dwQ +&u~w6t0~Dj@E3^_Il7vvGl2JWMSXQ`Xoxn?qwJ4yQLyyE4>kHz#-hkMLkh5x0mS$2aOIV@iu)zK+^8v +?)bRe3~j3FmNM|%V)5*T{Ru~S0lCSklOvfM#o|D}(V*VusPS!~=|eYGWx$}3TqDT7Xpc~U_`(PY<%C$ +fb_6 +A_lbAsChz8gxm43Iab6FTKMmv_J^%8P_RBkD|bwf1T{kUK!Tf59*@Qmj#o>)dV;BF8= +mQHwV1)tG+YX$IFSm^%YKRVk#eE}|U@45m89z(*Ov;!OMk@Vlm(#y>I;(qV@N&K*JgvtrK?Ft;eUYX^ +DrCAK2=YaHoFsMp)&{j{w!hupj;=iqL~Yq@tpW#Oh=%i1?FLmIX>|?^8<#vqA)Py&cmM^-|kb)ER4B`9B*xcSKFMu~&b(jNX;-bZ$6t +6uRoJTF9Yn_Gz^){+l%bLm@Q=9M#+ug*tTNq1VNp9g7?ufwv-%DoCsY`Ph@}Qt&NMRzgCFY084zKUc- +~hpC?sU2~q?$l?*F2HZPP^f*dV)6}(!)wx;L*9w;c)RcP)h>@6aWAK2mm&gW=RdEZ1J}v006O<0018V +003}la4%nWWo~3|axY|Qb98KJVlQoFbYWy+bYU)VdF?%aSKP>v|MMw25IgwvM>Z;Nf8$BJdX_@84)gD_mm!to}CmU +NETkLtcxUcf7>xRY82W)qHXP2E`bN2SWxh@NKQeHN9X~o&ga#>_)lb6L9I-PLNUL8K49Gy(Y&BunNMa +G`LIXXQ){PNxDo8uFF2<Lykrf4f6bc|z@_Z6tkhVGbb6Cs@tVDzysgI@8z;-fq +O6*lrL!5ETOH;pJdAh7+e5Z9-ogLu4he8#$^kT3A*v=-g?Jk4jS$DG$SV3^>Wt>c;Og>K +e0*NvN>sq+fK{*B5hQUlcoZYhi`_grr(n0e!=S@Yxu{8ewV%GX>|jDRJXi9k2M?vopSKV(&*EQ)RHX!QclL@BoPT<1(*!X4oLF*bB5UKW?LeA=vp+%$Z?X +joIi5NXDM8Sg4!2aDZuKFez0Sy&9*2U7`ona;+ck>3>+pO#le{&${zD=4@MiFd_KQQj41Ohx%(Iltgl +aG1m5Hl5|!YRVa)>1@f7Y`N%4P`B7(c>&X52X7C>)ZrNvNks3A{vgqwMUnPe}FW)4 +Sqvvm493Fk;JbZgRc{w>gp1e@p5uM{OlR`)zwya?lanqv|fL0_>!NAI5%8_B&Z=d}Rr(X-H0#G=Bxxc&SutU4iM-)KF00POY!= +ni`IDDV%B)jmY;82;(&z_9)9vz_GS;pEke6KED|f{!E*A&rk<7vaCwqqnoPL +4g26F +-Ffy)&qJ=)$Ta$=%nn*U$32*XNT7Z%VAIaZG#kA;euaO(xv0w-Z+IO5^0q2(^NbT3$3mFZnqIFDj=uq +JBZ65#I(oJ6Xb;uGi^h2NyMMDad7Z-12LBfeVg6DbtX1>+uDOUKl&ayC{2QM(s=Znw+1#vCSAYFpXgy +As$wxS^i*%+}&E||%BLzVFywRRsXz-y+Umr+_-Zohf`)9lV@&7#ce~RY_aDJOM+$@p@NuipJz9gcb@M +gIfd7Owqiw+PP`w42Bnps>{Z{gwf8n#jKxpXCJIP$@(SB6b%-oyj@*?74Crsc79I)~qzQ?KK_mcZfnX +14%RllP~`2cT5D`a%^&5$WeY)KB;K;XmGP^DhRQKS%Ie1iwWCXoPBZ#xI#NDRxPPox${D`9$i6 +`K8u0_esmyj`lPe!Dv`k1+!*OulUUCwG-%N=+V_{H`Gg0Dcox}h@qh!y{gi@=Bw3lMG8f%3tl&hVzE& +AjT-#|*lgO6%8KnYQW;p7Zv;S4K*^^fYL@N +>`$T!g?_YVyLu1jikx3#1y-VIZ(slpq{0W?a#qP$PaE3I-brju{FTI2XOP0Luy%17tu123mEG8h_0>A +}Q@Q)c1?BVT%+DSTJt@L*;;wL)r89i3*VLIfBTYy+Gau!Vq70_`6i_UXLq2FK@vFKmdcT(JW0`j<)l; +qwVyJW^_b3+V1C$w%a|Lr5(^{yPr$RU81Dqi*_^OLpZBz_9K|>cnoV3vR0CC#*5ekKR~gwt*L4wj&H*^2%uEIEOQuKeUKaU}usxNOs0B)5k~J8iJIbC7QkxdTmsPfrGBB +`q*?te7biy)ft%kLmY_t6yF6e?~=?w$5kf4^uVyXl7h52jO`U{2|u>W=zwr>f(FPFk?kr%=%hq$5V@i +#E}-=NP?h)c69cbr|Px10pc^tuGK5S^6UL-a3^vl9M=ezG-VBYX>8V501zDsOnfq+%=O*u}D8puXPJ> +@IJv$syX5<*arf?BIHX3`}p!JagXc0+^4y)<6*)jyB7i2Bwl`C8^C;ADmU1W#|m5;8^1+x=zJ9z#!;2 +VFkZaG^cGX*b7_eKX>gvf$E0fM5AfBoMlDS0CvzUE$&&p;8WP2Q^~-#_~>!btQH({<95T)+(WbQcD!% +_*==@1ZFVEU0qO}dG%A^=r^mY_?tsgGq85?b&kEsaj|Ge*(H7mO_+A)H;+fU0)q0`Kqdm`_inQ}9v0H +^qE7e|@S9_MFCEjF~wY3*AzM>mtaqZdGmw0y#7Fa?S*q&pKiMOdR$@YwKW{yG$!|aqt~n)*=^3!Nh@~a6Nm>8MlTMZADm8Xhlyvm`kot?55TaLvg{-XM=h3VXE)PxC)f4KsrAZ +sx43?cK8L66uC(2l>-aj>b#t|Nss+XNm~=RgI@vymkoG*-E(D_1>ASbDCN|0J(b3H?c{O=GIXXR2hd^ +veM1245=nw%WGY&jF6v%emU{*sRVzCHT=`1}jwGr +(Iux~+qQTbsl9V5l_aA(~5c`H7GB$*44z^07GiQ1L_0$;7_;QqyzlCRmF+=5hnhMnvEVw2unjD0+P^}3!S_fmh&=`M{rc&Uy5p~;FWa}hGp<_V?=aD)>?#LUUc4L4@*6IJ+vE2 +n4IUY9;Q}Wh2cN^pI9s(O4?yr*B@oVOcq)3DPv=Fm#2BWRxBm^gE@?S%Y@>hH*qCd673s64!ioIV2M7 +qvK}CnWLeEsQd +FTk()OZ?*JJ7!gJj!dPwF2ETewjVdk{SJ(ABB81xZ-Xz#|-?X)FY=)xQq(_ffOK)DnzpWkbvOtPdL^M +k0>~K{pUQKuB?N$L{gaRQE0u0CabG3_P76*Re?%J~Qq)pcx+kI^$ +oYp}s&}|_Rux@06ZUZfb@kbIK|1rlZp0!aD4aT$bj#u%ZJy**GpgBk#7 +S=VOUIr2!~6zJ-l&ttKE`y!Aw$9AJhCQ@+$spn=c){OJoIVf6d3IkhrV`hm-?ZSXKq +soECWTUyRsI{a;OR6|H&S8t^eV9IWJR=Xxc%*Td)hFGfweD#q)JP{#ux1nlDprwH8)xM%7l5D$lN|$l +7O?^jI~~nbF2nuyW%yptdDK>I7N+fGPKK1*{&F#%&dQqGDv9ZC>j;mSs8G$Fsm|*wn5!50D|N82?%AR +80H`zV_#G(^)VbMETkN}QUeI)acodT>eEsHX8Qtd693pCf-2OP%bpBalHU#D~^U>5)(1?^| +ok!?t#+k8(}36m)gbKKcobSq^|&p5~hh{5(4cHZEoMqTn!1>ulCJ39wtE$_ZADUQvZcw?TQqT&o}uZS +&F;L(DCveMO8c7PeoRj8qC@v=I#+9Mp+UhV_bwEA#p5dj#&cI;~~T_0nn7yz=$y9lIRjgE7yoHcBFzI +2P95YUq-bQG`(ZAUo*~fn?^CFg8*Oxi +{c&H$TK5?iUW89MMs10w-$Ewi5)e^rL>mT}emU)2BCgX?0b*65xb4VLb$e0{RtOp;H0Fm7Brc%aIdnsPxvul8g5w(kE +nkf_s0nb=P`#CXtO=EX(}&muoDHyvd}+_^8w^sT#G9i!+bQj +3=Aol*w|hN^AgQMJQ*#tJRM5Lh}rk~TH1B+5rPaT@)-N(GLaktWebtbg|{UhA|>h2hdGOBN?!|iy(SA +-BG)$vi;o6xOkjp|IbXMh35CJo1gX&&o5TTmBgiDV{Osnu&o(EJFi{P)8{Dl+2*K&y(Bw|=A{4v8O3! +7lgAN$tInc8zN#jP_zVX;?{1D5~o=_ZzJv7>PgC~W)og5%%Ig=7mG~x#7d}XLIR#w@vY*qKSYDG?U16Vek8d;78F3?xU(JpY(`HgXasLM<-CR8M`*S5Vz3#w?6Q9B#RB= +!zKazUd3pH$^+cpnRveqx>P~J*ZZaelWnBNM#b@@SwPQKfT(b_!f^32vfPn;wNCXHRa2+%akWD$vl#= +=Y0*2`*_NY(GAW421iYTk;Uzie(UZ9BJM2dKVPah=xCWjJU;@}E6`rDd`66_ +?^3v|oMh+1j49w90HuJ@Tk4aacWtl}{YiNR92@%J@tw-LSIRLl@0m3Y)^AK?KRwLw9?0nWJltU^|z>J +ITL25>Hz<>G&fJt)9c9wQQ^HJ~@`k9s#hvq1kQ1Zn0AkyHPFbO_=bkRm0#oa0JoLJli=R1eYG#Z*(k5 +kH2F5b$PHlV{?n8uWhv62S(PrnT~b2pK-Kl6Y^v|r^7$LbUk}HhQiEY*tBTIXo3m=_?+%uNVyibWcj7 +p@FhdF2le4^RiGAV5i*D}d$1F1i@ksUp4HbFWUjRoZeovOi8guK?l2m@Oko^DC0So$$m9Va_JEL{5hiK^H6&Lra5J7u|34|rV{3VshD89rF?g=4jOkpyjEjonH&RtOAHX~9kyt*0~ErGET6e +dQ_71^}K_)flrQ^o^E7`8*3c@9%(W>JBh*QddmspwwYZB}78$I^w5<4uqIjk$yr` +S|nHA*+tU_giF4^_{0#32fJpTw#sA-&!`Iza<7Q3;QdxNm|ajo-AM(ia!lq~1ky0M>6Gz{buwU|2=nM +JA;gZI_~)d`_C@#rcv-D_jAeVpP8Uc0nailM7TqAM;q89-j^nW@~OOVqU6*m+FtnEH0x8>@zdj^FoME +vyU!j<*#)NNMJpseEG+j}B}9F(sFD?`~sDAwhQo%B^Kb +8m@KT`lSN!$Kbr{Z3ICvH^IrvAqmL%*h_Q@)Kls2$E`vdfr>7nzHVxlpVAZR(@GojQ);?K(uq;+YAvD +m^NwOCt6H0_=_S>*db)?yO7`6C)^0w7MI{)#*g@USNgwMx(tG(j)S>@o)dpwoG?&8fzEpFt2RUz9n=A +IuPUrsF>DWIDD`86~Z}oD&Ti2?WZ{5tX&*O@ne;8M+C%lyJ2O1j%Ce1RHVo6yjQkAhE`O&ivSU(kN70 +EkK%%9PQ&Qs9po-)d8qYQC1Z0!+NtC+2#W5LY5fKF&%+lS3GL6Dh6KR4gvtRH7F7D4P|!94uXu?l4=q33AQI5B`wY7$<-j2b9sntr9Nsl9)IwbcK3PG;@-2#GOe8o@e^@ +y#u`Ev=O(V9dN|ewuUxX4K4vTUIeD8g2w;&q-ONL|EBZ`v8fW$Y?5TG%6^J5$K(`VWhPNeEBoyADZ?bM!-E!!nDy(~8R_tbV|IXP_bDyPb-b~#%x9%?F<5dY +7~n>7 +vZl*9WK1zn&bovO)j)L-s}d!x;WMc=~Hq#sbOM)&6XI^!tO+U(RFsOEMmvKUEJ0fBJQV;%A^C#`3 +dmx^lXtIQ9~^(*G3xlIo#F2Gv;X|0Fl^6G)esSHznUCPjt@@XAeblyQw4~8czW*dMUXNZ(-m5``1*Wf$q`|@@6lNJGOqf0_3Tz?AEMm$ +^VagD(Y*NeW2t#sg4N2w~leZH<`sn%h25nI(7_(?~H38OOLYMyQVwuk}^Ji!@IV8U|&6MUrd~F`vx%f +SxWO)nF#f#g#DhoP9)HF`MKRP{lpL~1p>X25twa9^j9C6q78N#C5tF9Qt-ZDd*13Eaz2OI8UaaC)Jgt +|yZOOkq40xc3+utc?DQKBmO3V&4O9&G>i>7g=FIh5U*NV|Fcyw5FJ9ea^o`~m+%UK}i}&11)kssb6kb!!W^uyPh%aWLW2hU)Q9KYgzH9X_?l7BYKvxhQ?7iO5-{>^t1ga+0LbWgHU&VlVPv{RB +6YM=w+h$9UM)ghDtfx?>9(K;64gZnAGtPwUuD__GB}(eS;Mn~`NDC+X1vB`-kT1dWp7h|QoZ&hg$m^} +jmM0Y_+?^4?Tj!vz6bzHAo&s?gT>SlPmgZq`%>)}|ZSv};23ayq5kI+X2T@=`VwlS_dr5l8q#e07%=T +~I`1T1k17=@qPD&oXz(HFfx@&oBsnS?|)PHBP@k)TmfOks1LJ=b)_0x}6xvYMl3$o8Izx+s~9UKyY^TH><_U6AMkib}wA4n?Y~dW$5t-s1YhHt2k9-6kNiPMxMUqIJ2frd-y@irdwwN&R +Y(sjU}>%6VJ;J}HHAX3f;#9Z1BcL}{&dVsyNbm4fwkRikl7r^wnO){!9ib#-rxul=&6(&xxCSAx%OP< +g$f&z^|)F;9>os{iPBJQ{OBrqcC$`8qq>291X6A_* +w}FQ(CmYu*-=Ah`>YhZ&Ti-oYH%h`TE&%{{_y}(Zi&K`>5OiIWsuqAEqnI6-*V!s`cCA;xhB=1L}S{cNHQLm*XQ77BL~%kc<c?rhY4__bn7}=#*qE=sZ-HgLyySLJe46lA&2bi=?db&wGnTr3Ss00TAh^brf%<;hAAF6<~j$T-jzK +vqvx!$sA{TrhZgn08438K3fO0pA5zrzple8V3)dd%;TqCeE2Qnbhx2=B22a&;m2x&&Nu +IA=%b83u*LL8e0*z#h29U<}o^!LK^Wi*Cfq!ozThh9hS!Z +Raa>3FG3L-}thY~zYU}LBmT;6L*|$C!9Lr~b;+d@0Hx`flfWAy@J6y5Q(IR}Vk=mb`_&|_F2=l7T8M7 +>aQB)!B@BveRNs^)9cRrNWO^Y4`yAKz-*%9O#8KxQmTg~q6r8O_R9Wwn0_ap5B$h3zDzrH67G-orm<| +})yo+dTRu$Fm>ITd=B4`r^EHRDcLlEDp@*1C7QEcAEL`h6CL2KvL;vFJzgEvUZs&R!lAqy}d(sIdAv; +oRqYY5BzB;sY&#jNjrvcv%rr?-9{x?@7Ifry2$f2GHYX{lX}Ucj`M?9iEvjhM(A;E-MU}0Fz)g8`3v| +@zx2|a-E&??-djFF7zuiq@V=jlCVdQUM2oa +XmD4V3HNruJ^@;DN$VPC#xrBM~e7;Cn?wDO}ftm8~)YgtApnl_Wky)_{Nu?pJ0CdBa+^Be +%+AXc7FMh-md)mBeim)lKjskezIg)Q+7x)=}VjP8pHaV3iUksulGF(WkIxk!N?uLQW6~lwib$J6w!`x +>^CcJtwz1JX(i+9xNQ}Btq?P+jzP^keGVwLacm{R3BSIpbD+dH&9b<9j8j}2;ZbL*1=*hcNVt$Bf%n< +wlX?>sE_%=lzPMds&aY?nyLh0Nn8+wUcm|`WkFocMM68bMa0UXnYb;On2dQ+%mBym0#?+6ERZ+${-^K +UGoYP(GCI5VH1-6=@in)8w=SbE9%e~%c1HhFR#23-#8Q)Yj@c-T|{o|o-7zF3!~Iat +eh;qPzM@lZ4D4qE$t%zok>7~$3#_@R?&M>+=woZh^7g0G +IL~<2&i4tVmtdSgK*e8q=_j5ip1SHZ49f|>t2yvI^DCUuqCv=Sn*~0+5dNsa8dy1BM^JfLYk&@3A@>u +}P$2BU>c+N1K*>=%^K&TSAY0BCab_i*fxfe>c#_uBJSTP?g0Mmt{QhpAk%}9RqFVNS!#RvKW%JnIv9P +{jp%Pen@{(NaAB}eicfH#mRj^?7&E?pG>p<+Ym~A=Vc^~YU5x!G6o!zDP-d7y)htxqh638EKL+QAX3f +w)3?&507xelTi;ic3FQJY|si;AZ=ZO)ecI^&u&+@GA!YTLwaWoET$JkASLC*tj)1hx)iS9p~xv~AJJx +&B~3)0^;$yO`VktTPR|J7I9)S_F2P*g}?%jN+mcHFS;sYCe-|#{^JoXsj%y_PJcf1QJs$|3$} +oyB&m=z{brQsI9AP)h>@6aWAK2mm&gW=Y7mMVP1y000gu001BW003}la4%nWWo~3|axY|Qb98KJVlQ% +Kb8mHWV`XzLaCxm-dym_=5&z$xf{k&oeD$iEOM57cZrfy=6amuYkWC7-hM~|FZ8IxNf++8KfIjK-reyDrLOCAYhpMb}gI!{zfA7x3SY?B6oyM| +Q)%$}$GBcXBOqB~n%wtlkOs)3M$aIlCz~^*yfyds7_pl-ClT!G)+8hw<{dlB+{qz}>bIVlVO)5xi5>V2Kf@EB9ctjqT-nvjm(Rc +RAOD*J6YJPtk`a0=JvKw_Nu(y9%`A{TeS=Bj*hNAmcre9lcl~IX$51e*FU7HGr4;Guofj6!n{VAmSoM +>JCP=3Rg|Ktk2AIvbwUr56<1=$N?z}hx-idDST7;1Qhat#Uo>}X9ORibL131b2)TRY0L!?S14-1S>U8KONw+-w6WfX}vI +iQGx~+sN_EOJ4E4doyRBfO<|&nt!nxe_<BirY5)paqyb#(a1ATB0W$@4Rgqg+L20y(hb8j)DwR|x97J42$Z8bB~Ls+rB!z1t~{M{S +31!A7hN;?qA6cSz~rzL0h6ASsiOEaIFaPqZVrUni8iY=U!q4mm)W_oUzIMYBFV9u}ybW +{B2?y+36kA@SWt-;yMlB6;{w<^%eT(a0AdGJYy|4lHK$>u%f;QUz*UtKb?^yUj-x8=F>~2X)6JtsQ^7 +-_2W=x@{5wMZ~0bu6eX}0hJ4q8L~(!l7=Ca7uB9;+0hh$T2gCV9oa#F_6RGW&mC%3fzR +Oqyx_#!t{`t{mS3Q$N*Hy|bI?Tvj*f$wKv*Fh;xZ>Ay#d%FnwWV7lK~W!D$rmL;U-rSz|FBKk{qKF`u +LtaaiTy5p+?5gd~s7BjY-HHoLMM>afwODB;?uZP8J884zKZEhYkwM#k~>OlpY9VR?GcBIW%GC#R!!^e +>PgRzqhcFn>#u(!5nPQeVY|4p6N{T%ctvJ-Rf!4QHXmwNutZU?M#m;NQu@~ZeZRX?ITi^{3gy6+K_gE +oejFaG;0MVA%HUia!_R(c;_0UMc+|gCs|mQY;0K?Q*Q`iVWc2zuSL`TRg;G!6CXekml>~tWgkNosA`4 +fHky3pcYNX(wp&@2Fj4VP!`cVRv;r$dlej#tCs2^#Z$W=a>xqt{u*IAs!9$y^db=;uL)NLZ`YFiK7va +mS;JOTheR&OVSQEimNuu8+35-lAKICj6Y}?*@&v9oc*X#=VG+T`f4ZF0$_9%Vb&3iW9Jpx1?yJFYZdVtu+VBKq5=x#`D4}E$rC&^>vQRM!)R^hCp +U$-$wJQ!;3d2Ba*>UiB&RSz>LziIU)#MM86Ua>y`7|YlsD~vLBq4ezjx?%9v)l?7-1N=&3h8u$nsPf3K@gS^~9Pu3(0-|W0%y_B)v7oz@n( +z3BO|HAwf`fA-kZY71gm%U?8+x$onRE2FmS7d|Z%biH*&I1xE`_`rh~KQ)Edk+(vymtcm@Wd4+d@t3_Dz}RDyR|R@{p;+H^vTMvOM>cUM?>p>0sABoo>*gV +-Ec3Wz+_J&hu++l8h*sa{8mjc%j3%7s~GkgvFK3nz$i+~~Uu_e$0SQ96JH!c^!pWI%z53*AVr_X0|J8 +U^c1UlH6F1cpayfy2pH4Kg`V37S0sjh(ybvM$mBge@%PGI$G1g-j4lZ*p2ykRUFLGP<00$c|D#ld;5| +*PfEG?~MKhqg~KD7FwS5#uEeu5zA)pDt4jWFWu;ahN6LnsqhEuio{6`?p$hW=o*`+A#gQ&SQ$XBEB2iIp21aQC>w!ez<)m-Sy~8{PinwuAe=M8vaqlPgo +}91ZSA9mSYeOF0TzSE0QHgi{T&>?W+L7j#WI9fO-{qQ6n^jV#XaRQf3ZPXxYVdlLIO +@uaoz;SVE8X_5qzXrdDpz8zx^nk;n<*ND8wnJ&I-ZonxC#1?Ok~a5?eHkLSAgzi1+sNp9D{Ruwy +hrF5I9zi5t(v(6WeMp#pC|=&)=way(B$xV_dH&fEaXQPwVyW4U;-d@>Av;?Pe?be-K-?es2n#~{ZC>F +1?u?d=Udr4(qaC)r;}d_y2oF;Agfo81F#k{NqGU0g1w4BI4aV +aWYnq_{V(p+zOa6AFpueEwMChUotP&>?<VQ~y&#BzNu%AbI%@Ev +)pL}MZaQ=GBRnuh!2Beme9rlbHed9Kdl27%PT6;?<5L$*{-~XGYJa3@AcJLGOA1fklk~9P9}^ce^mSS +MFS`ANbEnUk5<`~IA&Zy82`HU3=O$0gWCY>*(ApeXxU+Th#UAZonB(H!4~u?FW?OEnZg=l|48faauq4 +lqI{0@*ajWP(2~r! +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 +8r=~Kf^%VM}Fm +!eSMC7N7Beh3+Izd(6=j2clkW^WNTQefd#NgNQbwsLJrUKF5P`x@(vQVs9sYplH{5m+TeWt`%zsrjww +qC3oRJkox@bX-_?(udr69c)l*ep!O)}qzr4Uf0@5BDWfH9uTphfD?p;1FAc)hy81 +eb+-29{v;Ld=5}d*9`oY|F)tn4M-}tR|tmzwwxXru4a>bj~pX8o*Y68;U6n`LYf6Bi&@!D_~9YHr@cU +W<+t>{;OEA4@iCe~Z2>xjCigWORN3(4N0Q7FsUF1#7hU9s+Q#tuASmLAre#~L~j_sBzV_X~YOPTIP=> +BiY@!^jzS);4m5-Hf?Xs+32EhbyjDRdUT#REW*t4Sr}8N&L|0P;xx>+;r6rJ4cbc#-`!UHP6$5vq$>F +pD3YOBKdESkDr@EJwF_2+`j+w9B}9fTA!>0E`0yz&N-|>1+GWGeBqC73+1-e79yH6J;m3!dOP`LvzvT +HMT#{920^-#MOG=?_D-(ph7pr4Lr&8HlD3E7@cXBXDt^Q2PqiR-5m0#4K)k6bl+hVq#q|P<=6j1sG~Y +Jh(QHWkJNcLWI>CGa6?OnkBYbX(k;w0yo7uhZ7AEApT4g*T$LCA3F0fJM92&;*woaqn)5?2`TKC)@9- +wYEZlhMGj!G)%)(3cGwrBk{Zm&4x1Gq!T@oYT60&C-Vz|h+)AHH$B=X3~80r8>^bxK$5Y`t2}SBkB3cw7uvwICmx*{I>!r=F6!|YqML4ShanI5 +((d_4Cgosb=1(rI@@(ftfMp8k$=E2;khP)h>@6aWAK2mm&gW=Zv!kPN)4000170RS5S003}la4%nWWo +~3|axY|Qb98KJVlQ+vGA?C!W$e9sU=&5RINb9{(n%)i0TK-Fh(VE{q60`A0u#uDAOr_uX2@a!t{BIWR +SeyLy95$@M$>6#)xCOmy;pZ-(OrD(E~_H=0B0CXz$XtEqp%v?s5NxdATb#rq`z~jdnO5r>%HIa_x<&u +>8`Fi^*VLx)Hzk>)Rg_~LB_-|j2Zq^m0@-<+CK;L@Bb0_%N+MgCi7zII~VUVEPUtU8@;!$$z5H0*KM^ +o|04I6oA12yE19~tPjgC7Jg^}CckIcF7R-lt`MSIXZu% +awU>STF+hlTz2x>=yjWhmtu80SEHorB-Y=JU;&E+^(U5LPW0+UqS*CW$f7^!S^3!a$Ms%smFcpQC{SB5dNFc+r2`zh#)27?@&Uo^<^HG9NTB@3Rb3e +~4j5{}|H0K5uNGoesl=!LQ_RUC+b2X_ww0?5lY&OfJK$xUzQT&HT-fG)eFKWcb@N7!K-nT&aOE`>w_FL#eG>?g3FtG!oiR)Qz0(oaFN5Am}v1C)NJOUgOS +U6ZSRo!6oxqvftutp)?-tHCA}_gPf{qeh;c0@ccjxCfe=6HWsH(j?W|ywW5H5`>}2!9!Qv^s%6oFl@+ +vGr?3nEFI-ts+v)872SB!!(q`F?Iu9JKTwb%~WTeyeAF!LSEVv?(>s?X?AgLSaK`_qgc6<*i_7#Yj5Gl$eq5V%3$65r=F7Q +*!&igGxn(531vosAK>hnJ-j&c +NN$7Bq`55i&$ai-6lAy*)0De?!16EDS01wa_ao^;8p*>${%RhCG(bnx_+*s9ctt#k~honM9wD{&xp`K +Q6Bb4tV9p@-sg2l7c>Sao1jck4SNl2)%58+cv?JaA*R!ow!6N`Egijtk3mCNbSy5&wa+X_Q2Uds54J_ +FPTN!#ahG-dDhiJ5)`T!Z6WV-w5tZ_YQyHdMw|vy +7^bq4=H#`UEaddQP2oQ51u`nGc0=M+kBf|)LFr%O^CrsErUIC+TRrN6#FeBAMyAD_*Fm%W5wby<-)V_ +n@`0AfDwr7161%j-Rpb>dF^?vCwM2urZm5H4DbBkI`K+2f6Y2us9LzD<&yV!6E^;s((HaN|769v2KcHlA#1;y4BSAk*>-ZJa0pwa)DK@h;;_UH0< +1%5KEmR}U8t-id2=3vKi?{*E7OJd~l1-;7O=tDw+zv>71d^|XWNv42WhGWW0c&>aHS-q%tdy)|Vq{S~ +GR<@fzyVkwveP0>0q#=0jFNFfN1kaQFGQA*ZHBJbh%?6XW?!z7WVb2ayOuy3AbcAPyOI} +NZB&L}ZAa4d+S0{lqh8&Y(hh{w_{tvSUTzof{RX_$1(W(x_>m?9d8N45BvUOL=@7ZH(vYUp~pUL1Y^=H!flp_27+HVx2d@?>9ew +wZ0G!A)rFwk`lt4L<@d)yu$>y4g65}ZuuvMppgWaaeVP3pznx}N +UDwx7VuG1Fjn}I4&x=>;~n}aucmeTjLWs*`b}zLxOxzO_J}}emW#cXukZoR^B;f@209Q`Zs~D+ +lbO&UDbS9X3>7?%Z?EGkoru1TX|V|CT@{Z#4zV)LA@0iwmKuQ}np$e?M}+SD@S&L8DbotRmmmd>;}oP +L`2Ae_WlAtX7bN6BLf{xA>^&4S?KcH6pC`y)&AQ2M7`w#4dbfRrxLyeDQ7I9rluXne9rQ{2avVV1ZV% +aKMiw>2LtX_UcsrU0y|!l{O$)|Tk*EpQXrIM<@M~DO$7BO}s8U_KEhJa5_D`T9dy9}o{*uKoEzEG>jK +l>&TS)m8KnNDP6v4{(F$_e(EG>MPtR8|(91A%!$Qqh62XZP0U}df;unW1QI#HajFX-%ad9g9%!Qpi2S +GK@PVRe_2)l_(}O3wBcC$7&bNu{j5oxBS9Be)9h2T{B-BCB-85m;a+!-xSAeZ#AzDdeeP0N$+RdFvTm +=ByyUkfC(7wn)i97-r~43OR&O3@ksi7+6Va;;(=vz+W)U#6ql@5pqZh=m@^CWbsH4%Tyetn=hioe~dTF5yb=xovXj03vt%Q0;+JS&r +)5Gv>~U6;WNrfI+TIz>uJErZjg@vfiKY)vO^`SoSYa10OXHDaqKJ%Qo*vS2RmBjtDV_lHj>iDBzv^3KH!)3C_G0DV;|X<~D(Tg` +R>b_WoX7|W^~E{3cw^2EhRyq1Pi4IV(87BQ6T(z5jDpgp&TYsVGR3UeA(Skz6bnjeOa(t{Pn#6OSDS~wf181tjb%;eV{#DbET%3bo1eUfOR +{#ztv^+lvpgln?dW4KjB%qBnRYsC8fpLh1x4{YyU@3kq*Qc%OyaRd?DBPEpoH7_SRZZZ|rrw-2JaYgh +!o@vXKxYv#(&7%Qu=0vkY~y{7--pUS8KL*L6k%0A;W0s=Z09>tgtEF9So{WIJsCaBZp_?g2$1tfa^h3 +`FwxD(Sm0+1|R&C`ath-gV1>>%?Fw0d>C8MMC*;W$RZsVOAQPvHaG{oxMt)o4l0=AQ-zutm|d?@p4&A +b;cSE(7gpJuq0U?Na!Wo;@gBh%^=mO +!r303rPF#ZiD-$IYNoX$+to&64LKZ)%K*$lUprvzAx*H3Bag;)NioHV^S5amUXQCEUteMC}LAaqEX`^2; +>rdgYwIQDhq|-k4tr|hx``hX&}z-c@~Fomxo-IucLgF80+JQ%Ll_}lH~p3r{lt(CYvmeAd6FyUS`ZiO +m|V}LU~llr^xPP&HFTcH*ZZ#pl>F2GR73YMEelU{E28Oq({S5z +^xfYfe}aGTF!^F6@aSjZ%>`SZ-t2`Epc$TzTZYyO8)Raf_36F*Zvib&6*$QHjC7ycr-yZ9P&J&eX7`@ +uCKwL{SU%A71|rxi>xD&glK{fUz}j{ugQO=D=Zry||()`V@Xv#bhCtA +2#g`pG|_Af}?$eiAWzWgJ@cb!VZ2+!d3MLB)OAmIyLph1}(dCiDjE8SZRq`;aKi%V%s +-joz)ix3PTY)7VWRrKKbXQJ_s~H`#d^<$ +_D5<4zGE3g#2{NH|!eR?|7|!tSP@-`zi^Cc5iP)tWV17Ob!?q=|h7K1u8|3Lnw__vrn1>x^fdE_!|+3 +rebvg;>uZEO^BCRFDd@$QAvS9%LCNy+tYRF0qLG3^$nxv2Hm=LNM5F(tauK$#qVrk~1Cn_f%!5TrwIJ +PZx1~2TiCM4P2(i!k}D7JGvS>IzCn73n}Iv@WrK7$qkjlU8b?;Qe$2-4Slx(mgU-*9p9^^X>m388UW-UqR90Tvg9f@x2HgeIiB-97_IS}TBg>?- +>ia+)OE73Py*)ljBynF-;BT^NJA{KAQs(1?XkVm&pfrm?-mWRUnv|M5int5fGo^G;$n*!rTjzce_kKh)fO7}Y^f|$28#sMSB=)z}qCqBn?;By+ +mXJI=$Yc^+Ft@z3?)7O|b8kuyQz9zKN*A?%>>#+xtSOAfo%+_8G-{!3he8UQ`)q?R<^=(Nig){^Fw*? +co_5uc5k~-m;YGy($NnM#m^q__A#7Kcw$g-u822np&vsdE)IG_kX>Ql23xuEB)!kw$f4mlv`#f`>71O +VO-FbxRf#j>?sN|20K!Yi@zShvJR7BRNN7kS(W#hlw?dqi%j2Gc7`vIDBF1X@OT^eZ{ +vvW;Qev`Po`ifOdNZ(_R}FwuCBt@1EbBEWsjsFQaHjPdwS6Glfg(?heJ|%f3emxPHob!98-W9ye>8k^ +J40fuoO|FuP$J(Xl3dQ;jl7Vg^GizkxgyEouMkNZe=&&KTwsd<*?Wu&yv^W9#}H%UTh?d<-szu2U&G} +n;@|>*q4AFBvlOfo!J?1SL?ah?kn*Hn@n3zwM8&s^=`GOzC~DARU5pXn{k2TRNU-jIR6v4iIBTo8<&Dve9UKZd!K|sCq?u0)sG9{p03!O+z$jJSSSdIEJ@zyAcvc*F440H> +0)ylGy|3mrO3y6chTg<1CypK*=AYZFVZFm*}Vt1)UF0)AM&C(2MJu9srEtOiS?&7n0wACBizr*3zXF(+}Ojeg +7K?cEMoi!3fT;c0Y<@{k;Z1}L}qW{``KvB?=!k2n7vWZy;JCpf(*$f~KOJe31!oG=V3Aiw<@3euGS(c +6_#2|!epwX8F@Lk-e$i~TG=yx}&gQ-kCuEoY^1((=*b4OTV2{G=mAw~+f_Dn?|AmYG8m+eRSgY|R25t +1FKh101m7D_6lP3`$^1Iaz2&@%$;|SB!6AknRHdV71KwsVhj?n8ulcfhp%SeoeWP6llY3#^7;$KGKTM +$KS{2j)VBz{WflnZhj<2U%?LgdVD{91@_U`Qz82L%WLp@?14b%Ib`7GV3}D8;+AR)tq+-}6d;&3zgG& +jV*n^6i0zWgtPn%n(vjeoK1PmdOfpED?b6sJkgqiW5{uqx&viI_WxdO7?<^zDimD=yg!OmNMZi4WJ|l +U9o}7VJHjt54>k8DgEV|>gK|6ObRjF;~Yh!H=Idoo!1m3 +Vr{x=dfjQW!AvI}aOia9;z}=flGorZO{pHZRYL!H>#uMyE7fUuNF*2MS*2BZ)*$@lx0Sm+lx(hc_S)WXNw*S^z=4nIL?}69 +L1*X6t(Y$&mvyd`GB8-V944>)dDY^0J^K2SL$@#FHLPtKmg$j`o1H47Gs@tvtf=&5$cxOT_iUCK4n-)EJaoieB&vA_Y)CqE +!q6;x^ngw{JY&6AxmxfN;^-mR}w89q-=9^8cIqFNK&vaLbxsw1M(k_` +9*V`IhU&H@RgF@;uxb;p7TfqL--I7%%PvUB?13c-w2hUd(05HFFu}WgKJtD25M +Z`^pDUe8&APKxPDrHTM*mlObjo!tpk!kA)7|_LGT31?utUsH-jNYOA_Bi_FqAjw%WR-H?pCa2GF90mZ +QL@i?wyEl&WvC{|C*+fI7)B}*Ns$bxiwAucr +)3RC@=;3Ex1FmZ+~3MzdYlB^$WUSniG6MBhPi$0zzuGg=+}saxVO#lquu1nByDs1uXpLxb=2Wv2nA;x3ay*4^h_EsC_2^<5CY+#W#sqvLCqyMry~RAo9O}XNwUC97@xc8aL^?3b!f +T} +DAdoZe!JP87YcLnspTZ)p=7HlqJ<3_i~d+p5-vkCxqIUsFMF+3{en7w%oC#OI$M)jcBVz&3yo)ilo#( +I`l^P{{NBHL$aHCcQN-KNOKSR5T+uJ<6yBJZ66w#<@0BMMM6w1pf6Nef|!I6rQeY%PUglhgV~+=UnGE +DRSwX-=Kii0k__Tr||9a;sEzFmR0bs?+=^d>lo|;(e*=xK!6Feq)BP{cP<5vgJw;eN*_a;A570EoLLX +hA1gTJ))I|QSl-Qs*Vdu1l`mSHZ9D~ +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 +sawOl`i30$g43tCG4rNjP9NW8pgf!Cbv +hz&%gm8gUtIJ=?Oh9m0uRw_X}oItKyKk?&7PVOB3cc-gtEqDBv4Xn}*3;0-nvhKw-s(H)d> +y2NmwJ-lWtI!%ZLX+j3w+_C!7qQAyv6^O`>xt&&{P9?^mGj>5LSw^X(B2Fa}Ys9)(8vnd6V`+_KLQ07 +trC{JR1SZHS&Be)=rYVz-yIu3th*J+_{;)7`1sktF(=2KH_OjNA=D<**z9HXUctr!+fAIfdI(JjE=w8Te++s@Q2A6>^|So +LWV~>1 +)VM^whKUEe0`a5W404;WpM3#+MadZ;GFp!cilieCk;!I8B2)fpAd4@(4W5{Q{4hyo +bBRWL1g2-MN9xdso*nC{{Rf?YnV3V+AlR&Dcb@R~HtQdw>vHM}RUsn|T$52_d(fEa*TJzZ5|KuwV%&1 +`-NEOQn(=5P6ggdA78Xm1arRIiTBsfMOg%ZR{P(^gWz@7n;jZh{jDHE1qDv$(^7;HPl#CRO)JS(0f#@ +VVO$E(_Lh7@X6vmkSR}{Z(g4+4{0>22JWShVu5vkv5S;`tINHDDK$BwCdW@M>W$}FbXc@wHIH0}BpD1 +oIlvmDow|g*NS~ebxt~4>eZEbfuhA#kW{?>m9FPY-!S9FR8|W;b)PIs7$4ekszk55RFnpREcn(i|R;) +gUlkwVgDhoPVt)n2x&hYTX!tF6hWnDJ_4f{{jTz-PspbKoyYJIU15Ce-@?Nz2<^p%CC` +Q{q{$Hmt%v@Wy^f(%u6zo7iZu3158JyELbLl#c+q0M3Q{Q>a0 +m3MU5A|=1M8B8Qsdl-2J(bN6icDSPGCqL>u6?kz$zQZ3o5Y4vNVg6vI0ZlhG)!0H{MG +x%~AaG4azy!txVJOVOsx#0B0&^VA^1v(Y_?usQmCB5a8M3BnCDjMFRn+eDHvDnq#b%p_s5*kaZOS>Dt +u?Z&p)`?%n${t|nr?M?J&5F^vEzax~!?Rhg;%pTNeAvzn9q#f9^=v2MfO9vNA^kTDVu@nc~xgma@0L%7K_bG +k6L{#S;nLJq7udfxg(-qipz(?%h#(IB2e2=pJ)Ar>LTO3q(`@7p>5EPUU^`KRMs;QUwOdp+mB6yHlZ| +5!Xl*@5(MF&*1r0B4wsdugwWTzUiD!)OX1-Bt4A0fF@4Xd1c0I##)7mB2aw*u+p!5>>%$_1VUt)YHzZcCt%T1qjDM)y%SrayDsEVgmA&ENR!1!x`R_uE}C7|gS=kGJ4ACQo~Wo0tjtYV~0pDmP&Py@`j(Mgj4_Qr +$M4ej2PALjhnJ8ZuKi83wq2P)#Ha69Mqy1c0W>5jU=08ViiDO;%2dExG}#OG(f)WVg$uW)SVBYIP$9xYrpeh|ql2qv)(Upexrxc5URNlkqBv6^UNE$O3dLie_VHW2?Cb3 +XM2?6X@{W%565$_}jQ&@1!d8?feEYb|-(O7`qD;a==SBt-fAEh1PgfzxY-9$e`ol3Ne7GW|_X^)xBiZ +0!>2yIjE9a3AwzbMh+lFp*J|I1*PPE97Sg(B`{8lc4)Pwp*%t(dcrt|IDebwMdC4wEo{_cJTF&}Iz3a +z3+Zuc2N-yQ@>e9EI!g;>0BFsl_=F+#XKoX2(W2-$c?xKFW3t948Yo{u6S9qkGA*E?xe8ri$Zn9^nUN@L(3G#9Q@Axe1ka5>{0PHBsbN*Pojv?&>r`731F?MIimJmsVZb>8 +q4>2ZxT0iqXc*Mau4=^HhFwiQXJ5D0C&Ti&6e;&)|tC7y@1B@SE@T6Jinzh4{hccbm-fSWq}?b{7Jb)q~f5ejMOr~1aG5#qtM^v(-R +}wRA$39dZ+ly^-g^cYd3YBhc$6Gaw3Kwrta89u@nM;r)XTIOjr0OQzI1v{2_jr9NbJ>j`OAIV6^tT9~ +7K5MxC&Dnf^LjygYb=%fT#KcUqh9{zkpX)7`XidATs5$6dQdP(FJG*K +O;3Q44-fwoy}X>Pz41a?cX!_at^4@lM9J-kFQ|2wABk(-du|+b(SpZKo-Eh*uU%Ux2Ko#_YIi;E#u$W +jbb=e*?Icxk+e=zE?a5!IjO>C6J_ei-$N4>jP +m#?`?|j-yyz#c6b23S*>s6t3w0v?LQyipB~b{niF8;_Cr4n-^u0Y;Ttgh58c@jG;6-U;vc~8sY7x6R+ +kULFFlLk$8KZ!k?LBONV}<4+@oE4BPFA@U1A<^%Ye)@%%En~lf?B_laMDnvI=vP{$m86U3f9RG7HD!E +2WTeJZcblJ{q5DeNLUDumreucR(F7|bGT=ow$rY>|_7qt83^8O0zKkc>_Lkaj8p1Rb +USrlS$Dk{NiwztWQf#5YS2jky(yOwfi;Y0Cn9ABln@IT_;=rOM>Dh$TI@fb##Rro +;s8#il}D+_-U|8BzXv4uN~`gah&GYenD?-cmPtw(k3N*}8pu9P;eR8p{mi}9m+#WH%}R22~mH>0&I;M +zJ99W8aGIs2jYt9RQ)VQ*ssz8Na3qM>k}}@h?g-fN%dnj%Tyq& +Wy`B0>NKp7TtuNTNV#Ks+>DZWH*Pn&ST3`c+d^(BMgCTvKz06O{590!`sw +_N^gl=;FC^Vxfd1fweo|!5nmnf$eDgUAgxKB^_oKo>x4s4)RHQ0{LMdz}TqW +W1k@u#u1m*Pp(IC|%SC0JsppD|uA%biLF+Pp(IpcBxCLs3wMhR&yz8*iEe9XcSK#J<1?@)fj=EHq)k% +v63};22-X?FqR6_!1&}v`%I;B}4bL&Z#N=JykM@R|hdc0wh&fN}_IH8jwAu*~lQqFoQLkN&Pt4>SYKE ++)FhKaGbXtb9)NLAPE8m{<eVdUZm?WWBuIRu0^!heixBX+fLAkD`z{XoarUcnii0SW6k6gG5Et}l#{D}Kd%;73`yCr9r`T?4JHu +E!FQT55*7rz&8lsc_rWZdXh?o0se$Is^K$d=W~+CJfM(80PAkWf(u +rl?zZJv|dv*SAs4%b*2Bzxfc&@x8lnm7MyPs(N!ik2^WQlG9Rh)B1J?-EKwOt&LgI#?{UD;i1;t=KB_ +)BGyvk4M9P^4DyeU;;#K`y=wMBC?LMF%|ae-Aul3;RM(5wsgk7>x)yoyDAH#j=l(&7uQJfhU+2~!)oGmr@B_n<;{ +$CuM(v%|>{i6hA~WdyN~)VocnM-{-B8o}5WgHTjb0m@aF$^`=m-9ngLoJQDS*Z{MB`TnAeFky`(xCEA +P<*77iryrfF+Z)uQ#=?soK|T+Sg3&>#y3EL;HF{`zqGHexrSrYF~cs>!v~+CX85v5rD3FAL^qaZ}j3l +H_(OSnoz|xs5oMLiiec!7-0P7(MBorLoJSKNgG!|-b*|r6J5ydh1BFGt3h>Tz}q6uW&|iio<3mU#xl6 +|@b!ymZ#N0>faFYv@8b{Xs6p654r^i6GmzNu?x|EV^&CCJion{4el^}30l=dk^_Jp$E5U&~>YYhHI<$ +|e^n(uRQLzvq7){f_~Bw90x}?^6n4@8-u{%g1!op5VhhfOmL$wrbF%|@5JGL$rVviZt@_O2{9 +#<-=`?hyM{( +?K!v=J?fQP-N?7q><-EndTl~X%_hhXJGENy-A>H#>V3C_MhRkD +_aGN!~Q=*QHJx8T!SPL~l5+|(2)310Fr^2Gu?X=dr_=SGJp}tx|hG4^zDoH@Y8+q9tQSd59u=3;?!>GNPz%l2Tp5 +?vlF-T0xkS-Ib$@e);)(VDa-L6Sf8Tb8L-X44{a#xgpj$RtP8!}#j+0b)AT6Mlv>xhEtgN#(pe>ao0U +(|KCI+-=qUdd(5gKmTufH(qso^wmdx9S$`alcNM>TwnCJ>k#*qsMPi$YrfsWU&sv+>^C|DD^F-17G-L}!=g-O5qdhAJQs!~Sw4uzeTgfI&?>C535ffE +p>d(n{JnHY4i+2p>T~NG%g)u`dakswOcgeDhwC~2HlQ9rkda^QGnPa7N59scCG2N~5#-&ypmNSYO^bI +yqOns|qbfB&Xl2k8rxjxld`PzxpzkAV#Jbjz!Z5kz(IuGj>O##uAj0pZ7E#m5y00lL#BA?&s!;z#sQ- +1GqA$}MFY2rUCp(W{(jp|KmRS{3s?!QYcu9*r%oi6Taq*WI;??H-_(HsQfqogaFEc|mTQeh!ZFcq@`p^FN2zpsLUghg8?j1s>PzStw(;BwUE|T4VWzluO)g4|9QgbT^|G?!G(m0 +*{z+ZKfDAugw=@NnBtV9z*SM_Sw`@&Oa7UZMeWZ1KNMKt9`)EjnSd#1!wel02PzyeRbCKz5LrA8Zlym +Zc=NHaQb#dC6X=DS-NIG=+-%?Gx~3ufjff2qOXR%vU%Eejn0Vh$O_K%b{b1*hy +iO$7ckXU`L|OdvRYF(LamUvPMf${tM88E%%w0$&vgPSFpH{_V(Ru&APL80Ot`EGoA7| +6byUc~zX=liKy!GcLAjaS6w@!vYa1xD%fL5VK=FhXW%BD(dWZT8>e~5<1$Av2W)pYP>HX>N@m-F@b{F ++$9e67QxmX=&gb%WdEmZD7lPW*nYa>^&fn&l*GICGC%3}9!Rize5^hO(Mn9P6T#^a^3PV%3JsL#K+K8 +q2G@;~8rn(bn&s5V24{cIg8hH|-`or+QJS)98@cVpPkld~pp(V6$uNoqR-@fie%b)8r!Su +gBYYI<;>Q#=Y0m3551*G#ljS(=cZe=G@Qig#VlK!}WE&Of?VsdrZ7}^|^jS>_XQlbpICa!MzgbDQ;y9wDZ3LrJ@T5~Q{@)9%n~@jf0lm|dX#xyj}AhQ4stsU-|JDB_6XW_7~6G_kI;7Q%?~TXd`!O^gh;o +Ft^JldRt6Pu_{4n}7R$(n;_-Uzj2gR9V4+}fuTl8|BDtMu`QfTT_gO#|{hlrZuN6}?(-dx)L9gff#&% +f0psO^8dw8$BcaQ~DVuQ1ErU_bFlvVELcHW(AJM0M-vv^zQC>UU!scU7+3(~?o3tn@v;RRToFVgP0D1Lz@^BFy`9HpL}*lfMG`b8JE&`OzpH{4 +^!HV9UEu|-~DDOk)3NwjN`^2M*#gHoiV>j4?-TEI$k&C(r~ip8#_l~t9?Kr2-bqP|{=+_LZ$;9e6zmX +RInVVs83J&c1&3MfqjkWcLM@VYyIjd(w(b?Cb`TYEwG>i3dnV8U)S}Twq3u)P?Fn9N>q9Rm92{HefkyhK1$?#~@flIm7!Q9e +{6SclOFpEs8vx>=I&LrDh`W8*#4Y$xD%5p1$w#z{?SiXeu~Zhz5s`5GH6lsoFD~VWk~eoHxXdpgsJy% +f+q4BA%J4nd(JlB;()M6ix8MU-aU2Mj)^J!KY$36(&A|DO(yib&A;o7RPFNfYob9+_@%#O_#e(~%;#r +nYgC6lo;#spWO1@!*RQA3!Zw15)v*a6AN@WLI=B?a}qCvg3eI*> +jUrJcL!9$CZDQ|LmZq90QgrEMuIyZe_Vz(N?L90A$K_t#~ya&-xg0RSRxW(6qtL8X`O6ZAzA%2c>x{Z +6V^=6~CZ?-W)Y()VJpJe=aU}Yep8H`27>w?Gt#PMX!1kF96`~rCh!*|7>uc8KksYp`2s^OO#vTyVBme +rgRteb#Gl`lq05yJyOfLaMN-{M8CdccyKOAjJ309?Dcvqe^ppDx`I=8=~PQA7eIxgI~E^E$zrqFt$wh +THpa3$50EoM=jSo_8D>hteoqWmsQFRadMGKgV=Kg2K6B7|?~#W +}$z^9HVsmZYTGM@L0!eGsEJ(E3puaxxAS>VgI34z!=6SplQ$~w1dCLxB|jVq7WE}U=Mte_J +)}!3dHtrQ_^Tu^D`cm|?E!p{-l%52Ef$W()n0NEq0YOH?u&KN9q+&~&TmB)Sx9%pc72XNsPO^rKT!uI +y6NOnk9xOZ!d5Iq{Q$oorr)`V@AdRMFaEuC@+kUqDpv0btwfBQh_e_Uav9Mm6*R4R1sMp-&vqfbVo;9 +Z%_$&IO%5F6Ct_px5y7(Ki+vUlt`_?YF7*iBr_=3>83fSwt@!g%ifs$F#qK2h<#hjyAFm#ioE?~VOP- +#>X(=qK;+UvTqy51+E0sjrQQF2tB+h2-*P)G$u$y-XCHW5 +(G9$5fuP_e4(R#D22{{bsnmc4SwS@PxoV{1>-&~QSE^{^W+ck +BKJ$FMKZ~AEAQvxF5|R+LpU6k^58`hn;AQ<CCWYMw;E#cZRq&#A2{43{Z +;KEf-z!W+uFC>b~&ze)n_iGWp}*aa%U7+%5S#^15W@Gtx9D{yHsQZc*N(josBg5?$VB541!_z +JOSUMLsa~b2PJ?L7!9LSx{%CXXt-T#*=no9GUfZ^pPZae@|eeWxM89Cnv{ECHl&Pqcu|nllDUhO$%q_ +84nyhEj^wGWi|$9!?XUhkx!~WZ4fR4BJ4SYr=4R++jh+W;*ITz;=K@zj)Ahfi)WZ~c@D35!X4*dWKl) +OO-2vbZ-#snjUG+i#VO``&c7KxNaPEYuvXa)6qIHK1G!Ku_i)%Ho7AZ(@<}zDIfVCq;e{h5}FxAhQMS*3TQ_6U6O?MXpYa(at|~4LtNlC;F(S7@{T+TTz@(Zw_F3GKS#ye)F +Q5*!SLBluBnX`U5#bmi7RF>=qA+VQWkJ~!Y=aGc(aqF(X&}L^>#-M`#PBS8;f!n+ +tKGXn~uhP<^xEnYVRJfT&;bLy5&2~WS15Afe=cSD?N;|NBQV?s_0hg#Wj;xyrNUpI{ByoZHSPw1KsJD +~9+?TP`CDC+p{UG4cv>h{OJFqptbqZ*G+`XsIL9!%@;`b(A#ps +lyni_8)SmmLy@AvF +x!+AZMhdo6KntkG@-mwAQI<0rhE?TZ4Kx1`0(gsQ2LjqZ-t?BD|IVF8+7NS-Og +oydcX~z~9qDL_IUCx7InhN|-GLD5)ES9lvo)NGPZd)lrg;aKFVZ!H5mt%2DGYywFR8kKPC+4yeDO@ez +U}L0(6vyRtxwNy;j>b?I^Gv#<_=I@X&dWjjHG55dE`$tKmHym`Rg;9)!=?;fJ_^bPbbAP?XK8r@?Ve8 ++sLfmZKx#dduD)DUagjwc%J!DE64>p*p&WOA9?zxS>>(HzmOH=ov{H{kVl_Rl>G727qo&bdnRtBw=19 +C(_{7S$3AsFo#@jrB0oK_FIxupWhhzIUlWIY_~?RtNTz*wx12mTX+R&6p$}J=ldC3aMw8}4^u#G$AA0 +DFS-iEKp*rmdG87wD)-JK+yKO&ae#k!^@7O1k68o`>yXRUQZn;xNTOd9|{1r%9DIlsCl9gHFW%QoLjZ +;8yY+}?hi~JT@iI-nGS#g#sWQwyV37q`a_St07e)@Yb%%*>!=|Ga~?3GgDSAP5ikG$v3o$ryi?c9%f< +WUbk%_HwmAjXk%f5z{}&gmX`U;jBF);#oQG%Vf~H!ObfT)#)&%>z909(&{eqDNjgG8Ek-kJ?X5J2d-x +%|QAb5CgsPq`_W!FV%-WPk80YK`i8sP%8J5pKXJ99~&m-YRzd8*s%W_JYGtv9N?+9=0UV +}iu>wOKfX9d_Yc5vX9CC3FZ+GB>?ZU2lSZ> +w;S3UN^u6kcxz*X-bgI)ESFYK!K>;PB2KMZiy`;VXCs(07Fb=51=UG<#0t6rh*sy9t{)w@D>)tjKZ>W +#q`JVm`N#HXkuLXaBUYtDN2T=XN(dUxzQ&sp!0^PTnP14Q)I0nU0msk2_izj4;v7I)U$d~T4lUitqw& +U$Bmg0tR%xU=5q0nU0a=+1iNf9b6E#N+|adQYDFsm^-$e9u{Lrsk|S?I$_wO~tNgLm!=ZzPH}v=;j?A +68F}dPQCTU$G!FNSD>l4-V2Q8t+yV%^(Ikoy?>qWt*7z0f8(jQcbMj>cm2Qj)QcnNr+e!C6TnS<^1PV +r>5ZnI@2RIdt^I(*9(v6DA9K|k`j-K&dQY4i?5c+~{d8A7I!{&VXZw9uz2BYtpStSN;(p9kFAnhUUG? +_S-q7|0apBh8^myG(Z&}<;Z_fZXJ%qb}o8C0)riTC*cGDX&z)kO>|Gk^usKDV(7g0C8Aw8|)VdlsE^m +Od~4;}RaKiN@l(NNt{Pa}+kqaLE--#hBv((kCZ^m~qaj`=m>3?}ZW_wE1QQxE6i|3y!|-<|srPd&2x0 +-ky(`TdZm-pKFbeC2#kJ*;Q2r=EOX;Xmf7hhBHoQ;$05#Xa@ViI#fmHD5ZwQx9X&Q?K#-miBwyXds0 +P1iOAv#6Hh=@0a(Zei)q3oW0+{!~zax(tQr*KKMHfe;>nN9>lvFb??2!i}l@7$r+QKR*xI>26FKjKkHUH>cOs)Q@Lm#>YvgVNX7&tODA50B@ZosPkbCG+ +o4dmA$(H}tG}Zh5JJE)Sd_>a%L!bpF=^E`lI$U)Eju;@Q9HO=|!I@N9kUMp45QO`MSDVF8L +8En%-;X{|qa8i?M=dpr4as?2s%TS2klz1F)L_;s)tWq51w1ZSw2?a@o&NaTN23!;pmqfe{hwL7q>!IIG)7rA{GZW4 +1l_sd~vqZu!%*=PxWYE2IZH(H;4_Su)wVqV;50pR?1U&oA1S%yZd;|8H8c;6U$tWM)th+8D|EU%6$wW +E^;DYc$pfSkdpy4I{_v!Jh2gI*MFdMOeb{Yf|!4tq;&S5x3?0BsInL@vy+DZ$6Tfe7xU{oG3?`~G#q^ +TQ5T@Zk(h_vJ1jf7(emF`DKYKnL)Lgrh!2U26#jdhxEjwPqL8ji4_2TL6ud@E4)VAs%9326__79>`Qq +?3W{RD%Jsd2Lezjl>!Z?KzWF_%}%Ta`FUpj!sId5rp-xMtTF_ddNxMoViXkAxH%aSrld4JMg!Q_*Oet +28e0PGP|P3b4K1%GVPw!strNH7# +!MN7jG%bHArm +?)P_KJY=Qzdk)=F9c%9sGUW()r5C456n|R|I%W$M?CMOzU+_Q&M!bwXG^G%&x@*5|P{}!z)_8zyP@^> +LMTKu?3vl49L)y-;8)ERHHjg$bFzQ-}qBAr&ceL9@4!j5z9-f1nbiXo7Yb*s7gu4&tOnu$gP~;KRe}r +$EGW`cQe>2L5FO|SdIS|DI`vJw=`y$;0gJSMDFhvsDf`4by>DVawO(ke1a5?wVEWAAmP}bH|-vOOsi| +u2eG{Zc5Z0!lTj)kQgJtq&sz^TqQv6&U?+RRWwZB%Z7wzbT~+jkjq``Q18y*B}fx_JM`hf7vP!PLYnS +H+|7Sngvv76BCkLs9UIP!>hGTy{}Q0bMb1#q`suX=!R%S!sE6si5Xj=8dYXI_PjjpHC(<^dQ&wE~Wl5Vvb#9#s2_{yhjdpgQn~JJXLxneaCEA79ku +Z=P-@_Gp)Fdp|FRe9qXSk=%ih+I9sIu78`1qn$Y*;)cJ_wUrNh{01N#RmENwV%K!HnnONy(P*!(t=Km +4W$=?xjCL;&(yobZ{^I8f)w=tkc#gO)%PdwGMj_qE)M7gz2_=a7TPLSVoLj<1))5(~=PFky+*z>rc+Q +YOC-G2NTR{u^_>-)BO3TRq&{iJkTO$QHSM;9%lZ0Yg73Bz(uRIq1{@vW*g!y1md0Hmdw9YTD17`LPN; +@`VyLRbq|~=pq_nQij{2rvKY$a!Y6G9;yIi3r?F?&%E`_4b?`ltZ&*{XU1qP#Lfdz^wj=oiP*S)8Ih7 +x?Jib9l6Go>byu54wvdR9XqVAWUsdWqlmi0FScF+f*+=+qwWZdLjVdB0d7UG0W!u+bpqFYF>pDF@_@QEc15LTVFKgBmi6p~hJyvH)gxz1S!XY*cBrh8MYK6tHH$Jjcp73V4%{ZlL&?Nwv%)UsgfWHfc`wxt0N;(P +=fg+Wk!97uy;0a)0w_hGS_Oxy!782!$n#ne)^?!mqYX#gIWPm)^^4ZxkOE8(1I(K(kG$BFIwmnXYm<8qR9gr~BU=qj#euO8>eLuOqp((ob9)9lg +CfQPW&xRlB{TdVk6`%$U^h+p^W*OLs5^AM30$jzt2L(sobC5IgH9{Xv*ZKJl|P53AeO@LSyTchgL)}s +DmGNFm|+*;Ds`CpPMOmaSIWwYBc!oxpL*WUVCJqNz#hFSR$tioW)B?Pj;xEn|o;}CiL&iw|dphQ5xk#bfP>2{WkE=g89Wk +`jQn+au{QzW(o +bKE}SJ_6^Rbr#vEVuIVO%T&Ie~#Z3=kQy)Ui{XG-{a!IK```k6nu#st$)3vf~E3b? +5=dMGOI9<{tW}0iDOWfK}mnhPbbcq^!T_T*JOMFOtUgqllcne9B`1*QDlL&ILc4tTLak~k +_=W0*+O~h1&1 +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 +eCZ_{2co;s7VEtryA#{?M0q(@q`GgJ;q1P>L +fQmj~458SjJX%uL}Wan2={X5|S!UJF{4oSj|rvBUgU)xGMw&MEoWvD#Xa +?p$2mqRywJYe^}@ag(b!pmN+U6h;qL!ALCBF}ou~#C>*=1vVAHSpyo+ND9zmY)2BlRO0v~@kKclBj)p +MGDBij()H5GDMD3r-nx1oPNh9>8Pdk@r1le2TS~Wl@QzILwf57TGo_QDsvmq8y~tz-L@&4x#p;_WWHB +iAMj8897C~+8zQx(0T3tS(b{KUjBUHnZhFT9c7iaWH0gcY|TN^yC25ssx+7vj|+UGs7N~M~7ueBdpM_ +qC8ZyCiLjjbj-Olr%RZnBegQNG|&vU$x=jue;l&i9zDs@cI`e~l&BB%@5 +uo1J{k@L}N#4Cc9i ++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 +48T)$H4*=umJ{%B?X9G8 +)A9rM^RnZxS^+UM|Hul>*8D_}$uGeOb`otiNf3!aKLK#_|jN8~K4tGyZ0N0k-_|MNJ{yLJDu7SSFE1V +=YH%i*+d~>G}T+{L@6LdNy5P-e2Y@=?yif)Z(r9`>>EZ)^{G|rk636+H;=lk6y4)aAV`?*5@N&gOnx+ +%rfkF=Fa`Sj~)Lso=%S3%VmicXAr4o*!qAef13W^;g|Y3Wr*@lms3~Lt!sxU(>%csy+uDdNsKvY>3Un +)O5AX3d(_y~&)wsP5E2if&T_=Nu^xUJyZX8Nbkpf~B85;=EVzY#HFo`VrlscvrBH;$+k-3q|(neL{!*MeOibIy +GJIM>2!S6lYj|p<}qja2=Ul$UObIPDnV@$?Qtz{Lgg6e~e|2IRkPSnU9j$hfJ&-dXWj;zcZPMqHP$&I +F0caw55o?U+ER1nK%8ZspRTQR|#YrPcc#2GX(9;vHNqp%ReQq`afO#{|7v`*6F1GZ4Pj#`@7qx9tSwo{W;#{UmXYhyMKR1KmOX#pZ%M?-(8a|(_R1lZt +1O~yP=D?H=UKto@1U{I`8rMWeY3|%NISdc*(z>eCp|Eo_%iVvgentc;UsBt6o~YX6?(btb6sf*Vn)C= +35&!zWvUo&0Ds<``-H>e7J4NlXzA|J>YmnZ+TPpFvweq-ojTv +wMcuVqcds5jd-cBm0q;J2`}NoO`1<(=1O^3%glfaWBO-O_<0oY3Gbc{Unmi>tCpRyDs-eJWDx5Zb#-n +4#j(a%mk=y$}Hgi@{@qe2B|8)NUcKJsQh>nRJIB0NO{DTRJLmo;RIxKnkh?LZkqee^Re|!J`Bg!9lpf +#6!#Li@QmhI2j*~`hU$PJ6^>`&O)7u(sF*xCPOXMfVpzR9u9zS+(W?L$*3J+Tq*L6V||u_5%EAXX{*u +^6%?h_C~*3kDkWdYH+2V@i6qN!SP3*`uBg+QT)2-Y&>J2aKUqJ)7?+!w +XUGvAsZyMT^a5kl1Y=gAJ}EEXlrP+*cPSZ`NGYaI)DOs;p2|kBWPxo%Jn=LsDVbL?yMzQfr+Fpw=9IK +?aUqGWw6v5eK%*&1Dw$8xS?^xKNvS0yuaQufl!RRb>fR;uODGm2v2N0&Nh+1=^!)s3`T6zaxxw@oN)j +bx$^x-MNwTy2*N0*4N%~XUTxQ6BOt|+K?)_yKM)GB%Fr#EMM$81IwL8r6@C+eIwy=TQL-P8Q;*v~ezP +!exxJ8MXk4dZr;E5N~?+lwAb5AMne6c#1EpUX4J^}XtvVr73UaWQ1$?frC1*pzN!dJmj!ArqM!9mGe$ +ydr}hAnR;UnNf^AEc8mRviptPAcIrP+(j4juj|`D6n%&6|=2eu?nTQ4yRD|?}=hASr;c+;Aa1xE@+YR +Q}R*LR?<__QR3r#E^v< +E{7pkKiL|AFbo^lY`>V8}D5vvSqh>89KXlk|pAb&mouX*CEAMYybNeTLeYr_RgQ=c@J7^%G3S^zqrKj +1jr8z%P?JFLipZIz68PWl(t34s~k%?7|rI=^5%wLtYMr7SUPvu2NqXpEsUxuyvK{sV2Q)Mpo`bb*9Mt +7XJdh(P-z*3XB;Ir!ndUal=5*l-VtbIv+Q0(-48Wf}$Qi)OcoSbyBQK=zWBBNJ7D&t<87HBr3XJInJLkJduC5#eRkD90^eQ+@JZGOyy|5X2QH +=KfaV~*0VmvSR`^y=D+=%S%~nyAa}w-k3Hac*A*jnu1QqA5q8Yb;Rr))!K%$ +;wpgbMlQd?!R+BCz!*fbA3p5rvSW&&i|ytsCn>J$yGBcYBBx$@=foGnoDT2YXjH{Gt=G)3D^2 +9h6e1^Thk3318 +7D?#?@m!C1-F3*y_jIHcX0^QWcal!|MFh7?~<^6R}-5vdJ-gjsJUg|sho4VcE|FQ0O_8;R_-~WJ}|Jy +xuY)_B+{)ZdHKm9;`|B43w`F?kfUlnru{9zVob+$5&B>U~?xDs~fd{)HY*}wJZJNp-msqcThf&a|$b+ +}pV>i@%t^kbNsiL-`W4boAv$oHSk}uLGs7*>03H>{x{nzTZ26qhZ*y_T<5kOdsL3FMxX!gb@})9y0mw& +-%j$l1Ibfip$sU3*eCWC>7KPAO$&Z+5H#({Z;WEyU>^>W; +a6f#$DpxDuQxdnOI`e>seJC=q^lKSsuQ3VBA6LaMhhUe8~$-YGnKscI&1lt~%Hjd<)n3rM7)(<3UWJr +1rA460tN}BO`r&!0SsD81Ni-*TTBgVrE{f(iNITh>F_=mOlB=VmJd=-w_{>;el# +d+|QaA&%vKU#k)XPzavFPl)0_E+&*kMCr6a0MpWn|NoCe|U@XrTW%!aI3zLTXe}obWj0I9Q*aFBT@)C +&Df*Lj1yFb4j3zHe?woi|k~=6$=n7#3@0aUZ}stJxij(Ky@&DMm|bsUW1yBVn;>#^=lgoH;S}aSKddR +N90ZtWMsrnpFk5g3P}ZT#N=%)%H#IlPH_b>`thcT6ZM89gT4S2{+(l7E}@&Ao%Lu##G`UElJm22qw`D +@?kA!dvSCtQ7HDT5W3FfS?&&tiEd~ +9xEmLV?}GNn|5)YMwJC`>y%&&J8@glHX&1ZN*P54Wvf?SSmK*k3!raVDwOIBJ9nGyQv(rGDPo`K2gseM`_vh9?ld(rY6rYP>;0-z0wYn5jH +kA2zE#HWpzQyp?CKsrEdOgAGkmKP{Kn9dnx}p+cuA +}gkt52*}-zMGJHziXio15=4e3Wc%q40-ZI`>is_WeuNm&V*a{i0REHk1UQp(h?bp=N0(CZF)VHT==z- +<-b2m`{-u6YHpuS>{*i*j$1Vf|&%<35*2!1d|9JAs9)JK%gTCCg?-Zo4|`eP0)$Jlb{WO2Z0-bioltG +5!70B>@tCs;55N;s}%k)nfnMT2sRO{Cs;}F6v1MGg#;x8*#wUeGJ3@1n+2qWlC(22l94)07*^8?XC@HxS5f(-=A37# +TYNHCosi6D#s&;OL{fg6AR$#(~KE3P=?L3uD<*PJ2xz9af6E^hw8W27b5=3BjKI?|Gfxk?Gu49m9GQCg;wX}&5jrS9T-lCQQkcR9oRZm-FroZ1DoVh_ue~({Cm{BAI_q8kGl8ik5YK&y7$vX4q_j +h@;q%@4d$=Dk| +8QUw+AM-n_}=rduKc(+iI4p^4}d2TI(S``&5O4vE)8{6cMsTkW)IGiM^e1%9CR5I=C0y!X<(ie4^2w> +pg;yju?)IB-C`i)n?5elGCZOyNIm=0(+cip=-O@6!&cY7jp&vsQX9M)(7VGBXeDmEUV6|7>!v#XF^6O +a6E$OtF-{^qzfHggqR*s!0D^BkH1K|N*w{D< +P@7HZ)4R)u``g^V{J}J+!9V`U4^ +?fZWeVh4C7SF4h1D|AVWCAE>E4R8k?rAL9JRh#fVx!W-eKe5;n%aN#Y=A4ymxZ-f`;J{*_4Mfw6a$(y +O>%a7#EYP(bvpLQyVBo^pm2TlYIB~0pQZUYW-IQw{!w}D~;Ucwv*oCsVA+zGmH@VSS~>wm`Q{{H?fF) +@)PCnvK>_al(}1Uw%*9LYCqez8}N+^~_oOzaKGT#E#4a|JTV(n-V|uAcYIn>=|k%gM=M27^KLAG2o7VyjG%?Da>(**isAW}X +MoAo7HhVnV`dmKS^TdPf@aie7_jbU`RDA!i4*MWufJv&zCX^6{>IsvGiL-} +R8>{6%NKrP-(BPE;>C;X>eZ`)SMWIYr|}_)u_nYcs>O^oBfe=)jlCr`U^Tyog>xS^h7V;k_*C{BU&1! +?jqG!NMCngi8;akJ;%g{=IK@w(_@gNPM2bJ1w_*z@{&I@{CdIFy_@7byb9V82QhXi7A5HO%6n_!Lf0g +3zr1(cD{&9-`4aNVC;#X1p3l#r~UHtw%8A~GZFrTI`i;awJSVVK0S7}V!MUC*YR*WC_Vf^c%jGvpz_) +kk1zqpa{D|YeQQ2cHbUqkUDD1IWvr?f6+QT!Pce*wi`LGj~m@Gm8JcU3?NglBg-?ldysNz&13a_ +-;5qgW{|2VLXE3kEQsJQv7Er{uYY=xm|qLk|nWr)MmS~#mt+UZ6G^DoPUwUG2Uu4<39O}51q&O)a8sX +d7JT#`xrm+tzCRI#Sf(T2^4=k#h*^`7g78*6#pHHzn$XmrTCQRl2a7_dy0S27QYXr@F1m-MJYT^DXgU +wc2f#xD20oyIQz|qv&%y{yE2utt4lb$wvn^zN4PD1M~dH<;zv^aVHAG?#V@4z^C|vPivKdj-$e0uQv5 +>{{}jcqwu`TlOQ0>q??~~xQv9A2zYoQap!g#x{#1&;kmA2g@pn-C6L#_IKWWlq?-U(9AZkFASl?#}5A +^Qg)va64K{ns00r7EhF){Jck&#g`X?=V5>ea(*(4g*03NdlyP5*IZiHS+`z8?Vw4N}Yg@rlu~@sX5#Y +;;uQfT*-S2+*TPx302(T%s;2J}NpUn&Jbmeto>XBhu=Sj8BYLo`D@b+okpEC#B%kt*g5GAjGHi5Osu4dr2EI}7Z_~Q +-gEDFf40tkOTY^#Y5?Ls23m&#Q^{4*u=Q__{7-6F7*PCf3F +8b`U4VU;$stI5(nPbp{*PM{`dFpo4};>qeT`fLwkeeIIQi6>(y0e4-#i=79n73J&X?xKlIO +H50QiRa}g1rW=3^Pj8x|z6%?THYwD!BCyqR$ +2M{m&`$tFD`KP4~hvS18=+Zsc7P&LK}Fq`1(&`18>eNifi +0UB2SYbQSr~nbH$B7qq1BHi)apMMCa+R}<^nT>JT|e8uD-Co(G|*AITs(mW +x*0UkJwXHA%d8dO#C-U6Hk9vUQ~6Q0gr8y?`S&z_U$l!)17Z@*=<{i?UEGJ_2U2_;#gC`>V<`SqivKv +pUqSKTruh3Qe%(0tUpeK!a?1a$a!Loe59rXLgIM}+FSL#wJbU!--yfHCbWnHb;Mt+;16@2?w!Dw{tbM +oMJ$m%&(Z7|4`~5BGy+haTy?RmDRvumYd-wNdow_~HyMO0q{aaChmMvP`*Qsld-u;_5>wTZ>pjP*Opu +bAx)|=woe^1L69X#7T(7(A#)vT$Di`)I~?j4+)bavww-KkBl?%w_Td*f0>%KrgxZ!d4}uHJ&aPV_(r)wQdn=_qz*EDVcqPBPqX +q1wSN48mihL>Fm&2-k5vB7&&z*w5a@qipGDVh1jAuKyd)-&v*yzSu(1wo8{TC{zGGk?YyCX;bQ1#Bsb +-QsT%N>M6uF45h^XsmDo9*X=IDqg*jOg8kJmzW8D)jXNJ)xNzZzUw--JM;d$1{`~XL-;??6<;#~Z(7g +2AsZ*ym?%liB;^5%m9TpbWU#7`ZP6u03P!4~k{7}~znD6P?vuAfQQC2PQGOp*CF=HYF=^=Z^FTecq37 +SXq9XodLAAkIj(|F2{9Xo~vD*o-a-*TFNbNCYtoW|L&tyXIl(R${y&pvyhva+&xz<>dMOsXer!D+{&E +i%9b_1a7Z*p)3o*m~0$VRLeF{Ay}y{$S_^?;ij5RNjZE4f-REprD|hz>n|}_<#KI$Natb-s6NHfA`&Y +1>WC(|2_ZVhadRi!-x5iBS%Cy#3300?&m1ZiyJp?oV9i9)>$O7#hT6Lhw}6DV-_u1ltgkhaKrW>?{@9 +l`IVKGjrR5RMcH}A#KiPQx_=e_OP4Njl4X{3@7_It%5c$7KmEijDk^N{eCW_2{?%7s2|THO1n#h(K7E +>>Jb6;QgC+$?<`E|G+~r??{k4Yp?mDGu{o{{6_;0`ccIk^RzIgAu@4ow%^16m_MCX&#-U0}RMTq-X@h +5o-dD#H?D*zf4K%FQ6{1rMBy8;bqQGjr^0oAz;?A-x>2mf8Wb}giO>_$8>7c}hLxl`Z|{y1^sgs6ivX +U>Rs;D|OsZCIE`j~*3(wt@P9iF!lZL7Y!M`9$E4I;8f`Q4cq7-sJWVypa{TylVFwN91Hf-+C#WOfw&fSj^(Q! +wJjl8Ke$M-UgnNWJ?^nV3u#Y)^?R(CDzjEa$wUthP1^?~aw=ePX@(Lgsei8MTs1HE{@I{%UTtN@&0=U +DDy8q^zZv?=OGDmp>U+@8F0p2Ko)bUH_IgdHUx$ZO0wTCzlI>5Q#KB8ea=MNAKJ-2b*?S0M{o#MQLBnF&V7l7+%Gx5Qp}1O7+9OLI1X&_jg(gC`{#27JzW1mPM=Gz1Xe>qOymlq>22dpMmeuE))~(0#EW8&W8{U@x=cFzm#Y +QKg@Z^rxFbsY72dKa^8E#U&o*N;w3$L^a!AOScG(}{__g3(=GvoQPsgeAdJe@#d^beem_>S|Tr# +Vjq4PVLanRq5lY0vwm_KZHM=XR+*_x(_6)70Z0xE=mf&kOzi{ku_rJ{S0dPa4tzz6W17q(h+vybeD4_ +P{3o%Cs=P+7!-TD2Na=;2BrN`6!u&q;EM-Ae;t&W!IiTgWR6`p--YdwFmV{U5SP+?@E0uJ+m9bzgxF% +HvXqE9^?Ei^?~+_@j$5yv$F%%4qG2 +u3u*xXmUvPo*N2-YiE9a@-OYIqbQvAuf_6!=7_6!=7_KZHM_Xi@Gs}1o-JHz-wa+VE1g8~idXsnGWwB +XrV9Kzq88Oq;$RLftTPBavT^WQK2#J~JQq9KiF81p01VAr1G<@OwPRO*w0Kb6L3rBCWbG<5%<(SAwbP +xAf3fPjE*B%{m){^%EBf@eSjWFCbUxM8eSMhlYmsL|rI=_6od#8*o=>LEn%59`hRXn;5Gww&B@6Cz!uSG;A&k`lKZ}QGDT)0epT|G&fI-=EWH?++rHdzxnd8put|o=qJks!4Sx8AbY5u=;vdc?8mKM2Lo~c4w`cT8t4tAmg +&~4JmmkTW%GL2FvZJ_#XqZPd%pn?P5e;}6$`}tHZM^>h{=^G{|B0{Xf|hyn=JECG*9&^?h7N@m#I+uI +hwq#l#4Ct~4~PcQo{0wZNlJTONqy3CLnMDTU&o&$8Ws@^3y6kN;-lGman+~jlcMZojCZOV@Be|n!v9* +WwkL1^e)H$gx6#m$jyutE<3=q%Q@MF14Ttef(Cp3`m;KLi8j@6j@8)nw9#-UI_^{_c+e+pD!PmIOf)po&)n{5k8)bPcyT55oxE4CU +OX)=jjvt1mSbElC@A1YqmeIMxKOm~ufP6U^gED+8lwexV{AZQ1z8C4DCPrr(4G&yY~rB#zN$=+Y-Y+dj4`x9Pv>7@VPR#7iHW +npKg8=xXx<;NdGqG=)P_0v@#)j2b7~VD?+-rsppX$h`sgFU55OI`qK*{4QtAWrf%h=afn0~WKzl%&7V +Vkp!M;7e+Mqoj*!m*mz~}FVc|t-$o?5zesaOX=-f~;!B_$<1B_)M-@7|r?fB*fQWNU#7@Ic$J2hgBEL +s|gfDJ5<6t)H$K&p#~H(fBOM7#N>lpB2rwJ~@$}{A3Hi^84>cslM-e{o%Rip5t@p&b_o`$r3(i&Ya&z +j~>mlv$I9H)4Wpf5@$Ql+j;Z|3PGGyDRh +a^S^!UvBz!#&(zdZ0cg_-4G%o<0G~E(ny3ei8Oqv@LI>~#{>qv!<_0j)9?(Y69vZfHjM?^c56qw0UtE +7f+XDX+FRhwAd-msOr}6ReeCEuVq8>m4@E03SJWq;N+afCdFXgEH^MTnzFx_#Sw|1P_5Wd)|Ufh4 +9pu{L9PBD{#}MO;2DB@pteCZvwzeSZ{_K@WPt2$z&4kH#$0+>vTHauU|h=5Aa8vhIBN>TT0tdOz;u<1 +Mn64W7M6pzCk!a-FCP73xPk;y)ZB^up5=(T(swH+qMZBP(D~Ur1l|bNKa4a2?+^;x7Ms#Bk)IAqs(Ck +-e?Etf8Y+;6#N5O8|?sX0Br*4q7NqAZ&EsQJv}{jRPQhC-n|=FkV5CFDVAS8=!DugL#Y-g7~N(l0hf2g)0L5RKhpo&cW0Slh^&zQ7-KqsS1@>wxdUODJ=+q35uf|F4&O +J^bzYAALl_F}5KsFtNrycI;UG?6c1b{z~w5*w%kQ1 +IA9sFX;ck2N;hqcA|_i=S10~9+dT6)C1np=cBJhKSpy3q1Paq|7qL>{@~p^@%ioe-M%k^zp`$Dat4jy +b>gF&BqLahX(1}YbO^Mmmr$kO{F$ngZ_+U&flrOt)hPEJoQT_NIrjwWZTIk1LGS8AA)WqZ(NvoPSTTME +fjh_t-O}|`6bQ|{mOadZjt{lcgVjp_2H{2&l-Duy0X_qSwEL${+k4ssLwr0{pR~f7&=qv8=>cdeg$jd +Sd0DQGUtbXyDMF97xdF}=FCZd>ZzwvfCFSF%pWj5qF={YguWWGEaVjU!H#E)wN76M9S`)KSks1n2W#@ +svHe;8m;=xpG?(TJla={B=DElhax}_Bne#wyvVWj28~vlC?}M&v)5XS?F6uoO8t{Y2-+u2y!#xiu6O3 +O!e}96%Vonk3n2Y2!!0|tGp7xWZH%&e(>3x;`1NQs~{SfqwVPt+$pC`LuOriN}I?1^y_WLkU|B!)!3& +x)hmga~xFsuh-Or!T^n>f;791FpzDO5aMULv>OLiZjN>%l&z&`E)?|Bqw<6ENg +lzq0QM6b~#Ck5)5$*Gb?iKpu)CT;hlXW!E^+Cr3e)QfZ^$$w^kbmrTr49A(zy;3+SwFG5P+E_@eBmcP +``7w7fFDyD@MEN`Gxd}Cv4NgW{O56*Fec$Sp1|o@}ps1rAs@L0RCz`Z{z?Z^-&S=$Wt{3Vwu+3AzoltY4ZrL4s%IWChlMOjcG_mcD%X@) +Wd1%=aOmgKpr0GJyHn>MWr*guV*vs;|py+b_!c1+)q1N1!V#(Z|@z0FQki4c)Ch|D$a^`sky%)c;Rb^ +aGd|U~Y#pLEnS2xNQB3fBa;U&=X*NdV{>azQ(RiK+j~6^<>2|4tNAVQodsePF=0v{+0O|+970qdp(Q2 +?hfVjXF8*!JKqvI7U=5c5)MVOuF>wfrT;_z7K;DNG0e*`}~(BHoKXkD9 +Vj34cIt|AQA$9^ggfZLf3s?oVA>`w +V(Ou;$_)^t(Em|sy_w5_E#)P*T^gSz-=NfN(!?sI2$gop +rfd$C~y4u@q0BI4WBY)idY9;v}lo7yHMsnD07%7e`RkY%A?_!j0b5_xX*~U?kNBD?b~+*wR7wZaF{xEswj8#2a1kF;Q?h +0S>Xp7Cu*~^vnLWS7m$pE54$nv|Fbz&7nBv1{o+ZJChdWa2W#{rMvUO73+UHqT(;>8Q0@vJDtkl}lg6 +q)s5~E|v|gn7`Oi%HWaH1CF3K7|(tvD-^2S;&co1vp&}*Q5*y|Bc2j~|N54fN#&~Ky91fDx~?0ACRos +L4Z|Ah+|rmtGHDn*%dqn?4o#EBERx3@PRGGvIrO-zES!M>`Q$6?YD6xX4|{STjY;C(f^pu= +E+D8Yw{TL(dR(7FmBv9p<_n7Kv+B|17(dD@-lQPklTrd<$ob>TmB8#u{C64c5OZVj>zgzONj@pCXs)!B@Pe)tb8_Gg{ztyA7R3n}=Mv4qp1&-mfw?& +5UYPq~-iLW-FwHw5!$772-srdRU=9O$@tvoqiZtw>>g&>)4%QJcXG8g+o-hU}dr&`^7c1l~$a|3WAZt +R_#e8G^@-mSI<{X0w57ghNQKN*O8+{nc;q>lRd`n5Vm`_4>hun^N1LjV%^n*km$=`Cmj>_fv=bsnyAo +hqruZFq=zciG^4_9swa{sIeHklj5ZbtdhxFGs1=;W|}Kp9K%Y%Gf4Kb<}*$`f;_(kzj`?M55$9{PIlD +e7|AuwkN1(NCi;zuEZ`e|yd#vHx?$^auIJ@4tfho0a(6w{I7+nzA1U{WfGS)Cc-gdt6}0SZ>e%2(Q$? +vL^{?VVp$%7>_VdK-%b+Y3whykB@#Dcq1K@1$0HA31c?alMom4Y>eHzckiwj7f+Gv`X~O;6zvPhV#}O8O~|N$pJWR&57YuSG?h@HD{*LNWBwIT62*@s>L~LP2`Yjamt +!23rjC3(C3WLo}r$elbu@--pypl4K0{3NuQHm&^IS*f+4RUFVom}LS9a2dO=RVLZ5Exob=qROnredMQ +VDq&1j +ujWz5h4ltLVdP68^7V*(hK5p3-hMv4c*kHtf&dNU?RL*W_oskzFS0C|Jy{a%e?>Xa}VoZ57)5%Hlpc0 +tiMv85lK-=Q86)bLk5i;DO>*g{?EN*5XOfm%`{P((V9m!<(f^J?V4kn*L<4!cK1#69q*g#`?&8@zOVW +2_5H^8cVADx&VG@8!~LfEE%IC8_qyL+zr%h%`2Fm6)z8WQ9{+a!_xlI=hxtF|zrz1R|9bw%cMg*Dzw*)!_wF`PJ=+mH|g8m4a790?w4M_}nE99Gyb0L>Pd_#jnhlQqx=7v5Rx* +&8(=*rObq3?x$9eN@3M(91-PTB!llXkAQT)RNnt5rPlmk}_F35XVO_%`!v7VX9bt@E81YKP&4?b6K9SIPV1s +6uCPy+ +9m@=GW7&uir?&Km1zwck$2kFY=%7zuNzG|Be1T{4e>lfVKex111E#74UU{b6~5$c7aiW6N%bq15X8h7 +g!S*859>}3|dIFbTH^;3dJ!f?p2)I{1g+--5kE{6lmhqe31HF^9YsvX!X+IAm?;zR;tg +S3+a83$;&bS7_hT?$Lg(J)ym!bq?zs<`WharVC3Bn-;b;ta-RM(fxD;6Ur*wr{Jb(t$9ZCg619Kz)`+ +)d>8qx_0#%i`~Mp7O5nyoJz-NFR1@@R@Rz~ULNS +?Ke$&+|TOd^Y%O@!9UPo9gYD&v!mQ`&{z5;nT&}-*>d{GT)WHANwBmJ?4Af*V*p@zctjNj`%h8Z{hhZZP5%}F-2?6q@CgVEhzN+Lc9#^88ju+ +cLB{9Le8$h{!}A%j9jhh&GW4>=IBDr{F+ZCLm4=H`uq9&h4{t!P4_GEo9 +Fkb-)DYqM3JX|XMZozLpw~rgeHgSS=s?i1pl_+?xIo-DKF?CEBvXrd!?%~;Q0mcM@!RM(#lK}hpMYTjTLKOSTn=yxaSDA(`=!2DBOu=_MUH5rHJ{^6!`}FqdBzMJ2I<_iid9-Ur*mo)VBY +>_Rg5KsVEG?DFn@spLxn;+bO_j?NQDj+I&_E-uwaD_9sJTx`Wx>11I{_z``qW{aNyk6x+Bc=g_<4xL*Eu!vSz{LOx_fvT} +q~GKANuSnZDUJyJGI|bHC@Fc`v*_-j(+-vy%Cic|TvWyYeJX>`xo>i{cs=x2QoM2xABA-Ms7jdR{-!k +M&bw^ppOgzshXC^n|%%?io)AePo`PSLrwDyY8Cz)_do*ywBdtOyv490WB2WWJ(4w?*^#}lS2pU${e*PXj6dtAeHq~NW{(Tb@{nUeD#!)3U^Qq5onR0QgR$tx>x`+ +CN~?leR87@Whw4OKs;HB6Af%R^iqnvp_r&=Tozz)f(GBrN_xk$xiAZ96La$<~;#S?7Fx7N7+)cM7ZPj +)=ZrAO(eRpVw{>VS~FT`zEegsj(5XU4E;?HR$h3^z*p^!!f5JxWvTX|`!B1$Nuf+}jLV-e4>gk?0af> +o@ei7m9zK^Hyrv5g(B58xBvhEegOa*0001RX>c!Jc4cm4Z*nhWX>)XJX<{#QHZ(3}cxB|h33wD$7BE_!PA8p +>>Ih8&h(u@LQqL3kcBni7C< +E^OEm==T#^n;>Obe+>Q2~Z=6mmZ@B7~O_()aV{oZrWJ@=e*&$%7Abp>bUI4&9fbe-esIQGxY{r7({_! +~5;eh~M5+NN{sO#V&hPMdRYW#0UX2k)u4^ZvZDJ0E!9K`HO9yYnjK2lDQHAkTCCjd}M!IQ#C4v$E11M +jhw={k0eG*4K8$|GM9q(KQ?1kKXlQ*CX`(K$n%iZ|#}~?|HwwxoZ~9yRNI4#@}b;zukD>Lf^l>w`>m9 +cc#9VcsXwNZ&SFU{lC6B9@oW<<}#AfIc_rq-e7U1qcM`{0@WJ)JxlR)W;!FEY08e*yyioj +gYWRdtZepg1n}{FtP25W*@SbJjtmy+Xw41ou*n#gj?(F|MGXws0a$IfFnUgP;?p`Fpd)h{$Lpb*26Z7 +OjZ!WHweW!FM$9;1dtCRZ`{B1iipBw&P%(8Jcg;)?eJOtiW)5-Z7E}qXa(lNqVxlDMUeM&y}#TAtmW$ +;a50VqOcPb8LC2 +Aeq1xmFC-I0_)fPuABXTz%omxt{POT@3pj1!BnK$W!fr4r)~fvv}?jvogkcG{*iophHB(bE@e47QA$;W% +P`}Bw}A2NH2j%n>8ksO60X%fi{XkS^IcSjR#$A<0XilN1hyy?O;VY+aWaI;7bLc4B1iTcBqeCQP8b8-opyW`ivJQxUbjPuE2Pd0>o5&TXoD2tp}Ppym%|AO5l~A^gcP$QINEUO +eV?HjppXVMA~XSZuMwB#YUeTkW~}sKXbnaOW1FTyB#e@D@J~n7?~g+-pmmXa +D%9c1RnKP4W4Zi3=z)5NmE-c4bYa8!OAc25fMe-zb-dAPe2ib>FrOVnVF|4bI-#{HXzjZ2jC?)d`nqB +`ztWNc$>lp8GfSpJUKS7N26X;2+pKK7xmr!DyGTV^{XnHT?B^|*AIa9X>;9H5M@SblF!Aco^l>mOZ5x +ruzy`Y1bo*Z*6QD_U^Eyb_#-I1>KDkY+lR4Ct(Zw +>nOV +bx8uh(#w@Y-tYY3%Pkk1xQ}s3I@^5Y3lCYR+pk@ZjTLL-O&n>LGa%Eq@F^+>lEm<1j*=u?ilNJHYPPH +xY2r%Mw{Vo3Vbr%q2d?3ddU4j2WQx;$h@`HL%ABgAEQzlwN|(|_JtDeVE56svfaFjtY+6{$rjab&gkAogefdcCfDcjJW3^&e`Bo+H}~-edJiUB&qzzw?uMW?AhuM3m6Mw9}SCoo8K +IX$Ml^P13_PShBXz?OC6O&*PcT)urTK4p9UzYPH4>!NK@zsQeNN>XI-fx+<{AfdBCcqTX +1%^sCNNEZ=^I_oq7yE2mC89=SS60{z!CXJ)dskC1+ssoM)_ +7N}4IOS-(&O-uOCkEU2ryBrrIqHsFpl#exg!w)2>1>FCu)xtg+h`u?D+rW(iY{cK&1%;Wwim!^D8a>_ +rT&rDk&9G+4dlF79<3^gY5_W#93xnHYUVJGTd~5~pp61H$_s>v@d6)bV}=+4w1QHk7TnlMag&<``&I# +Nr?A6q+~~d$Su`JM0On65+hH8CUCn{ER%274T=m5qSe#9oL#V5wjZ(I4A5!*^8F4-t+D=vXVlLbf^KN +U}sHK&=8l`MeiNLZkAwK;85puFfB2CT)*jHgIy@IyuClQfky?u^}!=1Hr9bG3m>Ys8bKy>@R*HH?5HH +4uxR(rh9uphW7JL*=Oav1=j@Q5OaknHNT9Ev|uhI%b_&F^rBtjIpb>o|!=#i1*`oeLMQp*wr9P2|13& +^0@B4Pla}P8kKe<~ca4UxR$MO2@A;!?4|~E+C+=_uvr5uEUrv?8!w%mIoasP8x)hFntswCEDw1{ZO1p +oI&-i#HUD_wX@U-kW2k*A`F>YcoAeLt*nz+@-$w7;$bttTA7FQGRZxYK|=^77 +N9)c|D3?Nft$P%~+$I~D?!X*HX4WW@UF!5@ZSYRZk)(uC@TR{1Z)nN!^N=p(TlJ3(Ruy +&u`CVvd|(J7+qcJNq^t19k9u~D+9{~S%By*%GUS+D2^z+M`-fYTSwvSC+U+bgaDAU&0W-yI7tMfyu8_mp7UYPo)yZZK6JQW)skWcpE#E-XTi{D-oOehm%WO +n<$ar#CU|Ty*dfIu)gAQ=#GVUr*+{4eEn~rRQ~z_ed>vx)S;+zEOM8T0;q0JBQU7YY!+W%k;_Bd(V>` +#4eDcC8fjYrz^u%|YzgKj;?rB@pM5Dgj``T$@Bl1gdmz{?pRcNe6BJJ#97o$l2#`4Ee#h-Iflzw*hJrB9b^e$wpRhVn%2g-novj4uwz7+d(X4oQ!|d<||@N=%pL!m7$wqYHGDCAX;JMJ& +3Mb_=QM`9duPh^TM!>CLdkQi$M=IR~c_@*IlpLfVZ0&q@INm2oh2qtC)wL~bT}Ib>0;&&?C_zXte&fZ +6kNbR3JbX$O3yB|02J{e19z*dZ6?`a`qw*beCCbX1N5t^sz- +07`?6BJljG8)3-MpN*pg#voe#AvcUe%)1d+1JWQA-MXRr`2L=&9-zh;6Sx^=vknXPLhMP&Whev($VMtrQ9)^o>I +4jg&5L{qur*%}j0Hws3c~;_1&WL77&p&yfTfkv#5z^s{lNOVQOGLrkce*QKS6;7AZFoLLIS@s!mr#gCKBJI&n#ydBp){BT=hOaF~*)jY(8#toWX`g+sKW%J&mZol+*Jot)w|R3ciU8K>gilkehzUpKI%GG)of!@qEy +m#Fo~8fbRBKtyM4qWU@_5uPRKJlk{~W>}4)<#bJQ+2(m8P4&AERw&<|Bc2K;R(OUuax*JV=&08Gnp`7 +YG6ny~#`H$EFi{qn6QroWPI9Ibg2HPiFM00Dr6D_n8k& +44TlXFqIt4&7b%@h2p +36C7sm;TsCIQC^>#dX$drIn!{ltd!#v13X1}q@Ex+*I%Vb^5Q3DbtFm&I_g1Ky=V&)Di-1yPJ|HMk#x +XPXyi$SDUTH!xJd~ee^2Cnujb$Q^(<6ldfL&Gt$tqahy_?% +dwd%IBDDiZ~zJq81NAF-Hb#(u7*z_ErF}5~BaC*iiGsSot*G#@ +q;J=CkV3&`llZi)X#t$T}Re;%STeb|PyxRH&|l_E)Hn45si*Uo`>~ifpJL%2- +8t@Rxu$QD67aZ!6TMzB1X!OQrZM$g4i(Hlk4Bryk)A1-!Z_iwYU3Fk^dpNe<+*A$SsQRABw4l)ieN@)Q=@zRG) +>0ug%an;qx4CsxA$Bkm#R!k1lu8WKfDu4_o2tFdaZK)oHcL235L-NsLMoVpWG7-$0aYL2*Ek?bZ)C7~ +fG6 +zc@Dm)I7lo@j<9|LGi-Ut_@1xZ7pz19%Le7x4BRB*hNjzZT1g@Bk5xFc0tA%e1L<^^Vfii=F`?>1RN6 +vQB5Bp_XJMJ@wb)s}YkFpLo7ESZo9hcz=HdCxK>pkvAP-psL=t_qoDUv?N_ +=I%5q+Vlt%1;FU^ALsSMW+TGRc$;*4GencA$pY1z)4H~(%dGebQ%i14 +_Ll`HNXKEsIG_1TKUs$dCrm$B0B}+j$PO&6(qzMtti+A9NJj-!6sDaE5FyWb$m={5$ZvTyPjWf873C} +d!RvY}5nyZ$6{*AouLYSpuzwMoE2lD7+Y79qxqMS4OPAn>Ywj^=oZ{l-VTg;1!q=GIF$vIj(F2eTm|FzBJ>K<-59$~rL{B&a +KQm3D(tG35hot+2{4IRVR%|MoAx+WSq^p!@u5`W~nX +w0K1GBrfhLXm(yGw+G2=Kk{2lZ`;>jhlr2eo{r9Qbe5gpi3n~#ZbgfK@PLr-zqJyM~(By^Kc8=1U!Uu +-~j`Xx}4Y2lp1+5Iyia^Sz{%ukRkDq +SBH6V#L>_d^=iz^V^G=&UnS-2YU4@OsK|1)rc|S5wNs%;k!!m=7*wDTxZ~RkQ*NJIzu5cpcqca5mGS8 +)s?PL6-Yz7ORn^vOkLrvSe%dkmW9#CDq7MavkeNI%{kYWV4;n6;F|q4<4lFgMJieHv*djD-{n~@IXs# +^0NxILl)g~w*?k7ki(Fi8}gp*3CSQi$od&-R{ab-^XLzbfb=hH`aq4) +O>nd)%0HlZTLF|8750KqI3`4!o#4b)M7lAA7cIPVc^d5IER|PZX4^KI+#B2*~;p=T`<`5<}zfH$(zXc +1DAwQxl^S!S7$;c_gP(zjc6V@SRiliNq{sc*yMMP}VTcQuaAXk;*vUqV2R?VsWWJ#Km9CypIZ1v`^bI}I!} +uxPzHFfUIC93HmK=MWPlkT>d{!WNh1GO{&a40~;2IACMPb+~!!_8=X}KT(px-5p383YKc-znB*G3gaL +TsG}QeorSDI0e+R@=|2RV#r&i+xNbO8!( +CK_D|p9=m13B-tZQk9a~VBGnJz{Fi0EJH{4i57zZypH>$tvhsg>*>pqZ#^* +OLx3t`cuK8uP=`zQZ4;t)fC5fb&WQ{Q6xzf)xukPf1NAoZyxfcJJEva~+}fAkhg6dU}=UIA;n3Bh%)A +6XiIXd3K(?I(*{be=_6e6yHo#_hUs&QU1R18%Rg4M30Q&FaE_C5Jzpwe>I(cpus73A?SXbSYnN@R{3{ +*!YSc!@?mYmc1~gE(^Jj>WBvl)=?p<7lfc|8k)pE3&ayiHu%2VCemq@(|{rS?ng!d8*J=69MfF`(p%! +`Luk68x8APi49N3hB2Oq+?QnqMw09e{7cQ{^Ug`GVzrkQVUMb$0fvnmv6dNNcbXjablJjnh8SB(u!$1lPoFLD|=MDC^ +3*N%P?qqdBRbhMTTa-q^dN3lB$p%2&6VGd4&R3!&w?Vhx^EzE4RHTVsgCd6UedQqhX8F~$B1U;hhdL; +Q?PBL34MVwfDhuCdy!%9EK!Ghrw~Baf=UQJmz8|3UtZutV=#f|3H=l)Cr0r5JKx;L8tIZQBM{LExzlISP_~|*`Id4)q;RgVl`X~Sgnz|LjUt +R&>?{RG5kxdBFaPeArX@gET0Hyd2Y!1zevTnk#y5mikAUy681_ +ILXAgZtTT4KT$CZH0%c}wdN9CeHHUn3qV3FN|lqeeHd|vNO;{|NXvJq>aTFUrRtwT%^q6wIV=Uj7t!z +_2>V?>$ris$l|J&5pK#c~o6vVbqD`YO+F#M`<#jqGkHJe_N!cO$t1Rj-81)iFt?&l-NIZj1Z3eKY!9D +VMEtcXW1{9X?U*ZZ;)0wBoQ6$va3wAbT}fD>&-Kj{VTig;2vePy@4 +38yBF9!rs3-(y^&|F#r!{&~QZ}RALhsOu>j9e%gso0cyf3%FT!U-j75Q@#U`*x5mVL*uTG2_e?!~y{$ +b^FBGqR9~p|zU>NEpG^;H5(PEFrjAAjv0mp`5Gj+B+WDhq{dPW7KldJs=R(o>fjDe9X%7;;gN!Fb&v* +iZe1fDgfOV^Vx=(+jw458LqUgVUr^+tLI+muv&Wyz0BZbJq7^%6yNL3ahGnL@|VgIBMRr{t=9FcNZ@COEukxFrL6fi^{vI>zyod;`<>Co;v +P8phUl+R7GB+kJpZO@7&P|&oMf{cDVIMJfd`T*5kBb=QQd6FOaxKA^*?r*^iD*#CsJC@ogkr +;BT~6f*L6X~^RC1$REW*r!Z%=+Yc~^+|UM-CoWl-HI=(Jjh2f9k3t1L|2ekEc*e7>^vw+g({FGmA#|z +#6_HYs8lpx6ak6N0bD*OEcc=*udUW=)$M1$#ALmDkstSF>McHf9okR1jxMh8l6^k%jYx`fX#XaYWZi5;>DlAT)Us%Hu_f8nN161dQbAuURv$$^9&I=fb*rgbFB$GndnymC>!C_z;jvConpP1!W@|`l{U5aa&}0Tu_%BsG*w(t&rkI$m$9IO +$BuKxONFd6Zk0y1=m5jb->96S&X7cza{p6Zr`b+*#L=RzLf|UpjH-K6F!dF3JG#C3ax#l!VF91T-{&UaaG2FE;D;3A7h~H+u0VhrRd-dhxU +1`dR+uzk%Wu-G&~%-lX0ET>pyj9cDbwc8%N%BL9-R#j>A(2CTBi6&ocY$?T$sF*bGeK3zwwOVL|^NI8 +_FLl$2GnIE%K1wt27AUyg!Wvdpl$iwOjJE+d#9xK&3{KV-^+V7dZpcA+1mQ&OPr`YNXxd^Q74)eq$`R +X1a7x7X06)DPp2*l?{$E$Pf*y4>g54E*@7q)a)i_DYBxit+B@k;0M(Bxb#RhgQbr)&mLPqm>AgETV}r +clO-Jaa$o4z{843Ym9wKT+?YtgvLkL$EwNmjtc`&sjI9(INCeYWVdW*V8egp`WPtkE5TaQ|Nn0)Y%PF +aGgp0Dhbs~I|XHn&Sv3`98@u(QHsCpI{@wk5Y4YuCU$btoNLLD&hAMt6SqUFM|aYrC<~A2B(sxFkyB8 +Po8+_9U!h>?YLUk1&Ct9<8{rKel7~W;B$&lvEK%S+sMP|_)4m}E>lpGaRO|Q(Qk$alQP)H#$%W=BP%H +20V{=tPtd*g93EFu&2=Fa7<)~wE8rcPL(&N45 +vvI&5(rMy-`V!`!j0SHdqg> +qCWPezu{hYB8;X}v@6^G36s5xCv?MG&QWIr(-gjLq*@>rWxKU3Uued0PD@eSzo4j>Rr4 +(t`r=t&WR%lQ%FGk=2QWBb1K!?^kk|>dWfv!BtH1P70n-{5v(&bkFfoAc*2v%q4`j+7@FCx&Q7LE2-&XgIE3S1_OI}XYj{Bb1SX3Z?3Q->NkH@yuX`05W%*sZ1 +!}U&Pl-U4?JZt)50Gl_hM$tW0c}aX*qX>=lqF>O&hC^eYJj+xQyPKnL)M9;wtYH1Y{T5uTX(~g0qS-S_=di}%Xy_&9s@Jf3Wv4n3zC58k?Sf##L*trLX|9p#c?WUM(D +qBqP=_5%OyJ8Joxn3#d=wxlK)qvJ899z=Ak}~LCG?IA&H&>%0OR?2Au+CxSq~sqhr?1JQ**_#uI|V(S +b=}nuxUKjrdtTG*~t5LN8D1Dx=c&-@mr_f9WhD6LXTLxBR0M!L@Cu|o3gu444Feyb74P%G^O(gr8Nn5 +q<^6upgcic^BMN5p+IzXNQ2aOSZEf6iFUE-SonsGhjL>zVLT$u$6YUfE}-2c6Es35JM`A +jWNYxyqr*I89Tb0g3L4L7H!E#<(1YmJfZ%9lH%95}lg^=jSwMO1kM+UWb{l+c8}PN6jan+q?Mq+7I0b +8-l;hk+HdFhakEbDZis^jK57c>Vs%^Q)QBZ5rhJH*57n)H)R^xQg(TH`HB@{2<_CZXnXuKnkuH(W*b( +t-A()`H;0+vzpuI%-Eu1nFn{O95mUl;tv3AC0vIh +^bOIvgk4NTq?)B*^j%Aj>`^%YzwN#wTh~Lf&?5h(V#z{|qVgxtNG~lLwIRuZ%<_-#n1-@=2i?<$eDH{ +XU83h&yL^org}L;D=A8;NLI`ejrZ4H^(XXI)j3jsAug@Q1D%4aSFa@AO)YFAiBRcDENH!t9=Fqe++@X +c^^{nC~}x;<338npDY_l#1{=D;{ElZS$w%CH1CeSfmFPT)h%D9F4)JY_=P~lFMx~_7#Y7~-vBcH>wSs +2-?cYE#!HYUoW>926n}_b<_eP8U&~*hmgr#AYzw)sDtrwR$5-8a5S5;*#_KvES2LzQ><}4F(r9_g^%tjxy$4`u)vR2w#iS#z+M{YlO|xG!- +_Ovix|HA(q23%?hqqKEo!3`8|V;}??wgY?kx42&;CYB^@m4Z)d39l^2t`mvWd%N3t#_WZdUbDYTPG}f +Yz*%9eUL>g&IOqi*nu*31L5Z{dz0^p$Wa+LcBHvWe=s(rZm{nrsOL3SUCf_C;4iGra5eQzBK*D0mk)o +0hfwp5rK5Hcso)256#?z6F5x$WRI>p^-!Vu^q%-e7+seFsHy{!*1iN^F3W{6=$7(ldLq*0Coz9GE9YH +Z_eFGzvTxK>@>p-)H6RYo?JiyJxy1UaiLaRld8?1&dR~yD-Uc;81DEZI&ujFK6a?0Ov}U*}1*eh^{wj +qo2WhKk`MgUCg*rU3@+KV;+K&tTC!0LA_s`PXq#-~vGe}cU`>Q7DRpq-rKlxFcWrY8{RTEqt0zat(Hq +%)@pj1koVn(Q|zl*cEYCHX;2S1$_K&yc0+(zwl^8={b%5uMh +ijL5@ +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 +In2Jp0MtOm9kLmH5!`3LI+rAJ_~)tLW@{v +GYyd{3Q&yrm_<-VBy7q59c6p)eoTm8gVOhLhn`zd^z1G@P0oQbH{)GH1Y@CKiaHMpu7E- +xZHv$1yR3M87EvPIqW%TlEnUSAH*%ab9BRpqU^pfXQm*FYG|Vxge^%#jW1hOU*VydF1swyf!`6a~=H5 +!p{AVF=NT(;~H+Y@SEp^P;N2JrsEaU&SDKW>FkgO}}j5%(ePq(sjC{`NpZ2Zm*e7EsT85ow~hr!1rv-0 +=Wz05mV>m-VFfoJ9mn8j7~$$m=3YdX*B0|?eg;;pm`&QLTkRBPvL9GyR51B>5npYJbKsyibhtki>|Da +89g`4#EGK0)!9&8MDMoBtY>#y-H;1A=ub@>{bj;LU`YIAo8KG}_?7MV3>vV{{-t;$yc1*V4_jLE?$q5m8 +6=v@4w^!&75i!oL*HCfJ>5(@!*xsy>LQ?$m`3sswUaBs*HXD&Bbuj}DgFhi_-i*%SFlUA^)z$tRM?7(yd9F+n|_>ZWSb&22wTa})$}#}$EJV$gx$3EtOE(ASiKgzI#B)OAzj)qcXzW@vO<#_GfQg=*f@3P~_Bw=|Tmj}903`tNPZ`ef(|#N(*=`hA&|DME&k57}8Lc}&C=ktb79;I8SCilB~or7(!@QKzjC2c+BIn%7^ce5F{1m*{V3r$)#FY`8&Y +Z$`aNpKkBFk6O#*z!=nRAHhHhqt7H83W~eCPX9}x?rdK3-VNro7n{u%2-d1%RJ>e +pXTf0UeZWyxp5Wt&(wy%qA4>lpQ43$-J=t6qDMSqQ(!iqbBOhA!0Oie81TVZk5eEaL4L(etAB#kb{A9lj!;D*<^#rP9KRArIO$s;|r-cl`R72bPgU`)EF_Wn{W8OaS>$$ZTl +^w6LMaB@jQXh|y{{0Bym7K&+OBE^Vd?0B-6Qj__v2p@dJWY~{Y;D>AP0-K;5OI|P@o)$icM=bm&fl?3 +IkEf<~6FW7%25(vLw(5N#DGox5TZA;g;w%RfeK*E|V{*iO1fGb4xRu>Kr9S#Og&SXk_e%k$NFxwO?yO +$Y`oroqoSfweyZdn1^!8eQrMI=X4>l%wILyKI0CM%L`UKr0N28zNsIWisDB3nqCH3tCMho^nG_t$Dl& +Ur2UHbz|)r#@9gheoN{_3-^An4trN@miw6Rx3@fHRE2KHL`*i2jSm92%cV +tAUR)tkRo%^zx54L^p$i@DS5I=FO)mW=ZhH-F3UEWf+dSO!&lmY#y=9xFV>vcV@E+LO#?0vWOkmqt`u +LuabhlU?X8T+%M*Q6fM5^b5ytwdNV*rv;IT4?d0iL`@g;kTSuzq7Rf)dKRZe2{Hsksb>_@BD{JFhbxd +Tb-QDZ0guad`=84xm3ara34hrLA8Dd$P3QpXGqD4cs%Ga}`(Pq36##+g53k_J*3*&o#z(eU3?-+Nmgx +9iJfP{nQeZJifoUsIaS`Xk-IPB0~tf#*P@FnH6)E#)1)By>XLE!?}%J5Pov5Yq^Iu^rr&j#j4gFZAQxsei1!mDYMn +B{K;o?r8N^gdlrXhPjoR#grb3M4}B@b;2+Kd=`7bCba)LqA~7w)udW)KB(dI*oh_lC6*4bB)f`WGz)P +u4jC@JY3!SVd4nlcKAfzZ)x;(LwmEEUNqn%Th;qEqLuRuN1nH+Y>0fdnBT*%Jo~D0<)~1R4$oT`CYLK +sdHl-MawSHiVl=8DPgGixM17OwE(bo&RqpDLnzhU50pT>5!JSiaRr55!uk27a;B_)eb5guiI+n6vsg3 +-~R(@que#BD8N_?s3Lj5qn=f+9HDVXXk25SPiai@>8;r3Hth3yX)V99kzd)C-%291O2A)rdY^GQ1p0d90_Vzpd +_p>_+?6C}p|OI<>XG+B3coTvKN6Qmyy)Gr!%x~^CB=kpF4<4E0>%=zHBeTP+|%JVZxzd0{bRQJ%9^ev +Lu}O3NwkXQsn%}6%uAX4hk{w@>=OU%H@Eto>rwqo-I@RP46Y-9Q-BDCumW+yLwLE?fNP)Fomzytn%1@ +(VqUVoRpZp}uZ`z2bm&{D4t+uyqN`>8x&d{BvhKxTDC<7t3%^t&dBt0l +M7>-T0kyUAANK$2nqaUe;$3m*Y|lqv_z(v8Z2Wa(n%K#DX}UoTy*?tL#Y*A?)ox&7g>yHV^XSv%krMY +0D`->|4J;iWBxa5D?9!SFmaxht;5Ve0sb6V(3xGE2ro99MKpvNRa={`4m%I+I0nBc1@LCj=`km@Nt9p +75R40J+Gap-;5PS`*gd4VN4}+@A$>_)cmt>_czvRA)o<7}a1NlGBB7z^u*(wA~02uoV#OSrA%RC`YYQ +wsJH>%2bXfOR0WX5#zLr{NxkVj{B*TxAHQ6bC6RW>>(ebCcWji_(UjZ77wl@Oe`W<;}-!b--?unSjNJ +)xz)9G$%SIsdg{UaTRL=QcB_@s8}T+cl67n$RPm{L=nyr0bfEecdY04#qCaZNUAur4`XklnZxQs*H4E +7QFV`**(xJ;~&}BZDtK%=}(Ehr1@xe5D8cll{J>JL2mMytr72s&lXJBcG?hI0E*9y;yI83H`>?w6J?8v;PYbgDuaBkw +fwSYD2~K@`N#a>2dyxdR(=`!(BcmUMCnxzT|U>k%IWmZHqq56@{`&{bGr!gZZ_tLe2l6f#Ju5na43dv +$`f5*RQNFMpC2=EcA^;3&0_fM7-i>Qzk?2KV>33gS+_q!!;n7Js@orDiLcPaZ?Hyn#CuG0bmH$6oOo| +K(g6*p0R4-4I`r1~T{i=ChErbw>`kY`&Cu;*jaE@(sBe+A6BTKv_n#Ddwu}ElyDNz=U$NXK>J2s9q&r +?sm4EWp>3#IyqrTM~^Q^2Ei7kMa8#Y+|=JjIFHlK5=Z_K9>?0O|JD0f3mw=_kJ9I(N65qwWDzR!j49Q +K)B(=D$O!yc2~gwH*F%$hF_o-LH`VoM!G!?w@C)+{g7 +P)RL#19wzfsOOt*hBgEOu+Y)|}{CCMr@G7Q%3e={;zsWBG2iY;vo0zolSY#y>HK#k{V7IxH*2Nuqa>V +r?w9lRu=Pr1#YG1LSWPjsb0$ULOs4nMNo6UtWSz1h!##@?XX8A@2Fg<=}r^!4@fVf1uPDffo5wN1YKR +^TzX@=2j&6WZ_~i(tV_QOsn+OzO}#EgRifHBfBshBl#+*+3n8-)PfE~D8QCE +VdM)pvR{oGS0@=^t1NeJNSY<|eXvPhFLfBoRt-xMPe#012RMzRCWQ1R76Y2Q3$v=zv5xmn(Z|(OHKQq +i@ulEnA=Joyo{V$OH==C^c8v$@F#&2vc%2Rri9?epE&GJxU$$Jx$&n1>zc!#pi!q8w)rU}o78HxgPs)m@q)&-TjMlCez3^$ItVQ6c +=?I7pRE~Bo_!wiBLJZa2pXv9y)J;_V4IAQ~QYy2_5DuBO&(-(i2^(0#44QxkP^(Y@%GVNrZ21@S3CEj +2{p6^hd?$u22R?>PD{{;tDEmj@WjA=1RuY)2mkP@zz7RQ_S?;86cYB|^sxOJ25u4;RfizRU&%X-Y9^R +TKWjVKz4fGa+I|kEx3CG!)1IT*%^L~~fG;%FT?u6{A=*jpV9^};SqqH0(mKneaH?Z@K+df8~ZwU4TWL +BPks!6wBaSN+#33@&5l+xTa-F(e_^rW*7fh2$c$hTjkEY2z6q{C&ypwcihQ5#cDl{S%NYflIYJCXg>avHuZJ~J$JawN1Da_CZBnoh<R{-%j3 +|J|%8UjMykjG>x%mzv==X=fW63Gyk;sW!zkJYix75%J$U1)?|uk7#Ex>ppr8;@pPPD!mz8Z!!)vU%T0 +G*W+uhGqH1>5@v`1gB$q~#$>kQF)#gf(^&{aFIlVG(S`^MjYj>_Q6c}h87=6FW;;sx$1G@Kzu4jD@OP +9-m=utxvu!oUHABC$D0ZAsF&mq1Z@!7u-OSN?N=-bTqj0*%;n7>PhY@Ee<|N7I@GH$AMuSwFUXH)`D) +3LOrG9FFb$;ZP;WZ%pmGp;#)Z4GZUm1ez@;xBVqJrsM!+VfyEXSg5)s@HsO=81zD5OcqUnjVlE6_<+fMN$8Rm +AbTmsp*aM_!I5TQl5foNpb4xP{vZ#Xy4wV@*67ap!t!K?PhUGRUCyW-Dxfh&Gdi2=k=hjetnSre9aU@ +=&z*rL)4@FIv)$~;Z@`NKN`T*S(sR$u2sMO6sf11lPLC*tpT_(kH%@2Mf(EK)yt<54B<6RCW%z3wu4e +wROw{g@we=L5v~&EjYaoC0Cx8de0Uzv$4@yKeEM`2@ur8&)D2hKViW4mJ<)NVh>K~{cB0~SlLn$;^-P +?yFY&!D@Z&>x;M;Ks-KQ)2AGmr2>)2SoG+ohw~CSzRqJM;p*3!DCGGXCUJd_)sY98o4v=w|iBQ+uzvMSMw{4AifYUa5%og{i8xaaI91@B+csH9TvAoMRi{YoT +Ft?Yq0DubW7=Y+~JPa-*)9T4@*6o+yNC{Sk83YfHt8ZzY22x7NuMwj$Xcx#aHejFwf~${TW=0_qVI0) +?AT|wjc7}4)B2QI&Urg8<4tj~+Z&BBaS_u=aPHV$i5rGEh(Jpu?uczDJ`!$=H_l_Bs?K`!XU|%>0l|> +ifj|>~LJQsfkg(OGl&fu0ZgsLUnaK7eJ$f7Q#Ez_UidFn-K_!upQ_m23uSI09)J3Sp90|i>I-*edWVbY;E8F@XWTh8!tM=*49UDZ3o8;TicgkNPu+p3j=IzuN-gK+ +WwQps!RGaroZr?Y;8}nSEZw}saGY6NB>4g!`GsXp{w}w4`4(~(AbFd7`Ce4evlZEVXMkUgzm6M@)NeI +IHG)rs?0Zpmltk`8{&3dA2-AWW(u=;!=LB06-|6s#9Dc9{I9a5&KJWQP +%bxs?rUu#{IC6c6C5QCHW44_hZ{qO#YkN<)DAN&=2|Fgg16CVP~ZhY<}f5p +|$CDaRHeN%U82KEYox^MU{BuNb|5fWKn%|LCun+~4gd{&6OM#p +bAk`72U)1(X_EJj+L);IHU~F2wy6_nhFb7O(Ws|7#A6)~6X-z?HPpLSrp8bPUEF*M=8_{{%32gd) +y-j~2dU2TuwVUb~T1_cF|92FG91pyO9laWDZa7f&(EI=8AWSNE;#c~0G0!Ivcy`Gho?R(G4T~pjQR9s +3+D@v;`VM!aJsrP@*z4to|2x{;5-f#K*`wo|L?tac)&)r$^!2^u@S{`5=%MUP)bvnQ}mK|Um`~S}Y#; +;z#*#Sl{@eO$r&jIXfet@ysK>mvd7{6PALTM=rr?mr&+n9ZZv;7SR7!!VQoU8lqKEOD1`%Mlo=4`*&0 +miG_{`3LHvammKfU$mCvjdC`x-#oc4lwTAb{hv64cl5jz?fLr>;NM_iiaY$;{@YB(kX?Gj-6l}f~)B` +LkC@u2edkkw>r@H$l_ZcXdKB7G!Aq+&{)9_G?o<%&$9VK*U8Q^*3M%aEDoz{b2y@@H372JMLyK%U+@T +?X~cmFKhrpdpJ_z%2#5Las@j3#NMj#yr11`Mq_LAY(%4=cX>2EsG~#}aR*p3O)S>kwjS+Yf@Ai%~dNe +q4rMA%NNF!@OU%pVSEg#oTtJ<(jSN4F9vFri2^k3i6myc|3$GMejOWk^~d(-g#?q8vqM&WleZrEJvH +msCgnn(|VMXP7V2tH85`I=G% +t%OKpc3FO3stcY9-JTivTM#_8uAgfCG=)yJzET&nb6zKH7``4V$pRr;O}l+;sLs{3Y5FoNpEo|^m6vUj?Lr_24Br~u6)bEyye)L8z!naxDr)7==hSKHvK0I|tay;SFQuC6_3U99Q?Pn^_No+ +~ZH#H#byTgacar8{sr2}CQ~{<=~4&e%QOAst@Smd9#}8iVF3A(-;fnmQjX>e@pn<)dp_gaK_gB=iXj& +c2w%TY7Kh^Cw^m_*;5`278{yV1G2!U_U43URa5fo;kwKBgr=g|56UZQ%8N#Mx6L3R!_ZsCGHig%i>2& +dc4B+0=&piG++wFbl<)V9FE4pQrCLw4H8wk`+`!^bhN=;S}`BvaDRFkdU~AswY!%t<5EO;J>}c^c?=) +FMA^ASW%)Rb^y<@&<$A{%ZC2M~@f;1lQFvTh17c-S$OL@39ghQt>~kOeGCxK`1J=e8Qm_CDk9CsseyY +0oqCc+LI_z@~bhumsF6&Mf{c+Xik8P-CpZnF9xSc)Lt!@hs#0Ray#Xy^_x5e@|59E0aqzqX5q|mWQ4z +=tT$w1i=mqvVd2~RvJV3<+ciAgO3R@iZ6MsKe(*!O6+VuZt@`3P3)T4iv(fLC-CU3RzB7Ej!!HrsUUrlQoZv6Y7k|fQOL3117``qH*}6gbJ>BpTNo-l9k&t9%i`>c{^ud(|jp{MB9}?NM_MN? +?z*#6jI-RGqxbg*e{jnxWm!4>XpgX!zyJ_RApFP^t1D+s7rT@mekW3s~!*huwA+4;I$M#JTY&!8U1d%}@6 +X>zeUIFqD^>toM1E*VFyljm*jXE|5PlFxt}Et0W~mo+z=WY?D(bj5vPfPU6N)dt--b-K2!SYH{ZfF`l-8~Z7=FT8?9V_`>dvQ!t;ZFFg|q9Tkr_!>9a7E-L`3p>FGb +!l-B_L=Bnb$@WNukK5z%r%cA)kktXW{Tj;}^>7A*&Po~aCP=`*uIC;J@dBTj-cTlEJrzlNf1$D=bdld>pnayVy>3 +n^;?|2laVs==w_4Xo}_|&3kVw<72+d1_IteuL6;cFfnEbJ5@h9GTVbMN-R<}Uv3S1FOZ#~HlstThNbDh=aiNeZsLlWQ>;=?;!hXG47V{*MuMJh4mBCQJsT>%BgV +7IYx}{4maBKRSIIPiXg_QQ8|ew%*!7Z&x8NUdW5PbO7BIEp9{!!9HH;Wb;pEvrmJv=QcJOiwCI0?(e7uAIc^<{+qQhYzV=uZ}U!D~ +lOvfwpJ3%4DJE5VO^H8lk>e{QeB@%r5QS%($ZHi~GKgO}oo*3}GV4rHk-nv-*tnoOze7$VE62@ +(PAe{8F!FAACj8)>j#q75Gd=&(nUIyc34;S?0jSt~$I3oQXDvPkt4bRBtJ95o9aN>`K@-;rYZ|ywZ5+ +6|LhxuOk2Rl`uYxg4jZ{OLE`h}}Fgkk~-tMX`x~y0fu8sM5 +K^R^&0t}R#QT@HrXy3QllTWUPvK>)0;PFWA5v17;`dNkSCg_-YOCMeIY=u>0X9h@ws`xHekrL~L*jeDn4Vl%h=M!d8oR^PM)F25tESd_kE%&=6n4$gu0(Xu!1ye#jIzPuIO(g>SYVs4aljq1hNgTK+ +6w*oJbq{*2yU8jGDg2w(Sx;1s??w0Amh!36uN8^;>De=(%C*GxM}8~?y}t|;!4*i-)1my(=`ZbPqVZB%v&cZcfY5qzmi))w2>%trPy6`JY +9J71jOXLOCH(4QF?Nmr-cp-Q31z2|v#j7@iYVF74?N{RM2XTHHms!)}OMX-p_w-_GtCdAZX!$+&>dGJ +Ni90flW$^|0z(AuXyJ&q+x;AVVWd6JW5I#ohxtVIcQCV}tGV2b#>wer%29BTv`Y5zJYTfYoRtD5wrK< +QM253JJk5X8ISXoW<;Ur{e +Z8ws)~28)xPPf;zwQhitBi`;<`#+amCGUIw%0T?E|nG7&bXLOI7j!F7Y<(j#U*8a%anW=as6W1~)vWx +*&LlV;QA3z}<1xtg#Hs59GlxdAT;6g@~TL^E#=v6J2@k$!By>*mbyQtFt%Ot}tNkU~jBV#zyGUZno&^8t;8>81!`p`yCtk+HIpF?)c(!s^Up}@fPwQmn{`6G+aSlj?WJ2qC2U +I)fC@@Y7fnCg_QaSUorvdTTl1$J!ZNXy5Q5=AFel#6mo%asbvpM;l8{S#)%xWHL6q>oQ6yPy3)zPCgZ +FEYo(0McorX*K8mVvDY)8RkM +sJt_^aKHvLSBz($_vOF9zdGJ@XW^W6{1%nY_TTl|r^Cyc-NQSb4=BbY#4bKuKVn&^Pxx6b;H!Sa$Mbb%FDtR__8ox62``08?qK( +o{5)S&R>vTR5<}(_X(bXOT?JG57y0**ND&0pTJz}yuYh6ikog(x=WsoB1Kij1&}1r8N|ky->1R+a8C! +h#HGw*AG9%S(YV5uCnaArW&vtH#v9C>){kqfj+<|XVY&6O)T0K&3t};1osciV?Zz*`4Pa(Ym*6%zbY4 +ilpoHMrLh|{R3(20^qVtzxuB*mh$8%6-zK(pf?R8{LtLwyuZ4Oke)7CtNZdU9f^&VCe^lfek&oxOVd2_1WsqFQUe +DwdPG#*4M$XY+8ja0ClrN(EahW;K9uATKCqGe@1B9kF&PHado_DqoOSm47?L3KOsE76{P?g-y0A;&Ltap}?`P}6pGvRu8*w)}7L; +c=Ehv9+iAAHdc7^|LwgBd6Q#k9+nePm|hPLEK8}x8=QL5hlhZbKJjj!Mhk1;q!G(;drgJ|%}Z@f{(Yo +Zo~;G$waZXV{_sipG`AUL>Q!}`>)crzorZU6&C2XS&Iwyw8>P!@gDV)77i8!k91Ii8=4#9Hs=#A=#|- +O_+kGPakI$F*BDyz0e@g=J{E*+#SdQvFQ6PA(Rhp}R(B+(YdUoT$YxxV{cAaM@GTXs{*~HD*}jHf6Dv +%Nn?8I&0$QsY?7@cmw2J>w(w6Xoo48o#VFJ3qG|!F_F7UUHdI=clAD3ds-nHt#oZs^j)@20Pkl^OI<(k2ZN%2MTz`(6BrCAh)o{&31t(fnjI# +|ow%ZOfj;{uTs3~vwkb-|_nNWKKUrN&!UAxm3Dz3R@46~Yt^%r{)Jke>t4kmi`I2l_T-mpik4eM)hJF +{3D*4G|lq+)pe#eKI<;fZD9ciA*kmD{D$Y*iR{QaV>6cd?L +Skj2824lT;AhmheM(U!cFbOkpwY)K5r`}$U;w=t6zkZO<0EfG?jR`0QJ8w*oexB!$SQpJ}U1GKGt$Y7 +QxnIo0z`%HRjPLz+Lh_RJvo7n)2jt@Xm;Dmnkh=za6}23yCAZ8sUGFj9fehhuy{S_*V#vWImC>| +2WA|G{oupzgR94Y6G#eAzi3$PJ{B<0D5ga{D@w+qD&PBahR7r`ePk1fehTaixsnzs+?}{N~(ND3UP-cuU?I3A{E`YzCTN2U!l54AO3` +L@5i7Qr&iTCyU%yvHb_kacK4RwGk1Ck87C|Be0`qfBjdPBS!*0aFlx1)h7|WEH@pum?^TH9Rq4C<$RE +oe#Or}SDq%O)c-Z%{CJ{`^fU=563L~SBN}2c(Tts74<#rT@XI)CLcdN&V1oi?YTeM8DyVdL6i8oGMoK +_X#!@&)4N`TbU8Q7a&UZ^Y2P@n)ATIWjRL?T@;=DlMYx~BoJ^x{Fon +4jsN13iegz!5qcwHK`PWs$~m_bZPRGA;}V-S~=q;AZJ%`#}ArI-~s?$VN8<Y&-SNFUibx=giOWF5Eg%NFTjgGzQmL>XmF~ZW`J~ +c;i1|G_-sFu5^hFVy-)S+y#irEc6WBMNmo~yEKkS%l$qNd0QLxgI+OWgJdKW%F?7h?tk72S64h=h8tg +3W77!*nJ8IXn@ZdPAzbe@6&>akT)6wG}9yqbZfL5z0_zF2wH<0%>vO(gJz-l0xp`@pt*$RoG`i +{P3w*972LNCg%ZYKC~Rbpa26qv{AJut*BQAj_y<*CaNXZBgY@)(oJTB!^hLEUPMO3q2+Z6ZnIvaWQd0 +&M)haPfS;8rrGRT8x5OIp)HuFd4)rcI|L&%sx(0oo%qbVeuKaWNW0|!6bCoFsNXbXN>{?t=CkLM5MMS +*iR@%-80ls`rhAEs|3rf)r(NoakWjup0oBeKMTWY57Zcncd<#ikZ>%~L>M+K$bO@53z<1fx(D2QX)j8RuGeoH8|qg6KKUOknh@V*PW2kGt{ar +znAMoeRfkutqiX~EFuNowQnG3$ +;E+v18sRu?Q_4Y6HVW&|ZSdP<_G+<3PoZZ42R6Y$Fnf>wheKg=4o?(MfAZ-Ur%d;GhO>W=M3vw--a;1{QdCN8p#(-Sf4VJ-sqRO@Fb +lrELp!gE-ob*gRE+GAIs1%c|RI$9bk+0Gl_%nM;V93`*&nBdzET3B`6NOYmM7vT_Hwcbrx*WW(QA6hUCZ?f2>ZqS0M`E1DsU$#;P9 +<6Th|Her9eM4-8QN9an{5pQ)j@KrZ3`wAEa1VM2GRNxAkC<-`AS6~>u6L0-&Zd-Is*gbQ;Bh1*iq5%v71_iNuwb>ISwQplERV-;)BWU-{cnB*546=Nrbt=p<->KY$Lat(}*M;z +=Qk+G`2^?_{{)<4?WPhgGpko8f=w{dQw01vF(FL`!%s<$O0!}an-3fhfGU3^KSb*MejjH_WdAsO +?t>IpYCF&UqMwZq|Gi?;-^gWg*^;Vb9_<6JbGGp@hXz!;wn{oh?`L(KkpLu97C^p1pLyzjjxc*ouW2b +}nX@jh3X|M8B?v)jx3?^3gSu0Vdsai*rs>R4>QvlH$*#(S^q@n&49WS3eW!3Q*O@*0PsZ0Z`tygFa8M +4rLefuy7X9UuYi^)UFXFC2z(+T11AdvO2B_$Gs25}~))3ypzNA9+|Z8(DJ&{TmccI~2}xlUkl}dfV8>$*lIBqetvGliD|M@aD_JuL);jPPi_#TX;&DMX6a}2!*v4mdLqWTm`P*mzl(k#Cu7Y^ +9AUHz^4Jo3vGC~rY4fgxh276wh!G12eWgUyfIu_odj@>;~u4BY*%fOpjY7_Borz<55wsufm>}I!1511 +kOp@wul&PpIu6s#jpb-+4OBkBlVF1cv7Bl8y#y~-d;jO51}y8t8Ja}Bi;cWfS|0sT7Q<^9bH!j*B5Q~My_3 +Fdo#!k@|a6i2?tYVoDxMk#bYZYEmA@)PoLrO5YK%=d6!FpGmLcw1z|4CXyk{B@SY(?t#^IrT?owi3YP +e~cgN@p_}c)|MUEs%-*IHR^aV# +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